@aws-cdk/aws-imagebuilder-alpha 2.234.0-alpha.0 → 2.235.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/image.js CHANGED
@@ -83,6 +83,8 @@ class ImageBase extends cdk.Resource {
83
83
  /**
84
84
  * Grant custom actions to the given grantee for the image
85
85
  *
86
+ * [disable-awslint:no-grants]
87
+ *
86
88
  * @param grantee The principal
87
89
  * @param actions The list of actions
88
90
  */
@@ -96,6 +98,8 @@ class ImageBase extends cdk.Resource {
96
98
  /**
97
99
  * Grants the default permissions for building an image to the provided execution role.
98
100
  *
101
+ * [disable-awslint:no-grants]
102
+ *
99
103
  * @param grantee The execution role used for the image build.
100
104
  */
101
105
  grantDefaultExecutionRolePermissions(grantee) {
@@ -111,6 +115,8 @@ class ImageBase extends cdk.Resource {
111
115
  /**
112
116
  * Grant read permissions to the given grantee for the image
113
117
  *
118
+ * [disable-awslint:no-grants]
119
+ *
114
120
  * @param grantee The principal
115
121
  */
116
122
  grantRead(grantee) {
@@ -152,7 +158,7 @@ let Image = (() => {
152
158
  Image = _classThis = _classDescriptor.value;
153
159
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
154
160
  }
155
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.234.0-alpha.0" };
161
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.235.0-alpha.0" };
156
162
  /** Uniquely identifies this class. */
157
163
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Image';
158
164
  /**
@@ -279,6 +285,8 @@ let Image = (() => {
279
285
  /**
280
286
  * Grants the default permissions for building an image to the provided execution role.
281
287
  *
288
+ * [disable-awslint:no-grants]
289
+ *
282
290
  * @param grantee The execution role used for the image build.
283
291
  */
284
292
  grantDefaultExecutionRolePermissions(grantee) {
@@ -354,4 +362,4 @@ let Image = (() => {
354
362
  return Image = _classThis;
355
363
  })();
356
364
  exports.Image = Image;
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLDZDQUE2RDtBQUU3RCxpRkFBMkc7QUFDM0csbURBQXFEO0FBQ3JELCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBd016RTs7R0FFRztBQUNILElBQVksaUJBVVg7QUFWRCxXQUFZLGlCQUFpQjtJQUMzQjs7T0FFRztJQUNILG9DQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQVU1QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25COztPQUVHO0lBQ0gsd0JBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsOEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVZXLFNBQVMseUJBQVQsU0FBUyxRQVVwQjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFnQjNDOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQUM7S0FDSjtJQUVEOzs7O09BSUc7SUFDSSxvQ0FBb0MsQ0FBQyxPQUF1QjtRQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFBLDBDQUEwQixFQUFDLElBQUks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QUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN0RDtRQUVEOzs7O1dBSUc7UUFDSyxxQkFBcUIsQ0FBQyxLQUFpQjtZQUM3QyxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQy9EOztZQTlOVSx1REFBSzs7Ozs7QUFBTCxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5JbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2UsIEJhc2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgeyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiwgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExBVEVTVF9WRVJTSU9OIH0gZnJvbSAnLi9wcml2YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uLFxuICBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uLFxuICBidWlsZFdvcmtmbG93cyxcbn0gZnJvbSAnLi9wcml2YXRlL2ltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXInO1xuaW1wb3J0IHsgZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3ksIGdldEV4ZWN1dGlvblJvbGUgfSBmcm9tICcuL3ByaXZhdGUvcG9saWN5LWhlbHBlcic7XG5pbXBvcnQgeyBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dDb25maWd1cmF0aW9uIH0gZnJvbSAnLi93b3JrZmxvdyc7XG5cbmNvbnN0IElNQUdFX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2UnKTtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W107XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIEJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqL1xuICB0b0Jhc2VJbWFnZSgpOiBCYXNlSW1hZ2U7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIENvbnRhaW5lckJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICB0b0NvbnRhaW5lckJhc2VJbWFnZSgpOiBCYXNlQ29udGFpbmVySW1hZ2U7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW1hZ2UgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByZWNpcGUgdGhhdCBkZWZpbmVzIHRoZSBiYXNlIGltYWdlLCBjb21wb25lbnRzLCBhbmQgY3VzdG9taXphdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuIFRoaXMgY2FuIGVpdGhlciBiZVxuICAgKiBhbiBpbWFnZSByZWNpcGUsIG9yIGEgY29udGFpbmVyIHJlY2lwZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlY2lwZTogSVJlY2lwZUJhc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQSBkZWZhdWx0IGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSB1c2VkIGlmIG9uZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gd2lsbCBjcmVhdGUgYW4gaW5zdGFuY2UgcHJvZmlsZSBhbmQgcm9sZSB3aXRoIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGJ1aWxkIHRoZVxuICAgKiBpbWFnZSwgYXR0YWNoZWQgdG8gdGhlIEVDMiBpbnN0YW5jZS5cbiAgICpcbiAgICogSU1EU3YyIHdpbGwgYmUgcmVxdWlyZWQgYnkgZGVmYXVsdCBvbiB0aGUgaW5zdGFuY2VzIHVzZWQgdG8gYnVpbGQgYW5kIHRlc3QgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbj86IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiB1c2VkIGZvciBkaXN0cmlidXRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uPzogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHdvcmtmbG93IGNvbmZpZ3VyYXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgYSBkZWZhdWx0IHNldCBvZiB3b3JrZmxvd3MgZm9yIHRoZSBidWlsZCB0byBidWlsZCwgdGVzdCwgYW5kIGRpc3RyaWJ1dGUgdGhlXG4gICAqIGltYWdlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd3M/OiBXb3JrZmxvd0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgdG8gcGVyZm9ybSB3b3JrZmxvdyBhY3Rpb25zIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIEltYWdlIEJ1aWxkZXIgU2VydmljZSBMaW5rZWQgUm9sZSAoU0xSKSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBhbmQgdXNlZCBhcyB0aGUgZXhlY3V0aW9uXG4gICAqIHJvbGUuIEhvd2V2ZXIsIHdoZW4gcHJvdmlkaW5nIGEgY3VzdG9tIHNldCBvZiBpbWFnZSB3b3JrZmxvd3MgZm9yIHRoZSBpbWFnZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZVxuICAgKiBnZW5lcmF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIFNMUiBpZiBwb3NzaWJsZS4gT3RoZXJ3aXNlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byB1c2UgZm9yIHRoZSBpbWFnZS4gQnkgZGVmYXVsdCwgYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGZvcm1hdFxuICAgKiBgL2F3cy9pbWFnZWJ1aWxkZXIvPGltYWdlLW5hbWU+YFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgSW1hZ2UgQnVpbGRlciBrZWVwcyBhIHNuYXBzaG90IG9mIHRoZSB2dWxuZXJhYmlsaXR5IHNjYW5zIHRoYXQgQW1hem9uIEluc3BlY3RvciBydW5zIGFnYWluc3QgdGhlXG4gICAqIGJ1aWxkIGluc3RhbmNlIHdoZW4geW91IGNyZWF0ZSBhIG5ldyBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciByZXBvc2l0b3J5IHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2FucyB0byBpZGVudGlmeSBmaW5kaW5ncyBmb3IgeW91ciBjb250YWluZXIgaW1hZ2VzLiBJZiBhXG4gICAqIHJlcG9zaXRvcnkgaXMgbm90IHByb3ZpZGVkLCBJbWFnZSBCdWlsZGVyIGNyZWF0ZXMgYSByZXBvc2l0b3J5IG5hbWVkIGBpbWFnZS1idWlsZGVyLWltYWdlLXNjYW5uaW5nLXJlcG9zaXRvcnlgXG4gICAqIGZvciB2dWxuZXJhYmlsaXR5IHNjYW5uaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlmIHNjYW5uaW5nIGlzIGVuYWJsZWQsIGEgcmVwb3NpdG9yeSB3aWxsIGJlIGNyZWF0ZWQgYnkgSW1hZ2UgQnVpbGRlciBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeT86IGVjci5JUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgZm9yIEltYWdlIEJ1aWxkZXIgdG8gYXBwbHkgdG8gdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRWNyVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbWFnZSBiZWluZyBjcmVhdGVkLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKVxuICAgKiB2ZXJzaW9uIGFuZCBwYWNrYWdlIGxpc3QgZm9yIHRoZSBBTUkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuaGFuY2VkSW1hZ2VNZXRhZGF0YUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0ZXN0cyBhZnRlciBidWlsZGluZyBhbiBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUZXN0c0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdG8gdXNlIGZvciBkZWxldGluZyB0aGUgaW1hZ2UgYXMgd2VsbCBhcyB0aGUgdW5kZXJseWluZyByZXNvdXJjZXMsIHN1Y2ggYXMgdGhlIEFNSXMsIHNuYXBzaG90cyxcbiAgICogYW5kIGNvbnRhaW5lcnMuIFRoaXMgcm9sZSBzaG91bGQgY29udGFpbiByZXNvdXJjZSBsaWZlY3ljbGUgcGVybWlzc2lvbnMgcmVxdWlyZWQgdG8gZGVsZXRlIHRoZSB1bmRlcmx5aW5nXG4gICAqIEFNSXMvY29udGFpbmVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGVjdXRpb24gcm9sZS4gT25seSB0aGUgSW1hZ2UgQnVpbGRlciBpbWFnZSB3aWxsIGJlIGRlbGV0ZWQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGlvbkV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VOYW1lXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBpbWFnZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGltYWdlLCB4LngueFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlQXJjaGl0ZWN0dXJlIHtcbiAgLyoqXG4gICAqIDY0IGJpdCBhcmNoaXRlY3R1cmUgd2l0aCB0aGUgQVJNIGluc3RydWN0aW9uIHNldFxuICAgKi9cbiAgQVJNNjQgPSAnYXJtNjQnLFxuXG4gIC8qKlxuICAgKiA2NCBiaXQgYXJjaGl0ZWN0dXJlIHdpdGggeDg2IGluc3RydWN0aW9uIHNldFxuICAgKi9cbiAgWDg2XzY0ID0gJ3g4Nl82NCcsXG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGltYWdlXG4gKi9cbmV4cG9ydCBlbnVtIEltYWdlVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGltYWdlIHByb2R1Y2VkIGlzIGFuIEFNSVxuICAgKi9cbiAgQU1JID0gJ0FNSScsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgaW1hZ2UgcHJvZHVjZWQgaXMgYSBEb2NrZXIgaW1hZ2VcbiAgICovXG4gIERPQ0tFUiA9ICdET0NLRVInLFxufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEltYWdlXG4gKi9cbmFic3RyYWN0IGNsYXNzIEltYWdlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbWFnZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VBcm5dLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEltYWdlJyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGEgQmFzZUltYWdlLCB0byB1c2UgYXMgdGhlIHBhcmVudCBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICovXG4gIHB1YmxpYyB0b0Jhc2VJbWFnZSgpOiBCYXNlSW1hZ2Uge1xuICAgIHJldHVybiBCYXNlSW1hZ2UuZnJvbUltYWdlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIENvbnRhaW5lckJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgdG9Db250YWluZXJCYXNlSW1hZ2UoKTogQmFzZUNvbnRhaW5lckltYWdlIHtcbiAgICByZXR1cm4gQmFzZUNvbnRhaW5lckltYWdlLmZyb21JbWFnZSh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2UuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvY3JlYXRlLWltYWdlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbWFnZSBleHRlbmRzIEltYWdlQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBnaXZlbiBpdHMgQVJOXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZUFybjogc3RyaW5nKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tSW1hZ2VBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBpbWFnZUFybiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWxcbiAgICogY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlTmFtZTogc3RyaW5nKTogSUltYWdlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tSW1hZ2VBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBpbWFnZU5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGJ5IHByb3ZpZGluZyBpdHMgYXR0cmlidXRlcy4gSWYgdGhlIGltYWdlIG5hbWUgaXMgcHJvdmlkZWQgYXMgYW4gYXR0cmlidXRlLCBpdCBtdXN0IGJlXG4gICAqIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGhcbiAgICogaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogSW1hZ2VBdHRyaWJ1dGVzKTogSUltYWdlIHtcbiAgICBpZiAoIWF0dHJzLmltYWdlQXJuICYmICFhdHRycy5pbWFnZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdlaXRoZXIgaW1hZ2VBcm4gb3IgaW1hZ2VOYW1lIGlzIHJlcXVpcmVkJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlQXJuID1cbiAgICAgIGF0dHJzLmltYWdlQXJuID8/XG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2ltYWdlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5pbWFnZU5hbWV9LyR7YXR0cnMuaW1hZ2VWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OfWAsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IFtpbWFnZU5hbWUsIGltYWdlVmVyc2lvbl0gPSAoKCkgPT4ge1xuICAgICAgaWYgKGF0dHJzLmltYWdlTmFtZSkge1xuICAgICAgICByZXR1cm4gW2F0dHJzLmltYWdlTmFtZSwgYXR0cnMuaW1hZ2VWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VOYW1lVmVyc2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oaW1hZ2VBcm4sIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lITtcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lVmVyc2lvblNwbGl0ID0gY2RrLkZuLnNwbGl0KCcvJywgaW1hZ2VOYW1lVmVyc2lvbik7XG4gICAgICByZXR1cm4gW2Nkay5Gbi5zZWxlY3QoMCwgaW1hZ2VOYW1lVmVyc2lvblNwbGl0KSwgY2RrLkZuLnNlbGVjdCgxLCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQpXTtcbiAgICB9KSgpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgSW1hZ2VCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZUFybiA9IGltYWdlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlTmFtZSA9IGltYWdlTmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbWFnZVZlcnNpb24gPSBpbWFnZVZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEltYWdlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0ltYWdlKHg6IGFueSk6IHggaXMgSW1hZ2Uge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTUFHRV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFNSSBJRCBvZiB0aGUgRUMyIEFNSSwgb3IgVVJJIGZvciB0aGUgY29udGFpbmVyXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogSW1hZ2VQcm9wcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEltYWdlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElNQUdFX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID1cbiAgICAgIHByb3BzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA/PyBuZXcgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMsICdJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24nKTtcblxuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IGdldEV4ZWN1dGlvblJvbGUoXG4gICAgICB0aGlzLFxuICAgICAgKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSA9PiB0aGlzLmdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlKSxcbiAgICAgIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGltYWdlTG9nR3JvdXA6IHByb3BzLmxvZ0dyb3VwLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3QgW2ltYWdlLCByZWNpcGVdID0gdGhpcy5jcmVhdGVJbWFnZUZyb21SZWNpcGUocHJvcHMpO1xuXG4gICAgdGhpcy5pbWFnZU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbWFnZS5hdHRyTmFtZSk7XG4gICAgdGhpcy5pbWFnZUFybiA9IGltYWdlLmF0dHJBcm47XG5cbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkpIHtcbiAgICAgIHRoaXMuaW1hZ2VJZCA9IGltYWdlLmF0dHJJbWFnZUlkO1xuICAgICAgdGhpcy5pbWFnZVZlcnNpb24gPSByZWNpcGUuaW1hZ2VSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSBpZiAocmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aGlzLmltYWdlSWQgPSBpbWFnZS5hdHRySW1hZ2VVcmk7XG4gICAgICB0aGlzLmltYWdlVmVyc2lvbiA9IHJlY2lwZS5jb250YWluZXJSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMsIHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENmbkltYWdlIHJlc291cmNlIGZyb20gdGhlIHJlY2lwZSBhbmQgcHJvcHMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZUZyb21SZWNpcGUocHJvcHM6IEltYWdlUHJvcHMpOiBbQ2ZuSW1hZ2UsIElSZWNpcGVCYXNlXSB7XG4gICAgY29uc3QgcmVjaXBlID0gcHJvcHMucmVjaXBlO1xuICAgIGlmIChJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24pKSB7XG4gICAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5fYmluZCh7IGlzQ29udGFpbmVyQnVpbGQ6IHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBjYW5ub3QgYmUgYm90aCBhbiBJSW1hZ2VSZWNpcGUgYW5kIGFuIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmICFyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgQ2ZuSW1hZ2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLi4uKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxJbWFnZVByb3BzLCBDZm5JbWFnZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5PihcbiAgICAgICAgcHJvcHMsXG4gICAgICApLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUHJvcHMsXG4gICAgICAgIENmbkltYWdlLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVByb3BzLCBDZm5JbWFnZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICBkZWxldGlvblNldHRpbmdzOiB0aGlzLmJ1aWxkRGVsZXRpb25TZXR0aW5ncyhwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtpbWFnZSwgcmVjaXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5JbWFnZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMubG9nR3JvdXApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGRlbGV0aW9uU2V0dGluZ3MgcHJvcGVydHkgaW50byB0aGUgYERlbGV0aW9uU2V0dGluZ3NgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZERlbGV0aW9uU2V0dGluZ3MocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5EZWxldGlvblNldHRpbmdzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBleGVjdXRpb25Sb2xlOiBwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUucm9sZUFybiB9O1xuICB9XG59XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRTFFLDZDQUE2RDtBQUU3RCxpRkFBMkc7QUFDM0csbURBQXFEO0FBQ3JELCtGQUltRDtBQUNuRCwyREFBdUY7QUFJdkYsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBd016RTs7R0FFRztBQUNILElBQVksaUJBVVg7QUFWRCxXQUFZLGlCQUFpQjtJQUMzQjs7T0FFRztJQUNILG9DQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxpQkFBaUIsaUNBQWpCLGlCQUFpQixRQVU1QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25COztPQUVHO0lBQ0gsd0JBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gsOEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVZXLFNBQVMseUJBQVQsU0FBUyxRQVVwQjtBQUVEOztHQUVHO0FBQ0gsTUFBZSxTQUFVLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFnQjNDOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDN0IsT0FBTztTQUNSLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksb0NBQW9DLENBQUMsT0FBdUI7UUFDakUsTUFBTSxRQUFRLEdBQUcsSUFBQSwwQ0FBMEIsRUFBQyxJ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TyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3REO1FBRUQ7Ozs7V0FJRztRQUNLLHFCQUFxQixDQUFDLEtBQWlCO1lBQzdDLElBQUksS0FBSyxDQUFDLHFCQUFxQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM5QyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0Q7O1lBaE9VLHVEQUFLOzs7OztBQUFMLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VDb250YWluZXJJbWFnZSwgQmFzZUltYWdlIH0gZnJvbSAnLi9iYXNlLWltYWdlJztcbmltcG9ydCB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLCBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgTEFURVNUX1ZFUlNJT04gfSBmcm9tICcuL3ByaXZhdGUvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb24sXG4gIGJ1aWxkV29ya2Zsb3dzLFxufSBmcm9tICcuL3ByaXZhdGUvaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlcic7XG5pbXBvcnQgeyBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSwgZ2V0RXhlY3V0aW9uUm9sZSB9IGZyb20gJy4vcHJpdmF0ZS9wb2xpY3ktaGVscGVyJztcbmltcG9ydCB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgeyBXb3JrZmxvd0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3dvcmtmbG93JztcblxuY29uc3QgSU1BR0VfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbWFnZScpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXTtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGEgQmFzZUltYWdlLCB0byB1c2UgYXMgdGhlIHBhcmVudCBpbWFnZSBpbiBhbiBpbWFnZSByZWNpcGVcbiAgICovXG4gIHRvQmFzZUltYWdlKCk6IEJhc2VJbWFnZTtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGEgQ29udGFpbmVyQmFzZUltYWdlLCB0byB1c2UgYXMgdGhlIHBhcmVudCBpbWFnZSBpbiBhIGNvbnRhaW5lciByZWNpcGVcbiAgICovXG4gIHRvQ29udGFpbmVyQmFzZUltYWdlKCk6IEJhc2VDb250YWluZXJJbWFnZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhbiBJbWFnZSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlY2lwZSB0aGF0IGRlZmluZXMgdGhlIGJhc2UgaW1hZ2UsIGNvbXBvbmVudHMsIGFuZCBjdXN0b21pemF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS4gVGhpcyBjYW4gZWl0aGVyIGJlXG4gICAqIGFuIGltYWdlIHJlY2lwZSwgb3IgYSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlOiBJUmVjaXBlQmFzZTtcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgYnVpbGRpbmcgdGhlIGltYWdlLlxuICAgKlxuICAgKiBBIGRlZmF1bHQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCByb2xlIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlXG4gICAqIGltYWdlLCBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBJTURTdjIgd2lsbCBiZSByZXF1aXJlZCBieSBkZWZhdWx0IG9uIHRoZSBpbnN0YW5jZXMgdXNlZCB0byBidWlsZCBhbmQgdGVzdCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uPzogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uIHVzZWQgZm9yIGRpc3RyaWJ1dGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/OiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygd29ya2Zsb3cgY29uZmlndXJhdGlvbnMgdXNlZCB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSBhIGRlZmF1bHQgc2V0IG9mIHdvcmtmbG93cyBmb3IgdGhlIGJ1aWxkIHRvIGJ1aWxkLCB0ZXN0LCBhbmQgZGlzdHJpYnV0ZSB0aGVcbiAgICogaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93cz86IFdvcmtmbG93Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCB0byBwZXJmb3JtIHdvcmtmbG93IGFjdGlvbnMgdG8gYnVpbGQgdGhlIGltYWdlLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgSW1hZ2UgQnVpbGRlciBTZXJ2aWNlIExpbmtlZCBSb2xlIChTTFIpIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGFuZCB1c2VkIGFzIHRoZSBleGVjdXRpb25cbiAgICogcm9sZS4gSG93ZXZlciwgd2hlbiBwcm92aWRpbmcgYSBjdXN0b20gc2V0IG9mIGltYWdlIHdvcmtmbG93cyBmb3IgdGhlIGltYWdlLCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlXG4gICAqIGdlbmVyYXRlZCB3aXRoIHRoZSBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBleGVjdXRlIHRoZSB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSB0aGUgU0xSIGlmIHBvc3NpYmxlLiBPdGhlcndpc2UsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHVzZSBmb3IgdGhlIGltYWdlLiBCeSBkZWZhdWx0LCBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgZm9ybWF0XG4gICAqIGAvYXdzL2ltYWdlYnVpbGRlci88aW1hZ2UtbmFtZT5gXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBsb2cgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBJbWFnZSBCdWlsZGVyIGtlZXBzIGEgc25hcHNob3Qgb2YgdGhlIHZ1bG5lcmFiaWxpdHkgc2NhbnMgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHJ1bnMgYWdhaW5zdCB0aGVcbiAgICogYnVpbGQgaW5zdGFuY2Ugd2hlbiB5b3UgY3JlYXRlIGEgbmV3IGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHJlcG9zaXRvcnkgdGhhdCBBbWF6b24gSW5zcGVjdG9yIHNjYW5zIHRvIGlkZW50aWZ5IGZpbmRpbmdzIGZvciB5b3VyIGNvbnRhaW5lciBpbWFnZXMuIElmIGFcbiAgICogcmVwb3NpdG9yeSBpcyBub3QgcHJvdmlkZWQsIEltYWdlIEJ1aWxkZXIgY3JlYXRlcyBhIHJlcG9zaXRvcnkgbmFtZWQgYGltYWdlLWJ1aWxkZXItaW1hZ2Utc2Nhbm5pbmctcmVwb3NpdG9yeWBcbiAgICogZm9yIHZ1bG5lcmFiaWxpdHkgc2Nhbm5pbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaWYgc2Nhbm5pbmcgaXMgZW5hYmxlZCwgYSByZXBvc2l0b3J5IHdpbGwgYmUgY3JlYXRlZCBieSBJbWFnZSBCdWlsZGVyIGlmIG9uZSBpcyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5PzogZWNyLklSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyBmb3IgSW1hZ2UgQnVpbGRlciB0byBhcHBseSB0byB0aGUgb3V0cHV0IGNvbnRhaW5lciBpbWFnZSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlU2Nhbm5pbmdFY3JUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIGNvbGxlY3RzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltYWdlIGJlaW5nIGNyZWF0ZWQsIGluY2x1ZGluZyB0aGUgb3BlcmF0aW5nIHN5c3RlbSAoT1MpXG4gICAqIHZlcnNpb24gYW5kIHBhY2thZ2UgbGlzdCBmb3IgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5oYW5jZWRJbWFnZU1ldGFkYXRhRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcnVuIHRlc3RzIGFmdGVyIGJ1aWxkaW5nIGFuIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVRlc3RzRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB0byB1c2UgZm9yIGRlbGV0aW5nIHRoZSBpbWFnZSBhcyB3ZWxsIGFzIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlcywgc3VjaCBhcyB0aGUgQU1Jcywgc25hcHNob3RzLFxuICAgKiBhbmQgY29udGFpbmVycy4gVGhpcyByb2xlIHNob3VsZCBjb250YWluIHJlc291cmNlIGxpZmVjeWNsZSBwZXJtaXNzaW9ucyByZXF1aXJlZCB0byBkZWxldGUgdGhlIHVuZGVybHlpbmdcbiAgICogQU1Jcy9jb250YWluZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4ZWN1dGlvbiByb2xlLiBPbmx5IHRoZSBJbWFnZSBCdWlsZGVyIGltYWdlIHdpbGwgYmUgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0aW9uRXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBpbWFnZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIGltYWdlQXJuXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgaW1hZ2UsIHgueC54XG4gICAqL1xuICByZWFkb25seSBpbWFnZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VBcmNoaXRlY3R1cmUge1xuICAvKipcbiAgICogNjQgYml0IGFyY2hpdGVjdHVyZSB3aXRoIHRoZSBBUk0gaW5zdHJ1Y3Rpb24gc2V0XG4gICAqL1xuICBBUk02NCA9ICdhcm02NCcsXG5cbiAgLyoqXG4gICAqIDY0IGJpdCBhcmNoaXRlY3R1cmUgd2l0aCB4ODYgaW5zdHJ1Y3Rpb24gc2V0XG4gICAqL1xuICBYODZfNjQgPSAneDg2XzY0Jyxcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VUeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgaW1hZ2UgcHJvZHVjZWQgaXMgYW4gQU1JXG4gICAqL1xuICBBTUkgPSAnQU1JJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpbWFnZSBwcm9kdWNlZCBpcyBhIERvY2tlciBpbWFnZVxuICAgKi9cbiAgRE9DS0VSID0gJ0RPQ0tFUicsXG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW1hZ2VcbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW1hZ2VCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUltYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbWFnZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW1hZ2VBcm5dLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciB0aGUgaW1hZ2UgYnVpbGQuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50W10ge1xuICAgIGNvbnN0IHBvbGljaWVzID0gZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3kodGhpcyk7XG4gICAgcmV0dXJuIHBvbGljaWVzLm1hcCgocG9saWN5KSA9PlxuICAgICAgaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgICAgZ3JhbnRlZTogZ3JhbnRlZSxcbiAgICAgICAgcmVzb3VyY2VBcm5zOiBwb2xpY3kucmVzb3VyY2VzLFxuICAgICAgICBhY3Rpb25zOiBwb2xpY3kuYWN0aW9ucyxcbiAgICAgICAgY29uZGl0aW9uczogcG9saWN5LmNvbmRpdGlvbnMsXG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0SW1hZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHRvQmFzZUltYWdlKCk6IEJhc2VJbWFnZSB7XG4gICAgcmV0dXJuIEJhc2VJbWFnZS5mcm9tSW1hZ2UodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGltYWdlIHRvIGEgQ29udGFpbmVyQmFzZUltYWdlLCB0byB1c2UgYXMgdGhlIHBhcmVudCBpbWFnZSBpbiBhIGNvbnRhaW5lciByZWNpcGVcbiAgICovXG4gIHB1YmxpYyB0b0NvbnRhaW5lckJhc2VJbWFnZSgpOiBCYXNlQ29udGFpbmVySW1hZ2Uge1xuICAgIHJldHVybiBCYXNlQ29udGFpbmVySW1hZ2UuZnJvbUltYWdlKHRoaXMpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbWFnZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9jcmVhdGUtaW1hZ2VzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEltYWdlIGV4dGVuZHMgSW1hZ2VCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGdpdmVuIGl0cyBBUk5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGltYWdlQXJuOiBzdHJpbmcpOiBJSW1hZ2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21JbWFnZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGltYWdlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgaW1hZ2VOYW1lOiBzdHJpbmcpOiBJSW1hZ2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21JbWFnZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGltYWdlTmFtZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgYnkgcHJvdmlkaW5nIGl0cyBhdHRyaWJ1dGVzLiBJZiB0aGUgaW1hZ2UgbmFtZSBpcyBwcm92aWRlZCBhcyBhbiBhdHRyaWJ1dGUsIGl0IG11c3QgYmVcbiAgICogbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aFxuICAgKiBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBJbWFnZUF0dHJpYnV0ZXMpOiBJSW1hZ2Uge1xuICAgIGlmICghYXR0cnMuaW1hZ2VBcm4gJiYgIWF0dHJzLmltYWdlTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2VpdGhlciBpbWFnZUFybiBvciBpbWFnZU5hbWUgaXMgcmVxdWlyZWQnLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VBcm4gPVxuICAgICAgYXR0cnMuaW1hZ2VBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlTmFtZX0vJHthdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2ltYWdlTmFtZSwgaW1hZ2VWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuaW1hZ2VOYW1lLCBhdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihpbWFnZUFybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBpbWFnZU5hbWVWZXJzaW9uKTtcbiAgICAgIHJldHVybiBbY2RrLkZuLnNlbGVjdCgwLCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQpLCBjZGsuRm4uc2VsZWN0KDEsIGltYWdlTmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlQXJuID0gaW1hZ2VBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VOYW1lID0gaW1hZ2VOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlVmVyc2lvbiA9IGltYWdlVmVyc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2UoeDogYW55KTogeCBpcyBJbWFnZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQU1JIElEIG9mIHRoZSBFQzIgQU1JLCBvciBVUkkgZm9yIHRoZSBjb250YWluZXJcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uOiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJbWFnZVByb3BzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW1hZ2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU1BR0VfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPVxuICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID8/IG5ldyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcywgJ0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuXG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID0gZ2V0RXhlY3V0aW9uUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICAoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpID0+IHRoaXMuZ3JhbnREZWZhdWx0RXhlY3V0aW9uUm9sZVBlcm1pc3Npb25zKGdyYW50ZWUpLFxuICAgICAge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgaW1hZ2VMb2dHcm91cDogcHJvcHMubG9nR3JvdXAsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBbaW1hZ2UsIHJlY2lwZV0gPSB0aGlzLmNyZWF0ZUltYWdlRnJvbVJlY2lwZShwcm9wcyk7XG5cbiAgICB0aGlzLmltYWdlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKGltYWdlLmF0dHJOYW1lKTtcbiAgICB0aGlzLmltYWdlQXJuID0gaW1hZ2UuYXR0ckFybjtcblxuICAgIGlmIChyZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSkge1xuICAgICAgdGhpcy5pbWFnZUlkID0gaW1hZ2UuYXR0ckltYWdlSWQ7XG4gICAgICB0aGlzLmltYWdlVmVyc2lvbiA9IHJlY2lwZS5pbWFnZVJlY2lwZVZlcnNpb247XG4gICAgfSBlbHNlIGlmIChyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgIHRoaXMuaW1hZ2VJZCA9IGltYWdlLmF0dHJJbWFnZVVyaTtcbiAgICAgIHRoaXMuaW1hZ2VWZXJzaW9uID0gcmVjaXBlLmNvbnRhaW5lclJlY2lwZVZlcnNpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdyZWNpcGUgbXVzdCBlaXRoZXIgYmUgYW4gaW1hZ2UgcmVjaXBlIG9yIGNvbnRhaW5lciByZWNpcGUnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBkZWZhdWx0IHBlcm1pc3Npb25zIGZvciBidWlsZGluZyBhbiBpbWFnZSB0byB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHJvbGUuXG4gICAqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgdGhlIGltYWdlIGJ1aWxkLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdIHtcbiAgICBjb25zdCBwb2xpY2llcyA9IGRlZmF1bHRFeGVjdXRpb25Sb2xlUG9saWN5KHRoaXMsIHRoaXMucHJvcHMpO1xuICAgIHJldHVybiBwb2xpY2llcy5tYXAoKHBvbGljeSkgPT5cbiAgICAgIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICAgIHJlc291cmNlQXJuczogcG9saWN5LnJlc291cmNlcyxcbiAgICAgICAgYWN0aW9uczogcG9saWN5LmFjdGlvbnMsXG4gICAgICAgIGNvbmRpdGlvbnM6IHBvbGljeS5jb25kaXRpb25zLFxuICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIENmbkltYWdlIHJlc291cmNlIGZyb20gdGhlIHJlY2lwZSBhbmQgcHJvcHMgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZUZyb21SZWNpcGUocHJvcHM6IEltYWdlUHJvcHMpOiBbQ2ZuSW1hZ2UsIElSZWNpcGVCYXNlXSB7XG4gICAgY29uc3QgcmVjaXBlID0gcHJvcHMucmVjaXBlO1xuICAgIGlmIChJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24odGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24pKSB7XG4gICAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5fYmluZCh7IGlzQ29udGFpbmVyQnVpbGQ6IHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkgJiYgcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJlY2lwZSBjYW5ub3QgYmUgYm90aCBhbiBJSW1hZ2VSZWNpcGUgYW5kIGFuIElDb250YWluZXJSZWNpcGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmICFyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgQ2ZuSW1hZ2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLi4uKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxJbWFnZVByb3BzLCBDZm5JbWFnZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5PihcbiAgICAgICAgcHJvcHMsXG4gICAgICApLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUHJvcHMsXG4gICAgICAgIENmbkltYWdlLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVByb3BzLCBDZm5JbWFnZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICBkZWxldGlvblNldHRpbmdzOiB0aGlzLmJ1aWxkRGVsZXRpb25TZXR0aW5ncyhwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtpbWFnZSwgcmVjaXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5JbWFnZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMubG9nR3JvdXApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGRlbGV0aW9uU2V0dGluZ3MgcHJvcGVydHkgaW50byB0aGUgYERlbGV0aW9uU2V0dGluZ3NgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZERlbGV0aW9uU2V0dGluZ3MocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5EZWxldGlvblNldHRpbmdzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBleGVjdXRpb25Sb2xlOiBwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUucm9sZUFybiB9O1xuICB9XG59XG4iXX0=
@@ -259,6 +259,7 @@ declare abstract class InfrastructureConfigurationBase extends cdk.Resource impl
259
259
  abstract readonly infrastructureConfigurationName: string;
260
260
  /**
261
261
  * Grant custom actions to the given grantee for the infrastructure configuration
262
+ * [disable-awslint:no-grants]
262
263
  *
263
264
  * @param grantee - The principal
264
265
  * @param actions - The list of actions
@@ -266,6 +267,7 @@ declare abstract class InfrastructureConfigurationBase extends cdk.Resource impl
266
267
  grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
267
268
  /**
268
269
  * Grant read permissions to the given grantee for the infrastructure configuration
270
+ * [disable-awslint:no-grants]
269
271
  *
270
272
  * @param grantee - The principal
271
273
  */
@@ -85,6 +85,7 @@ var Tenancy;
85
85
  class InfrastructureConfigurationBase extends cdk.Resource {
86
86
  /**
87
87
  * Grant custom actions to the given grantee for the infrastructure configuration
88
+ * [disable-awslint:no-grants]
88
89
  *
89
90
  * @param grantee - The principal
90
91
  * @param actions - The list of actions
@@ -99,6 +100,7 @@ class InfrastructureConfigurationBase extends cdk.Resource {
99
100
  }
100
101
  /**
101
102
  * Grant read permissions to the given grantee for the infrastructure configuration
103
+ * [disable-awslint:no-grants]
102
104
  *
103
105
  * @param grantee - The principal
104
106
  */
@@ -125,7 +127,7 @@ let InfrastructureConfiguration = (() => {
125
127
  InfrastructureConfiguration = _classThis = _classDescriptor.value;
126
128
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
127
129
  }
128
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.234.0-alpha.0" };
130
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.235.0-alpha.0" };
129
131
  /** Uniquely identifies this class. */
130
132
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.InfrastructureConfiguration';
131
133
  /**
@@ -338,4 +340,4 @@ let InfrastructureConfiguration = (() => {
338
340
  return InfrastructureConfiguration = _classThis;
339
341
  })();
340
342
  exports.InfrastructureConfiguration = InfrastructureConfiguration;
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtRUFBOEU7QUFHOUUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSxNQUFNLG1DQUFtQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQW9DdEg7Ozs7R0FJRztBQUNILElBQVksVUFVWDtBQVZELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILG1DQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLFVBQVUsMEJBQVYsVUFBVSxRQVVyQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLE9BZVg7QUFmRCxXQUFZLE9BQU87SUFDakI7O09BRUc7SUFDSCw4QkFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGtDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsd0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFmVyxPQUFPLHVCQUFQLE9BQU8sUUFlbEI7QUFxTUQ7O0dBRUc7QUFDSCxNQUFlLCtCQUFnQyxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBVWpFOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxPQUFPO1lBQ1AsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8s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QkFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsMEVBQTBFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbEgsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsMkRBQTJELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkcsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZ0VBQWdFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEcsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLHVEQUF1RCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9GLENBQUM7U0FDRjtRQUVEOztXQUVHO1FBQ0ksS0FBSyxDQUFDLE9BQStDO1lBQzFELElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxnQkFBZ0IsQ0FDckQsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxxREFBcUQsQ0FBQyxDQUNsRyxDQUFDO1lBQ0osQ0FBQztTQUNGOztZQXRRVSx1REFBMkI7Ozs7O0FBQTNCLGtFQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzbnMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNucyc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY29uc3QgSU5GUkFTVFJVQ1RVUkVfQ09ORklHVVJBVElPTl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW5zdGFuY2VNZXRhZGF0YU9wdGlvbnMuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1JbnN0YW5jZU1ldGFkYXRhT3B0aW9ucy1odHRwVG9rZW5zXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBUb2tlbnMge1xuICAvKipcbiAgICogQWxsb3dzIHJldHJpZXZhbCBvZiBpbnN0YW5jZSBtZXRhZGF0YSB3aXRoIG9yIHdpdGhvdXQgYSBzaWduZWQgdG9rZW4gaGVhZGVyIGluIHRoZSByZXF1ZXN0XG4gICAqL1xuICBPUFRJT05BTCA9ICdvcHRpb25hbCcsXG5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIGEgc2lnbmVkIHRva2VuIGhlYWRlciBpbiBpbnN0YW5jZSBtZXRhZGF0YSByZXRyaWV2YWwgcmVxdWVzdHNcbiAgICovXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbn1cblxuLyoqXG4gKiBUaGUgdGVuYW5jeSB0byB1c2UgZm9yIGFuIGluc3RhbmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QbGFjZW1lbnQuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1QbGFjZW1lbnQtdGVuYW5jeVxuICovXG5leHBvcnQgZW51bSBUZW5hbmN5IHtcbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCB0ZW5hbmN5XG4gICAqL1xuICBERUZBVUxUID0gJ2RlZmF1bHQnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCB3aXRoIGRlZGljYXRlZCB0ZW5hbmN5XG4gICAqL1xuICBERURJQ0FURUQgPSAnZGVkaWNhdGVkJyxcblxuICAvKipcbiAgICogSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgb24gYSBkZWRpY2F0ZWQgaG9zdFxuICAgKi9cbiAgSE9TVCA9ICdob3N0Jyxcbn1cblxuLyoqXG4gKiBUaGUgbG9nIHNldHRpbmdzIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTG9nZ2luZyB7XG4gIC8qKlxuICAgKiBUaGUgUzMgbG9nZ2luZyBidWNrZXQgdG8gdXNlIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldDogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIFMzIGxvZ2dpbmcgcHJlZml4IHRvIHVzZSBmb3IgZGV0YWlsZWQgYnVpbGQgbG9nZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBObyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHMzS2V5UHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi4gVGhpcyBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSB0cmFuc2Zvcm1pbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBsYXVuY2ggYnVpbGQgYW5kIHRlc3QgRUMyIGluc3RhbmNlcyB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBJbWFnZSBCdWlsZGVyIHdpbGwgY2hvb3NlIGZyb20gYSBkZWZhdWx0IHNldCBvZiBpbnN0YW5jZSB0eXBlcyBjb21wYXRpYmxlIHdpdGggdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlcz86IGVjMi5JbnN0YW5jZVR5cGVbXTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHByb2ZpbGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlIGltYWdlLFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBJZiBhbiBTMyBsb2dnaW5nIGJ1Y2tldCBhbmQga2V5IHByZWZpeCBpcyBwcm92aWRlZCwgYW4gSUFNIGlubGluZSBwb2xpY3kgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgaW5zdGFuY2UgcHJvZmlsZSdzXG4gICAqIHJvbGUsIGFsbG93aW5nIHMzOlB1dE9iamVjdCBwZXJtaXNzaW9ucyBvbiB0aGUgYnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbiBpbnN0YW5jZSBwcm9maWxlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGU/OiBpYW0uSUluc3RhbmNlUHJvZmlsZTtcbiAgLyoqXG4gICAqIEFuIElBTSByb2xlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBpbnN0YW5jZSBwcm9maWxlIHVzZWQgYnkgSW1hZ2UgQnVpbGRlclxuICAgKlxuICAgKiBUaGUgcm9sZSBtdXN0IGJlIGFzc3VtYWJsZSBieSB0aGUgc2VydmljZSBwcmluY2lwYWwgYGVjMi5hbWF6b25hd3MuY29tYDpcbiAgICogTm90ZTogWW91IGNhbiBwcm92aWRlIGFuIGluc3RhbmNlUHJvZmlsZSBvciBhIHJvbGUsIGJ1dCBub3QgYm90aC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgaW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnTXlSb2xlJywge1xuICAgKiAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpXG4gICAqIH0pO1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIHJvbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQsIGl0IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIGByb2xlYCBwcm9wZXJ0eVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCB3aGljaCBzdWJuZXQgdG8gcGxhY2UgdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuIFRoZSBmaXJzdCBzdWJuZXQgdGhhdCBpcyBzZWxlY3RlZCB3aWxsIGJlIHVzZWQuXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhlIFZQQyB0byBjdXN0b21pemUgdGhlIHN1Ym5ldCBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBmaXJzdCBzdWJuZXQgc2VsZWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgc2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSBWUEMgd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IHBhaXIgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLiBUaGUga2V5IHBhaXIgY2FuIGJlIHVzZWQgdG8gbG9nIGludG8gdGhlIGJ1aWxkXG4gICAqIG9yIHRlc3QgaW5zdGFuY2VzIGZvciB0cm91Ymxlc2hvb3RpbmcgYW55IGZhaWx1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyPzogZWMyLklLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgRUMyIGluc3RhbmNlIHdoZW4gdGhlIGJ1aWxkIG9yIHRlc3Qgd29ya2Zsb3cgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGhvcHMgdGhhdCBhbiBpbnN0YW5jZSBtZXRhZGF0YSByZXF1ZXN0IGNhbiB0cmF2ZXJzZSB0byByZWFjaCBpdHMgZGVzdGluYXRpb24uIEJ5IGRlZmF1bHQsXG4gICAqIHRoaXMgaXMgc2V0IHRvIDIuXG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy4gQnkgZGVmYXVsdCwgdGhpcyBpc1xuICAgKiBzZXQgdG8gYHJlcXVpcmVkYCB0byByZXF1aXJlIElNRFN2MiBvbiBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBIdHRwVG9rZW5zLlJFUVVJUkVEXG4gICAqL1xuICByZWFkb25seSBodHRwVG9rZW5zPzogSHR0cFRva2VucztcblxuICAvKipcbiAgICogVGhlIFNOUyB0b3BpYyBvbiB3aGljaCBub3RpZmljYXRpb25zIGFyZSBzZW50IHdoZW4gYW4gaW1hZ2UgYnVpbGQgY29tcGxldGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBub3RpZmljYXRpb25zIGFyZSBzZW50XG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpYz86IHNucy5JVG9waWM7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgc2V0dGluZ3MgZm9yIGRldGFpbGVkIGJ1aWxkIGxvZ2dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Mb2dnaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgdG8gcGxhY2UgSW1hZ2UgQnVpbGRlciBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBFQzIgd2lsbCBzZWxlY3QgYSByYW5kb20gem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IG9uIHdoaWNoIGJ1aWxkIGFuZCB0ZXN0IGluc3RhbmNlcyBydW4uIFRoaXMgb25seSBhcHBsaWVzIGlmIHRoZSBpbnN0YW5jZSB0ZW5hbmN5IGlzXG4gICAqIGBob3N0YC4gVGhpcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybmAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZUhvc3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaG9zdCByZXNvdXJjZSBncm91cCBvbiB3aGljaCBidWlsZCBhbmQgdGVzdCBpbnN0YW5jZXMgcnVuLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgaW5zdGFuY2UgdGVuYW5jeVxuICAgKiBpcyBgaG9zdGAuIFRoaXMgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgYGVjMkluc3RhbmNlSG9zdElkYCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW5hbmN5IG9mIHRoZSBpbnN0YW5jZS4gRGVkaWNhdGVkIHRlbmFuY3kgcnVucyBpbnN0YW5jZXMgb24gc2luZ2xlLXRlbmFudCBoYXJkd2FyZSwgd2hpbGUgaG9zdCB0ZW5hbmN5IHJ1bnNcbiAgICogaW5zdGFuY2VzIG9uIGEgZGVkaWNhdGVkIGhvc3QuIFNoYXJlZCB0ZW5hbmN5IGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgVGVuYW5jeS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZVRlbmFuY3k/OiBUZW5hbmN5O1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkaXRpb25hbCB0YWdzIHRvIGFzc2lnbiB0byB0aGUgQW1hem9uIEVDMiBpbnN0YW5jZSB0aGF0IEltYWdlIEJ1aWxkZXIgbGF1bmNoZXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IGluZm9ybWF0aW9uIHBhc3NlZCB3aGVuIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gaXMgYmVpbmcgY29uc3VtZWRcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBpcyBiZWluZyBjb25zdW1lZCBpbnNpZGUgb2YgYSBjb250YWluZXIgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGlzQ29udGFpbmVyQnVpbGQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb25cbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgSW5mcmFzdHJ1Y3R1cmUgQ29uZmlndXJhdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtaW5mcmEtY29uZmlnLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiBleHRlbmRzIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiBzdHJpbmcsXG4gICk6IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuLFxuICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybiA9IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lID0gaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZ1xuICAgKiBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyxcbiAgKTogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5mcm9tSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbicsXG4gICAgICAgIHJlc291cmNlTmFtZTogaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhbiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHg6IGFueSk6IHggaXMgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgSU5GUkFTVFJVQ1RVUkVfQ09ORklHVVJBVElPTl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRUMyIGluc3RhbmNlIHByb2ZpbGUgdG8gdXNlIGZvciB0aGUgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZVByb2ZpbGU6IGlhbS5JSW5zdGFuY2VQcm9maWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSBhc3NvY2lhdGVkIHdpdGggdGhlIEVDMiBpbnN0YW5jZSBwcm9maWxlIHVzZWQgZm9yIHRoZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdXNlZCB0byB1cGxvYWQgaW1hZ2UgYnVpbGQgbG9nc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvZ0J1Y2tldD86IHMzLklCdWNrZXQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhdXRvR2VuZXJhdGVkSW5zdGFuY2VQcm9maWxlUm9sZT86IGlhbS5JUm9sZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvblByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSU5GUkFTVFJVQ1RVUkVfQ09ORklHVVJBVElPTl9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSgpO1xuXG4gICAgaWYgKHByb3BzLnN1Ym5ldFNlbGVjdGlvbiAmJiAhcHJvcHMudnBjKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignQSB2cGMgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHVzaW5nIHN1Ym5ldFNlbGVjdGlvbicsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkU3VibmV0cyA9IHByb3BzLnZwYz8uc2VsZWN0U3VibmV0cyhwcm9wcy5zdWJuZXRTZWxlY3Rpb24pO1xuICAgIGlmIChwcm9wcy52cGMgJiYgc2VsZWN0ZWRTdWJuZXRzICYmIHNlbGVjdGVkU3VibmV0cy5zdWJuZXRJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignTm8gc3VibmV0cyBtYXRjaGVkIHRoZSBnaXZlbiBzdWJuZXRTZWxlY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBWUEMuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiBwcm9wcy5yb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignQm90aCBhbiBpbnN0YW5jZSBwcm9maWxlIGFuZCBhIHJvbGUgY2Fubm90IGJlIHByb3ZpZGVkJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSkpIHtcbiAgICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZVRlbmFuY3kgPT09IFRlbmFuY3kuSE9TVCkge1xuICAgICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdlYzJJbnN0YW5jZUhvc3RJZCBvciBlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gZWMySW5zdGFuY2VUZW5hbmN5IGlzIHNldCB0byBob3N0JyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb3BzLmVjMkluc3RhbmNlSG9zdElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdlYzJJbnN0YW5jZUhvc3RJZCBjYW5ub3QgYmUgc3BlY2lmaWVkIHVubGVzcyBlYzJJbnN0YW5jZVRlbmFuY3kgaXMgc2V0IHRvIGhvc3QnLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgJ2VjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gY2Fubm90IGJlIHNwZWNpZmllZCB1bmxlc3MgZWMySW5zdGFuY2VUZW5hbmN5IGlzIHNldCB0byBob3N0JyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZUhvc3RJZCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdlYzJJbnN0YW5jZUhvc3RJZCBhbmQgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5odHRwUHV0UmVzcG9uc2VIb3BMaW1pdCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0IDwgMSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2h0dHBQdXRSZXNwb25zZUhvcExpbWl0IG11c3QgYmUgYXQgbGVhc3QgMScsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5odHRwUHV0UmVzcG9uc2VIb3BMaW1pdCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdodHRwUHV0UmVzcG9uc2VIb3BMaW1pdCBtdXN0IGJlIGF0IG1vc3QgNjQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiAhcHJvcHMucm9sZSkge1xuICAgICAgdGhpcy5hdXRvR2VuZXJhdGVkSW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZScpLFxuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyJyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZVByb2ZpbGUgPVxuICAgICAgcHJvcHMuaW5zdGFuY2VQcm9maWxlIHx8XG4gICAgICBuZXcgaWFtLkluc3RhbmNlUHJvZmlsZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlJywgeyByb2xlOiBwcm9wcy5yb2xlID8/IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGUgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLmluc3RhbmNlUHJvZmlsZS5yb2xlO1xuICAgIHRoaXMubG9nQnVja2V0ID0gcHJvcHMubG9nZ2luZz8uczNCdWNrZXQ7XG5cbiAgICBpZiAodGhpcy5sb2dCdWNrZXQgJiYgdGhpcy5yb2xlKSB7XG4gICAgICB0aGlzLmxvZ0J1Y2tldC5ncmFudFB1dCh0aGlzLnJvbGUsIHByb3BzLmxvZ2dpbmc/LnMzS2V5UHJlZml4ID8gYCR7cHJvcHMubG9nZ2luZy5zM0tleVByZWZpeH0vKmAgOiAnKicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1BsYWNlbWVudE9wdGlvbnMgPVxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdElkICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5ICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGxhY2VtZW50OiBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uUGxhY2VtZW50UHJvcGVydHkgfCB1bmRlZmluZWQgPSBoYXNQbGFjZW1lbnRPcHRpb25zXG4gICAgICA/IHtcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlQXZhaWxhYmlsaXR5Wm9uZSAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5lYzJJbnN0YW5jZUF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4ocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGhvc3RJZDogcHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgfSksXG4gICAgICAgIC4uLihwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgIGhvc3RSZXNvdXJjZUdyb3VwQXJuOiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSAhPT0gdW5kZWZpbmVkICYmIHsgdGVuYW5jeTogcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5IH0pLFxuICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPSBuZXcgQ2ZuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgaW5zdGFuY2VQcm9maWxlTmFtZTogdGhpcy5pbnN0YW5jZVByb2ZpbGUuaW5zdGFuY2VQcm9maWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGluc3RhbmNlTWV0YWRhdGFPcHRpb25zOiB7XG4gICAgICAgIGh0dHBUb2tlbnM6IHByb3BzLmh0dHBUb2tlbnMgPz8gSHR0cFRva2Vucy5SRVFVSVJFRCxcbiAgICAgICAgaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQ6IHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ID8/IDIsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VUeXBlczogcHJvcHMuaW5zdGFuY2VUeXBlcz8ubGVuZ3RoXG4gICAgICAgID8gcHJvcHMuaW5zdGFuY2VUeXBlcz8ubWFwKChpbnN0YW5jZVR5cGUpID0+IGluc3RhbmNlVHlwZS50b1N0cmluZygpKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGtleVBhaXI6IHByb3BzLmtleVBhaXI/LmtleVBhaXJOYW1lLFxuICAgICAgLi4uKHByb3BzLmxvZ2dpbmcgJiYge1xuICAgICAgICBsb2dnaW5nOiB7XG4gICAgICAgICAgczNMb2dzOiB7XG4gICAgICAgICAgICBzM0J1Y2tldE5hbWU6IHByb3BzLmxvZ2dpbmc/LnMzQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBzM0tleVByZWZpeDogcHJvcHMubG9nZ2luZz8uczNLZXlQcmVmaXgsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHBsYWNlbWVudCAmJiB7IHBsYWNlbWVudCB9KSxcbiAgICAgIHJlc291cmNlVGFnczogcHJvcHMucmVzb3VyY2VUYWdzLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cHM/Lmxlbmd0aFxuICAgICAgICA/IHByb3BzLnNlY3VyaXR5R3JvdXBzPy5tYXAoKHNlY3VyaXR5R3JvdXApID0+IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHN1Ym5ldElkOiBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKS5zdWJuZXRJZHNbMF0sXG4gICAgICBzbnNUb3BpY0FybjogcHJvcHMubm90aWZpY2F0aW9uVG9waWM/LnRvcGljQXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlOiBwcm9wcy50ZXJtaW5hdGVJbnN0YW5jZU9uRmFpbHVyZSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5hdHRyTmFtZSk7XG4gICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbicsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYmluZChvcHRpb25zOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmlzQ29udGFpbmVyQnVpbGQpIHtcbiAgICAgIHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU/LmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyRUNSQ29udGFpbmVyQnVpbGRzJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtRUFBOEU7QUFHOUUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUcxRSxNQUFNLG1DQUFtQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQW9DdEg7Ozs7R0FJRztBQUNILElBQVksVUFVWDtBQVZELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILG1DQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQVZXLFVBQVUsMEJBQVYsVUFBVSxRQVVyQjtBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLE9BZVg7QUFmRCxXQUFZLE9BQU87SUFDakI7O09BRUc7SUFDSCw4QkFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILGtDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsd0JBQWEsQ0FBQTtBQUNmLENBQUMsRUFmVyxPQUFPLHVCQUFQLE9BQU8sUUFlbEI7QUFxTUQ7O0dBRUc7QUFDSCxNQUFlLCtCQUFnQyxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBVWpFOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDO0tBQzNFO0NBQ0Y7QUFFRDs7OztHQUlHO0lBRVUsMkJBQTJCOzRCQUR2QyxvQ0FBa0I7Ozs7c0JBQzhCLCtCQUErQjsyQ0FBdkMsU0FBUSxXQUErQjs7OztZQUFoRiw2S0F1UUM7Ozs7O1FBdFFDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsNkRBQTZELENBQUM7UUFFckg7O1dBRUc7UUFDSSxNQUFNLENBQUMsa0NBQWtDLENBQzlDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDViw4QkFBc0M7WUFFdEMsTUFBTSwrQkFBK0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ2xFLDhCQUE4QixFQUM5QixHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUNsQyxDQUFDLFlBQWEsQ0FBQztZQUVoQixNQUFNLE1BQU8sU0FBUSwrQkFBK0I7Z0JBQ2xDLDhCQUE4QixHQUFHLDhCQUE4QixDQUFDO2dCQUNoRSwrQkFBK0IsR0FBRywrQkFBK0IsQ0FBQzthQUNuRjtZQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBRUQ7OztXQUdHO1FBQ0ksTUFBTSxDQUFDLG1DQUFtQyxDQUMvQyxLQUFnQixFQUNoQixFQUFVLEVBQ1YsK0JBQXVDO1lBRXZDLE9BQU8sMkJBQTJCLENBQUMsa0NBQWtDLENBQ25FLEtBQUssRUFDTCxFQUFFLEVBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUM1QixPQUFPLEVBQUUsY0FBYztnQkFDdkIsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsWUFBWSxFQUFFLCtCQUErQjthQUM5QyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBRUQ7O1dBRUc7UUFDSSxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBTTtZQUNoRCxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLG1DQUFtQyxJQUFJLENBQUMsQ0FBQztTQUN4RjtRQUVEOztXQUVHO1FBQ2EsOEJBQThCLENBQVM7UUFFdkQ7O1dBRUc7UUFDYSwrQkFBK0IsQ0FBUztRQUV4RDs7V0FFRztRQUNhLGVBQWUsQ0FBdUI7UUFFdEQ7O1dBRUc7UUFDYSxJQUFJLENBQWE7UUFFakM7O1dBRUc7UUFDYSxTQUFTLENBQWM7UUFFdEIsZ0NBQWdDLENBQWE7UUFFOUQsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBMEMsRUFBRTtZQUMzRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDZixZQUFZLEVBQ1YsS0FBSyxDQUFDLCtCQUErQjtvQkFDckMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUNaLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFOzRCQUNqQyxTQUFTLEVBQUUsR0FBRzs0QkFDZCxTQUFTLEVBQUUsR0FBRzs0QkFDZCx3QkFBd0IsRUFBRSxHQUFHO3lCQUM5QixDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsb0RBQW9EO3FCQUN6RSxDQUFDO2FBQ0wsQ0FBQyxDQUFDOzs7Ozs7bURBM0ZNLDJCQUEyQjs7OztZQTRGcEMsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFbEYsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7WUFFL0MsSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxtREFBbUQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNFLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9FQUFvRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVHLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4QyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyx3REFBd0QsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRyxDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELElBQUksS0FBSyxDQUFDLGtCQUFrQixLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDakcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQzNCLCtHQUErRyxFQUMvRyxJQUFJLENBQ0wsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQzt3QkFDMUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQzNCLGdGQUFnRixFQUNoRixJQUFJLENBQ0wsQ0FBQztvQkFDSixDQUFDO29CQUVELElBQUksS0FBSyxDQUFDLCtCQUErQixLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUN4RCxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FDM0IsOEZBQThGLEVBQzlGLElBQUksQ0FDTCxDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLCtCQUErQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNqRyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FDM0IsK0VBQStFLEVBQy9FLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLHVCQUF1QixLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLDRDQUE0QyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BGLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUN0RixNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyw0Q0FBNEMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO29CQUNoRixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUM7b0JBQ3hELGVBQWUsRUFBRTt3QkFDZixHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDhCQUE4QixDQUFDO3dCQUMxRSxHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLG1DQUFtQyxDQUFDO3FCQUNoRjtpQkFDRixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7WUFDcEQsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlO2dCQUNsQixLQUFLLENBQUMsZUFBZTtvQkFDckIsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLENBQUM7WUFFbEgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1lBRXpDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUcsQ0FBQztZQUVELE1BQU0sbUJBQW1CLEdBQ3ZCLEtBQUssQ0FBQywyQkFBMkIsS0FBSyxTQUFTO2dCQUMvQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUztnQkFDckMsS0FBSyxDQUFDLCtCQUErQixLQUFLLFNBQVM7Z0JBQ25ELEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQWlFLG1CQUFtQjtnQkFDakcsQ0FBQyxDQUFDO29CQUNBLEdBQUcsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEtBQUssU0FBUyxJQUFJO3dCQUNyRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMkJBQTJCO3FCQUNwRCxDQUFDO29CQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUNqRixHQUFHLENBQUMsS0FBSyxDQUFDLCtCQUErQixLQUFLLFNBQVMsSUFBSTt3QkFDekQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLCtCQUErQjtxQkFDNUQsQ0FBQztvQkFDRixHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztpQkFDckY7Z0JBQ0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVkLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxpREFBOEIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUN2RixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3ZCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CO2dCQUM3RCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLHVCQUF1QixFQUFFO29CQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUTtvQkFDbkQsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUM7aUJBQzVEO2dCQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLE1BQU07b0JBQ3hDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNyRSxDQUFDLENBQUMsU0FBUztnQkFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXO2dCQUNuQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtvQkFDbkIsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRTs0QkFDTixZQUFZLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsVUFBVTs0QkFDaEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsV0FBVzt5QkFDeEM7cUJBQ0Y7aUJBQ0YsQ0FBQztnQkFDRixHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQy9CLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFNO29CQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7b0JBQzdFLENBQUMsQ0FBQyxTQUFTO2dCQUNiLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsV0FBVyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxRQUFRO2dCQUM5QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLDBCQUEwQixFQUFFLEtBQUssQ0FBQywwQkFBMEI7YUFDN0QsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzRyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDJCQUEyQixDQUFDLE9BQU8sRUFBRTtnQkFDdEcsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTthQUNoQyxDQUFDLENBQUM7U0FDSjtRQUVPLHVDQUF1QztZQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxPQUFPLENBQUMsNkZBQTZGO1lBQ3ZHLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQywwRUFBMEUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsSCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQywyREFBMkQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxnRUFBZ0UsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0YsQ0FBQztTQUNGO1FBRUQ7O1dBRUc7UUFDSSxLQUFLLENBQUMsT0FBK0M7WUFDMUQsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLGdCQUFnQixDQUNyRCxHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLHFEQUFxRCxDQUFDLENBQ2xHLENBQUM7WUFDSixDQUFDO1NBQ0Y7O1lBdFFVLHVEQUEyQjs7Ozs7QUFBM0Isa0VBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNucyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5jb25zdCBJTkZSQVNUUlVDVFVSRV9DT05GSUdVUkFUSU9OX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW5mcmFzdHJ1Y3R1cmUgQ29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgLSBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIGEgc2lnbmVkIHRva2VuIGhlYWRlciBpcyByZXF1aXJlZCBmb3IgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9JbnN0YW5jZU1ldGFkYXRhT3B0aW9ucy5odG1sI2ltYWdlYnVpbGRlci1UeXBlLUluc3RhbmNlTWV0YWRhdGFPcHRpb25zLWh0dHBUb2tlbnNcbiAqL1xuZXhwb3J0IGVudW0gSHR0cFRva2VucyB7XG4gIC8qKlxuICAgKiBBbGxvd3MgcmV0cmlldmFsIG9mIGluc3RhbmNlIG1ldGFkYXRhIHdpdGggb3Igd2l0aG91dCBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaW4gdGhlIHJlcXVlc3RcbiAgICovXG4gIE9QVElPTkFMID0gJ29wdGlvbmFsJyxcblxuICAvKipcbiAgICogUmVxdWlyZXMgYSBzaWduZWQgdG9rZW4gaGVhZGVyIGluIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0c1xuICAgKi9cbiAgUkVRVUlSRUQgPSAncmVxdWlyZWQnLFxufVxuXG4vKipcbiAqIFRoZSB0ZW5hbmN5IHRvIHVzZSBmb3IgYW4gaW5zdGFuY2UuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1BsYWNlbWVudC5odG1sI2ltYWdlYnVpbGRlci1UeXBlLVBsYWNlbWVudC10ZW5hbmN5XG4gKi9cbmV4cG9ydCBlbnVtIFRlbmFuY3kge1xuICAvKipcbiAgICogSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgd2l0aCBkZWZhdWx0IHRlbmFuY3lcbiAgICovXG4gIERFRkFVTFQgPSAnZGVmYXVsdCcsXG5cbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVkaWNhdGVkIHRlbmFuY3lcbiAgICovXG4gIERFRElDQVRFRCA9ICdkZWRpY2F0ZWQnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCBvbiBhIGRlZGljYXRlZCBob3N0XG4gICAqL1xuICBIT1NUID0gJ2hvc3QnLFxufVxuXG4vKipcbiAqIFRoZSBsb2cgc2V0dGluZ3MgZm9yIGRldGFpbGVkIGJ1aWxkIGxvZ2dpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Mb2dnaW5nIHtcbiAgLyoqXG4gICAqIFRoZSBTMyBsb2dnaW5nIGJ1Y2tldCB0byB1c2UgZm9yIGRldGFpbGVkIGJ1aWxkIGxvZ2dpbmdcbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgbG9nZ2luZyBwcmVmaXggdG8gdXNlIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHByZWZpeFxuICAgKi9cbiAgcmVhZG9ubHkgczNLZXlQcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYW4gSW5mcmFzdHJ1Y3R1cmUgQ29uZmlndXJhdGlvbiByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uLiBUaGlzIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IHRyYW5zZm9ybWluZyBhbGwgYWxwaGFiZXRpY2FsXG4gICAqIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICpcbiAgICogQGRlZmF1bHQgQSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGVzIHRvIGxhdW5jaCBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzIHdpdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlIEJ1aWxkZXIgd2lsbCBjaG9vc2UgZnJvbSBhIGRlZmF1bHQgc2V0IG9mIGluc3RhbmNlIHR5cGVzIGNvbXBhdGlibGUgd2l0aCB0aGUgQU1JXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGVzPzogZWMyLkluc3RhbmNlVHlwZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgcHJvZmlsZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYW4gaW5zdGFuY2UgcHJvZmlsZSBhbmQgcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGUgaW1hZ2UsXG4gICAqIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIElmIGFuIFMzIGxvZ2dpbmcgYnVja2V0IGFuZCBrZXkgcHJlZml4IGlzIHByb3ZpZGVkLCBhbiBJQU0gaW5saW5lIHBvbGljeSB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBpbnN0YW5jZSBwcm9maWxlJ3NcbiAgICogcm9sZSwgYWxsb3dpbmcgczM6UHV0T2JqZWN0IHBlcm1pc3Npb25zIG9uIHRoZSBidWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFuIGluc3RhbmNlIHByb2ZpbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZT86IGlhbS5JSW5zdGFuY2VQcm9maWxlO1xuICAvKipcbiAgICogQW4gSUFNIHJvbGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlIHByb2ZpbGUgdXNlZCBieSBJbWFnZSBCdWlsZGVyXG4gICAqXG4gICAqIFRoZSByb2xlIG11c3QgYmUgYXNzdW1hYmxlIGJ5IHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBgZWMyLmFtYXpvbmF3cy5jb21gOlxuICAgKiBOb3RlOiBZb3UgY2FuIHByb3ZpZGUgYW4gaW5zdGFuY2VQcm9maWxlIG9yIGEgcm9sZSwgYnV0IG5vdCBib3RoLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBpbnN0YW5jZVByb2ZpbGVSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdNeVJvbGUnLCB7XG4gICAqICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJylcbiAgICogfSk7XG4gICAqXG4gICAqIEBkZWZhdWx0IEEgcm9sZSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCwgaXQgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgYHJvbGVgIHByb3BlcnR5XG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHRvIHBsYWNlIHRoZSBpbnN0YW5jZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgZGVmYXVsdCBWUEMgd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcblxuICAvKipcbiAgICogU2VsZWN0IHdoaWNoIHN1Ym5ldCB0byBwbGFjZSB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS4gVGhlIGZpcnN0IHN1Ym5ldCB0aGF0IGlzIHNlbGVjdGVkIHdpbGwgYmUgdXNlZC5cbiAgICogWW91IG11c3Qgc3BlY2lmeSB0aGUgVlBDIHRvIGN1c3RvbWl6ZSB0aGUgc3VibmV0IHNlbGVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGZpcnN0IHN1Ym5ldCBzZWxlY3RlZCBmcm9tIHRoZSBwcm92aWRlZCBWUEMgd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBpbnN0YW5jZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgZGVmYXVsdCBzZWN1cml0eSBncm91cCBmb3IgdGhlIFZQQyB3aWxsIGJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgcGFpciB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGJ1aWxkIGFuZCB0ZXN0IEVDMiBpbnN0YW5jZXMuIFRoZSBrZXkgcGFpciBjYW4gYmUgdXNlZCB0byBsb2cgaW50byB0aGUgYnVpbGRcbiAgICogb3IgdGVzdCBpbnN0YW5jZXMgZm9yIHRyb3VibGVzaG9vdGluZyBhbnkgZmFpbHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGtleVBhaXI/OiBlYzIuSUtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdGVybWluYXRlIHRoZSBFQzIgaW5zdGFuY2Ugd2hlbiB0aGUgYnVpbGQgb3IgdGVzdCB3b3JrZmxvdyBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVybWluYXRlSW5zdGFuY2VPbkZhaWx1cmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaG9wcyB0aGF0IGFuIGluc3RhbmNlIG1ldGFkYXRhIHJlcXVlc3QgY2FuIHRyYXZlcnNlIHRvIHJlYWNoIGl0cyBkZXN0aW5hdGlvbi4gQnkgZGVmYXVsdCxcbiAgICogdGhpcyBpcyBzZXQgdG8gMi5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgc2lnbmVkIHRva2VuIGhlYWRlciBpcyByZXF1aXJlZCBmb3IgaW5zdGFuY2UgbWV0YWRhdGEgcmV0cmlldmFsIHJlcXVlc3RzLiBCeSBkZWZhdWx0LCB0aGlzIGlzXG4gICAqIHNldCB0byBgcmVxdWlyZWRgIHRvIHJlcXVpcmUgSU1EU3YyIG9uIGJ1aWxkIGFuZCB0ZXN0IEVDMiBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEh0dHBUb2tlbnMuUkVRVUlSRURcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBUb2tlbnM/OiBIdHRwVG9rZW5zO1xuXG4gIC8qKlxuICAgKiBUaGUgU05TIHRvcGljIG9uIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgd2hlbiBhbiBpbWFnZSBidWlsZCBjb21wbGV0ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnRcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvblRvcGljPzogc25zLklUb3BpYztcblxuICAvKipcbiAgICogVGhlIGxvZyBzZXR0aW5ncyBmb3IgZGV0YWlsZWQgYnVpbGQgbG9nZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZz86IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkxvZ2dpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhdmFpbGFiaWxpdHkgem9uZSB0byBwbGFjZSBJbWFnZSBCdWlsZGVyIGJ1aWxkIGFuZCB0ZXN0IEVDMiBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEVDMiB3aWxsIHNlbGVjdCBhIHJhbmRvbSB6b25lXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZUF2YWlsYWJpbGl0eVpvbmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgRGVkaWNhdGVkIEhvc3Qgb24gd2hpY2ggYnVpbGQgYW5kIHRlc3QgaW5zdGFuY2VzIHJ1bi4gVGhpcyBvbmx5IGFwcGxpZXMgaWYgdGhlIGluc3RhbmNlIHRlbmFuY3kgaXNcbiAgICogYGhvc3RgLiBUaGlzIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIGBlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuYCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVjMkluc3RhbmNlSG9zdElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBob3N0IHJlc291cmNlIGdyb3VwIG9uIHdoaWNoIGJ1aWxkIGFuZCB0ZXN0IGluc3RhbmNlcyBydW4uIFRoaXMgb25seSBhcHBsaWVzIGlmIHRoZSBpbnN0YW5jZSB0ZW5hbmN5XG4gICAqIGlzIGBob3N0YC4gVGhpcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBgZWMySW5zdGFuY2VIb3N0SWRgIHBhcmFtZXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRlbmFuY3kgb2YgdGhlIGluc3RhbmNlLiBEZWRpY2F0ZWQgdGVuYW5jeSBydW5zIGluc3RhbmNlcyBvbiBzaW5nbGUtdGVuYW50IGhhcmR3YXJlLCB3aGlsZSBob3N0IHRlbmFuY3kgcnVuc1xuICAgKiBpbnN0YW5jZXMgb24gYSBkZWRpY2F0ZWQgaG9zdC4gU2hhcmVkIHRlbmFuY3kgaXMgdXNlZCBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBUZW5hbmN5LkRFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IGVjMkluc3RhbmNlVGVuYW5jeT86IFRlbmFuY3k7XG5cbiAgLyoqXG4gICAqIFRoZSBhZGRpdGlvbmFsIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBBbWF6b24gRUMyIGluc3RhbmNlIHRoYXQgSW1hZ2UgQnVpbGRlciBsYXVuY2hlcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIENvbnRleHQgaW5mb3JtYXRpb24gcGFzc2VkIHdoZW4gYW4gSW5mcmFzdHJ1Y3R1cmUgQ29uZmlndXJhdGlvbiBpcyBiZWluZyBjb25zdW1lZFxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkJpbmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIGlzIGJlaW5nIGNvbnN1bWVkIGluc2lkZSBvZiBhIGNvbnRhaW5lciBidWlsZFxuICAgKi9cbiAgcmVhZG9ubHkgaXNDb250YWluZXJCdWlsZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgSW5mcmFzdHJ1Y3R1cmUgQ29uZmlndXJhdGlvblxuICovXG5hYnN0cmFjdCBjbGFzcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0SW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWluZnJhLWNvbmZpZy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gZXh0ZW5kcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjogc3RyaW5nLFxuICApOiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4gPSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSA9IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmdcbiAgICogYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcsXG4gICk6IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uZnJvbUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0luZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih4OiBhbnkpOiB4IGlzIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElORlJBU1RSVUNUVVJFX0NPTkZJR1VSQVRJT05fU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSBwcm9maWxlIHRvIHVzZSBmb3IgdGhlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VQcm9maWxlOiBpYW0uSUluc3RhbmNlUHJvZmlsZTtcblxuICAvKipcbiAgICogVGhlIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBFQzIgaW5zdGFuY2UgcHJvZmlsZSB1c2VkIGZvciB0aGUgYnVpbGRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHVzZWQgdG8gdXBsb2FkIGltYWdlIGJ1aWxkIGxvZ3NcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2dCdWNrZXQ/OiBzMy5JQnVja2V0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElORlJBU1RSVUNUVVJFX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKTtcblxuICAgIGlmIChwcm9wcy5zdWJuZXRTZWxlY3Rpb24gJiYgIXByb3BzLnZwYykge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0EgdnBjIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB1c2luZyBzdWJuZXRTZWxlY3Rpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFN1Ym5ldHMgPSBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKTtcbiAgICBpZiAocHJvcHMudnBjICYmIHNlbGVjdGVkU3VibmV0cyAmJiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ05vIHN1Ym5ldHMgbWF0Y2hlZCB0aGUgZ2l2ZW4gc3VibmV0U2VsZWN0aW9uIGZvciB0aGUgcHJvdmlkZWQgVlBDLicsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5pbnN0YW5jZVByb2ZpbGUgJiYgcHJvcHMucm9sZSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0JvdGggYW4gaW5zdGFuY2UgcHJvZmlsZSBhbmQgYSByb2xlIGNhbm5vdCBiZSBwcm92aWRlZCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICghY2RrLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5lYzJJbnN0YW5jZVRlbmFuY3kpKSB7XG4gICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5ID09PSBUZW5hbmN5LkhPU1QpIHtcbiAgICAgICAgaWYgKHByb3BzLmVjMkluc3RhbmNlSG9zdElkID09PSB1bmRlZmluZWQgJiYgcHJvcHMuZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnZWMySW5zdGFuY2VIb3N0SWQgb3IgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZUhvc3RJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnZWMySW5zdGFuY2VIb3N0SWQgY2Fubm90IGJlIHNwZWNpZmllZCB1bmxlc3MgZWMySW5zdGFuY2VUZW5hbmN5IGlzIHNldCB0byBob3N0JyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIGNhbm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnZWMySW5zdGFuY2VIb3N0SWQgYW5kIGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5odHRwUHV0UmVzcG9uc2VIb3BMaW1pdCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdodHRwUHV0UmVzcG9uc2VIb3BMaW1pdCBtdXN0IGJlIGF0IGxlYXN0IDEnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5odHRwUHV0UmVzcG9uc2VIb3BMaW1pdCA+IDY0KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgbXVzdCBiZSBhdCBtb3N0IDY0JywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5pbnN0YW5jZVByb2ZpbGUgJiYgIXByb3BzLnJvbGUpIHtcbiAgICAgIHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0luc3RhbmNlUHJvZmlsZVJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUnKSxcbiAgICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0VDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlcicpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJvbGUgPSB0aGlzLmF1dG9HZW5lcmF0ZWRJbnN0YW5jZVByb2ZpbGVSb2xlO1xuICAgIH1cblxuICAgIHRoaXMuaW5zdGFuY2VQcm9maWxlID1cbiAgICAgIHByb3BzLmluc3RhbmNlUHJvZmlsZSB8fFxuICAgICAgbmV3IGlhbS5JbnN0YW5jZVByb2ZpbGUodGhpcywgJ0luc3RhbmNlUHJvZmlsZScsIHsgcm9sZTogcHJvcHMucm9sZSA/PyB0aGlzLmF1dG9HZW5lcmF0ZWRJbnN0YW5jZVByb2ZpbGVSb2xlIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5pbnN0YW5jZVByb2ZpbGUucm9sZTtcbiAgICB0aGlzLmxvZ0J1Y2tldCA9IHByb3BzLmxvZ2dpbmc/LnMzQnVja2V0O1xuXG4gICAgaWYgKHRoaXMubG9nQnVja2V0ICYmIHRoaXMucm9sZSkge1xuICAgICAgdGhpcy5sb2dCdWNrZXQuZ3JhbnRQdXQodGhpcy5yb2xlLCBwcm9wcy5sb2dnaW5nPy5zM0tleVByZWZpeCA/IGAke3Byb3BzLmxvZ2dpbmcuczNLZXlQcmVmaXh9LypgIDogJyonKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNQbGFjZW1lbnRPcHRpb25zID1cbiAgICAgIHByb3BzLmVjMkluc3RhbmNlQXZhaWxhYmlsaXR5Wm9uZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICBwcm9wcy5lYzJJbnN0YW5jZUhvc3RJZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBsYWNlbWVudDogQ2ZuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLlBsYWNlbWVudFByb3BlcnR5IHwgdW5kZWZpbmVkID0gaGFzUGxhY2VtZW50T3B0aW9uc1xuICAgICAgPyB7XG4gICAgICAgIC4uLihwcm9wcy5lYzJJbnN0YW5jZUF2YWlsYWJpbGl0eVpvbmUgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlSG9zdElkICE9PSB1bmRlZmluZWQgJiYgeyBob3N0SWQ6IHByb3BzLmVjMkluc3RhbmNlSG9zdElkIH0pLFxuICAgICAgICAuLi4ocHJvcHMuZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICBob3N0UmVzb3VyY2VHcm91cEFybjogcHJvcHMuZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybixcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcm9wcy5lYzJJbnN0YW5jZVRlbmFuY3kgIT09IHVuZGVmaW5lZCAmJiB7IHRlbmFuY3k6IHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSB9KSxcbiAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uID0gbmV3IENmbkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGluc3RhbmNlUHJvZmlsZU5hbWU6IHRoaXMuaW5zdGFuY2VQcm9maWxlLmluc3RhbmNlUHJvZmlsZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBpbnN0YW5jZU1ldGFkYXRhT3B0aW9uczoge1xuICAgICAgICBodHRwVG9rZW5zOiBwcm9wcy5odHRwVG9rZW5zID8/IEh0dHBUb2tlbnMuUkVRVUlSRUQsXG4gICAgICAgIGh0dHBQdXRSZXNwb25zZUhvcExpbWl0OiBwcm9wcy5odHRwUHV0UmVzcG9uc2VIb3BMaW1pdCA/PyAyLFxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlVHlwZXM6IHByb3BzLmluc3RhbmNlVHlwZXM/Lmxlbmd0aFxuICAgICAgICA/IHByb3BzLmluc3RhbmNlVHlwZXM/Lm1hcCgoaW5zdGFuY2VUeXBlKSA9PiBpbnN0YW5jZVR5cGUudG9TdHJpbmcoKSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBrZXlQYWlyOiBwcm9wcy5rZXlQYWlyPy5rZXlQYWlyTmFtZSxcbiAgICAgIC4uLihwcm9wcy5sb2dnaW5nICYmIHtcbiAgICAgICAgbG9nZ2luZzoge1xuICAgICAgICAgIHMzTG9nczoge1xuICAgICAgICAgICAgczNCdWNrZXROYW1lOiBwcm9wcy5sb2dnaW5nPy5zM0J1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgICAgczNLZXlQcmVmaXg6IHByb3BzLmxvZ2dpbmc/LnMzS2V5UHJlZml4LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIC4uLihwbGFjZW1lbnQgJiYgeyBwbGFjZW1lbnQgfSksXG4gICAgICByZXNvdXJjZVRhZ3M6IHByb3BzLnJlc291cmNlVGFncyxcbiAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzPy5sZW5ndGhcbiAgICAgICAgPyBwcm9wcy5zZWN1cml0eUdyb3Vwcz8ubWFwKChzZWN1cml0eUdyb3VwKSA9PiBzZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBJZClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBzdWJuZXRJZDogcHJvcHMudnBjPy5zZWxlY3RTdWJuZXRzKHByb3BzLnN1Ym5ldFNlbGVjdGlvbikuc3VibmV0SWRzWzBdLFxuICAgICAgc25zVG9waWNBcm46IHByb3BzLm5vdGlmaWNhdGlvblRvcGljPy50b3BpY0FybixcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICB0ZXJtaW5hdGVJbnN0YW5jZU9uRmFpbHVyZTogcHJvcHMudGVybWluYXRlSW5zdGFuY2VPbkZhaWx1cmUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uYXR0ck5hbWUpO1xuICAgIHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2JpbmQob3B0aW9uczogSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmluZE9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5pc0NvbnRhaW5lckJ1aWxkKSB7XG4gICAgICB0aGlzLmF1dG9HZW5lcmF0ZWRJbnN0YW5jZVByb2ZpbGVSb2xlPy5hZGRNYW5hZ2VkUG9saWN5KFxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0VDMkluc3RhbmNlUHJvZmlsZUZvckltYWdlQnVpbGRlckVDUkNvbnRhaW5lckJ1aWxkcycpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -303,7 +303,13 @@ export interface LifecyclePolicyProps {
303
303
  declare abstract class LifecyclePolicyBase extends cdk.Resource implements ILifecyclePolicy {
304
304
  abstract readonly lifecyclePolicyArn: string;
305
305
  abstract readonly lifecyclePolicyName: string;
306
+ /**
307
+ * [disable-awslint:no-grants]
308
+ */
306
309
  grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
310
+ /**
311
+ * [disable-awslint:no-grants]
312
+ */
307
313
  grantRead(grantee: iam.IGrantable): iam.Grant;
308
314
  }
309
315
  /**