aws-cdk-neuronx-patterns 0.0.7 → 0.0.9

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/.jsii CHANGED
@@ -5278,6 +5278,24 @@
5278
5278
  }
5279
5279
  },
5280
5280
  "static": true
5281
+ },
5282
+ {
5283
+ "docs": {
5284
+ "stability": "stable"
5285
+ },
5286
+ "locationInModule": {
5287
+ "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5288
+ "line": 129
5289
+ },
5290
+ "name": "bind",
5291
+ "parameters": [
5292
+ {
5293
+ "name": "model",
5294
+ "type": {
5295
+ "fqn": "@aws-cdk/aws-sagemaker-alpha.IModel"
5296
+ }
5297
+ }
5298
+ ]
5281
5299
  }
5282
5300
  ],
5283
5301
  "name": "TransformersNeuronxSageMakerInferenceModelData",
@@ -5289,7 +5307,7 @@
5289
5307
  "immutable": true,
5290
5308
  "locationInModule": {
5291
5309
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5292
- "line": 86
5310
+ "line": 87
5293
5311
  },
5294
5312
  "name": "bucket",
5295
5313
  "type": {
@@ -5303,7 +5321,7 @@
5303
5321
  "immutable": true,
5304
5322
  "locationInModule": {
5305
5323
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5306
- "line": 88
5324
+ "line": 89
5307
5325
  },
5308
5326
  "name": "code",
5309
5327
  "type": {
@@ -5317,7 +5335,7 @@
5317
5335
  "immutable": true,
5318
5336
  "locationInModule": {
5319
5337
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5320
- "line": 87
5338
+ "line": 88
5321
5339
  },
5322
5340
  "name": "compiledArtifactS3Prefix",
5323
5341
  "type": {
@@ -5331,7 +5349,7 @@
5331
5349
  "immutable": true,
5332
5350
  "locationInModule": {
5333
5351
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5334
- "line": 91
5352
+ "line": 92
5335
5353
  },
5336
5354
  "name": "nPositions",
5337
5355
  "type": {
@@ -5345,7 +5363,7 @@
5345
5363
  "immutable": true,
5346
5364
  "locationInModule": {
5347
5365
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5348
- "line": 92
5366
+ "line": 93
5349
5367
  },
5350
5368
  "name": "optLevel",
5351
5369
  "type": {
@@ -5359,7 +5377,7 @@
5359
5377
  "immutable": true,
5360
5378
  "locationInModule": {
5361
5379
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5362
- "line": 95
5380
+ "line": 96
5363
5381
  },
5364
5382
  "name": "parameters",
5365
5383
  "type": {
@@ -5373,7 +5391,7 @@
5373
5391
  "immutable": true,
5374
5392
  "locationInModule": {
5375
5393
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5376
- "line": 89
5394
+ "line": 90
5377
5395
  },
5378
5396
  "name": "tpDegree",
5379
5397
  "type": {
@@ -5387,7 +5405,7 @@
5387
5405
  "immutable": true,
5388
5406
  "locationInModule": {
5389
5407
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5390
- "line": 94
5408
+ "line": 95
5391
5409
  },
5392
5410
  "name": "compiledArtifactPath",
5393
5411
  "optional": true,
@@ -5402,7 +5420,7 @@
5402
5420
  "immutable": true,
5403
5421
  "locationInModule": {
5404
5422
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5405
- "line": 93
5423
+ "line": 94
5406
5424
  },
5407
5425
  "name": "modelIdOrPath",
5408
5426
  "optional": true,
@@ -5417,7 +5435,7 @@
5417
5435
  "immutable": true,
5418
5436
  "locationInModule": {
5419
5437
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5420
- "line": 90
5438
+ "line": 91
5421
5439
  },
5422
5440
  "name": "quantDtype",
5423
5441
  "optional": true,
@@ -5441,7 +5459,7 @@
5441
5459
  },
5442
5460
  "locationInModule": {
5443
5461
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5444
- "line": 179
5462
+ "line": 193
5445
5463
  },
5446
5464
  "parameters": [
5447
5465
  {
@@ -5467,7 +5485,7 @@
5467
5485
  "kind": "class",
5468
5486
  "locationInModule": {
5469
5487
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5470
- "line": 167
5488
+ "line": 181
5471
5489
  },
5472
5490
  "methods": [
5473
5491
  {
@@ -5476,7 +5494,7 @@
5476
5494
  },
5477
5495
  "locationInModule": {
5478
5496
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5479
- "line": 292
5497
+ "line": 301
5480
5498
  },
5481
5499
  "name": "grantInvoke",
5482
5500
  "parameters": [
@@ -5507,7 +5525,7 @@
5507
5525
  "immutable": true,
5508
5526
  "locationInModule": {
5509
5527
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5510
- "line": 172
5528
+ "line": 186
5511
5529
  },
5512
5530
  "name": "endpointArn",
5513
5531
  "type": {
@@ -5525,7 +5543,7 @@
5525
5543
  "immutable": true,
5526
5544
  "locationInModule": {
5527
5545
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5528
- "line": 177
5546
+ "line": 191
5529
5547
  },
5530
5548
  "name": "endpointName",
5531
5549
  "type": {
@@ -5545,7 +5563,7 @@
5545
5563
  "kind": "interface",
5546
5564
  "locationInModule": {
5547
5565
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5548
- "line": 126
5566
+ "line": 140
5549
5567
  },
5550
5568
  "name": "TransformersNeuronxSageMakerRealtimeInferenceEndpointProps",
5551
5569
  "properties": [
@@ -5559,7 +5577,7 @@
5559
5577
  "immutable": true,
5560
5578
  "locationInModule": {
5561
5579
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5562
- "line": 131
5580
+ "line": 145
5563
5581
  },
5564
5582
  "name": "modelData",
5565
5583
  "type": {
@@ -5577,7 +5595,7 @@
5577
5595
  "immutable": true,
5578
5596
  "locationInModule": {
5579
5597
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5580
- "line": 164
5598
+ "line": 178
5581
5599
  },
5582
5600
  "name": "containerStartupHealthCheckTimeout",
5583
5601
  "optional": true,
@@ -5595,7 +5613,7 @@
5595
5613
  "immutable": true,
5596
5614
  "locationInModule": {
5597
5615
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5598
- "line": 140
5616
+ "line": 154
5599
5617
  },
5600
5618
  "name": "environment",
5601
5619
  "optional": true,
@@ -5617,7 +5635,7 @@
5617
5635
  "immutable": true,
5618
5636
  "locationInModule": {
5619
5637
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5620
- "line": 135
5638
+ "line": 149
5621
5639
  },
5622
5640
  "name": "image",
5623
5641
  "optional": true,
@@ -5635,7 +5653,7 @@
5635
5653
  "immutable": true,
5636
5654
  "locationInModule": {
5637
5655
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5638
- "line": 145
5656
+ "line": 159
5639
5657
  },
5640
5658
  "name": "instanceType",
5641
5659
  "optional": true,
@@ -5653,7 +5671,7 @@
5653
5671
  "immutable": true,
5654
5672
  "locationInModule": {
5655
5673
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5656
- "line": 158
5674
+ "line": 172
5657
5675
  },
5658
5676
  "name": "modelDataDownloadTimeout",
5659
5677
  "optional": true,
@@ -5664,7 +5682,7 @@
5664
5682
  {
5665
5683
  "abstract": true,
5666
5684
  "docs": {
5667
- "default": "- 2.5 GB per billion parameter (Max 512 GB)",
5685
+ "default": "- 3 GB per billion parameter (Max 512 GB)",
5668
5686
  "remarks": "Currently only Amazon EBS gp2 storage volumes are supported.",
5669
5687
  "see": "https://aws.amazon.com/jp/releasenotes/host-instance-storage-volumes-table",
5670
5688
  "stability": "stable",
@@ -5673,7 +5691,7 @@
5673
5691
  "immutable": true,
5674
5692
  "locationInModule": {
5675
5693
  "filename": "src/transformers-neuronx-sagemaker-realtime-inference.ts",
5676
- "line": 152
5694
+ "line": 166
5677
5695
  },
5678
5696
  "name": "volumeSize",
5679
5697
  "optional": true,
@@ -5685,6 +5703,6 @@
5685
5703
  "symbolId": "src/transformers-neuronx-sagemaker-realtime-inference:TransformersNeuronxSageMakerRealtimeInferenceEndpointProps"
5686
5704
  }
5687
5705
  },
5688
- "version": "0.0.7",
5689
- "fingerprint": "5Dg35fklxKT2NiKuvLDuuS7oT/2SsEw/JgtvjiF2sq0="
5706
+ "version": "0.0.9",
5707
+ "fingerprint": "QUjtmjfjdiaCvUIYPw/IE91r6i2cQCPJkr3Uy5Pxx+M="
5690
5708
  }
package/API.md CHANGED
@@ -894,7 +894,7 @@ public readonly volumeSize: Size;
894
894
  ```
895
895
 
896
896
  - *Type:* aws-cdk-lib.Size
897
- - *Default:* 2.5 GB per billion parameter (Max 512 GB)
897
+ - *Default:* 3 GB per billion parameter (Max 512 GB)
898
898
 
899
899
  The size, of the ML storage volume attached to individual inference instance associated with the production variant.
900
900
 
@@ -1371,6 +1371,25 @@ public readonly neuronxCores: number;
1371
1371
 
1372
1372
  ### TransformersNeuronxSageMakerInferenceModelData <a name="TransformersNeuronxSageMakerInferenceModelData" id="aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData"></a>
1373
1373
 
1374
+ #### Methods <a name="Methods" id="Methods"></a>
1375
+
1376
+ | **Name** | **Description** |
1377
+ | --- | --- |
1378
+ | <code><a href="#aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData.bind">bind</a></code> | *No description.* |
1379
+
1380
+ ---
1381
+
1382
+ ##### `bind` <a name="bind" id="aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData.bind"></a>
1383
+
1384
+ ```typescript
1385
+ public bind(model: IModel): void
1386
+ ```
1387
+
1388
+ ###### `model`<sup>Required</sup> <a name="model" id="aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData.bind.parameter.model"></a>
1389
+
1390
+ - *Type:* @aws-cdk/aws-sagemaker-alpha.IModel
1391
+
1392
+ ---
1374
1393
 
1375
1394
  #### Static Functions <a name="Static Functions" id="Static Functions"></a>
1376
1395
 
@@ -51,7 +51,9 @@ export declare class TransformersNeuronxSageMakerInferenceModelData {
51
51
  readonly modelIdOrPath?: string;
52
52
  readonly compiledArtifactPath?: string;
53
53
  readonly parameters: Parameters;
54
+ private readonly dependables;
54
55
  private constructor();
56
+ bind(model: sagemaker.IModel): void;
55
57
  }
56
58
  export interface TransformersNeuronxSageMakerRealtimeInferenceEndpointProps {
57
59
  /**
@@ -79,7 +81,7 @@ export interface TransformersNeuronxSageMakerRealtimeInferenceEndpointProps {
79
81
  * The size, of the ML storage volume attached to individual inference instance associated with the production variant.
80
82
  * Currently only Amazon EBS gp2 storage volumes are supported.
81
83
  * @see https://aws.amazon.com/jp/releasenotes/host-instance-storage-volumes-table
82
- * @default - 2.5 GB per billion parameter (Max 512 GB)
84
+ * @default - 3 GB per billion parameter (Max 512 GB)
83
85
  */
84
86
  readonly volumeSize?: Size;
85
87
  /**
package/lib/model.js CHANGED
@@ -56,7 +56,7 @@ class Parameters {
56
56
  }
57
57
  exports.Parameters = Parameters;
58
58
  _a = JSII_RTTI_SYMBOL_1;
59
- Parameters[_a] = { fqn: "aws-cdk-neuronx-patterns.Parameters", version: "0.0.7" };
59
+ Parameters[_a] = { fqn: "aws-cdk-neuronx-patterns.Parameters", version: "0.0.9" };
60
60
  /**
61
61
  * Compile target model.
62
62
  */
@@ -97,5 +97,5 @@ class Model {
97
97
  }
98
98
  exports.Model = Model;
99
99
  _b = JSII_RTTI_SYMBOL_1;
100
- Model[_b] = { fqn: "aws-cdk-neuronx-patterns.Model", version: "0.0.7" };
100
+ Model[_b] = { fqn: "aws-cdk-neuronx-patterns.Model", version: "0.0.9" };
101
101
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQTs7R0FFRztBQUNILElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHVCQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsVUFBVSwwQkFBVixVQUFVLFFBS3JCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCw2RUFBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHVEQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gscUZBQStCLENBQUE7QUFDakMsQ0FBQyxFQWJXLFFBQVEsd0JBQVIsUUFBUSxRQWFuQjtBQXdCRDs7R0FFRztBQUNILE1BQWEsVUFBVTtJQUNyQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFrQjtRQUMvQixPQUFPLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFxQyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFDeEQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOztBQWhCSCxnQ0FpQkM7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFlLEVBQUUsT0FBc0I7UUFDNUQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQ2QsT0FBTyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUN4QixHQUFHLE9BQU87WUFDVixVQUFVO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBZSxFQUFFLE1BQWMsRUFBRSxPQUFxQjtRQUN0RSxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsWUFDVyxPQUFlLEVBQ2YsT0FBcUIsRUFDckIsTUFBZ0IsRUFDaEIsTUFBZTtRQUhmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUN2QixDQUFDOztBQXBDTixzQkFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuXG4vKipcbiAqIFF1YW50IGRhdGEgdHlwZS5cbiAqL1xuZXhwb3J0IGVudW0gUXVhbnREdHlwZSB7XG4gIC8qKlxuICAgKiBpbnQ4IHdlaWdodCBzdG9yYWdlLlxuICAgKi9cbiAgUzggPSBcInM4XCIsXG59XG5cbi8qKlxuICogT3B0aW1pemF0aW9uIGxldmVsLlxuICovXG5leHBvcnQgZW51bSBPcHRMZXZlbCB7XG4gIC8qKlxuICAgKiBlbmFibGVzIHRoZSBjb3JlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaW4gdGhlIGNvbXBpbGVyLCB3aGlsZSBhbHNvIG1pbmltaXppbmcgY29tcGlsZSB0aW1lLlxuICAgKi9cbiAgTUlOSU1JWklOR19DT01QSUxFX1RJTUUgPSAxLFxuICAvKipcbiAgICogcHJvdmlkZXMgdGhlIGJlc3QgYmFsYW5jZSBiZXR3ZWVuIG1vZGVsIHBlcmZvcm1hbmNlIGFuZCBjb21waWxlIHRpbWUuXG4gICAqL1xuICBCRVNUX0JBTEFOQ0UgPSAyLFxuICAvKipcbiAgICogbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBtb2RlbCBleGVjdXRpb24gcGVyZm9ybWFuY2UgYnV0IG1heSBpbmN1ciBsb25nZXIgY29tcGlsZSB0aW1lcyBhbmQgaGlnaGVyIGhvc3QgbWVtb3J5IHVzYWdlIGR1cmluZyBtb2RlbCBjb21waWxhdGlvbi5cbiAgICovXG4gIE1PREVMX0VYRUNVVElPTl9QRVJGT1JNQU5DRSA9IDMsXG59XG5cbi8qKlxuICogQ29tcGlsZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gY2FsYyBmcm9tIHBhcmFtZXRlcnMgYW5kIHF1YW50RHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHRwRGVncmVlPzogbnVtYmVyO1xuICAvKipcbiAgICogQGRlZmF1bHQgLSBObyBxdWFudFxuICAgKi9cbiAgcmVhZG9ubHkgcXVhbnREdHlwZT86IFF1YW50RHR5cGU7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCA0MDk2XG4gICAqL1xuICByZWFkb25seSBuUG9zaXRpb25zPzogbnVtYmVyO1xuICAvKipcbiAgICogQGRlZmF1bHQgT3B0TGV2ZWwuQkVTVF9CQUxBTkNFXG4gICAqL1xuICByZWFkb25seSBvcHRMZXZlbD86IE9wdExldmVsO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGFtb3VudCBvZiBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBQYXJhbWV0ZXJzIHJlcHJlc2VudGluZyBhbiBhbW91bnQgYmlsaW9uLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVycyBudW1iZXIgb2YgcGFyYW1ldGVycyBiaWxpb25YXG4gICAqIEByZXR1cm5zIHBhcmFtZXRlcnNcbiAgICovXG4gIHN0YXRpYyBiaWxsaW9uKHBhcmFtZXRlcnM6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTtcbiAgfVxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYmlsbGlvbjogbnVtYmVyKSB7fVxuICAvKipcbiAgICogUmV0dXJuIHRoaXMgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYXMgYmlsaW9uLlxuICAgKiBAcmV0dXJucyBUaGlzIG51bWJlciBvZiBwYXJhbWV0ZXJzIGFzIGJpbGlvbi5cbiAgICovXG4gIHRvQmlsaW9uKCkge1xuICAgIHJldHVybiB0aGlzLmJpbGxpb247XG4gIH1cbn1cblxuLyoqXG4gKiBDb21waWxlIHRhcmdldCBtb2RlbCBiYXNpYyBpbmZyb21hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM6IFBhcmFtZXRlcnM7XG59XG4vKipcbiAqIENvbXBpbGUgdGFyZ2V0IG1vZGVsLlxuICovXG5leHBvcnQgY2xhc3MgTW9kZWwge1xuICAvKipcbiAgICogbW9kZWwgaW5mb3JtYXRpb25zIGF0IEh1Z2dpbmdGYWNlXG4gICAqIEBwYXJhbSBtb2RlbElkIG1vZGVsIGlkIG9uIHRoZSBIdWdnaW5nRmFjZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBtb2RlbCBiYXNpYyBpbmZyb21hdGlvblxuICAgKiBAcmV0dXJucyBtb2RlbCBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGZyb21IdWdnaW5nRmFjZShtb2RlbElkOiBzdHJpbmcsIG9wdGlvbnM/OiBNb2RlbE9wdGlvbnMpIHtcbiAgICBjb25zdCBpbmZlclBhcmFtZXRlcnMgPSBtb2RlbElkLm1hdGNoKC8oXFxkKyliLyk7XG4gICAgaWYgKCFvcHRpb25zPy5wYXJhbWV0ZXJzICYmICFpbmZlclBhcmFtZXRlcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgY2Fubm90IGJlIGluZmVycmVkIGZyb20gdGhlIG1vZGVsIElELiBTZXQgb3B0aW9uYWwgcGFyYW1ldGVycy5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPVxuICAgICAgb3B0aW9ucz8ucGFyYW1ldGVycyA/PyBQYXJhbWV0ZXJzLmJpbGxpb24ocGFyc2VJbnQoaW5mZXJQYXJhbWV0ZXJzIVsxXSkpO1xuICAgIHJldHVybiBuZXcgTW9kZWwobW9kZWxJZCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIG1vZGVsIGluZm9ybWF0aW9ucyBhdCBTMyBCdWNrZXRcbiAgICogQHBhcmFtIGJ1Y2tldCBNb2RlbCBzdG9yZWQgUzMgQnVja2V0XG4gICAqIEBwYXJhbSBwcmVmaXggTW9kZWwgc3RvcmVkIG9iamVjdHMgcHJlZml4XG4gICAqIEBwYXJhbSBvcHRpb25zIG1vZGVsIGJhc2ljIGluZnJvbWF0aW9uXG4gICAqIEByZXR1cm5zIG1vZGVsIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZnJvbUJ1Y2tldChidWNrZXQ6IElCdWNrZXQsIHByZWZpeDogc3RyaW5nLCBvcHRpb25zOiBNb2RlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsKGJ1Y2tldC5zM1VybEZvck9iamVjdChwcmVmaXgpLCBvcHRpb25zLCBidWNrZXQsIHByZWZpeCk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBtb2RlbElkOiBzdHJpbmcsXG4gICAgcmVhZG9ubHkgb3B0aW9uczogTW9kZWxPcHRpb25zLFxuICAgIHJlYWRvbmx5IGJ1Y2tldD86IElCdWNrZXQsXG4gICAgcmVhZG9ubHkgcHJlZml4Pzogc3RyaW5nLFxuICApIHt9XG59XG4iXX0=
@@ -170,5 +170,5 @@ class NeuronxCompile extends constructs_1.Construct {
170
170
  }
171
171
  exports.NeuronxCompile = NeuronxCompile;
172
172
  _a = JSII_RTTI_SYMBOL_1;
173
- NeuronxCompile[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxCompile", version: "0.0.7" };
173
+ NeuronxCompile[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxCompile", version: "0.0.9" };
174
174
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldXJvbngtY29tcGlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1Qiw2Q0FBbUU7QUFDbkUsK0NBQStDO0FBQy9DLDJDQUEyQztBQUMzQyxpREFBcUQ7QUFDckQsaURBQTRDO0FBQzVDLHVEQUEwRTtBQUUxRSxtRUFBd0Q7QUFDeEQsMkNBQXVDO0FBQ3ZDLG1DQU1pQjtBQUNqQixtRUFBOEQ7QUFDOUQsNkZBQXVGO0FBQ3ZGLHlDQUE4QztBQWdFOUM7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQXFCM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDO1FBQzNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLFFBQVEsSUFBSSxnQkFBUSxDQUFDLFlBQVksQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUTtZQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsUUFBUTtnQkFDOUIsSUFBQSxtQkFBWSxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtvQkFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVB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QUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7SUFDSixDQUFDOztBQTdNSCx3Q0E4TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgU2l6ZSwgVGFncyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgYmF0Y2ggZnJvbSBcImF3cy1jZGstbGliL2F3cy1iYXRjaFwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb250YWluZXJJbWFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNzXCI7XG5pbXBvcnQgeyBHcmFudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb2RlLCBSdW50aW1lLCBTaW5nbGV0b25GdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIENvbXBpbGVPcHRpb25zLFxuICBNb2RlbCxcbiAgT3B0TGV2ZWwsXG4gIFBhcmFtZXRlcnMsXG4gIFF1YW50RHR5cGUsXG59IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQgeyBOZXVyb254SW5zdGFuY2VUeXBlIH0gZnJvbSBcIi4vbmV1cm9ueC1pbnN0YW5jZS10eXBlXCI7XG5pbXBvcnQgeyBOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2UgfSBmcm9tIFwiLi9wcml2YXRlL25ldXJvbi1vcHRpbWl6ZWQtbWFjaGluZS1pbWFnZVwiO1xuaW1wb3J0IHsgY2FsY1RwRGVncmVlIH0gZnJvbSBcIi4vcHJpdmF0ZS91dGlsXCI7XG5cbi8qKlxuICogQ29tcGlsZSBydW50aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVSdW50aW1lIHtcbiAgLyoqXG4gICAqIEFuIGltYWdlIG9mIHRoZSBjb250YWluZXIgd2hlcmUgdGhlIGNvbXBpbGUgam9iIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2U6IENvbnRhaW5lckltYWdlO1xuICAvKipcbiAgICogTmV1cm9ueCB2ZXJzaW9uIGluY2x1ZGVkIGluIGNvbnRhaW5lciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IG5ldXJvbnhWZXJzaW9uOiBzdHJpbmc7XG59XG4vKipcbiAqIFByb3BzIG9mIE5ldXJvbnhDb21waWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldXJvbnhDb21waWxlUHJvcHMge1xuICAvKipcbiAgICogVlBDIGluIHdoaWNoIHRoaXMgd2lsbCBsYXVuY2ggY29tcGlsZSB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICAvKipcbiAgICogVGhlIGJ1Y2tldCB0byB1cGxvYWQgY29tcGlsZWQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0O1xuICAvKipcbiAgICogVGhlIG1vZGVsIHRvIGJlIGNvbXBpbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWw6IE1vZGVsO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgb2YgY29tcGlsZSB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU/OiBOZXVyb254SW5zdGFuY2VUeXBlO1xuICAvKipcbiAgICogVGhlIHJvb3Qgdm9sdW1lIG9mIHdvcmtlciBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQgLSBOIGJpbGlvbiBwYXJhbWV0ZXJzICogNUdpQiBFQlNcbiAgICovXG4gIHJlYWRvbmx5IHZvbHVtZVNpemU/OiBTaXplO1xuICAvKipcbiAgICogQ29tcGlsZSBydW50aW1lLlxuICAgKiBAZGVmYXVsdCB7IG5ldXJvbnhTZGtWZXJzaW9uOiBcIjIuMTkuMFwiLCBpbWFnZTogQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwicHVibGljLmVjci5hd3MvbmV1cm9uL3B5dG9yY2gtdHJhaW5pbmctbmV1cm9ueDoyLjEuMi1uZXVyb254LXB5MzEwLXNkazIuMTkuMC11YnVudHUyMC4wNFwiKX1cbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBDb21waWxlUnVudGltZTtcbiAgLyoqXG4gICAqIE5ldXJvbnggY29tcGlsZSBvcHRpb25zLlxuICAgKiBAZGVmYXVsdCAtIEVhY2ggcHJvcGVydGllcyBhcmUgc2V0IGRlZmF1bHQuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlT3B0aW9ucz86IENvbXBpbGVPcHRpb25zO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gdXNlIHNwb3QgaW5zdGFuY2VzLiBTcG90IGluc3RhbmNlcyBhcmUgbGVzcyBleHBlbnNpdmUgRUMyIGluc3RhbmNlcyB0aGF0IGNhbiBiZSByZWNsYWltZWQgYnkgRUMyIGF0IGFueSB0aW1lOyB5b3VyIGpvYiB3aWxsIGJlIGdpdmVuIHR3byBtaW51dGVzIG9mIG5vdGljZSBiZWZvcmUgcmVjbGFtYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzcG90PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBWUEMgU3VibmV0cyB0aGlzIENvbXB1dGUgRW52aXJvbm1lbnQgd2lsbCBsYXVuY2ggaW5zdGFuY2VzIGluLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5ldyBzdWJuZXRzIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG59XG5cbi8qKlxuICogTmV1cm9ueCBjb21waWxlIGNvbnN0cnVjdC4gQ29tcGlsZSB0aGUgbW9kZWwgdG8gd29yayB3aXRoIEluZmVyZW50aWEyIGFuZCBUcmFpbml1bTEgYW5kIHVwbG9hZCBpdCB0byBhbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXVyb254Q29tcGlsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGNvbXBpbGVkQXJ0aWZhY3RTM0J1Y2tldDogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIFMzIFVSTCB0aGF0IGNvbXBpbGVkIGFydGlmYWN0IHVwbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZWRBcnRpZmFjdFMzVXJsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTMyBQcmVmaXggdGhhdCBjb21waWxlZCBhcnRpZmFjdCB1cGxvYWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeDogc3RyaW5nO1xuICByZWFkb25seSB0cERlZ3JlZTogbnVtYmVyO1xuICByZWFkb25seSBxdWFudER0eXBlPzogUXVhbnREdHlwZTtcbiAgcmVhZG9ubHkgblBvc2l0aW9uczogbnVtYmVyO1xuICByZWFkb25seSBvcHRMZXZlbDogT3B0TGV2ZWw7XG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM6IFBhcmFtZXRlcnM7XG4gIC8qKlxuICAgKiBTMyBQcmVmaXggdGhhdCBjb21waWxlZCBhcnRpZmFjdCB1cGxvYWRlZC5cbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBub3QgZGVwZW5kcyBvbiBjb21waWxlIGpvYiBmaW5pc2guXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgX2NvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV1cm9ueENvbXBpbGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBwcm9wcy5tb2RlbC5vcHRpb25zLnBhcmFtZXRlcnM7XG4gICAgdGhpcy5jb21waWxlZEFydGlmYWN0UzNCdWNrZXQgPSBwcm9wcy5idWNrZXQ7XG4gICAgdGhpcy5uUG9zaXRpb25zID0gcHJvcHMuY29tcGlsZU9wdGlvbnM/Lm5Qb3NpdGlvbnMgPz8gNDA5NjtcbiAgICB0aGlzLnF1YW50RHR5cGUgPSBwcm9wcy5jb21waWxlT3B0aW9ucz8ucXVhbnREdHlwZTtcbiAgICB0aGlzLm9wdExldmVsID0gcHJvcHMuY29tcGlsZU9wdGlvbnM/Lm9wdExldmVsID8/IE9wdExldmVsLkJFU1RfQkFMQU5DRTtcbiAgICB0aGlzLnRwRGVncmVlID1cbiAgICAgIHByb3BzLmNvbXBpbGVPcHRpb25zPy50cERlZ3JlZSA/P1xuICAgICAgY2FsY1RwRGVncmVlKHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycywge1xuICAgICAgICBuUG9zaXRpb25zOiB0aGlzLm5Qb3NpdGlvbnMsXG4gICAgICAgIHF1YW50RHR5cGU6IHRoaXMucXVhbnREdHlwZSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9XG4gICAgICBwcm9wcy5pbnN0YW5jZVR5cGUgPz8gdGhpcy5zZWxlY3RJbnN0YW5jZVR5cGVCeVRwRGVncmVlKHRoaXMudHBEZWdyZWUpO1xuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbmV3IGVjMi5MYXVuY2hUZW1wbGF0ZSh0aGlzLCBcIkxhdW5jaFRlbXBsYXRlXCIsIHtcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICB2b2x1bWU6IGVjMi5CbG9ja0RldmljZVZvbHVtZS5lYnMoXG4gICAgICAgICAgICBwcm9wcy52b2x1bWVTaXplPy50b0dpYmlieXRlcygpID8/XG4gICAgICAgICAgICAgIHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycy50b0JpbGlvbigpICogNSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlRW52aXJvbm1lbnQgPSBuZXcgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIkNvbXB1dGVFbnZpcm9ubWVudFwiLFxuICAgICAge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICAgICAgaW5zdGFuY2VUeXBlczogW2luc3RhbmNlVHlwZS5pbnN0YW5jZVR5cGVdLFxuICAgICAgICB1c2VPcHRpbWFsSW5zdGFuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2UodGhpcywgXCJNYWNoaW5JbWFnZVwiKSxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGltYWdlVHlwZTogXCJFQ1NfQUwyMDIzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGUsXG4gICAgICAgIHNwb3Q6IHByb3BzLnNwb3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgKFxuICAgICAgY29tcHV0ZUVudmlyb25tZW50Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGJhdGNoLkNmbkNvbXB1dGVFbnZpcm9ubWVudFxuICAgICkuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiQ29tcHV0ZVJlc291cmNlcy5MYXVuY2hUZW1wbGF0ZS5WZXJzaW9uXCIsXG4gICAgICBsYXVuY2hUZW1wbGF0ZS5sYXRlc3RWZXJzaW9uTnVtYmVyLFxuICAgICk7XG5cbiAgICBUYWdzLm9mKGNvbXB1dGVFbnZpcm9ubWVudCkuYWRkKFwiTmFtZVwiLCBcIm5ldXJvbngtY29tcGlsZS13b3JrZXJcIik7XG4gICAgY29uc3Qgam9iUXVldWUgPSBuZXcgYmF0Y2guSm9iUXVldWUodGhpcywgXCJKb2JRdWV1ZVwiLCB7XG4gICAgICBjb21wdXRlRW52aXJvbm1lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wdXRlRW52aXJvbm1lbnQsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgam9iU3RhdGVUaW1lTGltaXRBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZTogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zU3RhdGUuUlVOTkFCTEUsXG4gICAgICAgICAgcmVhc29uOiBiYXRjaC5Kb2JTdGF0ZVRpbWVMaW1pdEFjdGlvbnNSZWFzb24uSk9CX1JFU09VUkNFX1JFUVVJUkVNRU5ULFxuICAgICAgICAgIG1heFRpbWU6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgICAgIGFjdGlvbjogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zQWN0aW9uLkNBTkNFTCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBydW50aW1lOiBDb21waWxlUnVudGltZSA9IHByb3BzLnJ1bnRpbWUgPz8ge1xuICAgICAgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgXCIuLi9zY3JpcHRzL2NvbXBpbGVcIikpLFxuICAgICAgbmV1cm9ueFZlcnNpb246IFwiMi4xOS4xXCIsXG4gICAgfTtcbiAgICBsZXQgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXggPSBgJHtwcm9wcy5tb2RlbC5tb2RlbElkfS9uZXVyb254LSR7cnVudGltZS5uZXVyb254VmVyc2lvbn0vdHAke3RoaXMudHBEZWdyZWV9LW5wJHt0aGlzLm5Qb3NpdGlvbnN9LW9wdCR7dGhpcy5vcHRMZXZlbH1gO1xuICAgIGlmICh0aGlzLnF1YW50RHR5cGUhISkge1xuICAgICAgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXggPSBgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0tcXVhbnQke3RoaXMucXVhbnREdHlwZX1gO1xuICAgIH1cbiAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICBjb21wdXRlRW52aXJvbm1lbnQuaW5zdGFuY2VSb2xlISxcbiAgICAgIGAke2NvbXBpbGVkQXJ0aWZhY3RQYXRoUHJlZml4fS8qYCxcbiAgICApO1xuICAgIGNvbnN0IGxpbnV4UGFyYW1ldGVycyA9IG5ldyBiYXRjaC5MaW51eFBhcmFtZXRlcnModGhpcywgXCJMaW51eFBhcmFtZXRlcnNcIik7XG4gICAgbGludXhQYXJhbWV0ZXJzLmFkZERldmljZXMoXG4gICAgICAuLi5BcnJheS5mcm9tKHtcbiAgICAgICAgbGVuZ3RoOiBpbnN0YW5jZVR5cGUuYWNjZWxlcmF0b3JDaGlwcy5jaGlwcyxcbiAgICAgIH0pLm1hcCgoXywgaW5kZXgpID0+ICh7XG4gICAgICAgIGhvc3RQYXRoOiBgL2Rldi9uZXVyb24ke2luZGV4fWAsXG4gICAgICAgIGNvbnRhaW5lclBhdGg6IGAvZGV2L25ldXJvbiR7aW5kZXh9YCxcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICBiYXRjaC5EZXZpY2VQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgYmF0Y2guRGV2aWNlUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgXSxcbiAgICAgIH0pKSxcbiAgICApO1xuICAgIGNvbnN0IGpvYkRlZmluaXRpb24gPSBuZXcgYmF0Y2guRWNzSm9iRGVmaW5pdGlvbih0aGlzLCBcIkpvYkRlZmluaXRpb25cIiwge1xuICAgICAgY29udGFpbmVyOiBuZXcgYmF0Y2guRWNzRWMyQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb250YWluZXJEZWZpbml0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBpbWFnZTogcnVudGltZS5pbWFnZSxcbiAgICAgICAgICAvLyBUaGUgZmxsb3dpbmcgY29tbWFuZCB3YXMgZXhlY3V0ZWQgb24gaW5mMi44eGxhcmdlXG4gICAgICAgICAgLy8gc2gtNS4yJCBmcmVlIC1iXG4gICAgICAgICAgLy8gXHRcdFx0dG90YWxcdFx0XHRcdFx0dXNlZFx0XHRcdGZyZWVcdFx0XHRcdFx0c2hhcmVkXHRidWZmL2NhY2hlXHRhdmFpbGFibGVcbiAgICAgICAgICAvLyBNZW06XHQxMzIyNjU3NjY5MTJcdDg2NjMyMDM4NFx0MTMwMzQxNzg1NjAwXHQ2Njc2NDhcdDEwNTc2NjA5MjhcdDEzMDUyOTE0ODkyOFxuICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iYXRjaC9sYXRlc3QvdXNlcmd1aWRlL21lbW9yeS1tYW5hZ2VtZW50Lmh0bWxcbiAgICAgICAgICBtZW1vcnk6IFNpemUubWViaWJ5dGVzKFxuICAgICAgICAgICAgTWF0aC5jZWlsKGluc3RhbmNlVHlwZS5tZW1vcnkudG9NZWJpYnl0ZXMoKSAqIDAuOTUpLFxuICAgICAgICAgICksXG4gICAgICAgICAgY3B1OiBpbnN0YW5jZVR5cGUudkNwdSxcbiAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgTU9ERUxfSUQ6IHByb3BzLm1vZGVsLm1vZGVsSWQsXG4gICAgICAgICAgICBUUF9ERUdSRUU6IHRoaXMudHBEZWdyZWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE5fUE9TSVRJT05TOiB0aGlzLm5Qb3NpdGlvbnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE9QVF9MRVZFTDogdGhpcy5vcHRMZXZlbC50b1N0cmluZygpLFxuICAgICAgICAgICAgUVVBTlRfRFRZUEU6IHRoaXMucXVhbnREdHlwZT8udG9TdHJpbmcoKSA/PyBcIlwiLFxuICAgICAgICAgICAgQVJUSUZBQ1RfUzNfVVJMOiBwcm9wcy5idWNrZXQuczNVcmxGb3JPYmplY3QoXG4gICAgICAgICAgICAgIGNvbXBpbGVkQXJ0aWZhY3RQYXRoUHJlZml4LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbnV4UGFyYW1ldGVycyxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICBjb25zdCBqb2JTdWJtaXRGdW5jdGlvbiA9IG5ldyBTaW5nbGV0b25GdW5jdGlvbih0aGlzLCBcIkpvYlN1Ym1pdEZ1bmN0aW9uXCIsIHtcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcInByaXZhdGUvYXdhaXQtY29tcGlsZS1qb2JcIikpLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5vbkV2ZW50XCIsXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgdXVpZDogXCIxMzYxZjQ2OS01YzkyLTRjNDYtOWUxMS01ZDFkYmY5MjViYWNcIixcbiAgICB9KTtcbiAgICBqb2JEZWZpbml0aW9uLmdyYW50U3VibWl0Sm9iKGpvYlN1Ym1pdEZ1bmN0aW9uLCBqb2JRdWV1ZSk7XG4gICAgY29uc3Qgam9iTW9uaXRvcmluZ0Z1bmN0aW9uID0gbmV3IFNpbmdsZXRvbkZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiSm9iTW9uaXRvcmluZ0Z1bmN0aW9uXCIsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcInByaXZhdGUvYXdhaXQtY29tcGlsZS1qb2JcIikpLFxuICAgICAgICBoYW5kbGVyOiBcImluZGV4LmlzQ29tcGxldGVcIixcbiAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgICAgICAgdXVpZDogXCJkZjE2ZGJhOC01Zjc3LTQ4MGMtYTZhZC1jZmRmNzRjM2RlNjJcIixcbiAgICAgIH0sXG4gICAgKTtcbiAgICBHcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICByZXNvdXJjZUFybnM6IFtcIipcIl0sXG4gICAgICBncmFudGVlOiBqb2JNb25pdG9yaW5nRnVuY3Rpb24sXG4gICAgICBhY3Rpb25zOiBbXCJiYXRjaDpEZXNjcmliZUpvYnNcIl0sXG4gICAgfSk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIodGhpcywgXCJDb21waWxlSm9iUHJvdmlkZXJcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGpvYlN1Ym1pdEZ1bmN0aW9uLFxuICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGpvYk1vbml0b3JpbmdGdW5jdGlvbixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICB0b3RhbFRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDEpLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBpbGVKb2IgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206Ok5ldXJvbnhDb21waWxlXCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGpvYkRlZmluaXRpb25Bcm46IGpvYkRlZmluaXRpb24uam9iRGVmaW5pdGlvbkFybixcbiAgICAgICAgam9iUXVldWVBcm46IGpvYlF1ZXVlLmpvYlF1ZXVlQXJuLFxuICAgICAgICBhcnRpZmFjdFMzUHJlZml4OiBjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5fY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4ID0gY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXg7XG4gICAgdGhpcy5jb21waWxlZEFydGlmYWN0UzNQcmVmaXggPSBjb21waWxlSm9iLmdldEF0dFN0cmluZyhcIkFydGlmYWN0UzNQcmVmaXhcIik7XG4gICAgdGhpcy5jb21waWxlZEFydGlmYWN0UzNVcmwgPSBwcm9wcy5idWNrZXQuczNVcmxGb3JPYmplY3QoXG4gICAgICB0aGlzLmNvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJbnN0YW5jZVR5cGVCeVRwRGVncmVlKHRwRGVncmVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBpbnN0YW5jZVR5cGVzID0gW1xuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzhYTEFSR0UsXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLklORjJfMjRYTEFSR0UsXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLklORjJfNDhYTEFSR0UsXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IGluc3RhbmNlVHlwZSBvZiBpbnN0YW5jZVR5cGVzKSB7XG4gICAgICBpZiAodHBEZWdyZWUgPD0gaW5zdGFuY2VUeXBlLmFjY2VsZXJhdG9yQ2hpcHMubmV1cm9ueENvcmVzKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZVR5cGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVGhpcyBtb2RlbCBpcyB0b28gbGFyZ2UsIEkgY2FuIG5vdCBzdXBwb3J0IHRoaXMgbW9kZWwgY3VycmVudCB2ZXJzaW9uLlwiLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -14,7 +14,7 @@ class Inferentia2Chips {
14
14
  }
15
15
  exports.Inferentia2Chips = Inferentia2Chips;
16
16
  _a = JSII_RTTI_SYMBOL_1;
17
- Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.7" };
17
+ Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.9" };
18
18
  class TrainiumChips {
19
19
  constructor(chips) {
20
20
  this.chips = chips;
@@ -24,7 +24,7 @@ class TrainiumChips {
24
24
  }
25
25
  exports.TrainiumChips = TrainiumChips;
26
26
  _b = JSII_RTTI_SYMBOL_1;
27
- TrainiumChips[_b] = { fqn: "aws-cdk-neuronx-patterns.TrainiumChips", version: "0.0.7" };
27
+ TrainiumChips[_b] = { fqn: "aws-cdk-neuronx-patterns.TrainiumChips", version: "0.0.9" };
28
28
  class NeuronxInstanceType {
29
29
  constructor(instanceType, vCpu, memory, acceleratorChips) {
30
30
  this.instanceType = instanceType;
@@ -42,7 +42,7 @@ class NeuronxInstanceType {
42
42
  }
43
43
  exports.NeuronxInstanceType = NeuronxInstanceType;
44
44
  _c = JSII_RTTI_SYMBOL_1;
45
- NeuronxInstanceType[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.7" };
45
+ NeuronxInstanceType[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.9" };
46
46
  /**
47
47
  * ml.inf2.xlarge
48
48
  */
@@ -51,7 +51,9 @@ export declare class TransformersNeuronxSageMakerInferenceModelData {
51
51
  readonly modelIdOrPath?: string;
52
52
  readonly compiledArtifactPath?: string;
53
53
  readonly parameters: Parameters;
54
+ private readonly dependables;
54
55
  private constructor();
56
+ bind(model: sagemaker.IModel): void;
55
57
  }
56
58
  export interface TransformersNeuronxSageMakerRealtimeInferenceEndpointProps {
57
59
  /**
@@ -79,7 +81,7 @@ export interface TransformersNeuronxSageMakerRealtimeInferenceEndpointProps {
79
81
  * The size, of the ML storage volume attached to individual inference instance associated with the production variant.
80
82
  * Currently only Amazon EBS gp2 storage volumes are supported.
81
83
  * @see https://aws.amazon.com/jp/releasenotes/host-instance-storage-volumes-table
82
- * @default - 2.5 GB per billion parameter (Max 512 GB)
84
+ * @default - 3 GB per billion parameter (Max 512 GB)
83
85
  */
84
86
  readonly volumeSize?: Size;
85
87
  /**
@@ -39,6 +39,7 @@ class TransformersNeuronxSageMakerInferenceModelData {
39
39
  bucket: compile.compiledArtifactS3Bucket,
40
40
  compiledArtifactS3Prefix: compile._compiledArtifactS3Prefix,
41
41
  code,
42
+ dependables: [compile.node.defaultChild],
42
43
  });
43
44
  }
44
45
  constructor(options) {
@@ -54,11 +55,21 @@ class TransformersNeuronxSageMakerInferenceModelData {
54
55
  this.modelIdOrPath = options.modelIdOrPath;
55
56
  this.compiledArtifactPath = options.compiledArtifactPath;
56
57
  this.parameters = options.parameters;
58
+ this.dependables = options.dependables ?? [];
59
+ }
60
+ bind(model) {
61
+ const deploy = new aws_s3_deployment_1.BucketDeployment(this.bucket, "CodeDeployment", {
62
+ destinationBucket: this.bucket,
63
+ sources: [this.code],
64
+ destinationKeyPrefix: (0, path_1.join)(this.compiledArtifactS3Prefix, "code"),
65
+ });
66
+ deploy.node.addDependency(...this.dependables);
67
+ model.node.addDependency(deploy);
57
68
  }
58
69
  }
59
70
  exports.TransformersNeuronxSageMakerInferenceModelData = TransformersNeuronxSageMakerInferenceModelData;
60
71
  _a = JSII_RTTI_SYMBOL_1;
61
- TransformersNeuronxSageMakerInferenceModelData[_a] = { fqn: "aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData", version: "0.0.7" };
72
+ TransformersNeuronxSageMakerInferenceModelData[_a] = { fqn: "aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerInferenceModelData", version: "0.0.9" };
62
73
  class TransformersNeuronxSageMakerRealtimeInferenceEndpoint extends constructs_1.Construct {
63
74
  constructor(scope, id, props) {
64
75
  super(scope, id);
@@ -66,11 +77,6 @@ class TransformersNeuronxSageMakerRealtimeInferenceEndpoint extends constructs_1
66
77
  sagemaker.ContainerImage.fromAsset((0, path_1.join)(__dirname, "../scripts/inference/transformers-neuronx"));
67
78
  const instanceType = props.instanceType ??
68
79
  this.selectInstanceTypeByTpDegree(props.modelData.tpDegree);
69
- const deploy = new aws_s3_deployment_1.BucketDeployment(this, "CodeDeployment", {
70
- destinationBucket: props.modelData.bucket,
71
- sources: [props.modelData.code],
72
- destinationKeyPrefix: (0, path_1.join)(props.modelData.compiledArtifactS3Prefix, "code"),
73
- });
74
80
  const model = new sagemaker.Model(this, "Model", {
75
81
  containers: [
76
82
  {
@@ -92,11 +98,14 @@ class TransformersNeuronxSageMakerRealtimeInferenceEndpoint extends constructs_1
92
98
  ],
93
99
  });
94
100
  const cfnModel = model.node.findChild("Model");
95
- cfnModel.addPropertyOverride("PrimaryContainer.ModelDataSource.S3DataSource.S3Uri", props.modelData.bucket.s3UrlForObject(props.modelData.compiledArtifactS3Prefix));
101
+ cfnModel.addPropertyOverride("PrimaryContainer.ModelDataSource.S3DataSource.S3Uri", props.modelData.bucket.s3UrlForObject(aws_cdk_lib_1.Token.isUnresolved(props.modelData.compiledArtifactS3Prefix) ||
102
+ props.modelData.compiledArtifactS3Prefix.endsWith("/")
103
+ ? props.modelData.compiledArtifactS3Prefix
104
+ : `${props.modelData.compiledArtifactS3Prefix}/`));
96
105
  cfnModel.addPropertyOverride("PrimaryContainer.ModelDataSource.S3DataSource.S3DataType", "S3Prefix");
97
106
  cfnModel.addPropertyOverride("PrimaryContainer.ModelDataSource.S3DataSource.CompressionType", "None");
98
107
  props.modelData.bucket.grantRead(model);
99
- model.node.addDependency(deploy);
108
+ props.modelData.bind(model);
100
109
  const endpointConfig = new sagemaker.EndpointConfig(this, "EndpointConfig", {
101
110
  instanceProductionVariants: [
102
111
  {
@@ -108,9 +117,9 @@ class TransformersNeuronxSageMakerRealtimeInferenceEndpoint extends constructs_1
108
117
  });
109
118
  const cfnEndpointConfig = endpointConfig.node.findChild("EndpointConfig");
110
119
  const volumeSize = props.volumeSize ??
111
- aws_cdk_lib_1.Size.gibibytes(Math.ceil(props.modelData.parameters.toBilion() * 2.5 > 512
120
+ aws_cdk_lib_1.Size.gibibytes(Math.ceil(props.modelData.parameters.toBilion() * 3 > 512
112
121
  ? 512
113
- : props.modelData.parameters.toBilion() * 2.5));
122
+ : props.modelData.parameters.toBilion() * 3));
114
123
  cfnEndpointConfig.addPropertyOverride("ProductionVariants.0.VolumeSizeInGB", instanceType.toString().startsWith("ml.trn1")
115
124
  ? undefined
116
125
  : volumeSize.toGibibytes());
@@ -144,9 +153,9 @@ class TransformersNeuronxSageMakerRealtimeInferenceEndpoint extends constructs_1
144
153
  }
145
154
  exports.TransformersNeuronxSageMakerRealtimeInferenceEndpoint = TransformersNeuronxSageMakerRealtimeInferenceEndpoint;
146
155
  _b = JSII_RTTI_SYMBOL_1;
147
- TransformersNeuronxSageMakerRealtimeInferenceEndpoint[_b] = { fqn: "aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerRealtimeInferenceEndpoint", version: "0.0.7" };
156
+ TransformersNeuronxSageMakerRealtimeInferenceEndpoint[_b] = { fqn: "aws-cdk-neuronx-patterns.TransformersNeuronxSageMakerRealtimeInferenceEndpoint", version: "0.0.9" };
148
157
  function inferenceModelDataDownloadTime(volumeSize) {
149
158
  const seconds = volumeSize.toGibibytes() * 15;
150
159
  return aws_cdk_lib_1.Duration.seconds(seconds < 3600 ? seconds : 3600);
151
160
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLW5ldXJvbngtc2FnZW1ha2VyLXJlYWx0aW1lLWluZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90cmFuc2Zvcm1lcnMtbmV1cm9ueC1zYWdlbWFrZXItcmVhbHRpbWUtaW5mZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLDBEQUEwRDtBQUMxRCw2Q0FBNkM7QUFHN0MscUVBSXVDO0FBRXZDLDJDQUF1QztBQUN2QyxtQ0FBMkU7QUFFM0UsbUVBQThEO0FBQzlELHlDQUE4QztBQW1DOUMsTUFBYSw4Q0FBOEM7SUFDekQsTUFBTSxDQUFDLFVBQVUsQ0FDZixNQUFlLEVBQ2YsTUFBYyxFQUNkLE9BQW1DO1FBRW5DLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVEsSUFBSSxnQkFBUSxDQUFDLFlBQVksQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FDWixPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVE7WUFDaEMsSUFBQSxtQkFBWSxFQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQy9CLFVBQVU7Z0JBQ1YsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLE9BQU8sSUFBSSw4Q0FBOEMsQ0FBQztZQUN4RCxNQUFNO1lBQ04sd0JBQXdCLEVBQUUsTUFBTTtZQUNoQyxVQUFVO1lBQ1YsVUFBVTtZQUNWLFFBQVE7WUFDUixRQUFRO1lBQ1IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNwQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUF1QixFQUFFLElBQWM7UUFDL0QsT0FBTyxJQUFJLDhDQUE4QyxDQUFDO1lBQ3hELEdBQUcsT0FBTztZQUNWLE1BQU0sRUFBRSxPQUFPLENBQUMsd0JBQXdCO1lBQ3hDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyx5QkFBeUI7WUFDM0QsSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUM7SUFZRCxZQUFvQixPQVduQjtRQUNDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJO1lBQ1AsT0FBTyxDQUFDLElBQUk7Z0JBQ1osMEJBQU0sQ0FBQyxLQUFLLENBQ1YsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLGdEQUFnRCxDQUFDLENBQ2xFLENBQUM7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQzNDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7O0FBeEVILHdHQXlFQzs7O0FBMkNELE1BQWEscURBQXNELFNBQVEsc0JBQVM7SUFZbEYsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBaUU7UUFFakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLEtBQUssR0FDVCxLQUFLLENBQUMsS0FBSztZQUNYLFNBQVMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUNoQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsMkNBQTJDLENBQUMsQ0FDN0QsQ0FBQztRQUNKLE1BQU0sWUFBWSxHQUNoQixLQUFLLENBQUMsWUFBWTtZQUNsQixJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLG9DQUFnQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUMxRCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU07WUFDekMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDL0Isb0JBQW9CLEVBQUUsSUFBQSxXQUFJLEVBQ3hCLEtBQUssQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQ3hDLE1BQU0sQ0FDUDtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQy9DLFVBQVUsRUFBRTtnQkFDVjtvQkFDRSxLQUFLO29CQUNMLFdBQVcsRUFBRTt3QkFDWCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7d0JBQ3hELDJCQUEyQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTt3QkFDakQsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FDdEMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFlBQVk7NEJBQ3hDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUMzQixDQUFDLFFBQVEsRUFBRTt3QkFDWixLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxhQUFhLElBQUksU0FBUzt3QkFDakQsaUJBQWlCLEVBQ2YsS0FBSyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsSUFBSSxZQUFZO3dCQUN0RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO3dCQUM5QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO3dCQUNsRCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO3dCQUM5QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTt3QkFDekQsR0FBRyxLQUFLLENBQUMsV0FBVztxQkFDckI7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBYSxDQUFDO1FBQzNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FDMUIscURBQXFELEVBQ3JELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDbkMsS0FBSyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FDekMsQ0FDRixDQUFDO1FBQ0YsUUFBUSxDQUFDLG1CQUFtQixDQUMxQiwwREFBMEQsRUFDMUQsVUFBVSxDQUNYLENBQUM7UUFDRixRQUFRLENBQUMsbUJBQW1CLENBQzFCLCtEQUErRCxFQUMvRCxNQUFNLENBQ1AsQ0FBQztRQUNGLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxNQUFNLGNBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQ2pELElBQUksRUFDSixnQkFBZ0IsRUFDaEI7WUFDRSwwQkFBMEIsRUFBRTtnQkFDMUI7b0JBQ0UsS0FBSztvQkFDTCxXQUFXLEVBQUUsZ0JBQWdCO29CQUM3QixZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNqRTthQUNGO1NBQ0YsQ0FDRixDQUFDO1FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDckQsZ0JBQWdCLENBQ0ksQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsVUFBVTtZQUNoQixrQkFBSSxDQUFDLFNBQVMsQ0FDWixJQUFJLENBQUMsSUFBSSxDQUNQLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHO2dCQUMvQyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUNoRCxDQUNGLENBQUM7UUFDSixpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FDbkMscUNBQXFDLEVBQ3JDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxTQUFTO1lBQ1gsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FDN0IsQ0FBQztRQUNGLE1BQU0sd0JBQXdCLEdBQzVCLEtBQUssQ0FBQyx3QkFBd0I7WUFDOUIsOEJBQThCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsaUJBQWlCLENBQUMsbUJBQW1CLENBQ25DLHdEQUF3RCxFQUN4RCx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsQ0FDckMsQ0FBQztRQUNGLGlCQUFpQixDQUFDLG1CQUFtQixDQUNuQyxrRUFBa0UsRUFDbEUsQ0FDRSxLQUFLLENBQUMsa0NBQWtDLElBQUksd0JBQXdCLENBQ3JFLENBQUMsU0FBUyxFQUFFLENBQ2QsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3hELGNBQWM7U0FDZixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBbUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sNEJBQTRCLENBQUMsUUFBZ0I7UUFDbkQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsMkNBQW1CLENBQUMsWUFBWTtZQUNoQywyQ0FBbUIsQ0FBQyxhQUFhO1lBQ2pDLDJDQUFtQixDQUFDLGFBQWE7U0FDbEMsQ0FBQztRQUNGLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxRQUFRLElBQUksWUFBWSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMzRCxPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7SUFDSixDQUFDOztBQS9JSCxzSEFnSkM7OztBQUVELFNBQVMsOEJBQThCLENBQUMsVUFBZ0I7SUFDdEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUM5QyxPQUFPLHNCQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgc2FnZW1ha2VyIGZyb20gXCJAYXdzLWNkay9hd3Mtc2FnZW1ha2VyLWFscGhhXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgU2l6ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgR3JhbnQsIElHcmFudGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldERlcGxveW1lbnQsXG4gIElTb3VyY2UsXG4gIFNvdXJjZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50XCI7XG5pbXBvcnQgeyBDZm5FbmRwb2ludENvbmZpZywgQ2ZuTW9kZWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlclwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBpbGVPcHRpb25zLCBPcHRMZXZlbCwgUGFyYW1ldGVycywgUXVhbnREdHlwZSB9IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQgeyBOZXVyb254Q29tcGlsZSB9IGZyb20gXCIuL25ldXJvbngtY29tcGlsZVwiO1xuaW1wb3J0IHsgTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuL25ldXJvbngtaW5zdGFuY2UtdHlwZVwiO1xuaW1wb3J0IHsgY2FsY1RwRGVncmVlIH0gZnJvbSBcIi4vcHJpdmF0ZS91dGlsXCI7XG5cbi8qKlxuICogUHJlY29tcGlsZWQgbW9kZWwgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZE1vZGVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOZXVyb254IGNvbXBpbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBFYWNoIHByb3BlcnRpZXMgYXJlIHNldCBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZU9wdGlvbnM/OiBDb21waWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIENvZGUgdXNlZCBmb3IgaW5mZXJlbmNlXG4gICAqIEBkZWZhdWx0IC0gdXNpbmcgdGhlIHByZWRlZmluZWQgY29kZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZT86IElTb3VyY2U7XG4gIC8qKlxuICAgKiBNb2RlbCBJRCBvciBzYXZlZCBwYXRoXG4gICAqIEBkZWZhdWx0IFwiLi9tb2RlbFwiXG4gICAqL1xuICByZWFkb25seSBtb2RlbElkT3JQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgY29tcGlsZWQgYXJ0aWZhY3RzIChpLmUuIHh4eC5uZWZmKSBhcmUgc3RvcmVkXG4gICAqIEBkZWZhdWx0IFwiLi9jb21waWxlZFwiXG4gICAqL1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRDb21waWxlZE1vZGVsT3B0aW9ucyBleHRlbmRzIENvbXBpbGVkTW9kZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBvZiBtb2RlbC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM6IFBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VySW5mZXJlbmNlTW9kZWxEYXRhIHtcbiAgc3RhdGljIGZyb21CdWNrZXQoXG4gICAgYnVja2V0OiBJQnVja2V0LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEJ1Y2tldENvbXBpbGVkTW9kZWxPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBuUG9zaXRpb25zID0gb3B0aW9ucy5jb21waWxlT3B0aW9ucz8ublBvc2l0aW9ucyA/PyA0MDk2O1xuICAgIGNvbnN0IHF1YW50RHR5cGUgPSBvcHRpb25zLmNvbXBpbGVPcHRpb25zPy5xdWFudER0eXBlO1xuICAgIGNvbnN0IG9wdExldmVsID0gb3B0aW9ucy5jb21waWxlT3B0aW9ucz8ub3B0TGV2ZWwgPz8gT3B0TGV2ZWwuQkVTVF9CQUxBTkNFO1xuICAgIGNvbnN0IHRwRGVncmVlID1cbiAgICAgIG9wdGlvbnMuY29tcGlsZU9wdGlvbnM/LnRwRGVncmVlID8/XG4gICAgICBjYWxjVHBEZWdyZWUob3B0aW9ucy5wYXJhbWV0ZXJzLCB7XG4gICAgICAgIG5Qb3NpdGlvbnMsXG4gICAgICAgIHF1YW50RHR5cGUsXG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJJbmZlcmVuY2VNb2RlbERhdGEoe1xuICAgICAgYnVja2V0LFxuICAgICAgY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4OiBwcmVmaXgsXG4gICAgICBuUG9zaXRpb25zLFxuICAgICAgcXVhbnREdHlwZSxcbiAgICAgIG9wdExldmVsLFxuICAgICAgdHBEZWdyZWUsXG4gICAgICBjb2RlOiBvcHRpb25zLmNvZGUsXG4gICAgICBtb2RlbElkT3JQYXRoOiBvcHRpb25zLm1vZGVsSWRPclBhdGgsXG4gICAgICBwYXJhbWV0ZXJzOiBvcHRpb25zLnBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIGZyb21OZXVyb254Q29tcGlsZShjb21waWxlOiBOZXVyb254Q29tcGlsZSwgY29kZT86IElTb3VyY2UpIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJJbmZlcmVuY2VNb2RlbERhdGEoe1xuICAgICAgLi4uY29tcGlsZSxcbiAgICAgIGJ1Y2tldDogY29tcGlsZS5jb21waWxlZEFydGlmYWN0UzNCdWNrZXQsXG4gICAgICBjb21waWxlZEFydGlmYWN0UzNQcmVmaXg6IGNvbXBpbGUuX2NvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeCxcbiAgICAgIGNvZGUsXG4gICAgfSk7XG4gIH1cbiAgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0O1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UzNQcmVmaXg6IHN0cmluZztcbiAgcmVhZG9ubHkgY29kZTogSVNvdXJjZTtcbiAgcmVhZG9ubHkgdHBEZWdyZWU6IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVhbnREdHlwZT86IFF1YW50RHR5cGU7XG4gIHJlYWRvbmx5IG5Qb3NpdGlvbnM6IG51bWJlcjtcbiAgcmVhZG9ubHkgb3B0TGV2ZWw6IE9wdExldmVsO1xuICByZWFkb25seSBtb2RlbElkT3JQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFyYW1ldGVyczogUGFyYW1ldGVycztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHtcbiAgICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gICAgcmVhZG9ubHkgY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHBEZWdyZWU6IG51bWJlcjtcbiAgICByZWFkb25seSBxdWFudER0eXBlPzogUXVhbnREdHlwZTtcbiAgICByZWFkb25seSBuUG9zaXRpb25zOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgb3B0TGV2ZWw6IE9wdExldmVsO1xuICAgIHJlYWRvbmx5IGNvZGU/OiBJU291cmNlO1xuICAgIHJlYWRvbmx5IG1vZGVsSWRPclBhdGg/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29tcGlsZWRBcnRpZmFjdFBhdGg/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgcGFyYW1ldGVyczogUGFyYW1ldGVycztcbiAgfSkge1xuICAgIHRoaXMuYnVja2V0ID0gb3B0aW9ucy5idWNrZXQ7XG4gICAgdGhpcy5jb21waWxlZEFydGlmYWN0UzNQcmVmaXggPSBvcHRpb25zLmNvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeDtcbiAgICB0aGlzLmNvZGUgPVxuICAgICAgb3B0aW9ucy5jb2RlID8/XG4gICAgICBTb3VyY2UuYXNzZXQoXG4gICAgICAgIGpvaW4oX19kaXJuYW1lLCBcIi4uL3NjcmlwdHMvaW5mZXJlbmNlL3RyYW5zZm9ybWVycy1uZXVyb254L2NvZGVcIiksXG4gICAgICApO1xuICAgIHRoaXMudHBEZWdyZWUgPSBvcHRpb25zLnRwRGVncmVlO1xuICAgIHRoaXMucXVhbnREdHlwZSA9IG9wdGlvbnMucXVhbnREdHlwZTtcbiAgICB0aGlzLm5Qb3NpdGlvbnMgPSBvcHRpb25zLm5Qb3NpdGlvbnM7XG4gICAgdGhpcy5vcHRMZXZlbCA9IG9wdGlvbnMub3B0TGV2ZWw7XG4gICAgdGhpcy5tb2RlbElkT3JQYXRoID0gb3B0aW9ucy5tb2RlbElkT3JQYXRoO1xuICAgIHRoaXMuY29tcGlsZWRBcnRpZmFjdFBhdGggPSBvcHRpb25zLmNvbXBpbGVkQXJ0aWZhY3RQYXRoO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IG9wdGlvbnMucGFyYW1ldGVycztcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJSZWFsdGltZUluZmVyZW5jZUVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogTW9kZWwgZGF0YSBmb3IgU2FnZU1ha2VyIGluZmVyZW5jZS5cbiAgICogVGhlIG1vZGVsIGRhdGEgcmVxdWlyZXMgYXQgbGVhc3QgY29tcGlsZWQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxEYXRhOiBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VySW5mZXJlbmNlTW9kZWxEYXRhO1xuICAvKipcbiAgICogQW4gaW1hZ2Ugb2YgdGhlIGNvbnRhaW5lciB3aGVyZSB0aGUgaW5mZXJlbmNlIGpvYiBpcyBleGVjdXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogc2FnZW1ha2VyLkNvbnRhaW5lckltYWdlO1xuICAvKipcbiAgICogQSBtYXAgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgdGhlIHByZWRlZmluZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHVzZSBOZXVyb254IGhhdmUgYmVlbiBzZXQuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgdHlwZSBvZiBjb21waWxlIHdvcmtlciBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQgLSBJdCBpcyBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgbW9kZWwgcGFyYW1ldGVycyBhbmQgY29tcGlsYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IE5ldXJvbnhJbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSwgb2YgdGhlIE1MIHN0b3JhZ2Ugdm9sdW1lIGF0dGFjaGVkIHRvIGluZGl2aWR1YWwgaW5mZXJlbmNlIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvZHVjdGlvbiB2YXJpYW50LlxuICAgKiBDdXJyZW50bHkgb25seSBBbWF6b24gRUJTIGdwMiBzdG9yYWdlIHZvbHVtZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2pwL3JlbGVhc2Vub3Rlcy9ob3N0LWluc3RhbmNlLXN0b3JhZ2Utdm9sdW1lcy10YWJsZVxuICAgKiBAZGVmYXVsdCAtIDIuNSBHQiBwZXIgYmlsbGlvbiBwYXJhbWV0ZXIgKE1heCA1MTIgR0IpXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVTaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IHZhbHVlLCB0byBkb3dubG9hZCBhbmQgZXh0cmFjdCB0aGUgbW9kZWwgdGhhdCB5b3Ugd2FudCB0byBob3N0IGZyb20gQW1hem9uIFMzXG4gICAqIHRvIHRoZSBpbmRpdmlkdWFsIGluZmVyZW5jZSBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9kdWN0aW9uIHZhcmlhbnQuXG4gICAqIEBkZWZhdWx0IC0gNjAgc2Vjb25kcywgd2hlbiBgdm9sdW1lU2l6ZWAgbGFyZ2VyIHRoYW4gMzBHQiB0aGVuIDFHQiB4IDE1IHNlY29uZHMgKG1heCA2MCBtaW51dGVzKVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxEYXRhRG93bmxvYWRUaW1lb3V0PzogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCB2YWx1ZSwgZm9yIHlvdXIgaW5mZXJlbmNlIGNvbnRhaW5lciB0byBwYXNzIGhlYWx0aCBjaGVjayBieSBTYWdlTWFrZXIgSG9zdGluZy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2FnZW1ha2VyL2xhdGVzdC9kZy95b3VyLWFsZ29yaXRobXMtaW5mZXJlbmNlLWNvZGUuaHRtbCN5b3VyLWFsZ29yaXRobXMtaW5mZXJlbmNlLWFsZ28tcGluZy1yZXF1ZXN0c1xuICAgKiBAZGVmYXVsdCAtIDYwIHNlY29uZHMsIHdoZW4gc2V0IHRoZSBgbW9kZWxEYXRhRG93bmxvYWRUaW1lb3V0YCB0aGVuIHVzZSBzYW1lIHZhbHVlIChtYXggNjAgbWludXRlcylcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclN0YXJ0dXBIZWFsdGhDaGVja1RpbWVvdXQ/OiBEdXJhdGlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJSZWFsdGltZUluZmVyZW5jZUVuZHBvaW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGVuZHBvaW50LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludEFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGVuZHBvaW50LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludDogc2FnZW1ha2VyLkVuZHBvaW50O1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJSZWFsdGltZUluZmVyZW5jZUVuZHBvaW50UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgaW1hZ2UgPVxuICAgICAgcHJvcHMuaW1hZ2UgPz9cbiAgICAgIHNhZ2VtYWtlci5Db250YWluZXJJbWFnZS5mcm9tQXNzZXQoXG4gICAgICAgIGpvaW4oX19kaXJuYW1lLCBcIi4uL3NjcmlwdHMvaW5mZXJlbmNlL3RyYW5zZm9ybWVycy1uZXVyb254XCIpLFxuICAgICAgKTtcbiAgICBjb25zdCBpbnN0YW5jZVR5cGUgPVxuICAgICAgcHJvcHMuaW5zdGFuY2VUeXBlID8/XG4gICAgICB0aGlzLnNlbGVjdEluc3RhbmNlVHlwZUJ5VHBEZWdyZWUocHJvcHMubW9kZWxEYXRhLnRwRGVncmVlKTtcbiAgICBjb25zdCBkZXBsb3kgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBcIkNvZGVEZXBsb3ltZW50XCIsIHtcbiAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiBwcm9wcy5tb2RlbERhdGEuYnVja2V0LFxuICAgICAgc291cmNlczogW3Byb3BzLm1vZGVsRGF0YS5jb2RlXSxcbiAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBqb2luKFxuICAgICAgICBwcm9wcy5tb2RlbERhdGEuY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4LFxuICAgICAgICBcImNvZGVcIixcbiAgICAgICksXG4gICAgfSk7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgc2FnZW1ha2VyLk1vZGVsKHRoaXMsIFwiTW9kZWxcIiwge1xuICAgICAgY29udGFpbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIE5FVVJPTl9SVF9OVU1fQ09SRVM6IHByb3BzLm1vZGVsRGF0YS50cERlZ3JlZS50b1N0cmluZygpLFxuICAgICAgICAgICAgVFNfREVGQVVMVF9SRVNQT05TRV9USU1FT1VUOiAoNjAgKiA2MCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFRTX0RFRkFVTFRfV09SS0VSU19QRVJfTU9ERUw6IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgIGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyAvXG4gICAgICAgICAgICAgICAgcHJvcHMubW9kZWxEYXRhLnRwRGVncmVlLFxuICAgICAgICAgICAgKS50b1N0cmluZygpLFxuICAgICAgICAgICAgTU9ERUw6IHByb3BzLm1vZGVsRGF0YS5tb2RlbElkT3JQYXRoID8/IFwiLi9tb2RlbFwiLFxuICAgICAgICAgICAgQ09NUElMRURfQVJUSUZBQ1Q6XG4gICAgICAgICAgICAgIHByb3BzLm1vZGVsRGF0YS5jb21waWxlZEFydGlmYWN0UGF0aCA/PyBcIi4vY29tcGlsZWRcIixcbiAgICAgICAgICAgIFRQX0RFR1JFRTogcHJvcHMubW9kZWxEYXRhLnRwRGVncmVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBOX1BPU0lUSU9OUzogcHJvcHMubW9kZWxEYXRhLm5Qb3NpdGlvbnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE9QVF9MRVZFTDogcHJvcHMubW9kZWxEYXRhLm9wdExldmVsLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBRVUFOVF9EVFlQRTogcHJvcHMubW9kZWxEYXRhLnF1YW50RHR5cGU/LnRvU3RyaW5nKCkgPz8gXCJcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGNvbnN0IGNmbk1vZGVsID0gbW9kZWwubm9kZS5maW5kQ2hpbGQoXCJNb2RlbFwiKSBhcyBDZm5Nb2RlbDtcbiAgICBjZm5Nb2RlbC5hZGRQcm9wZXJ0eU92ZXJyaWRlKFxuICAgICAgXCJQcmltYXJ5Q29udGFpbmVyLk1vZGVsRGF0YVNvdXJjZS5TM0RhdGFTb3VyY2UuUzNVcmlcIixcbiAgICAgIHByb3BzLm1vZGVsRGF0YS5idWNrZXQuczNVcmxGb3JPYmplY3QoXG4gICAgICAgIHByb3BzLm1vZGVsRGF0YS5jb21waWxlZEFydGlmYWN0UzNQcmVmaXgsXG4gICAgICApLFxuICAgICk7XG4gICAgY2ZuTW9kZWwuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiUHJpbWFyeUNvbnRhaW5lci5Nb2RlbERhdGFTb3VyY2UuUzNEYXRhU291cmNlLlMzRGF0YVR5cGVcIixcbiAgICAgIFwiUzNQcmVmaXhcIixcbiAgICApO1xuICAgIGNmbk1vZGVsLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIlByaW1hcnlDb250YWluZXIuTW9kZWxEYXRhU291cmNlLlMzRGF0YVNvdXJjZS5Db21wcmVzc2lvblR5cGVcIixcbiAgICAgIFwiTm9uZVwiLFxuICAgICk7XG4gICAgcHJvcHMubW9kZWxEYXRhLmJ1Y2tldC5ncmFudFJlYWQobW9kZWwpO1xuICAgIG1vZGVsLm5vZGUuYWRkRGVwZW5kZW5jeShkZXBsb3kpO1xuICAgIGNvbnN0IGVuZHBvaW50Q29uZmlnID0gbmV3IHNhZ2VtYWtlci5FbmRwb2ludENvbmZpZyhcbiAgICAgIHRoaXMsXG4gICAgICBcIkVuZHBvaW50Q29uZmlnXCIsXG4gICAgICB7XG4gICAgICAgIGluc3RhbmNlUHJvZHVjdGlvblZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICB2YXJpYW50TmFtZTogXCJQcmltYXJ5VmFyaWFudFwiLFxuICAgICAgICAgICAgaW5zdGFuY2VUeXBlOiBzYWdlbWFrZXIuSW5zdGFuY2VUeXBlLm9mKGluc3RhbmNlVHlwZS50b1N0cmluZygpKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGNmbkVuZHBvaW50Q29uZmlnID0gZW5kcG9pbnRDb25maWcubm9kZS5maW5kQ2hpbGQoXG4gICAgICBcIkVuZHBvaW50Q29uZmlnXCIsXG4gICAgKSBhcyBDZm5FbmRwb2ludENvbmZpZztcbiAgICBjb25zdCB2b2x1bWVTaXplID1cbiAgICAgIHByb3BzLnZvbHVtZVNpemUgPz9cbiAgICAgIFNpemUuZ2liaWJ5dGVzKFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgcHJvcHMubW9kZWxEYXRhLnBhcmFtZXRlcnMudG9CaWxpb24oKSAqIDIuNSA+IDUxMlxuICAgICAgICAgICAgPyA1MTJcbiAgICAgICAgICAgIDogcHJvcHMubW9kZWxEYXRhLnBhcmFtZXRlcnMudG9CaWxpb24oKSAqIDIuNSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgY2ZuRW5kcG9pbnRDb25maWcuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiUHJvZHVjdGlvblZhcmlhbnRzLjAuVm9sdW1lU2l6ZUluR0JcIixcbiAgICAgIGluc3RhbmNlVHlwZS50b1N0cmluZygpLnN0YXJ0c1dpdGgoXCJtbC50cm4xXCIpXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogdm9sdW1lU2l6ZS50b0dpYmlieXRlcygpLFxuICAgICk7XG4gICAgY29uc3QgbW9kZWxEYXRhRG93bmxvYWRUaW1lb3V0ID1cbiAgICAgIHByb3BzLm1vZGVsRGF0YURvd25sb2FkVGltZW91dCA/P1xuICAgICAgaW5mZXJlbmNlTW9kZWxEYXRhRG93bmxvYWRUaW1lKHZvbHVtZVNpemUpO1xuICAgIGNmbkVuZHBvaW50Q29uZmlnLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIlByb2R1Y3Rpb25WYXJpYW50cy4wLk1vZGVsRGF0YURvd25sb2FkVGltZW91dEluU2Vjb25kc1wiLFxuICAgICAgbW9kZWxEYXRhRG93bmxvYWRUaW1lb3V0LnRvU2Vjb25kcygpLFxuICAgICk7XG4gICAgY2ZuRW5kcG9pbnRDb25maWcuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiUHJvZHVjdGlvblZhcmlhbnRzLjAuQ29udGFpbmVyU3RhcnR1cEhlYWx0aENoZWNrVGltZW91dEluU2Vjb25kc1wiLFxuICAgICAgKFxuICAgICAgICBwcm9wcy5jb250YWluZXJTdGFydHVwSGVhbHRoQ2hlY2tUaW1lb3V0ID8/IG1vZGVsRGF0YURvd25sb2FkVGltZW91dFxuICAgICAgKS50b1NlY29uZHMoKSxcbiAgICApO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IHNhZ2VtYWtlci5FbmRwb2ludCh0aGlzLCBcIkVuZHBvaW50XCIsIHtcbiAgICAgIGVuZHBvaW50Q29uZmlnLFxuICAgIH0pO1xuICAgIHRoaXMuZW5kcG9pbnRBcm4gPSBlbmRwb2ludC5lbmRwb2ludEFybjtcbiAgICB0aGlzLmVuZHBvaW50TmFtZSA9IGVuZHBvaW50LmVuZHBvaW50TmFtZTtcbiAgICB0aGlzLmVuZHBvaW50ID0gZW5kcG9pbnQ7XG4gIH1cbiAgZ3JhbnRJbnZva2UoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludC5ncmFudEludm9rZShncmFudGVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW5zdGFuY2VUeXBlQnlUcERlZ3JlZSh0cERlZ3JlZTogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlcyA9IFtcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl84WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzI0WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzQ4WExBUkdFLFxuICAgIF07XG4gICAgZm9yIChjb25zdCBpbnN0YW5jZVR5cGUgb2YgaW5zdGFuY2VUeXBlcykge1xuICAgICAgaWYgKHRwRGVncmVlIDw9IGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3Jlcykge1xuICAgICAgICByZXR1cm4gaW5zdGFuY2VUeXBlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlRoaXMgbW9kZWwgaXMgdG9vIGxhcmdlLCBJIGNhbiBub3Qgc3VwcG9ydCB0aGlzIG1vZGVsIGN1cnJlbnQgdmVyc2lvbi5cIixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZmVyZW5jZU1vZGVsRGF0YURvd25sb2FkVGltZSh2b2x1bWVTaXplOiBTaXplKSB7XG4gIGNvbnN0IHNlY29uZHMgPSB2b2x1bWVTaXplLnRvR2liaWJ5dGVzKCkgKiAxNTtcbiAgcmV0dXJuIER1cmF0aW9uLnNlY29uZHMoc2Vjb25kcyA8IDM2MDAgPyBzZWNvbmRzIDogMzYwMCk7XG59XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLW5ldXJvbngtc2FnZW1ha2VyLXJlYWx0aW1lLWluZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90cmFuc2Zvcm1lcnMtbmV1cm9ueC1zYWdlbWFrZXItcmVhbHRpbWUtaW5mZXJlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0JBQTRCO0FBQzVCLDBEQUEwRDtBQUMxRCw2Q0FBb0Q7QUFHcEQscUVBSXVDO0FBRXZDLDJDQUFvRDtBQUNwRCxtQ0FBMkU7QUFFM0UsbUVBQThEO0FBQzlELHlDQUE4QztBQW1DOUMsTUFBYSw4Q0FBOEM7SUFDekQsTUFBTSxDQUFDLFVBQVUsQ0FDZixNQUFlLEVBQ2YsTUFBYyxFQUNkLE9BQW1DO1FBRW5DLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztRQUM5RCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVEsSUFBSSxnQkFBUSxDQUFDLFlBQVksQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FDWixPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVE7WUFDaEMsSUFBQSxtQkFBWSxFQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQy9CLFVBQVU7Z0JBQ1YsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLE9BQU8sSUFBSSw4Q0FBOEMsQ0FBQztZQUN4RCxNQUFNO1lBQ04sd0JBQXdCLEVBQUUsTUFBTTtZQUNoQyxVQUFVO1lBQ1YsVUFBVTtZQUNWLFFBQVE7WUFDUixRQUFRO1lBQ1IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLGFBQWEsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNwQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNE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RSxDQUFDO0lBQ0osQ0FBQzs7QUExSUgsc0hBMklDOzs7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFVBQWdCO0lBQ3RELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDOUMsT0FBTyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIHNhZ2VtYWtlciBmcm9tIFwiQGF3cy1jZGsvYXdzLXNhZ2VtYWtlci1hbHBoYVwiO1xuaW1wb3J0IHsgRHVyYXRpb24sIFNpemUsIFRva2VuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBHcmFudCwgSUdyYW50YWJsZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtcbiAgQnVja2V0RGVwbG95bWVudCxcbiAgSVNvdXJjZSxcbiAgU291cmNlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7IENmbkVuZHBvaW50Q29uZmlnLCBDZm5Nb2RlbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2FnZW1ha2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBpbGVPcHRpb25zLCBPcHRMZXZlbCwgUGFyYW1ldGVycywgUXVhbnREdHlwZSB9IGZyb20gXCIuL21vZGVsXCI7XG5pbXBvcnQgeyBOZXVyb254Q29tcGlsZSB9IGZyb20gXCIuL25ldXJvbngtY29tcGlsZVwiO1xuaW1wb3J0IHsgTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuL25ldXJvbngtaW5zdGFuY2UtdHlwZVwiO1xuaW1wb3J0IHsgY2FsY1RwRGVncmVlIH0gZnJvbSBcIi4vcHJpdmF0ZS91dGlsXCI7XG5cbi8qKlxuICogUHJlY29tcGlsZWQgbW9kZWwgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21waWxlZE1vZGVsT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOZXVyb254IGNvbXBpbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBFYWNoIHByb3BlcnRpZXMgYXJlIHNldCBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZU9wdGlvbnM/OiBDb21waWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIENvZGUgdXNlZCBmb3IgaW5mZXJlbmNlXG4gICAqIEBkZWZhdWx0IC0gdXNpbmcgdGhlIHByZWRlZmluZWQgY29kZVxuICAgKi9cbiAgcmVhZG9ubHkgY29kZT86IElTb3VyY2U7XG4gIC8qKlxuICAgKiBNb2RlbCBJRCBvciBzYXZlZCBwYXRoXG4gICAqIEBkZWZhdWx0IFwiLi9tb2RlbFwiXG4gICAqL1xuICByZWFkb25seSBtb2RlbElkT3JQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhdGggd2hlcmUgY29tcGlsZWQgYXJ0aWZhY3RzIChpLmUuIHh4eC5uZWZmKSBhcmUgc3RvcmVkXG4gICAqIEBkZWZhdWx0IFwiLi9jb21waWxlZFwiXG4gICAqL1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRDb21waWxlZE1vZGVsT3B0aW9ucyBleHRlbmRzIENvbXBpbGVkTW9kZWxPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBvZiBtb2RlbC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM6IFBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VySW5mZXJlbmNlTW9kZWxEYXRhIHtcbiAgc3RhdGljIGZyb21CdWNrZXQoXG4gICAgYnVja2V0OiBJQnVja2V0LFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEJ1Y2tldENvbXBpbGVkTW9kZWxPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBuUG9zaXRpb25zID0gb3B0aW9ucy5jb21waWxlT3B0aW9ucz8ublBvc2l0aW9ucyA/PyA0MDk2O1xuICAgIGNvbnN0IHF1YW50RHR5cGUgPSBvcHRpb25zLmNvbXBpbGVPcHRpb25zPy5xdWFudER0eXBlO1xuICAgIGNvbnN0IG9wdExldmVsID0gb3B0aW9ucy5jb21waWxlT3B0aW9ucz8ub3B0TGV2ZWwgPz8gT3B0TGV2ZWwuQkVTVF9CQUxBTkNFO1xuICAgIGNvbnN0IHRwRGVncmVlID1cbiAgICAgIG9wdGlvbnMuY29tcGlsZU9wdGlvbnM/LnRwRGVncmVlID8/XG4gICAgICBjYWxjVHBEZWdyZWUob3B0aW9ucy5wYXJhbWV0ZXJzLCB7XG4gICAgICAgIG5Qb3NpdGlvbnMsXG4gICAgICAgIHF1YW50RHR5cGUsXG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJJbmZlcmVuY2VNb2RlbERhdGEoe1xuICAgICAgYnVja2V0LFxuICAgICAgY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4OiBwcmVmaXgsXG4gICAgICBuUG9zaXRpb25zLFxuICAgICAgcXVhbnREdHlwZSxcbiAgICAgIG9wdExldmVsLFxuICAgICAgdHBEZWdyZWUsXG4gICAgICBjb2RlOiBvcHRpb25zLmNvZGUsXG4gICAgICBtb2RlbElkT3JQYXRoOiBvcHRpb25zLm1vZGVsSWRPclBhdGgsXG4gICAgICBwYXJhbWV0ZXJzOiBvcHRpb25zLnBhcmFtZXRlcnMsXG4gICAgfSk7XG4gIH1cbiAgc3RhdGljIGZyb21OZXVyb254Q29tcGlsZShjb21waWxlOiBOZXVyb254Q29tcGlsZSwgY29kZT86IElTb3VyY2UpIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJJbmZlcmVuY2VNb2RlbERhdGEoe1xuICAgICAgLi4uY29tcGlsZSxcbiAgICAgIGJ1Y2tldDogY29tcGlsZS5jb21waWxlZEFydGlmYWN0UzNCdWNrZXQsXG4gICAgICBjb21waWxlZEFydGlmYWN0UzNQcmVmaXg6IGNvbXBpbGUuX2NvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeCxcbiAgICAgIGNvZGUsXG4gICAgICBkZXBlbmRhYmxlczogW2NvbXBpbGUubm9kZS5kZWZhdWx0Q2hpbGQhXSxcbiAgICB9KTtcbiAgfVxuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gIHJlYWRvbmx5IGNvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeDogc3RyaW5nO1xuICByZWFkb25seSBjb2RlOiBJU291cmNlO1xuICByZWFkb25seSB0cERlZ3JlZTogbnVtYmVyO1xuICByZWFkb25seSBxdWFudER0eXBlPzogUXVhbnREdHlwZTtcbiAgcmVhZG9ubHkgblBvc2l0aW9uczogbnVtYmVyO1xuICByZWFkb25seSBvcHRMZXZlbDogT3B0TGV2ZWw7XG4gIHJlYWRvbmx5IG1vZGVsSWRPclBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbXBpbGVkQXJ0aWZhY3RQYXRoPzogc3RyaW5nO1xuICByZWFkb25seSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGFibGVzOiBJRGVwZW5kYWJsZVtdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Iob3B0aW9uczoge1xuICAgIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UzNQcmVmaXg6IHN0cmluZztcbiAgICByZWFkb25seSB0cERlZ3JlZTogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHF1YW50RHR5cGU/OiBRdWFudER0eXBlO1xuICAgIHJlYWRvbmx5IG5Qb3NpdGlvbnM6IG51bWJlcjtcbiAgICByZWFkb25seSBvcHRMZXZlbDogT3B0TGV2ZWw7XG4gICAgcmVhZG9ubHkgY29kZT86IElTb3VyY2U7XG4gICAgcmVhZG9ubHkgbW9kZWxJZE9yUGF0aD86IHN0cmluZztcbiAgICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UGF0aD86IHN0cmluZztcbiAgICByZWFkb25seSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzO1xuICAgIHJlYWRvbmx5IGRlcGVuZGFibGVzPzogSURlcGVuZGFibGVbXTtcbiAgfSkge1xuICAgIHRoaXMuYnVja2V0ID0gb3B0aW9ucy5idWNrZXQ7XG4gICAgdGhpcy5jb21waWxlZEFydGlmYWN0UzNQcmVmaXggPSBvcHRpb25zLmNvbXBpbGVkQXJ0aWZhY3RTM1ByZWZpeDtcbiAgICB0aGlzLmNvZGUgPVxuICAgICAgb3B0aW9ucy5jb2RlID8/XG4gICAgICBTb3VyY2UuYXNzZXQoXG4gICAgICAgIGpvaW4oX19kaXJuYW1lLCBcIi4uL3NjcmlwdHMvaW5mZXJlbmNlL3RyYW5zZm9ybWVycy1uZXVyb254L2NvZGVcIiksXG4gICAgICApO1xuICAgIHRoaXMudHBEZWdyZWUgPSBvcHRpb25zLnRwRGVncmVlO1xuICAgIHRoaXMucXVhbnREdHlwZSA9IG9wdGlvbnMucXVhbnREdHlwZTtcbiAgICB0aGlzLm5Qb3NpdGlvbnMgPSBvcHRpb25zLm5Qb3NpdGlvbnM7XG4gICAgdGhpcy5vcHRMZXZlbCA9IG9wdGlvbnMub3B0TGV2ZWw7XG4gICAgdGhpcy5tb2RlbElkT3JQYXRoID0gb3B0aW9ucy5tb2RlbElkT3JQYXRoO1xuICAgIHRoaXMuY29tcGlsZWRBcnRpZmFjdFBhdGggPSBvcHRpb25zLmNvbXBpbGVkQXJ0aWZhY3RQYXRoO1xuICAgIHRoaXMucGFyYW1ldGVycyA9IG9wdGlvbnMucGFyYW1ldGVycztcbiAgICB0aGlzLmRlcGVuZGFibGVzID0gb3B0aW9ucy5kZXBlbmRhYmxlcyA/PyBbXTtcbiAgfVxuXG4gIGJpbmQobW9kZWw6IHNhZ2VtYWtlci5JTW9kZWwpIHtcbiAgICBjb25zdCBkZXBsb3kgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLmJ1Y2tldCwgXCJDb2RlRGVwbG95bWVudFwiLCB7XG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdGhpcy5idWNrZXQsXG4gICAgICBzb3VyY2VzOiBbdGhpcy5jb2RlXSxcbiAgICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4OiBqb2luKHRoaXMuY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4LCBcImNvZGVcIiksXG4gICAgfSk7XG4gICAgZGVwbG95Lm5vZGUuYWRkRGVwZW5kZW5jeSguLi50aGlzLmRlcGVuZGFibGVzKTtcbiAgICBtb2RlbC5ub2RlLmFkZERlcGVuZGVuY3koZGVwbG95KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybWVyc05ldXJvbnhTYWdlTWFrZXJSZWFsdGltZUluZmVyZW5jZUVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogTW9kZWwgZGF0YSBmb3IgU2FnZU1ha2VyIGluZmVyZW5jZS5cbiAgICogVGhlIG1vZGVsIGRhdGEgcmVxdWlyZXMgYXQgbGVhc3QgY29tcGlsZWQgYXJ0aWZhY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxEYXRhOiBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VySW5mZXJlbmNlTW9kZWxEYXRhO1xuICAvKipcbiAgICogQW4gaW1hZ2Ugb2YgdGhlIGNvbnRhaW5lciB3aGVyZSB0aGUgaW5mZXJlbmNlIGpvYiBpcyBleGVjdXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogc2FnZW1ha2VyLkNvbnRhaW5lckltYWdlO1xuICAvKipcbiAgICogQSBtYXAgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHBhc3MgaW50byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgdGhlIHByZWRlZmluZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHVzZSBOZXVyb254IGhhdmUgYmVlbiBzZXQuXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgdHlwZSBvZiBjb21waWxlIHdvcmtlciBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQgLSBJdCBpcyBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHkgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgbW9kZWwgcGFyYW1ldGVycyBhbmQgY29tcGlsYXRpb24gb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IE5ldXJvbnhJbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSwgb2YgdGhlIE1MIHN0b3JhZ2Ugdm9sdW1lIGF0dGFjaGVkIHRvIGluZGl2aWR1YWwgaW5mZXJlbmNlIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvZHVjdGlvbiB2YXJpYW50LlxuICAgKiBDdXJyZW50bHkgb25seSBBbWF6b24gRUJTIGdwMiBzdG9yYWdlIHZvbHVtZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2pwL3JlbGVhc2Vub3Rlcy9ob3N0LWluc3RhbmNlLXN0b3JhZ2Utdm9sdW1lcy10YWJsZVxuICAgKiBAZGVmYXVsdCAtIDMgR0IgcGVyIGJpbGxpb24gcGFyYW1ldGVyIChNYXggNTEyIEdCKVxuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lU2l6ZT86IFNpemU7XG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCB2YWx1ZSwgdG8gZG93bmxvYWQgYW5kIGV4dHJhY3QgdGhlIG1vZGVsIHRoYXQgeW91IHdhbnQgdG8gaG9zdCBmcm9tIEFtYXpvbiBTM1xuICAgKiB0byB0aGUgaW5kaXZpZHVhbCBpbmZlcmVuY2UgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvZHVjdGlvbiB2YXJpYW50LlxuICAgKiBAZGVmYXVsdCAtIDYwIHNlY29uZHMsIHdoZW4gYHZvbHVtZVNpemVgIGxhcmdlciB0aGFuIDMwR0IgdGhlbiAxR0IgeCAxNSBzZWNvbmRzIChtYXggNjAgbWludXRlcylcbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsRGF0YURvd25sb2FkVGltZW91dD86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIHRpbWVvdXQgdmFsdWUsIGZvciB5b3VyIGluZmVyZW5jZSBjb250YWluZXIgdG8gcGFzcyBoZWFsdGggY2hlY2sgYnkgU2FnZU1ha2VyIEhvc3RpbmcuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NhZ2VtYWtlci9sYXRlc3QvZGcveW91ci1hbGdvcml0aG1zLWluZmVyZW5jZS1jb2RlLmh0bWwjeW91ci1hbGdvcml0aG1zLWluZmVyZW5jZS1hbGdvLXBpbmctcmVxdWVzdHNcbiAgICogQGRlZmF1bHQgLSA2MCBzZWNvbmRzLCB3aGVuIHNldCB0aGUgYG1vZGVsRGF0YURvd25sb2FkVGltZW91dGAgdGhlbiB1c2Ugc2FtZSB2YWx1ZSAobWF4IDYwIG1pbnV0ZXMpXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJTdGFydHVwSGVhbHRoQ2hlY2tUaW1lb3V0PzogRHVyYXRpb247XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VyUmVhbHRpbWVJbmZlcmVuY2VFbmRwb2ludCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBlbmRwb2ludC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnRBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludC5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5kcG9pbnROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnQ6IHNhZ2VtYWtlci5FbmRwb2ludDtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBUcmFuc2Zvcm1lcnNOZXVyb254U2FnZU1ha2VyUmVhbHRpbWVJbmZlcmVuY2VFbmRwb2ludFByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGltYWdlID1cbiAgICAgIHByb3BzLmltYWdlID8/XG4gICAgICBzYWdlbWFrZXIuQ29udGFpbmVySW1hZ2UuZnJvbUFzc2V0KFxuICAgICAgICBqb2luKF9fZGlybmFtZSwgXCIuLi9zY3JpcHRzL2luZmVyZW5jZS90cmFuc2Zvcm1lcnMtbmV1cm9ueFwiKSxcbiAgICAgICk7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID1cbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZSA/P1xuICAgICAgdGhpcy5zZWxlY3RJbnN0YW5jZVR5cGVCeVRwRGVncmVlKHByb3BzLm1vZGVsRGF0YS50cERlZ3JlZSk7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgc2FnZW1ha2VyLk1vZGVsKHRoaXMsIFwiTW9kZWxcIiwge1xuICAgICAgY29udGFpbmVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIE5FVVJPTl9SVF9OVU1fQ09SRVM6IHByb3BzLm1vZGVsRGF0YS50cERlZ3JlZS50b1N0cmluZygpLFxuICAgICAgICAgICAgVFNfREVGQVVMVF9SRVNQT05TRV9USU1FT1VUOiAoNjAgKiA2MCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFRTX0RFRkFVTFRfV09SS0VSU19QRVJfTU9ERUw6IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAgIGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyAvXG4gICAgICAgICAgICAgICAgcHJvcHMubW9kZWxEYXRhLnRwRGVncmVlLFxuICAgICAgICAgICAgKS50b1N0cmluZygpLFxuICAgICAgICAgICAgTU9ERUw6IHByb3BzLm1vZGVsRGF0YS5tb2RlbElkT3JQYXRoID8/IFwiLi9tb2RlbFwiLFxuICAgICAgICAgICAgQ09NUElMRURfQVJUSUZBQ1Q6XG4gICAgICAgICAgICAgIHByb3BzLm1vZGVsRGF0YS5jb21waWxlZEFydGlmYWN0UGF0aCA/PyBcIi4vY29tcGlsZWRcIixcbiAgICAgICAgICAgIFRQX0RFR1JFRTogcHJvcHMubW9kZWxEYXRhLnRwRGVncmVlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBOX1BPU0lUSU9OUzogcHJvcHMubW9kZWxEYXRhLm5Qb3NpdGlvbnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE9QVF9MRVZFTDogcHJvcHMubW9kZWxEYXRhLm9wdExldmVsLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBRVUFOVF9EVFlQRTogcHJvcHMubW9kZWxEYXRhLnF1YW50RHR5cGU/LnRvU3RyaW5nKCkgPz8gXCJcIixcbiAgICAgICAgICAgIC4uLnByb3BzLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGNvbnN0IGNmbk1vZGVsID0gbW9kZWwubm9kZS5maW5kQ2hpbGQoXCJNb2RlbFwiKSBhcyBDZm5Nb2RlbDtcbiAgICBjZm5Nb2RlbC5hZGRQcm9wZXJ0eU92ZXJyaWRlKFxuICAgICAgXCJQcmltYXJ5Q29udGFpbmVyLk1vZGVsRGF0YVNvdXJjZS5TM0RhdGFTb3VyY2UuUzNVcmlcIixcbiAgICAgIHByb3BzLm1vZGVsRGF0YS5idWNrZXQuczNVcmxGb3JPYmplY3QoXG4gICAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5tb2RlbERhdGEuY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4KSB8fFxuICAgICAgICAgIHByb3BzLm1vZGVsRGF0YS5jb21waWxlZEFydGlmYWN0UzNQcmVmaXguZW5kc1dpdGgoXCIvXCIpXG4gICAgICAgICAgPyBwcm9wcy5tb2RlbERhdGEuY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4XG4gICAgICAgICAgOiBgJHtwcm9wcy5tb2RlbERhdGEuY29tcGlsZWRBcnRpZmFjdFMzUHJlZml4fS9gLFxuICAgICAgKSxcbiAgICApO1xuICAgIGNmbk1vZGVsLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIlByaW1hcnlDb250YWluZXIuTW9kZWxEYXRhU291cmNlLlMzRGF0YVNvdXJjZS5TM0RhdGFUeXBlXCIsXG4gICAgICBcIlMzUHJlZml4XCIsXG4gICAgKTtcbiAgICBjZm5Nb2RlbC5hZGRQcm9wZXJ0eU92ZXJyaWRlKFxuICAgICAgXCJQcmltYXJ5Q29udGFpbmVyLk1vZGVsRGF0YVNvdXJjZS5TM0RhdGFTb3VyY2UuQ29tcHJlc3Npb25UeXBlXCIsXG4gICAgICBcIk5vbmVcIixcbiAgICApO1xuICAgIHByb3BzLm1vZGVsRGF0YS5idWNrZXQuZ3JhbnRSZWFkKG1vZGVsKTtcbiAgICBwcm9wcy5tb2RlbERhdGEuYmluZChtb2RlbCk7XG4gICAgY29uc3QgZW5kcG9pbnRDb25maWcgPSBuZXcgc2FnZW1ha2VyLkVuZHBvaW50Q29uZmlnKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRW5kcG9pbnRDb25maWdcIixcbiAgICAgIHtcbiAgICAgICAgaW5zdGFuY2VQcm9kdWN0aW9uVmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgIHZhcmlhbnROYW1lOiBcIlByaW1hcnlWYXJpYW50XCIsXG4gICAgICAgICAgICBpbnN0YW5jZVR5cGU6IHNhZ2VtYWtlci5JbnN0YW5jZVR5cGUub2YoaW5zdGFuY2VUeXBlLnRvU3RyaW5nKCkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG4gICAgY29uc3QgY2ZuRW5kcG9pbnRDb25maWcgPSBlbmRwb2ludENvbmZpZy5ub2RlLmZpbmRDaGlsZChcbiAgICAgIFwiRW5kcG9pbnRDb25maWdcIixcbiAgICApIGFzIENmbkVuZHBvaW50Q29uZmlnO1xuICAgIGNvbnN0IHZvbHVtZVNpemUgPVxuICAgICAgcHJvcHMudm9sdW1lU2l6ZSA/P1xuICAgICAgU2l6ZS5naWJpYnl0ZXMoXG4gICAgICAgIE1hdGguY2VpbChcbiAgICAgICAgICBwcm9wcy5tb2RlbERhdGEucGFyYW1ldGVycy50b0JpbGlvbigpICogMyA+IDUxMlxuICAgICAgICAgICAgPyA1MTJcbiAgICAgICAgICAgIDogcHJvcHMubW9kZWxEYXRhLnBhcmFtZXRlcnMudG9CaWxpb24oKSAqIDMsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIGNmbkVuZHBvaW50Q29uZmlnLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIlByb2R1Y3Rpb25WYXJpYW50cy4wLlZvbHVtZVNpemVJbkdCXCIsXG4gICAgICBpbnN0YW5jZVR5cGUudG9TdHJpbmcoKS5zdGFydHNXaXRoKFwibWwudHJuMVwiKVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHZvbHVtZVNpemUudG9HaWJpYnl0ZXMoKSxcbiAgICApO1xuICAgIGNvbnN0IG1vZGVsRGF0YURvd25sb2FkVGltZW91dCA9XG4gICAgICBwcm9wcy5tb2RlbERhdGFEb3dubG9hZFRpbWVvdXQgPz9cbiAgICAgIGluZmVyZW5jZU1vZGVsRGF0YURvd25sb2FkVGltZSh2b2x1bWVTaXplKTtcbiAgICBjZm5FbmRwb2ludENvbmZpZy5hZGRQcm9wZXJ0eU92ZXJyaWRlKFxuICAgICAgXCJQcm9kdWN0aW9uVmFyaWFudHMuMC5Nb2RlbERhdGFEb3dubG9hZFRpbWVvdXRJblNlY29uZHNcIixcbiAgICAgIG1vZGVsRGF0YURvd25sb2FkVGltZW91dC50b1NlY29uZHMoKSxcbiAgICApO1xuICAgIGNmbkVuZHBvaW50Q29uZmlnLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIlByb2R1Y3Rpb25WYXJpYW50cy4wLkNvbnRhaW5lclN0YXJ0dXBIZWFsdGhDaGVja1RpbWVvdXRJblNlY29uZHNcIixcbiAgICAgIChcbiAgICAgICAgcHJvcHMuY29udGFpbmVyU3RhcnR1cEhlYWx0aENoZWNrVGltZW91dCA/PyBtb2RlbERhdGFEb3dubG9hZFRpbWVvdXRcbiAgICAgICkudG9TZWNvbmRzKCksXG4gICAgKTtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBzYWdlbWFrZXIuRW5kcG9pbnQodGhpcywgXCJFbmRwb2ludFwiLCB7XG4gICAgICBlbmRwb2ludENvbmZpZyxcbiAgICB9KTtcbiAgICB0aGlzLmVuZHBvaW50QXJuID0gZW5kcG9pbnQuZW5kcG9pbnRBcm47XG4gICAgdGhpcy5lbmRwb2ludE5hbWUgPSBlbmRwb2ludC5lbmRwb2ludE5hbWU7XG4gICAgdGhpcy5lbmRwb2ludCA9IGVuZHBvaW50O1xuICB9XG4gIGdyYW50SW52b2tlKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZW5kcG9pbnQuZ3JhbnRJbnZva2UoZ3JhbnRlZSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEluc3RhbmNlVHlwZUJ5VHBEZWdyZWUodHBEZWdyZWU6IG51bWJlcikge1xuICAgIGNvbnN0IGluc3RhbmNlVHlwZXMgPSBbXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLklORjJfOFhMQVJHRSxcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl8yNFhMQVJHRSxcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl80OFhMQVJHRSxcbiAgICBdO1xuICAgIGZvciAoY29uc3QgaW5zdGFuY2VUeXBlIG9mIGluc3RhbmNlVHlwZXMpIHtcbiAgICAgIGlmICh0cERlZ3JlZSA8PSBpbnN0YW5jZVR5cGUuYWNjZWxlcmF0b3JDaGlwcy5uZXVyb254Q29yZXMpIHtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlVHlwZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUaGlzIG1vZGVsIGlzIHRvbyBsYXJnZSwgSSBjYW4gbm90IHN1cHBvcnQgdGhpcyBtb2RlbCBjdXJyZW50IHZlcnNpb24uXCIsXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmZlcmVuY2VNb2RlbERhdGFEb3dubG9hZFRpbWUodm9sdW1lU2l6ZTogU2l6ZSkge1xuICBjb25zdCBzZWNvbmRzID0gdm9sdW1lU2l6ZS50b0dpYmlieXRlcygpICogMTU7XG4gIHJldHVybiBEdXJhdGlvbi5zZWNvbmRzKHNlY29uZHMgPCAzNjAwID8gc2Vjb25kcyA6IDM2MDApO1xufVxuIl19
package/package.json CHANGED
@@ -91,7 +91,7 @@
91
91
  ]
92
92
  }
93
93
  },
94
- "version": "0.0.7",
94
+ "version": "0.0.9",
95
95
  "jest": {
96
96
  "coverageProvider": "v8",
97
97
  "testMatch": [