@fjall/components-infrastructure 0.79.0 → 0.79.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.
@@ -130,6 +130,8 @@ export interface AuroraDatabaseProps extends BaseDatabaseProps {
130
130
  performanceInsights?: PerformanceInsightsConfig | false;
131
131
  /** ARN or identifier of DB cluster snapshot to restore from */
132
132
  snapshotIdentifier?: string;
133
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
134
+ snapshotUsername?: string;
133
135
  }
134
136
  export interface GlobalAuroraDatabaseProps extends BaseDatabaseProps {
135
137
  type: "GlobalAurora";
@@ -153,6 +155,8 @@ export interface GlobalAuroraDatabaseProps extends BaseDatabaseProps {
153
155
  performanceInsights?: PerformanceInsightsConfig | false;
154
156
  /** ARN or identifier of DB cluster snapshot to restore from */
155
157
  snapshotIdentifier?: string;
158
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
159
+ snapshotUsername?: string;
156
160
  }
157
161
  export interface InstanceDatabaseProps extends BaseDatabaseProps {
158
162
  type: "Instance";
@@ -170,6 +174,8 @@ export interface InstanceDatabaseProps extends BaseDatabaseProps {
170
174
  publiclyAccessible?: boolean;
171
175
  /** ARN or identifier of DB instance snapshot to restore from */
172
176
  snapshotIdentifier?: string;
177
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
178
+ snapshotUsername?: string;
173
179
  }
174
180
  export type IDatabaseProps = AuroraDatabaseProps | InstanceDatabaseProps | GlobalAuroraDatabaseProps;
175
181
  export declare class DatabaseFactory {
@@ -219,7 +219,8 @@ class Database extends constructs_1.Construct {
219
219
  port: props.port,
220
220
  performanceInsights: props.performanceInsights,
221
221
  deletionProtection: props.deletionProtection,
222
- snapshotIdentifier: props.snapshotIdentifier
222
+ snapshotIdentifier: props.snapshotIdentifier,
223
+ snapshotUsername: props.snapshotUsername
223
224
  });
224
225
  this.connections = this.database.connections;
225
226
  }
@@ -251,7 +252,8 @@ class Database extends constructs_1.Construct {
251
252
  port: props.port,
252
253
  performanceInsights: props.performanceInsights,
253
254
  deletionProtection: props.deletionProtection,
254
- snapshotIdentifier: props.snapshotIdentifier
255
+ snapshotIdentifier: props.snapshotIdentifier,
256
+ snapshotUsername: props.snapshotUsername
255
257
  });
256
258
  this.connections = this.database.connections;
257
259
  }
@@ -277,7 +279,8 @@ class Database extends constructs_1.Construct {
277
279
  encryption: props.encryption,
278
280
  publiclyAccessible: props.publiclyAccessible,
279
281
  deletionProtection: props.deletionProtection,
280
- snapshotIdentifier: props.snapshotIdentifier
282
+ snapshotIdentifier: props.snapshotIdentifier,
283
+ snapshotUsername: props.snapshotUsername
281
284
  });
282
285
  this.connections = this.database.connections;
283
286
  }
@@ -295,4 +298,4 @@ class Database extends constructs_1.Construct {
295
298
  }
296
299
  }
297
300
  exports.Database = Database;
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZGQSx3REFFQztBQUVELDhDQUVDO0FBRUQsMENBT0M7QUFrREQsMENBU0M7QUFLRCx3Q0FTQztBQXJMRCwyQ0FBdUM7QUFHdkMsMkRBQXNFO0FBQ3RFLGtGQUErRTtBQVMvRSxpREFTNkI7QUFZaEIsUUFBQSxzQkFBc0IsR0FTL0I7SUFDRixVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7UUFDL0MsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO1FBQ2pELGVBQWUsRUFBRSxVQUFVO1FBQzNCLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDdkMsZUFBZSxFQUFFLDhDQUE4QztLQUNoRTtJQUNELEtBQUssRUFBRTtRQUNMLHdFQUF3RTtRQUN4RSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRTtRQUN0RSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7UUFDbkQsZUFBZSxFQUFFLE9BQU87UUFDeEIsYUFBYSxFQUFFLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFO1FBQ2pELGVBQWUsRUFBRSx5Q0FBeUM7S0FDM0Q7Q0FDRixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBaUQ7SUFDNUUsVUFBVSxFQUFFLEdBQUcsRUFBRTtRQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsOEJBQXNCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMzRSxPQUFPLCtCQUFxQixDQUFDLGNBQWMsQ0FBQztZ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O1lBQzVCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1NBQzdDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBdEpELDRCQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBSZHNBdXJvcmEsIFJkc0luc3RhbmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJkc0F1cm9yYUdsb2JhbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL3Jkc0F1cm9yYUdsb2JhbFwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG5cbmltcG9ydCB7XG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlLFxuICB0eXBlIElWcGMsXG4gIHR5cGUgU3VibmV0U2VsZWN0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICB0eXBlIElJbnN0YW5jZUVuZ2luZSxcbiAgdHlwZSBJQ2x1c3RlckVuZ2luZSxcbiAgRGF0YWJhc2VDbHVzdGVyRW5naW5lLFxuICBEYXRhYmFzZUluc3RhbmNlRW5naW5lLFxuICBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24sXG4gIEF1cm9yYU15c3FsRW5naW5lVmVyc2lvbixcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBNeXNxbEVuZ2luZVZlcnNpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IHR5cGUgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgSUtleSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFiYXNlRW5naW5lID0gXCJwb3N0Z3Jlc3FsXCIgfCBcIm15c3FsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5naW5lQ29uZmlnIHtcbiAgZGVmYXVsdFVzZXJuYW1lOiBzdHJpbmc7XG4gIHNzbFBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJvdGF0aW9uQXBwTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgREFUQUJBU0VfRU5HSU5FX0NPTkZJRzogUmVjb3JkPFxuICBEYXRhYmFzZUVuZ2luZSxcbiAge1xuICAgIGF1cm9yYTogeyB2ZXJzaW9uOiBzdHJpbmc7IG1ham9yVmVyc2lvbjogc3RyaW5nIH07XG4gICAgaW5zdGFuY2U6IHsgdmVyc2lvbjogc3RyaW5nOyBtYWpvclZlcnNpb246IHN0cmluZyB9O1xuICAgIGRlZmF1bHRVc2VybmFtZTogc3RyaW5nO1xuICAgIHNzbFBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgcm90YXRpb25BcHBOYW1lOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIHBvc3RncmVzcWw6IHtcbiAgICBhdXJvcmE6IHsgdmVyc2lvbjogXCIxNi42XCIsIG1ham9yVmVyc2lvbjogXCIxNlwiIH0sXG4gICAgaW5zdGFuY2U6IHsgdmVyc2lvbjogXCIxNy41XCIsIG1ham9yVmVyc2lvbjogXCIxN1wiIH0sXG4gICAgZGVmYXVsdFVzZXJuYW1lOiBcInBvc3RncmVzXCIsXG4gICAgc3NsUGFyYW1ldGVyczogeyBcInJkcy5mb3JjZV9zc2xcIjogXCIxXCIgfSxcbiAgICByb3RhdGlvbkFwcE5hbWU6IFwiU2VjcmV0c01hbmFnZXJSRFNQb3N0Z3JlU1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICB9LFxuICBteXNxbDoge1xuICAgIC8vIG1ham9yVmVyc2lvbiBtdXN0IGJlIEF1cm9yYSB2ZXJzaW9uICgzLjA4LjApLCBOT1QgTXlTUUwgdmVyc2lvbiAoOC4wKVxuICAgIGF1cm9yYTogeyB2ZXJzaW9uOiBcIjguMC5teXNxbF9hdXJvcmEuMy4wOC4wXCIsIG1ham9yVmVyc2lvbjogXCIzLjA4LjBcIiB9LFxuICAgIGluc3RhbmNlOiB7IHZlcnNpb246IFwiOC40LjRcIiwgbWFqb3JWZXJzaW9uOiBcIjguNFwiIH0sXG4gICAgZGVmYXVsdFVzZXJuYW1lOiBcImFkbWluXCIsXG4gICAgc3NsUGFyYW1ldGVyczogeyByZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ6IFwiT05cIiB9LFxuICAgIHJvdGF0aW9uQXBwTmFtZTogXCJTZWNyZXRzTWFuYWdlclJEU015U1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICB9XG59O1xuXG5jb25zdCBBVVJPUkFfRU5HSU5FX0ZBQ1RPUklFUzogUmVjb3JkPERhdGFiYXNlRW5naW5lLCAoKSA9PiBJQ2x1c3RlckVuZ2luZT4gPSB7XG4gIHBvc3RncmVzcWw6ICgpID0+IHtcbiAgICBjb25zdCB7IHZlcnNpb24sIG1ham9yVmVyc2lvbiB9ID0gREFUQUJBU0VfRU5HSU5FX0NPTkZJRy5wb3N0Z3Jlc3FsLmF1cm9yYTtcbiAgICByZXR1cm4gRGF0YWJhc2VDbHVzdGVyRW5naW5lLmF1cm9yYVBvc3RncmVzKHtcbiAgICAgIHZlcnNpb246IEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbi5vZih2ZXJzaW9uLCBtYWpvclZlcnNpb24pXG4gICAgfSk7XG4gIH0sXG4gIG15c3FsOiAoKSA9PiB7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCBtYWpvclZlcnNpb24gfSA9IERBVEFCQVNFX0VOR0lORV9DT05GSUcubXlzcWwuYXVyb3JhO1xuICAgIHJldHVybiBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUuYXVyb3JhTXlzcWwoe1xuICAgICAgdmVyc2lvbjogQXVyb3JhTXlzcWxFbmdpbmVWZXJzaW9uLm9mKHZlcnNpb24sIG1ham9yVmVyc2lvbilcbiAgICB9KTtcbiAgfVxufTtcblxuY29uc3QgSU5TVEFOQ0VfRU5HSU5FX0ZBQ1RPUklFUzogUmVjb3JkPERhdGFiYXNlRW5naW5lLCAoKSA9PiBJSW5zdGFuY2VFbmdpbmU+ID1cbiAge1xuICAgIHBvc3RncmVzcWw6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgdmVyc2lvbiwgbWFqb3JWZXJzaW9uIH0gPVxuICAgICAgICBEQVRBQkFTRV9FTkdJTkVfQ09ORklHLnBvc3RncmVzcWwuaW5zdGFuY2U7XG4gICAgICByZXR1cm4gRGF0YWJhc2VJbnN0YW5jZUVuZ2luZS5wb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IFBvc3RncmVzRW5naW5lVmVyc2lvbi5vZih2ZXJzaW9uLCBtYWpvclZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG15c3FsOiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHZlcnNpb24sIG1ham9yVmVyc2lvbiB9ID0gREFUQUJBU0VfRU5HSU5FX0NPTkZJRy5teXNxbC5pbnN0YW5jZTtcbiAgICAgIHJldHVybiBEYXRhYmFzZUluc3RhbmNlRW5naW5lLm15c3FsKHtcbiAgICAgICAgdmVyc2lvbjogTXlzcWxFbmdpbmVWZXJzaW9uLm9mKHZlcnNpb24sIG1ham9yVmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1cm9yYUNsdXN0ZXJFbmdpbmUoZW5naW5lOiBEYXRhYmFzZUVuZ2luZSk6IElDbHVzdGVyRW5naW5lIHtcbiAgcmV0dXJuIEFVUk9SQV9FTkdJTkVfRkFDVE9SSUVTW2VuZ2luZV0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlRW5naW5lKGVuZ2luZTogRGF0YWJhc2VFbmdpbmUpOiBJSW5zdGFuY2VFbmdpbmUge1xuICByZXR1cm4gSU5TVEFOQ0VfRU5HSU5FX0ZBQ1RPUklFU1tlbmdpbmVdKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmdpbmVDb25maWcoZW5naW5lOiBEYXRhYmFzZUVuZ2luZSk6IEVuZ2luZUNvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IERBVEFCQVNFX0VOR0lORV9DT05GSUdbZW5naW5lXTtcbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0VXNlcm5hbWU6IGNvbmZpZy5kZWZhdWx0VXNlcm5hbWUsXG4gICAgc3NsUGFyYW1ldGVyczogY29uZmlnLnNzbFBhcmFtZXRlcnMsXG4gICAgcm90YXRpb25BcHBOYW1lOiBjb25maWcucm90YXRpb25BcHBOYW1lXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlDb25maWcge1xuICBtYXhDb25uZWN0aW9ucz86IG51bWJlcjtcbiAgbWF4SWRsZUNvbm5lY3Rpb25zPzogbnVtYmVyO1xuICBjb25uZWN0aW9uQm9ycm93VGltZW91dD86IG51bWJlcjtcbiAgcmVxdWlyZVRMUz86IGJvb2xlYW47XG4gIHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZFJlcGxpY2FDb25maWcge1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbHNDb25maWcge1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgc2VjcmV0Um90YXRpb24/OiBTZWNyZXRSb3RhdGlvbkNvbmZpZyB8IGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJvdGF0aW9uQ29uZmlnIHtcbiAgYXV0b21hdGljYWxseUFmdGVyPzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZyB7XG4gIHN0b3JhZ2VLZXk/OiBFbmNyeXB0aW9uS2V5U3BlYztcbn1cblxuZXhwb3J0IHR5cGUgUGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZCA9IDcgfCAzMSB8IDkzIHwgMTg2IHwgMzcyIHwgNzMxO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcge1xuICBlbmNyeXB0aW9uS2V5PzogRW5jcnlwdGlvbktleVNwZWM7XG4gIC8qKiBSZXRlbnRpb24gcGVyaW9kIGluIGRheXMuIERlZmF1bHQ6IDMxICgxIG1vbnRoKS4gKi9cbiAgcmV0ZW50aW9uUGVyaW9kPzogUGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZDtcbn1cblxuLy8gTWFya2VyIGZvciBBV1MgbWFuYWdlZCBlbmNyeXB0aW9uIGtleSAoYXdzL3JkcywgYXdzL3MzLCBldGMuKVxuZXhwb3J0IGludGVyZmFjZSBBd3NNYW5hZ2VkS2V5IHtcbiAgcmVhZG9ubHkgYXdzTWFuYWdlZDogdHJ1ZTtcbn1cblxuLy8gTWFya2VyIGZvciBleHBsaWNpdGx5IHJlcXVlc3RpbmcgYSBDdXN0b21lciBNYW5hZ2VkIEtleSAoQ01LKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXJNYW5hZ2VkS2V5TWFya2VyIHtcbiAgcmVhZG9ubHkgdXNlQ01LOiB0cnVlO1xufVxuXG4vLyBFbmNyeXB0aW9uIGtleSBzcGVjaWZpY2F0aW9uIGZvciBSRFMgcmVzb3VyY2VzLlxuZXhwb3J0IHR5cGUgRW5jcnlwdGlvbktleVNwZWMgPSBJS2V5IHwgQXdzTWFuYWdlZEtleSB8IEN1c3RvbWVyTWFuYWdlZEtleU1hcmtlcjtcblxuLy8gVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgZW5jcnlwdGlvbiBrZXkgc3BlYyBpcyBBV1MgbWFuYWdlZC5cbmV4cG9ydCBmdW5jdGlvbiBpc0F3c01hbmFnZWRLZXkoXG4gIHNwZWM6IEVuY3J5cHRpb25LZXlTcGVjIHwgdW5kZWZpbmVkXG4pOiBzcGVjIGlzIEF3c01hbmFnZWRLZXkge1xuICByZXR1cm4gKFxuICAgIHNwZWMgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBzcGVjID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJhd3NNYW5hZ2VkXCIgaW4gc3BlYyAmJlxuICAgIChzcGVjIGFzIEF3c01hbmFnZWRLZXkpLmF3c01hbmFnZWQgPT09IHRydWVcbiAgKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIENNSyBpcyBleHBsaWNpdGx5IHJlcXVlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ01LUmVxdWVzdGVkKFxuICBzcGVjOiBFbmNyeXB0aW9uS2V5U3BlYyB8IHVuZGVmaW5lZFxuKTogc3BlYyBpcyBDdXN0b21lck1hbmFnZWRLZXlNYXJrZXIge1xuICByZXR1cm4gKFxuICAgIHNwZWMgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBzcGVjID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJ1c2VDTUtcIiBpbiBzcGVjICYmXG4gICAgKHNwZWMgYXMgQ3VzdG9tZXJNYW5hZ2VkS2V5TWFya2VyKS51c2VDTUsgPT09IHRydWVcbiAgKTtcbn1cblxuLyoqXG4gKiBDb252ZW5pZW5jZSBjb25zdGFudCBmb3Igc3BlY2lmeWluZyBBV1MgbWFuYWdlZCBlbmNyeXB0aW9uICh0aGUgZGVmYXVsdCkuXG4gKiBAZXhhbXBsZVxuICogZW5jcnlwdGlvbjogeyBzdG9yYWdlS2V5OiBBV1NfTUFOQUdFRCB9XG4gKi9cbmV4cG9ydCBjb25zdCBBV1NfTUFOQUdFRDogQXdzTWFuYWdlZEtleSA9IHsgYXdzTWFuYWdlZDogdHJ1ZSB9IGFzIGNvbnN0O1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGNvbnN0YW50IGZvciBleHBsaWNpdGx5IHJlcXVlc3RpbmcgQ01LLlxuICogQGV4YW1wbGVcbiAqIGVuY3J5cHRpb246IHsgc3RvcmFnZUtleTogVVNFX0NNSyB9XG4gKi9cbmV4cG9ydCBjb25zdCBVU0VfQ01LOiBDdXN0b21lck1hbmFnZWRLZXlNYXJrZXIgPSB7IHVzZUNNSzogdHJ1ZSB9IGFzIGNvbnN0O1xuXG4vKipcbiAqICoqREVTVFJVQ1RJVkUqKjogQ2hhbmdpbmcgYHN0b3JhZ2VLZXlgIGFmdGVyIGNsdXN0ZXIgY3JlYXRpb24gY2F1c2VzIGNsdXN0ZXIgUkVQTEFDRU1FTlQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVyb3JhRW5jcnlwdGlvbkNvbmZpZyB7XG4gIC8qKiBERVNUUlVDVElWRTogQ2hhbmdpbmcgYWZ0ZXIgY3JlYXRpb24gY2F1c2VzIGNsdXN0ZXIgcmVwbGFjZW1lbnQgKi9cbiAgc3RvcmFnZUtleT86IEVuY3J5cHRpb25LZXlTcGVjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVJlYWRlckNvbmZpZyB7XG4gIHNjYWxlV2l0aFdyaXRlcj86IGJvb2xlYW47XG4gIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM/OiBib29sZWFuO1xuICBpZGVudGlmaWVyU3VmZml4Pzogc3RyaW5nO1xuICBhdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVdyaXRlckNvbmZpZyB7XG4gIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM/OiBib29sZWFuO1xuICBpZGVudGlmaWVyU3VmZml4Pzogc3RyaW5nO1xuICBhdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVJlYWRlcnNDb25maWcge1xuICAvKiogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggaW5zdGFuY2VzICovXG4gIGNvdW50PzogbnVtYmVyO1xuICAvKiogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggY291bnQgKi9cbiAgaW5zdGFuY2VzPzogQXVyb3JhUmVhZGVyQ29uZmlnW107XG4gIGRlZmF1bHRFbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzPzogYm9vbGVhbjtcbn1cblxudHlwZSBEYXRhYmFzZVR5cGUgPSBcIkF1cm9yYVwiIHwgXCJJbnN0YW5jZVwiIHwgXCJHbG9iYWxBdXJvcmFcIjtcblxuLyoqXG4gKiBCYXNlIHByb3BzIGZvciBkYXRhYmFzZSBjb25maWd1cmF0aW9uLlxuICovXG50eXBlIEJhc2VEYXRhYmFzZVByb3BzID0ge1xuICB2cGM/OiBJVnBjO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBdXJvcmFEYXRhYmFzZVByb3BzIGV4dGVuZHMgQmFzZURhdGFiYXNlUHJvcHMge1xuICB0eXBlOiBcIkF1cm9yYVwiO1xuICBkYXRhYmFzZUVuZ2luZT86IERhdGFiYXNlRW5naW5lO1xuICAvKiogT3ZlcnJpZGVzIGRhdGFiYXNlRW5naW5lIGlmIHByb3ZpZGVkICovXG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgLyoqIERFU1RSVUNUSVZFOiBDaGFuZ2luZyBzdG9yYWdlS2V5IGNhdXNlcyBjbHVzdGVyIHJlcGxhY2VtZW50ICovXG4gIGVuY3J5cHRpb24/OiBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnO1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgcG9ydD86IG51bWJlcjtcbiAgcGVyZm9ybWFuY2VJbnNpZ2h0cz86IFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcgfCBmYWxzZTtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGNsdXN0ZXIgc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxBdXJvcmFEYXRhYmFzZVByb3BzIGV4dGVuZHMgQmFzZURhdGFiYXNlUHJvcHMge1xuICB0eXBlOiBcIkdsb2JhbEF1cm9yYVwiO1xuICBwcmltYXJ5UmVnaW9uOiBzdHJpbmc7XG4gIHNlY29uZGFyeVJlZ2lvbnM/OiBzdHJpbmdbXTtcbiAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIGVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZz86IGJvb2xlYW47XG4gIGRhdGFiYXNlRW5naW5lPzogRGF0YWJhc2VFbmdpbmU7XG4gIC8qKiBPdmVycmlkZXMgZGF0YWJhc2VFbmdpbmUgaWYgcHJvdmlkZWQgKi9cbiAgZW5naW5lPzogSUNsdXN0ZXJFbmdpbmU7XG4gIHdyaXRlcj86IEF1cm9yYVdyaXRlckNvbmZpZztcbiAgcmVhZGVycz86IEF1cm9yYVJlYWRlcnNDb25maWcgfCBmYWxzZTtcbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzQ29uZmlnO1xuICAvKiogREVTVFJVQ1RJVkU6IENoYW5naW5nIHN0b3JhZ2VLZXkgY2F1c2VzIGNsdXN0ZXIgcmVwbGFjZW1lbnQgKi9cbiAgZW5jcnlwdGlvbj86IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG4gIGJhY2t1cFJldGVudGlvbj86IG51bWJlcjtcbiAgbW9uaXRvcmluZ0ludGVydmFsPzogRHVyYXRpb247XG4gIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICAvKiogQVJOIG9yIGlkZW50aWZpZXIgb2YgREIgY2x1c3RlciBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20gKi9cbiAgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlRGF0YWJhc2VQcm9wcyBleHRlbmRzIEJhc2VEYXRhYmFzZVByb3BzIHtcbiAgdHlwZTogXCJJbnN0YW5jZVwiO1xuICBkYXRhYmFzZUVuZ2luZT86IERhdGFiYXNlRW5naW5lO1xuICAvKiogT3ZlcnJpZGVzIGRhdGFiYXNlRW5naW5lIGlmIHByb3ZpZGVkICovXG4gIGVuZ2luZT86IElJbnN0YW5jZUVuZ2luZTtcbiAgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgcG9ydD86IG51bWJlcjtcbiAgbXVsdGlBej86IGJvb2xlYW47XG4gIHBlcmZvcm1hbmNlSW5zaWdodHM/OiBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgcmVhZFJlcGxpY2E/OiBSZWFkUmVwbGljYUNvbmZpZyB8IGZhbHNlO1xuICBjcmVkZW50aWFscz86IENyZWRlbnRpYWxzQ29uZmlnO1xuICBlbmNyeXB0aW9uPzogRW5jcnlwdGlvbkNvbmZpZztcbiAgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGluc3RhbmNlIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIElEYXRhYmFzZVByb3BzID1cbiAgfCBBdXJvcmFEYXRhYmFzZVByb3BzXG4gIHwgSW5zdGFuY2VEYXRhYmFzZVByb3BzXG4gIHwgR2xvYmFsQXVyb3JhRGF0YWJhc2VQcm9wcztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZGF0YWJhc2UgcHJvcHMgYW5kIGxvZ3Mgd2FybmluZ3MgZm9yIGlnbm9yZWQgb3IgbWlzY29uZmlndXJlZCBvcHRpb25zLlxuICogVGhlc2UgY2hlY2tzIGhlbHAgY2F0Y2ggaXNzdWVzIHdoZW4gcHJvcHMgY29tZSBmcm9tIGR5bmFtaWMgc291cmNlcyB3aGVyZVxuICogVHlwZVNjcmlwdCdzIGNvbXBpbGUtdGltZSBjaGVja3MgbWF5IG5vdCBhcHBseS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVEYXRhYmFzZVByb3BzKHByb3BzOiBJRGF0YWJhc2VQcm9wcyk6IHZvaWQge1xuICBjb25zdCBwcm9wc0FueSA9IHByb3BzIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLy8gR2xvYmFsQXVyb3JhIHJlcXVpcmVzIHByaW1hcnlSZWdpb25cbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiR2xvYmFsQXVyb3JhXCIgJiYgIXByb3BzLnByaW1hcnlSZWdpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkdsb2JhbEF1cm9yYSBkYXRhYmFzZSByZXF1aXJlcyAncHJpbWFyeVJlZ2lvbicuIFwiICtcbiAgICAgICAgXCJTcGVjaWZ5IHRoZSBBV1MgcmVnaW9uIHdoZXJlIHRoZSBwcmltYXJ5IGNsdXN0ZXIgd2lsbCBiZSBjcmVhdGVkLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdhcm4gYWJvdXQgSW5zdGFuY2Utb25seSBvcHRpb25zIG9uIEF1cm9yYS9HbG9iYWxBdXJvcmFcbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiQXVyb3JhXCIgfHwgcHJvcHMudHlwZSA9PT0gXCJHbG9iYWxBdXJvcmFcIikge1xuICAgIGlmIChcInJlYWRSZXBsaWNhXCIgaW4gcHJvcHNBbnkgJiYgcHJvcHNBbnkucmVhZFJlcGxpY2EgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAncmVhZFJlcGxpY2EnIGlzIGlnbm9yZWQgZm9yICR7cHJvcHMudHlwZX0gZGF0YWJhc2VzLiBgICtcbiAgICAgICAgICBcIlVzZSAncmVhZGVycycgY29uZmlndXJhdGlvbiBmb3IgQXVyb3JhIHJlYWQgc2NhbGluZy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFwibXVsdGlBelwiIGluIHByb3BzQW55ICYmIHByb3BzQW55Lm11bHRpQXogIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnbXVsdGlBeicgaXMgaWdub3JlZCBmb3IgJHtwcm9wcy50eXBlfSBkYXRhYmFzZXMuIGAgK1xuICAgICAgICAgIFwiQXVyb3JhIHByb3ZpZGVzIGF1dG9tYXRpYyBtdWx0aS1BWiByZXBsaWNhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgXCJhbGxvY2F0ZWRTdG9yYWdlXCIgaW4gcHJvcHNBbnkgJiZcbiAgICAgIHByb3BzQW55LmFsbG9jYXRlZFN0b3JhZ2UgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnYWxsb2NhdGVkU3RvcmFnZScgaXMgaWdub3JlZCBmb3IgJHtwcm9wcy50eXBlfSBkYXRhYmFzZXMuIGAgK1xuICAgICAgICAgIFwiQXVyb3JhIHVzZXMgYXV0b21hdGljIHN0b3JhZ2Ugc2NhbGluZy5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBXYXJuIGFib3V0IEF1cm9yYS1vbmx5IG9wdGlvbnMgb24gSW5zdGFuY2VcbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiSW5zdGFuY2VcIikge1xuICAgIGlmIChcInJlYWRlcnNcIiBpbiBwcm9wc0FueSAmJiBwcm9wc0FueS5yZWFkZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbRmphbGxdIFdhcm5pbmc6ICdyZWFkZXJzJyBpcyBpZ25vcmVkIGZvciBJbnN0YW5jZSBkYXRhYmFzZXMuIFwiICtcbiAgICAgICAgICBcIlVzZSAncmVhZFJlcGxpY2EnIGNvbmZpZ3VyYXRpb24gZm9yIFJEUyBJbnN0YW5jZSByZWFkIHNjYWxpbmcuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcIndyaXRlclwiIGluIHByb3BzQW55ICYmIHByb3BzQW55LndyaXRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0ZqYWxsXSBXYXJuaW5nOiAnd3JpdGVyJyBpcyBpZ25vcmVkIGZvciBJbnN0YW5jZSBkYXRhYmFzZXMuIFwiICtcbiAgICAgICAgICBcIldyaXRlciBjb25maWd1cmF0aW9uIG9ubHkgYXBwbGllcyB0byBBdXJvcmEgY2x1c3RlcnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIFwiYmFja3VwUmV0ZW50aW9uXCIgaW4gcHJvcHNBbnkgJiZcbiAgICAgIHByb3BzQW55LmJhY2t1cFJldGVudGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0ZqYWxsXSBXYXJuaW5nOiAnYmFja3VwUmV0ZW50aW9uJyBpbiBkYXlzIGZvcm1hdCBpcyBBdXJvcmEtc3BlY2lmaWMuIFwiICtcbiAgICAgICAgICBcIkZvciBSRFMgSW5zdGFuY2UsIGJhY2t1cCByZXRlbnRpb24gaXMgY29uZmlndXJlZCB2aWEgRHVyYXRpb24gaW4gdGhlIGNvbnN0cnVjdC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBXYXJuIGFib3V0IEdsb2JhbEF1cm9yYS1vbmx5IG9wdGlvbnMgb24gbm9uLWdsb2JhbCBkYXRhYmFzZXNcbiAgaWYgKHByb3BzLnR5cGUgIT09IFwiR2xvYmFsQXVyb3JhXCIpIHtcbiAgICBpZiAoXCJwcmltYXJ5UmVnaW9uXCIgaW4gcHJvcHNBbnkgJiYgcHJvcHNBbnkucHJpbWFyeVJlZ2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbRmphbGxdIFdhcm5pbmc6ICdwcmltYXJ5UmVnaW9uJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJSZWdpb24gY29uZmlndXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gR2xvYmFsQXVyb3JhLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBcInNlY29uZGFyeVJlZ2lvbnNcIiBpbiBwcm9wc0FueSAmJlxuICAgICAgcHJvcHNBbnkuc2Vjb25kYXJ5UmVnaW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbRmphbGxdIFdhcm5pbmc6ICdzZWNvbmRhcnlSZWdpb25zJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJNdWx0aS1yZWdpb24gY29uZmlndXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gR2xvYmFsQXVyb3JhLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBcImVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZ1wiIGluIHByb3BzQW55ICYmXG4gICAgICBwcm9wc0FueS5lbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmcgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJXcml0ZSBmb3J3YXJkaW5nIG9ubHkgYXBwbGllcyB0byBHbG9iYWxBdXJvcmEuXCJcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZUZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIElEYXRhYmFzZVByb3BzPihpZDogc3RyaW5nLCBwcm9wczogVCkge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIHZhbGlkYXRlRGF0YWJhc2VQcm9wcyhwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGRhdGFiYXNlUHJvcHMgPSB7XG4gICAgICAgIC4uLihwcm9wcyBhcyBhbnkpLFxuICAgICAgICB2cGM6IChwcm9wcy52cGMgfHwgYXBwLmdldFZwYygpKSBhcyBJVnBjXG4gICAgICB9IGFzIFQ7XG4gICAgICByZXR1cm4gbmV3IERhdGFiYXNlKHNjb3BlLCBpZCwgZGF0YWJhc2VQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHB1YmxpYyB2cGM6IElWcGM7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0F1cm9yYUdsb2JhbDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSURhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZTtcbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcbiAgfVxuXG4gIGFkZERhdGFiYXNlKHByb3BzOiBJRGF0YWJhc2VQcm9wcykge1xuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBcIkF1cm9yYVwiOlxuICAgICAgICB0aGlzLmFkZEF1cm9yYShwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkdsb2JhbEF1cm9yYVwiOlxuICAgICAgICB0aGlzLmFkZEF1cm9yYUdsb2JhbChwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkluc3RhbmNlXCI6XG4gICAgICAgIHRoaXMuYWRkUmRzSW5zdGFuY2UocHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEV4aGF1c3RpdmVuZXNzIGNoZWNrXG4gICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IHByb3BzO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRhdGFiYXNlIHR5cGUgJHsocHJvcHMgYXMgYW55KS50eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQXVyb3JhKHByb3BzOiBBdXJvcmFEYXRhYmFzZVByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy52cGMpIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgQXVyb3JhIGRhdGFiYXNlXCIpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWREYXRhYmFzZUVuZ2luZSA9IHByb3BzLmRhdGFiYXNlRW5naW5lID8/IFwicG9zdGdyZXNxbFwiO1xuICAgIGNvbnN0IHJlc29sdmVkRW5naW5lID1cbiAgICAgIHByb3BzLmVuZ2luZSA/PyBnZXRBdXJvcmFDbHVzdGVyRW5naW5lKHJlc29sdmVkRGF0YWJhc2VFbmdpbmUpO1xuICAgIGNvbnN0IGVuZ2luZUNvbmZpZyA9IGdldEVuZ2luZUNvbmZpZyhyZXNvbHZlZERhdGFiYXNlRW5naW5lKTtcblxuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzQXVyb3JhKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgZW5naW5lOiByZXNvbHZlZEVuZ2luZSxcbiAgICAgIGVuZ2luZUNvbmZpZyxcbiAgICAgIHdyaXRlcjogcHJvcHMud3JpdGVyLFxuICAgICAgcmVhZGVyczogcHJvcHMucmVhZGVycyxcbiAgICAgIHByb3h5OiBwcm9wcy5wcm94eSxcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5jcmVkZW50aWFscyxcbiAgICAgIGVuY3J5cHRpb246IHByb3BzLmVuY3J5cHRpb24sXG4gICAgICBiYWNrdXBSZXRlbnRpb246IHByb3BzLmJhY2t1cFJldGVudGlvbixcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgcG9ydDogcHJvcHMucG9ydCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodHM6IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMsXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb3BzLmRlbGV0aW9uUHJvdGVjdGlvbixcbiAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyXG4gICAgfSk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuZGF0YWJhc2UuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFkZEF1cm9yYUdsb2JhbChwcm9wczogR2xvYmFsQXVyb3JhRGF0YWJhc2VQcm9wcykge1xuICAgIGlmICghcHJvcHMudnBjKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVlBDIGlzIHJlcXVpcmVkIGZvciBHbG9iYWwgQXVyb3JhIGRhdGFiYXNlXCIpO1xuICAgIGlmICghcHJvcHMucHJpbWFyeVJlZ2lvbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInByaW1hcnlSZWdpb24gaXMgcmVxdWlyZWQgZm9yIEdsb2JhbCBBdXJvcmEgZGF0YWJhc2VcIik7XG5cbiAgICBjb25zdCByZXNvbHZlZERhdGFiYXNlRW5naW5lID0gcHJvcHMuZGF0YWJhc2VFbmdpbmUgPz8gXCJwb3N0Z3Jlc3FsXCI7XG4gICAgY29uc3QgcmVzb2x2ZWRFbmdpbmUgPVxuICAgICAgcHJvcHMuZW5naW5lID8/IGdldEF1cm9yYUNsdXN0ZXJFbmdpbmUocmVzb2x2ZWREYXRhYmFzZUVuZ2luZSk7XG4gICAgY29uc3QgZW5naW5lQ29uZmlnID0gZ2V0RW5naW5lQ29uZmlnKHJlc29sdmVkRGF0YWJhc2VFbmdpbmUpO1xuXG4gICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmFHbG9iYWwoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc0dsb2JhbGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgcHJpbWFyeVJlZ2lvbjogcHJvcHMucHJpbWFyeVJlZ2lvbixcbiAgICAgICAgc2Vjb25kYXJ5UmVnaW9uczogcHJvcHMuc2Vjb25kYXJ5UmVnaW9ucyxcbiAgICAgICAgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyLFxuICAgICAgICBlbmdpbmU6IHJlc29sdmVkRW5naW5lLFxuICAgICAgICBlbmdpbmVDb25maWcsXG4gICAgICAgIGVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZzogcHJvcHMuZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nLFxuICAgICAgICB3cml0ZXI6IHByb3BzLndyaXRlcixcbiAgICAgICAgcmVhZGVyczogcHJvcHMucmVhZGVycyxcbiAgICAgICAgcHJveHk6IHByb3BzLnByb3h5LFxuICAgICAgICBjcmVkZW50aWFsczogcHJvcHMuY3JlZGVudGlhbHMsXG4gICAgICAgIGVuY3J5cHRpb246IHByb3BzLmVuY3J5cHRpb24sXG4gICAgICAgIGJhY2t1cFJldGVudGlvbjogcHJvcHMuYmFja3VwUmV0ZW50aW9uLFxuICAgICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHByb3BzLm1vbml0b3JpbmdJbnRlcnZhbCxcbiAgICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRzOiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzLFxuICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb3BzLmRlbGV0aW9uUHJvdGVjdGlvbixcbiAgICAgICAgc25hcHNob3RJZGVudGlmaWVyOiBwcm9wcy5zbmFwc2hvdElkZW50aWZpZXJcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmRhdGFiYXNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSZHNJbnN0YW5jZShwcm9wczogSW5zdGFuY2VEYXRhYmFzZVByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy52cGMpIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgSW5zdGFuY2UgZGF0YWJhc2VcIik7XG5cbiAgICBjb25zdCByZXNvbHZlZERhdGFiYXNlRW5naW5lID0gcHJvcHMuZGF0YWJhc2VFbmdpbmUgPz8gXCJwb3N0Z3Jlc3FsXCI7XG4gICAgY29uc3QgcmVzb2x2ZWRFbmdpbmUgPVxuICAgICAgcHJvcHMuZW5naW5lID8/IGdldEluc3RhbmNlRW5naW5lKHJlc29sdmVkRGF0YWJhc2VFbmdpbmUpO1xuICAgIGNvbnN0IGVuZ2luZUNvbmZpZyA9IGdldEVuZ2luZUNvbmZpZyhyZXNvbHZlZERhdGFiYXNlRW5naW5lKTtcblxuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzSW5zdGFuY2UodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSxcbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgZW5naW5lOiByZXNvbHZlZEVuZ2luZSxcbiAgICAgIGVuZ2luZUNvbmZpZyxcbiAgICAgIG11bHRpQXo6IHByb3BzLm11bHRpQXosXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzOiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzLFxuICAgICAgcHJveHk6IHByb3BzLnByb3h5LFxuICAgICAgcmVhZFJlcGxpY2E6IHByb3BzLnJlYWRSZXBsaWNhLFxuICAgICAgY3JlZGVudGlhbHM6IHByb3BzLmNyZWRlbnRpYWxzLFxuICAgICAgZW5jcnlwdGlvbjogcHJvcHMuZW5jcnlwdGlvbixcbiAgICAgIHB1YmxpY2x5QWNjZXNzaWJsZTogcHJvcHMucHVibGljbHlBY2Nlc3NpYmxlLFxuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24sXG4gICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHByb3BzLnNuYXBzaG90SWRlbnRpZmllclxuICAgIH0pO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmRhdGFiYXNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRDcmVkZW50aWFscygpO1xuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0SG9zdEVuZHBvaW50KCk7XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldEhvc3RQb3J0KCk7XG4gIH1cblxuICBnZXREYXRhYmFzZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZU5hbWU7XG4gIH1cbn1cbiJdfQ==
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZGQSx3REFFQztBQUVELDhDQUVDO0FBRUQsMENBT0M7QUFrREQsMENBU0M7QUFLRCx3Q0FTQztBQXJMRCwyQ0FBdUM7QUFHdkMsMkRBQXNFO0FBQ3RFLGtGQUErRTtBQVMvRSxpREFTNkI7QUFZaEIsUUFBQSxzQkFBc0IsR0FTL0I7SUFDRixVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7UUFDL0MsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO1FBQ2pELGVBQWUsRUFBRSxVQUFVO1FBQzNCLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDdkMsZUFBZSxFQUFFLDhDQUE4QztLQUNoRTtJQUNELEtBQUssRUFBRTtRQUNMLHdFQUF3RTtRQUN4RSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRTtRQUN0RSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7UUFDbkQsZUFBZSxFQUFFLE9BQU87UUFDeEIsYUFBYSxFQUFFLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFO1FBQ2pELGVBQWUsRUFBRSx5Q0FBeUM7S0FDM0Q7Q0FDRixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBaUQ7SUFDNUUsVUFBVSxFQUFFLEdBQUcsRUFBRTtRQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsOEJBQXNCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUMzRSxPQUFPLCtCQUFxQixDQUFDLGNBQWMsQ0FBQztZ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QUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1lBQzVDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBekpELDRCQXlKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBSZHNBdXJvcmEsIFJkc0luc3RhbmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJkc0F1cm9yYUdsb2JhbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL3Jkc0F1cm9yYUdsb2JhbFwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG5cbmltcG9ydCB7XG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlLFxuICB0eXBlIElWcGMsXG4gIHR5cGUgU3VibmV0U2VsZWN0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICB0eXBlIElJbnN0YW5jZUVuZ2luZSxcbiAgdHlwZSBJQ2x1c3RlckVuZ2luZSxcbiAgRGF0YWJhc2VDbHVzdGVyRW5naW5lLFxuICBEYXRhYmFzZUluc3RhbmNlRW5naW5lLFxuICBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24sXG4gIEF1cm9yYU15c3FsRW5naW5lVmVyc2lvbixcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBNeXNxbEVuZ2luZVZlcnNpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IHR5cGUgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgSUtleSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFiYXNlRW5naW5lID0gXCJwb3N0Z3Jlc3FsXCIgfCBcIm15c3FsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5naW5lQ29uZmlnIHtcbiAgZGVmYXVsdFVzZXJuYW1lOiBzdHJpbmc7XG4gIHNzbFBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJvdGF0aW9uQXBwTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgREFUQUJBU0VfRU5HSU5FX0NPTkZJRzogUmVjb3JkPFxuICBEYXRhYmFzZUVuZ2luZSxcbiAge1xuICAgIGF1cm9yYTogeyB2ZXJzaW9uOiBzdHJpbmc7IG1ham9yVmVyc2lvbjogc3RyaW5nIH07XG4gICAgaW5zdGFuY2U6IHsgdmVyc2lvbjogc3RyaW5nOyBtYWpvclZlcnNpb246IHN0cmluZyB9O1xuICAgIGRlZmF1bHRVc2VybmFtZTogc3RyaW5nO1xuICAgIHNzbFBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgcm90YXRpb25BcHBOYW1lOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIHBvc3RncmVzcWw6IHtcbiAgICBhdXJvcmE6IHsgdmVyc2lvbjogXCIxNi42XCIsIG1ham9yVmVyc2lvbjogXCIxNlwiIH0sXG4gICAgaW5zdGFuY2U6IHsgdmVyc2lvbjogXCIxNy41XCIsIG1ham9yVmVyc2lvbjogXCIxN1wiIH0sXG4gICAgZGVmYXVsdFVzZXJuYW1lOiBcInBvc3RncmVzXCIsXG4gICAgc3NsUGFyYW1ldGVyczogeyBcInJkcy5mb3JjZV9zc2xcIjogXCIxXCIgfSxcbiAgICByb3RhdGlvbkFwcE5hbWU6IFwiU2VjcmV0c01hbmFnZXJSRFNQb3N0Z3JlU1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICB9LFxuICBteXNxbDoge1xuICAgIC8vIG1ham9yVmVyc2lvbiBtdXN0IGJlIEF1cm9yYSB2ZXJzaW9uICgzLjA4LjApLCBOT1QgTXlTUUwgdmVyc2lvbiAoOC4wKVxuICAgIGF1cm9yYTogeyB2ZXJzaW9uOiBcIjguMC5teXNxbF9hdXJvcmEuMy4wOC4wXCIsIG1ham9yVmVyc2lvbjogXCIzLjA4LjBcIiB9LFxuICAgIGluc3RhbmNlOiB7IHZlcnNpb246IFwiOC40LjRcIiwgbWFqb3JWZXJzaW9uOiBcIjguNFwiIH0sXG4gICAgZGVmYXVsdFVzZXJuYW1lOiBcImFkbWluXCIsXG4gICAgc3NsUGFyYW1ldGVyczogeyByZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ6IFwiT05cIiB9LFxuICAgIHJvdGF0aW9uQXBwTmFtZTogXCJTZWNyZXRzTWFuYWdlclJEU015U1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICB9XG59O1xuXG5jb25zdCBBVVJPUkFfRU5HSU5FX0ZBQ1RPUklFUzogUmVjb3JkPERhdGFiYXNlRW5naW5lLCAoKSA9PiBJQ2x1c3RlckVuZ2luZT4gPSB7XG4gIHBvc3RncmVzcWw6ICgpID0+IHtcbiAgICBjb25zdCB7IHZlcnNpb24sIG1ham9yVmVyc2lvbiB9ID0gREFUQUJBU0VfRU5HSU5FX0NPTkZJRy5wb3N0Z3Jlc3FsLmF1cm9yYTtcbiAgICByZXR1cm4gRGF0YWJhc2VDbHVzdGVyRW5naW5lLmF1cm9yYVBvc3RncmVzKHtcbiAgICAgIHZlcnNpb246IEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbi5vZih2ZXJzaW9uLCBtYWpvclZlcnNpb24pXG4gICAgfSk7XG4gIH0sXG4gIG15c3FsOiAoKSA9PiB7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCBtYWpvclZlcnNpb24gfSA9IERBVEFCQVNFX0VOR0lORV9DT05GSUcubXlzcWwuYXVyb3JhO1xuICAgIHJldHVybiBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUuYXVyb3JhTXlzcWwoe1xuICAgICAgdmVyc2lvbjogQXVyb3JhTXlzcWxFbmdpbmVWZXJzaW9uLm9mKHZlcnNpb24sIG1ham9yVmVyc2lvbilcbiAgICB9KTtcbiAgfVxufTtcblxuY29uc3QgSU5TVEFOQ0VfRU5HSU5FX0ZBQ1RPUklFUzogUmVjb3JkPERhdGFiYXNlRW5naW5lLCAoKSA9PiBJSW5zdGFuY2VFbmdpbmU+ID1cbiAge1xuICAgIHBvc3RncmVzcWw6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgdmVyc2lvbiwgbWFqb3JWZXJzaW9uIH0gPVxuICAgICAgICBEQVRBQkFTRV9FTkdJTkVfQ09ORklHLnBvc3RncmVzcWwuaW5zdGFuY2U7XG4gICAgICByZXR1cm4gRGF0YWJhc2VJbnN0YW5jZUVuZ2luZS5wb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IFBvc3RncmVzRW5naW5lVmVyc2lvbi5vZih2ZXJzaW9uLCBtYWpvclZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG15c3FsOiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHZlcnNpb24sIG1ham9yVmVyc2lvbiB9ID0gREFUQUJBU0VfRU5HSU5FX0NPTkZJRy5teXNxbC5pbnN0YW5jZTtcbiAgICAgIHJldHVybiBEYXRhYmFzZUluc3RhbmNlRW5naW5lLm15c3FsKHtcbiAgICAgICAgdmVyc2lvbjogTXlzcWxFbmdpbmVWZXJzaW9uLm9mKHZlcnNpb24sIG1ham9yVmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEF1cm9yYUNsdXN0ZXJFbmdpbmUoZW5naW5lOiBEYXRhYmFzZUVuZ2luZSk6IElDbHVzdGVyRW5naW5lIHtcbiAgcmV0dXJuIEFVUk9SQV9FTkdJTkVfRkFDVE9SSUVTW2VuZ2luZV0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluc3RhbmNlRW5naW5lKGVuZ2luZTogRGF0YWJhc2VFbmdpbmUpOiBJSW5zdGFuY2VFbmdpbmUge1xuICByZXR1cm4gSU5TVEFOQ0VfRU5HSU5FX0ZBQ1RPUklFU1tlbmdpbmVdKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmdpbmVDb25maWcoZW5naW5lOiBEYXRhYmFzZUVuZ2luZSk6IEVuZ2luZUNvbmZpZyB7XG4gIGNvbnN0IGNvbmZpZyA9IERBVEFCQVNFX0VOR0lORV9DT05GSUdbZW5naW5lXTtcbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0VXNlcm5hbWU6IGNvbmZpZy5kZWZhdWx0VXNlcm5hbWUsXG4gICAgc3NsUGFyYW1ldGVyczogY29uZmlnLnNzbFBhcmFtZXRlcnMsXG4gICAgcm90YXRpb25BcHBOYW1lOiBjb25maWcucm90YXRpb25BcHBOYW1lXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlDb25maWcge1xuICBtYXhDb25uZWN0aW9ucz86IG51bWJlcjtcbiAgbWF4SWRsZUNvbm5lY3Rpb25zPzogbnVtYmVyO1xuICBjb25uZWN0aW9uQm9ycm93VGltZW91dD86IG51bWJlcjtcbiAgcmVxdWlyZVRMUz86IGJvb2xlYW47XG4gIHZwY1N1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZFJlcGxpY2FDb25maWcge1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIGF2YWlsYWJpbGl0eVpvbmU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbHNDb25maWcge1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgc2VjcmV0Um90YXRpb24/OiBTZWNyZXRSb3RhdGlvbkNvbmZpZyB8IGZhbHNlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJvdGF0aW9uQ29uZmlnIHtcbiAgYXV0b21hdGljYWxseUFmdGVyPzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZyB7XG4gIHN0b3JhZ2VLZXk/OiBFbmNyeXB0aW9uS2V5U3BlYztcbn1cblxuZXhwb3J0IHR5cGUgUGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZCA9IDcgfCAzMSB8IDkzIHwgMTg2IHwgMzcyIHwgNzMxO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcge1xuICBlbmNyeXB0aW9uS2V5PzogRW5jcnlwdGlvbktleVNwZWM7XG4gIC8qKiBSZXRlbnRpb24gcGVyaW9kIGluIGRheXMuIERlZmF1bHQ6IDMxICgxIG1vbnRoKS4gKi9cbiAgcmV0ZW50aW9uUGVyaW9kPzogUGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblBlcmlvZDtcbn1cblxuLy8gTWFya2VyIGZvciBBV1MgbWFuYWdlZCBlbmNyeXB0aW9uIGtleSAoYXdzL3JkcywgYXdzL3MzLCBldGMuKVxuZXhwb3J0IGludGVyZmFjZSBBd3NNYW5hZ2VkS2V5IHtcbiAgcmVhZG9ubHkgYXdzTWFuYWdlZDogdHJ1ZTtcbn1cblxuLy8gTWFya2VyIGZvciBleHBsaWNpdGx5IHJlcXVlc3RpbmcgYSBDdXN0b21lciBNYW5hZ2VkIEtleSAoQ01LKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXJNYW5hZ2VkS2V5TWFya2VyIHtcbiAgcmVhZG9ubHkgdXNlQ01LOiB0cnVlO1xufVxuXG4vLyBFbmNyeXB0aW9uIGtleSBzcGVjaWZpY2F0aW9uIGZvciBSRFMgcmVzb3VyY2VzLlxuZXhwb3J0IHR5cGUgRW5jcnlwdGlvbktleVNwZWMgPSBJS2V5IHwgQXdzTWFuYWdlZEtleSB8IEN1c3RvbWVyTWFuYWdlZEtleU1hcmtlcjtcblxuLy8gVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgZW5jcnlwdGlvbiBrZXkgc3BlYyBpcyBBV1MgbWFuYWdlZC5cbmV4cG9ydCBmdW5jdGlvbiBpc0F3c01hbmFnZWRLZXkoXG4gIHNwZWM6IEVuY3J5cHRpb25LZXlTcGVjIHwgdW5kZWZpbmVkXG4pOiBzcGVjIGlzIEF3c01hbmFnZWRLZXkge1xuICByZXR1cm4gKFxuICAgIHNwZWMgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBzcGVjID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJhd3NNYW5hZ2VkXCIgaW4gc3BlYyAmJlxuICAgIChzcGVjIGFzIEF3c01hbmFnZWRLZXkpLmF3c01hbmFnZWQgPT09IHRydWVcbiAgKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIENNSyBpcyBleHBsaWNpdGx5IHJlcXVlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ01LUmVxdWVzdGVkKFxuICBzcGVjOiBFbmNyeXB0aW9uS2V5U3BlYyB8IHVuZGVmaW5lZFxuKTogc3BlYyBpcyBDdXN0b21lck1hbmFnZWRLZXlNYXJrZXIge1xuICByZXR1cm4gKFxuICAgIHNwZWMgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBzcGVjID09PSBcIm9iamVjdFwiICYmXG4gICAgXCJ1c2VDTUtcIiBpbiBzcGVjICYmXG4gICAgKHNwZWMgYXMgQ3VzdG9tZXJNYW5hZ2VkS2V5TWFya2VyKS51c2VDTUsgPT09IHRydWVcbiAgKTtcbn1cblxuLyoqXG4gKiBDb252ZW5pZW5jZSBjb25zdGFudCBmb3Igc3BlY2lmeWluZyBBV1MgbWFuYWdlZCBlbmNyeXB0aW9uICh0aGUgZGVmYXVsdCkuXG4gKiBAZXhhbXBsZVxuICogZW5jcnlwdGlvbjogeyBzdG9yYWdlS2V5OiBBV1NfTUFOQUdFRCB9XG4gKi9cbmV4cG9ydCBjb25zdCBBV1NfTUFOQUdFRDogQXdzTWFuYWdlZEtleSA9IHsgYXdzTWFuYWdlZDogdHJ1ZSB9IGFzIGNvbnN0O1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGNvbnN0YW50IGZvciBleHBsaWNpdGx5IHJlcXVlc3RpbmcgQ01LLlxuICogQGV4YW1wbGVcbiAqIGVuY3J5cHRpb246IHsgc3RvcmFnZUtleTogVVNFX0NNSyB9XG4gKi9cbmV4cG9ydCBjb25zdCBVU0VfQ01LOiBDdXN0b21lck1hbmFnZWRLZXlNYXJrZXIgPSB7IHVzZUNNSzogdHJ1ZSB9IGFzIGNvbnN0O1xuXG4vKipcbiAqICoqREVTVFJVQ1RJVkUqKjogQ2hhbmdpbmcgYHN0b3JhZ2VLZXlgIGFmdGVyIGNsdXN0ZXIgY3JlYXRpb24gY2F1c2VzIGNsdXN0ZXIgUkVQTEFDRU1FTlQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVyb3JhRW5jcnlwdGlvbkNvbmZpZyB7XG4gIC8qKiBERVNUUlVDVElWRTogQ2hhbmdpbmcgYWZ0ZXIgY3JlYXRpb24gY2F1c2VzIGNsdXN0ZXIgcmVwbGFjZW1lbnQgKi9cbiAgc3RvcmFnZUtleT86IEVuY3J5cHRpb25LZXlTcGVjO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVJlYWRlckNvbmZpZyB7XG4gIHNjYWxlV2l0aFdyaXRlcj86IGJvb2xlYW47XG4gIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM/OiBib29sZWFuO1xuICBpZGVudGlmaWVyU3VmZml4Pzogc3RyaW5nO1xuICBhdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVdyaXRlckNvbmZpZyB7XG4gIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM/OiBib29sZWFuO1xuICBpZGVudGlmaWVyU3VmZml4Pzogc3RyaW5nO1xuICBhdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1cm9yYVJlYWRlcnNDb25maWcge1xuICAvKiogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggaW5zdGFuY2VzICovXG4gIGNvdW50PzogbnVtYmVyO1xuICAvKiogTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggY291bnQgKi9cbiAgaW5zdGFuY2VzPzogQXVyb3JhUmVhZGVyQ29uZmlnW107XG4gIGRlZmF1bHRFbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzPzogYm9vbGVhbjtcbn1cblxudHlwZSBEYXRhYmFzZVR5cGUgPSBcIkF1cm9yYVwiIHwgXCJJbnN0YW5jZVwiIHwgXCJHbG9iYWxBdXJvcmFcIjtcblxuLyoqXG4gKiBCYXNlIHByb3BzIGZvciBkYXRhYmFzZSBjb25maWd1cmF0aW9uLlxuICovXG50eXBlIEJhc2VEYXRhYmFzZVByb3BzID0ge1xuICB2cGM/OiBJVnBjO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBdXJvcmFEYXRhYmFzZVByb3BzIGV4dGVuZHMgQmFzZURhdGFiYXNlUHJvcHMge1xuICB0eXBlOiBcIkF1cm9yYVwiO1xuICBkYXRhYmFzZUVuZ2luZT86IERhdGFiYXNlRW5naW5lO1xuICAvKiogT3ZlcnJpZGVzIGRhdGFiYXNlRW5naW5lIGlmIHByb3ZpZGVkICovXG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgLyoqIERFU1RSVUNUSVZFOiBDaGFuZ2luZyBzdG9yYWdlS2V5IGNhdXNlcyBjbHVzdGVyIHJlcGxhY2VtZW50ICovXG4gIGVuY3J5cHRpb24/OiBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnO1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgcG9ydD86IG51bWJlcjtcbiAgcGVyZm9ybWFuY2VJbnNpZ2h0cz86IFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcgfCBmYWxzZTtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGNsdXN0ZXIgc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqIFVzZXJuYW1lIGZyb20gdGhlIHNuYXBzaG90IChyZXF1aXJlZCB3aGVuIHJlc3RvcmluZyBmcm9tIHNuYXBzaG90IHRvIHJlc2V0IHBhc3N3b3JkKSAqL1xuICBzbmFwc2hvdFVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbEF1cm9yYURhdGFiYXNlUHJvcHMgZXh0ZW5kcyBCYXNlRGF0YWJhc2VQcm9wcyB7XG4gIHR5cGU6IFwiR2xvYmFsQXVyb3JhXCI7XG4gIHByaW1hcnlSZWdpb246IHN0cmluZztcbiAgc2Vjb25kYXJ5UmVnaW9ucz86IHN0cmluZ1tdO1xuICBnbG9iYWxDbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcbiAgZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nPzogYm9vbGVhbjtcbiAgZGF0YWJhc2VFbmdpbmU/OiBEYXRhYmFzZUVuZ2luZTtcbiAgLyoqIE92ZXJyaWRlcyBkYXRhYmFzZUVuZ2luZSBpZiBwcm92aWRlZCAqL1xuICBlbmdpbmU/OiBJQ2x1c3RlckVuZ2luZTtcbiAgd3JpdGVyPzogQXVyb3JhV3JpdGVyQ29uZmlnO1xuICByZWFkZXJzPzogQXVyb3JhUmVhZGVyc0NvbmZpZyB8IGZhbHNlO1xuICBwcm94eT86IFByb3h5Q29uZmlnIHwgZmFsc2U7XG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIC8qKiBERVNUUlVDVElWRTogQ2hhbmdpbmcgc3RvcmFnZUtleSBjYXVzZXMgY2x1c3RlciByZXBsYWNlbWVudCAqL1xuICBlbmNyeXB0aW9uPzogQXVyb3JhRW5jcnlwdGlvbkNvbmZpZztcbiAgYmFja3VwUmV0ZW50aW9uPzogbnVtYmVyO1xuICBtb25pdG9yaW5nSW50ZXJ2YWw/OiBEdXJhdGlvbjtcbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIHBlcmZvcm1hbmNlSW5zaWdodHM/OiBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnIHwgZmFsc2U7XG4gIC8qKiBBUk4gb3IgaWRlbnRpZmllciBvZiBEQiBjbHVzdGVyIHNuYXBzaG90IHRvIHJlc3RvcmUgZnJvbSAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZSBmcm9tIHRoZSBzbmFwc2hvdCAocmVxdWlyZWQgd2hlbiByZXN0b3JpbmcgZnJvbSBzbmFwc2hvdCB0byByZXNldCBwYXNzd29yZCkgKi9cbiAgc25hcHNob3RVc2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZURhdGFiYXNlUHJvcHMgZXh0ZW5kcyBCYXNlRGF0YWJhc2VQcm9wcyB7XG4gIHR5cGU6IFwiSW5zdGFuY2VcIjtcbiAgZGF0YWJhc2VFbmdpbmU/OiBEYXRhYmFzZUVuZ2luZTtcbiAgLyoqIE92ZXJyaWRlcyBkYXRhYmFzZUVuZ2luZSBpZiBwcm92aWRlZCAqL1xuICBlbmdpbmU/OiBJSW5zdGFuY2VFbmdpbmU7XG4gIGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIG11bHRpQXo/OiBib29sZWFuO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICBwcm94eT86IFByb3h5Q29uZmlnIHwgZmFsc2U7XG4gIHJlYWRSZXBsaWNhPzogUmVhZFJlcGxpY2FDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgZW5jcnlwdGlvbj86IEVuY3J5cHRpb25Db25maWc7XG4gIHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG4gIC8qKiBBUk4gb3IgaWRlbnRpZmllciBvZiBEQiBpbnN0YW5jZSBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20gKi9cbiAgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUgZnJvbSB0aGUgc25hcHNob3QgKHJlcXVpcmVkIHdoZW4gcmVzdG9yaW5nIGZyb20gc25hcHNob3QgdG8gcmVzZXQgcGFzc3dvcmQpICovXG4gIHNuYXBzaG90VXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIElEYXRhYmFzZVByb3BzID1cbiAgfCBBdXJvcmFEYXRhYmFzZVByb3BzXG4gIHwgSW5zdGFuY2VEYXRhYmFzZVByb3BzXG4gIHwgR2xvYmFsQXVyb3JhRGF0YWJhc2VQcm9wcztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgZGF0YWJhc2UgcHJvcHMgYW5kIGxvZ3Mgd2FybmluZ3MgZm9yIGlnbm9yZWQgb3IgbWlzY29uZmlndXJlZCBvcHRpb25zLlxuICogVGhlc2UgY2hlY2tzIGhlbHAgY2F0Y2ggaXNzdWVzIHdoZW4gcHJvcHMgY29tZSBmcm9tIGR5bmFtaWMgc291cmNlcyB3aGVyZVxuICogVHlwZVNjcmlwdCdzIGNvbXBpbGUtdGltZSBjaGVja3MgbWF5IG5vdCBhcHBseS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVEYXRhYmFzZVByb3BzKHByb3BzOiBJRGF0YWJhc2VQcm9wcyk6IHZvaWQge1xuICBjb25zdCBwcm9wc0FueSA9IHByb3BzIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLy8gR2xvYmFsQXVyb3JhIHJlcXVpcmVzIHByaW1hcnlSZWdpb25cbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiR2xvYmFsQXVyb3JhXCIgJiYgIXByb3BzLnByaW1hcnlSZWdpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkdsb2JhbEF1cm9yYSBkYXRhYmFzZSByZXF1aXJlcyAncHJpbWFyeVJlZ2lvbicuIFwiICtcbiAgICAgICAgXCJTcGVjaWZ5IHRoZSBBV1MgcmVnaW9uIHdoZXJlIHRoZSBwcmltYXJ5IGNsdXN0ZXIgd2lsbCBiZSBjcmVhdGVkLlwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdhcm4gYWJvdXQgSW5zdGFuY2Utb25seSBvcHRpb25zIG9uIEF1cm9yYS9HbG9iYWxBdXJvcmFcbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiQXVyb3JhXCIgfHwgcHJvcHMudHlwZSA9PT0gXCJHbG9iYWxBdXJvcmFcIikge1xuICAgIGlmIChcInJlYWRSZXBsaWNhXCIgaW4gcHJvcHNBbnkgJiYgcHJvcHNBbnkucmVhZFJlcGxpY2EgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAncmVhZFJlcGxpY2EnIGlzIGlnbm9yZWQgZm9yICR7cHJvcHMudHlwZX0gZGF0YWJhc2VzLiBgICtcbiAgICAgICAgICBcIlVzZSAncmVhZGVycycgY29uZmlndXJhdGlvbiBmb3IgQXVyb3JhIHJlYWQgc2NhbGluZy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFwibXVsdGlBelwiIGluIHByb3BzQW55ICYmIHByb3BzQW55Lm11bHRpQXogIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnbXVsdGlBeicgaXMgaWdub3JlZCBmb3IgJHtwcm9wcy50eXBlfSBkYXRhYmFzZXMuIGAgK1xuICAgICAgICAgIFwiQXVyb3JhIHByb3ZpZGVzIGF1dG9tYXRpYyBtdWx0aS1BWiByZXBsaWNhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgXCJhbGxvY2F0ZWRTdG9yYWdlXCIgaW4gcHJvcHNBbnkgJiZcbiAgICAgIHByb3BzQW55LmFsbG9jYXRlZFN0b3JhZ2UgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnYWxsb2NhdGVkU3RvcmFnZScgaXMgaWdub3JlZCBmb3IgJHtwcm9wcy50eXBlfSBkYXRhYmFzZXMuIGAgK1xuICAgICAgICAgIFwiQXVyb3JhIHVzZXMgYXV0b21hdGljIHN0b3JhZ2Ugc2NhbGluZy5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBXYXJuIGFib3V0IEF1cm9yYS1vbmx5IG9wdGlvbnMgb24gSW5zdGFuY2VcbiAgaWYgKHByb3BzLnR5cGUgPT09IFwiSW5zdGFuY2VcIikge1xuICAgIGlmIChcInJlYWRlcnNcIiBpbiBwcm9wc0FueSAmJiBwcm9wc0FueS5yZWFkZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbRmphbGxdIFdhcm5pbmc6ICdyZWFkZXJzJyBpcyBpZ25vcmVkIGZvciBJbnN0YW5jZSBkYXRhYmFzZXMuIFwiICtcbiAgICAgICAgICBcIlVzZSAncmVhZFJlcGxpY2EnIGNvbmZpZ3VyYXRpb24gZm9yIFJEUyBJbnN0YW5jZSByZWFkIHNjYWxpbmcuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcIndyaXRlclwiIGluIHByb3BzQW55ICYmIHByb3BzQW55LndyaXRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0ZqYWxsXSBXYXJuaW5nOiAnd3JpdGVyJyBpcyBpZ25vcmVkIGZvciBJbnN0YW5jZSBkYXRhYmFzZXMuIFwiICtcbiAgICAgICAgICBcIldyaXRlciBjb25maWd1cmF0aW9uIG9ubHkgYXBwbGllcyB0byBBdXJvcmEgY2x1c3RlcnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIFwiYmFja3VwUmV0ZW50aW9uXCIgaW4gcHJvcHNBbnkgJiZcbiAgICAgIHByb3BzQW55LmJhY2t1cFJldGVudGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0ZqYWxsXSBXYXJuaW5nOiAnYmFja3VwUmV0ZW50aW9uJyBpbiBkYXlzIGZvcm1hdCBpcyBBdXJvcmEtc3BlY2lmaWMuIFwiICtcbiAgICAgICAgICBcIkZvciBSRFMgSW5zdGFuY2UsIGJhY2t1cCByZXRlbnRpb24gaXMgY29uZmlndXJlZCB2aWEgRHVyYXRpb24gaW4gdGhlIGNvbnN0cnVjdC5cIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBXYXJuIGFib3V0IEdsb2JhbEF1cm9yYS1vbmx5IG9wdGlvbnMgb24gbm9uLWdsb2JhbCBkYXRhYmFzZXNcbiAgaWYgKHByb3BzLnR5cGUgIT09IFwiR2xvYmFsQXVyb3JhXCIpIHtcbiAgICBpZiAoXCJwcmltYXJ5UmVnaW9uXCIgaW4gcHJvcHNBbnkgJiYgcHJvcHNBbnkucHJpbWFyeVJlZ2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbRmphbGxdIFdhcm5pbmc6ICdwcmltYXJ5UmVnaW9uJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJSZWdpb24gY29uZmlndXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gR2xvYmFsQXVyb3JhLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBcInNlY29uZGFyeVJlZ2lvbnNcIiBpbiBwcm9wc0FueSAmJlxuICAgICAgcHJvcHNBbnkuc2Vjb25kYXJ5UmVnaW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbRmphbGxdIFdhcm5pbmc6ICdzZWNvbmRhcnlSZWdpb25zJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJNdWx0aS1yZWdpb24gY29uZmlndXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gR2xvYmFsQXVyb3JhLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBcImVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZ1wiIGluIHByb3BzQW55ICYmXG4gICAgICBwcm9wc0FueS5lbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmcgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW0ZqYWxsXSBXYXJuaW5nOiAnZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nJyBpcyBpZ25vcmVkIGZvciAke3Byb3BzLnR5cGV9IGRhdGFiYXNlcy4gYCArXG4gICAgICAgICAgXCJXcml0ZSBmb3J3YXJkaW5nIG9ubHkgYXBwbGllcyB0byBHbG9iYWxBdXJvcmEuXCJcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZUZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIElEYXRhYmFzZVByb3BzPihpZDogc3RyaW5nLCBwcm9wczogVCkge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIHZhbGlkYXRlRGF0YWJhc2VQcm9wcyhwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGRhdGFiYXNlUHJvcHMgPSB7XG4gICAgICAgIC4uLihwcm9wcyBhcyBhbnkpLFxuICAgICAgICB2cGM6IChwcm9wcy52cGMgfHwgYXBwLmdldFZwYygpKSBhcyBJVnBjXG4gICAgICB9IGFzIFQ7XG4gICAgICByZXR1cm4gbmV3IERhdGFiYXNlKHNjb3BlLCBpZCwgZGF0YWJhc2VQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHB1YmxpYyB2cGM6IElWcGM7XG5cbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0F1cm9yYUdsb2JhbDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSURhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZTtcbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcbiAgfVxuXG4gIGFkZERhdGFiYXNlKHByb3BzOiBJRGF0YWJhc2VQcm9wcykge1xuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBcIkF1cm9yYVwiOlxuICAgICAgICB0aGlzLmFkZEF1cm9yYShwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkdsb2JhbEF1cm9yYVwiOlxuICAgICAgICB0aGlzLmFkZEF1cm9yYUdsb2JhbChwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkluc3RhbmNlXCI6XG4gICAgICAgIHRoaXMuYWRkUmRzSW5zdGFuY2UocHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEV4aGF1c3RpdmVuZXNzIGNoZWNrXG4gICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IHByb3BzO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGRhdGFiYXNlIHR5cGUgJHsocHJvcHMgYXMgYW55KS50eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkQXVyb3JhKHByb3BzOiBBdXJvcmFEYXRhYmFzZVByb3BzKSB7XG4gICAgaWYgKCFwcm9wcy52cGMpIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgQXVyb3JhIGRhdGFiYXNlXCIpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWREYXRhYmFzZUVuZ2luZSA9IHByb3BzLmRhdGFiYXNlRW5naW5lID8/IFwicG9zdGdyZXNxbFwiO1xuICAgIGNvbnN0IHJlc29sdmVkRW5naW5lID1cbiAgICAgIHByb3BzLmVuZ2luZSA/PyBnZXRBdXJvcmFDbHVzdGVyRW5naW5lKHJlc29sdmVkRGF0YWJhc2VFbmdpbmUpO1xuICAgIGNvbnN0IGVuZ2luZUNvbmZpZyA9IGdldEVuZ2luZUNvbmZpZyhyZXNvbHZlZERhdGFiYXNlRW5naW5lKTtcblxuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzQXVyb3JhKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgZW5naW5lOiByZXNvbHZlZEVuZ2luZSxcbiAgICAgIGVuZ2luZUNvbmZpZyxcbiAgICAgIHdyaXRlcjogcHJvcHMud3JpdGVyLFxuICAgICAgcmVhZGVyczogcHJvcHMucmVhZGVycyxcbiAgICAgIHByb3h5OiBwcm9wcy5wcm94eSxcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5jcmVkZW50aWFscyxcbiAgICAgIGVuY3J5cHRpb246IHByb3BzLmVuY3J5cHRpb24sXG4gICAgICBiYWNrdXBSZXRlbnRpb246IHByb3BzLmJhY2t1cFJldGVudGlvbixcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgcG9ydDogcHJvcHMucG9ydCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodHM6IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMsXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb3BzLmRlbGV0aW9uUHJvdGVjdGlvbixcbiAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgc25hcHNob3RVc2VybmFtZTogcHJvcHMuc25hcHNob3RVc2VybmFtZVxuICAgIH0pO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmRhdGFiYXNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdXJvcmFHbG9iYWwocHJvcHM6IEdsb2JhbEF1cm9yYURhdGFiYXNlUHJvcHMpIHtcbiAgICBpZiAoIXByb3BzLnZwYylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgR2xvYmFsIEF1cm9yYSBkYXRhYmFzZVwiKTtcbiAgICBpZiAoIXByb3BzLnByaW1hcnlSZWdpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcmltYXJ5UmVnaW9uIGlzIHJlcXVpcmVkIGZvciBHbG9iYWwgQXVyb3JhIGRhdGFiYXNlXCIpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWREYXRhYmFzZUVuZ2luZSA9IHByb3BzLmRhdGFiYXNlRW5naW5lID8/IFwicG9zdGdyZXNxbFwiO1xuICAgIGNvbnN0IHJlc29sdmVkRW5naW5lID1cbiAgICAgIHByb3BzLmVuZ2luZSA/PyBnZXRBdXJvcmFDbHVzdGVyRW5naW5lKHJlc29sdmVkRGF0YWJhc2VFbmdpbmUpO1xuICAgIGNvbnN0IGVuZ2luZUNvbmZpZyA9IGdldEVuZ2luZUNvbmZpZyhyZXNvbHZlZERhdGFiYXNlRW5naW5lKTtcblxuICAgIHRoaXMuZGF0YWJhc2UgPSBuZXcgUmRzQXVyb3JhR2xvYmFsKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNHbG9iYWxgLFxuICAgICAge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIHByaW1hcnlSZWdpb246IHByb3BzLnByaW1hcnlSZWdpb24sXG4gICAgICAgIHNlY29uZGFyeVJlZ2lvbnM6IHByb3BzLnNlY29uZGFyeVJlZ2lvbnMsXG4gICAgICAgIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyOiBwcm9wcy5nbG9iYWxDbHVzdGVySWRlbnRpZmllcixcbiAgICAgICAgZW5naW5lOiByZXNvbHZlZEVuZ2luZSxcbiAgICAgICAgZW5naW5lQ29uZmlnLFxuICAgICAgICBlbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmc6IHByb3BzLmVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZyxcbiAgICAgICAgd3JpdGVyOiBwcm9wcy53cml0ZXIsXG4gICAgICAgIHJlYWRlcnM6IHByb3BzLnJlYWRlcnMsXG4gICAgICAgIHByb3h5OiBwcm9wcy5wcm94eSxcbiAgICAgICAgY3JlZGVudGlhbHM6IHByb3BzLmNyZWRlbnRpYWxzLFxuICAgICAgICBlbmNyeXB0aW9uOiBwcm9wcy5lbmNyeXB0aW9uLFxuICAgICAgICBiYWNrdXBSZXRlbnRpb246IHByb3BzLmJhY2t1cFJldGVudGlvbixcbiAgICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBwcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwsXG4gICAgICAgIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OiBwcm9wcy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyxcbiAgICAgICAgcG9ydDogcHJvcHMucG9ydCxcbiAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0czogcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyxcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24sXG4gICAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgICBzbmFwc2hvdFVzZXJuYW1lOiBwcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgYWRkUmRzSW5zdGFuY2UocHJvcHM6IEluc3RhbmNlRGF0YWJhc2VQcm9wcykge1xuICAgIGlmICghcHJvcHMudnBjKSB0aHJvdyBuZXcgRXJyb3IoXCJWUEMgaXMgcmVxdWlyZWQgZm9yIEluc3RhbmNlIGRhdGFiYXNlXCIpO1xuXG4gICAgY29uc3QgcmVzb2x2ZWREYXRhYmFzZUVuZ2luZSA9IHByb3BzLmRhdGFiYXNlRW5naW5lID8/IFwicG9zdGdyZXNxbFwiO1xuICAgIGNvbnN0IHJlc29sdmVkRW5naW5lID1cbiAgICAgIHByb3BzLmVuZ2luZSA/PyBnZXRJbnN0YW5jZUVuZ2luZShyZXNvbHZlZERhdGFiYXNlRW5naW5lKTtcbiAgICBjb25zdCBlbmdpbmVDb25maWcgPSBnZXRFbmdpbmVDb25maWcocmVzb2x2ZWREYXRhYmFzZUVuZ2luZSk7XG5cbiAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0luc3RhbmNlKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUsXG4gICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgcG9ydDogcHJvcHMucG9ydCxcbiAgICAgIGVuZ2luZTogcmVzb2x2ZWRFbmdpbmUsXG4gICAgICBlbmdpbmVDb25maWcsXG4gICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6LFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0czogcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyxcbiAgICAgIHByb3h5OiBwcm9wcy5wcm94eSxcbiAgICAgIHJlYWRSZXBsaWNhOiBwcm9wcy5yZWFkUmVwbGljYSxcbiAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5jcmVkZW50aWFscyxcbiAgICAgIGVuY3J5cHRpb246IHByb3BzLmVuY3J5cHRpb24sXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uLFxuICAgICAgc25hcHNob3RJZGVudGlmaWVyOiBwcm9wcy5zbmFwc2hvdElkZW50aWZpZXIsXG4gICAgICBzbmFwc2hvdFVzZXJuYW1lOiBwcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgfSk7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuZGF0YWJhc2UuY29ubmVjdGlvbnM7XG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBTZWNyZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldENyZWRlbnRpYWxzKCk7XG4gIH1cblxuICBnZXRIb3N0RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRIb3N0RW5kcG9pbnQoKTtcbiAgfVxuXG4gIGdldEhvc3RQb3J0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0SG9zdFBvcnQoKTtcbiAgfVxuXG4gIGdldERhdGFiYXNlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlTmFtZTtcbiAgfVxufVxuIl19
@@ -60,10 +60,15 @@ class HostedZone extends constructs_1.Construct {
60
60
  aws_cdk_lib_1.Tags.of(this.importedHostedZone).add("fjall:costAllocation:environment", "management");
61
61
  aws_cdk_lib_1.Tags.of(this.importedHostedZone).add("fjall:costAllocation:service", "hostedZone");
62
62
  aws_cdk_lib_1.Tags.of(this.importedHostedZone).add("fjall:costAllocation:domain", zoneName);
63
+ // Make export name unique by including the stack name to avoid conflicts
64
+ // when multiple stacks import the same hosted zone
65
+ const stack = aws_cdk_lib_1.Stack.of(this);
66
+ const stackName = stack.stackName;
67
+ const exportName = `${stackName}${this.safeZoneName()}HostedZoneId`;
63
68
  new aws_cdk_lib_1.CfnOutput(this, `${this.safeZoneName()}HostedZoneId`, {
64
69
  key: `${this.safeZoneName()}HostedZoneId`,
65
70
  value: this.hostedZoneId,
66
- exportName: `${this.safeZoneName()}HostedZoneId`
71
+ exportName: exportName
67
72
  });
68
73
  }
69
74
  delegateHostedZone() {
@@ -142,4 +147,4 @@ class HostedZone extends constructs_1.Construct {
142
147
  }
143
148
  }
144
149
  exports.HostedZone = HostedZone;
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQW1FO0FBQ25FLGlEQUErQztBQUMvQyxpREFJNkI7QUFDN0IseURBYWlDO0FBS2pDLFNBQVMsZUFBZSxDQUFDLFFBQWdCO0lBQ3ZDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQU9ELE1BQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLFlBQW9CLEVBQUUsUUFBZ0I7UUFDbkUsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxZQUFZLEVBQUU7WUFDbkUsWUFBWSxFQUFFLFlBQVk7WUFDMUIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsOENBU0M7QUFFRCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQVF2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFB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LENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQWtDO1FBQzdDLElBQUksc0JBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLGlCQUFpQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3RFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQWtDO1FBQzdDLElBQUksc0JBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLGlCQUFpQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3RFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQW1DO1FBQy9DLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzdCLE9BQU8sRUFDTCxLQUFLLENBQUMsT0FBTyxJQUFJLGtCQUFrQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQ3ZFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwS0QsZ0NBb0tDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4sIFJlc291cmNlLCBTdGFjaywgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICB0eXBlIEFSZWNvcmRQcm9wcyxcbiAgQ25hbWVSZWNvcmQsXG4gIHR5cGUgQ25hbWVSZWNvcmRQcm9wcyxcbiAgSG9zdGVkWm9uZSBhcyBBV1NIb3N0ZWRab25lLFxuICB0eXBlIElIb3N0ZWRab25lLFxuICBNeFJlY29yZCxcbiAgdHlwZSBNeFJlY29yZFByb3BzLFxuICBOc1JlY29yZCxcbiAgdHlwZSBOc1JlY29yZFByb3BzLFxuICBUeHRSZWNvcmQsXG4gIHR5cGUgVHh0UmVjb3JkUHJvcHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHsgdHlwZSBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXNcIjtcblxuZnVuY3Rpb24gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHpvbmVOYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVQcm9wcyB7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIGhvc3RlZFpvbmVJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmVGYWN0b3J5IHtcbiAgc3RhdGljIGltcG9ydChzdGFjazogQXdzU3RhY2ssIGhvc3RlZFpvbmVJZDogc3RyaW5nLCB6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2FmZVpvbmVOYW1lID0gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgSG9zdGVkWm9uZShzdGFjay5nZXRTdGFjaygpLCBgJHtzYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgaW1wb3J0ZWRIb3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2NvcGU6IENvbnN0cnVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICAvLyBJZiBhIGhvc3RlZFpvbmVJZCBpcyBwcm92aWRlZCBpbXBvcnQgaXQsIHVubGVzcyBjcmVhdGUgYSBuZXcgaG9zdGVkIHpvbmVcbiAgICBpZiAoIXByb3BzLmhvc3RlZFpvbmVJZCkge1xuICAgICAgdGhpcy5hZGRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gdGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZDtcbiAgICAgIHRoaXMuZGVsZWdhdGVIb3N0ZWRab25lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5pbXBvcnRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnRlcm5hbEhvc3RlZFpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdGVkWm9uZSB8fCB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZTtcbiAgfVxuXG4gIHNhZmVab25lTmFtZSgpIHtcbiAgICByZXR1cm4gZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpO1xuICB9XG5cbiAgYWRkSG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ob3N0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7dGhpcy5zYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiB6b25lTmFtZSxcbiAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3pvbmVOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaW1wb3J0SG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUgPSBBV1NIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgIC8vIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzIGV4cGxpY2l0bHkgbXVzdCBiZSBwYXNzZWQgYSBzdGFjayBhcyBwYXJlbnQgc2NvcGVcbiAgICAgIHRoaXMuc2NvcGUsXG5cbiAgICAgIC8vIFVzZSBzYWZlWm9uZU5hbWUgaW4gdGhlIGlkIHNvIHdlIGNhbiB0aGVvcmV0aWNhbGx5XG4gICAgICAvLyAgaW1wb3J0IG11bHRpcGxlIGhvc3RlZCB6b25lcyBpbiBhIHNpbmdsZSBhcHBcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiB0aGlzLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgICB9XG4gICAgKTtcblxuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgIFwibWFuYWdlbWVudFwiXG4gICAgKTtcbiAgICBUYWdzLm9mKHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lKS5hZGQoXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIixcbiAgICAgIFwiaG9zdGVkWm9uZVwiXG4gICAgKTtcbiAgICBUYWdzLm9mKHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lKS5hZGQoXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmRvbWFpblwiLFxuICAgICAgem9uZU5hbWVcbiAgICApO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHt0aGlzLnNhZmVab25lTmFtZSgpfUhvc3RlZFpvbmVJZGAsIHtcbiAgICAgIGtleTogYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1Ib3N0ZWRab25lSWRgLFxuICAgICAgdmFsdWU6IHRoaXMuaG9zdGVkWm9uZUlkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7dGhpcy5zYWZlWm9uZU5hbWUoKX1Ib3N0ZWRab25lSWRgXG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMuaG9zdGVkWm9uZS56b25lTmFtZS5zcGxpdChcIi5cIiwgMSk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IE9yZ2FuaXphdGlvblByaW5jaXBhbChGbi5pbXBvcnRWYWx1ZShcIk9yZ2FuaXNhdGlvbklkXCIpKSxcbiAgICAgIHJvbGVOYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCxcbiAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgQ05BTUUgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE14KHByb3BzOiBPbWl0PE14UmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBNeFJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgem9uZTogdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBNWCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROUyhwcm9wczogT21pdDxOc1JlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTnNSZWNvcmQodGhpcywgYGAsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIGBgLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYFRYVCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxufVxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkWm9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvaG9zdGVkWm9uZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQW1FO0FBQ25FLGlEQUErQztBQUMvQyxpREFJNkI7QUFDN0IseURBYWlDO0FBS2pDLFNBQVMsZUFBZSxDQUFDLFFBQWdCO0lBQ3ZDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQU9ELE1BQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLFlBQW9CLEVBQUUsUUFBZ0I7UUFDbkUsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxZQUFZLEVBQUU7WUFDbkUsWUFBWSxFQUFFLFlBQVk7WUFDMUIsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBVEQsOENBU0M7QUFFRCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQVF2QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFB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QUNwQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUExS0QsZ0NBMEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4sIFJlc291cmNlLCBTdGFjaywgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbVwiO1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uUHJpbmNpcGFsLFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBUmVjb3JkLFxuICB0eXBlIEFSZWNvcmRQcm9wcyxcbiAgQ25hbWVSZWNvcmQsXG4gIHR5cGUgQ25hbWVSZWNvcmRQcm9wcyxcbiAgSG9zdGVkWm9uZSBhcyBBV1NIb3N0ZWRab25lLFxuICB0eXBlIElIb3N0ZWRab25lLFxuICBNeFJlY29yZCxcbiAgdHlwZSBNeFJlY29yZFByb3BzLFxuICBOc1JlY29yZCxcbiAgdHlwZSBOc1JlY29yZFByb3BzLFxuICBUeHRSZWNvcmQsXG4gIHR5cGUgVHh0UmVjb3JkUHJvcHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHsgdHlwZSBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXNcIjtcblxuZnVuY3Rpb24gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHpvbmVOYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvc3RlZFpvbmVQcm9wcyB7XG4gIHpvbmVOYW1lOiBzdHJpbmc7XG4gIGhvc3RlZFpvbmVJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmVGYWN0b3J5IHtcbiAgc3RhdGljIGltcG9ydChzdGFjazogQXdzU3RhY2ssIGhvc3RlZFpvbmVJZDogc3RyaW5nLCB6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2FmZVpvbmVOYW1lID0gZ2V0U2FmZVpvbmVOYW1lKHpvbmVOYW1lKTtcblxuICAgIHJldHVybiBuZXcgSG9zdGVkWm9uZShzdGFjay5nZXRTdGFjaygpLCBgJHtzYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogaG9zdGVkWm9uZUlkLFxuICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RlZFpvbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGhvc3RlZFpvbmU6IEFXU0hvc3RlZFpvbmU7XG4gIHByaXZhdGUgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgaW1wb3J0ZWRIb3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2NvcGU6IENvbnN0cnVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSG9zdGVkWm9uZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICAvLyBJZiBhIGhvc3RlZFpvbmVJZCBpcyBwcm92aWRlZCBpbXBvcnQgaXQsIHVubGVzcyBjcmVhdGUgYSBuZXcgaG9zdGVkIHpvbmVcbiAgICBpZiAoIXByb3BzLmhvc3RlZFpvbmVJZCkge1xuICAgICAgdGhpcy5hZGRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gdGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZDtcbiAgICAgIHRoaXMuZGVsZWdhdGVIb3N0ZWRab25lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5pbXBvcnRIb3N0ZWRab25lKHByb3BzLnpvbmVOYW1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRJbnRlcm5hbEhvc3RlZFpvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdGVkWm9uZSB8fCB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZTtcbiAgfVxuXG4gIHNhZmVab25lTmFtZSgpIHtcbiAgICByZXR1cm4gZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpO1xuICB9XG5cbiAgYWRkSG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ob3N0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICB0aGlzLFxuICAgICAgYCR7dGhpcy5zYWZlWm9uZU5hbWV9SG9zdGVkWm9uZWAsXG4gICAgICB7XG4gICAgICAgIHpvbmVOYW1lOiB6b25lTmFtZSxcbiAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3pvbmVOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgaW1wb3J0SG9zdGVkWm9uZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUgPSBBV1NIb3N0ZWRab25lLmZyb21Ib3N0ZWRab25lQXR0cmlidXRlcyhcbiAgICAgIC8vIEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzIGV4cGxpY2l0bHkgbXVzdCBiZSBwYXNzZWQgYSBzdGFjayBhcyBwYXJlbnQgc2NvcGVcbiAgICAgIHRoaXMuc2NvcGUsXG5cbiAgICAgIC8vIFVzZSBzYWZlWm9uZU5hbWUgaW4gdGhlIGlkIHNvIHdlIGNhbiB0aGVvcmV0aWNhbGx5XG4gICAgICAvLyAgaW1wb3J0IG11bHRpcGxlIGhvc3RlZCB6b25lcyBpbiBhIHNpbmdsZSBhcHBcbiAgICAgIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiB0aGlzLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgem9uZU5hbWU6IHpvbmVOYW1lXG4gICAgICB9XG4gICAgKTtcblxuICAgIFRhZ3Mub2YodGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUpLmFkZChcbiAgICAgIFwiZmphbGw6Y29zdEFsbG9jYXRpb246ZW52aXJvbm1lbnRcIixcbiAgICAgIFwibWFuYWdlbWVudFwiXG4gICAgKTtcbiAgICBUYWdzLm9mKHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lKS5hZGQoXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIixcbiAgICAgIFwiaG9zdGVkWm9uZVwiXG4gICAgKTtcbiAgICBUYWdzLm9mKHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lKS5hZGQoXG4gICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOmRvbWFpblwiLFxuICAgICAgem9uZU5hbWVcbiAgICApO1xuXG4gICAgLy8gTWFrZSBleHBvcnQgbmFtZSB1bmlxdWUgYnkgaW5jbHVkaW5nIHRoZSBzdGFjayBuYW1lIHRvIGF2b2lkIGNvbmZsaWN0c1xuICAgIC8vIHdoZW4gbXVsdGlwbGUgc3RhY2tzIGltcG9ydCB0aGUgc2FtZSBob3N0ZWQgem9uZVxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3Qgc3RhY2tOYW1lID0gc3RhY2suc3RhY2tOYW1lO1xuICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBgJHtzdGFja05hbWV9JHt0aGlzLnNhZmVab25lTmFtZSgpfUhvc3RlZFpvbmVJZGA7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3RoaXMuc2FmZVpvbmVOYW1lKCl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBgJHt0aGlzLnNhZmVab25lTmFtZSgpfUhvc3RlZFpvbmVJZGAsXG4gICAgICB2YWx1ZTogdGhpcy5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBleHBvcnROYW1lXG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZUhvc3RlZFpvbmUoKSB7XG4gICAgY29uc3QgZG9tYWluTmFtZSA9IHRoaXMuaG9zdGVkWm9uZS56b25lTmFtZS5zcGxpdChcIi5cIiwgMSk7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke2RvbWFpbk5hbWV9RGVsZWdhdGVIb3N0ZWRab25lUm9sZWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IE9yZ2FuaXphdGlvblByaW5jaXBhbChGbi5pbXBvcnRWYWx1ZShcIk9yZ2FuaXNhdGlvbklkXCIpKSxcbiAgICAgIHJvbGVOYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7dGhpcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZH1gXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5ob3N0ZWRab25lLmdyYW50RGVsZWdhdGlvbihyb2xlKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJEZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogYCR7ZG9tYWluTmFtZX1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCxcbiAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtkb21haW5OYW1lfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVBcm5gXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkQVJlY29yZChwcm9wczogT21pdDxBUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwiQVJlY29yZFwiLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBBIFJlY29yZCBmb3IgJHt0aGlzLmltcG9ydGVkSG9zdGVkWm9uZS56b25lTmFtZX1gLFxuICAgICAgdGFyZ2V0OiBwcm9wcy50YXJnZXQsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENuYW1lKHByb3BzOiBPbWl0PENuYW1lUmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBDbmFtZVJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgQ05BTUUgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB0dGw6IHByb3BzLnR0bFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE14KHByb3BzOiBPbWl0PE14UmVjb3JkUHJvcHMsIFwiem9uZVwiPikge1xuICAgIG5ldyBNeFJlY29yZCh0aGlzLCBgYCwge1xuICAgICAgem9uZTogdGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUsXG4gICAgICBjb21tZW50OlxuICAgICAgICBwcm9wcy5jb21tZW50IHx8IGBNWCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROUyhwcm9wczogT21pdDxOc1JlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgTnNSZWNvcmQodGhpcywgYGAsIHtcbiAgICAgIHpvbmU6IHRoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLFxuICAgICAgY29tbWVudDpcbiAgICAgICAgcHJvcHMuY29tbWVudCB8fCBgTlMgUmVjb3JkIGZvciAke3RoaXMuaW1wb3J0ZWRIb3N0ZWRab25lLnpvbmVOYW1lfWAsXG4gICAgICB2YWx1ZXM6IHByb3BzLnZhbHVlcyxcbiAgICAgIHR0bDogcHJvcHMudHRsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVHh0KHByb3BzOiBPbWl0PFR4dFJlY29yZFByb3BzLCBcInpvbmVcIj4pIHtcbiAgICBuZXcgVHh0UmVjb3JkKHRoaXMsIGBgLCB7XG4gICAgICB6b25lOiB0aGlzLmltcG9ydGVkSG9zdGVkWm9uZSxcbiAgICAgIGNvbW1lbnQ6XG4gICAgICAgIHByb3BzLmNvbW1lbnQgfHwgYFRYVCBSZWNvcmQgZm9yICR7dGhpcy5pbXBvcnRlZEhvc3RlZFpvbmUuem9uZU5hbWV9YCxcbiAgICAgIHZhbHVlczogcHJvcHMudmFsdWVzLFxuICAgICAgdHRsOiBwcm9wcy50dGxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -26,6 +26,8 @@ interface RdsProps {
26
26
  deletionProtection?: boolean;
27
27
  /** ARN or identifier of DB cluster snapshot to restore from */
28
28
  snapshotIdentifier?: string;
29
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
30
+ snapshotUsername?: string;
29
31
  }
30
32
  export declare class RdsAurora extends Construct implements IConnectable {
31
33
  connections: Connections;
@@ -24,7 +24,10 @@ class RdsAurora extends constructs_1.Construct {
24
24
  const piConfig = piEnabled && typeof props.performanceInsights === "object"
25
25
  ? props.performanceInsights
26
26
  : undefined;
27
- const username = props.credentials?.username ?? this.engineConfig.defaultUsername;
27
+ // Username priority: snapshotUsername > credentials.username > engine default
28
+ const username = props.snapshotIdentifier && props.snapshotUsername
29
+ ? props.snapshotUsername
30
+ : (props.credentials?.username ?? this.engineConfig.defaultUsername);
28
31
  // Global secondary clusters import replicated secret instead of creating new
29
32
  if (props.isGlobalSecondary) {
30
33
  this.databaseCredentials = new secrets_1.Secret(this, `${props.databaseName}Credentials`, {
@@ -265,4 +268,4 @@ class RdsAurora extends constructs_1.Construct {
265
268
  }
266
269
  }
267
270
  exports.RdsAurora = RdsAurora;
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRTtBQUNqRSxpREFNNkI7QUFDN0IsaURBZ0I2QjtBQUM3Qix1RUFHd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLGdDQUF1QztBQUN2Qyx3Q0FBd0Q7QUFDeEQsa0VBQStEO0FBQy9ELDZEQVd3QztBQTBCeEMsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFVdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFlO1FBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUVoQyw4RUFBOEU7UUFDOUUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJO1lBQ3hDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDdkMsZUFBZSxFQUFFLDhDQUE4QztTQUNoRSxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixLQUFLLEtBQUssQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FDWixTQUFTLElBQUksT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUTtZQUN4RCxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCLE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBRW5FLDZFQUE2RTtRQUM3RSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FB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YztRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFTyw4QkFBOEIsQ0FDcEMsSUFBYTtRQUViLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLENBQUM7Z0JBQ0osT0FBTyxxQ0FBMkIsQ0FBQyxPQUFPLENBQUM7WUFDN0MsS0FBSyxFQUFFO2dCQUNMLE9BQU8scUNBQTJCLENBQUMsUUFBUSxDQUFDO1lBQzlDLEtBQUssRUFBRTtnQkFDTCxPQUFPLHFDQUEyQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxxQ0FBMkIsQ0FBQyxRQUFRLENBQUM7WUFDOUMsS0FBSyxHQUFHO2dCQUNOLE9BQU8scUNBQTJCLENBQUMsU0FBUyxDQUFDO1lBQy9DLEtBQUssR0FBRztnQkFDTixPQUFPLHFDQUEyQixDQUFDLFNBQVMsQ0FBQztZQUMvQztnQkFDRSxPQUFPLHFDQUEyQixDQUFDLFFBQVEsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBeFhELDhCQXdYQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgdHlwZSBJVnBjLFxuICBQb3J0LFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24sXG4gIENhQ2VydGlmaWNhdGUsXG4gIENsdXN0ZXJJbnN0YW5jZSxcbiAgQ3JlZGVudGlhbHMsXG4gIERhdGFiYXNlQ2x1c3RlcixcbiAgRGF0YWJhc2VDbHVzdGVyRnJvbVNuYXBzaG90LFxuICBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUsXG4gIHR5cGUgQ2ZuREJDbHVzdGVyLFxuICBEYXRhYmFzZVByb3h5LFxuICB0eXBlIElDbHVzdGVyRW5naW5lLFxuICB0eXBlIElDbHVzdGVySW5zdGFuY2UsXG4gIFBhcmFtZXRlckdyb3VwLFxuICBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24sXG4gIFByb3h5VGFyZ2V0LFxuICBTbmFwc2hvdENyZWRlbnRpYWxzXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCI7XG5pbXBvcnQge1xuICBTZWNyZXRSb3RhdGlvbixcbiAgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSwgU2VjcmV0IH0gZnJvbSBcIi4uL3NlY3JldHNcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5pbXBvcnQge1xuICB0eXBlIEVuZ2luZUNvbmZpZyxcbiAgdHlwZSBQcm94eUNvbmZpZyxcbiAgdHlwZSBDcmVkZW50aWFsc0NvbmZpZyxcbiAgdHlwZSBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICB0eXBlIEF1cm9yYVdyaXRlckNvbmZpZyxcbiAgdHlwZSBBdXJvcmFSZWFkZXJzQ29uZmlnLFxuICB0eXBlIEF1cm9yYVJlYWRlckNvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnLFxuICBpc0F3c01hbmFnZWRLZXksXG4gIGlzQ01LUmVxdWVzdGVkXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcblxuaW50ZXJmYWNlIFJkc1Byb3BzIHtcbiAgdnBjOiBJVnBjO1xuICBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIGNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgZW5jcnlwdGlvbj86IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG4gIGJhY2t1cFJldGVudGlvbj86IG51bWJlcjtcbiAgbW9uaXRvcmluZ0ludGVydmFsPzogRHVyYXRpb247XG4gIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICAvKiogU2tpcHMgc2VjcmV0IHJvdGF0aW9uIGZvciBzZWNvbmRhcnkgY2x1c3RlcnMgaW4gZ2xvYmFsIGRhdGFiYXNlICovXG4gIGlzR2xvYmFsU2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgc2VjcmV0UmVwbGljYVJlZ2lvbnM/OiBzdHJpbmdbXTtcbiAgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGNsdXN0ZXIgc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJkc0F1cm9yYSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSBwb3J0OiBudW1iZXI7XG4gIHByaXZhdGUgZW5naW5lQ29uZmlnOiBFbmdpbmVDb25maWc7XG4gIHByaXZhdGUgZGF0YWJhc2VDbHVzdGVyOiBEYXRhYmFzZUNsdXN0ZXI7XG4gIHByaXZhdGUgZGF0YWJhc2VQcm94eT86IERhdGFiYXNlUHJveHk7XG4gIHByaXZhdGUgZGF0YWJhc2VDcmVkZW50aWFsczogU2VjcmV0O1xuICBwcml2YXRlIGNmbkNsdXN0ZXI/OiBDZm5EQkNsdXN0ZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucG9ydCA9IHByb3BzLnBvcnQgPz8gMzUyNTU7XG5cbiAgICAvLyBQb3N0Z3JlU1FMIGZhbGxiYWNrIGZvciBkaXJlY3QgdXNhZ2UgLSBlbnN1cmUgZW5naW5lIGFuZCBlbmdpbmVDb25maWcgbWF0Y2hcbiAgICB0aGlzLmVuZ2luZUNvbmZpZyA9IHByb3BzLmVuZ2luZUNvbmZpZyA/PyB7XG4gICAgICBkZWZhdWx0VXNlcm5hbWU6IFwicG9zdGdyZXNcIixcbiAgICAgIHNzbFBhcmFtZXRlcnM6IHsgXCJyZHMuZm9yY2Vfc3NsXCI6IFwiMVwiIH0sXG4gICAgICByb3RhdGlvbkFwcE5hbWU6IFwiU2VjcmV0c01hbmFnZXJSRFNQb3N0Z3JlU1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICAgIH07XG5cbiAgICBjb25zdCBwaUVuYWJsZWQgPSBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzICE9PSBmYWxzZTtcbiAgICBjb25zdCBwaUNvbmZpZyA9XG4gICAgICBwaUVuYWJsZWQgJiYgdHlwZW9mIHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgdXNlcm5hbWUgPVxuICAgICAgcHJvcHMuY3JlZGVudGlhbHM/LnVzZXJuYW1lID8/IHRoaXMuZW5naW5lQ29uZmlnLmRlZmF1bHRVc2VybmFtZTtcblxuICAgIC8vIEdsb2JhbCBzZWNvbmRhcnkgY2x1c3RlcnMgaW1wb3J0IHJlcGxpY2F0ZWQgc2VjcmV0IGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3XG4gICAgaWYgKHByb3BzLmlzR2xvYmFsU2Vjb25kYXJ5KSB7XG4gICAgICB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMgPSBuZXcgU2VjcmV0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAgICB7XG4gICAgICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgICAgICBpbXBvcnRFeGlzdGluZzogdHJ1ZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMgPSBuZXcgU2VjcmV0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAgICB7XG4gICAgICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHsgdXNlcm5hbWUgfSksXG4gICAgICAgICAgICBleGNsdWRlUHVuY3R1YXRpb246IHRydWUsXG4gICAgICAgICAgICBpbmNsdWRlU3BhY2U6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwbGljYVJlZ2lvbnM6IHByb3BzLnNlY3JldFJlcGxpY2FSZWdpb25zXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmFnZUVuY3J5cHRpb25LZXkgPSBpc0NNS1JlcXVlc3RlZChwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5KVxuICAgICAgPyBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNsdXN0ZXJFbmNyeXB0aW9uS2V5YCxcbiAgICAgICAgICB7IGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L2VuY3J5cHRpb25LZXlgIH1cbiAgICAgICAgKS5rZXlcbiAgICAgIDogaXNBd3NNYW5hZ2VkS2V5KHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkpIHx8XG4gICAgICAgICAgcHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdW5kZWZpbmVkIC8vIEFXUyBNYW5hZ2VkIChkZWZhdWx0KVxuICAgICAgICA6IHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXk7IC8vIFVzZSBwcm92aWRlZCBJS2V5XG5cbiAgICBjb25zdCBwZXJmb3JtYW5jZUluc2lnaHRzS2V5ID1cbiAgICAgIHBpRW5hYmxlZCAmJiBpc0NNS1JlcXVlc3RlZChwaUNvbmZpZz8uZW5jcnlwdGlvbktleSlcbiAgICAgICAgPyBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1QZXJmb3JtYW5jZUluc2lnaHRzS2V5YCxcbiAgICAgICAgICAgIHsgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRhdGFiYXNlTmFtZX0vSW5zaWdodHNLZXlgIH1cbiAgICAgICAgICApLmtleVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNsdXN0ZXJTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgYCR7aWR9U2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgQXVyb3JhIGNsdXN0ZXIgJHtwcm9wcy5kYXRhYmFzZU5hbWV9YFxuICAgIH0pO1xuXG4gICAgY2x1c3RlclNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICBjbHVzdGVyU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydClcbiAgICApO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICBzZWN1cml0eUdyb3VwczogW2NsdXN0ZXJTZWN1cml0eUdyb3VwXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBQb3J0LnRjcCh0aGlzLnBvcnQpXG4gICAgfSk7XG5cbiAgICBjb25zdCB3cml0ZXJDb25maWcgPSBwcm9wcy53cml0ZXIgPz8ge307XG4gICAgY29uc3Qgd3JpdGVyUEkgPSB3cml0ZXJDb25maWcuZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0cyA/PyBwaUVuYWJsZWQ7XG4gICAgY29uc3Qgd3JpdGVyU3VmZml4ID0gd3JpdGVyQ29uZmlnLmlkZW50aWZpZXJTdWZmaXggPz8gXCJwcmltYXJ5LXdyaXRlclwiO1xuICAgIGNvbnN0IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb24gPSB0aGlzLmdldFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbihcbiAgICAgIHBpQ29uZmlnPy5yZXRlbnRpb25QZXJpb2QgPz8gN1xuICAgICk7XG4gICAgY29uc3QgZGF0YWJhc2VOYW1lID0gcHJvcHMuZGF0YWJhc2VOYW1lIHx8IGlkO1xuXG4gICAgY29uc3Qgd3JpdGVyID0gQ2x1c3Rlckluc3RhbmNlLnNlcnZlcmxlc3NWMihgJHtkYXRhYmFzZU5hbWV9V3JpdGVyYCwge1xuICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogd3JpdGVyUEksXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OiB3cml0ZXJQSVxuICAgICAgICA/IHBlcmZvcm1hbmNlSW5zaWdodHNLZXlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb246IHdyaXRlclBJXG4gICAgICAgID8gcGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcud3JpdGVySW5zdGFuY2VJZChcbiAgICAgICAgZGF0YWJhc2VOYW1lLFxuICAgICAgICB3cml0ZXJTdWZmaXhcbiAgICAgICksXG4gICAgICBjYUNlcnRpZmljYXRlOiBDYUNlcnRpZmljYXRlLlJEU19DQV9SU0E0MDk2X0cxLFxuICAgICAgLi4uKHdyaXRlckNvbmZpZy5hdmFpbGFiaWxpdHlab25lICYmIHtcbiAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogd3JpdGVyQ29uZmlnLmF2YWlsYWJpbGl0eVpvbmVcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICBjb25zdCByZWFkZXJzID0gdGhpcy5idWlsZFJlYWRlcnMoXG4gICAgICBwcm9wcyxcbiAgICAgIHBpRW5hYmxlZCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodHNLZXksXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IGVuZ2luZSA9XG4gICAgICBwcm9wcy5lbmdpbmUgfHxcbiAgICAgIERhdGFiYXNlQ2x1c3RlckVuZ2luZS5hdXJvcmFQb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbi5vZihcIjE2LjZcIiwgXCIxNlwiKVxuICAgICAgfSk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJHcm91cCA9IG5ldyBQYXJhbWV0ZXJHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UGFyYW1ldGVyR3JvdXBgLFxuICAgICAge1xuICAgICAgICBlbmdpbmUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGFyYW1ldGVyIGdyb3VwIGZvciAke3Byb3BzLmRhdGFiYXNlTmFtZX0gd2l0aCBzZWN1cml0eSBkZWZhdWx0c2AsXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMuZW5naW5lQ29uZmlnLnNzbFBhcmFtZXRlcnNcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZGJDbHVzdGVyUHJvcHM6IGFueSA9IHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbY2x1c3RlclNlY3VyaXR5R3JvdXBdLFxuICAgICAgZW5naW5lLFxuICAgICAgcGFyYW1ldGVyR3JvdXAsXG4gICAgICBiYWNrdXA6IHsgcmV0ZW50aW9uOiBEdXJhdGlvbi5kYXlzKHByb3BzLmJhY2t1cFJldGVudGlvbiA/PyAxNCkgfSxcbiAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHRydWUsXG4gICAgICAuLi4oc3RvcmFnZUVuY3J5cHRpb25LZXkgJiYgeyBzdG9yYWdlRW5jcnlwdGlvbktleSB9KSxcbiAgICAgIGNsdXN0ZXJJZGVudGlmaWVyOlxuICAgICAgICBwcm9wcy5jbHVzdGVySWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICBSZXNvdXJjZU5hbWluZy5jbHVzdGVySWQocHJvcHMuZGF0YWJhc2VOYW1lIHx8IGlkKSxcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsIHx8IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzpcbiAgICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgfHwgXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCIsXG4gICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlNOQVBTSE9ULFxuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24gPz8gdHJ1ZSxcbiAgICAgIGlhbUF1dGhlbnRpY2F0aW9uOiB0cnVlLFxuICAgICAgd3JpdGVyLFxuICAgICAgcmVhZGVyc1xuICAgIH07XG5cbiAgICBpZiAoIXByb3BzLmlzR2xvYmFsU2Vjb25kYXJ5KSB7XG4gICAgICBkYkNsdXN0ZXJQcm9wcy5jcmVkZW50aWFscyA9IENyZWRlbnRpYWxzLmZyb21TZWNyZXQoXG4gICAgICAgIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXRcbiAgICAgICk7XG4gICAgICBkYkNsdXN0ZXJQcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lID1cbiAgICAgICAgcHJvcHMuZGF0YWJhc2VOYW1lIHx8IGAke2lkLnJlcGxhY2UoXCJSZHNcIiwgXCJcIil9YDtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc25hcHNob3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBDcmVhdGUgZnJvbSBzbmFwc2hvdFxuICAgICAgY29uc3Qgc25hcHNob3RQcm9wcyA9IHtcbiAgICAgICAgLi4uZGJDbHVzdGVyUHJvcHMsXG4gICAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyXG4gICAgICB9O1xuXG4gICAgICAvLyBGb3Igc25hcHNob3RzLCBvdmVycmlkZSBjcmVkZW50aWFscyBpZiBub3QgYSBnbG9iYWwgc2Vjb25kYXJ5XG4gICAgICBpZiAoIXByb3BzLmlzR2xvYmFsU2Vjb25kYXJ5KSB7XG4gICAgICAgIHNuYXBzaG90UHJvcHMuY3JlZGVudGlhbHMgPSBTbmFwc2hvdENyZWRlbnRpYWxzLmZyb21TZWNyZXQoXG4gICAgICAgICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFiYXNlQ2x1c3RlciA9IG5ldyBEYXRhYmFzZUNsdXN0ZXJGcm9tU25hcHNob3QoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2lkfURhdGFiYXNlYCxcbiAgICAgICAgc25hcHNob3RQcm9wc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBjbHVzdGVyXG4gICAgICB0aGlzLmRhdGFiYXNlQ2x1c3RlciA9IG5ldyBEYXRhYmFzZUNsdXN0ZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2lkfURhdGFiYXNlYCxcbiAgICAgICAgZGJDbHVzdGVyUHJvcHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jZm5DbHVzdGVyID0gdGhpcy5kYXRhYmFzZUNsdXN0ZXIubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuREJDbHVzdGVyO1xuXG4gICAgLy8gR2xvYmFsIHNlY29uZGFyeSBjbHVzdGVycyBjYW4ndCBzcGVjaWZ5IHRoZXNlIHByb3BlcnRpZXNcbiAgICBpZiAocHJvcHMuaXNHbG9iYWxTZWNvbmRhcnkgJiYgdGhpcy5jZm5DbHVzdGVyKSB7XG4gICAgICB0aGlzLmNmbkNsdXN0ZXIubWFzdGVyVXNlcm5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNmbkNsdXN0ZXIubWFzdGVyVXNlclBhc3N3b3JkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jZm5DbHVzdGVyLmRhdGFiYXNlTmFtZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBwcm94eUVuYWJsZWQgPSBwcm9wcy5wcm94eSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnByb3h5ICE9PSBmYWxzZTtcbiAgICBpZiAocHJveHlFbmFibGVkKSB7XG4gICAgICB0aGlzLmFkZFByb3h5KHByb3BzLCBjbHVzdGVyU2VjdXJpdHlHcm91cCk7XG4gICAgfVxuXG4gICAgLy8gU2VjcmV0IHJvdGF0aW9uIGVuYWJsZWQgYnkgZGVmYXVsdCAob3B0LW91dCB3aXRoIHNlY3JldFJvdGF0aW9uOiBmYWxzZSlcbiAgICBpZiAoIXByb3BzLmlzR2xvYmFsU2Vjb25kYXJ5KSB7XG4gICAgICBjb25zdCBzZWNyZXRSb3RhdGlvbkRpc2FibGVkID1cbiAgICAgICAgcHJvcHMuY3JlZGVudGlhbHM/LnNlY3JldFJvdGF0aW9uID09PSBmYWxzZTtcbiAgICAgIGlmICghc2VjcmV0Um90YXRpb25EaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmFkZFNlY3JldFJvdGF0aW9uKHByb3BzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUmVhZGVycyhcbiAgICBwcm9wczogUmRzUHJvcHMsXG4gICAgZGVmYXVsdFBJRW5hYmxlZDogYm9vbGVhbixcbiAgICBwaUtleT86IGFueSxcbiAgICBwaVJldGVudGlvbj86IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvblxuICApOiBJQ2x1c3Rlckluc3RhbmNlW10ge1xuICAgIGlmIChwcm9wcy5yZWFkZXJzID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGxldCByZWFkZXJDb25maWdzOiBBdXJvcmFSZWFkZXJDb25maWdbXTtcbiAgICBpZiAocHJvcHMucmVhZGVycz8uaW5zdGFuY2VzKSB7XG4gICAgICByZWFkZXJDb25maWdzID0gcHJvcHMucmVhZGVycy5pbnN0YW5jZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvdW50ID0gcHJvcHMucmVhZGVycz8uY291bnQgPz8gMTtcbiAgICAgIHJlYWRlckNvbmZpZ3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb3VudCB9LCAoXywgaSkgPT4gKHtcbiAgICAgICAgc2NhbGVXaXRoV3JpdGVyOiBpID09PSAwXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFBJID1cbiAgICAgIHByb3BzLnJlYWRlcnMgJiYgXCJkZWZhdWx0RW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0c1wiIGluIHByb3BzLnJlYWRlcnNcbiAgICAgICAgPyAocHJvcHMucmVhZGVycy5kZWZhdWx0RW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0cyA/PyBkZWZhdWx0UElFbmFibGVkKVxuICAgICAgICA6IGRlZmF1bHRQSUVuYWJsZWQ7XG5cbiAgICByZXR1cm4gcmVhZGVyQ29uZmlncy5tYXAoKGNvbmZpZywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGVuYWJsZVBJID0gY29uZmlnLmVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHMgPz8gZGVmYXVsdFBJO1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGNvbmZpZy5pZGVudGlmaWVyU3VmZml4ID8/IGByZWFkZXItJHtpbmRleCArIDF9YDtcblxuICAgICAgcmV0dXJuIENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoXG4gICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZWFkZXIke2luZGV4ICsgMX1gLFxuICAgICAgICB7XG4gICAgICAgICAgc2NhbGVXaXRoV3JpdGVyOiBjb25maWcuc2NhbGVXaXRoV3JpdGVyID8/IGluZGV4ID09PSAwLFxuICAgICAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IGVuYWJsZVBJLFxuICAgICAgICAgIHBlcmZvcm1hbmNlSW5zaWdodEVuY3J5cHRpb25LZXk6IGVuYWJsZVBJID8gcGlLZXkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uOiBlbmFibGVQSSA/IHBpUmV0ZW50aW9uIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcucmVhZGVySW5zdGFuY2VJZChcbiAgICAgICAgICAgIHByb3BzLmRhdGFiYXNlTmFtZSEsXG4gICAgICAgICAgICBpbmRleCArIDEsXG4gICAgICAgICAgICBjb25maWcuaWRlbnRpZmllclN1ZmZpeFxuICAgICAgICAgICksXG4gICAgICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMSxcbiAgICAgICAgICAuLi4oY29uZmlnLmF2YWlsYWJpbGl0eVpvbmUgJiYge1xuICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogY29uZmlnLmF2YWlsYWJpbGl0eVpvbmVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQcm94eShwcm9wczogUmRzUHJvcHMsIHNlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXApOiB2b2lkIHtcbiAgICBjb25zdCBwcm94eUNvbmZpZyA9IHByb3BzLnByb3h5IGFzIFByb3h5Q29uZmlnO1xuICAgIGNvbnN0IHZwY1N1Ym5ldHMgPSBwcm94eUNvbmZpZy52cGNTdWJuZXRzID8/IHtcbiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU1xuICAgIH07XG5cbiAgICB0aGlzLmRhdGFiYXNlUHJveHkgPSBuZXcgRGF0YWJhc2VQcm94eShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VQcm94eWAsXG4gICAgICB7XG4gICAgICAgIGRiUHJveHlOYW1lOiBSZXNvdXJjZU5hbWluZy5wcm94eU5hbWUocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICAgIHByb3h5VGFyZ2V0OiBQcm94eVRhcmdldC5mcm9tQ2x1c3Rlcih0aGlzLmRhdGFiYXNlQ2x1c3RlciksXG4gICAgICAgIHNlY3JldHM6IFt0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0XSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFtzZWN1cml0eUdyb3VwXSxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICAgIHJlcXVpcmVUTFM6IHByb3h5Q29uZmlnLnJlcXVpcmVUTFMgPz8gdHJ1ZSxcbiAgICAgICAgYm9ycm93VGltZW91dDogcHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXRcbiAgICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXQpXG4gICAgICAgICAgOiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICAgIG1heENvbm5lY3Rpb25zUGVyY2VudDogcHJveHlDb25maWcubWF4Q29ubmVjdGlvbnMsXG4gICAgICAgIG1heElkbGVDb25uZWN0aW9uc1BlcmNlbnQ6IHByb3h5Q29uZmlnLm1heElkbGVDb25uZWN0aW9uc1xuICAgICAgfVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50T3V0cHV0YCwge1xuICAgICAga2V5OiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICB2YWx1ZTogdGhpcy5kYXRhYmFzZVByb3h5LmVuZHBvaW50XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlY3JldFJvdGF0aW9uKHByb3BzOiBSZHNQcm9wcyk6IHZvaWQge1xuICAgIGNvbnN0IHJvdGF0aW9uQ29uZmlnID0gcHJvcHMuY3JlZGVudGlhbHM/LnNlY3JldFJvdGF0aW9uO1xuICAgIGNvbnN0IHJvdGF0aW9uUGVyaW9kID1cbiAgICAgICh0eXBlb2Ygcm90YXRpb25Db25maWcgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgcm90YXRpb25Db25maWc/LmF1dG9tYXRpY2FsbHlBZnRlcikgfHxcbiAgICAgIER1cmF0aW9uLmRheXMoMzApO1xuXG4gICAgY29uc3QgbWFzdGVyU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9TWFzdGVyU2VjcmV0YCwge1xuICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfU1hc3RlclNlY3JldGBcbiAgICB9KTtcblxuICAgIG5ldyBTZWNyZXRSb3RhdGlvbih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9U2VjcmV0Um90YXRpb25gLCB7XG4gICAgICBhcHBsaWNhdGlvbjogbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oXG4gICAgICAgIHRoaXMuZW5naW5lQ29uZmlnLnJvdGF0aW9uQXBwTmFtZSxcbiAgICAgICAgXCIxLjEuMzY3XCIsXG4gICAgICAgIHsgaXNNdWx0aVVzZXI6IHRydWUgfVxuICAgICAgKSxcbiAgICAgIHNlY3JldDogdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldCxcbiAgICAgIG1hc3RlclNlY3JldDogbWFzdGVyU2VjcmV0LnNlY3JldCxcbiAgICAgIHRhcmdldDogdGhpcy5kYXRhYmFzZUNsdXN0ZXIsXG4gICAgICB2cGM6IHRoaXMuZGF0YWJhc2VDbHVzdGVyLnZwYyxcbiAgICAgIGF1dG9tYXRpY2FsbHlBZnRlcjogcm90YXRpb25QZXJpb2RcbiAgICB9KTtcbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIC8vIFJldHVybiBwcm94eSBlbmRwb2ludCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjbHVzdGVyIGVuZHBvaW50XG4gICAgaWYgKHRoaXMuZGF0YWJhc2VQcm94eSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VQcm94eS5lbmRwb2ludDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VDbHVzdGVyLmNsdXN0ZXJFbmRwb2ludC5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldEhvc3RQb3J0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnBvcnQpO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzO1xuICB9XG5cbiAgZ2V0Q2ZuQ2x1c3RlcigpOiBDZm5EQkNsdXN0ZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNmbkNsdXN0ZXI7XG4gIH1cblxuICBnZXREYXRhYmFzZUNsdXN0ZXIoKTogRGF0YWJhc2VDbHVzdGVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZUNsdXN0ZXI7XG4gIH1cblxuICBwcml2YXRlIGdldFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbihcbiAgICBkYXlzPzogbnVtYmVyXG4gICk6IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbiB7XG4gICAgc3dpdGNoIChkYXlzKSB7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uREVGQVVMVDtcbiAgICAgIGNhc2UgMzE6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzE7XG4gICAgICBjYXNlIDkzOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18zO1xuICAgICAgY2FzZSAxODY6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzY7XG4gICAgICBjYXNlIDM3MjpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTI7XG4gICAgICBjYXNlIDczMTpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5MT05HX1RFUk07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xO1xuICAgIH1cbiAgfVxufVxuIl19
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFpRTtBQUNqRSxpREFNNkI7QUFDN0IsaURBZ0I2QjtBQUM3Qix1RUFHd0M7QUFDeEMsMkNBQXVDO0FBQ3ZDLGdDQUF1QztBQUN2Qyx3Q0FBd0Q7QUFDeEQsa0VBQStEO0FBQy9ELDZEQVd3QztBQTRCeEMsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFVdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFlO1FBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUVoQyw4RUFBOEU7UUFDOUUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJO1lBQ3hDLGVBQWUsRUFBRSxVQUFVO1lBQzNCLGFBQWEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUU7WUFDdkMsZUFBZSxFQUFFLDhDQUE4QztTQUNoRSxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixLQUFLLEtBQUssQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FDWixTQUFTLElBQUksT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUTtZQUN4RCxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCLDhFQUE4RTtRQUM5RSxNQUFNLFFBQVEsR0FDWixLQUFLLENBQUMsa0JBQWtCLElBQUksS0FBSyxDQUFDLGdCQUFnQjtZQUNoRCxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFF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LENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFTyw4QkFBOEIsQ0FDcEMsSUFBYTtRQUViLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLENBQUM7Z0JBQ0osT0FBTyxxQ0FBMkIsQ0FBQyxPQUFPLENBQUM7WUFDN0MsS0FBSyxFQUFFO2dCQUNMLE9BQU8scUNBQTJCLENBQUMsUUFBUSxDQUFDO1lBQzlDLEtBQUssRUFBRTtnQkFDTCxPQUFPLHFDQUEyQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxxQ0FBMkIsQ0FBQyxRQUFRLENBQUM7WUFDOUMsS0FBSyxHQUFHO2dCQUNOLE9BQU8scUNBQTJCLENBQUMsU0FBUyxDQUFDO1lBQy9DLEtBQUssR0FBRztnQkFDTixPQUFPLHFDQUEyQixDQUFDLFNBQVMsQ0FBQztZQUMvQztnQkFDRSxPQUFPLHFDQUEyQixDQUFDLFFBQVEsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBM1hELDhCQTJYQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgdHlwZSBJVnBjLFxuICBQb3J0LFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24sXG4gIENhQ2VydGlmaWNhdGUsXG4gIENsdXN0ZXJJbnN0YW5jZSxcbiAgQ3JlZGVudGlhbHMsXG4gIERhdGFiYXNlQ2x1c3RlcixcbiAgRGF0YWJhc2VDbHVzdGVyRnJvbVNuYXBzaG90LFxuICBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUsXG4gIHR5cGUgQ2ZuREJDbHVzdGVyLFxuICBEYXRhYmFzZVByb3h5LFxuICB0eXBlIElDbHVzdGVyRW5naW5lLFxuICB0eXBlIElDbHVzdGVySW5zdGFuY2UsXG4gIFBhcmFtZXRlckdyb3VwLFxuICBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24sXG4gIFByb3h5VGFyZ2V0LFxuICBTbmFwc2hvdENyZWRlbnRpYWxzXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCI7XG5pbXBvcnQge1xuICBTZWNyZXRSb3RhdGlvbixcbiAgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvblxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSwgU2VjcmV0IH0gZnJvbSBcIi4uL3NlY3JldHNcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5pbXBvcnQge1xuICB0eXBlIEVuZ2luZUNvbmZpZyxcbiAgdHlwZSBQcm94eUNvbmZpZyxcbiAgdHlwZSBDcmVkZW50aWFsc0NvbmZpZyxcbiAgdHlwZSBBdXJvcmFFbmNyeXB0aW9uQ29uZmlnLFxuICB0eXBlIEF1cm9yYVdyaXRlckNvbmZpZyxcbiAgdHlwZSBBdXJvcmFSZWFkZXJzQ29uZmlnLFxuICB0eXBlIEF1cm9yYVJlYWRlckNvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnLFxuICBpc0F3c01hbmFnZWRLZXksXG4gIGlzQ01LUmVxdWVzdGVkXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcblxuaW50ZXJmYWNlIFJkc1Byb3BzIHtcbiAgdnBjOiBJVnBjO1xuICBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIGNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICB3cml0ZXI/OiBBdXJvcmFXcml0ZXJDb25maWc7XG4gIHJlYWRlcnM/OiBBdXJvcmFSZWFkZXJzQ29uZmlnIHwgZmFsc2U7XG4gIHByb3h5PzogUHJveHlDb25maWcgfCBmYWxzZTtcbiAgY3JlZGVudGlhbHM/OiBDcmVkZW50aWFsc0NvbmZpZztcbiAgZW5jcnlwdGlvbj86IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG4gIGJhY2t1cFJldGVudGlvbj86IG51bWJlcjtcbiAgbW9uaXRvcmluZ0ludGVydmFsPzogRHVyYXRpb247XG4gIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICAvKiogU2tpcHMgc2VjcmV0IHJvdGF0aW9uIGZvciBzZWNvbmRhcnkgY2x1c3RlcnMgaW4gZ2xvYmFsIGRhdGFiYXNlICovXG4gIGlzR2xvYmFsU2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgc2VjcmV0UmVwbGljYVJlZ2lvbnM/OiBzdHJpbmdbXTtcbiAgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEFSTiBvciBpZGVudGlmaWVyIG9mIERCIGNsdXN0ZXIgc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqIFVzZXJuYW1lIGZyb20gdGhlIHNuYXBzaG90IChyZXF1aXJlZCB3aGVuIHJlc3RvcmluZyBmcm9tIHNuYXBzaG90IHRvIHJlc2V0IHBhc3N3b3JkKSAqL1xuICBzbmFwc2hvdFVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmRzQXVyb3JhIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIHBvcnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBlbmdpbmVDb25maWc6IEVuZ2luZUNvbmZpZztcbiAgcHJpdmF0ZSBkYXRhYmFzZUNsdXN0ZXI6IERhdGFiYXNlQ2x1c3RlcjtcbiAgcHJpdmF0ZSBkYXRhYmFzZVByb3h5PzogRGF0YWJhc2VQcm94eTtcbiAgcHJpdmF0ZSBkYXRhYmFzZUNyZWRlbnRpYWxzOiBTZWNyZXQ7XG4gIHByaXZhdGUgY2ZuQ2x1c3Rlcj86IENmbkRCQ2x1c3RlcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmRzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wb3J0ID0gcHJvcHMucG9ydCA/PyAzNTI1NTtcblxuICAgIC8vIFBvc3RncmVTUUwgZmFsbGJhY2sgZm9yIGRpcmVjdCB1c2FnZSAtIGVuc3VyZSBlbmdpbmUgYW5kIGVuZ2luZUNvbmZpZyBtYXRjaFxuICAgIHRoaXMuZW5naW5lQ29uZmlnID0gcHJvcHMuZW5naW5lQ29uZmlnID8/IHtcbiAgICAgIGRlZmF1bHRVc2VybmFtZTogXCJwb3N0Z3Jlc1wiLFxuICAgICAgc3NsUGFyYW1ldGVyczogeyBcInJkcy5mb3JjZV9zc2xcIjogXCIxXCIgfSxcbiAgICAgIHJvdGF0aW9uQXBwTmFtZTogXCJTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvbk11bHRpVXNlclwiXG4gICAgfTtcblxuICAgIGNvbnN0IHBpRW5hYmxlZCA9IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IHBpQ29uZmlnID1cbiAgICAgIHBpRW5hYmxlZCAmJiB0eXBlb2YgcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBVc2VybmFtZSBwcmlvcml0eTogc25hcHNob3RVc2VybmFtZSA+IGNyZWRlbnRpYWxzLnVzZXJuYW1lID4gZW5naW5lIGRlZmF1bHRcbiAgICBjb25zdCB1c2VybmFtZSA9XG4gICAgICBwcm9wcy5zbmFwc2hvdElkZW50aWZpZXIgJiYgcHJvcHMuc25hcHNob3RVc2VybmFtZVxuICAgICAgICA/IHByb3BzLnNuYXBzaG90VXNlcm5hbWVcbiAgICAgICAgOiAocHJvcHMuY3JlZGVudGlhbHM/LnVzZXJuYW1lID8/IHRoaXMuZW5naW5lQ29uZmlnLmRlZmF1bHRVc2VybmFtZSk7XG5cbiAgICAvLyBHbG9iYWwgc2Vjb25kYXJ5IGNsdXN0ZXJzIGltcG9ydCByZXBsaWNhdGVkIHNlY3JldCBpbnN0ZWFkIG9mIGNyZWF0aW5nIG5ld1xuICAgIGlmIChwcm9wcy5pc0dsb2JhbFNlY29uZGFyeSkge1xuICAgICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzID0gbmV3IFNlY3JldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLmRhdGFiYXNlTmFtZX1DcmVkZW50aWFsc2AsXG4gICAgICAgICAgaW1wb3J0RXhpc3Rpbmc6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzID0gbmV3IFNlY3JldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLmRhdGFiYXNlTmFtZX1DcmVkZW50aWFsc2AsXG4gICAgICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7IHVzZXJuYW1lIH0pLFxuICAgICAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaW5jbHVkZVNwYWNlOiBmYWxzZSxcbiAgICAgICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiBcInBhc3N3b3JkXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlcGxpY2FSZWdpb25zOiBwcm9wcy5zZWNyZXRSZXBsaWNhUmVnaW9uc1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JhZ2VFbmNyeXB0aW9uS2V5ID0gaXNDTUtSZXF1ZXN0ZWQocHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSlcbiAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1DbHVzdGVyRW5jcnlwdGlvbktleWAsXG4gICAgICAgICAgeyBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGF0YWJhc2VOYW1lfS9lbmNyeXB0aW9uS2V5YCB9XG4gICAgICAgICkua2V5XG4gICAgICA6IGlzQXdzTWFuYWdlZEtleShwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5KSB8fFxuICAgICAgICAgIHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZCAvLyBBV1MgTWFuYWdlZCAoZGVmYXVsdClcbiAgICAgICAgOiBwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5OyAvLyBVc2UgcHJvdmlkZWQgSUtleVxuXG4gICAgY29uc3QgcGVyZm9ybWFuY2VJbnNpZ2h0c0tleSA9XG4gICAgICBwaUVuYWJsZWQgJiYgaXNDTUtSZXF1ZXN0ZWQocGlDb25maWc/LmVuY3J5cHRpb25LZXkpXG4gICAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UGVyZm9ybWFuY2VJbnNpZ2h0c0tleWAsXG4gICAgICAgICAgICB7IGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L0luc2lnaHRzS2V5YCB9XG4gICAgICAgICAgKS5rZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjbHVzdGVyU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKHRoaXMsIGAke2lkfVNlY3VyaXR5R3JvdXBgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIEF1cm9yYSBjbHVzdGVyICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICB9KTtcblxuICAgIGNsdXN0ZXJTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgY2x1c3RlclNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcCh0aGlzLnBvcnQpXG4gICAgKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IFtjbHVzdGVyU2VjdXJpdHlHcm91cF0sXG4gICAgICBkZWZhdWx0UG9ydDogUG9ydC50Y3AodGhpcy5wb3J0KVxuICAgIH0pO1xuXG4gICAgY29uc3Qgd3JpdGVyQ29uZmlnID0gcHJvcHMud3JpdGVyID8/IHt9O1xuICAgIGNvbnN0IHdyaXRlclBJID0gd3JpdGVyQ29uZmlnLmVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHMgPz8gcGlFbmFibGVkO1xuICAgIGNvbnN0IHdyaXRlclN1ZmZpeCA9IHdyaXRlckNvbmZpZy5pZGVudGlmaWVyU3VmZml4ID8/IFwicHJpbWFyeS13cml0ZXJcIjtcbiAgICBjb25zdCBwZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uID0gdGhpcy5nZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24oXG4gICAgICBwaUNvbmZpZz8ucmV0ZW50aW9uUGVyaW9kID8/IDdcbiAgICApO1xuICAgIGNvbnN0IGRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZSB8fCBpZDtcblxuICAgIGNvbnN0IHdyaXRlciA9IENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoYCR7ZGF0YWJhc2VOYW1lfVdyaXRlcmAsIHtcbiAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IHdyaXRlclBJLFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogd3JpdGVyUElcbiAgICAgICAgPyBwZXJmb3JtYW5jZUluc2lnaHRzS2V5XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uOiB3cml0ZXJQSVxuICAgICAgICA/IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb25cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFJlc291cmNlTmFtaW5nLndyaXRlckluc3RhbmNlSWQoXG4gICAgICAgIGRhdGFiYXNlTmFtZSxcbiAgICAgICAgd3JpdGVyU3VmZml4XG4gICAgICApLFxuICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMSxcbiAgICAgIC4uLih3cml0ZXJDb25maWcuYXZhaWxhYmlsaXR5Wm9uZSAmJiB7XG4gICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHdyaXRlckNvbmZpZy5hdmFpbGFiaWxpdHlab25lXG4gICAgICB9KVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVhZGVycyA9IHRoaXMuYnVpbGRSZWFkZXJzKFxuICAgICAgcHJvcHMsXG4gICAgICBwaUVuYWJsZWQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzS2V5LFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0c1JldGVudGlvblxuICAgICk7XG5cbiAgICBjb25zdCBlbmdpbmUgPVxuICAgICAgcHJvcHMuZW5naW5lIHx8XG4gICAgICBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUuYXVyb3JhUG9zdGdyZXMoe1xuICAgICAgICB2ZXJzaW9uOiBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24ub2YoXCIxNi42XCIsIFwiMTZcIilcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgcGFyYW1ldGVyR3JvdXAgPSBuZXcgUGFyYW1ldGVyR3JvdXAoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVBhcmFtZXRlckdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgZW5naW5lLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFBhcmFtZXRlciBncm91cCBmb3IgJHtwcm9wcy5kYXRhYmFzZU5hbWV9IHdpdGggc2VjdXJpdHkgZGVmYXVsdHNgLFxuICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLmVuZ2luZUNvbmZpZy5zc2xQYXJhbWV0ZXJzXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGRiQ2x1c3RlclByb3BzOiBhbnkgPSB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHsgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTIH0sXG4gICAgICBzZWN1cml0eUdyb3VwczogW2NsdXN0ZXJTZWN1cml0eUdyb3VwXSxcbiAgICAgIGVuZ2luZSxcbiAgICAgIHBhcmFtZXRlckdyb3VwLFxuICAgICAgYmFja3VwOiB7IHJldGVudGlvbjogRHVyYXRpb24uZGF5cyhwcm9wcy5iYWNrdXBSZXRlbnRpb24gPz8gMTQpIH0sXG4gICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgLi4uKHN0b3JhZ2VFbmNyeXB0aW9uS2V5ICYmIHsgc3RvcmFnZUVuY3J5cHRpb25LZXkgfSksXG4gICAgICBjbHVzdGVySWRlbnRpZmllcjpcbiAgICAgICAgcHJvcHMuY2x1c3RlcklkZW50aWZpZXI/LnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgUmVzb3VyY2VOYW1pbmcuY2x1c3RlcklkKHByb3BzLmRhdGFiYXNlTmFtZSB8fCBpZCksXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHByb3BzLm1vbml0b3JpbmdJbnRlcnZhbCB8fCBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6XG4gICAgICAgIHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IHx8IFwiU2F0OjEyOjMwLVNhdDoyMDozMFwiLFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5TTkFQU0hPVCxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICBpYW1BdXRoZW50aWNhdGlvbjogdHJ1ZSxcbiAgICAgIHdyaXRlcixcbiAgICAgIHJlYWRlcnNcbiAgICB9O1xuXG4gICAgaWYgKCFwcm9wcy5pc0dsb2JhbFNlY29uZGFyeSkge1xuICAgICAgZGJDbHVzdGVyUHJvcHMuY3JlZGVudGlhbHMgPSBDcmVkZW50aWFscy5mcm9tU2VjcmV0KFxuICAgICAgICB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0XG4gICAgICApO1xuICAgICAgZGJDbHVzdGVyUHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZSA9XG4gICAgICAgIHByb3BzLmRhdGFiYXNlTmFtZSB8fCBgJHtpZC5yZXBsYWNlKFwiUmRzXCIsIFwiXCIpfWA7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNuYXBzaG90SWRlbnRpZmllcikge1xuICAgICAgLy8gQ3JlYXRlIGZyb20gc25hcHNob3RcbiAgICAgIGNvbnN0IHNuYXBzaG90UHJvcHMgPSB7XG4gICAgICAgIC4uLmRiQ2x1c3RlclByb3BzLFxuICAgICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHByb3BzLnNuYXBzaG90SWRlbnRpZmllclxuICAgICAgfTtcblxuICAgICAgLy8gRm9yIHNuYXBzaG90cywgb3ZlcnJpZGUgY3JlZGVudGlhbHMgaWYgbm90IGEgZ2xvYmFsIHNlY29uZGFyeVxuICAgICAgaWYgKCFwcm9wcy5pc0dsb2JhbFNlY29uZGFyeSkge1xuICAgICAgICBzbmFwc2hvdFByb3BzLmNyZWRlbnRpYWxzID0gU25hcHNob3RDcmVkZW50aWFscy5mcm9tU2VjcmV0KFxuICAgICAgICAgIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhYmFzZUNsdXN0ZXIgPSBuZXcgRGF0YWJhc2VDbHVzdGVyRnJvbVNuYXBzaG90KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtpZH1EYXRhYmFzZWAsXG4gICAgICAgIHNuYXBzaG90UHJvcHNcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBuZXcgY2x1c3RlclxuICAgICAgdGhpcy5kYXRhYmFzZUNsdXN0ZXIgPSBuZXcgRGF0YWJhc2VDbHVzdGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtpZH1EYXRhYmFzZWAsXG4gICAgICAgIGRiQ2x1c3RlclByb3BzXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY2ZuQ2x1c3RlciA9IHRoaXMuZGF0YWJhc2VDbHVzdGVyLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmbkRCQ2x1c3RlcjtcblxuICAgIC8vIEdsb2JhbCBzZWNvbmRhcnkgY2x1c3RlcnMgY2FuJ3Qgc3BlY2lmeSB0aGVzZSBwcm9wZXJ0aWVzXG4gICAgaWYgKHByb3BzLmlzR2xvYmFsU2Vjb25kYXJ5ICYmIHRoaXMuY2ZuQ2x1c3Rlcikge1xuICAgICAgdGhpcy5jZm5DbHVzdGVyLm1hc3RlclVzZXJuYW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5jZm5DbHVzdGVyLm1hc3RlclVzZXJQYXNzd29yZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuY2ZuQ2x1c3Rlci5kYXRhYmFzZU5hbWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcHJveHlFbmFibGVkID0gcHJvcHMucHJveHkgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5wcm94eSAhPT0gZmFsc2U7XG4gICAgaWYgKHByb3h5RW5hYmxlZCkge1xuICAgICAgdGhpcy5hZGRQcm94eShwcm9wcywgY2x1c3RlclNlY3VyaXR5R3JvdXApO1xuICAgIH1cblxuICAgIC8vIFNlY3JldCByb3RhdGlvbiBlbmFibGVkIGJ5IGRlZmF1bHQgKG9wdC1vdXQgd2l0aCBzZWNyZXRSb3RhdGlvbjogZmFsc2UpXG4gICAgaWYgKCFwcm9wcy5pc0dsb2JhbFNlY29uZGFyeSkge1xuICAgICAgY29uc3Qgc2VjcmV0Um90YXRpb25EaXNhYmxlZCA9XG4gICAgICAgIHByb3BzLmNyZWRlbnRpYWxzPy5zZWNyZXRSb3RhdGlvbiA9PT0gZmFsc2U7XG4gICAgICBpZiAoIXNlY3JldFJvdGF0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5hZGRTZWNyZXRSb3RhdGlvbihwcm9wcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlYWRlcnMoXG4gICAgcHJvcHM6IFJkc1Byb3BzLFxuICAgIGRlZmF1bHRQSUVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgcGlLZXk/OiBhbnksXG4gICAgcGlSZXRlbnRpb24/OiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb25cbiAgKTogSUNsdXN0ZXJJbnN0YW5jZVtdIHtcbiAgICBpZiAocHJvcHMucmVhZGVycyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgcmVhZGVyQ29uZmlnczogQXVyb3JhUmVhZGVyQ29uZmlnW107XG4gICAgaWYgKHByb3BzLnJlYWRlcnM/Lmluc3RhbmNlcykge1xuICAgICAgcmVhZGVyQ29uZmlncyA9IHByb3BzLnJlYWRlcnMuaW5zdGFuY2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb3VudCA9IHByb3BzLnJlYWRlcnM/LmNvdW50ID8/IDE7XG4gICAgICByZWFkZXJDb25maWdzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSwgKF8sIGkpID0+ICh7XG4gICAgICAgIHNjYWxlV2l0aFdyaXRlcjogaSA9PT0gMFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRQSSA9XG4gICAgICBwcm9wcy5yZWFkZXJzICYmIFwiZGVmYXVsdEVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHNcIiBpbiBwcm9wcy5yZWFkZXJzXG4gICAgICAgID8gKHByb3BzLnJlYWRlcnMuZGVmYXVsdEVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHMgPz8gZGVmYXVsdFBJRW5hYmxlZClcbiAgICAgICAgOiBkZWZhdWx0UElFbmFibGVkO1xuXG4gICAgcmV0dXJuIHJlYWRlckNvbmZpZ3MubWFwKChjb25maWcsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBlbmFibGVQSSA9IGNvbmZpZy5lbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzID8/IGRlZmF1bHRQSTtcbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBjb25maWcuaWRlbnRpZmllclN1ZmZpeCA/PyBgcmVhZGVyLSR7aW5kZXggKyAxfWA7XG5cbiAgICAgIHJldHVybiBDbHVzdGVySW5zdGFuY2Uuc2VydmVybGVzc1YyKFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZGVyJHtpbmRleCArIDF9YCxcbiAgICAgICAge1xuICAgICAgICAgIHNjYWxlV2l0aFdyaXRlcjogY29uZmlnLnNjYWxlV2l0aFdyaXRlciA/PyBpbmRleCA9PT0gMCxcbiAgICAgICAgICBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzOiBlbmFibGVQSSxcbiAgICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OiBlbmFibGVQSSA/IHBpS2V5IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogZW5hYmxlUEkgPyBwaVJldGVudGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFJlc291cmNlTmFtaW5nLnJlYWRlckluc3RhbmNlSWQoXG4gICAgICAgICAgICBwcm9wcy5kYXRhYmFzZU5hbWUhLFxuICAgICAgICAgICAgaW5kZXggKyAxLFxuICAgICAgICAgICAgY29uZmlnLmlkZW50aWZpZXJTdWZmaXhcbiAgICAgICAgICApLFxuICAgICAgICAgIGNhQ2VydGlmaWNhdGU6IENhQ2VydGlmaWNhdGUuUkRTX0NBX1JTQTQwOTZfRzEsXG4gICAgICAgICAgLi4uKGNvbmZpZy5hdmFpbGFiaWxpdHlab25lICYmIHtcbiAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGNvbmZpZy5hdmFpbGFiaWxpdHlab25lXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkUHJveHkocHJvcHM6IFJkc1Byb3BzLCBzZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwKTogdm9pZCB7XG4gICAgY29uc3QgcHJveHlDb25maWcgPSBwcm9wcy5wcm94eSBhcyBQcm94eUNvbmZpZztcbiAgICBjb25zdCB2cGNTdWJuZXRzID0gcHJveHlDb25maWcudnBjU3VibmV0cyA/PyB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhYmFzZVByb3h5ID0gbmV3IERhdGFiYXNlUHJveHkoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURhdGFiYXNlUHJveHlgLFxuICAgICAge1xuICAgICAgICBkYlByb3h5TmFtZTogUmVzb3VyY2VOYW1pbmcucHJveHlOYW1lKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgICBwcm94eVRhcmdldDogUHJveHlUYXJnZXQuZnJvbUNsdXN0ZXIodGhpcy5kYXRhYmFzZUNsdXN0ZXIpLFxuICAgICAgICBzZWNyZXRzOiBbdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldF0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbc2VjdXJpdHlHcm91cF0sXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICB2cGNTdWJuZXRzLFxuICAgICAgICByZXF1aXJlVExTOiBwcm94eUNvbmZpZy5yZXF1aXJlVExTID8/IHRydWUsXG4gICAgICAgIGJvcnJvd1RpbWVvdXQ6IHByb3h5Q29uZmlnLmNvbm5lY3Rpb25Cb3Jyb3dUaW1lb3V0XG4gICAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3h5Q29uZmlnLmNvbm5lY3Rpb25Cb3Jyb3dUaW1lb3V0KVxuICAgICAgICAgIDogRHVyYXRpb24uc2Vjb25kcygxMjApLFxuICAgICAgICBtYXhDb25uZWN0aW9uc1BlcmNlbnQ6IHByb3h5Q29uZmlnLm1heENvbm5lY3Rpb25zLFxuICAgICAgICBtYXhJZGxlQ29ubmVjdGlvbnNQZXJjZW50OiBwcm94eUNvbmZpZy5tYXhJZGxlQ29ubmVjdGlvbnNcbiAgICAgIH1cbiAgICApO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludE91dHB1dGAsIHtcbiAgICAgIGtleTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVByb3h5RW5kcG9pbnRgLFxuICAgICAgZXhwb3J0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVByb3h5RW5kcG9pbnRgLFxuICAgICAgdmFsdWU6IHRoaXMuZGF0YWJhc2VQcm94eS5lbmRwb2ludFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZWNyZXRSb3RhdGlvbihwcm9wczogUmRzUHJvcHMpOiB2b2lkIHtcbiAgICBjb25zdCByb3RhdGlvbkNvbmZpZyA9IHByb3BzLmNyZWRlbnRpYWxzPy5zZWNyZXRSb3RhdGlvbjtcbiAgICBjb25zdCByb3RhdGlvblBlcmlvZCA9XG4gICAgICAodHlwZW9mIHJvdGF0aW9uQ29uZmlnID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHJvdGF0aW9uQ29uZmlnPy5hdXRvbWF0aWNhbGx5QWZ0ZXIpIHx8XG4gICAgICBEdXJhdGlvbi5kYXlzKDMwKTtcblxuICAgIGNvbnN0IG1hc3RlclNlY3JldCA9IG5ldyBTZWNyZXQodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfU1hc3RlclNlY3JldGAsIHtcbiAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLmRhdGFiYXNlTmFtZX1NYXN0ZXJTZWNyZXRgXG4gICAgfSk7XG5cbiAgICBuZXcgU2VjcmV0Um90YXRpb24odGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVNlY3JldFJvdGF0aW9uYCwge1xuICAgICAgYXBwbGljYXRpb246IG5ldyBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uKFxuICAgICAgICB0aGlzLmVuZ2luZUNvbmZpZy5yb3RhdGlvbkFwcE5hbWUsXG4gICAgICAgIFwiMS4xLjM2N1wiLFxuICAgICAgICB7IGlzTXVsdGlVc2VyOiB0cnVlIH1cbiAgICAgICksXG4gICAgICBzZWNyZXQ6IHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXQsXG4gICAgICBtYXN0ZXJTZWNyZXQ6IG1hc3RlclNlY3JldC5zZWNyZXQsXG4gICAgICB0YXJnZXQ6IHRoaXMuZGF0YWJhc2VDbHVzdGVyLFxuICAgICAgdnBjOiB0aGlzLmRhdGFiYXNlQ2x1c3Rlci52cGMsXG4gICAgICBhdXRvbWF0aWNhbGx5QWZ0ZXI6IHJvdGF0aW9uUGVyaW9kXG4gICAgfSk7XG4gIH1cblxuICBnZXRIb3N0RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAvLyBSZXR1cm4gcHJveHkgZW5kcG9pbnQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY2x1c3RlciBlbmRwb2ludFxuICAgIGlmICh0aGlzLmRhdGFiYXNlUHJveHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlUHJveHkuZW5kcG9pbnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlQ2x1c3Rlci5jbHVzdGVyRW5kcG9pbnQuaG9zdG5hbWU7XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5wb3J0KTtcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IFNlY3JldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscztcbiAgfVxuXG4gIGdldENmbkNsdXN0ZXIoKTogQ2ZuREJDbHVzdGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jZm5DbHVzdGVyO1xuICB9XG5cbiAgZ2V0RGF0YWJhc2VDbHVzdGVyKCk6IERhdGFiYXNlQ2x1c3RlciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VDbHVzdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24oXG4gICAgZGF5cz86IG51bWJlclxuICApOiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ge1xuICAgIHN3aXRjaCAoZGF5cykge1xuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkRFRkFVTFQ7XG4gICAgICBjYXNlIDMxOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xO1xuICAgICAgY2FzZSA5MzpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMztcbiAgICAgIGNhc2UgMTg2OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU182O1xuICAgICAgY2FzZSAzNzI6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzEyO1xuICAgICAgY2FzZSA3MzE6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTE9OR19URVJNO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -47,6 +47,8 @@ interface RdsAuroraGlobalProps {
47
47
  deletionProtection?: boolean;
48
48
  /** ARN or identifier of DB cluster snapshot to restore from */
49
49
  snapshotIdentifier?: string;
50
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
51
+ snapshotUsername?: string;
50
52
  }
51
53
  export declare class RdsAuroraGlobal extends Construct implements IConnectable {
52
54
  connections: Connections;
@@ -112,7 +112,8 @@ class RdsAuroraGlobal extends constructs_1.Construct {
112
112
  port: this.props.port,
113
113
  performanceInsights: this.props.performanceInsights,
114
114
  deletionProtection: this.props.deletionProtection,
115
- snapshotIdentifier: this.props.snapshotIdentifier
115
+ snapshotIdentifier: this.props.snapshotIdentifier,
116
+ snapshotUsername: this.props.snapshotUsername
116
117
  };
117
118
  if (this.props.primaryRegion === this.currentRegion) {
118
119
  // primary
@@ -184,4 +185,4 @@ class RdsAuroraGlobal extends constructs_1.Construct {
184
185
  }
185
186
  }
186
187
  exports.RdsAuroraGlobal = RdsAuroraGlobal;
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhR2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhR2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE4RDtBQUM5RCxpREFBMEU7QUFDMUUsMkNBQXVDO0FBT3ZDLDJDQUF3QztBQVd4QyxrRUFBK0Q7QUFxRC9ELE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQVU1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVE7WUFDWCxLQUFLLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFO2dCQUM1QywrQkFBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUs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WCxJQUFJLEVBQ0osR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksK0JBQStCLEVBQ3pEO1lBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSx5QkFBeUI7U0FDaEUsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JFLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0RSxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEUsSUFBSSxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBNU5ELDBDQTROQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgdHlwZSBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENmbkdsb2JhbENsdXN0ZXIsIHR5cGUgQ2ZuREJDbHVzdGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICB0eXBlIElWcGMsXG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyB0eXBlIElDbHVzdGVyRW5naW5lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IFJkc0F1cm9yYSB9IGZyb20gXCIuL3Jkc0F1cm9yYVwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXQgfSBmcm9tIFwiLi4vc2VjcmV0c1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbmdpbmVDb25maWcsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgQXVyb3JhRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBBdXJvcmFXcml0ZXJDb25maWcsXG4gIHR5cGUgQXVyb3JhUmVhZGVyc0NvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5cbmludGVyZmFjZSBSZHNBdXJvcmFHbG9iYWxQcm9wcyB7XG4gIHZwYzogSVZwYztcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQcmltYXJ5IHJlZ2lvbiB3aGVyZSB0aGUgaW5pdGlhbCBjbHVzdGVyICYgZ2xvYmFsIGNsdXN0ZXIgcmVzb3VyY2UgYXJlIGNyZWF0ZWQgKi9cbiAgcHJpbWFyeVJlZ2lvbjogc3RyaW5nO1xuICAvKiogU2Vjb25kYXJ5IHJlZ2lvbnMgd2hlcmUgQXVyb3JhIGNsdXN0ZXJzIHdpbGwgYmUgZGVwbG95ZWQgKGZvciBzZWNyZXQgcmVwbGljYXRpb24pICovXG4gIHNlY29uZGFyeVJlZ2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGRldGVybWluaXN0aWMgaWQgZm9yIHRoZSBnbG9iYWwgY2x1c3RlciAoc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3Mgc3RhY2tzL3JlZ2lvbnMpICovXG4gIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgZW5naW5lIHRvIGZvcndhcmQgdG8gdGhlIHVuZGVybHlpbmcgY2x1c3RlciAqL1xuICBlbmdpbmU/OiBJQ2x1c3RlckVuZ2luZTtcbiAgLyoqIEVuZ2luZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uICh1c2VybmFtZSwgU1NMIHBhcmFtcywgcm90YXRpb24gYXBwKSAqL1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIC8qKiBFbmFibGUgd3JpdGUgZm9yd2FyZGluZyBvbiBzZWNvbmRhcnkgY2x1c3RlcnMgdG8gZm9yd2FyZCB3cml0ZXMgdG8gcHJpbWFyeSByZWdpb24gKi9cbiAgZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nPzogYm9vbGVhbjtcblxuICAvLyBJbnN0YW5jZSBjb25maWd1cmF0aW9uIChhcHBsaWVkIHRvIGFsbCByZWdpb25hbCBjbHVzdGVycylcbiAgLyoqIFdyaXRlciBpbnN0YW5jZSBjb25maWd1cmF0aW9uICovXG4gIHdyaXRlcj86IEF1cm9yYVdyaXRlckNvbmZpZztcbiAgLyoqXG4gICAqIFJlYWRlciBpbnN0YW5jZXMgY29uZmlndXJhdGlvbi5cbiAgICogLSBgeyBjb3VudDogTiB9YCAtIFNpbXBsZTogTiByZWFkZXJzIHdpdGggZGVmYXVsdHNcbiAgICogLSBgeyBpbnN0YW5jZXM6IFsuLi5dIH1gIC0gQWR2YW5jZWQ6IHBlci1yZWFkZXIgY29uZmlnXG4gICAqIC0gYGZhbHNlYCAtIEV4cGxpY2l0bHkgZGlzYWJsZSByZWFkZXJzICh3cml0ZXItb25seSBjbHVzdGVyKVxuICAgKiAtIE9taXQgLSBEZWZhdWx0OiAxIHJlYWRlclxuICAgKi9cbiAgcmVhZGVycz86IEF1cm9yYVJlYWRlcnNDb25maWcgfCBmYWxzZTtcblxuICAvLyBOZXN0ZWQgY29uZmlndXJhdGlvbnMgKHByZXNlbmNlLWJhc2VkKVxuICAvKiogUkRTIFByb3h5IGNvbmZpZ3VyYXRpb24uIE9taXQgPSBubyBwcm94eSwge30gPSBkZWZhdWx0cywgZmFsc2UgPSBkaXNhYmxlZCAqL1xuICBwcm94eT86IFByb3h5Q29uZmlnIHwgZmFsc2U7XG4gIC8qKiBDcmVkZW50aWFscyBjb25maWd1cmF0aW9uIGluY2x1ZGluZyB1c2VybmFtZSBhbmQgc2VjcmV0IHJvdGF0aW9uICovXG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIC8qKiBFbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgZW5jcnlwdGlvbj86IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG5cbiAgLy8gT3BlcmF0aW9uYWwgY29uZmlndXJhdGlvblxuICAvKiogQmFja3VwIHJldGVudGlvbiBpbiBkYXlzLiBEZWZhdWx0OiAxNCAqL1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIC8qKiBDbG91ZFdhdGNoIG1vbml0b3JpbmcgaW50ZXJ2YWwuIERlZmF1bHQ6IDEgbWludXRlICovXG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICAvKiogUHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy4gRGVmYXVsdDogXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCIgKi9cbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG4gIC8qKiBEYXRhYmFzZSBwb3J0LiBEZWZhdWx0OiAzNTI1NSAoRkpBTEwgb24gcGhvbmUga2V5cGFkKSAqL1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQVJOIG9yIGlkZW50aWZpZXIgb2YgREIgY2x1c3RlciBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20gKi9cbiAgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmRzQXVyb3JhR2xvYmFsIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuICBwcml2YXRlIGdsb2JhbENsdXN0ZXI/OiBDZm5HbG9iYWxDbHVzdGVyO1xuICBwcml2YXRlIHByaW1hcnlDbHVzdGVyPzogUmRzQXVyb3JhO1xuICBwcml2YXRlIHJlZ2lvbmFsQ2x1c3Rlcj86IFJkc0F1cm9yYTtcbiAgcHJpdmF0ZSBwcm9wczogUmRzQXVyb3JhR2xvYmFsUHJvcHM7XG4gIHByaXZhdGUgY3VycmVudFJlZ2lvbjogc3RyaW5nO1xuICBwcml2YXRlIGdsb2JhbElkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc0F1cm9yYUdsb2JhbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmN1cnJlbnRSZWdpb24gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgdGhpcy5nbG9iYWxJZCA9XG4gICAgICBwcm9wcy5nbG9iYWxDbHVzdGVySWRlbnRpZmllcj8udG9Mb3dlckNhc2UoKSB8fFxuICAgICAgUmVzb3VyY2VOYW1pbmcuZ2xvYmFsQ2x1c3RlcklkKHByb3BzLmRhdGFiYXNlTmFtZSk7XG5cbiAgICAvLyBjcmVhdGUgY2x1c3RlcnMgLyBnbG9iYWwgY2x1c3RlciBkZXBlbmRpbmcgb24gcmVnaW9uXG4gICAgdGhpcy5hZGRBdXJvcmFDbHVzdGVyKCk7XG4gICAgdGhpcy5hZGRHbG9iYWxDbHVzdGVyKCk7XG4gICAgdGhpcy5hZGRPdXRwdXRzKCk7XG4gIH1cblxuICAvLyAtLS0gcHVibGljIGhlbHBlcnMgLS0tXG4gIGdldEdsb2JhbENsdXN0ZXJJZGVudGlmaWVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsSWQ7XG4gIH1cblxuICBnZXRQcmltYXJ5Q2x1c3RlcklkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUmVzb3VyY2VOYW1pbmcucHJpbWFyeUNsdXN0ZXJJZCh0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEdsb2JhbENsdXN0ZXJFbmdpbmVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAvLyBEZWZhdWx0IHRvIGF1cm9yYS1wb3N0Z3Jlc3FsIGlmIG5vIGVuZ2luZSBzcGVjaWZpZWQgKG1hdGNoZXMgZXhpc3RpbmcgYmVoYXZpb3IpXG4gICAgaWYgKCF0aGlzLnByb3BzLmVuZ2luZSkgcmV0dXJuIFwiYXVyb3JhLXBvc3RncmVzcWxcIjtcblxuICAgIGNvbnN0IGVuZ2luZU9iajogYW55ID0gdGhpcy5wcm9wcy5lbmdpbmUgYXMgYW55O1xuXG4gICAgLy8gVHJ5IGNvbW1vbiBsb2NhdGlvbnMgZm9yIHRoZSBlbmdpbmUgaWRlbnRpZmllclxuICAgIGxldCBlbmdpbmVUeXBlOiB1bmtub3duID1cbiAgICAgIGVuZ2luZU9iai5lbmdpbmVUeXBlID8/IGVuZ2luZU9iai5lbmdpbmUgPz8gZW5naW5lT2JqLm5hbWU7XG5cbiAgICAvLyBJZiB0aGUgZW5naW5lIHdhcyBwcm92aWRlZCBhcyBhIHJhdyBzdHJpbmcgKHVubGlrZWx5IGJ1dCBzdXBwb3J0IGl0KVxuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5lbmdpbmUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGVuZ2luZVR5cGUgPSB0aGlzLnByb3BzLmVuZ2luZTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byB0b1N0cmluZygpIGZvciBUb2tlbi1saWtlIG9iamVjdHNcbiAgICBpZiAoIWVuZ2luZVR5cGUgJiYgdHlwZW9mIGVuZ2luZU9iai50b1N0cmluZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0cnkge1xuICAgICAgICBlbmdpbmVUeXBlID0gZW5naW5lT2JqLnRvU3RyaW5nKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGVuZ2luZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBlbmdpbmVUeXBlICE9PSBcInN0cmluZ1wiKSByZXR1cm4gXCJhdXJvcmEtcG9zdGdyZXNxbFwiO1xuXG4gICAgLy8gTm9ybWFsaXplIGNvbW1vbiBmb3JtczogQVVST1JBX1BPU1RHUkVTUUwgLT4gYXVyb3JhLXBvc3RncmVzcWwsIGF1cm9yYV9wb3N0Z3Jlc3FsIC0+IGF1cm9yYS1wb3N0Z3Jlc3FsXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGVuZ2luZVR5cGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIFwiLVwiKTtcblxuICAgIC8vIElmIHRoZSBub3JtYWxpemVkIHZhbHVlIGlzIGp1c3QgJ2F1cm9yYScsIHByZWZlciB0aGUgbW9yZSBzcGVjaWZpYyBwb3N0Z3JlcyBkZWZhdWx0XG4gICAgaWYgKG5vcm1hbGl6ZWQgPT09IFwiYXVyb3JhXCIpIHJldHVybiBcImF1cm9yYS1wb3N0Z3Jlc3FsXCI7XG5cbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgQ2ZuR2xvYmFsQ2x1c3RlciBvbmx5IGluIHRoZSBwcmltYXJ5IHJlZ2lvblxuICBhZGRHbG9iYWxDbHVzdGVyKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByaW1hcnlSZWdpb24gIT09IHRoaXMuY3VycmVudFJlZ2lvbikgcmV0dXJuO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBnbG9iYWwgY2x1c3RlciByZXNvdXJjZSByZWZlcmVuY2luZyB0aGUgcHJpbWFyeSBjbHVzdGVyIGlkZW50aWZpZXJcbiAgICAvLyBQcmVmZXIgcmVmZXJlbmNpbmcgdGhlIEwxIERCQ2x1c3RlciBSZWYgc28gQ2xvdWRGb3JtYXRpb24gd2lsbCBjcmVhdGUgdGhlXG4gICAgLy8gREJDbHVzdGVyIGZpcnN0IGFuZCB3ZSBhdm9pZCBpZGVudGlmaWVyLWNhc2luZyBtaXNtYXRjaGVzLlxuICAgIGxldCBzb3VyY2VJZGVudGlmaWVyOiBhbnkgPSB0aGlzLmdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpO1xuICAgIGxldCBwcmltYXJ5TDE6IENmbkRCQ2x1c3RlciB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSB7XG4gICAgICAvLyBVc2UgdGhlIGhlbHBlciBvbiBSZHNBdXJvcmEgdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIEwxIERCQ2x1c3RlciAobW9yZSByZWxpYWJsZVxuICAgICAgLy8gdGhhbiByZWx5aW5nIG9uIG5vZGUuZGVmYXVsdENoaWxkIHdoaWNoIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiBjb25zdHJ1Y3Qgb3JkZXJpbmcpXG4gICAgICBwcmltYXJ5TDEgPVxuICAgICAgICB0aGlzLnByaW1hcnlDbHVzdGVyLmdldENmbkNsdXN0ZXIgJiZcbiAgICAgICAgdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRDZm5DbHVzdGVyKCk7XG4gICAgICBpZiAocHJpbWFyeUwxKSB7XG4gICAgICAgIHNvdXJjZUlkZW50aWZpZXIgPSBwcmltYXJ5TDEucmVmO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZ2xvYmFsQ2x1c3RlciA9IG5ldyBDZm5HbG9iYWxDbHVzdGVyKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJgLFxuICAgICAge1xuICAgICAgICBnbG9iYWxDbHVzdGVySWRlbnRpZmllcjogdGhpcy5nbG9iYWxJZCxcbiAgICAgICAgc291cmNlRGJDbHVzdGVySWRlbnRpZmllcjogc291cmNlSWRlbnRpZmllclxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBlbnN1cmUgdGhlIHVuZGVybHlpbmcgcHJpbWFyeSBEQkNsdXN0ZXIgTDEgaGFzIHRoZSBnbG9iYWxDbHVzdGVySWRlbnRpZmllciBzZXRcbiAgICBpZiAocHJpbWFyeUwxKSB7XG4gICAgICAvLyBNYWtlIHRoZSBDRk4gZGVwZW5kZW5jeSBleHBsaWNpdCBzbyB0aGUgREJDbHVzdGVyIGlzIGNyZWF0ZWQgYmVmb3JlIHRoZSBHbG9iYWxDbHVzdGVyXG4gICAgICB0aGlzLmdsb2JhbENsdXN0ZXIuYWRkRGVwZW5kc09uKHByaW1hcnlMMSk7XG4gICAgICAvLyBJTVBPUlRBTlQ6IGRvIE5PVCBzZXQgdGhlIHByaW1hcnkgREJDbHVzdGVyJ3MgYGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYCBoZXJlLlxuICAgICAgLy8gSWYgd2Ugc2V0IHRoZSBwcmltYXJ5IERCQ2x1c3RlciB0byByZWZlcmVuY2UgdGhlIGdsb2JhbCBjbHVzdGVyLCBDbG91ZEZvcm1hdGlvblxuICAgICAgLy8gd2lsbCBhdHRlbXB0IHRvIHZhbGlkYXRlIHRoYXQgdGhlIGdsb2JhbCBjbHVzdGVyIGV4aXN0cyB3aGVuIGNyZWF0aW5nIHRoZVxuICAgICAgLy8gREJDbHVzdGVyIOKAlCBidXQgdGhlIGdsb2JhbCBjbHVzdGVyIGlzIGNyZWF0ZWQgYWZ0ZXJ3YXJkICh3ZSBhZGQgYVxuICAgICAgLy8gZGVwZW5kc09uKSwgd2hpY2ggY2F1c2VzIGEgXCJHbG9iYWwgY2x1c3RlciAuLi4gbm90IGZvdW5kXCIgZXJyb3IuIFRoZVxuICAgICAgLy8gY29ycmVjdCBvcmRlciBpcyB0byBjcmVhdGUgdGhlIERCQ2x1c3RlciBmaXJzdCwgdGhlbiBjcmVhdGUgdGhlXG4gICAgICAvLyBDZm5HbG9iYWxDbHVzdGVyIHdpdGggYHNvdXJjZURiQ2x1c3RlcklkZW50aWZpZXJgIHBvaW50aW5nIGF0IHRoZVxuICAgICAgLy8gcHJpbWFyeSBjbHVzdGVyJ3MgUmVmLiBMZWF2aW5nIHRoZSBwcmltYXJ5IEwxIHdpdGhvdXQgdGhlXG4gICAgICAvLyBgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgIGF2b2lkcyB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlLlxuICAgIH1cbiAgfVxuXG4gIC8vIGNyZWF0ZSBhbiBBdXJvcmEgY2x1c3RlciBpbiB0aGlzIHJlZ2lvbiAocHJpbWFyeSBvciBzZWNvbmRhcnkpXG4gIGFkZEF1cm9yYUNsdXN0ZXIoKSB7XG4gICAgLy8gQ29tbW9uIGNvbmZpZ3VyYXRpb24gc2hhcmVkIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGNsdXN0ZXJzXG4gICAgY29uc3QgY29tbW9uQ29uZmlnID0ge1xuICAgICAgZW5naW5lOiB0aGlzLnByb3BzLmVuZ2luZSxcbiAgICAgIGVuZ2luZUNvbmZpZzogdGhpcy5wcm9wcy5lbmdpbmVDb25maWcsXG4gICAgICAvLyBJbnN0YW5jZSBjb25maWd1cmF0aW9uXG4gICAgICB3cml0ZXI6IHRoaXMucHJvcHMud3JpdGVyLFxuICAgICAgcmVhZGVyczogdGhpcy5wcm9wcy5yZWFkZXJzLFxuICAgICAgLy8gTmVzdGVkIGNvbmZpZ3VyYXRpb25zXG4gICAgICBwcm94eTogdGhpcy5wcm9wcy5wcm94eSxcbiAgICAgIGVuY3J5cHRpb246IHRoaXMucHJvcHMuZW5jcnlwdGlvbixcbiAgICAgIC8vIE9wZXJhdGlvbmFsIGNvbmZpZ3VyYXRpb25cbiAgICAgIGJhY2t1cFJldGVudGlvbjogdGhpcy5wcm9wcy5iYWNrdXBSZXRlbnRpb24sXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHRoaXMucHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHRoaXMucHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3csXG4gICAgICBwb3J0OiB0aGlzLnByb3BzLnBvcnQsXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRzOiB0aGlzLnByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMsXG4gICAgICBkZWxldGlvblByb3RlY3Rpb246IHRoaXMucHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uLFxuICAgICAgc25hcHNob3RJZGVudGlmaWVyOiB0aGlzLnByb3BzLnNuYXBzaG90SWRlbnRpZmllclxuICAgIH07XG5cbiAgICBpZiAodGhpcy5wcm9wcy5wcmltYXJ5UmVnaW9uID09PSB0aGlzLmN1cnJlbnRSZWdpb24pIHtcbiAgICAgIC8vIHByaW1hcnlcbiAgICAgIHRoaXMucHJpbWFyeUNsdXN0ZXIgPSBuZXcgUmRzQXVyb3JhKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1QcmltYXJ5YCxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdGhpcy5wcm9wcy52cGMsXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiB0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjbHVzdGVySWRlbnRpZmllcjogdGhpcy5nZXRQcmltYXJ5Q2x1c3RlcklkZW50aWZpZXIoKSxcbiAgICAgICAgICAvLyBFbmFibGUgc2VjcmV0IHJlcGxpY2F0aW9uIHRvIHNlY29uZGFyeSByZWdpb25zXG4gICAgICAgICAgc2VjcmV0UmVwbGljYVJlZ2lvbnM6IHRoaXMucHJvcHMuc2Vjb25kYXJ5UmVnaW9ucyxcbiAgICAgICAgICAvLyBQcmltYXJ5IHJlZ2lvbiBjcmVhdGVzIGNyZWRlbnRpYWxzXG4gICAgICAgICAgY3JlZGVudGlhbHM6IHRoaXMucHJvcHMuY3JlZGVudGlhbHMsXG4gICAgICAgICAgLi4uY29tbW9uQ29uZmlnXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5wcmltYXJ5Q2x1c3Rlci5jb25uZWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2Vjb25kYXJ5IHJlZ2lvblxuICAgICAgLy8gUGFzcyBkYXRhYmFzZU5hbWUgZm9yIHJlc291cmNlIG5hbWluZywgYnV0IGZsYWcgYXMgZ2xvYmFsIHNlY29uZGFyeVxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyBzZXR0aW5nIGNyZWRlbnRpYWxzIGFuZCBkZWZhdWx0RGF0YWJhc2VOYW1lIHdoaWNoIGFyZSBpbmhlcml0ZWQgZnJvbSBwcmltYXJ5XG4gICAgICB0aGlzLnJlZ2lvbmFsQ2x1c3RlciA9IG5ldyBSZHNBdXJvcmEoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfVJlZ2lvbmFsYCxcbiAgICAgICAge1xuICAgICAgICAgIHZwYzogdGhpcy5wcm9wcy52cGMsXG4gICAgICAgICAgZGF0YWJhc2VOYW1lOiB0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjbHVzdGVySWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcuc2Vjb25kYXJ5Q2x1c3RlcklkKFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWdpb25cbiAgICAgICAgICApLFxuICAgICAgICAgIGlzR2xvYmFsU2Vjb25kYXJ5OiB0cnVlLFxuICAgICAgICAgIC8vIFNlY29uZGFyeSBkb2Vzbid0IGNyZWF0ZSBjcmVkZW50aWFscyAodXNlcyByZXBsaWNhdGVkIHNlY3JldClcbiAgICAgICAgICAuLi5jb21tb25Db25maWdcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgLy8gc2V0IHRoZSBMMSBEQkNsdXN0ZXIgcHJvcGVydHkgc28gQ2xvdWRGb3JtYXRpb24gd2lsbCBqb2luIGl0IHRvIHRoZSBnbG9iYWwgY2x1c3RlclxuICAgICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbmFsTDEgPVxuICAgICAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldENmbkNsdXN0ZXIgJiZcbiAgICAgICAgICB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRDZm5DbHVzdGVyKCk7XG4gICAgICAgIGlmIChyZWdpb25hbEwxKSB7XG4gICAgICAgICAgcmVnaW9uYWxMMS5nbG9iYWxDbHVzdGVySWRlbnRpZmllciA9IHRoaXMuZ2xvYmFsSWQ7XG5cbiAgICAgICAgICAvLyBFbmFibGUgd3JpdGUgZm9yd2FyZGluZyBpZiByZXF1ZXN0ZWRcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmcpIHtcbiAgICAgICAgICAgIHJlZ2lvbmFsTDEuZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMucmVnaW9uYWxDbHVzdGVyLmNvbm5lY3Rpb25zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZE91dHB1dHMoKSB7XG4gICAgbmV3IENmbk91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllck91dHB1dGAsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiB0aGlzLmdsb2JhbElkLFxuICAgICAgICBleHBvcnROYW1lOiBgJHt0aGlzLnByb3BzLmRhdGFiYXNlTmFtZX1HbG9iYWxDbHVzdGVySWRlbnRpZmllcmBcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q3JlZGVudGlhbHMoKTogU2VjcmV0IHtcbiAgICBpZiAodGhpcy5wcmltYXJ5Q2x1c3RlcikgcmV0dXJuIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0Q3JlZGVudGlhbHMoKTtcbiAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHJldHVybiB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRDcmVkZW50aWFscygpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIEF1cm9yYSBjbHVzdGVyIGF2YWlsYWJsZSB0byByZXR1cm4gY3JlZGVudGlhbHMgZnJvbVwiKTtcbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRIb3N0RW5kcG9pbnQoKTtcbiAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHJldHVybiB0aGlzLnJlZ2lvbmFsQ2x1c3Rlci5nZXRIb3N0RW5kcG9pbnQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBBdXJvcmEgY2x1c3RlciBhdmFpbGFibGUgdG8gcmV0dXJuIGVuZHBvaW50IGZyb21cIik7XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRIb3N0UG9ydCgpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldEhvc3RQb3J0KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gQXVyb3JhIGNsdXN0ZXIgYXZhaWxhYmxlIHRvIHJldHVybiBwb3J0IGZyb21cIik7XG4gIH1cbn1cbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzQXVyb3JhR2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvZGF0YWJhc2UvcmRzQXVyb3JhR2xvYmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE4RDtBQUM5RCxpREFBMEU7QUFDMUUsMkNBQXVDO0FBT3ZDLDJDQUF3QztBQVd4QyxrRUFBK0Q7QUF1RC9ELE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQVU1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVE7WUFDWCxLQUFLLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFO2dCQUM1QywrQkFBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLDBCQUEwQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLCtCQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLGtGQUFrRjtRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUs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Y2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENmbkdsb2JhbENsdXN0ZXIsIHR5cGUgQ2ZuREJDbHVzdGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICB0eXBlIElWcGMsXG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyB0eXBlIElDbHVzdGVyRW5naW5lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7IFJkc0F1cm9yYSB9IGZyb20gXCIuL3Jkc0F1cm9yYVwiO1xuaW1wb3J0IHsgdHlwZSBTZWNyZXQgfSBmcm9tIFwiLi4vc2VjcmV0c1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbmdpbmVDb25maWcsXG4gIHR5cGUgUHJveHlDb25maWcsXG4gIHR5cGUgQ3JlZGVudGlhbHNDb25maWcsXG4gIHR5cGUgQXVyb3JhRW5jcnlwdGlvbkNvbmZpZyxcbiAgdHlwZSBBdXJvcmFXcml0ZXJDb25maWcsXG4gIHR5cGUgQXVyb3JhUmVhZGVyc0NvbmZpZyxcbiAgdHlwZSBQZXJmb3JtYW5jZUluc2lnaHRzQ29uZmlnXG59IGZyb20gXCIuLi8uLi8uLi9wYXR0ZXJucy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFJlc291cmNlTmFtaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc291cmNlTmFtaW5nXCI7XG5cbmludGVyZmFjZSBSZHNBdXJvcmFHbG9iYWxQcm9wcyB7XG4gIHZwYzogSVZwYztcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQcmltYXJ5IHJlZ2lvbiB3aGVyZSB0aGUgaW5pdGlhbCBjbHVzdGVyICYgZ2xvYmFsIGNsdXN0ZXIgcmVzb3VyY2UgYXJlIGNyZWF0ZWQgKi9cbiAgcHJpbWFyeVJlZ2lvbjogc3RyaW5nO1xuICAvKiogU2Vjb25kYXJ5IHJlZ2lvbnMgd2hlcmUgQXVyb3JhIGNsdXN0ZXJzIHdpbGwgYmUgZGVwbG95ZWQgKGZvciBzZWNyZXQgcmVwbGljYXRpb24pICovXG4gIHNlY29uZGFyeVJlZ2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIE9wdGlvbmFsIGRldGVybWluaXN0aWMgaWQgZm9yIHRoZSBnbG9iYWwgY2x1c3RlciAoc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3Mgc3RhY2tzL3JlZ2lvbnMpICovXG4gIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgZW5naW5lIHRvIGZvcndhcmQgdG8gdGhlIHVuZGVybHlpbmcgY2x1c3RlciAqL1xuICBlbmdpbmU/OiBJQ2x1c3RlckVuZ2luZTtcbiAgLyoqIEVuZ2luZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uICh1c2VybmFtZSwgU1NMIHBhcmFtcywgcm90YXRpb24gYXBwKSAqL1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIC8qKiBFbmFibGUgd3JpdGUgZm9yd2FyZGluZyBvbiBzZWNvbmRhcnkgY2x1c3RlcnMgdG8gZm9yd2FyZCB3cml0ZXMgdG8gcHJpbWFyeSByZWdpb24gKi9cbiAgZW5hYmxlR2xvYmFsV3JpdGVGb3J3YXJkaW5nPzogYm9vbGVhbjtcblxuICAvLyBJbnN0YW5jZSBjb25maWd1cmF0aW9uIChhcHBsaWVkIHRvIGFsbCByZWdpb25hbCBjbHVzdGVycylcbiAgLyoqIFdyaXRlciBpbnN0YW5jZSBjb25maWd1cmF0aW9uICovXG4gIHdyaXRlcj86IEF1cm9yYVdyaXRlckNvbmZpZztcbiAgLyoqXG4gICAqIFJlYWRlciBpbnN0YW5jZXMgY29uZmlndXJhdGlvbi5cbiAgICogLSBgeyBjb3VudDogTiB9YCAtIFNpbXBsZTogTiByZWFkZXJzIHdpdGggZGVmYXVsdHNcbiAgICogLSBgeyBpbnN0YW5jZXM6IFsuLi5dIH1gIC0gQWR2YW5jZWQ6IHBlci1yZWFkZXIgY29uZmlnXG4gICAqIC0gYGZhbHNlYCAtIEV4cGxpY2l0bHkgZGlzYWJsZSByZWFkZXJzICh3cml0ZXItb25seSBjbHVzdGVyKVxuICAgKiAtIE9taXQgLSBEZWZhdWx0OiAxIHJlYWRlclxuICAgKi9cbiAgcmVhZGVycz86IEF1cm9yYVJlYWRlcnNDb25maWcgfCBmYWxzZTtcblxuICAvLyBOZXN0ZWQgY29uZmlndXJhdGlvbnMgKHByZXNlbmNlLWJhc2VkKVxuICAvKiogUkRTIFByb3h5IGNvbmZpZ3VyYXRpb24uIE9taXQgPSBubyBwcm94eSwge30gPSBkZWZhdWx0cywgZmFsc2UgPSBkaXNhYmxlZCAqL1xuICBwcm94eT86IFByb3h5Q29uZmlnIHwgZmFsc2U7XG4gIC8qKiBDcmVkZW50aWFscyBjb25maWd1cmF0aW9uIGluY2x1ZGluZyB1c2VybmFtZSBhbmQgc2VjcmV0IHJvdGF0aW9uICovXG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIC8qKiBFbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgZW5jcnlwdGlvbj86IEF1cm9yYUVuY3J5cHRpb25Db25maWc7XG5cbiAgLy8gT3BlcmF0aW9uYWwgY29uZmlndXJhdGlvblxuICAvKiogQmFja3VwIHJldGVudGlvbiBpbiBkYXlzLiBEZWZhdWx0OiAxNCAqL1xuICBiYWNrdXBSZXRlbnRpb24/OiBudW1iZXI7XG4gIC8qKiBDbG91ZFdhdGNoIG1vbml0b3JpbmcgaW50ZXJ2YWwuIERlZmF1bHQ6IDEgbWludXRlICovXG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICAvKiogUHJlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy4gRGVmYXVsdDogXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCIgKi9cbiAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG4gIC8qKiBEYXRhYmFzZSBwb3J0LiBEZWZhdWx0OiAzNTI1NSAoRkpBTEwgb24gcGhvbmUga2V5cGFkKSAqL1xuICBwb3J0PzogbnVtYmVyO1xuICBwZXJmb3JtYW5jZUluc2lnaHRzPzogUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyB8IGZhbHNlO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQVJOIG9yIGlkZW50aWZpZXIgb2YgREIgY2x1c3RlciBzbmFwc2hvdCB0byByZXN0b3JlIGZyb20gKi9cbiAgc25hcHNob3RJZGVudGlmaWVyPzogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUgZnJvbSB0aGUgc25hcHNob3QgKHJlcXVpcmVkIHdoZW4gcmVzdG9yaW5nIGZyb20gc25hcHNob3QgdG8gcmVzZXQgcGFzc3dvcmQpICovXG4gIHNuYXBzaG90VXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSZHNBdXJvcmFHbG9iYWwgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgZ2xvYmFsQ2x1c3Rlcj86IENmbkdsb2JhbENsdXN0ZXI7XG4gIHByaXZhdGUgcHJpbWFyeUNsdXN0ZXI/OiBSZHNBdXJvcmE7XG4gIHByaXZhdGUgcmVnaW9uYWxDbHVzdGVyPzogUmRzQXVyb3JhO1xuICBwcml2YXRlIHByb3BzOiBSZHNBdXJvcmFHbG9iYWxQcm9wcztcbiAgcHJpdmF0ZSBjdXJyZW50UmVnaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgZ2xvYmFsSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmRzQXVyb3JhR2xvYmFsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMuY3VycmVudFJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICB0aGlzLmdsb2JhbElkID1cbiAgICAgIHByb3BzLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyPy50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICBSZXNvdXJjZU5hbWluZy5nbG9iYWxDbHVzdGVySWQocHJvcHMuZGF0YWJhc2VOYW1lKTtcblxuICAgIC8vIGNyZWF0ZSBjbHVzdGVycyAvIGdsb2JhbCBjbHVzdGVyIGRlcGVuZGluZyBvbiByZWdpb25cbiAgICB0aGlzLmFkZEF1cm9yYUNsdXN0ZXIoKTtcbiAgICB0aGlzLmFkZEdsb2JhbENsdXN0ZXIoKTtcbiAgICB0aGlzLmFkZE91dHB1dHMoKTtcbiAgfVxuXG4gIC8vIC0tLSBwdWJsaWMgaGVscGVycyAtLS1cbiAgZ2V0R2xvYmFsQ2x1c3RlcklkZW50aWZpZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxJZDtcbiAgfVxuXG4gIGdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBSZXNvdXJjZU5hbWluZy5wcmltYXJ5Q2x1c3RlcklkKHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsQ2x1c3RlckVuZ2luZVN0cmluZygpOiBzdHJpbmcge1xuICAgIC8vIERlZmF1bHQgdG8gYXVyb3JhLXBvc3RncmVzcWwgaWYgbm8gZW5naW5lIHNwZWNpZmllZCAobWF0Y2hlcyBleGlzdGluZyBiZWhhdmlvcilcbiAgICBpZiAoIXRoaXMucHJvcHMuZW5naW5lKSByZXR1cm4gXCJhdXJvcmEtcG9zdGdyZXNxbFwiO1xuXG4gICAgY29uc3QgZW5naW5lT2JqOiBhbnkgPSB0aGlzLnByb3BzLmVuZ2luZSBhcyBhbnk7XG5cbiAgICAvLyBUcnkgY29tbW9uIGxvY2F0aW9ucyBmb3IgdGhlIGVuZ2luZSBpZGVudGlmaWVyXG4gICAgbGV0IGVuZ2luZVR5cGU6IHVua25vd24gPVxuICAgICAgZW5naW5lT2JqLmVuZ2luZVR5cGUgPz8gZW5naW5lT2JqLmVuZ2luZSA/PyBlbmdpbmVPYmoubmFtZTtcblxuICAgIC8vIElmIHRoZSBlbmdpbmUgd2FzIHByb3ZpZGVkIGFzIGEgcmF3IHN0cmluZyAodW5saWtlbHkgYnV0IHN1cHBvcnQgaXQpXG4gICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLmVuZ2luZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZW5naW5lVHlwZSA9IHRoaXMucHJvcHMuZW5naW5lO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIHRvU3RyaW5nKCkgZm9yIFRva2VuLWxpa2Ugb2JqZWN0c1xuICAgIGlmICghZW5naW5lVHlwZSAmJiB0eXBlb2YgZW5naW5lT2JqLnRvU3RyaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGVuZ2luZVR5cGUgPSBlbmdpbmVPYmoudG9TdHJpbmcoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZW5naW5lVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGVuZ2luZVR5cGUgIT09IFwic3RyaW5nXCIpIHJldHVybiBcImF1cm9yYS1wb3N0Z3Jlc3FsXCI7XG5cbiAgICAvLyBOb3JtYWxpemUgY29tbW9uIGZvcm1zOiBBVVJPUkFfUE9TVEdSRVNRTCAtPiBhdXJvcmEtcG9zdGdyZXNxbCwgYXVyb3JhX3Bvc3RncmVzcWwgLT4gYXVyb3JhLXBvc3RncmVzcWxcbiAgICBjb25zdCBub3JtYWxpemVkID0gZW5naW5lVHlwZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywgXCItXCIpO1xuXG4gICAgLy8gSWYgdGhlIG5vcm1hbGl6ZWQgdmFsdWUgaXMganVzdCAnYXVyb3JhJywgcHJlZmVyIHRoZSBtb3JlIHNwZWNpZmljIHBvc3RncmVzIGRlZmF1bHRcbiAgICBpZiAobm9ybWFsaXplZCA9PT0gXCJhdXJvcmFcIikgcmV0dXJuIFwiYXVyb3JhLXBvc3RncmVzcWxcIjtcblxuICAgIHJldHVybiBub3JtYWxpemVkO1xuICB9XG5cbiAgLy8gY3JlYXRlIHRoZSBDZm5HbG9iYWxDbHVzdGVyIG9ubHkgaW4gdGhlIHByaW1hcnkgcmVnaW9uXG4gIGFkZEdsb2JhbENsdXN0ZXIoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJpbWFyeVJlZ2lvbiAhPT0gdGhpcy5jdXJyZW50UmVnaW9uKSByZXR1cm47XG5cbiAgICAvLyBjcmVhdGUgdGhlIGdsb2JhbCBjbHVzdGVyIHJlc291cmNlIHJlZmVyZW5jaW5nIHRoZSBwcmltYXJ5IGNsdXN0ZXIgaWRlbnRpZmllclxuICAgIC8vIFByZWZlciByZWZlcmVuY2luZyB0aGUgTDEgREJDbHVzdGVyIFJlZiBzbyBDbG91ZEZvcm1hdGlvbiB3aWxsIGNyZWF0ZSB0aGVcbiAgICAvLyBEQkNsdXN0ZXIgZmlyc3QgYW5kIHdlIGF2b2lkIGlkZW50aWZpZXItY2FzaW5nIG1pc21hdGNoZXMuXG4gICAgbGV0IHNvdXJjZUlkZW50aWZpZXI6IGFueSA9IHRoaXMuZ2V0UHJpbWFyeUNsdXN0ZXJJZGVudGlmaWVyKCk7XG4gICAgbGV0IHByaW1hcnlMMTogQ2ZuREJDbHVzdGVyIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHtcbiAgICAgIC8vIFVzZSB0aGUgaGVscGVyIG9uIFJkc0F1cm9yYSB0byBnZXQgdGhlIHVuZGVybHlpbmcgTDEgREJDbHVzdGVyIChtb3JlIHJlbGlhYmxlXG4gICAgICAvLyB0aGFuIHJlbHlpbmcgb24gbm9kZS5kZWZhdWx0Q2hpbGQgd2hpY2ggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIGNvbnN0cnVjdCBvcmRlcmluZylcbiAgICAgIHByaW1hcnlMMSA9XG4gICAgICAgIHRoaXMucHJpbWFyeUNsdXN0ZXIuZ2V0Q2ZuQ2x1c3RlciAmJlxuICAgICAgICB0aGlzLnByaW1hcnlDbHVzdGVyLmdldENmbkNsdXN0ZXIoKTtcbiAgICAgIGlmIChwcmltYXJ5TDEpIHtcbiAgICAgICAgc291cmNlSWRlbnRpZmllciA9IHByaW1hcnlMMS5yZWY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5nbG9iYWxDbHVzdGVyID0gbmV3IENmbkdsb2JhbENsdXN0ZXIoXG4gICAgICB0aGlzLFxuICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9R2xvYmFsQ2x1c3RlcmAsXG4gICAgICB7XG4gICAgICAgIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmdsb2JhbElkLFxuICAgICAgICBzb3VyY2VEYkNsdXN0ZXJJZGVudGlmaWVyOiBzb3VyY2VJZGVudGlmaWVyXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIGVuc3VyZSB0aGUgdW5kZXJseWluZyBwcmltYXJ5IERCQ2x1c3RlciBMMSBoYXMgdGhlIGdsb2JhbENsdXN0ZXJJZGVudGlmaWVyIHNldFxuICAgIGlmIChwcmltYXJ5TDEpIHtcbiAgICAgIC8vIE1ha2UgdGhlIENGTiBkZXBlbmRlbmN5IGV4cGxpY2l0IHNvIHRoZSBEQkNsdXN0ZXIgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIEdsb2JhbENsdXN0ZXJcbiAgICAgIHRoaXMuZ2xvYmFsQ2x1c3Rlci5hZGREZXBlbmRzT24ocHJpbWFyeUwxKTtcbiAgICAgIC8vIElNUE9SVEFOVDogZG8gTk9UIHNldCB0aGUgcHJpbWFyeSBEQkNsdXN0ZXIncyBgZ2xvYmFsQ2x1c3RlcklkZW50aWZpZXJgIGhlcmUuXG4gICAgICAvLyBJZiB3ZSBzZXQgdGhlIHByaW1hcnkgREJDbHVzdGVyIHRvIHJlZmVyZW5jZSB0aGUgZ2xvYmFsIGNsdXN0ZXIsIENsb3VkRm9ybWF0aW9uXG4gICAgICAvLyB3aWxsIGF0dGVtcHQgdG8gdmFsaWRhdGUgdGhhdCB0aGUgZ2xvYmFsIGNsdXN0ZXIgZXhpc3RzIHdoZW4gY3JlYXRpbmcgdGhlXG4gICAgICAvLyBEQkNsdXN0ZXIg4oCUIGJ1dCB0aGUgZ2xvYmFsIGNsdXN0ZXIgaXMgY3JlYXRlZCBhZnRlcndhcmQgKHdlIGFkZCBhXG4gICAgICAvLyBkZXBlbmRzT24pLCB3aGljaCBjYXVzZXMgYSBcIkdsb2JhbCBjbHVzdGVyIC4uLiBub3QgZm91bmRcIiBlcnJvci4gVGhlXG4gICAgICAvLyBjb3JyZWN0IG9yZGVyIGlzIHRvIGNyZWF0ZSB0aGUgREJDbHVzdGVyIGZpcnN0LCB0aGVuIGNyZWF0ZSB0aGVcbiAgICAgIC8vIENmbkdsb2JhbENsdXN0ZXIgd2l0aCBgc291cmNlRGJDbHVzdGVySWRlbnRpZmllcmAgcG9pbnRpbmcgYXQgdGhlXG4gICAgICAvLyBwcmltYXJ5IGNsdXN0ZXIncyBSZWYuIExlYXZpbmcgdGhlIHByaW1hcnkgTDEgd2l0aG91dCB0aGVcbiAgICAgIC8vIGBnbG9iYWxDbHVzdGVySWRlbnRpZmllcmAgYXZvaWRzIHRoZSBjaXJjdWxhciByZWZlcmVuY2UuXG4gICAgfVxuICB9XG5cbiAgLy8gY3JlYXRlIGFuIEF1cm9yYSBjbHVzdGVyIGluIHRoaXMgcmVnaW9uIChwcmltYXJ5IG9yIHNlY29uZGFyeSlcbiAgYWRkQXVyb3JhQ2x1c3RlcigpIHtcbiAgICAvLyBDb21tb24gY29uZmlndXJhdGlvbiBzaGFyZWQgYmV0d2VlbiBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgY2x1c3RlcnNcbiAgICBjb25zdCBjb21tb25Db25maWcgPSB7XG4gICAgICBlbmdpbmU6IHRoaXMucHJvcHMuZW5naW5lLFxuICAgICAgZW5naW5lQ29uZmlnOiB0aGlzLnByb3BzLmVuZ2luZUNvbmZpZyxcbiAgICAgIC8vIEluc3RhbmNlIGNvbmZpZ3VyYXRpb25cbiAgICAgIHdyaXRlcjogdGhpcy5wcm9wcy53cml0ZXIsXG4gICAgICByZWFkZXJzOiB0aGlzLnByb3BzLnJlYWRlcnMsXG4gICAgICAvLyBOZXN0ZWQgY29uZmlndXJhdGlvbnNcbiAgICAgIHByb3h5OiB0aGlzLnByb3BzLnByb3h5LFxuICAgICAgZW5jcnlwdGlvbjogdGhpcy5wcm9wcy5lbmNyeXB0aW9uLFxuICAgICAgLy8gT3BlcmF0aW9uYWwgY29uZmlndXJhdGlvblxuICAgICAgYmFja3VwUmV0ZW50aW9uOiB0aGlzLnByb3BzLmJhY2t1cFJldGVudGlvbixcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogdGhpcy5wcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogdGhpcy5wcm9wcy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyxcbiAgICAgIHBvcnQ6IHRoaXMucHJvcHMucG9ydCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodHM6IHRoaXMucHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogdGhpcy5wcm9wcy5kZWxldGlvblByb3RlY3Rpb24sXG4gICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHRoaXMucHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgc25hcHNob3RVc2VybmFtZTogdGhpcy5wcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnByb3BzLnByaW1hcnlSZWdpb24gPT09IHRoaXMuY3VycmVudFJlZ2lvbikge1xuICAgICAgLy8gcHJpbWFyeVxuICAgICAgdGhpcy5wcmltYXJ5Q2x1c3RlciA9IG5ldyBSZHNBdXJvcmEoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfVByaW1hcnlgLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGNsdXN0ZXJJZGVudGlmaWVyOiB0aGlzLmdldFByaW1hcnlDbHVzdGVySWRlbnRpZmllcigpLFxuICAgICAgICAgIC8vIEVuYWJsZSBzZWNyZXQgcmVwbGljYXRpb24gdG8gc2Vjb25kYXJ5IHJlZ2lvbnNcbiAgICAgICAgICBzZWNyZXRSZXBsaWNhUmVnaW9uczogdGhpcy5wcm9wcy5zZWNvbmRhcnlSZWdpb25zLFxuICAgICAgICAgIC8vIFByaW1hcnkgcmVnaW9uIGNyZWF0ZXMgY3JlZGVudGlhbHNcbiAgICAgICAgICBjcmVkZW50aWFsczogdGhpcy5wcm9wcy5jcmVkZW50aWFscyxcbiAgICAgICAgICAuLi5jb21tb25Db25maWdcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnByaW1hcnlDbHVzdGVyLmNvbm5lY3Rpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzZWNvbmRhcnkgcmVnaW9uXG4gICAgICAvLyBQYXNzIGRhdGFiYXNlTmFtZSBmb3IgcmVzb3VyY2UgbmFtaW5nLCBidXQgZmxhZyBhcyBnbG9iYWwgc2Vjb25kYXJ5XG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHNldHRpbmcgY3JlZGVudGlhbHMgYW5kIGRlZmF1bHREYXRhYmFzZU5hbWUgd2hpY2ggYXJlIGluaGVyaXRlZCBmcm9tIHByaW1hcnlcbiAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyID0gbmV3IFJkc0F1cm9yYShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5wcm9wcy5kYXRhYmFzZU5hbWV9UmVnaW9uYWxgLFxuICAgICAgICB7XG4gICAgICAgICAgdnBjOiB0aGlzLnByb3BzLnZwYyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMucHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGNsdXN0ZXJJZGVudGlmaWVyOiBSZXNvdXJjZU5hbWluZy5zZWNvbmRhcnlDbHVzdGVySWQoXG4gICAgICAgICAgICB0aGlzLnByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJlZ2lvblxuICAgICAgICAgICksXG4gICAgICAgICAgaXNHbG9iYWxTZWNvbmRhcnk6IHRydWUsXG4gICAgICAgICAgLy8gU2Vjb25kYXJ5IGRvZXNuJ3QgY3JlYXRlIGNyZWRlbnRpYWxzICh1c2VzIHJlcGxpY2F0ZWQgc2VjcmV0KVxuICAgICAgICAgIC4uLmNvbW1vbkNvbmZpZ1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICAvLyBzZXQgdGhlIEwxIERCQ2x1c3RlciBwcm9wZXJ0eSBzbyBDbG91ZEZvcm1hdGlvbiB3aWxsIGpvaW4gaXQgdG8gdGhlIGdsb2JhbCBjbHVzdGVyXG4gICAgICBpZiAodGhpcy5yZWdpb25hbENsdXN0ZXIpIHtcbiAgICAgICAgY29uc3QgcmVnaW9uYWxMMSA9XG4gICAgICAgICAgdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0Q2ZuQ2x1c3RlciAmJlxuICAgICAgICAgIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldENmbkNsdXN0ZXIoKTtcbiAgICAgICAgaWYgKHJlZ2lvbmFsTDEpIHtcbiAgICAgICAgICByZWdpb25hbEwxLmdsb2JhbENsdXN0ZXJJZGVudGlmaWVyID0gdGhpcy5nbG9iYWxJZDtcblxuICAgICAgICAgIC8vIEVuYWJsZSB3cml0ZSBmb3J3YXJkaW5nIGlmIHJlcXVlc3RlZFxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLmVuYWJsZUdsb2JhbFdyaXRlRm9yd2FyZGluZykge1xuICAgICAgICAgICAgcmVnaW9uYWxMMS5lbmFibGVHbG9iYWxXcml0ZUZvcndhcmRpbmcgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5yZWdpb25hbENsdXN0ZXIuY29ubmVjdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkT3V0cHV0cygpIHtcbiAgICBuZXcgQ2ZuT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJJZGVudGlmaWVyT3V0cHV0YCxcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuZ2xvYmFsSWQsXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke3RoaXMucHJvcHMuZGF0YWJhc2VOYW1lfUdsb2JhbENsdXN0ZXJJZGVudGlmaWVyYFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBTZWNyZXQge1xuICAgIGlmICh0aGlzLnByaW1hcnlDbHVzdGVyKSByZXR1cm4gdGhpcy5wcmltYXJ5Q2x1c3Rlci5nZXRDcmVkZW50aWFscygpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldENyZWRlbnRpYWxzKCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gQXVyb3JhIGNsdXN0ZXIgYXZhaWxhYmxlIHRvIHJldHVybiBjcmVkZW50aWFscyBmcm9tXCIpO1xuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHJldHVybiB0aGlzLnByaW1hcnlDbHVzdGVyLmdldEhvc3RFbmRwb2ludCgpO1xuICAgIGlmICh0aGlzLnJlZ2lvbmFsQ2x1c3RlcikgcmV0dXJuIHRoaXMucmVnaW9uYWxDbHVzdGVyLmdldEhvc3RFbmRwb2ludCgpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIEF1cm9yYSBjbHVzdGVyIGF2YWlsYWJsZSB0byByZXR1cm4gZW5kcG9pbnQgZnJvbVwiKTtcbiAgfVxuXG4gIGdldEhvc3RQb3J0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJpbWFyeUNsdXN0ZXIpIHJldHVybiB0aGlzLnByaW1hcnlDbHVzdGVyLmdldEhvc3RQb3J0KCk7XG4gICAgaWYgKHRoaXMucmVnaW9uYWxDbHVzdGVyKSByZXR1cm4gdGhpcy5yZWdpb25hbENsdXN0ZXIuZ2V0SG9zdFBvcnQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBBdXJvcmEgY2x1c3RlciBhdmFpbGFibGUgdG8gcmV0dXJuIHBvcnQgZnJvbVwiKTtcbiAgfVxufVxuIl19
@@ -31,6 +31,8 @@ interface RdsProps {
31
31
  deletionProtection?: boolean;
32
32
  /** ARN or identifier of DB instance snapshot to restore from */
33
33
  snapshotIdentifier?: string;
34
+ /** Username from the snapshot (required when restoring from snapshot to reset password) */
35
+ snapshotUsername?: string;
34
36
  }
35
37
  export declare class RdsInstance extends Construct implements IConnectable {
36
38
  connections: Connections;
@@ -38,7 +38,10 @@ class RdsInstance extends constructs_1.Construct {
38
38
  }
39
39
  }
40
40
  addDatabase(props) {
41
- const username = props.credentials?.username ?? this.engineConfig.defaultUsername;
41
+ // Username priority: snapshotUsername > credentials.username > engine default
42
+ const username = props.snapshotIdentifier && props.snapshotUsername
43
+ ? props.snapshotUsername
44
+ : (props.credentials?.username ?? this.engineConfig.defaultUsername);
42
45
  this.databaseCredentials = new secrets_1.Secret(this, `${props.databaseName}Credentials`, {
43
46
  secretName: `${props.databaseName}Credentials`,
44
47
  generateSecretString: {
@@ -336,4 +339,4 @@ exports.handler = async (event) => {
336
339
  }
337
340
  }
338
341
  exports.RdsInstance = RdsInstance;
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzSW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9yZHNJbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBaUU7QUFDakUsaURBUTZCO0FBQzdCLGlEQWU2QjtBQUM3Qix1RUFHd0M7QUFDeEMsdURBQWlEO0FBQ2pELGlEQUE4RDtBQUM5RCwyQ0FBdUM7QUFDdkMsZ0NBQXVDO0FBQ3ZDLHdDQUF3RDtBQUN4RCxnRUFBNkQ7QUFFN0QsNkRBU3dDO0FBQ3hDLGtFQUErRDtBQTZCL0QsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFjeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFlO1FBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFckIsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSTtZQUN4QyxlQUFlLEVBQUUsVUFBVTtZQUMzQixhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLGVBQWUsRUFBRSw4Q0FBOEM7U0FDaEUsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsMEVBQTBFO1FBQzFFLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLEtBQUssS0FBSyxDQUFDO1FBQzNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxT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b24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgSW5zdGFuY2VUeXBlLFxuICB0eXBlIElWcGMsXG4gIFBvcnQsXG4gIHR5cGUgU3VibmV0U2VsZWN0aW9uLFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBDYUNlcnRpZmljYXRlLFxuICBDcmVkZW50aWFscyxcbiAgRGF0YWJhc2VJbnN0YW5jZSxcbiAgRGF0YWJhc2VJbnN0YW5jZUZyb21TbmFwc2hvdCxcbiAgRGF0YWJhc2VJbnN0YW5jZUVuZ2luZSxcbiAgRGF0YWJhc2VJbnN0YW5jZVJlYWRSZXBsaWNhLFxuICBEYXRhYmFzZVByb3h5LFxuICB0eXBlIElJbnN0YW5jZUVuZ2luZSxcbiAgUGFyYW1ldGVyR3JvdXAsXG4gIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbixcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBQcm94eVRhcmdldCxcbiAgU25hcHNob3RDcmVkZW50aWFscyxcbiAgU3RvcmFnZVR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7XG4gIFNlY3JldFJvdGF0aW9uLFxuICBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQgeyBDdXN0b21lck1hbmFnZWRLZXksIFNlY3JldCB9IGZyb20gXCIuLi9zZWNyZXRzXCI7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW5naW5lQ29uZmlnLFxuICB0eXBlIFByb3h5Q29uZmlnLFxuICB0eXBlIFJlYWRSZXBsaWNhQ29uZmlnLFxuICB0eXBlIENyZWRlbnRpYWxzQ29uZmlnLFxuICB0eXBlIEVuY3J5cHRpb25Db25maWcsXG4gIHR5cGUgUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyxcbiAgaXNBd3NNYW5hZ2VkS2V5LFxuICBpc0NNS1JlcXVlc3RlZFxufSBmcm9tIFwiLi4vLi4vLi4vcGF0dGVybnMvYXdzL2RhdGFiYXNlXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU5hbWluZyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXNvdXJjZU5hbWluZ1wiO1xuXG5pbnRlcmZhY2UgUmRzUHJvcHMge1xuICB2cGM6IElWcGM7XG4gIGRhdGFiYXNlTmFtZT86IHN0cmluZztcbiAgZW5naW5lPzogSUluc3RhbmNlRW5naW5lO1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIGluc3RhbmNlVHlwZT86IHN0cmluZztcbiAgbWF4QWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgYmFja3VwUmV0ZW50aW9uPzogRHVyYXRpb247XG4gIHByZWZlcnJlZEJhY2t1cFdpbmRvdz86IHN0cmluZztcbiAgY2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgcG9ydD86IG51bWJlcjtcbiAgcGVyZm9ybWFuY2VJbnNpZ2h0cz86IFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcgfCBmYWxzZTtcbiAgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdO1xuICBtdWx0aUF6PzogYm9vbGVhbjtcbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICByZWFkUmVwbGljYT86IFJlYWRSZXBsaWNhQ29uZmlnIHwgZmFsc2U7XG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIGVuY3J5cHRpb24/OiBFbmNyeXB0aW9uQ29uZmlnO1xuICBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQVJOIG9yIGlkZW50aWZpZXIgb2YgREIgaW5zdGFuY2Ugc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJkc0luc3RhbmNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIGRhdGFiYXNlU2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwcml2YXRlIHBvcnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBlbmdpbmVDb25maWc6IEVuZ2luZUNvbmZpZztcbiAgcHJpdmF0ZSBkYXRhYmFzZUNyZWRlbnRpYWxzOiBTZWNyZXQ7XG4gIHByaXZhdGUgZGF0YWJhc2U6IERhdGFiYXNlSW5zdGFuY2U7XG4gIHByaXZhdGUgbWFzdGVyU2VjcmV0OiBTZWNyZXQ7XG4gIHByaXZhdGUgZGF0YWJhc2VQcm94eTogRGF0YWJhc2VQcm94eTtcbiAgcHJpdmF0ZSBkYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHJpdmF0ZSByZWFkUmVwbGljYVNlY3VyaXR5R3JvdXA6IFNlY3VyaXR5R3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucG9ydCA9IHByb3BzLnBvcnQgfHwgMzUyNTU7XG4gICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG5cbiAgICAvLyBQb3N0Z3JlU1FMIGZhbGxiYWNrIGZvciBkaXJlY3QgdXNhZ2UgLSBlbnN1cmUgZW5naW5lIGFuZCBlbmdpbmVDb25maWcgbWF0Y2hcbiAgICB0aGlzLmVuZ2luZUNvbmZpZyA9IHByb3BzLmVuZ2luZUNvbmZpZyA/PyB7XG4gICAgICBkZWZhdWx0VXNlcm5hbWU6IFwicG9zdGdyZXNcIixcbiAgICAgIHNzbFBhcmFtZXRlcnM6IHsgXCJyZHMuZm9yY2Vfc3NsXCI6IFwiMVwiIH0sXG4gICAgICByb3RhdGlvbkFwcE5hbWU6IFwiU2VjcmV0c01hbmFnZXJSRFNQb3N0Z3JlU1FMUm90YXRpb25NdWx0aVVzZXJcIlxuICAgIH07XG5cbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcblxuICAgIC8vIFNlY3JldCByb3RhdGlvbiBlbmFibGVkIGJ5IGRlZmF1bHQgKG9wdC1vdXQgd2l0aCBzZWNyZXRSb3RhdGlvbjogZmFsc2UpXG4gICAgY29uc3Qgc2VjcmV0Um90YXRpb25EaXNhYmxlZCA9IHByb3BzLmNyZWRlbnRpYWxzPy5zZWNyZXRSb3RhdGlvbiA9PT0gZmFsc2U7XG4gICAgaWYgKCFzZWNyZXRSb3RhdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJvdGF0ZVNlY3JldChwcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnByb3h5ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMucHJveHkgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFkZFByb3h5KHByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucmVhZFJlcGxpY2EgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5yZWFkUmVwbGljYSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWRkUmVhZFJlcGxpY2EocHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIGFkZERhdGFiYXNlKHByb3BzOiBSZHNQcm9wcykge1xuICAgIGNvbnN0IHVzZXJuYW1lID1cbiAgICAgIHByb3BzLmNyZWRlbnRpYWxzPy51c2VybmFtZSA/PyB0aGlzLmVuZ2luZUNvbmZpZy5kZWZhdWx0VXNlcm5hbWU7XG4gICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzID0gbmV3IFNlY3JldChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAge1xuICAgICAgICBzZWNyZXROYW1lOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB1c2VybmFtZVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGV4Y2x1ZGVQdW5jdHVhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBpbmNsdWRlU3BhY2U6IGZhbHNlLFxuICAgICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiBcInBhc3N3b3JkXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1TZWN1cml0eUdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgUkRTIGRhdGFiYXNlIGluc3RhbmNlICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gU2VsZi1yZWZlcmVuY2luZyBydWxlIGZvciBtdWx0aS1BWiBjb21tdW5pY2F0aW9uXG4gICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydClcbiAgICApO1xuXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwXSxcbiAgICAgIGRlZmF1bHRQb3J0OiBQb3J0LnRjcCh0aGlzLnBvcnQpXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdG9yYWdlRW5jcnlwdGlvbktleSA9IGlzQ01LUmVxdWVzdGVkKHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkpXG4gICAgICA/IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9Q2x1c3RlckVuY3J5cHRpb25LZXlgLFxuICAgICAgICAgIHsgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRhdGFiYXNlTmFtZX0vZW5jcnlwdGlvbktleWAgfVxuICAgICAgICApLmtleVxuICAgICAgOiBpc0F3c01hbmFnZWRLZXkocHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSkgfHxcbiAgICAgICAgICBwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5ID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5O1xuXG4gICAgY29uc3QgcGlFbmFibGVkID0gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyAhPT0gZmFsc2U7XG4gICAgY29uc3QgcGlDb25maWcgPVxuICAgICAgcGlFbmFibGVkICYmIHR5cGVvZiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0c1xuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBlcmZvcm1hbmNlSW5zaWdodHNFbmNyeXB0aW9uS2V5ID1cbiAgICAgIHBpRW5hYmxlZCAmJiBpc0NNS1JlcXVlc3RlZChwaUNvbmZpZz8uZW5jcnlwdGlvbktleSlcbiAgICAgICAgPyBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1QZXJmb3JtYW5jZUluc2lnaHRzS2V5YCxcbiAgICAgICAgICAgIHsgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRhdGFiYXNlTmFtZX0vSW5zaWdodHNLZXlgIH1cbiAgICAgICAgICApLmtleVxuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb24gPSBwaUVuYWJsZWRcbiAgICAgID8gdGhpcy5nZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ocGlDb25maWc/LnJldGVudGlvblBlcmlvZCA/PyA3KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBlbmdpbmUgPVxuICAgICAgcHJvcHMuZW5naW5lIHx8XG4gICAgICBEYXRhYmFzZUluc3RhbmNlRW5naW5lLnBvc3RncmVzKHtcbiAgICAgICAgdmVyc2lvbjogUG9zdGdyZXNFbmdpbmVWZXJzaW9uLlZFUl8xN181XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHBhcmFtZXRlckdyb3VwID0gbmV3IFBhcmFtZXRlckdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1QYXJhbWV0ZXJHcm91cGAsXG4gICAgICB7XG4gICAgICAgIGVuZ2luZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBQYXJhbWV0ZXIgZ3JvdXAgZm9yICR7cHJvcHMuZGF0YWJhc2VOYW1lfSB3aXRoIHNlY3VyaXR5IGRlZmF1bHRzYCxcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy5lbmdpbmVDb25maWcuc3NsUGFyYW1ldGVyc1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBVc2UgUFVCTElDIHN1Ym5ldCBmb3IgcHVibGljbHlBY2Nlc3NpYmxlIGRhdGFiYXNlcyAoZS5nLiwgdGlua2VyZXIgdGllciB3aXRob3V0IE5BVClcbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMucHVibGljbHlBY2Nlc3NpYmxlXG4gICAgICA/IFN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICA6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIGNvbnN0IGNvbW1vbkluc3RhbmNlUHJvcHMgPSB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRUeXBlXG4gICAgICB9LFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cF0sXG4gICAgICBlbmdpbmUsXG4gICAgICBwYXJhbWV0ZXJHcm91cCxcbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICBiYWNrdXBSZXRlbnRpb246IHByb3BzLmJhY2t1cFJldGVudGlvbiB8fCBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHByZWZlcnJlZEJhY2t1cFdpbmRvdzogcHJvcHMucHJlZmVycmVkQmFja3VwV2luZG93IHx8IFwiMDI6MDAtMDM6MDBcIixcbiAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHRydWUsXG4gICAgICBzdG9yYWdlRW5jcnlwdGlvbktleSxcbiAgICAgIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZS5HUDMsXG4gICAgICBjYUNlcnRpZmljYXRlOiBDYUNlcnRpZmljYXRlLlJEU19DQV9SU0E0MDk2X0cxLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5TTkFQU0hPVCxcbiAgICAgIGRlbGV0ZUF1dG9tYXRlZEJhY2t1cHM6IGZhbHNlLFxuICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogcGlFbmFibGVkLFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogcGVyZm9ybWFuY2VJbnNpZ2h0c0VuY3J5cHRpb25LZXksXG4gICAgICBwZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb246IHBlcmZvcm1hbmNlSW5zaWdodHNSZXRlbnRpb24sXG4gICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFJlc291cmNlTmFtaW5nLmRiSW5zdGFuY2VJZChwcm9wcy5kYXRhYmFzZU5hbWUhKSxcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlXG4gICAgICAgID8gbmV3IEluc3RhbmNlVHlwZShwcm9wcy5pbnN0YW5jZVR5cGUpXG4gICAgICAgIDogbmV3IEluc3RhbmNlVHlwZShcInQ0Zy5sYXJnZVwiKSxcbiAgICAgIG1heEFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLm1heEFsbG9jYXRlZFN0b3JhZ2UgfHwgNTAwLFxuICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBwcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwgfHwgRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIG11bHRpQXo6IHByb3BzLm11bHRpQXogIT09IGZhbHNlLFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24gPz8gdHJ1ZSxcbiAgICAgIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93OlxuICAgICAgICBwcm9wcy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyB8fCBcIlNhdDoxMjozMC1TYXQ6MjA6MzBcIixcbiAgICAgIHB1YmxpY2x5QWNjZXNzaWJsZTogcHJvcHMucHVibGljbHlBY2Nlc3NpYmxlID8/IGZhbHNlXG4gICAgfTtcblxuICAgIGlmIChwcm9wcy5zbmFwc2hvdElkZW50aWZpZXIpIHtcbiAgICAgIC8vIENyZWF0ZSBmcm9tIHNuYXBzaG90XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IERhdGFiYXNlSW5zdGFuY2VGcm9tU25hcHNob3QoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1EYXRhYmFzZWAsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5jb21tb25JbnN0YW5jZVByb3BzLFxuICAgICAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgICAgIC8vIEZvciBzbmFwc2hvdHMsIGNyZWRlbnRpYWxzIGFyZSB1c2VkIHRvIHJlc2V0IHRoZSBwYXNzd29yZFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiBTbmFwc2hvdENyZWRlbnRpYWxzLmZyb21TZWNyZXQoXG4gICAgICAgICAgICB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IGluc3RhbmNlXG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IERhdGFiYXNlSW5zdGFuY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1EYXRhYmFzZWAsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5jb21tb25JbnN0YW5jZVByb3BzLFxuICAgICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscy5mcm9tU2VjcmV0KHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXQpXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcm90YXRlU2VjcmV0KHByb3BzOiBSZHNQcm9wcykge1xuICAgIGNvbnN0IHJvdGF0aW9uQ29uZmlnID0gcHJvcHMuY3JlZGVudGlhbHM/LnNlY3JldFJvdGF0aW9uO1xuICAgIGNvbnN0IHJvdGF0aW9uUGVyaW9kID1cbiAgICAgICh0eXBlb2Ygcm90YXRpb25Db25maWcgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgcm90YXRpb25Db25maWc/LmF1dG9tYXRpY2FsbHlBZnRlcikgfHxcbiAgICAgIER1cmF0aW9uLmRheXMoMzApO1xuXG4gICAgdGhpcy5tYXN0ZXJTZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1NYXN0ZXJTZWNyZXRgLCB7XG4gICAgICBzZWNyZXROYW1lOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9TWFzdGVyU2VjcmV0YFxuICAgIH0pO1xuXG4gICAgbmV3IFNlY3JldFJvdGF0aW9uKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1TZWNyZXRSb3RhdGlvbmAsIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbihcbiAgICAgICAgdGhpcy5lbmdpbmVDb25maWcucm90YXRpb25BcHBOYW1lLFxuICAgICAgICBcIjEuMS4zNjdcIixcbiAgICAgICAgeyBpc011bHRpVXNlcjogdHJ1ZSB9XG4gICAgICApLFxuICAgICAgc2VjcmV0OiB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0LFxuICAgICAgbWFzdGVyU2VjcmV0OiB0aGlzLm1hc3RlclNlY3JldC5zZWNyZXQsXG4gICAgICB0YXJnZXQ6IHRoaXMuZGF0YWJhc2UsXG4gICAgICB2cGM6IHRoaXMuZGF0YWJhc2UudnBjLFxuICAgICAgYXV0b21hdGljYWxseUFmdGVyOiByb3RhdGlvblBlcmlvZFxuICAgIH0pO1xuICB9XG5cbiAgYWRkUHJveHkocHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgY29uc3QgcHJveHlDb25maWcgPSBwcm9wcy5wcm94eSBhcyBQcm94eUNvbmZpZztcbiAgICBjb25zdCB2cGNTdWJuZXRzOiBTdWJuZXRTZWxlY3Rpb24gPSBwcm94eUNvbmZpZy52cGNTdWJuZXRzID8/IHtcbiAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU1xuICAgIH07XG5cbiAgICB0aGlzLmRhdGFiYXNlUHJveHlTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVByb3h5U2VjdXJpdHlHcm91cGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIFJEUyBQcm94eSBmb3IgJHtwcm9wcy5kYXRhYmFzZU5hbWV9YFxuICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBBbGxvdyBwcm94eSB0byBjb25uZWN0IHRvIGRhdGFiYXNlXG4gICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICB0aGlzLmRhdGFiYXNlUHJveHlTZWN1cml0eUdyb3VwLFxuICAgICAgUG9ydC50Y3AodGhpcy5wb3J0KSxcbiAgICAgIFwiQWxsb3cgUkRTIFByb3h5IHRvIGNvbm5lY3QgdG8gZGF0YWJhc2VcIlxuICAgICk7XG5cbiAgICB0aGlzLmRhdGFiYXNlUHJveHkgPSBuZXcgRGF0YWJhc2VQcm94eShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VQcm94eWAsXG4gICAgICB7XG4gICAgICAgIGRiUHJveHlOYW1lOiBSZXNvdXJjZU5hbWluZy5wcm94eU5hbWUocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICAgIHByb3h5VGFyZ2V0OiBQcm94eVRhcmdldC5mcm9tSW5zdGFuY2UodGhpcy5kYXRhYmFzZSksXG4gICAgICAgIHNlY3JldHM6IFt0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0XSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLmRhdGFiYXNlUHJveHlTZWN1cml0eUdyb3VwXSxcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0cyxcbiAgICAgICAgcmVxdWlyZVRMUzogcHJveHlDb25maWcucmVxdWlyZVRMUyA/PyB0cnVlLFxuICAgICAgICBib3Jyb3dUaW1lb3V0OiBwcm94eUNvbmZpZy5jb25uZWN0aW9uQm9ycm93VGltZW91dFxuICAgICAgICAgID8gRHVyYXRpb24uc2Vjb25kcyhwcm94eUNvbmZpZy5jb25uZWN0aW9uQm9ycm93VGltZW91dClcbiAgICAgICAgICA6IER1cmF0aW9uLnNlY29uZHMoMTIwKSxcbiAgICAgICAgbWF4Q29ubmVjdGlvbnNQZXJjZW50OiBwcm94eUNvbmZpZy5tYXhDb25uZWN0aW9ucyxcbiAgICAgICAgbWF4SWRsZUNvbm5lY3Rpb25zUGVyY2VudDogcHJveHlDb25maWcubWF4SWRsZUNvbm5lY3Rpb25zXG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVByb3h5RW5kcG9pbnRPdXRwdXRgLCB7XG4gICAgICBrZXk6IGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50YCxcbiAgICAgIGV4cG9ydE5hbWU6IGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50YCxcbiAgICAgIHZhbHVlOiB0aGlzLmRhdGFiYXNlUHJveHkuZW5kcG9pbnRcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJlYWRSZXBsaWNhKHByb3BzOiBSZHNQcm9wcykge1xuICAgIGNvbnN0IHJlcGxpY2FDb25maWcgPSBwcm9wcy5yZWFkUmVwbGljYSBhcyBSZWFkUmVwbGljYUNvbmZpZztcbiAgICBjb25zdCByZXBsaWNhSW5zdGFuY2VUeXBlID1cbiAgICAgIHJlcGxpY2FDb25maWcuaW5zdGFuY2VUeXBlID8/IHByb3BzLmluc3RhbmNlVHlwZSA/PyBcInQ0Zy5sYXJnZVwiO1xuXG4gICAgY29uc3QgcGlFbmFibGVkID0gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyAhPT0gZmFsc2U7XG4gICAgY29uc3QgcGlDb25maWcgPVxuICAgICAgcGlFbmFibGVkICYmIHR5cGVvZiBwcm9wcy5wZXJmb3JtYW5jZUluc2lnaHRzID09PSBcIm9iamVjdFwiXG4gICAgICAgID8gcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0c1xuICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJlYWRSZXBsaWNhUGVyZm9ybWFuY2VJbnNpZ2h0c0tleSA9XG4gICAgICBwaUVuYWJsZWQgJiYgaXNDTUtSZXF1ZXN0ZWQocGlDb25maWc/LmVuY3J5cHRpb25LZXkpXG4gICAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZFJlcGxpY2FSZWFkZXJJbnNpZ2h0c0tleWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L1JlYWRSZXBsaWNhSW5zaWdodHNLZXlgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKS5rZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZWFkUmVwbGljYVNlY3VyaXR5R3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciBSRFMgcmVhZCByZXBsaWNhIG9mICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQWxsb3cgcHJpbWFyeSBkYXRhYmFzZSB0byByZXBsaWNhdGUgdG8gcmVhZCByZXBsaWNhXG4gICAgdGhpcy5yZWFkUmVwbGljYVNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoXG4gICAgICB0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydCksXG4gICAgICBcIkFsbG93IHByaW1hcnkgZGF0YWJhc2UgdG8gcmVwbGljYXRlIHRvIHJlYWQgcmVwbGljYVwiXG4gICAgKTtcblxuICAgIC8vIERlbGV0aW9uIHdhaXRlciBlbnN1cmVzIHByaW1hcnkgaXMgXCJhdmFpbGFibGVcIiBiZWZvcmUgQ2xvdWRGb3JtYXRpb24gZGVsZXRlcyBpdC5cbiAgICAvLyBXaGVuIHRoZSByZWFkIHJlcGxpY2EgaXMgZGVsZXRlZCwgdGhlIHByaW1hcnkgZW50ZXJzIFwibW9kaWZ5aW5nXCIgc3RhdGUuXG4gICAgLy8gV2l0aG91dCB0aGlzIHdhaXRlciwgdGhlIGZpbmFsIHNuYXBzaG90IGNyZWF0aW9uIGZhaWxzLlxuICAgIGNvbnN0IGluc3RhbmNlSWQgPSBSZXNvdXJjZU5hbWluZy5kYkluc3RhbmNlSWQocHJvcHMuZGF0YWJhc2VOYW1lISk7XG4gICAgY29uc3Qgd2FpdGVyVGltZW91dCA9IER1cmF0aW9uLm1pbnV0ZXMoMTApO1xuICAgIGNvbnN0IGRlbGV0aW9uV2FpdGVyID0gbmV3IEN1c3RvbVJlc291cmNlKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1EZWxldGlvbldhaXRlcmAsXG4gICAgICB7XG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIHRpbWVvdXQ6IHdhaXRlclRpbWVvdXQucGx1cyhEdXJhdGlvbi5zZWNvbmRzKDMwKSksXG4gICAgICAgIGxhbWJkYURlc2NyaXB0aW9uOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9IGRlbGV0aW9uIHdhaXRlcmAsXG4gICAgICAgIGlubGluZUNvZGU6IGBcbmNvbnN0IHsgUkRTQ2xpZW50IH0gPSByZXF1aXJlKCdAYXdzLXNkay9jbGllbnQtcmRzJyk7XG5jb25zdCB7IHdhaXRVbnRpbERCSW5zdGFuY2VBdmFpbGFibGUgfSA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL2NsaWVudC1yZHMnKTtcblxuZXhwb3J0cy5oYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnNvbGUubG9nKCdFdmVudDonLCBKU09OLnN0cmluZ2lmeShldmVudCwgbnVsbCwgMikpO1xuICBjb25zdCBpbnN0YW5jZUlkID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkluc3RhbmNlSWRlbnRpZmllcjtcbiAgY29uc3QgcGh5c2ljYWxSZXNvdXJjZUlkID0gZXZlbnQuUGh5c2ljYWxSZXNvdXJjZUlkIHx8IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkIHx8ICdyZHMtZGVsZXRpb24td2FpdGVyJztcblxuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdEZWxldGUnKSB7XG4gICAgY29uc29sZS5sb2coJ1dhaXRpbmcgZm9yIGluc3RhbmNlIHRvIGJlIGF2YWlsYWJsZTonLCBpbnN0YW5jZUlkKTtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUkRTQ2xpZW50KHt9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdFVudGlsREJJbnN0YW5jZUF2YWlsYWJsZShcbiAgICAgICAgeyBjbGllbnQsIG1heFdhaXRUaW1lOiAke3dhaXRlclRpbWVvdXQudG9TZWNvbmRzKCl9LCBtaW5EZWxheTogMTAsIG1heERlbGF5OiAzMCB9LFxuICAgICAgICB7IERCSW5zdGFuY2VJZGVudGlmaWVyOiBpbnN0YW5jZUlkIH1cbiAgICAgICk7XG4gICAgICBjb25zb2xlLmxvZygnSW5zdGFuY2UgaXMgYXZhaWxhYmxlLCBkZWxldGlvbiBjYW4gcHJvY2VlZCcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFcnJvcicgfHxcbiAgICAgICAgICBlcnJvci5tZXNzYWdlPy5pbmNsdWRlcygnREJJbnN0YW5jZU5vdEZvdW5kJykgfHxcbiAgICAgICAgICBlcnJvci5zdGF0ZSA9PT0gJ0ZBSUxVUkUnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdJbnN0YW5jZSBub3QgZm91bmQgb3Igd2FpdGVyIGZhaWxlZCwgcHJvY2VlZGluZyB3aXRoIGRlbGV0aW9uJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3YWl0aW5nIGZvciBpbnN0YW5jZTonLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4geyBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCB9O1xufTtcbiAgICAgICAgYCxcbiAgICAgICAgaW5saW5lUG9saWN5OiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcInJkczpEZXNjcmliZURCSW5zdGFuY2VzXCJdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIEluc3RhbmNlSWRlbnRpZmllcjogaW5zdGFuY2VJZCxcbiAgICAgICAgICBWZXJzaW9uOiBcIjEuMC4wXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG5cbiAgICBkZWxldGlvbldhaXRlci5yZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5kYXRhYmFzZSk7XG5cbiAgICBjb25zdCByZWFkUmVwbGljYSA9IG5ldyBEYXRhYmFzZUluc3RhbmNlUmVhZFJlcGxpY2EoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJlYWRSZXBsaWNhYCxcbiAgICAgIHtcbiAgICAgICAgc291cmNlRGF0YWJhc2VJbnN0YW5jZTogdGhpcy5kYXRhYmFzZSxcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICAgIHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU1xuICAgICAgICB9LFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW3RoaXMucmVhZFJlcGxpY2FTZWN1cml0eUdyb3VwXSxcbiAgICAgICAgYWxsb2NhdGVkU3RvcmFnZTogcHJvcHMuYWxsb2NhdGVkU3RvcmFnZSxcbiAgICAgICAgc3RvcmFnZUVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgICAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlLkdQMyxcbiAgICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMSxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICBkZWxldGVBdXRvbWF0ZWRCYWNrdXBzOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogcGlFbmFibGVkLFxuICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OiByZWFkUmVwbGljYVBlcmZvcm1hbmNlSW5zaWdodHNLZXksXG4gICAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogcGlFbmFibGVkXG4gICAgICAgICAgPyB0aGlzLmdldFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbihwaUNvbmZpZz8ucmV0ZW50aW9uUGVyaW9kID8/IDcpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogUmVzb3VyY2VOYW1pbmcucmVhZFJlcGxpY2FJZChwcm9wcy5kYXRhYmFzZU5hbWUhKSxcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgSW5zdGFuY2VUeXBlKHJlcGxpY2FJbnN0YW5jZVR5cGUpLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lOiByZXBsaWNhQ29uZmlnLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIG1heEFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLm1heEFsbG9jYXRlZFN0b3JhZ2UgfHwgNTAwLFxuICAgICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHByb3BzLm1vbml0b3JpbmdJbnRlcnZhbCB8fCBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6ICE9PSBmYWxzZSxcbiAgICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IHByb3BzLmRlbGV0aW9uUHJvdGVjdGlvbiA/PyB0cnVlLFxuICAgICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzpcbiAgICAgICAgICBwcm9wcy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyB8fCBcIlNhdDoxMjozMC1TYXQ6MjA6MzBcIlxuICAgICAgfVxuICAgICk7XG5cbiAgICByZWFkUmVwbGljYS5ub2RlLmFkZERlcGVuZGVuY3koZGVsZXRpb25XYWl0ZXIucmVzb3VyY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24oXG4gICAgZGF5cz86IG51bWJlclxuICApOiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ge1xuICAgIHN3aXRjaCAoZGF5cykge1xuICAgICAgY2FzZSA3OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkRFRkFVTFQ7XG4gICAgICBjYXNlIDMxOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xO1xuICAgICAgY2FzZSA5MzpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMztcbiAgICAgIGNhc2UgMTg2OlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU182O1xuICAgICAgY2FzZSAzNzI6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzEyO1xuICAgICAgY2FzZSA3MzE6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTE9OR19URVJNO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTtcbiAgICB9XG4gIH1cblxuICBnZXRIb3N0RW5kcG9pbnQoKSB7XG4gICAgaWYgKHRoaXMuZGF0YWJhc2VQcm94eSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VQcm94eS5lbmRwb2ludDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZGJJbnN0YW5jZUVuZHBvaW50QWRkcmVzcztcbiAgICB9XG4gIH1cblxuICBnZXRIb3N0UG9ydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5wb3J0KTtcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IFNlY3JldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscztcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogUmRzUHJvcHMpOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBSZHNQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IChzYi5nZXROZXR3b3JrKCkgYXMgSVZwYykgfHwgcHJvcHMudnBjLFxuICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHByb3BzPy5zZWN1cml0eUdyb3VwSWRzID8/IFtdLFxuICAgICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lIHx8IGAke2lkLnJlcGxhY2UoXCJSZHNcIiwgXCJcIil9YFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIG5ld1Byb3BzKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzSW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9yZHNJbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBaUU7QUFDakUsaURBUTZCO0FBQzdCLGlEQWU2QjtBQUM3Qix1RUFHd0M7QUFDeEMsdURBQWlEO0FBQ2pELGlEQUE4RDtBQUM5RCwyQ0FBdUM7QUFDdkMsZ0NBQXVDO0FBQ3ZDLHdDQUF3RDtBQUN4RCxnRUFBNkQ7QUFFN0QsNkRBU3dDO0FBQ3hDLGtFQUErRDtBQStCL0QsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFjeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFlO1FBQ3ZELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFckIsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSTtZQUN4QyxlQUFlLEVBQUUsVUFBVTtZQUMzQixhQUFhLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLGVBQWUsRUFBRSw4Q0FBOEM7U0FDaEUsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsMEVBQTBFO1FBQzFFLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLEtBQUssS0FBSyxDQUFDO1FBQzNFLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxT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LEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMWNELGtDQTBjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgSW5zdGFuY2VUeXBlLFxuICB0eXBlIElWcGMsXG4gIFBvcnQsXG4gIHR5cGUgU3VibmV0U2VsZWN0aW9uLFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBDYUNlcnRpZmljYXRlLFxuICBDcmVkZW50aWFscyxcbiAgRGF0YWJhc2VJbnN0YW5jZSxcbiAgRGF0YWJhc2VJbnN0YW5jZUZyb21TbmFwc2hvdCxcbiAgRGF0YWJhc2VJbnN0YW5jZUVuZ2luZSxcbiAgRGF0YWJhc2VJbnN0YW5jZVJlYWRSZXBsaWNhLFxuICBEYXRhYmFzZVByb3h5LFxuICB0eXBlIElJbnN0YW5jZUVuZ2luZSxcbiAgUGFyYW1ldGVyR3JvdXAsXG4gIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbixcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBQcm94eVRhcmdldCxcbiAgU25hcHNob3RDcmVkZW50aWFscyxcbiAgU3RvcmFnZVR5cGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7XG4gIFNlY3JldFJvdGF0aW9uLFxuICBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBFZmZlY3QgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFNlY3VyaXR5R3JvdXAgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQgeyBDdXN0b21lck1hbmFnZWRLZXksIFNlY3JldCB9IGZyb20gXCIuLi9zZWNyZXRzXCI7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY3VzdG9tUmVzb3VyY2VcIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW5naW5lQ29uZmlnLFxuICB0eXBlIFByb3h5Q29uZmlnLFxuICB0eXBlIFJlYWRSZXBsaWNhQ29uZmlnLFxuICB0eXBlIENyZWRlbnRpYWxzQ29uZmlnLFxuICB0eXBlIEVuY3J5cHRpb25Db25maWcsXG4gIHR5cGUgUGVyZm9ybWFuY2VJbnNpZ2h0c0NvbmZpZyxcbiAgaXNBd3NNYW5hZ2VkS2V5LFxuICBpc0NNS1JlcXVlc3RlZFxufSBmcm9tIFwiLi4vLi4vLi4vcGF0dGVybnMvYXdzL2RhdGFiYXNlXCI7XG5pbXBvcnQgeyBSZXNvdXJjZU5hbWluZyB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXNvdXJjZU5hbWluZ1wiO1xuXG5pbnRlcmZhY2UgUmRzUHJvcHMge1xuICB2cGM6IElWcGM7XG4gIGRhdGFiYXNlTmFtZT86IHN0cmluZztcbiAgZW5naW5lPzogSUluc3RhbmNlRW5naW5lO1xuICBlbmdpbmVDb25maWc/OiBFbmdpbmVDb25maWc7XG4gIGluc3RhbmNlVHlwZT86IHN0cmluZztcbiAgbWF4QWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcbiAgYmFja3VwUmV0ZW50aW9uPzogRHVyYXRpb247XG4gIHByZWZlcnJlZEJhY2t1cFdpbmRvdz86IHN0cmluZztcbiAgY2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgcG9ydD86IG51bWJlcjtcbiAgcGVyZm9ybWFuY2VJbnNpZ2h0cz86IFBlcmZvcm1hbmNlSW5zaWdodHNDb25maWcgfCBmYWxzZTtcbiAgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdO1xuICBtdWx0aUF6PzogYm9vbGVhbjtcbiAgcHJveHk/OiBQcm94eUNvbmZpZyB8IGZhbHNlO1xuICByZWFkUmVwbGljYT86IFJlYWRSZXBsaWNhQ29uZmlnIHwgZmFsc2U7XG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHNDb25maWc7XG4gIGVuY3J5cHRpb24/OiBFbmNyeXB0aW9uQ29uZmlnO1xuICBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xuICBkZWxldGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKiogQVJOIG9yIGlkZW50aWZpZXIgb2YgREIgaW5zdGFuY2Ugc25hcHNob3QgdG8gcmVzdG9yZSBmcm9tICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZztcbiAgLyoqIFVzZXJuYW1lIGZyb20gdGhlIHNuYXBzaG90IChyZXF1aXJlZCB3aGVuIHJlc3RvcmluZyBmcm9tIHNuYXBzaG90IHRvIHJlc2V0IHBhc3N3b3JkKSAqL1xuICBzbmFwc2hvdFVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUmRzSW5zdGFuY2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuICBwdWJsaWMgZGF0YWJhc2VTZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuICBwdWJsaWMgdnBjOiBJVnBjO1xuXG4gIHByaXZhdGUgcG9ydDogbnVtYmVyO1xuICBwcml2YXRlIGVuZ2luZUNvbmZpZzogRW5naW5lQ29uZmlnO1xuICBwcml2YXRlIGRhdGFiYXNlQ3JlZGVudGlhbHM6IFNlY3JldDtcbiAgcHJpdmF0ZSBkYXRhYmFzZTogRGF0YWJhc2VJbnN0YW5jZTtcbiAgcHJpdmF0ZSBtYXN0ZXJTZWNyZXQ6IFNlY3JldDtcbiAgcHJpdmF0ZSBkYXRhYmFzZVByb3h5OiBEYXRhYmFzZVByb3h5O1xuICBwcml2YXRlIGRhdGFiYXNlUHJveHlTZWN1cml0eUdyb3VwOiBTZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIHJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmRzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wb3J0ID0gcHJvcHMucG9ydCB8fCAzNTI1NTtcbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYztcblxuICAgIC8vIFBvc3RncmVTUUwgZmFsbGJhY2sgZm9yIGRpcmVjdCB1c2FnZSAtIGVuc3VyZSBlbmdpbmUgYW5kIGVuZ2luZUNvbmZpZyBtYXRjaFxuICAgIHRoaXMuZW5naW5lQ29uZmlnID0gcHJvcHMuZW5naW5lQ29uZmlnID8/IHtcbiAgICAgIGRlZmF1bHRVc2VybmFtZTogXCJwb3N0Z3Jlc1wiLFxuICAgICAgc3NsUGFyYW1ldGVyczogeyBcInJkcy5mb3JjZV9zc2xcIjogXCIxXCIgfSxcbiAgICAgIHJvdGF0aW9uQXBwTmFtZTogXCJTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvbk11bHRpVXNlclwiXG4gICAgfTtcblxuICAgIHRoaXMuYWRkRGF0YWJhc2UocHJvcHMpO1xuXG4gICAgLy8gU2VjcmV0IHJvdGF0aW9uIGVuYWJsZWQgYnkgZGVmYXVsdCAob3B0LW91dCB3aXRoIHNlY3JldFJvdGF0aW9uOiBmYWxzZSlcbiAgICBjb25zdCBzZWNyZXRSb3RhdGlvbkRpc2FibGVkID0gcHJvcHMuY3JlZGVudGlhbHM/LnNlY3JldFJvdGF0aW9uID09PSBmYWxzZTtcbiAgICBpZiAoIXNlY3JldFJvdGF0aW9uRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucm90YXRlU2VjcmV0KHByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucHJveHkgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5wcm94eSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWRkUHJveHkocHJvcHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5yZWFkUmVwbGljYSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnJlYWRSZXBsaWNhICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5hZGRSZWFkUmVwbGljYShwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRGF0YWJhc2UocHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgLy8gVXNlcm5hbWUgcHJpb3JpdHk6IHNuYXBzaG90VXNlcm5hbWUgPiBjcmVkZW50aWFscy51c2VybmFtZSA+IGVuZ2luZSBkZWZhdWx0XG4gICAgY29uc3QgdXNlcm5hbWUgPVxuICAgICAgcHJvcHMuc25hcHNob3RJZGVudGlmaWVyICYmIHByb3BzLnNuYXBzaG90VXNlcm5hbWVcbiAgICAgICAgPyBwcm9wcy5zbmFwc2hvdFVzZXJuYW1lXG4gICAgICAgIDogKHByb3BzLmNyZWRlbnRpYWxzPy51c2VybmFtZSA/PyB0aGlzLmVuZ2luZUNvbmZpZy5kZWZhdWx0VXNlcm5hbWUpO1xuICAgIHRoaXMuZGF0YWJhc2VDcmVkZW50aWFscyA9IG5ldyBTZWNyZXQoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgIHtcbiAgICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNyZWRlbnRpYWxzYCxcbiAgICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdXNlcm5hbWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBleGNsdWRlUHVuY3R1YXRpb246IHRydWUsXG4gICAgICAgICAgaW5jbHVkZVNwYWNlOiBmYWxzZSxcbiAgICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogXCJwYXNzd29yZFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9U2VjdXJpdHlHcm91cGAsXG4gICAgICB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU2VjdXJpdHkgZ3JvdXAgZm9yIFJEUyBkYXRhYmFzZSBpbnN0YW5jZSAke3Byb3BzLmRhdGFiYXNlTmFtZX1gXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIFNlbGYtcmVmZXJlbmNpbmcgcnVsZSBmb3IgbXVsdGktQVogY29tbXVuaWNhdGlvblxuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcCh0aGlzLnBvcnQpXG4gICAgKTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLmRhdGFiYXNlU2VjdXJpdHlHcm91cF0sXG4gICAgICBkZWZhdWx0UG9ydDogUG9ydC50Y3AodGhpcy5wb3J0KVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3RvcmFnZUVuY3J5cHRpb25LZXkgPSBpc0NNS1JlcXVlc3RlZChwcm9wcy5lbmNyeXB0aW9uPy5zdG9yYWdlS2V5KVxuICAgICAgPyBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfUNsdXN0ZXJFbmNyeXB0aW9uS2V5YCxcbiAgICAgICAgICB7IGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L2VuY3J5cHRpb25LZXlgIH1cbiAgICAgICAgKS5rZXlcbiAgICAgIDogaXNBd3NNYW5hZ2VkS2V5KHByb3BzLmVuY3J5cHRpb24/LnN0b3JhZ2VLZXkpIHx8XG4gICAgICAgICAgcHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogcHJvcHMuZW5jcnlwdGlvbj8uc3RvcmFnZUtleTtcblxuICAgIGNvbnN0IHBpRW5hYmxlZCA9IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IHBpQ29uZmlnID1cbiAgICAgIHBpRW5hYmxlZCAmJiB0eXBlb2YgcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBwZXJmb3JtYW5jZUluc2lnaHRzRW5jcnlwdGlvbktleSA9XG4gICAgICBwaUVuYWJsZWQgJiYgaXNDTUtSZXF1ZXN0ZWQocGlDb25maWc/LmVuY3J5cHRpb25LZXkpXG4gICAgICAgID8gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UGVyZm9ybWFuY2VJbnNpZ2h0c0tleWAsXG4gICAgICAgICAgICB7IGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kYXRhYmFzZU5hbWV9L0luc2lnaHRzS2V5YCB9XG4gICAgICAgICAgKS5rZXlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBwZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uID0gcGlFbmFibGVkXG4gICAgICA/IHRoaXMuZ2V0UGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uKHBpQ29uZmlnPy5yZXRlbnRpb25QZXJpb2QgPz8gNylcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZW5naW5lID1cbiAgICAgIHByb3BzLmVuZ2luZSB8fFxuICAgICAgRGF0YWJhc2VJbnN0YW5jZUVuZ2luZS5wb3N0Z3Jlcyh7XG4gICAgICAgIHZlcnNpb246IFBvc3RncmVzRW5naW5lVmVyc2lvbi5WRVJfMTdfNVxuICAgICAgfSk7XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJHcm91cCA9IG5ldyBQYXJhbWV0ZXJHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UGFyYW1ldGVyR3JvdXBgLFxuICAgICAge1xuICAgICAgICBlbmdpbmUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGFyYW1ldGVyIGdyb3VwIGZvciAke3Byb3BzLmRhdGFiYXNlTmFtZX0gd2l0aCBzZWN1cml0eSBkZWZhdWx0c2AsXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMuZW5naW5lQ29uZmlnLnNzbFBhcmFtZXRlcnNcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gVXNlIFBVQkxJQyBzdWJuZXQgZm9yIHB1YmxpY2x5QWNjZXNzaWJsZSBkYXRhYmFzZXMgKGUuZy4sIHRpbmtlcmVyIHRpZXIgd2l0aG91dCBOQVQpXG4gICAgY29uc3Qgc3VibmV0VHlwZSA9IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZVxuICAgICAgPyBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1M7XG5cbiAgICBjb25zdCBjb21tb25JbnN0YW5jZVByb3BzID0ge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgc3VibmV0VHlwZVxuICAgICAgfSxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXBdLFxuICAgICAgZW5naW5lLFxuICAgICAgcGFyYW1ldGVyR3JvdXAsXG4gICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgYmFja3VwUmV0ZW50aW9uOiBwcm9wcy5iYWNrdXBSZXRlbnRpb24gfHwgRHVyYXRpb24uZGF5cygxNCksXG4gICAgICBwcmVmZXJyZWRCYWNrdXBXaW5kb3c6IHByb3BzLnByZWZlcnJlZEJhY2t1cFdpbmRvdyB8fCBcIjAyOjAwLTAzOjAwXCIsXG4gICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgc3RvcmFnZUVuY3J5cHRpb25LZXksXG4gICAgICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUuR1AzLFxuICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuU05BUFNIT1QsXG4gICAgICBkZWxldGVBdXRvbWF0ZWRCYWNrdXBzOiBmYWxzZSxcbiAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IHBpRW5hYmxlZCxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodEVuY3J5cHRpb25LZXk6IHBlcmZvcm1hbmNlSW5zaWdodHNFbmNyeXB0aW9uS2V5LFxuICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uOiBwZXJmb3JtYW5jZUluc2lnaHRzUmV0ZW50aW9uLFxuICAgICAgaW5zdGFuY2VJZGVudGlmaWVyOiBSZXNvdXJjZU5hbWluZy5kYkluc3RhbmNlSWQocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZVxuICAgICAgICA/IG5ldyBJbnN0YW5jZVR5cGUocHJvcHMuaW5zdGFuY2VUeXBlKVxuICAgICAgICA6IG5ldyBJbnN0YW5jZVR5cGUoXCJ0NGcubGFyZ2VcIiksXG4gICAgICBtYXhBbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5tYXhBbGxvY2F0ZWRTdG9yYWdlIHx8IDUwMCxcbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsIHx8IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6ICE9PSBmYWxzZSxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzpcbiAgICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgfHwgXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCIsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSA/PyBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAocHJvcHMuc25hcHNob3RJZGVudGlmaWVyKSB7XG4gICAgICAvLyBDcmVhdGUgZnJvbSBzbmFwc2hvdFxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBEYXRhYmFzZUluc3RhbmNlRnJvbVNuYXBzaG90KFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VgLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uY29tbW9uSW5zdGFuY2VQcm9wcyxcbiAgICAgICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHByb3BzLnNuYXBzaG90SWRlbnRpZmllcixcbiAgICAgICAgICAvLyBGb3Igc25hcHNob3RzLCBjcmVkZW50aWFscyBhcmUgdXNlZCB0byByZXNldCB0aGUgcGFzc3dvcmRcbiAgICAgICAgICBjcmVkZW50aWFsczogU25hcHNob3RDcmVkZW50aWFscy5mcm9tU2VjcmV0KFxuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBpbnN0YW5jZVxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBEYXRhYmFzZUluc3RhbmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGF0YWJhc2VgLFxuICAgICAgICB7XG4gICAgICAgICAgLi4uY29tbW9uSW5zdGFuY2VQcm9wcyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbHMuZnJvbVNlY3JldCh0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0KVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJvdGF0ZVNlY3JldChwcm9wczogUmRzUHJvcHMpIHtcbiAgICBjb25zdCByb3RhdGlvbkNvbmZpZyA9IHByb3BzLmNyZWRlbnRpYWxzPy5zZWNyZXRSb3RhdGlvbjtcbiAgICBjb25zdCByb3RhdGlvblBlcmlvZCA9XG4gICAgICAodHlwZW9mIHJvdGF0aW9uQ29uZmlnID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHJvdGF0aW9uQ29uZmlnPy5hdXRvbWF0aWNhbGx5QWZ0ZXIpIHx8XG4gICAgICBEdXJhdGlvbi5kYXlzKDMwKTtcblxuICAgIHRoaXMubWFzdGVyU2VjcmV0ID0gbmV3IFNlY3JldCh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9TWFzdGVyU2VjcmV0YCwge1xuICAgICAgc2VjcmV0TmFtZTogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfU1hc3RlclNlY3JldGBcbiAgICB9KTtcblxuICAgIG5ldyBTZWNyZXRSb3RhdGlvbih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9U2VjcmV0Um90YXRpb25gLCB7XG4gICAgICBhcHBsaWNhdGlvbjogbmV3IFNlY3JldFJvdGF0aW9uQXBwbGljYXRpb24oXG4gICAgICAgIHRoaXMuZW5naW5lQ29uZmlnLnJvdGF0aW9uQXBwTmFtZSxcbiAgICAgICAgXCIxLjEuMzY3XCIsXG4gICAgICAgIHsgaXNNdWx0aVVzZXI6IHRydWUgfVxuICAgICAgKSxcbiAgICAgIHNlY3JldDogdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldCxcbiAgICAgIG1hc3RlclNlY3JldDogdGhpcy5tYXN0ZXJTZWNyZXQuc2VjcmV0LFxuICAgICAgdGFyZ2V0OiB0aGlzLmRhdGFiYXNlLFxuICAgICAgdnBjOiB0aGlzLmRhdGFiYXNlLnZwYyxcbiAgICAgIGF1dG9tYXRpY2FsbHlBZnRlcjogcm90YXRpb25QZXJpb2RcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFByb3h5KHByb3BzOiBSZHNQcm9wcykge1xuICAgIGNvbnN0IHByb3h5Q29uZmlnID0gcHJvcHMucHJveHkgYXMgUHJveHlDb25maWc7XG4gICAgY29uc3QgdnBjU3VibmV0czogU3VibmV0U2VsZWN0aW9uID0gcHJveHlDb25maWcudnBjU3VibmV0cyA/PyB7XG4gICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICB9O1xuXG4gICAgdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eVNlY3VyaXR5R3JvdXBgLFxuICAgICAge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFNlY3VyaXR5IGdyb3VwIGZvciBSRFMgUHJveHkgZm9yICR7cHJvcHMuZGF0YWJhc2VOYW1lfWBcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy8gQWxsb3cgcHJveHkgdG8gY29ubmVjdCB0byBkYXRhYmFzZVxuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cCxcbiAgICAgIFBvcnQudGNwKHRoaXMucG9ydCksXG4gICAgICBcIkFsbG93IFJEUyBQcm94eSB0byBjb25uZWN0IHRvIGRhdGFiYXNlXCJcbiAgICApO1xuXG4gICAgdGhpcy5kYXRhYmFzZVByb3h5ID0gbmV3IERhdGFiYXNlUHJveHkoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfURhdGFiYXNlUHJveHlgLFxuICAgICAge1xuICAgICAgICBkYlByb3h5TmFtZTogUmVzb3VyY2VOYW1pbmcucHJveHlOYW1lKHByb3BzLmRhdGFiYXNlTmFtZSEpLFxuICAgICAgICBwcm94eVRhcmdldDogUHJveHlUYXJnZXQuZnJvbUluc3RhbmNlKHRoaXMuZGF0YWJhc2UpLFxuICAgICAgICBzZWNyZXRzOiBbdGhpcy5kYXRhYmFzZUNyZWRlbnRpYWxzLnNlY3JldF0sXG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpcy5kYXRhYmFzZVByb3h5U2VjdXJpdHlHcm91cF0sXG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHMsXG4gICAgICAgIHJlcXVpcmVUTFM6IHByb3h5Q29uZmlnLnJlcXVpcmVUTFMgPz8gdHJ1ZSxcbiAgICAgICAgYm9ycm93VGltZW91dDogcHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXRcbiAgICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJveHlDb25maWcuY29ubmVjdGlvbkJvcnJvd1RpbWVvdXQpXG4gICAgICAgICAgOiBEdXJhdGlvbi5zZWNvbmRzKDEyMCksXG4gICAgICAgIG1heENvbm5lY3Rpb25zUGVyY2VudDogcHJveHlDb25maWcubWF4Q29ubmVjdGlvbnMsXG4gICAgICAgIG1heElkbGVDb25uZWN0aW9uc1BlcmNlbnQ6IHByb3h5Q29uZmlnLm1heElkbGVDb25uZWN0aW9uc1xuICAgICAgfVxuICAgICk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50T3V0cHV0YCwge1xuICAgICAga2V5OiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICBleHBvcnROYW1lOiBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UHJveHlFbmRwb2ludGAsXG4gICAgICB2YWx1ZTogdGhpcy5kYXRhYmFzZVByb3h5LmVuZHBvaW50XG4gICAgfSk7XG4gIH1cblxuICBhZGRSZWFkUmVwbGljYShwcm9wczogUmRzUHJvcHMpIHtcbiAgICBjb25zdCByZXBsaWNhQ29uZmlnID0gcHJvcHMucmVhZFJlcGxpY2EgYXMgUmVhZFJlcGxpY2FDb25maWc7XG4gICAgY29uc3QgcmVwbGljYUluc3RhbmNlVHlwZSA9XG4gICAgICByZXBsaWNhQ29uZmlnLmluc3RhbmNlVHlwZSA/PyBwcm9wcy5pbnN0YW5jZVR5cGUgPz8gXCJ0NGcubGFyZ2VcIjtcblxuICAgIGNvbnN0IHBpRW5hYmxlZCA9IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IHBpQ29uZmlnID1cbiAgICAgIHBpRW5hYmxlZCAmJiB0eXBlb2YgcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0cyA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHByb3BzLnBlcmZvcm1hbmNlSW5zaWdodHNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZWFkUmVwbGljYVBlcmZvcm1hbmNlSW5zaWdodHNLZXkgPVxuICAgICAgcGlFbmFibGVkICYmIGlzQ01LUmVxdWVzdGVkKHBpQ29uZmlnPy5lbmNyeXB0aW9uS2V5KVxuICAgICAgICA/IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJlYWRSZXBsaWNhUmVhZGVySW5zaWdodHNLZXlgLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGF0YWJhc2VOYW1lfS9SZWFkUmVwbGljYUluc2lnaHRzS2V5YFxuICAgICAgICAgICAgfVxuICAgICAgICAgICkua2V5XG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5yZWFkUmVwbGljYVNlY3VyaXR5R3JvdXAgPSBuZXcgU2VjdXJpdHlHcm91cChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmVhZFJlcGxpY2FTZWN1cml0eUdyb3VwYCxcbiAgICAgIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCBmb3IgUkRTIHJlYWQgcmVwbGljYSBvZiAke3Byb3BzLmRhdGFiYXNlTmFtZX1gXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEFsbG93IHByaW1hcnkgZGF0YWJhc2UgdG8gcmVwbGljYXRlIHRvIHJlYWQgcmVwbGljYVxuICAgIHRoaXMucmVhZFJlcGxpY2FTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgdGhpcy5kYXRhYmFzZVNlY3VyaXR5R3JvdXAsXG4gICAgICBQb3J0LnRjcCh0aGlzLnBvcnQpLFxuICAgICAgXCJBbGxvdyBwcmltYXJ5IGRhdGFiYXNlIHRvIHJlcGxpY2F0ZSB0byByZWFkIHJlcGxpY2FcIlxuICAgICk7XG5cbiAgICAvLyBEZWxldGlvbiB3YWl0ZXIgZW5zdXJlcyBwcmltYXJ5IGlzIFwiYXZhaWxhYmxlXCIgYmVmb3JlIENsb3VkRm9ybWF0aW9uIGRlbGV0ZXMgaXQuXG4gICAgLy8gV2hlbiB0aGUgcmVhZCByZXBsaWNhIGlzIGRlbGV0ZWQsIHRoZSBwcmltYXJ5IGVudGVycyBcIm1vZGlmeWluZ1wiIHN0YXRlLlxuICAgIC8vIFdpdGhvdXQgdGhpcyB3YWl0ZXIsIHRoZSBmaW5hbCBzbmFwc2hvdCBjcmVhdGlvbiBmYWlscy5cbiAgICBjb25zdCBpbnN0YW5jZUlkID0gUmVzb3VyY2VOYW1pbmcuZGJJbnN0YW5jZUlkKHByb3BzLmRhdGFiYXNlTmFtZSEpO1xuICAgIGNvbnN0IHdhaXRlclRpbWVvdXQgPSBEdXJhdGlvbi5taW51dGVzKDEwKTtcbiAgICBjb25zdCBkZWxldGlvbldhaXRlciA9IG5ldyBDdXN0b21SZXNvdXJjZShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9RGVsZXRpb25XYWl0ZXJgLFxuICAgICAge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiB3YWl0ZXJUaW1lb3V0LnBsdXMoRHVyYXRpb24uc2Vjb25kcygzMCkpLFxuICAgICAgICBsYW1iZGFEZXNjcmlwdGlvbjogYCR7cHJvcHMuZGF0YWJhc2VOYW1lfSBkZWxldGlvbiB3YWl0ZXJgLFxuICAgICAgICBpbmxpbmVDb2RlOiBgXG5jb25zdCB7IFJEU0NsaWVudCB9ID0gcmVxdWlyZSgnQGF3cy1zZGsvY2xpZW50LXJkcycpO1xuY29uc3QgeyB3YWl0VW50aWxEQkluc3RhbmNlQXZhaWxhYmxlIH0gPSByZXF1aXJlKCdAYXdzLXNkay9jbGllbnQtcmRzJyk7XG5cbmV4cG9ydHMuaGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zb2xlLmxvZygnRXZlbnQ6JywgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgY29uc3QgaW5zdGFuY2VJZCA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbnN0YW5jZUlkZW50aWZpZXI7XG4gIGNvbnN0IHBoeXNpY2FsUmVzb3VyY2VJZCA9IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCB8fCBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAncmRzLWRlbGV0aW9uLXdhaXRlcic7XG5cbiAgaWYgKGV2ZW50LlJlcXVlc3RUeXBlID09PSAnRGVsZXRlJykge1xuICAgIGNvbnNvbGUubG9nKCdXYWl0aW5nIGZvciBpbnN0YW5jZSB0byBiZSBhdmFpbGFibGU6JywgaW5zdGFuY2VJZCk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJEU0NsaWVudCh7fSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRVbnRpbERCSW5zdGFuY2VBdmFpbGFibGUoXG4gICAgICAgIHsgY2xpZW50LCBtYXhXYWl0VGltZTogJHt3YWl0ZXJUaW1lb3V0LnRvU2Vjb25kcygpfSwgbWluRGVsYXk6IDEwLCBtYXhEZWxheTogMzAgfSxcbiAgICAgICAgeyBEQkluc3RhbmNlSWRlbnRpZmllcjogaW5zdGFuY2VJZCB9XG4gICAgICApO1xuICAgICAgY29uc29sZS5sb2coJ0luc3RhbmNlIGlzIGF2YWlsYWJsZSwgZGVsZXRpb24gY2FuIHByb2NlZWQnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdSZXNvdXJjZU5vdEZvdW5kRXJyb3InIHx8XG4gICAgICAgICAgZXJyb3IubWVzc2FnZT8uaW5jbHVkZXMoJ0RCSW5zdGFuY2VOb3RGb3VuZCcpIHx8XG4gICAgICAgICAgZXJyb3Iuc3RhdGUgPT09ICdGQUlMVVJFJykge1xuICAgICAgICBjb25zb2xlLmxvZygnSW5zdGFuY2Ugbm90IGZvdW5kIG9yIHdhaXRlciBmYWlsZWQsIHByb2NlZWRpbmcgd2l0aCBkZWxldGlvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2FpdGluZyBmb3IgaW5zdGFuY2U6JywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgUGh5c2ljYWxSZXNvdXJjZUlkOiBwaHlzaWNhbFJlc291cmNlSWQgfTtcbn07XG4gICAgICAgIGAsXG4gICAgICAgIGlubGluZVBvbGljeTogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJyZHM6RGVzY3JpYmVEQkluc3RhbmNlc1wiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbnN0YW5jZUlkZW50aWZpZXI6IGluc3RhbmNlSWQsXG4gICAgICAgICAgVmVyc2lvbjogXCIxLjAuMFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGVsZXRpb25XYWl0ZXIucmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuZGF0YWJhc2UpO1xuXG4gICAgY29uc3QgcmVhZFJlcGxpY2EgPSBuZXcgRGF0YWJhc2VJbnN0YW5jZVJlYWRSZXBsaWNhKFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZWFkUmVwbGljYWAsXG4gICAgICB7XG4gICAgICAgIHNvdXJjZURhdGFiYXNlSW5zdGFuY2U6IHRoaXMuZGF0YWJhc2UsXG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1NcbiAgICAgICAgfSxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFt0aGlzLnJlYWRSZXBsaWNhU2VjdXJpdHlHcm91cF0sXG4gICAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2UsXG4gICAgICAgIHN0b3JhZ2VFbmNyeXB0ZWQ6IHRydWUsXG4gICAgICAgIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZS5HUDMsXG4gICAgICAgIGNhQ2VydGlmaWNhdGU6IENhQ2VydGlmaWNhdGUuUkRTX0NBX1JTQTQwOTZfRzEsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgZGVsZXRlQXV0b21hdGVkQmFja3VwczogZmFsc2UsXG4gICAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IHBpRW5hYmxlZCxcbiAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogcmVhZFJlcGxpY2FQZXJmb3JtYW5jZUluc2lnaHRzS2V5LFxuICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb246IHBpRW5hYmxlZFxuICAgICAgICAgID8gdGhpcy5nZXRQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24ocGlDb25maWc/LnJldGVudGlvblBlcmlvZCA/PyA3KVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IFJlc291cmNlTmFtaW5nLnJlYWRSZXBsaWNhSWQocHJvcHMuZGF0YWJhc2VOYW1lISksXG4gICAgICAgIGluc3RhbmNlVHlwZTogbmV3IEluc3RhbmNlVHlwZShyZXBsaWNhSW5zdGFuY2VUeXBlKSxcbiAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcmVwbGljYUNvbmZpZy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICBtYXhBbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5tYXhBbGxvY2F0ZWRTdG9yYWdlIHx8IDUwMCxcbiAgICAgICAgbW9uaXRvcmluZ0ludGVydmFsOiBwcm9wcy5tb25pdG9yaW5nSW50ZXJ2YWwgfHwgRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgbXVsdGlBejogcHJvcHMubXVsdGlBeiAhPT0gZmFsc2UsXG4gICAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24gPz8gdHJ1ZSxcbiAgICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6XG4gICAgICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgfHwgXCJTYXQ6MTI6MzAtU2F0OjIwOjMwXCJcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmVhZFJlcGxpY2Eubm9kZS5hZGREZXBlbmRlbmN5KGRlbGV0aW9uV2FpdGVyLnJlc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uKFxuICAgIGRheXM/OiBudW1iZXJcbiAgKTogUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uIHtcbiAgICBzd2l0Y2ggKGRheXMpIHtcbiAgICAgIGNhc2UgNzpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5ERUZBVUxUO1xuICAgICAgY2FzZSAzMTpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTtcbiAgICAgIGNhc2UgOTM6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzM7XG4gICAgICBjYXNlIDE4NjpcbiAgICAgICAgcmV0dXJuIFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfNjtcbiAgICAgIGNhc2UgMzcyOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLk1PTlRIU18xMjtcbiAgICAgIGNhc2UgNzMxOlxuICAgICAgICByZXR1cm4gUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkxPTkdfVEVSTTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb24uTU9OVEhTXzE7XG4gICAgfVxuICB9XG5cbiAgZ2V0SG9zdEVuZHBvaW50KCkge1xuICAgIGlmICh0aGlzLmRhdGFiYXNlUHJveHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlUHJveHkuZW5kcG9pbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmRiSW5zdGFuY2VFbmRwb2ludEFkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgZ2V0SG9zdFBvcnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMucG9ydCk7XG4gIH1cblxuICBnZXRDcmVkZW50aWFscygpOiBTZWNyZXQge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlQ3JlZGVudGlhbHM7XG4gIH1cblxuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM6IFJkc1Byb3BzKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wczogUmRzUHJvcHMgPSB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgdnBjOiAoc2IuZ2V0TmV0d29yaygpIGFzIElWcGMpIHx8IHByb3BzLnZwYyxcbiAgICAgICAgICBzZWN1cml0eUdyb3VwSWRzOiBwcm9wcz8uc2VjdXJpdHlHcm91cElkcyA/PyBbXSxcbiAgICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSB8fCBgJHtpZC5yZXBsYWNlKFwiUmRzXCIsIFwiXCIpfWBcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.79.0",
3
+ "version": "0.79.3",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@aws-sdk/client-organizations": "^3.716.0",
38
- "@fjall/util": "^0.79.0",
38
+ "@fjall/util": "^0.79.3",
39
39
  "@pepperize/cdk-organizations": "^0.7.135",
40
40
  "cdk-time-sleep": "^1.0.0",
41
41
  "constructs": "^10.0.0",
@@ -44,7 +44,7 @@
44
44
  "overrides": {
45
45
  "@smithy/core": "2.5.5"
46
46
  },
47
- "gitHead": "63a8ebc6064ebc89eb44f2b13861695bbc24716b",
47
+ "gitHead": "7a0906f8a11d266c1daec53a609185f362993cdd",
48
48
  "peerDependencies": {
49
49
  "aws-cdk": "^2.206.0",
50
50
  "aws-cdk-lib": "^2.206.0",