aws-cdk-neuronx-patterns 0.2.0 → 0.2.1

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
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@aws-cdk/aws-sagemaker-alpha": "2.240.0-alpha.0",
11
- "@cdklabs/deploy-time-build": "^0.0.6",
11
+ "@cdklabs/deploy-time-build": "^0.1.0",
12
12
  "aws-cdk-lib": "^2.240.0",
13
13
  "constructs": "^10.5.1"
14
14
  },
@@ -8555,7 +8555,7 @@
8555
8555
  "stability": "stable"
8556
8556
  },
8557
8557
  "homepage": "https://github.com/WinterYukky/aws-cdk-neuronx-patterns.git",
8558
- "jsiiVersion": "5.9.29 (build f415c53)",
8558
+ "jsiiVersion": "5.9.31 (build 550e607)",
8559
8559
  "keywords": [
8560
8560
  "cdk",
8561
8561
  "neuronx"
@@ -9340,7 +9340,7 @@
9340
9340
  "kind": "interface",
9341
9341
  "locationInModule": {
9342
9342
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9343
- "line": 30
9343
+ "line": 42
9344
9344
  },
9345
9345
  "name": "INeuronxInstanceType",
9346
9346
  "properties": [
@@ -9352,7 +9352,7 @@
9352
9352
  "immutable": true,
9353
9353
  "locationInModule": {
9354
9354
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9355
- "line": 35
9355
+ "line": 47
9356
9356
  },
9357
9357
  "name": "acceleratorChips",
9358
9358
  "type": {
@@ -9367,7 +9367,7 @@
9367
9367
  "immutable": true,
9368
9368
  "locationInModule": {
9369
9369
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9370
- "line": 32
9370
+ "line": 44
9371
9371
  },
9372
9372
  "name": "instanceType",
9373
9373
  "type": {
@@ -9382,7 +9382,7 @@
9382
9382
  "immutable": true,
9383
9383
  "locationInModule": {
9384
9384
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9385
- "line": 34
9385
+ "line": 46
9386
9386
  },
9387
9387
  "name": "memory",
9388
9388
  "type": {
@@ -9397,7 +9397,7 @@
9397
9397
  "immutable": true,
9398
9398
  "locationInModule": {
9399
9399
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9400
- "line": 31
9400
+ "line": 43
9401
9401
  },
9402
9402
  "name": "supportedTensorParallelism",
9403
9403
  "type": {
@@ -9417,7 +9417,7 @@
9417
9417
  "immutable": true,
9418
9418
  "locationInModule": {
9419
9419
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
9420
- "line": 33
9420
+ "line": 45
9421
9421
  },
9422
9422
  "name": "vCpu",
9423
9423
  "type": {
@@ -11391,7 +11391,7 @@
11391
11391
  "kind": "class",
11392
11392
  "locationInModule": {
11393
11393
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11394
- "line": 105
11394
+ "line": 137
11395
11395
  },
11396
11396
  "name": "NeuronxInstanceType",
11397
11397
  "properties": [
@@ -11404,7 +11404,7 @@
11404
11404
  "immutable": true,
11405
11405
  "locationInModule": {
11406
11406
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11407
- "line": 135
11407
+ "line": 167
11408
11408
  },
11409
11409
  "name": "INF2_24XLARGE",
11410
11410
  "static": true,
@@ -11421,7 +11421,7 @@
11421
11421
  "immutable": true,
11422
11422
  "locationInModule": {
11423
11423
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11424
- "line": 148
11424
+ "line": 180
11425
11425
  },
11426
11426
  "name": "INF2_48XLARGE",
11427
11427
  "static": true,
@@ -11438,7 +11438,7 @@
11438
11438
  "immutable": true,
11439
11439
  "locationInModule": {
11440
11440
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11441
- "line": 122
11441
+ "line": 154
11442
11442
  },
11443
11443
  "name": "INF2_8XLARGE",
11444
11444
  "static": true,
@@ -11455,7 +11455,7 @@
11455
11455
  "immutable": true,
11456
11456
  "locationInModule": {
11457
11457
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11458
- "line": 109
11458
+ "line": 141
11459
11459
  },
11460
11460
  "name": "INF2_XLARGE",
11461
11461
  "static": true,
@@ -11472,7 +11472,7 @@
11472
11472
  "immutable": true,
11473
11473
  "locationInModule": {
11474
11474
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11475
- "line": 161
11475
+ "line": 193
11476
11476
  },
11477
11477
  "name": "TRN1_2XLARGE",
11478
11478
  "static": true,
@@ -11489,13 +11489,64 @@
11489
11489
  "immutable": true,
11490
11490
  "locationInModule": {
11491
11491
  "filename": "src/base/neuronx/neuronx-instance-type.ts",
11492
- "line": 174
11492
+ "line": 206
11493
11493
  },
11494
11494
  "name": "TRN1_32XLARGE",
11495
11495
  "static": true,
11496
11496
  "type": {
11497
11497
  "fqn": "aws-cdk-neuronx-patterns.INeuronxInstanceType"
11498
11498
  }
11499
+ },
11500
+ {
11501
+ "const": true,
11502
+ "docs": {
11503
+ "stability": "stable",
11504
+ "summary": "trn2.3xlarge."
11505
+ },
11506
+ "immutable": true,
11507
+ "locationInModule": {
11508
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
11509
+ "line": 219
11510
+ },
11511
+ "name": "TRN2_3XLARGE",
11512
+ "static": true,
11513
+ "type": {
11514
+ "fqn": "aws-cdk-neuronx-patterns.INeuronxInstanceType"
11515
+ }
11516
+ },
11517
+ {
11518
+ "const": true,
11519
+ "docs": {
11520
+ "stability": "stable",
11521
+ "summary": "trn2.48xlarge."
11522
+ },
11523
+ "immutable": true,
11524
+ "locationInModule": {
11525
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
11526
+ "line": 232
11527
+ },
11528
+ "name": "TRN2_48XLARGE",
11529
+ "static": true,
11530
+ "type": {
11531
+ "fqn": "aws-cdk-neuronx-patterns.INeuronxInstanceType"
11532
+ }
11533
+ },
11534
+ {
11535
+ "const": true,
11536
+ "docs": {
11537
+ "stability": "stable",
11538
+ "summary": "trn2u.48xlarge."
11539
+ },
11540
+ "immutable": true,
11541
+ "locationInModule": {
11542
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
11543
+ "line": 245
11544
+ },
11545
+ "name": "TRN2U_48XLARGE",
11546
+ "static": true,
11547
+ "type": {
11548
+ "fqn": "aws-cdk-neuronx-patterns.INeuronxInstanceType"
11549
+ }
11499
11550
  }
11500
11551
  ],
11501
11552
  "symbolId": "src/base/neuronx/neuronx-instance-type:NeuronxInstanceType"
@@ -13285,6 +13336,87 @@
13285
13336
  ],
13286
13337
  "symbolId": "src/base/neuronx/neuronx-instance-type:Trainium1Chips"
13287
13338
  },
13339
+ "aws-cdk-neuronx-patterns.Trainium2Chips": {
13340
+ "assembly": "aws-cdk-neuronx-patterns",
13341
+ "docs": {
13342
+ "stability": "stable"
13343
+ },
13344
+ "fqn": "aws-cdk-neuronx-patterns.Trainium2Chips",
13345
+ "initializer": {
13346
+ "docs": {
13347
+ "stability": "stable"
13348
+ },
13349
+ "locationInModule": {
13350
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
13351
+ "line": 34
13352
+ },
13353
+ "parameters": [
13354
+ {
13355
+ "name": "chips",
13356
+ "type": {
13357
+ "primitive": "number"
13358
+ }
13359
+ }
13360
+ ]
13361
+ },
13362
+ "interfaces": [
13363
+ "aws-cdk-neuronx-patterns.IAcceleratorChips"
13364
+ ],
13365
+ "kind": "class",
13366
+ "locationInModule": {
13367
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
13368
+ "line": 31
13369
+ },
13370
+ "name": "Trainium2Chips",
13371
+ "properties": [
13372
+ {
13373
+ "docs": {
13374
+ "stability": "stable"
13375
+ },
13376
+ "immutable": true,
13377
+ "locationInModule": {
13378
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
13379
+ "line": 33
13380
+ },
13381
+ "name": "acceleratorMemory",
13382
+ "overrides": "aws-cdk-neuronx-patterns.IAcceleratorChips",
13383
+ "type": {
13384
+ "fqn": "aws-cdk-lib.Size"
13385
+ }
13386
+ },
13387
+ {
13388
+ "docs": {
13389
+ "stability": "stable"
13390
+ },
13391
+ "immutable": true,
13392
+ "locationInModule": {
13393
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
13394
+ "line": 34
13395
+ },
13396
+ "name": "chips",
13397
+ "overrides": "aws-cdk-neuronx-patterns.IAcceleratorChips",
13398
+ "type": {
13399
+ "primitive": "number"
13400
+ }
13401
+ },
13402
+ {
13403
+ "docs": {
13404
+ "stability": "stable"
13405
+ },
13406
+ "immutable": true,
13407
+ "locationInModule": {
13408
+ "filename": "src/base/neuronx/neuronx-instance-type.ts",
13409
+ "line": 32
13410
+ },
13411
+ "name": "neuronxCores",
13412
+ "overrides": "aws-cdk-neuronx-patterns.IAcceleratorChips",
13413
+ "type": {
13414
+ "primitive": "number"
13415
+ }
13416
+ }
13417
+ ],
13418
+ "symbolId": "src/base/neuronx/neuronx-instance-type:Trainium2Chips"
13419
+ },
13288
13420
  "aws-cdk-neuronx-patterns.UvicornLogLevel": {
13289
13421
  "assembly": "aws-cdk-neuronx-patterns",
13290
13422
  "docs": {
@@ -17089,6 +17221,6 @@
17089
17221
  "symbolId": "src/base/server-engine/vllm-engine/vllm-engine-argments:VllmTask"
17090
17222
  }
17091
17223
  },
17092
- "version": "0.2.0",
17093
- "fingerprint": "y3L7pFC63WvgygoXeexNy9PC78TL0KjiDkaYJ1KI0l8="
17224
+ "version": "0.2.1",
17225
+ "fingerprint": "rmWh4Yidj/K2VX7stt6PQSQkVTyMLNqwdBOhr/rmLZQ="
17094
17226
  }
package/API.md CHANGED
@@ -11788,6 +11788,9 @@ new NeuronxInstanceType()
11788
11788
  | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.INF2_XLARGE">INF2_XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | inf2.xlarge. |
11789
11789
  | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN1_2XLARGE">TRN1_2XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | trn1.2xlarge. |
11790
11790
  | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN1_32XLARGE">TRN1_32XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | trn1.32xlarge. |
11791
+ | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2_3XLARGE">TRN2_3XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | trn2.3xlarge. |
11792
+ | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2_48XLARGE">TRN2_48XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | trn2.48xlarge. |
11793
+ | <code><a href="#aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2U_48XLARGE">TRN2U_48XLARGE</a></code> | <code><a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a></code> | trn2u.48xlarge. |
11791
11794
 
11792
11795
  ---
11793
11796
 
@@ -11863,6 +11866,42 @@ trn1.32xlarge.
11863
11866
 
11864
11867
  ---
11865
11868
 
11869
+ ##### `TRN2_3XLARGE`<sup>Required</sup> <a name="TRN2_3XLARGE" id="aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2_3XLARGE"></a>
11870
+
11871
+ ```typescript
11872
+ public readonly TRN2_3XLARGE: INeuronxInstanceType;
11873
+ ```
11874
+
11875
+ - *Type:* <a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a>
11876
+
11877
+ trn2.3xlarge.
11878
+
11879
+ ---
11880
+
11881
+ ##### `TRN2_48XLARGE`<sup>Required</sup> <a name="TRN2_48XLARGE" id="aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2_48XLARGE"></a>
11882
+
11883
+ ```typescript
11884
+ public readonly TRN2_48XLARGE: INeuronxInstanceType;
11885
+ ```
11886
+
11887
+ - *Type:* <a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a>
11888
+
11889
+ trn2.48xlarge.
11890
+
11891
+ ---
11892
+
11893
+ ##### `TRN2U_48XLARGE`<sup>Required</sup> <a name="TRN2U_48XLARGE" id="aws-cdk-neuronx-patterns.NeuronxInstanceType.property.TRN2U_48XLARGE"></a>
11894
+
11895
+ ```typescript
11896
+ public readonly TRN2U_48XLARGE: INeuronxInstanceType;
11897
+ ```
11898
+
11899
+ - *Type:* <a href="#aws-cdk-neuronx-patterns.INeuronxInstanceType">INeuronxInstanceType</a>
11900
+
11901
+ trn2u.48xlarge.
11902
+
11903
+ ---
11904
+
11866
11905
  ### Parameters <a name="Parameters" id="aws-cdk-neuronx-patterns.Parameters"></a>
11867
11906
 
11868
11907
  Represents the amount of parameters.
@@ -12679,6 +12718,73 @@ public readonly neuronxCores: number;
12679
12718
  ---
12680
12719
 
12681
12720
 
12721
+ ### Trainium2Chips <a name="Trainium2Chips" id="aws-cdk-neuronx-patterns.Trainium2Chips"></a>
12722
+
12723
+ - *Implements:* <a href="#aws-cdk-neuronx-patterns.IAcceleratorChips">IAcceleratorChips</a>
12724
+
12725
+ #### Initializers <a name="Initializers" id="aws-cdk-neuronx-patterns.Trainium2Chips.Initializer"></a>
12726
+
12727
+ ```typescript
12728
+ import { Trainium2Chips } from 'aws-cdk-neuronx-patterns'
12729
+
12730
+ new Trainium2Chips(chips: number)
12731
+ ```
12732
+
12733
+ | **Name** | **Type** | **Description** |
12734
+ | --- | --- | --- |
12735
+ | <code><a href="#aws-cdk-neuronx-patterns.Trainium2Chips.Initializer.parameter.chips">chips</a></code> | <code>number</code> | *No description.* |
12736
+
12737
+ ---
12738
+
12739
+ ##### `chips`<sup>Required</sup> <a name="chips" id="aws-cdk-neuronx-patterns.Trainium2Chips.Initializer.parameter.chips"></a>
12740
+
12741
+ - *Type:* number
12742
+
12743
+ ---
12744
+
12745
+
12746
+
12747
+ #### Properties <a name="Properties" id="Properties"></a>
12748
+
12749
+ | **Name** | **Type** | **Description** |
12750
+ | --- | --- | --- |
12751
+ | <code><a href="#aws-cdk-neuronx-patterns.Trainium2Chips.property.acceleratorMemory">acceleratorMemory</a></code> | <code>aws-cdk-lib.Size</code> | *No description.* |
12752
+ | <code><a href="#aws-cdk-neuronx-patterns.Trainium2Chips.property.chips">chips</a></code> | <code>number</code> | *No description.* |
12753
+ | <code><a href="#aws-cdk-neuronx-patterns.Trainium2Chips.property.neuronxCores">neuronxCores</a></code> | <code>number</code> | *No description.* |
12754
+
12755
+ ---
12756
+
12757
+ ##### `acceleratorMemory`<sup>Required</sup> <a name="acceleratorMemory" id="aws-cdk-neuronx-patterns.Trainium2Chips.property.acceleratorMemory"></a>
12758
+
12759
+ ```typescript
12760
+ public readonly acceleratorMemory: Size;
12761
+ ```
12762
+
12763
+ - *Type:* aws-cdk-lib.Size
12764
+
12765
+ ---
12766
+
12767
+ ##### `chips`<sup>Required</sup> <a name="chips" id="aws-cdk-neuronx-patterns.Trainium2Chips.property.chips"></a>
12768
+
12769
+ ```typescript
12770
+ public readonly chips: number;
12771
+ ```
12772
+
12773
+ - *Type:* number
12774
+
12775
+ ---
12776
+
12777
+ ##### `neuronxCores`<sup>Required</sup> <a name="neuronxCores" id="aws-cdk-neuronx-patterns.Trainium2Chips.property.neuronxCores"></a>
12778
+
12779
+ ```typescript
12780
+ public readonly neuronxCores: number;
12781
+ ```
12782
+
12783
+ - *Type:* number
12784
+
12785
+ ---
12786
+
12787
+
12682
12788
  ### VllmEngineArgumentsParser <a name="VllmEngineArgumentsParser" id="aws-cdk-neuronx-patterns.VllmEngineArgumentsParser"></a>
12683
12789
 
12684
12790
  #### Initializers <a name="Initializers" id="aws-cdk-neuronx-patterns.VllmEngineArgumentsParser.Initializer"></a>
@@ -13117,7 +13223,7 @@ The neuronx SDK version.
13117
13223
 
13118
13224
  ### IAcceleratorChips <a name="IAcceleratorChips" id="aws-cdk-neuronx-patterns.IAcceleratorChips"></a>
13119
13225
 
13120
- - *Implemented By:* <a href="#aws-cdk-neuronx-patterns.Inferentia2Chips">Inferentia2Chips</a>, <a href="#aws-cdk-neuronx-patterns.Trainium1Chips">Trainium1Chips</a>, <a href="#aws-cdk-neuronx-patterns.IAcceleratorChips">IAcceleratorChips</a>
13226
+ - *Implemented By:* <a href="#aws-cdk-neuronx-patterns.Inferentia2Chips">Inferentia2Chips</a>, <a href="#aws-cdk-neuronx-patterns.Trainium1Chips">Trainium1Chips</a>, <a href="#aws-cdk-neuronx-patterns.Trainium2Chips">Trainium2Chips</a>, <a href="#aws-cdk-neuronx-patterns.IAcceleratorChips">IAcceleratorChips</a>
13121
13227
 
13122
13228
 
13123
13229
  #### Properties <a name="Properties" id="Properties"></a>
@@ -44,5 +44,5 @@ class NeuronxBatchComputeEnvironment extends constructs_1.Construct {
44
44
  }
45
45
  exports.NeuronxBatchComputeEnvironment = NeuronxBatchComputeEnvironment;
46
46
  _a = JSII_RTTI_SYMBOL_1;
47
- NeuronxBatchComputeEnvironment[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatchComputeEnvironment", version: "0.2.0" };
47
+ NeuronxBatchComputeEnvironment[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatchComputeEnvironment", version: "0.2.1" };
48
48
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1iYXRjaC1jb21wdXRlLWVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2UvYXdzLWJhdGNoL25ldXJvbngtYmF0Y2gtY29tcHV0ZS1lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtDQUErQztBQUMvQyxpREFBcUQ7QUFFckQsMkNBQXVDO0FBQ3ZDLHdDQUF5RDtBQVF6RDs7R0FFRztBQUNILE1BQWEsOEJBQ1gsU0FBUSxzQkFBUztJQVVqQixJQUFJLHFCQUFxQjtRQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQTBDO1FBRTFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSTtZQUM3QjtnQkFDRSxLQUFLLEVBQUUsSUFBSSxxQ0FBMkIsQ0FDcEMsSUFBSSxFQUNKLDZCQUE2QixDQUM5QjtnQkFDRCxTQUFTLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFVBQVU7YUFDaEQ7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FDdkQsSUFBSSxFQUNKLFVBQVUsRUFDVjtZQUNFLEdBQUcsS0FBSztZQUNSLE1BQU07U0FDUCxDQUNGLENBQUM7UUFDRixJQUNFLEtBQUssQ0FBQyxjQUFjO1lBQ3BCLEtBQUssQ0FBQyxjQUFjLFlBQVksd0JBQWMsRUFDOUMsQ0FBQztZQUVDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQ3BCLENBQUMsbUJBQW1CLENBQ25CLHlDQUF5QyxFQUN6QyxLQUFLLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUN6QyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1FBQ2pFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1FBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQWEsQ0FBQztJQUNsRCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsTUFBcUI7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQTdESCx3RUE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5LCBSZXNvdXJjZUVudmlyb25tZW50LCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgYmF0Y2ggZnJvbSBcImF3cy1jZGstbGliL2F3cy1iYXRjaFwiO1xuaW1wb3J0IHsgTGF1bmNoVGVtcGxhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgSVJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE5ldXJvbk9wdGltaXplZE1hY2hpbmVJbWFnZSB9IGZyb20gXCIuLi9uZXVyb254XCI7XG5cbi8qKlxuICogUHJvcHMgb2YgTmV1cm9ueEJhdGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldXJvbnhCYXRjaENvbXB1dGVFbnZpcm9ubWVudFByb3BzXG4gIGV4dGVuZHMgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudFByb3BzIHt9XG5cbi8qKlxuICogTmV1cm9ueCBiYXRjaCBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXVyb254QmF0Y2hDb21wdXRlRW52aXJvbm1lbnRcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBiYXRjaC5JQ29tcHV0ZUVudmlyb25tZW50XG57XG4gIHJlYWRvbmx5IGNvbXB1dGVFbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29tcHV0ZUVudmlyb25tZW50QXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlcnZpY2VSb2xlPzogSVJvbGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHN0YWNrOiBTdGFjaztcbiAgcmVhZG9ubHkgZW52OiBSZXNvdXJjZUVudmlyb25tZW50O1xuICByZWFkb25seSBpbnN0YW5jZVJvbGU6IElSb2xlO1xuICBnZXQgY29tcHV0ZUVudmlyb25tZW50UmVmKCk6IGJhdGNoLkNvbXB1dGVFbnZpcm9ubWVudFJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHsgY29tcHV0ZUVudmlyb25tZW50QXJuOiB0aGlzLmNvbXB1dGVFbnZpcm9ubWVudEFybiB9O1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IGJhdGNoLk1hbmFnZWRFYzJFY3NDb21wdXRlRW52aXJvbm1lbnQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogTmV1cm9ueEJhdGNoQ29tcHV0ZUVudmlyb25tZW50UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBpbWFnZXMgPSBwcm9wcy5pbWFnZXMgPz8gW1xuICAgICAge1xuICAgICAgICBpbWFnZTogbmV3IE5ldXJvbk9wdGltaXplZE1hY2hpbmVJbWFnZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiTmV1cm9uT3B0aW1pemVkTWFjaGluZUltYWdlXCIsXG4gICAgICAgICksXG4gICAgICAgIGltYWdlVHlwZTogYmF0Y2guRWNzTWFjaGluZUltYWdlVHlwZS5FQ1NfQUwyMDIzLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBpbWFnZXMsXG4gICAgICB9LFxuICAgICk7XG4gICAgaWYgKFxuICAgICAgcHJvcHMubGF1bmNoVGVtcGxhdGUgJiZcbiAgICAgIHByb3BzLmxhdW5jaFRlbXBsYXRlIGluc3RhbmNlb2YgTGF1bmNoVGVtcGxhdGVcbiAgICApIHtcbiAgICAgIChcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBiYXRjaC5DZm5Db21wdXRlRW52aXJvbm1lbnRcbiAgICAgICkuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgICAgXCJDb21wdXRlUmVzb3VyY2VzLkxhdW5jaFRlbXBsYXRlLlZlcnNpb25cIixcbiAgICAgICAgcHJvcHMubGF1bmNoVGVtcGxhdGUubGF0ZXN0VmVyc2lvbk51bWJlcixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jb21wdXRlRW52aXJvbm1lbnRBcm4gPSB0aGlzLnJlc291cmNlLmNvbXB1dGVFbnZpcm9ubWVudEFybjtcbiAgICB0aGlzLmNvbXB1dGVFbnZpcm9ubWVudE5hbWUgPSB0aGlzLnJlc291cmNlLmNvbXB1dGVFbnZpcm9ubWVudE5hbWU7XG4gICAgdGhpcy5lbmFibGVkID0gdGhpcy5yZXNvdXJjZS5lbmFibGVkO1xuICAgIHRoaXMuZW52ID0gdGhpcy5yZXNvdXJjZS5lbnY7XG4gICAgdGhpcy5zZXJ2aWNlUm9sZSA9IHRoaXMucmVzb3VyY2Uuc2VydmljZVJvbGU7XG4gICAgdGhpcy5zdGFjayA9IHRoaXMucmVzb3VyY2Uuc3RhY2s7XG4gICAgdGhpcy5pbnN0YW5jZVJvbGUgPSB0aGlzLnJlc291cmNlLmluc3RhbmNlUm9sZSE7XG4gIH1cbiAgYXBwbHlSZW1vdmFsUG9saWN5KHBvbGljeTogUmVtb3ZhbFBvbGljeSk6IHZvaWQge1xuICAgIHRoaXMucmVzb3VyY2UuYXBwbHlSZW1vdmFsUG9saWN5KHBvbGljeSk7XG4gIH1cbn1cbiJdfQ==
@@ -58,5 +58,5 @@ class NeuronxBatchEcsJobDefinition extends constructs_1.Construct {
58
58
  }
59
59
  exports.NeuronxBatchEcsJobDefinition = NeuronxBatchEcsJobDefinition;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- NeuronxBatchEcsJobDefinition[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatchEcsJobDefinition", version: "0.2.0" };
61
+ NeuronxBatchEcsJobDefinition[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatchEcsJobDefinition", version: "0.2.1" };
62
62
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1iYXRjaC1lY3Mtam9iLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFzZS9hd3MtYmF0Y2gvbmV1cm9ueC1iYXRjaC1lY3Mtam9iLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFNQSwrQ0FBK0M7QUFFL0MsMkNBQXVDO0FBV3ZDOztHQUVHO0FBQ0gsTUFBYSw0QkFDWCxTQUFRLHNCQUFTO0lBWWpCLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBd0M7UUFFeEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLGVBQWUsR0FDbkIsS0FBSyxDQUFDLGVBQWU7WUFDckIsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELGVBQWUsQ0FBQyxVQUFVLENBQ3hCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNaLE1BQU0sRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsS0FBSztTQUN6RCxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQixRQUFRLEVBQUUsY0FBYyxLQUFLLEVBQUU7WUFDL0IsYUFBYSxFQUFFLGNBQWMsS0FBSyxFQUFFO1lBQ3BDLFdBQVcsRUFBRTtnQkFDWCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtnQkFDM0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUs7YUFDN0I7U0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzNELEdBQUcsS0FBSztZQUNSLFNBQVMsRUFBRSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FDNUMsSUFBSSxFQUNKLHFCQUFxQixFQUNyQjtnQkFDRSxHQUFHLEtBQUs7Z0JBQ1IsZUFBZTthQUNoQixDQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUNELGtCQUFrQixDQUFDLE1BQXFCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELGdCQUFnQixDQUFDLFFBQTZCO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLFFBQW9CLEVBQUUsS0FBc0I7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7O0FBdEVILG9FQXVFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBSZW1vdmFsUG9saWN5LFxuICBSZXNvdXJjZUVudmlyb25tZW50LFxuICBTdGFjayxcbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBiYXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWJhdGNoXCI7XG5pbXBvcnQgeyBJR3JhbnRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuLi9uZXVyb254XCI7XG5cbi8qKlxuICogUHJvcHMgb2YgTmV1cm9ueEJhdGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldXJvbnhCYXRjaEVjc0pvYkRlZmluaXRpb25Qcm9wc1xuICBleHRlbmRzIGJhdGNoLkVjc0VjMkNvbnRhaW5lckRlZmluaXRpb25Qcm9wcywgYmF0Y2guSm9iRGVmaW5pdGlvblByb3BzIHtcbiAgcmVhZG9ubHkgbmV1cm9ueEluc3RhbmNlVHlwZTogSU5ldXJvbnhJbnN0YW5jZVR5cGU7XG59XG5cbi8qKlxuICogTmV1cm9ueCBiYXRjaCBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXVyb254QmF0Y2hFY3NKb2JEZWZpbml0aW9uXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgYmF0Y2guSUpvYkRlZmluaXRpb25cbntcbiAgcmVhZG9ubHkgam9iRGVmaW5pdGlvbkFybjogc3RyaW5nO1xuICByZWFkb25seSBqb2JEZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcmV0cnlTdHJhdGVnaWVzOiBiYXRjaC5SZXRyeVN0cmF0ZWd5W107XG4gIHJlYWRvbmx5IHNjaGVkdWxpbmdQcmlvcml0eT86IG51bWJlcjtcbiAgcmVhZG9ubHkgdGltZW91dD86IER1cmF0aW9uO1xuICByZWFkb25seSBzdGFjazogU3RhY2s7XG4gIHJlYWRvbmx5IGVudjogUmVzb3VyY2VFbnZpcm9ubWVudDtcbiAgZ2V0IGpvYkRlZmluaXRpb25SZWYoKTogYmF0Y2guSm9iRGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIHsgam9iRGVmaW5pdGlvbkFybjogdGhpcy5qb2JEZWZpbml0aW9uQXJuIH07XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogYmF0Y2guRWNzSm9iRGVmaW5pdGlvbjtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBOZXVyb254QmF0Y2hFY3NKb2JEZWZpbml0aW9uUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgbGludXhQYXJhbWV0ZXJzID1cbiAgICAgIHByb3BzLmxpbnV4UGFyYW1ldGVycyA/P1xuICAgICAgbmV3IGJhdGNoLkxpbnV4UGFyYW1ldGVycyh0aGlzLCBcIkxpbnV4UGFyYW1ldGVyc1wiKTtcbiAgICBsaW51eFBhcmFtZXRlcnMuYWRkRGV2aWNlcyhcbiAgICAgIC4uLkFycmF5LmZyb20oe1xuICAgICAgICBsZW5ndGg6IHByb3BzLm5ldXJvbnhJbnN0YW5jZVR5cGUuYWNjZWxlcmF0b3JDaGlwcy5jaGlwcyxcbiAgICAgIH0pLm1hcCgoXywgaW5kZXgpID0+ICh7XG4gICAgICAgIGhvc3RQYXRoOiBgL2Rldi9uZXVyb24ke2luZGV4fWAsXG4gICAgICAgIGNvbnRhaW5lclBhdGg6IGAvZGV2L25ldXJvbiR7aW5kZXh9YCxcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICBiYXRjaC5EZXZpY2VQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgYmF0Y2guRGV2aWNlUGVybWlzc2lvbi5XUklURSxcbiAgICAgICAgXSxcbiAgICAgIH0pKSxcbiAgICApO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgYmF0Y2guRWNzSm9iRGVmaW5pdGlvbih0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udGFpbmVyOiBuZXcgYmF0Y2guRWNzRWMyQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb250YWluZXJEZWZpbml0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBsaW51eFBhcmFtZXRlcnMsXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMuam9iRGVmaW5pdGlvbkFybiA9IHRoaXMucmVzb3VyY2Uuam9iRGVmaW5pdGlvbkFybjtcbiAgICB0aGlzLmpvYkRlZmluaXRpb25OYW1lID0gdGhpcy5yZXNvdXJjZS5qb2JEZWZpbml0aW9uTmFtZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLnJlc291cmNlLnBhcmFtZXRlcnM7XG4gICAgdGhpcy5yZXRyeUF0dGVtcHRzID0gdGhpcy5yZXNvdXJjZS5yZXRyeUF0dGVtcHRzO1xuICAgIHRoaXMucmV0cnlTdHJhdGVnaWVzID0gdGhpcy5yZXNvdXJjZS5yZXRyeVN0cmF0ZWdpZXM7XG4gICAgdGhpcy5zY2hlZHVsaW5nUHJpb3JpdHkgPSB0aGlzLnJlc291cmNlLnNjaGVkdWxpbmdQcmlvcml0eTtcbiAgICB0aGlzLnRpbWVvdXQgPSB0aGlzLnJlc291cmNlLnRpbWVvdXQ7XG4gICAgdGhpcy5zdGFjayA9IHRoaXMucmVzb3VyY2Uuc3RhY2s7XG4gICAgdGhpcy5lbnYgPSB0aGlzLnJlc291cmNlLmVudjtcbiAgfVxuICBhcHBseVJlbW92YWxQb2xpY3kocG9saWN5OiBSZW1vdmFsUG9saWN5KTogdm9pZCB7XG4gICAgdGhpcy5yZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocG9saWN5KTtcbiAgfVxuICBhZGRSZXRyeVN0cmF0ZWd5KHN0cmF0ZWd5OiBiYXRjaC5SZXRyeVN0cmF0ZWd5KTogdm9pZCB7XG4gICAgdGhpcy5yZXNvdXJjZS5hZGRSZXRyeVN0cmF0ZWd5KHN0cmF0ZWd5KTtcbiAgfVxuICAvKipcbiAgICogR3JhbnRzIHRoZSBgYmF0Y2g6c3VibWl0Sm9iYCBwZXJtaXNzaW9uIHRvIHRoZSBpZGVudGl0eSBvbiBib3RoIHRoaXMgam9iIGRlZmluaXRpb24gYW5kIHRoZSBgcXVldWVgXG4gICAqL1xuICBncmFudFN1Ym1pdEpvYihpZGVudGl0eTogSUdyYW50YWJsZSwgcXVldWU6IGJhdGNoLklKb2JRdWV1ZSk6IHZvaWQge1xuICAgIHRoaXMucmVzb3VyY2UuZ3JhbnRTdWJtaXRKb2IoaWRlbnRpdHksIHF1ZXVlKTtcbiAgfVxufVxuIl19
@@ -58,5 +58,5 @@ class NeuronxBatch extends constructs_1.Construct {
58
58
  }
59
59
  exports.NeuronxBatch = NeuronxBatch;
60
60
  _a = JSII_RTTI_SYMBOL_1;
61
- NeuronxBatch[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatch", version: "0.2.0" };
61
+ NeuronxBatch[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxBatch", version: "0.2.1" };
62
62
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1iYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXNlL2F3cy1iYXRjaC9uZXVyb254LWJhdGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsK0NBQStDO0FBQy9DLDJDQUEyQztBQUMzQywyQ0FBdUM7QUFDdkMsd0NBQStFO0FBb0MvRTs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBR3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BFLFlBQVksRUFBRTtnQkFDWjtvQkFDRSxVQUFVLEVBQUUsV0FBVztvQkFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDbEU7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FDakUsSUFBSSxFQUNKLG9CQUFvQixFQUNwQjtZQUNFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1lBQ3ZELHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsTUFBTSxFQUFFO2dCQUNOO29CQUNFLEtBQUssRUFBRSxJQUFJLHFDQUEyQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUM7b0JBQzNELFNBQVMsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBVTtpQkFDaEQ7YUFDRjtZQUNELGNBQWM7WUFDZCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FDRixDQUFDO1FBRUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUM5QixDQUFDLG1CQUFtQixDQUNuQix5Q0FBeUMsRUFDekMsY0FBYyxDQUFDLG1CQUFtQixDQUNuQyxDQUFDO1FBQ0YsTUFBTSxlQUFlLEdBQ25CLEtBQUssQ0FBQyxlQUFlO1lBQ3JCLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNyRCxlQUFlLENBQUMsVUFBVSxDQUN4QixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLEtBQUs7U0FDekQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEIsUUFBUSxFQUFFLGNBQWMsS0FBSyxFQUFFO1lBQy9CLGFBQWEsRUFBRSxjQUFjLEtBQUssRUFBRTtZQUNwQyxXQUFXLEVBQUU7Z0JBQ1gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUk7Z0JBQzNCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNyRSxTQUFTLEVBQUUsSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQzVDLElBQUksRUFDSixxQkFBcUIsRUFDckI7Z0JBQ0UsR0FBRyxLQUFLO2dCQUNSLGVBQWU7YUFDaEIsQ0FDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBOURILG9DQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGJhdGNoIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYmF0Y2hcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElOZXVyb254SW5zdGFuY2VUeXBlLCBOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2UgfSBmcm9tIFwiLi4vbmV1cm9ueFwiO1xuXG4vKipcbiAqIFByb3BzIG9mIE5ldXJvbnhCYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXVyb254QmF0Y2hQcm9wc1xuICBleHRlbmRzIGJhdGNoLkVjc0VjMkNvbnRhaW5lckRlZmluaXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgaW4gd2hpY2ggdGhpcyB3aWxsIGxhdW5jaCB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgb2Ygd29ya2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV1cm9ueEluc3RhbmNlVHlwZTogSU5ldXJvbnhJbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCB2b2x1bWUgb2Ygd29ya2VyIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCAtIE4gYmlsaW9uIHBhcmFtZXRlcnMgKiA1R2lCIEVCU1xuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lU2l6ZTogU2l6ZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSBzcG90IGluc3RhbmNlcy5cbiAgICogU3BvdCBpbnN0YW5jZXMgYXJlIGxlc3MgZXhwZW5zaXZlIEVDMiBpbnN0YW5jZXMgdGhhdCBjYW4gYmUgcmVjbGFpbWVkIGJ5IEVDMiBhdCBhbnkgdGltZTtcbiAgICogeW91ciBqb2Igd2lsbCBiZSBnaXZlbiB0d28gbWludXRlcyBvZiBub3RpY2UgYmVmb3JlIHJlY2xhbWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3BvdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVlBDIFN1Ym5ldHMgdGhpcyBDb21wdXRlIEVudmlyb25tZW50IHdpbGwgbGF1bmNoIGluc3RhbmNlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXcgc3VibmV0cyB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xufVxuXG4vKipcbiAqIE5ldXJvbnggYmF0Y2ggY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgTmV1cm9ueEJhdGNoIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgY29tcHV0ZUVudmlyb25tZW50OiBiYXRjaC5NYW5hZ2VkRWMyRWNzQ29tcHV0ZUVudmlyb25tZW50O1xuICByZWFkb25seSBqb2JEZWZpbml0aW9uOiBiYXRjaC5FY3NKb2JEZWZpbml0aW9uO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV1cm9ueEJhdGNoUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbmV3IGVjMi5MYXVuY2hUZW1wbGF0ZSh0aGlzLCBcIkxhdW5jaFRlbXBsYXRlXCIsIHtcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICB2b2x1bWU6IGVjMi5CbG9ja0RldmljZVZvbHVtZS5lYnMocHJvcHMudm9sdW1lU2l6ZS50b0dpYmlieXRlcygpKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5jb21wdXRlRW52aXJvbm1lbnQgPSBuZXcgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIkNvbXB1dGVFbnZpcm9ubWVudFwiLFxuICAgICAge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICAgICAgaW5zdGFuY2VUeXBlczogW3Byb3BzLm5ldXJvbnhJbnN0YW5jZVR5cGUuaW5zdGFuY2VUeXBlXSxcbiAgICAgICAgdXNlT3B0aW1hbEluc3RhbmNlQ2xhc3NlczogZmFsc2UsXG4gICAgICAgIGltYWdlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGltYWdlOiBuZXcgTmV1cm9uT3B0aW1pemVkTWFjaGluZUltYWdlKHRoaXMsIFwiTWFjaGluSW1hZ2VcIiksXG4gICAgICAgICAgICBpbWFnZVR5cGU6IGJhdGNoLkVjc01hY2hpbmVJbWFnZVR5cGUuRUNTX0FMMjAyMyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBsYXVuY2hUZW1wbGF0ZSxcbiAgICAgICAgc3BvdDogcHJvcHMuc3BvdCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICAoXG4gICAgICB0aGlzLmNvbXB1dGVFbnZpcm9ubWVudC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBiYXRjaC5DZm5Db21wdXRlRW52aXJvbm1lbnRcbiAgICApLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIkNvbXB1dGVSZXNvdXJjZXMuTGF1bmNoVGVtcGxhdGUuVmVyc2lvblwiLFxuICAgICAgbGF1bmNoVGVtcGxhdGUubGF0ZXN0VmVyc2lvbk51bWJlcixcbiAgICApO1xuICAgIGNvbnN0IGxpbnV4UGFyYW1ldGVycyA9XG4gICAgICBwcm9wcy5saW51eFBhcmFtZXRlcnMgPz9cbiAgICAgIG5ldyBiYXRjaC5MaW51eFBhcmFtZXRlcnModGhpcywgXCJMaW51eFBhcmFtZXRlcnNcIik7XG4gICAgbGludXhQYXJhbWV0ZXJzLmFkZERldmljZXMoXG4gICAgICAuLi5BcnJheS5mcm9tKHtcbiAgICAgICAgbGVuZ3RoOiBwcm9wcy5uZXVyb254SW5zdGFuY2VUeXBlLmFjY2VsZXJhdG9yQ2hpcHMuY2hpcHMsXG4gICAgICB9KS5tYXAoKF8sIGluZGV4KSA9PiAoe1xuICAgICAgICBob3N0UGF0aDogYC9kZXYvbmV1cm9uJHtpbmRleH1gLFxuICAgICAgICBjb250YWluZXJQYXRoOiBgL2Rldi9uZXVyb24ke2luZGV4fWAsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgYmF0Y2guRGV2aWNlUGVybWlzc2lvbi5SRUFELFxuICAgICAgICAgIGJhdGNoLkRldmljZVBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgIF0sXG4gICAgICB9KSksXG4gICAgKTtcbiAgICB0aGlzLmpvYkRlZmluaXRpb24gPSBuZXcgYmF0Y2guRWNzSm9iRGVmaW5pdGlvbih0aGlzLCBcIkpvYkRlZmluaXRpb25cIiwge1xuICAgICAgY29udGFpbmVyOiBuZXcgYmF0Y2guRWNzRWMyQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb250YWluZXJEZWZpbml0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICBsaW51eFBhcmFtZXRlcnMsXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -63,7 +63,7 @@ class NeuronxTaskDefinition extends ecs.Ec2TaskDefinition {
63
63
  }
64
64
  exports.NeuronxTaskDefinition = NeuronxTaskDefinition;
65
65
  _a = JSII_RTTI_SYMBOL_1;
66
- NeuronxTaskDefinition[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxTaskDefinition", version: "0.2.0" };
66
+ NeuronxTaskDefinition[_a] = { fqn: "aws-cdk-neuronx-patterns.NeuronxTaskDefinition", version: "0.2.1" };
67
67
  class ApplicationLoadBalancedNeuronxService extends aws_ecs_patterns_1.ApplicationLoadBalancedEc2Service {
68
68
  constructor(scope, id, props) {
69
69
  const neuronxTaskDefinition = props.taskDefinition;
@@ -141,5 +141,5 @@ mount-s3 ${neuronxTaskDefinition.compiledModel.bucket.bucketName} /mnt/${neuronx
141
141
  }
142
142
  exports.ApplicationLoadBalancedNeuronxService = ApplicationLoadBalancedNeuronxService;
143
143
  _b = JSII_RTTI_SYMBOL_1;
144
- ApplicationLoadBalancedNeuronxService[_b] = { fqn: "aws-cdk-neuronx-patterns.ApplicationLoadBalancedNeuronxService", version: "0.2.0" };
144
+ ApplicationLoadBalancedNeuronxService[_b] = { fqn: "aws-cdk-neuronx-patterns.ApplicationLoadBalancedNeuronxService", version: "0.2.1" };
145
145
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbG9hZC1iYWxhbmNlZC1uZXVyb254LXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFzZS9hd3MtZWNzLXBhdHRlcm5zL2FwcGxpY2F0aW9uLWxvYWQtYmFsYW5jZWQtbmV1cm9ueC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLGlFQUlxQztBQUNyQyxpREFBcUQ7QUFDckQsMkNBQTJDO0FBQzNDLG1FQUdzQztBQUV0Qyx3Q0FJb0I7QUE2QnBCLE1BQWEscUJBQ1gsU0FBUSxHQUFHLENBQUMsaUJBQWlCO0lBUTdCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsTUFBTSxtQkFBbUIsR0FDdkIsS0FBSyxDQUFDLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUM7UUFDM0UsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxDQUFDO1FBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDakMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUN2RSxDQUFDO1FBQ0YsTUFBTSxvQkFBb0IsR0FDeEIsZ0JBQWdCLElBQUksQ0FBQztZQUNuQixDQUFDLENBQUM7Z0JBQ0UsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FDOUIscUJBQXFCLGdCQUFnQixFQUFFLENBQ3hDO2FBQ0Y7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixvQkFBb0IsRUFBRTtnQkFDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUM7Z0JBQ3JDLEdBQUcsb0JBQW9CO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gs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QUc7d0JBQ25DLFNBQVMsRUFBRSxJQUFJO3FCQUNoQixDQUFDO2lCQUNIO2FBQ0Y7WUFDRCxRQUFRO1lBQ1IsZUFBZTtZQUNmLFdBQVcsRUFDVCxxQkFBcUIsQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDO2dCQUMxQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxTQUFTO1NBQ2hCLENBQUMsQ0FBQztRQUNILGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLGNBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUM1QixDQUFDO1FBQ0YscUJBQXFCLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDeEUsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDOztBQS9GSCxzRkFnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQXV0b1NjYWxpbmdHcm91cCxcbiAgQmxvY2tEZXZpY2VWb2x1bWUsXG4gIEVic0RldmljZVZvbHVtZVR5cGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXV0b3NjYWxpbmdcIjtcbmltcG9ydCB7IFBvcnQsIFVzZXJEYXRhIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGVjcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRFYzJTZXJ2aWNlLFxuICBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEVjMlNlcnZpY2VQcm9wcyxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3MtcGF0dGVybnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBJTmV1cm9ueEluc3RhbmNlVHlwZSxcbiAgTmV1cm9uT3B0aW1pemVkTWFjaGluZUltYWdlLFxuICBQeXRvcmNoVHJhaW5pbmdOZXVyb254SW1hZ2UsXG59IGZyb20gXCIuLi9uZXVyb254XCI7XG5pbXBvcnQgeyBOZXVyb254Q29tcGlsZWRNb2RlbCB9IGZyb20gXCIuLi9uZXVyb254LWNvbXBpbGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmV1cm9ueFRhc2tEZWZpbml0aW9uUHJvcHNCYXNlXG4gIGV4dGVuZHMgZWNzLkVjMlRhc2tEZWZpbml0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgb2YgY29tcGlsZSB3b3JrZXIgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBuZXVyb254SW5zdGFuY2VUeXBlPzogSU5ldXJvbnhJbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRlbnNvciBwYXJhbGxlbCBzaXplLlxuICAgKiBAZGVmYXVsdCAtIDFcbiAgICovXG4gIHJlYWRvbmx5IHRlbnNvclBhcmFsbGVsU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZXVyb254VGFza0RlZmluaXRpb25Qcm9wcyBleHRlbmRzIE5ldXJvbnhUYXNrRGVmaW5pdGlvblByb3BzQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgbW9kZWwgdG8gYmUgY29tcGlsZWQuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlZE1vZGVsOiBOZXVyb254Q29tcGlsZWRNb2RlbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTmV1cm9ueFRhc2tEZWZpbml0aW9uIGV4dGVuZHMgZWNzLklFYzJUYXNrRGVmaW5pdGlvbiB7XG4gIHJlYWRvbmx5IG5ldXJvbnhJbnN0YW5jZVR5cGU6IElOZXVyb254SW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB0ZW5zb3JQYXJhbGxlbFNpemU6IG51bWJlcjtcbiAgcmVhZG9ubHkgdGFza3NQZXJJbnN0YW5jZTogbnVtYmVyO1xuICByZWFkb25seSBjb21waWxlZE1vZGVsOiBOZXVyb254Q29tcGlsZWRNb2RlbDtcbn1cbmV4cG9ydCBjbGFzcyBOZXVyb254VGFza0RlZmluaXRpb25cbiAgZXh0ZW5kcyBlY3MuRWMyVGFza0RlZmluaXRpb25cbiAgaW1wbGVtZW50cyBJTmV1cm9ueFRhc2tEZWZpbml0aW9uXG57XG4gIHJlYWRvbmx5IG5ldXJvbnhJbnN0YW5jZVR5cGU6IElOZXVyb254SW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB0ZW5zb3JQYXJhbGxlbFNpemU6IG51bWJlcjtcbiAgcmVhZG9ubHkgdGFza3NQZXJJbnN0YW5jZTogbnVtYmVyO1xuICByZWFkb25seSBjb21waWxlZE1vZGVsOiBOZXVyb254Q29tcGlsZWRNb2RlbDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpbnV4UGFyYW1ldGVyczogZWNzLkxpbnV4UGFyYW1ldGVycztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldXJvbnhUYXNrRGVmaW5pdGlvblByb3BzKSB7XG4gICAgY29uc3QgbmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgICBwcm9wcy5uZXVyb254SW5zdGFuY2VUeXBlID8/IHByb3BzLmNvbXBpbGVkTW9kZWwuY29tcGlsZVRpbWVJbnN0YW5jZVR5cGU7XG4gICAgY29uc3QgdGVuc29yUGFyYWxsZWxTaXplID0gcHJvcHMudGVuc29yUGFyYWxsZWxTaXplID8/IDE7XG4gICAgY29uc3QgdGFza3NQZXJJbnN0YW5jZSA9IE1hdGguZmxvb3IoXG4gICAgICBuZXVyb254SW5zdGFuY2VUeXBlLmFjY2VsZXJhdG9yQ2hpcHMubmV1cm9ueENvcmVzIC8gdGVuc29yUGFyYWxsZWxTaXplLFxuICAgICk7XG4gICAgY29uc3QgcGxhY2VtZW50Q29uc3RyYWludHMgPVxuICAgICAgdGFza3NQZXJJbnN0YW5jZSA+PSAyXG4gICAgICAgID8gW1xuICAgICAgICAgICAgZWNzLlBsYWNlbWVudENvbnN0cmFpbnQubWVtYmVyT2YoXG4gICAgICAgICAgICAgIGBydW5uaW5nVGFza3NDb3VudDwke3Rhc2tzUGVySW5zdGFuY2V9YCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBwbGFjZW1lbnRDb25zdHJhaW50czogW1xuICAgICAgICAuLi4ocHJvcHMucGxhY2VtZW50Q29uc3RyYWludHMgPz8gW10pLFxuICAgICAgICAuLi5wbGFjZW1lbnRDb25zdHJhaW50cyxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5saW51eFBhcmFtZXRlcnMgPSBuZXcgZWNzLkxpbnV4UGFyYW1ldGVycyh0aGlzLCBcIkxpbnV4UGFyYW1ldGVyc1wiKTtcbiAgICB0aGlzLmxpbnV4UGFyYW1ldGVycy5hZGREZXZpY2VzKFxuICAgICAgLi4uQXJyYXkuZnJvbSh7XG4gICAgICAgIGxlbmd0aDogbmV1cm9ueEluc3RhbmNlVHlwZT8uYWNjZWxlcmF0b3JDaGlwcy5jaGlwcyA/PyAxLFxuICAgICAgfSkubWFwPGVjcy5EZXZpY2U+KChfLCBpbmRleCkgPT4gKHtcbiAgICAgICAgaG9zdFBhdGg6IGAvZGV2L25ldXJvbiR7aW5kZXh9YCxcbiAgICAgICAgY29udGFpbmVyUGF0aDogYC9kZXYvbmV1cm9uJHtpbmRleH1gLFxuICAgICAgICBwZXJtaXNzaW9uczogW2Vjcy5EZXZpY2VQZXJtaXNzaW9uLlJFQUQsIGVjcy5EZXZpY2VQZXJtaXNzaW9uLldSSVRFXSxcbiAgICAgIH0pKSxcbiAgICApO1xuICAgIGlmICh0aGlzLmV4ZWN1dGlvblJvbGUpIHtcbiAgICAgIHByb3BzLmNvbXBpbGVkTW9kZWwuYnVja2V0LmdyYW50UmVhZCh0aGlzLmV4ZWN1dGlvblJvbGUpO1xuICAgIH1cbiAgICBwcm9wcy5jb21waWxlZE1vZGVsLmJ1Y2tldC5ncmFudFJlYWQodGhpcy50YXNrUm9sZSk7XG4gICAgdGhpcy5jb21waWxlZE1vZGVsID0gcHJvcHMuY29tcGlsZWRNb2RlbDtcbiAgICB0aGlzLm5ldXJvbnhJbnN0YW5jZVR5cGUgPSBuZXVyb254SW5zdGFuY2VUeXBlO1xuICAgIHRoaXMudGVuc29yUGFyYWxsZWxTaXplID0gdGVuc29yUGFyYWxsZWxTaXplO1xuICAgIHRoaXMudGFza3NQZXJJbnN0YW5jZSA9IHRhc2tzUGVySW5zdGFuY2U7XG4gIH1cblxuICBhZGRDb250YWluZXJXaXRoRGVmYXVsdChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBzdXBlci5hZGRDb250YWluZXIoaWQsIHtcbiAgICAgIGxvZ2dpbmc6IGVjcy5Mb2dEcml2ZXIuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogaWQsXG4gICAgICB9KSxcbiAgICAgIGxpbnV4UGFyYW1ldGVyczogdGhpcy5saW51eFBhcmFtZXRlcnMsXG4gICAgICBtZW1vcnlSZXNlcnZhdGlvbk1pQjogTWF0aC5jZWlsKFxuICAgICAgICAodGhpcy5uZXVyb254SW5zdGFuY2VUeXBlLm1lbW9yeS50b01lYmlieXRlcygpICogMC44KSAvXG4gICAgICAgICAgdGhpcy50YXNrc1Blckluc3RhbmNlLFxuICAgICAgKSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICAgIGNvbnRhaW5lci5hZGRNb3VudFBvaW50cyh7XG4gICAgICBzb3VyY2VWb2x1bWU6IFwibW9kZWxcIixcbiAgICAgIGNvbnRhaW5lclBhdGg6IFwiL29wdC9tbC9tb2RlbFwiLFxuICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiBjb250YWluZXI7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZE5ldXJvbnhTZXJ2aWNlUHJvcHMgZXh0ZW5kcyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEVjMlNlcnZpY2VQcm9wcyB7fVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkTmV1cm9ueFNlcnZpY2UgZXh0ZW5kcyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlZEVjMlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkTmV1cm9ueFNlcnZpY2VQcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgbmV1cm9ueFRhc2tEZWZpbml0aW9uID0gcHJvcHMudGFza0RlZmluaXRpb247XG4gICAgaWYgKFxuICAgICAgIW5ldXJvbnhUYXNrRGVmaW5pdGlvbiB8fFxuICAgICAgIShuZXVyb254VGFza0RlZmluaXRpb24gaW5zdGFuY2VvZiBOZXVyb254VGFza0RlZmluaXRpb24pXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0YXNrRGVmaW5pdGlvbiBtdXN0IGV4dGVuZCBOZXVyb254VGFza0RlZmluaXRpb25cIik7XG4gICAgfVxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDpcbiAgICAgICAgcHJvcHMuaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZCA/PyBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2x1c3RlciA9IHRoaXMuZ2V0RGVmYXVsdENsdXN0ZXIodGhpcywgcHJvcHMudnBjKTtcblxuICAgIC8vIGluc3RhbGwgYW5kIG1vdW50IG1vdW50cG9pbnQgZm9yIHMzXG4gICAgY29uc3QgdXNlckRhdGEgPSBVc2VyRGF0YS5mb3JMaW51eCgpO1xuICAgIHVzZXJEYXRhLmFkZENvbW1hbmRzKGBcbiMhL2Jpbi9iYXNoIC1lXG5cbiMgSW5zdGFsbCBNb3VudHBvaW50XG5NUF9SUE09JChta3RlbXAgLS1zdWZmaXg9LnJwbSlcbmN1cmwgaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL21vdW50cG9pbnQtczMtcmVsZWFzZS9sYXRlc3QveDg2XzY0L21vdW50LXMzLnJwbSA+ICRNUF9SUE1cblxuIyBjbG91ZC1pbml0IGluc3RhbGxzIGNvbmZsaWN0IHdpdGggU1NNIGFnZW50OiBodHRwczovL2dpdGh1Yi5jb20vYW1hem9ubGludXgvYW1hem9uLWxpbnV4LTIwMjMvaXNzdWVzLzM5N1xuYXR0ZW1wdD0wXG5tYXhfYXR0ZW1wdHM9NVxudW50aWwgZG5mIGluc3RhbGwgLXkgJE1QX1JQTTsgZG9cbiAgICBhdHRlbXB0PSQoKGF0dGVtcHQgKyAxKSlcbiAgICBpZiBbICRhdHRlbXB0IC1nZSAkbWF4X2F0dGVtcHRzIF07IHRoZW5cbiAgICAgICAgZWNobyBcIkZhaWxlZCB0byBpbnN0YWxsIG1vdW50LXMzIGFmdGVyICRtYXhfYXR0ZW1wdHMgYXR0ZW1wdHMuIEV4aXRpbmcuXCJcbiAgICAgICAgZXhpdCAxXG4gICAgZmlcbiAgICBlY2hvIFwiZG5mIGluc3RhbGwgbW91bnQtczMgZmFpbGVkIChhdHRlbXB0ICRhdHRlbXB0LyRtYXhfYXR0ZW1wdHMpLCByZXRyeWluZyBpbiAzIHNlY29uZHMuLi5cIlxuICAgIHNsZWVwIDNcbmRvbmVcblxucm0gJE1QX1JQTVxuXG4jIFNldHVwIHRoZSBmc3RhYiBmaWxlIGFuZCBjcmVhdGUgdGhlIG1vdW50XG5ta2RpciAtLXBhcmVudHMgL21udC8ke25ldXJvbnhUYXNrRGVmaW5pdGlvbi5jb21waWxlZE1vZGVsLmJ1Y2tldC5idWNrZXROYW1lfVxubW91bnQtczMgJHtuZXVyb254VGFza0RlZmluaXRpb24uY29tcGlsZWRNb2RlbC5idWNrZXQuYnVja2V0TmFtZX0gL21udC8ke25ldXJvbnhUYXNrRGVmaW5pdGlvbi5jb21waWxlZE1vZGVsLmJ1Y2tldC5idWNrZXROYW1lfSAtLWFsbG93LW90aGVyIC0tZmlsZS1tb2RlPTY0NCAtLWRpci1tb2RlPTc1NWApO1xuXG4gICAgbmV1cm9ueFRhc2tEZWZpbml0aW9uLmFkZFZvbHVtZSh7XG4gICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICBob3N0OiB7XG4gICAgICAgIHNvdXJjZVBhdGg6IGAvbW50LyR7bmV1cm9ueFRhc2tEZWZpbml0aW9uLmNvbXBpbGVkTW9kZWwuYnVja2V0LmJ1Y2tldE5hbWV9YCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2b2x1bWVTaXplID0gTWF0aC5jZWlsKFxuICAgICAgUHl0b3JjaFRyYWluaW5nTmV1cm9ueEltYWdlLnNpemUudG9HaWJpYnl0ZXMoKSArXG4gICAgICAgIE5ldXJvbk9wdGltaXplZE1hY2hpbmVJbWFnZS5zaXplLnRvR2liaWJ5dGVzKCksXG4gICAgKTtcbiAgICBjb25zdCBkZXNpcmVkQ2FwYWNpdHkgPSBNYXRoLmNlaWwoXG4gICAgICAocHJvcHMuZGVzaXJlZENvdW50ID8/IDEpIC8gbmV1cm9ueFRhc2tEZWZpbml0aW9uLnRhc2tzUGVySW5zdGFuY2UsXG4gICAgKTtcbiAgICBjb25zdCBhdXRvU2NhbGluZ0dyb3VwID0gbmV3IEF1dG9TY2FsaW5nR3JvdXAodGhpcywgXCJBdXRvU2NhbGluZ0dyb3VwXCIsIHtcbiAgICAgIHZwYzogY2x1c3Rlci52cGMsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldXJvbnhUYXNrRGVmaW5pdGlvbi5uZXVyb254SW5zdGFuY2VUeXBlLmluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZTogbmV3IE5ldXJvbk9wdGltaXplZE1hY2hpbmVJbWFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2VcIixcbiAgICAgICksXG4gICAgICBibG9ja0RldmljZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRldmljZU5hbWU6IFwiL2Rldi94dmRhXCIsXG4gICAgICAgICAgdm9sdW1lOiBCbG9ja0RldmljZVZvbHVtZS5lYnModm9sdW1lU2l6ZSwge1xuICAgICAgICAgICAgdm9sdW1lVHlwZTogRWJzRGV2aWNlVm9sdW1lVHlwZS5HUDMsXG4gICAgICAgICAgICBlbmNyeXB0ZWQ6IHRydWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckRhdGEsXG4gICAgICBkZXNpcmVkQ2FwYWNpdHksXG4gICAgICBtYXhDYXBhY2l0eTpcbiAgICAgICAgbmV1cm9ueFRhc2tEZWZpbml0aW9uLnRhc2tzUGVySW5zdGFuY2UgPT09IDFcbiAgICAgICAgICA/IGRlc2lyZWRDYXBhY2l0eSArIDFcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgICBhdXRvU2NhbGluZ0dyb3VwLmNvbm5lY3Rpb25zLmFsbG93RnJvbShcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyLFxuICAgICAgUG9ydC50Y3BSYW5nZSgzMjc2OCwgNjA5OTkpLFxuICAgICk7XG4gICAgbmV1cm9ueFRhc2tEZWZpbml0aW9uLmNvbXBpbGVkTW9kZWwuYnVja2V0LmdyYW50UmVhZChhdXRvU2NhbGluZ0dyb3VwKTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBlY3MuQXNnQ2FwYWNpdHlQcm92aWRlcih0aGlzLCBcIkFzZ0NhcGFjaXR5UHJvdmlkZXJcIiwge1xuICAgICAgYXV0b1NjYWxpbmdHcm91cCxcbiAgICB9KTtcbiAgICBjbHVzdGVyLmFkZEFzZ0NhcGFjaXR5UHJvdmlkZXIocHJvdmlkZXIpO1xuICB9XG59XG4iXX0=
@@ -55,6 +55,46 @@ describe("When the attention head is divisible", () => {
55
55
  },
56
56
  ]);
57
57
  });
58
+ test("Trn2", () => {
59
+ const tensorParallel = (0, calculator_1.calcTensorParallel)(neuronx_instance_type_1.NeuronxInstanceType.TRN2_48XLARGE, aws_cdk_lib_1.Size.gibibytes(24), 64);
60
+ expect(tensorParallel).toEqual([
61
+ {
62
+ tp: 1,
63
+ workers: 64,
64
+ usage: 1,
65
+ },
66
+ {
67
+ tp: 2,
68
+ workers: 32,
69
+ usage: 1,
70
+ },
71
+ {
72
+ tp: 4,
73
+ workers: 16,
74
+ usage: 1,
75
+ },
76
+ {
77
+ tp: 8,
78
+ workers: 8,
79
+ usage: 1,
80
+ },
81
+ {
82
+ tp: 16,
83
+ workers: 4,
84
+ usage: 1,
85
+ },
86
+ {
87
+ tp: 32,
88
+ workers: 2,
89
+ usage: 1,
90
+ },
91
+ {
92
+ tp: 64,
93
+ workers: 1,
94
+ usage: 1,
95
+ },
96
+ ]);
97
+ });
58
98
  });
59
99
  describe("The one with low usage is shown last", () => {
60
100
  test("Inf2", () => {
@@ -112,6 +152,26 @@ describe("The one with low usage is shown last", () => {
112
152
  },
113
153
  ]);
114
154
  });
155
+ test("Trn2", () => {
156
+ const tensorParallel = (0, calculator_1.calcTensorParallel)(neuronx_instance_type_1.NeuronxInstanceType.TRN2_3XLARGE, aws_cdk_lib_1.Size.gibibytes(24), 32);
157
+ expect(tensorParallel).toEqual([
158
+ {
159
+ tp: 1,
160
+ workers: 4,
161
+ usage: 1,
162
+ },
163
+ {
164
+ tp: 2,
165
+ workers: 2,
166
+ usage: 1,
167
+ },
168
+ {
169
+ tp: 4,
170
+ workers: 1,
171
+ usage: 1,
172
+ },
173
+ ]);
174
+ });
115
175
  });
116
176
  describe("When the memory footprint is calculated", () => {
117
177
  test("Million size models are calculatable", () => {
@@ -123,4 +183,4 @@ describe("When the memory footprint is calculated", () => {
123
183
  expect(memoryFootprint.toGibibytes()).toEqual(42);
124
184
  });
125
185
  });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2UvbmV1cm9ueC9jYWxjdWxhdG9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBbUM7QUFDbkMsNkNBQXVFO0FBQ3ZFLG1DQUF1QztBQUN2QyxtRUFBOEQ7QUFFOUQsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNoQixNQUFNLGNBQWMsR0FBRyxJQUFBLCtCQUFrQixFQUN2QywyQ0FBbUIsQ0FBQyxhQUFhLEVBQ2pDLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNsQixFQUFFLENBQ0gsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0I7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUM7YUFDVDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxFQUFFO2dCQUNYLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxFQUFFLENBQUM7YUFDVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxjQUFjLEdBQUcsSUFBQSwrQkFBa0IsRUFDdkMsMkNBQW1CLENBQUMsYUFBYSxFQUNqQyxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDbEIsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzdCO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxFQUFFO2dCQUNYLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxFQUFFLENBQUM7YUFDVDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDO2FBQ1Q7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0gsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNoQixNQUFNLGNBQWMsR0FBRyxJQUFBLCtCQUFrQixFQUN2QywyQ0FBbUIsQ0FBQyxhQUFhLEVBQ2pDLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNsQixFQUFFLENBQ0gsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0I7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUM7YUFDVDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxFQUFFLGtCQUFrQjthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxjQUFjLEdBQUcsSUFBQSwrQkFBa0IsRUFDdkMsMkNBQW1CLENBQUMsYUFBYSxFQUNqQyxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDbEIsRUFBRSxDQUNILENBQUM7UUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzdCO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxFQUFFO2dCQUNYLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxFQUFFLENBQUM7YUFDVDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsRUFBRTtnQkFDTixPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFBLGdDQUFtQixFQUN6QyxHQUFHLEVBQ0gsRUFBRSxFQUNGLG9CQUFZLENBQUMsWUFBWSxFQUN6QixHQUFHLEVBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFBLGdDQUFtQixFQUN6QyxJQUFJLEVBQ0osRUFBRSxFQUNGLG9CQUFZLENBQUMsWUFBWSxFQUN6QixJQUFJLEVBQ0osQ0FBQyxDQUNGLENBQUM7UUFDRixNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaXplIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBjYWxjTWVtb3J5Rm9vdHByaW50LCBjYWxjVGVuc29yUGFyYWxsZWwgfSBmcm9tIFwiLi9jYWxjdWxhdG9yXCI7XG5pbXBvcnQgeyBEYXRhVHlwZUJpdHMgfSBmcm9tIFwiLi9tb2RlbFwiO1xuaW1wb3J0IHsgTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuL25ldXJvbngtaW5zdGFuY2UtdHlwZVwiO1xuXG5kZXNjcmliZShcIldoZW4gdGhlIGF0dGVudGlvbiBoZWFkIGlzIGRpdmlzaWJsZVwiLCAoKSA9PiB7XG4gIHRlc3QoXCJJbmYyXCIsICgpID0+IHtcbiAgICBjb25zdCB0ZW5zb3JQYXJhbGxlbCA9IGNhbGNUZW5zb3JQYXJhbGxlbChcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl80OFhMQVJHRSxcbiAgICAgIFNpemUuZ2liaWJ5dGVzKDE2KSxcbiAgICAgIDMyLFxuICAgICk7XG4gICAgZXhwZWN0KHRlbnNvclBhcmFsbGVsKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgdHA6IDEsXG4gICAgICAgIHdvcmtlcnM6IDI0LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAyLFxuICAgICAgICB3b3JrZXJzOiAxMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogNCxcbiAgICAgICAgd29ya2VyczogNixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogOCxcbiAgICAgICAgd29ya2VyczogMyxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbiAgdGVzdChcIlRybjFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRlbnNvclBhcmFsbGVsID0gY2FsY1RlbnNvclBhcmFsbGVsKFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5UUk4xXzMyWExBUkdFLFxuICAgICAgU2l6ZS5naWJpYnl0ZXMoMTYpLFxuICAgICAgNDgsXG4gICAgKTtcbiAgICBleHBlY3QodGVuc29yUGFyYWxsZWwpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICB0cDogMSxcbiAgICAgICAgd29ya2VyczogMzIsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDIsXG4gICAgICAgIHdvcmtlcnM6IDE2LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiA4LFxuICAgICAgICB3b3JrZXJzOiA0LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAxNixcbiAgICAgICAgd29ya2VyczogMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbn0pO1xuZGVzY3JpYmUoXCJUaGUgb25lIHdpdGggbG93IHVzYWdlIGlzIHNob3duIGxhc3RcIiwgKCkgPT4ge1xuICB0ZXN0KFwiSW5mMlwiLCAoKSA9PiB7XG4gICAgY29uc3QgdGVuc29yUGFyYWxsZWwgPSBjYWxjVGVuc29yUGFyYWxsZWwoXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLklORjJfMjRYTEFSR0UsXG4gICAgICBTaXplLmdpYmlieXRlcygxNiksXG4gICAgICAzMixcbiAgICApO1xuICAgIGV4cGVjdCh0ZW5zb3JQYXJhbGxlbCkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIHRwOiAxLFxuICAgICAgICB3b3JrZXJzOiAxMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMixcbiAgICAgICAgd29ya2VyczogNixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogNCxcbiAgICAgICAgd29ya2VyczogMyxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogOCxcbiAgICAgICAgd29ya2VyczogMSxcbiAgICAgICAgdXNhZ2U6IDAuNjY2NjY2NjY2NjY2NjY2NixcbiAgICAgIH0sXG4gICAgXSk7XG4gIH0pO1xuICB0ZXN0KFwiVHJuMVwiLCAoKSA9PiB7XG4gICAgY29uc3QgdGVuc29yUGFyYWxsZWwgPSBjYWxjVGVuc29yUGFyYWxsZWwoXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLlRSTjFfMzJYTEFSR0UsXG4gICAgICBTaXplLmdpYmlieXRlcygxNiksXG4gICAgICAzMixcbiAgICApO1xuICAgIGV4cGVjdCh0ZW5zb3JQYXJhbGxlbCkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIHRwOiAxLFxuICAgICAgICB3b3JrZXJzOiAzMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMixcbiAgICAgICAgd29ya2VyczogMTYsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDgsXG4gICAgICAgIHdvcmtlcnM6IDQsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDE2LFxuICAgICAgICB3b3JrZXJzOiAyLFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAzMixcbiAgICAgICAgd29ya2VyczogMSxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIldoZW4gdGhlIG1lbW9yeSBmb290cHJpbnQgaXMgY2FsY3VsYXRlZFwiLCAoKSA9PiB7XG4gIHRlc3QoXCJNaWxsaW9uIHNpemUgbW9kZWxzIGFyZSBjYWxjdWxhdGFibGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG1lbW9yeUZvb3RwcmludCA9IGNhbGNNZW1vcnlGb290cHJpbnQoXG4gICAgICA1NzYsXG4gICAgICAzMCxcbiAgICAgIERhdGFUeXBlQml0cy5CRjE2X09SX0ZQMTYsXG4gICAgICAxMjgsXG4gICAgICAxLFxuICAgICk7XG4gICAgZXhwZWN0KG1lbW9yeUZvb3RwcmludC50b0dpYmlieXRlcygpKS50b0VxdWFsKDEpO1xuICB9KTtcbiAgdGVzdChcIkJpbGxpb24gc2l6ZSBtb2RlbHMgYXJlIGNhbGN1bGF0YWJsZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgbWVtb3J5Rm9vdHByaW50ID0gY2FsY01lbW9yeUZvb3RwcmludChcbiAgICAgIDYxNDQsXG4gICAgICA0OCxcbiAgICAgIERhdGFUeXBlQml0cy5CRjE2X09SX0ZQMTYsXG4gICAgICAxMDI0LFxuICAgICAgMSxcbiAgICApO1xuICAgIGV4cGVjdChtZW1vcnlGb290cHJpbnQudG9HaWJpYnl0ZXMoKSkudG9FcXVhbCg0Mik7XG4gIH0pO1xufSk7XG4iXX0=
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2UvbmV1cm9ueC9jYWxjdWxhdG9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2Q0FBbUM7QUFDbkMsNkNBQXVFO0FBQ3ZFLG1DQUF1QztBQUN2QyxtRUFBOEQ7QUFFOUQsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtRQUNoQixNQUFNLGNBQWMsR0FBRyxJQUFBLCtCQUFrQixFQUN2QywyQ0FBbUIsQ0FBQyxhQUFhLEVBQ2pDLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNsQixFQUFFLENBQ0gsQ0FBQztRQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDN0I7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsS0FBSyxFQUFFLENBQUM7YUFDVDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLE9BQU8sRUFBRSxFQUFFO2dCQUNYLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxFQUFFLENBQUM7YUFDVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDaEIsTUFBTSxjQUFjLEdBQUcsSUFBQSwrQkFBa0IsRUFDdkMsMkNBQW1CLENBQUMsYUFBYSxFQUNqQyxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFDbEIsRUFBRSxDQUNILENBQUM7UUFD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QUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO0lBQ3ZELElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQ0FBbUIsRUFDekMsR0FBRyxFQUNILEVBQUUsRUFDRixvQkFBWSxDQUFDLFlBQVksRUFDekIsR0FBRyxFQUNILENBQUMsQ0FDRixDQUFDO1FBQ0YsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQ0FBbUIsRUFDekMsSUFBSSxFQUNKLEVBQUUsRUFDRixvQkFBWSxDQUFDLFlBQVksRUFDekIsSUFBSSxFQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0YsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgY2FsY01lbW9yeUZvb3RwcmludCwgY2FsY1RlbnNvclBhcmFsbGVsIH0gZnJvbSBcIi4vY2FsY3VsYXRvclwiO1xuaW1wb3J0IHsgRGF0YVR5cGVCaXRzIH0gZnJvbSBcIi4vbW9kZWxcIjtcbmltcG9ydCB7IE5ldXJvbnhJbnN0YW5jZVR5cGUgfSBmcm9tIFwiLi9uZXVyb254LWluc3RhbmNlLXR5cGVcIjtcblxuZGVzY3JpYmUoXCJXaGVuIHRoZSBhdHRlbnRpb24gaGVhZCBpcyBkaXZpc2libGVcIiwgKCkgPT4ge1xuICB0ZXN0KFwiSW5mMlwiLCAoKSA9PiB7XG4gICAgY29uc3QgdGVuc29yUGFyYWxsZWwgPSBjYWxjVGVuc29yUGFyYWxsZWwoXG4gICAgICBOZXVyb254SW5zdGFuY2VUeXBlLklORjJfNDhYTEFSR0UsXG4gICAgICBTaXplLmdpYmlieXRlcygxNiksXG4gICAgICAzMixcbiAgICApO1xuICAgIGV4cGVjdCh0ZW5zb3JQYXJhbGxlbCkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIHRwOiAxLFxuICAgICAgICB3b3JrZXJzOiAyNCxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMixcbiAgICAgICAgd29ya2VyczogMTIsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDQsXG4gICAgICAgIHdvcmtlcnM6IDYsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDgsXG4gICAgICAgIHdvcmtlcnM6IDMsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG4gIHRlc3QoXCJUcm4xXCIsICgpID0+IHtcbiAgICBjb25zdCB0ZW5zb3JQYXJhbGxlbCA9IGNhbGNUZW5zb3JQYXJhbGxlbChcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuVFJOMV8zMlhMQVJHRSxcbiAgICAgIFNpemUuZ2liaWJ5dGVzKDE2KSxcbiAgICAgIDQ4LFxuICAgICk7XG4gICAgZXhwZWN0KHRlbnNvclBhcmFsbGVsKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgdHA6IDEsXG4gICAgICAgIHdvcmtlcnM6IDMyLFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAyLFxuICAgICAgICB3b3JrZXJzOiAxNixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogOCxcbiAgICAgICAgd29ya2VyczogNCxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMTYsXG4gICAgICAgIHdvcmtlcnM6IDIsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG4gIHRlc3QoXCJUcm4yXCIsICgpID0+IHtcbiAgICBjb25zdCB0ZW5zb3JQYXJhbGxlbCA9IGNhbGNUZW5zb3JQYXJhbGxlbChcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuVFJOMl80OFhMQVJHRSxcbiAgICAgIFNpemUuZ2liaWJ5dGVzKDI0KSxcbiAgICAgIDY0LFxuICAgICk7XG4gICAgZXhwZWN0KHRlbnNvclBhcmFsbGVsKS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgdHA6IDEsXG4gICAgICAgIHdvcmtlcnM6IDY0LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAyLFxuICAgICAgICB3b3JrZXJzOiAzMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogNCxcbiAgICAgICAgd29ya2VyczogMTYsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDgsXG4gICAgICAgIHdvcmtlcnM6IDgsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDE2LFxuICAgICAgICB3b3JrZXJzOiA0LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAzMixcbiAgICAgICAgd29ya2VyczogMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogNjQsXG4gICAgICAgIHdvcmtlcnM6IDEsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG59KTtcbmRlc2NyaWJlKFwiVGhlIG9uZSB3aXRoIGxvdyB1c2FnZSBpcyBzaG93biBsYXN0XCIsICgpID0+IHtcbiAgdGVzdChcIkluZjJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRlbnNvclBhcmFsbGVsID0gY2FsY1RlbnNvclBhcmFsbGVsKFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzI0WExBUkdFLFxuICAgICAgU2l6ZS5naWJpYnl0ZXMoMTYpLFxuICAgICAgMzIsXG4gICAgKTtcbiAgICBleHBlY3QodGVuc29yUGFyYWxsZWwpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICB0cDogMSxcbiAgICAgICAgd29ya2VyczogMTIsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDIsXG4gICAgICAgIHdvcmtlcnM6IDYsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDQsXG4gICAgICAgIHdvcmtlcnM6IDMsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDgsXG4gICAgICAgIHdvcmtlcnM6IDEsXG4gICAgICAgIHVzYWdlOiAwLjY2NjY2NjY2NjY2NjY2NjYsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbiAgdGVzdChcIlRybjFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRlbnNvclBhcmFsbGVsID0gY2FsY1RlbnNvclBhcmFsbGVsKFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5UUk4xXzMyWExBUkdFLFxuICAgICAgU2l6ZS5naWJpYnl0ZXMoMTYpLFxuICAgICAgMzIsXG4gICAgKTtcbiAgICBleHBlY3QodGVuc29yUGFyYWxsZWwpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICB0cDogMSxcbiAgICAgICAgd29ya2VyczogMzIsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHA6IDIsXG4gICAgICAgIHdvcmtlcnM6IDE2LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiA4LFxuICAgICAgICB3b3JrZXJzOiA0LFxuICAgICAgICB1c2FnZTogMSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRwOiAxNixcbiAgICAgICAgd29ya2VyczogMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMzIsXG4gICAgICAgIHdvcmtlcnM6IDEsXG4gICAgICAgIHVzYWdlOiAxLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG4gIHRlc3QoXCJUcm4yXCIsICgpID0+IHtcbiAgICBjb25zdCB0ZW5zb3JQYXJhbGxlbCA9IGNhbGNUZW5zb3JQYXJhbGxlbChcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuVFJOMl8zWExBUkdFLFxuICAgICAgU2l6ZS5naWJpYnl0ZXMoMjQpLFxuICAgICAgMzIsXG4gICAgKTtcbiAgICBleHBlY3QodGVuc29yUGFyYWxsZWwpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICB0cDogMSxcbiAgICAgICAgd29ya2VyczogNCxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogMixcbiAgICAgICAgd29ya2VyczogMixcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0cDogNCxcbiAgICAgICAgd29ya2VyczogMSxcbiAgICAgICAgdXNhZ2U6IDEsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIldoZW4gdGhlIG1lbW9yeSBmb290cHJpbnQgaXMgY2FsY3VsYXRlZFwiLCAoKSA9PiB7XG4gIHRlc3QoXCJNaWxsaW9uIHNpemUgbW9kZWxzIGFyZSBjYWxjdWxhdGFibGVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG1lbW9yeUZvb3RwcmludCA9IGNhbGNNZW1vcnlGb290cHJpbnQoXG4gICAgICA1NzYsXG4gICAgICAzMCxcbiAgICAgIERhdGFUeXBlQml0cy5CRjE2X09SX0ZQMTYsXG4gICAgICAxMjgsXG4gICAgICAxLFxuICAgICk7XG4gICAgZXhwZWN0KG1lbW9yeUZvb3RwcmludC50b0dpYmlieXRlcygpKS50b0VxdWFsKDEpO1xuICB9KTtcbiAgdGVzdChcIkJpbGxpb24gc2l6ZSBtb2RlbHMgYXJlIGNhbGN1bGF0YWJsZVwiLCAoKSA9PiB7XG4gICAgY29uc3QgbWVtb3J5Rm9vdHByaW50ID0gY2FsY01lbW9yeUZvb3RwcmludChcbiAgICAgIDYxNDQsXG4gICAgICA0OCxcbiAgICAgIERhdGFUeXBlQml0cy5CRjE2X09SX0ZQMTYsXG4gICAgICAxMDI0LFxuICAgICAgMSxcbiAgICApO1xuICAgIGV4cGVjdChtZW1vcnlGb290cHJpbnQudG9HaWJpYnl0ZXMoKSkudG9FcXVhbCg0Mik7XG4gIH0pO1xufSk7XG4iXX0=