cdk-dms-replication 0.1.12 → 0.1.13
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 +407 -46
- package/API.md +358 -0
- package/README.md +69 -0
- package/lib/endpoint.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +3 -2
- package/lib/migration-pipeline.js +1 -1
- package/lib/replication-instance.js +1 -1
- package/lib/replication-task.js +1 -1
- package/lib/serverless-pipeline.js +1 -1
- package/lib/table-mappings.d.ts +117 -0
- package/lib/table-mappings.js +127 -3
- package/lib/task-settings.js +1 -1
- package/package.json +1 -1
package/API.md
CHANGED
|
@@ -2916,6 +2916,260 @@ Subnet selection for the replication subnet group.
|
|
|
2916
2916
|
|
|
2917
2917
|
---
|
|
2918
2918
|
|
|
2919
|
+
### DynamoDbAttributeMapping <a name="DynamoDbAttributeMapping" id="cdk-dms-replication.DynamoDbAttributeMapping"></a>
|
|
2920
|
+
|
|
2921
|
+
Mapping from a source column (or DMS expression) to a non-key attribute on the DynamoDB target.
|
|
2922
|
+
|
|
2923
|
+
Exactly one of `sourceColumn` or `value` must be set.
|
|
2924
|
+
Source columns not listed in `attributeMappings` or `excludeColumns` pass
|
|
2925
|
+
through with the source column name.
|
|
2926
|
+
|
|
2927
|
+
#### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbAttributeMapping.Initializer"></a>
|
|
2928
|
+
|
|
2929
|
+
```typescript
|
|
2930
|
+
import { DynamoDbAttributeMapping } from 'cdk-dms-replication'
|
|
2931
|
+
|
|
2932
|
+
const dynamoDbAttributeMapping: DynamoDbAttributeMapping = { ... }
|
|
2933
|
+
```
|
|
2934
|
+
|
|
2935
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
2936
|
+
|
|
2937
|
+
| **Name** | **Type** | **Description** |
|
|
2938
|
+
| --- | --- | --- |
|
|
2939
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.attributeSubType">attributeSubType</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a></code> | DynamoDB attribute sub-type (`string`, `number`, or `binary`). |
|
|
2940
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.targetAttributeName">targetAttributeName</a></code> | <code>string</code> | Name of the attribute on the DynamoDB target item. |
|
|
2941
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.sourceColumn">sourceColumn</a></code> | <code>string</code> | Name of a single column on the relational source. |
|
|
2942
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping.property.value">value</a></code> | <code>string</code> | Raw DMS value expression, used verbatim. |
|
|
2943
|
+
|
|
2944
|
+
---
|
|
2945
|
+
|
|
2946
|
+
##### `attributeSubType`<sup>Required</sup> <a name="attributeSubType" id="cdk-dms-replication.DynamoDbAttributeMapping.property.attributeSubType"></a>
|
|
2947
|
+
|
|
2948
|
+
```typescript
|
|
2949
|
+
public readonly attributeSubType: DynamoDbAttributeSubType;
|
|
2950
|
+
```
|
|
2951
|
+
|
|
2952
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a>
|
|
2953
|
+
|
|
2954
|
+
DynamoDB attribute sub-type (`string`, `number`, or `binary`).
|
|
2955
|
+
|
|
2956
|
+
---
|
|
2957
|
+
|
|
2958
|
+
##### `targetAttributeName`<sup>Required</sup> <a name="targetAttributeName" id="cdk-dms-replication.DynamoDbAttributeMapping.property.targetAttributeName"></a>
|
|
2959
|
+
|
|
2960
|
+
```typescript
|
|
2961
|
+
public readonly targetAttributeName: string;
|
|
2962
|
+
```
|
|
2963
|
+
|
|
2964
|
+
- *Type:* string
|
|
2965
|
+
|
|
2966
|
+
Name of the attribute on the DynamoDB target item.
|
|
2967
|
+
|
|
2968
|
+
---
|
|
2969
|
+
|
|
2970
|
+
##### `sourceColumn`<sup>Optional</sup> <a name="sourceColumn" id="cdk-dms-replication.DynamoDbAttributeMapping.property.sourceColumn"></a>
|
|
2971
|
+
|
|
2972
|
+
```typescript
|
|
2973
|
+
public readonly sourceColumn: string;
|
|
2974
|
+
```
|
|
2975
|
+
|
|
2976
|
+
- *Type:* string
|
|
2977
|
+
|
|
2978
|
+
Name of a single column on the relational source.
|
|
2979
|
+
|
|
2980
|
+
The builder wraps this
|
|
2981
|
+
in the DMS expression `${sourceColumn}`. Mutually exclusive with `value`.
|
|
2982
|
+
|
|
2983
|
+
---
|
|
2984
|
+
|
|
2985
|
+
##### `value`<sup>Optional</sup> <a name="value" id="cdk-dms-replication.DynamoDbAttributeMapping.property.value"></a>
|
|
2986
|
+
|
|
2987
|
+
```typescript
|
|
2988
|
+
public readonly value: string;
|
|
2989
|
+
```
|
|
2990
|
+
|
|
2991
|
+
- *Type:* string
|
|
2992
|
+
|
|
2993
|
+
Raw DMS value expression, used verbatim.
|
|
2994
|
+
|
|
2995
|
+
Use this for composite values or
|
|
2996
|
+
other expressions like `'STATUS#${status}'`. Mutually exclusive with
|
|
2997
|
+
`sourceColumn`.
|
|
2998
|
+
|
|
2999
|
+
---
|
|
3000
|
+
|
|
3001
|
+
### DynamoDbKeyMapping <a name="DynamoDbKeyMapping" id="cdk-dms-replication.DynamoDbKeyMapping"></a>
|
|
3002
|
+
|
|
3003
|
+
Mapping from a source column (or DMS expression) to a DynamoDB partition or sort key attribute.
|
|
3004
|
+
|
|
3005
|
+
Exactly one of `sourceColumn` or `value` must be set.
|
|
3006
|
+
|
|
3007
|
+
#### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbKeyMapping.Initializer"></a>
|
|
3008
|
+
|
|
3009
|
+
```typescript
|
|
3010
|
+
import { DynamoDbKeyMapping } from 'cdk-dms-replication'
|
|
3011
|
+
|
|
3012
|
+
const dynamoDbKeyMapping: DynamoDbKeyMapping = { ... }
|
|
3013
|
+
```
|
|
3014
|
+
|
|
3015
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
3016
|
+
|
|
3017
|
+
| **Name** | **Type** | **Description** |
|
|
3018
|
+
| --- | --- | --- |
|
|
3019
|
+
| <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.attributeSubType">attributeSubType</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a></code> | DynamoDB attribute sub-type (`string`, `number`, or `binary`). |
|
|
3020
|
+
| <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.targetAttributeName">targetAttributeName</a></code> | <code>string</code> | Name of the partition/sort key attribute on the DynamoDB target item. |
|
|
3021
|
+
| <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.sourceColumn">sourceColumn</a></code> | <code>string</code> | Name of a single column on the relational source. |
|
|
3022
|
+
| <code><a href="#cdk-dms-replication.DynamoDbKeyMapping.property.value">value</a></code> | <code>string</code> | Raw DMS value expression, used verbatim. |
|
|
3023
|
+
|
|
3024
|
+
---
|
|
3025
|
+
|
|
3026
|
+
##### `attributeSubType`<sup>Required</sup> <a name="attributeSubType" id="cdk-dms-replication.DynamoDbKeyMapping.property.attributeSubType"></a>
|
|
3027
|
+
|
|
3028
|
+
```typescript
|
|
3029
|
+
public readonly attributeSubType: DynamoDbAttributeSubType;
|
|
3030
|
+
```
|
|
3031
|
+
|
|
3032
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeSubType">DynamoDbAttributeSubType</a>
|
|
3033
|
+
|
|
3034
|
+
DynamoDB attribute sub-type (`string`, `number`, or `binary`).
|
|
3035
|
+
|
|
3036
|
+
---
|
|
3037
|
+
|
|
3038
|
+
##### `targetAttributeName`<sup>Required</sup> <a name="targetAttributeName" id="cdk-dms-replication.DynamoDbKeyMapping.property.targetAttributeName"></a>
|
|
3039
|
+
|
|
3040
|
+
```typescript
|
|
3041
|
+
public readonly targetAttributeName: string;
|
|
3042
|
+
```
|
|
3043
|
+
|
|
3044
|
+
- *Type:* string
|
|
3045
|
+
|
|
3046
|
+
Name of the partition/sort key attribute on the DynamoDB target item.
|
|
3047
|
+
|
|
3048
|
+
---
|
|
3049
|
+
|
|
3050
|
+
##### `sourceColumn`<sup>Optional</sup> <a name="sourceColumn" id="cdk-dms-replication.DynamoDbKeyMapping.property.sourceColumn"></a>
|
|
3051
|
+
|
|
3052
|
+
```typescript
|
|
3053
|
+
public readonly sourceColumn: string;
|
|
3054
|
+
```
|
|
3055
|
+
|
|
3056
|
+
- *Type:* string
|
|
3057
|
+
|
|
3058
|
+
Name of a single column on the relational source.
|
|
3059
|
+
|
|
3060
|
+
The builder wraps this
|
|
3061
|
+
in the DMS expression `${sourceColumn}`. Mutually exclusive with `value`.
|
|
3062
|
+
|
|
3063
|
+
---
|
|
3064
|
+
|
|
3065
|
+
##### `value`<sup>Optional</sup> <a name="value" id="cdk-dms-replication.DynamoDbKeyMapping.property.value"></a>
|
|
3066
|
+
|
|
3067
|
+
```typescript
|
|
3068
|
+
public readonly value: string;
|
|
3069
|
+
```
|
|
3070
|
+
|
|
3071
|
+
- *Type:* string
|
|
3072
|
+
|
|
3073
|
+
Raw DMS value expression, used verbatim.
|
|
3074
|
+
|
|
3075
|
+
Use this for composite keys or
|
|
3076
|
+
other expressions like `'CUSTOMER#${customer_id}'`. Mutually exclusive
|
|
3077
|
+
with `sourceColumn`.
|
|
3078
|
+
|
|
3079
|
+
---
|
|
3080
|
+
|
|
3081
|
+
### DynamoDbObjectMappingOptions <a name="DynamoDbObjectMappingOptions" id="cdk-dms-replication.DynamoDbObjectMappingOptions"></a>
|
|
3082
|
+
|
|
3083
|
+
Options for `TableMappings.mapToDynamoDb`.
|
|
3084
|
+
|
|
3085
|
+
#### Initializer <a name="Initializer" id="cdk-dms-replication.DynamoDbObjectMappingOptions.Initializer"></a>
|
|
3086
|
+
|
|
3087
|
+
```typescript
|
|
3088
|
+
import { DynamoDbObjectMappingOptions } from 'cdk-dms-replication'
|
|
3089
|
+
|
|
3090
|
+
const dynamoDbObjectMappingOptions: DynamoDbObjectMappingOptions = { ... }
|
|
3091
|
+
```
|
|
3092
|
+
|
|
3093
|
+
#### Properties <a name="Properties" id="Properties"></a>
|
|
3094
|
+
|
|
3095
|
+
| **Name** | **Type** | **Description** |
|
|
3096
|
+
| --- | --- | --- |
|
|
3097
|
+
| <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.partitionKey">partitionKey</a></code> | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a></code> | Mapping for the DynamoDB partition (hash) key. |
|
|
3098
|
+
| <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.targetTableName">targetTableName</a></code> | <code>string</code> | Name of the target DynamoDB table. |
|
|
3099
|
+
| <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.attributeMappings">attributeMappings</a></code> | <code><a href="#cdk-dms-replication.DynamoDbAttributeMapping">DynamoDbAttributeMapping</a>[]</code> | Additional column-to-attribute mappings. |
|
|
3100
|
+
| <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.excludeColumns">excludeColumns</a></code> | <code>string[]</code> | Source columns to exclude from the migrated item. |
|
|
3101
|
+
| <code><a href="#cdk-dms-replication.DynamoDbObjectMappingOptions.property.sortKey">sortKey</a></code> | <code><a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a></code> | Mapping for the DynamoDB sort (range) key. |
|
|
3102
|
+
|
|
3103
|
+
---
|
|
3104
|
+
|
|
3105
|
+
##### `partitionKey`<sup>Required</sup> <a name="partitionKey" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.partitionKey"></a>
|
|
3106
|
+
|
|
3107
|
+
```typescript
|
|
3108
|
+
public readonly partitionKey: DynamoDbKeyMapping;
|
|
3109
|
+
```
|
|
3110
|
+
|
|
3111
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a>
|
|
3112
|
+
|
|
3113
|
+
Mapping for the DynamoDB partition (hash) key.
|
|
3114
|
+
|
|
3115
|
+
Required.
|
|
3116
|
+
|
|
3117
|
+
---
|
|
3118
|
+
|
|
3119
|
+
##### `targetTableName`<sup>Required</sup> <a name="targetTableName" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.targetTableName"></a>
|
|
3120
|
+
|
|
3121
|
+
```typescript
|
|
3122
|
+
public readonly targetTableName: string;
|
|
3123
|
+
```
|
|
3124
|
+
|
|
3125
|
+
- *Type:* string
|
|
3126
|
+
|
|
3127
|
+
Name of the target DynamoDB table.
|
|
3128
|
+
|
|
3129
|
+
---
|
|
3130
|
+
|
|
3131
|
+
##### `attributeMappings`<sup>Optional</sup> <a name="attributeMappings" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.attributeMappings"></a>
|
|
3132
|
+
|
|
3133
|
+
```typescript
|
|
3134
|
+
public readonly attributeMappings: DynamoDbAttributeMapping[];
|
|
3135
|
+
```
|
|
3136
|
+
|
|
3137
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbAttributeMapping">DynamoDbAttributeMapping</a>[]
|
|
3138
|
+
|
|
3139
|
+
Additional column-to-attribute mappings.
|
|
3140
|
+
|
|
3141
|
+
Use this to rename non-key
|
|
3142
|
+
columns or change their DynamoDB sub-type. Columns not listed here pass
|
|
3143
|
+
through with the source column name.
|
|
3144
|
+
|
|
3145
|
+
---
|
|
3146
|
+
|
|
3147
|
+
##### `excludeColumns`<sup>Optional</sup> <a name="excludeColumns" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.excludeColumns"></a>
|
|
3148
|
+
|
|
3149
|
+
```typescript
|
|
3150
|
+
public readonly excludeColumns: string[];
|
|
3151
|
+
```
|
|
3152
|
+
|
|
3153
|
+
- *Type:* string[]
|
|
3154
|
+
|
|
3155
|
+
Source columns to exclude from the migrated item.
|
|
3156
|
+
|
|
3157
|
+
---
|
|
3158
|
+
|
|
3159
|
+
##### `sortKey`<sup>Optional</sup> <a name="sortKey" id="cdk-dms-replication.DynamoDbObjectMappingOptions.property.sortKey"></a>
|
|
3160
|
+
|
|
3161
|
+
```typescript
|
|
3162
|
+
public readonly sortKey: DynamoDbKeyMapping;
|
|
3163
|
+
```
|
|
3164
|
+
|
|
3165
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbKeyMapping">DynamoDbKeyMapping</a>
|
|
3166
|
+
|
|
3167
|
+
Mapping for the DynamoDB sort (range) key.
|
|
3168
|
+
|
|
3169
|
+
Optional.
|
|
3170
|
+
|
|
3171
|
+
---
|
|
3172
|
+
|
|
2919
3173
|
### DynamoDbSettings <a name="DynamoDbSettings" id="cdk-dms-replication.DynamoDbSettings"></a>
|
|
2920
3174
|
|
|
2921
3175
|
Settings for Amazon DynamoDB target endpoints.
|
|
@@ -6541,6 +6795,7 @@ new TableMappings()
|
|
|
6541
6795
|
| <code><a href="#cdk-dms-replication.TableMappings.explicitTable">explicitTable</a></code> | Explicitly include a single table. |
|
|
6542
6796
|
| <code><a href="#cdk-dms-replication.TableMappings.includeSchema">includeSchema</a></code> | Include all tables in a schema. |
|
|
6543
6797
|
| <code><a href="#cdk-dms-replication.TableMappings.includeTable">includeTable</a></code> | Include a specific table (or a wildcard pattern) within a schema. |
|
|
6798
|
+
| <code><a href="#cdk-dms-replication.TableMappings.mapToDynamoDb">mapToDynamoDb</a></code> | Map a relational source table to a DynamoDB target table. |
|
|
6544
6799
|
| <code><a href="#cdk-dms-replication.TableMappings.removeColumn">removeColumn</a></code> | Remove a column from a table. |
|
|
6545
6800
|
| <code><a href="#cdk-dms-replication.TableMappings.renameColumn">renameColumn</a></code> | Rename a column in a table. |
|
|
6546
6801
|
| <code><a href="#cdk-dms-replication.TableMappings.renameSchema">renameSchema</a></code> | Rename a schema. |
|
|
@@ -6779,6 +7034,80 @@ Use `%` for `tableName` to match all tables in the schema.
|
|
|
6779
7034
|
|
|
6780
7035
|
---
|
|
6781
7036
|
|
|
7037
|
+
##### `mapToDynamoDb` <a name="mapToDynamoDb" id="cdk-dms-replication.TableMappings.mapToDynamoDb"></a>
|
|
7038
|
+
|
|
7039
|
+
```typescript
|
|
7040
|
+
public mapToDynamoDb(schemaName: string, tableName: string, options: DynamoDbObjectMappingOptions): TableMappings
|
|
7041
|
+
```
|
|
7042
|
+
|
|
7043
|
+
Map a relational source table to a DynamoDB target table.
|
|
7044
|
+
|
|
7045
|
+
Emits a DMS `object-mapping` rule with `rule-action: map-record-to-record`.
|
|
7046
|
+
DMS requires this rule type when the target endpoint is DynamoDB; the
|
|
7047
|
+
partition key (and optional sort key) tell DMS how to build the item key
|
|
7048
|
+
from source columns.
|
|
7049
|
+
|
|
7050
|
+
Source columns not listed in `attributeMappings` or `excludeColumns` are
|
|
7051
|
+
migrated with the source column name as the attribute name.
|
|
7052
|
+
|
|
7053
|
+
For each key or attribute mapping, set either `sourceColumn` (a single
|
|
7054
|
+
column wrapped as `${col}`) or `value` (a raw DMS expression, e.g.
|
|
7055
|
+
`'CUSTOMER#${customer_id}'` for composite keys). Exactly one is required.
|
|
7056
|
+
|
|
7057
|
+
Calling this method twice with the same `schemaName`/`tableName` emits two
|
|
7058
|
+
separate rules; DMS will reject duplicate object-mapping rules at deploy
|
|
7059
|
+
time. Call it once per source table.
|
|
7060
|
+
|
|
7061
|
+
*Example*
|
|
7062
|
+
|
|
7063
|
+
```typescript
|
|
7064
|
+
const mappings = new TableMappings()
|
|
7065
|
+
.includeTable('public', 'orders')
|
|
7066
|
+
.mapToDynamoDb('public', 'orders', {
|
|
7067
|
+
targetTableName: 'Orders',
|
|
7068
|
+
// Composite partition key from a literal prefix + source column:
|
|
7069
|
+
partitionKey: {
|
|
7070
|
+
value: 'CUSTOMER#${customer_id}',
|
|
7071
|
+
targetAttributeName: 'PK',
|
|
7072
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
7073
|
+
},
|
|
7074
|
+
// Bare source column for the sort key:
|
|
7075
|
+
sortKey: {
|
|
7076
|
+
sourceColumn: 'created_at',
|
|
7077
|
+
targetAttributeName: 'CreatedAt',
|
|
7078
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
7079
|
+
},
|
|
7080
|
+
excludeColumns: ['internal_flag'],
|
|
7081
|
+
attributeMappings: [
|
|
7082
|
+
{
|
|
7083
|
+
sourceColumn: 'customer_id',
|
|
7084
|
+
targetAttributeName: 'CustomerId',
|
|
7085
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
7086
|
+
},
|
|
7087
|
+
],
|
|
7088
|
+
})
|
|
7089
|
+
.toJson();
|
|
7090
|
+
```
|
|
7091
|
+
|
|
7092
|
+
|
|
7093
|
+
###### `schemaName`<sup>Required</sup> <a name="schemaName" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.schemaName"></a>
|
|
7094
|
+
|
|
7095
|
+
- *Type:* string
|
|
7096
|
+
|
|
7097
|
+
---
|
|
7098
|
+
|
|
7099
|
+
###### `tableName`<sup>Required</sup> <a name="tableName" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.tableName"></a>
|
|
7100
|
+
|
|
7101
|
+
- *Type:* string
|
|
7102
|
+
|
|
7103
|
+
---
|
|
7104
|
+
|
|
7105
|
+
###### `options`<sup>Required</sup> <a name="options" id="cdk-dms-replication.TableMappings.mapToDynamoDb.parameter.options"></a>
|
|
7106
|
+
|
|
7107
|
+
- *Type:* <a href="#cdk-dms-replication.DynamoDbObjectMappingOptions">DynamoDbObjectMappingOptions</a>
|
|
7108
|
+
|
|
7109
|
+
---
|
|
7110
|
+
|
|
6782
7111
|
##### `removeColumn` <a name="removeColumn" id="cdk-dms-replication.TableMappings.removeColumn"></a>
|
|
6783
7112
|
|
|
6784
7113
|
```typescript
|
|
@@ -7451,6 +7780,35 @@ Date partition sequence for S3 date-partitioned output.
|
|
|
7451
7780
|
---
|
|
7452
7781
|
|
|
7453
7782
|
|
|
7783
|
+
### DynamoDbAttributeSubType <a name="DynamoDbAttributeSubType" id="cdk-dms-replication.DynamoDbAttributeSubType"></a>
|
|
7784
|
+
|
|
7785
|
+
DynamoDB attribute sub-type for object-mapping rules.
|
|
7786
|
+
|
|
7787
|
+
#### Members <a name="Members" id="Members"></a>
|
|
7788
|
+
|
|
7789
|
+
| **Name** | **Description** |
|
|
7790
|
+
| --- | --- |
|
|
7791
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.STRING">STRING</a></code> | *No description.* |
|
|
7792
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.NUMBER">NUMBER</a></code> | *No description.* |
|
|
7793
|
+
| <code><a href="#cdk-dms-replication.DynamoDbAttributeSubType.BINARY">BINARY</a></code> | *No description.* |
|
|
7794
|
+
|
|
7795
|
+
---
|
|
7796
|
+
|
|
7797
|
+
##### `STRING` <a name="STRING" id="cdk-dms-replication.DynamoDbAttributeSubType.STRING"></a>
|
|
7798
|
+
|
|
7799
|
+
---
|
|
7800
|
+
|
|
7801
|
+
|
|
7802
|
+
##### `NUMBER` <a name="NUMBER" id="cdk-dms-replication.DynamoDbAttributeSubType.NUMBER"></a>
|
|
7803
|
+
|
|
7804
|
+
---
|
|
7805
|
+
|
|
7806
|
+
|
|
7807
|
+
##### `BINARY` <a name="BINARY" id="cdk-dms-replication.DynamoDbAttributeSubType.BINARY"></a>
|
|
7808
|
+
|
|
7809
|
+
---
|
|
7810
|
+
|
|
7811
|
+
|
|
7454
7812
|
### EncodingType <a name="EncodingType" id="cdk-dms-replication.EncodingType"></a>
|
|
7455
7813
|
|
|
7456
7814
|
Encoding type for S3 parquet output.
|
package/README.md
CHANGED
|
@@ -393,6 +393,10 @@ targetEndpoint: {
|
|
|
393
393
|
},
|
|
394
394
|
```
|
|
395
395
|
|
|
396
|
+
DynamoDB targets also require an `object-mapping` rule per source table in the
|
|
397
|
+
table mappings. See [DynamoDB target (object mapping)](#dynamodb-target-object-mapping)
|
|
398
|
+
below.
|
|
399
|
+
|
|
396
400
|
---
|
|
397
401
|
|
|
398
402
|
## Table mappings
|
|
@@ -445,6 +449,71 @@ new TableMappings()
|
|
|
445
449
|
.toJson()
|
|
446
450
|
```
|
|
447
451
|
|
|
452
|
+
### DynamoDB target (object mapping)
|
|
453
|
+
|
|
454
|
+
When the target endpoint is DynamoDB, DMS requires an `object-mapping` rule per
|
|
455
|
+
source table that defines the partition key (and optionally a sort key) and
|
|
456
|
+
how source columns become DynamoDB attributes. Use `mapToDynamoDb()` alongside
|
|
457
|
+
the usual `includeTable()`:
|
|
458
|
+
|
|
459
|
+
```typescript
|
|
460
|
+
new TableMappings()
|
|
461
|
+
.includeTable('public', 'orders')
|
|
462
|
+
.mapToDynamoDb('public', 'orders', {
|
|
463
|
+
targetTableName: 'Orders',
|
|
464
|
+
partitionKey: {
|
|
465
|
+
sourceColumn: 'order_id',
|
|
466
|
+
targetAttributeName: 'OrderId',
|
|
467
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
468
|
+
},
|
|
469
|
+
sortKey: {
|
|
470
|
+
sourceColumn: 'created_at',
|
|
471
|
+
targetAttributeName: 'CreatedAt',
|
|
472
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
473
|
+
},
|
|
474
|
+
excludeColumns: ['internal_flag'],
|
|
475
|
+
attributeMappings: [
|
|
476
|
+
{
|
|
477
|
+
sourceColumn: 'customer_id',
|
|
478
|
+
targetAttributeName: 'CustomerId',
|
|
479
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
})
|
|
483
|
+
.toJson()
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Source columns not listed in `attributeMappings` or `excludeColumns` are
|
|
487
|
+
migrated under their source column name.
|
|
488
|
+
|
|
489
|
+
#### Composite key values
|
|
490
|
+
|
|
491
|
+
For DynamoDB single-table designs you often need composite keys built from a
|
|
492
|
+
literal prefix plus one or more source columns. Use `value` instead of
|
|
493
|
+
`sourceColumn` to provide a raw DMS expression:
|
|
494
|
+
|
|
495
|
+
```typescript
|
|
496
|
+
new TableMappings()
|
|
497
|
+
.includeTable('public', 'orders')
|
|
498
|
+
.mapToDynamoDb('public', 'orders', {
|
|
499
|
+
targetTableName: 'AppTable',
|
|
500
|
+
partitionKey: {
|
|
501
|
+
value: 'CUSTOMER#${customer_id}',
|
|
502
|
+
targetAttributeName: 'PK',
|
|
503
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
504
|
+
},
|
|
505
|
+
sortKey: {
|
|
506
|
+
value: 'ORDER#${order_id}',
|
|
507
|
+
targetAttributeName: 'SK',
|
|
508
|
+
attributeSubType: DynamoDbAttributeSubType.STRING,
|
|
509
|
+
},
|
|
510
|
+
})
|
|
511
|
+
.toJson()
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
Exactly one of `sourceColumn` or `value` must be set on each key/attribute
|
|
515
|
+
mapping — the builder throws at synth time otherwise.
|
|
516
|
+
|
|
448
517
|
---
|
|
449
518
|
|
|
450
519
|
## Task settings
|
package/lib/endpoint.js
CHANGED
|
@@ -384,7 +384,7 @@ class DmsEndpoint extends constructs_1.Construct {
|
|
|
384
384
|
}
|
|
385
385
|
exports.DmsEndpoint = DmsEndpoint;
|
|
386
386
|
_a = JSII_RTTI_SYMBOL_1;
|
|
387
|
-
DmsEndpoint[_a] = { fqn: "cdk-dms-replication.DmsEndpoint", version: "0.1.
|
|
387
|
+
DmsEndpoint[_a] = { fqn: "cdk-dms-replication.DmsEndpoint", version: "0.1.13" };
|
|
388
388
|
// ---------------------------------------------------------------------------
|
|
389
389
|
// Static validation data — declared first to satisfy member-ordering rules
|
|
390
390
|
// ---------------------------------------------------------------------------
|
package/lib/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { DmsMigrationPipeline, DmsMigrationPipelineProps, SourceEndpointOptions,
|
|
|
3
3
|
export { DmsReplicationInstance, DmsReplicationInstanceProps } from './replication-instance';
|
|
4
4
|
export { DmsReplicationTask, DmsReplicationTaskProps } from './replication-task';
|
|
5
5
|
export { DmsServerlessPipeline, DmsServerlessPipelineProps, } from './serverless-pipeline';
|
|
6
|
-
export { AddColumnDefinition, ColumnDataType, RuleObjectLocator, RuleObjectLocatorValue, SelectionAction, TableMappingRule, TableMappings, TransformationAction, } from './table-mappings';
|
|
6
|
+
export { AddColumnDefinition, ColumnDataType, DynamoDbAttributeMapping, DynamoDbAttributeSubType, DynamoDbKeyMapping, DynamoDbObjectMappingOptions, RuleObjectLocator, RuleObjectLocatorValue, SelectionAction, TableMappingRule, TableMappings, TransformationAction, } from './table-mappings';
|
|
7
7
|
export { CdcSettings, ErrorAction, ErrorHandlingSettings, FullLoadSettings, LobMode, LogComponentSettings, LoggingLevel, TaskSettings, } from './task-settings';
|
|
8
8
|
export { Db2Settings, DynamoDbSettings, KafkaSettings, KinesisSettings, MongoDbSettings, MySqlSettings, NeptuneSettings, OpenSearchSettings, OracleSettings, PostgreSqlSettings, RedisSettings, RedshiftSettings, S3Settings, SapAseSettings, SqlServerSettings, } from './endpoint-settings';
|
|
9
9
|
export { DatePartitionDelimiter, DatePartitionSequence, EncodingType, EncryptionMode, EndpointEngine, EndpointType, KafkaSecurityProtocol, MessageFormat, MigrationType, MongoAuthMechanism, MongoAuthType, MongoNestingLevel, MySqlTargetDbType, OracleCdcPlugin, OracleNumberDatatypeScale, ParquetVersion, PostgresCdcPlugin, ReplicationInstanceClass, S3DataFormat, SqlServerSafeguardPolicy, } from './enums';
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SqlServerSafeguardPolicy = exports.S3DataFormat = exports.ReplicationInstanceClass = exports.PostgresCdcPlugin = exports.ParquetVersion = exports.OracleNumberDatatypeScale = exports.OracleCdcPlugin = exports.MySqlTargetDbType = exports.MongoNestingLevel = exports.MongoAuthType = exports.MongoAuthMechanism = exports.MigrationType = exports.MessageFormat = exports.KafkaSecurityProtocol = exports.EndpointType = exports.EndpointEngine = exports.EncryptionMode = exports.EncodingType = exports.DatePartitionSequence = exports.DatePartitionDelimiter = exports.TaskSettings = exports.LoggingLevel = exports.LobMode = exports.ErrorAction = exports.TransformationAction = exports.TableMappings = exports.SelectionAction = exports.RuleObjectLocator = exports.ColumnDataType = exports.DmsServerlessPipeline = exports.DmsReplicationTask = exports.DmsReplicationInstance = exports.DmsMigrationPipeline = exports.DmsEndpoint = void 0;
|
|
3
|
+
exports.SqlServerSafeguardPolicy = exports.S3DataFormat = exports.ReplicationInstanceClass = exports.PostgresCdcPlugin = exports.ParquetVersion = exports.OracleNumberDatatypeScale = exports.OracleCdcPlugin = exports.MySqlTargetDbType = exports.MongoNestingLevel = exports.MongoAuthType = exports.MongoAuthMechanism = exports.MigrationType = exports.MessageFormat = exports.KafkaSecurityProtocol = exports.EndpointType = exports.EndpointEngine = exports.EncryptionMode = exports.EncodingType = exports.DatePartitionSequence = exports.DatePartitionDelimiter = exports.TaskSettings = exports.LoggingLevel = exports.LobMode = exports.ErrorAction = exports.TransformationAction = exports.TableMappings = exports.SelectionAction = exports.RuleObjectLocator = exports.DynamoDbAttributeSubType = exports.ColumnDataType = exports.DmsServerlessPipeline = exports.DmsReplicationTask = exports.DmsReplicationInstance = exports.DmsMigrationPipeline = exports.DmsEndpoint = void 0;
|
|
4
4
|
// Constructs
|
|
5
5
|
var endpoint_1 = require("./endpoint");
|
|
6
6
|
Object.defineProperty(exports, "DmsEndpoint", { enumerable: true, get: function () { return endpoint_1.DmsEndpoint; } });
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "DmsServerlessPipeline", { enumerable: true, get:
|
|
|
15
15
|
// Builders
|
|
16
16
|
var table_mappings_1 = require("./table-mappings");
|
|
17
17
|
Object.defineProperty(exports, "ColumnDataType", { enumerable: true, get: function () { return table_mappings_1.ColumnDataType; } });
|
|
18
|
+
Object.defineProperty(exports, "DynamoDbAttributeSubType", { enumerable: true, get: function () { return table_mappings_1.DynamoDbAttributeSubType; } });
|
|
18
19
|
Object.defineProperty(exports, "RuleObjectLocator", { enumerable: true, get: function () { return table_mappings_1.RuleObjectLocator; } });
|
|
19
20
|
Object.defineProperty(exports, "SelectionAction", { enumerable: true, get: function () { return table_mappings_1.SelectionAction; } });
|
|
20
21
|
Object.defineProperty(exports, "TableMappings", { enumerable: true, get: function () { return table_mappings_1.TableMappings; } });
|
|
@@ -46,4 +47,4 @@ Object.defineProperty(exports, "PostgresCdcPlugin", { enumerable: true, get: fun
|
|
|
46
47
|
Object.defineProperty(exports, "ReplicationInstanceClass", { enumerable: true, get: function () { return enums_1.ReplicationInstanceClass; } });
|
|
47
48
|
Object.defineProperty(exports, "S3DataFormat", { enumerable: true, get: function () { return enums_1.S3DataFormat; } });
|
|
48
49
|
Object.defineProperty(exports, "SqlServerSafeguardPolicy", { enumerable: true, get: function () { return enums_1.SqlServerSafeguardPolicy; } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsYUFBYTtBQUNiLHVDQUF5RTtBQUFoRSx1R0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBSzhCO0FBSjVCLDBIQUFBLG9CQUFvQixPQUFBO0FBS3RCLCtEQUE2RjtBQUFwRiw4SEFBQSxzQkFBc0IsT0FBQTtBQUMvQix1REFBaUY7QUFBeEUsc0hBQUEsa0JBQWtCLE9BQUE7QUFDM0IsNkRBRytCO0FBRjdCLDRIQUFBLHFCQUFxQixPQUFBO0FBSXZCLFdBQVc7QUFDWCxtREFhMEI7QUFYeEIsZ0hBQUEsY0FBYyxPQUFBO0FBRWQsMEhBQUEsd0JBQXdCLE9BQUE7QUFHeEIsbUhBQUEsaUJBQWlCLE9BQUE7QUFFakIsaUhBQUEsZUFBZSxPQUFBO0FBRWYsK0dBQUEsYUFBYSxPQUFBO0FBQ2Isc0hBQUEsb0JBQW9CLE9BQUE7QUFFdEIsaURBU3lCO0FBUHZCLDRHQUFBLFdBQVcsT0FBQTtBQUdYLHdHQUFBLE9BQU8sT0FBQTtBQUVQLDZHQUFBLFlBQVksT0FBQTtBQUNaLDZHQUFBLFlBQVksT0FBQTtBQXNCZCxRQUFRO0FBQ1IsaUNBcUJpQjtBQXBCZiwrR0FBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixxR0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxjQUFjLE9BQUE7QUFDZCx1R0FBQSxjQUFjLE9BQUE7QUFDZCxxR0FBQSxZQUFZLE9BQUE7QUFDWiw4R0FBQSxxQkFBcUIsT0FBQTtBQUNyQixzR0FBQSxhQUFhLE9BQUE7QUFDYixzR0FBQSxhQUFhLE9BQUE7QUFDYiwyR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixzR0FBQSxhQUFhLE9BQUE7QUFDYiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQiwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQix3R0FBQSxlQUFlLE9BQUE7QUFDZixrSEFBQSx5QkFBeUIsT0FBQTtBQUN6Qix1R0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxpQkFBaUIsT0FBQTtBQUNqQixpSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixxR0FBQSxZQUFZLE9BQUE7QUFDWixpSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnN0cnVjdHNcbmV4cG9ydCB7IERtc0VuZHBvaW50LCBEbXNFbmRwb2ludFByb3BzLCBJRG1zRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50JztcbmV4cG9ydCB7XG4gIERtc01pZ3JhdGlvblBpcGVsaW5lLFxuICBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzLFxuICBTb3VyY2VFbmRwb2ludE9wdGlvbnMsXG4gIFRhcmdldEVuZHBvaW50T3B0aW9ucyxcbn0gZnJvbSAnLi9taWdyYXRpb24tcGlwZWxpbmUnO1xuZXhwb3J0IHsgRG1zUmVwbGljYXRpb25JbnN0YW5jZSwgRG1zUmVwbGljYXRpb25JbnN0YW5jZVByb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi1pbnN0YW5jZSc7XG5leHBvcnQgeyBEbXNSZXBsaWNhdGlvblRhc2ssIERtc1JlcGxpY2F0aW9uVGFza1Byb3BzIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi10YXNrJztcbmV4cG9ydCB7XG4gIERtc1NlcnZlcmxlc3NQaXBlbGluZSxcbiAgRG1zU2VydmVybGVzc1BpcGVsaW5lUHJvcHMsXG59IGZyb20gJy4vc2VydmVybGVzcy1waXBlbGluZSc7XG5cbi8vIEJ1aWxkZXJzXG5leHBvcnQge1xuICBBZGRDb2x1bW5EZWZpbml0aW9uLFxuICBDb2x1bW5EYXRhVHlwZSxcbiAgRHluYW1vRGJBdHRyaWJ1dGVNYXBwaW5nLFxuICBEeW5hbW9EYkF0dHJpYnV0ZVN1YlR5cGUsXG4gIER5bmFtb0RiS2V5TWFwcGluZyxcbiAgRHluYW1vRGJPYmplY3RNYXBwaW5nT3B0aW9ucyxcbiAgUnVsZU9iamVjdExvY2F0b3IsXG4gIFJ1bGVPYmplY3RMb2NhdG9yVmFsdWUsXG4gIFNlbGVjdGlvbkFjdGlvbixcbiAgVGFibGVNYXBwaW5nUnVsZSxcbiAgVGFibGVNYXBwaW5ncyxcbiAgVHJhbnNmb3JtYXRpb25BY3Rpb24sXG59IGZyb20gJy4vdGFibGUtbWFwcGluZ3MnO1xuZXhwb3J0IHtcbiAgQ2RjU2V0dGluZ3MsXG4gIEVycm9yQWN0aW9uLFxuICBFcnJvckhhbmRsaW5nU2V0dGluZ3MsXG4gIEZ1bGxMb2FkU2V0dGluZ3MsXG4gIExvYk1vZGUsXG4gIExvZ0NvbXBvbmVudFNldHRpbmdzLFxuICBMb2dnaW5nTGV2ZWwsXG4gIFRhc2tTZXR0aW5ncyxcbn0gZnJvbSAnLi90YXNrLXNldHRpbmdzJztcblxuLy8gRW5naW5lLXNwZWNpZmljIHNldHRpbmdzIGludGVyZmFjZXNcbmV4cG9ydCB7XG4gIERiMlNldHRpbmdzLFxuICBEeW5hbW9EYlNldHRpbmdzLFxuICBLYWZrYVNldHRpbmdzLFxuICBLaW5lc2lzU2V0dGluZ3MsXG4gIE1vbmdvRGJTZXR0aW5ncyxcbiAgTXlTcWxTZXR0aW5ncyxcbiAgTmVwdHVuZVNldHRpbmdzLFxuICBPcGVuU2VhcmNoU2V0dGluZ3MsXG4gIE9yYWNsZVNldHRpbmdzLFxuICBQb3N0Z3JlU3FsU2V0dGluZ3MsXG4gIFJlZGlzU2V0dGluZ3MsXG4gIFJlZHNoaWZ0U2V0dGluZ3MsXG4gIFMzU2V0dGluZ3MsXG4gIFNhcEFzZVNldHRpbmdzLFxuICBTcWxTZXJ2ZXJTZXR0aW5ncyxcbn0gZnJvbSAnLi9lbmRwb2ludC1zZXR0aW5ncyc7XG5cbi8vIEVudW1zXG5leHBvcnQge1xuICBEYXRlUGFydGl0aW9uRGVsaW1pdGVyLFxuICBEYXRlUGFydGl0aW9uU2VxdWVuY2UsXG4gIEVuY29kaW5nVHlwZSxcbiAgRW5jcnlwdGlvbk1vZGUsXG4gIEVuZHBvaW50RW5naW5lLFxuICBFbmRwb2ludFR5cGUsXG4gIEthZmthU2VjdXJpdHlQcm90b2NvbCxcbiAgTWVzc2FnZUZvcm1hdCxcbiAgTWlncmF0aW9uVHlwZSxcbiAgTW9uZ29BdXRoTWVjaGFuaXNtLFxuICBNb25nb0F1dGhUeXBlLFxuICBNb25nb05lc3RpbmdMZXZlbCxcbiAgTXlTcWxUYXJnZXREYlR5cGUsXG4gIE9yYWNsZUNkY1BsdWdpbixcbiAgT3JhY2xlTnVtYmVyRGF0YXR5cGVTY2FsZSxcbiAgUGFycXVldFZlcnNpb24sXG4gIFBvc3RncmVzQ2RjUGx1Z2luLFxuICBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MsXG4gIFMzRGF0YUZvcm1hdCxcbiAgU3FsU2VydmVyU2FmZWd1YXJkUG9saWN5LFxufSBmcm9tICcuL2VudW1zJztcbiJdfQ==
|
|
@@ -215,5 +215,5 @@ class DmsMigrationPipeline extends constructs_1.Construct {
|
|
|
215
215
|
}
|
|
216
216
|
exports.DmsMigrationPipeline = DmsMigrationPipeline;
|
|
217
217
|
_a = JSII_RTTI_SYMBOL_1;
|
|
218
|
-
DmsMigrationPipeline[_a] = { fqn: "cdk-dms-replication.DmsMigrationPipeline", version: "0.1.
|
|
218
|
+
DmsMigrationPipeline[_a] = { fqn: "cdk-dms-replication.DmsMigrationPipeline", version: "0.1.13" };
|
|
219
219
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21pZ3JhdGlvbi1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUduQyw2Q0FBNkM7QUFDN0MsMkNBQXVDO0FBQ3ZDLDJDQUF3RTtBQUN4RSx5Q0FBeUU7QUFDekUsbUNBQWdGO0FBQ2hGLGlFQUFnRTtBQUNoRSx5REFBd0Q7QUFDeEQscURBQWlEO0FBaVBqRCw4RUFBOEU7QUFDOUUsWUFBWTtBQUNaLDhFQUE4RTtBQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ0c7QUFDSCxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBZ0NqRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUM7UUFFeEQsMEVBQTBFO1FBQzFFLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsb0RBQW9EO1FBQ3BELGtFQUFrRTtRQUNsRSwwRUFBMEU7UUFDMUUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsNEJBQWdCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsMEVBQTBFO1FBQzFFLGtDQUFrQztRQUNsQywwRUFBMEU7UUFDMUUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FB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QyxDQUFDO0lBRUwsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxrQkFBa0I7SUFDbEIsOEVBQThFO0lBRXRFLGFBQWEsQ0FBQyxLQUFnQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUN6QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDekQsSUFBSSxTQUFTLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLHdFQUF3RSxDQUN6RSxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLENBQ25FLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQ3pELElBQUksU0FBUyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FDYix3RUFBd0UsQ0FDekUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksS0FBSyxDQUNiLGtFQUFrRSxDQUNuRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBck5ILG9EQXNOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgZW5zdXJlRG1zQ2xvdWRXYXRjaFJvbGUsIGVuc3VyZURtc1ZwY1JvbGUgfSBmcm9tICcuL2Rtcy1yb2xlcyc7XG5pbXBvcnQgeyBEbXNFbmRwb2ludCwgRG1zRW5kcG9pbnRQcm9wcywgSURtc0VuZHBvaW50IH0gZnJvbSAnLi9lbmRwb2ludCc7XG5pbXBvcnQgeyBFbmRwb2ludFR5cGUsIE1pZ3JhdGlvblR5cGUsIFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcyB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgRG1zUmVwbGljYXRpb25JbnN0YW5jZSB9IGZyb20gJy4vcmVwbGljYXRpb24taW5zdGFuY2UnO1xuaW1wb3J0IHsgRG1zUmVwbGljYXRpb25UYXNrIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi10YXNrJztcbmltcG9ydCB7IFRhYmxlTWFwcGluZ3MgfSBmcm9tICcuL3RhYmxlLW1hcHBpbmdzJztcbmltcG9ydCB7IFRhc2tTZXR0aW5ncyB9IGZyb20gJy4vdGFzay1zZXR0aW5ncyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBzb3VyY2UgZW5kcG9pbnQgb2YgYSB7QGxpbmsgRG1zTWlncmF0aW9uUGlwZWxpbmV9LlxuICogRXh0ZW5kcyB7QGxpbmsgRG1zRW5kcG9pbnRQcm9wc30gYnV0IG9taXRzIGBlbmRwb2ludFR5cGVgIChhbHdheXMgU09VUkNFKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VFbmRwb2ludE9wdGlvbnMge1xuICByZWFkb25seSBlbmdpbmU6IERtc0VuZHBvaW50UHJvcHNbJ2VuZ2luZSddO1xuICByZWFkb25seSBlbmRwb2ludElkZW50aWZpZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNlcnZlck5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWJhc2UgcGFzc3dvcmQuIFRoZSByZXNvbHZlZCB2YWx1ZSBpcyBzdG9yZWQgYXMgKipwbGFpbnRleHQqKiBpbiB0aGVcbiAgICogQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuIFByZWZlciBgc2VjcmV0c01hbmFnZXJTZWNyZXRJZGAgaW4gdGhlXG4gICAqIGVuZ2luZS1zcGVjaWZpYyBzZXR0aW5ncyBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMuXG4gICAqL1xuICByZWFkb25seSBwYXNzd29yZD86IGNkay5TZWNyZXRWYWx1ZTtcbiAgcmVhZG9ubHkgZGF0YWJhc2VOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBleHRyYUNvbm5lY3Rpb25BdHRyaWJ1dGVzPzogc3RyaW5nO1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3NsTW9kZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbXlTcWxTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ215U3FsU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcG9zdGdyZVNxbFNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1sncG9zdGdyZVNxbFNldHRpbmdzJ107XG4gIHJlYWRvbmx5IG9yYWNsZVNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snb3JhY2xlU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgc3FsU2VydmVyU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydzcWxTZXJ2ZXJTZXR0aW5ncyddO1xuICByZWFkb25seSBzYXBBc2VTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3NhcEFzZVNldHRpbmdzJ107XG4gIHJlYWRvbmx5IGRiMlNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snZGIyU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgbW9uZ29EYlNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snbW9uZ29EYlNldHRpbmdzJ107XG4gIHJlYWRvbmx5IHMzU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydzM1NldHRpbmdzJ107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHRhcmdldCBlbmRwb2ludCBvZiBhIHtAbGluayBEbXNNaWdyYXRpb25QaXBlbGluZX0uXG4gKiBFeHRlbmRzIHtAbGluayBEbXNFbmRwb2ludFByb3BzfSBidXQgb21pdHMgYGVuZHBvaW50VHlwZWAgKGFsd2F5cyBUQVJHRVQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEVuZHBvaW50T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGVuZ2luZTogRG1zRW5kcG9pbnRQcm9wc1snZW5naW5lJ107XG4gIHJlYWRvbmx5IGVuZHBvaW50SWRlbnRpZmllcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc2VydmVyTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhYmFzZSBwYXNzd29yZC4gVGhlIHJlc29sdmVkIHZhbHVlIGlzIHN0b3JlZCBhcyAqKnBsYWludGV4dCoqIGluIHRoZVxuICAgKiBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZS4gUHJlZmVyIGBzZWNyZXRzTWFuYWdlclNlY3JldElkYCBpbiB0aGVcbiAgICogZW5naW5lLXNwZWNpZmljIHNldHRpbmdzIGZvciBwcm9kdWN0aW9uIHdvcmtsb2Fkcy5cbiAgICovXG4gIHJlYWRvbmx5IHBhc3N3b3JkPzogY2RrLlNlY3JldFZhbHVlO1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICByZWFkb25seSBzc2xNb2RlPzogc3RyaW5nO1xuICByZWFkb25seSBteVNxbFNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snbXlTcWxTZXR0aW5ncyddO1xuICByZWFkb25seSBwb3N0Z3JlU3FsU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydwb3N0Z3JlU3FsU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgb3JhY2xlU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydvcmFjbGVTZXR0aW5ncyddO1xuICByZWFkb25seSBzcWxTZXJ2ZXJTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3NxbFNlcnZlclNldHRpbmdzJ107XG4gIHJlYWRvbmx5IHNhcEFzZVNldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1snc2FwQXNlU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgZGIyU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydkYjJTZXR0aW5ncyddO1xuICByZWFkb25seSBtb25nb0RiU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydtb25nb0RiU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgczNTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3MzU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgZHluYW1vRGJTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ2R5bmFtb0RiU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcmVkc2hpZnRTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3JlZHNoaWZ0U2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkga2luZXNpc1NldHRpbmdzPzogRG1zRW5kcG9pbnRQcm9wc1sna2luZXNpc1NldHRpbmdzJ107XG4gIHJlYWRvbmx5IGthZmthU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWydrYWZrYVNldHRpbmdzJ107XG4gIHJlYWRvbmx5IG9wZW5TZWFyY2hTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ29wZW5TZWFyY2hTZXR0aW5ncyddO1xuICByZWFkb25seSBuZXB0dW5lU2V0dGluZ3M/OiBEbXNFbmRwb2ludFByb3BzWyduZXB0dW5lU2V0dGluZ3MnXTtcbiAgcmVhZG9ubHkgcmVkaXNTZXR0aW5ncz86IERtc0VuZHBvaW50UHJvcHNbJ3JlZGlzU2V0dGluZ3MnXTtcbn1cblxuLyoqIFRvcC1sZXZlbCBwcm9wcyBmb3Ige0BsaW5rIERtc01pZ3JhdGlvblBpcGVsaW5lfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG1zTWlncmF0aW9uUGlwZWxpbmVQcm9wcyB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBWUEMgaW4gd2hpY2ggdG8gcGxhY2UgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBUaGUgaW5zdGFuY2UgaXMgcGxhY2VkIGluIHByaXZhdGUgc3VibmV0cy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCBzZWxlY3Rpb24gZm9yIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQgcHJpdmF0ZSBzdWJuZXRzIHdpdGggZWdyZXNzXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogUmVwbGljYXRpb24gaW5zdGFuY2UgY2xhc3MuXG4gICAqIEBkZWZhdWx0IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcy5SNklfTEFSR0VcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcz86IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcztcblxuICAvKipcbiAgICogQWxsb2NhdGVkIHN0b3JhZ2UgZm9yIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpbiBHQi5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBNdWx0aS1BWi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmdpbmUgdmVyc2lvbiBmb3IgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgaW4gdGhlIHJlZ2lvbiAoY2hvc2VuIGJ5IERNUylcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtNUyBrZXkgZm9yIGVuY3J5cHRpbmcgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIHN0b3JhZ2UgYXQgcmVzdC5cbiAgICogQSBuZXcga2V5IGlzIGNyZWF0ZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRW5kcG9pbnRzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogU291cmNlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24uXG4gICAqIFByb3ZpZGUgdGhpcyBPUiBgZXhpc3RpbmdTb3VyY2VFbmRwb2ludGAg4oCUIG5vdCBib3RoLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlRW5kcG9pbnQ/OiBTb3VyY2VFbmRwb2ludE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFuIGV4aXN0aW5nIHtAbGluayBJRG1zRW5kcG9pbnR9IHRvIHVzZSBhcyB0aGUgc291cmNlLlxuICAgKiBQcm92aWRlIHRoaXMgT1IgYHNvdXJjZUVuZHBvaW50YCDigJQgbm90IGJvdGguXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1NvdXJjZUVuZHBvaW50PzogSURtc0VuZHBvaW50O1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgZW5kcG9pbnQgY29uZmlndXJhdGlvbi5cbiAgICogUHJvdmlkZSB0aGlzIE9SIGBleGlzdGluZ1RhcmdldEVuZHBvaW50YCDigJQgbm90IGJvdGguXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRFbmRwb2ludD86IFRhcmdldEVuZHBvaW50T3B0aW9ucztcblxuICAvKipcbiAgICogQW4gZXhpc3Rpbmcge0BsaW5rIElEbXNFbmRwb2ludH0gdG8gdXNlIGFzIHRoZSB0YXJnZXQuXG4gICAqIFByb3ZpZGUgdGhpcyBPUiBgdGFyZ2V0RW5kcG9pbnRgIOKAlCBub3QgYm90aC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nVGFyZ2V0RW5kcG9pbnQ/OiBJRG1zRW5kcG9pbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBSZXBsaWNhdGlvbiB0YXNrXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogVGhlIHR5cGUgb2YgbWlncmF0aW9uIHRvIHBlcmZvcm0uICovXG4gIHJlYWRvbmx5IG1pZ3JhdGlvblR5cGU6IE1pZ3JhdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRhYmxlIG1hcHBpbmdzIEpTT04gc3RyaW5nLlxuICAgKiBVc2Uge0BsaW5rIFRhYmxlTWFwcGluZ3N9IHRvIGJ1aWxkIHRoaXMuXG4gICAqIERlZmF1bHRzIHRvIFwiaW5jbHVkZSBhbGwgdGFibGVzIGluIGFsbCBzY2hlbWFzXCIgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVNYXBwaW5ncz86IHN0cmluZztcblxuICAvKipcbiAgICogVGFzayBzZXR0aW5ncyBKU09OIHN0cmluZy5cbiAgICogVXNlIHtAbGluayBUYXNrU2V0dGluZ3N9IHRvIGJ1aWxkIHRoaXMuXG4gICAqIFNlbnNpYmxlIGRlZmF1bHRzIGFyZSBhcHBsaWVkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHRhc2tTZXR0aW5ncz86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0YXJ0IHRpbWUgKElTTy04NjAxIHN0cmluZyBvciBVbml4IGVwb2NoIHNlY29uZHMpLlxuICAgKiBPbmx5IHVzZWQgd2hlbiBtaWdyYXRpb25UeXBlIGluY2x1ZGVzIENEQy5cbiAgICovXG4gIHJlYWRvbmx5IGNkY1N0YXJ0VGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0YXJ0IHBvc2l0aW9uIChMU04gb3IgZXF1aXZhbGVudCkuXG4gICAqIE9ubHkgdXNlZCB3aGVuIG1pZ3JhdGlvblR5cGUgaW5jbHVkZXMgQ0RDLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RjU3RhcnRQb3NpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ0RDIHN0b3AgcG9zaXRpb24uXG4gICAqIE9ubHkgdXNlZCB3aGVuIG1pZ3JhdGlvblR5cGUgaW5jbHVkZXMgQ0RDLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RjU3RvcFBvc2l0aW9uPzogc3RyaW5nO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gT2JzZXJ2YWJpbGl0eVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIGEgQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSB0YXNrLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVDbG91ZFdhdGNoTG9ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldGVudGlvbiBwZXJpb2QgZm9yIHRoZSBDbG91ZFdhdGNoIGxvZyBncm91cC5cbiAgICogQGRlZmF1bHQgbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUmV0ZW50aW9uPzogbG9ncy5SZXRlbnRpb25EYXlzO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSUFNIC8gc2VydmljZSByb2xlc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSB0d28gYWNjb3VudC1sZXZlbCBETVMgc2VydmljZSByb2xlcyAoYGRtcy12cGMtcm9sZWBcbiAgICogYW5kIGBkbXMtY2xvdWR3YXRjaC1sb2dzLXJvbGVgKSByZXF1aXJlZCBieSBETVMuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcm9sZXMgYXJlIGNyZWF0ZWQgaWRlbXBvdGVudGx5IHZpYSBhIGN1c3RvbSByZXNvdXJjZTogaWZcbiAgICogZWl0aGVyIHJvbGUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGFjY291bnQgKGNyZWF0ZWQgYnkgYW5vdGhlciBzdGFjayBvclxuICAgKiBtYW51YWxseSksIHRoZSBleGlzdGluZyByb2xlIGlzIHNpbGVudGx5IHJldXNlZCBhbmQgaXRzIHRydXN0IHBvbGljeSBpc1xuICAgKiBjb3JyZWN0ZWQgaWYgbmVjZXNzYXJ5LiBUaGUgcm9sZXMgYXJlIGNyZWF0ZWQgd2l0aCBgUmVtb3ZhbFBvbGljeS5SRVRBSU5gXG4gICAqIGFuZCBhcmUgKipub3QqKiBsaWZlY3ljbGUtbWFuYWdlZCBieSB0aGlzIHN0YWNrIOKAlCB0aGV5IHdpbGwgbm90IGJlIGRlbGV0ZWRcbiAgICogd2hlbiB0aGUgc3RhY2sgaXMgZGVzdHJveWVkLiBJZiB5b3UgcmVxdWlyZSB0aGUgcm9sZXMgdG8gYmVcbiAgICogbGlmZWN5Y2xlLW1hbmFnZWQsIGNyZWF0ZSB0aGVtIGluIGEgZGVkaWNhdGVkIHN0YWNrIGFuZCBzZXQgdGhpcyB0b1xuICAgKiBgZmFsc2VgLCB0aGVuIHBhc3MgY3Jvc3Mtc3RhY2sgcmVmZXJlbmNlcyBhcyBuZWVkZWQuXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCwgdGhlIGNvbnN0cnVjdCBleHBlY3RzIHRoZSByb2xlcyB0byBhbHJlYWR5IGJlIHByZXNlbnQgYW5kXG4gICAqIHNraXBzIGNyZWF0aW5nIHRoZW0uIFRoZSBgZG1zVnBjUm9sZWAgYW5kIGBkbXNDbG91ZFdhdGNoUm9sZWAgcHJvcGVydGllc1xuICAgKiB3aWxsIGJlIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVEbXNTZXJ2aWNlUm9sZXM/OiBib29sZWFuO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgYXBwbGllZCB0byBhbGwgcmVzb3VyY2VzIGluIHRoZSBwaXBlbGluZS5cbiAgICogQGRlZmF1bHQgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IGNkay5SZW1vdmFsUG9saWN5O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbnN0cnVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQW4gTDMgQ0RLIHBhdHRlcm4gY29uc3RydWN0IHRoYXQgcHJvdmlzaW9ucyBhIGNvbXBsZXRlIERNUyBtaWdyYXRpb24gcGlwZWxpbmU6XG4gKlxuICogLSAqKlJlcGxpY2F0aW9uIGluc3RhbmNlKiog4oCUIHBsYWNlZCBpbiBwcml2YXRlIHN1Ym5ldHMgd2l0aCBLTVMgZW5jcnlwdGlvblxuICogICBhbmQgYSBkZWRpY2F0ZWQgc2VjdXJpdHkgZ3JvdXAuXG4gKiAtICoqU291cmNlIGVuZHBvaW50Kiog4oCUIHN1cHBvcnRzIGV2ZXJ5IGVuZ2luZSBETVMgc3VwcG9ydHMuXG4gKiAtICoqVGFyZ2V0IGVuZHBvaW50Kiog4oCUIHN1cHBvcnRzIGV2ZXJ5IGVuZ2luZSBETVMgc3VwcG9ydHMuXG4gKiAtICoqUmVwbGljYXRpb24gdGFzayoqIOKAlCB3aXJlcyB0aGUgaW5zdGFuY2UsIGVuZHBvaW50cywgdGFibGUgbWFwcGluZ3MgYW5kXG4gKiAgIHRhc2sgc2V0dGluZ3MgdG9nZXRoZXIuXG4gKiAtICoqSUFNIHJvbGUqKiDigJQgZ3JhbnRzIERNUyBwZXJtaXNzaW9uIHRvIHdyaXRlIHRvIENsb3VkV2F0Y2ggTG9ncy5cbiAqIC0gKipDbG91ZFdhdGNoIGxvZyBncm91cCoqIOKAlCAob3B0aW9uYWwpIHJldGFpbnMgdGFzayBsb2dzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNeVNRTCDihpIgQXVyb3JhIFBvc3RncmVTUUwsIGZ1bGwtbG9hZC1hbmQtQ0RDXG4gKiBjb25zdCBwaXBlbGluZSA9IG5ldyBEbXNNaWdyYXRpb25QaXBlbGluZSh0aGlzLCAnTWlncmF0aW9uUGlwZWxpbmUnLCB7XG4gKiAgIHZwYyxcbiAqICAgbWlncmF0aW9uVHlwZTogTWlncmF0aW9uVHlwZS5GVUxMX0xPQURfQU5EX0NEQyxcbiAqICAgc291cmNlRW5kcG9pbnQ6IHtcbiAqICAgICBlbmdpbmU6IEVuZHBvaW50RW5naW5lLk1ZU1FMLFxuICogICAgIHNlcnZlck5hbWU6ICdteXNxbC5leGFtcGxlLmNvbScsXG4gKiAgICAgcG9ydDogMzMwNixcbiAqICAgICB1c2VybmFtZTogJ2Rtc191c2VyJyxcbiAqICAgICBwYXNzd29yZDogY2RrLlNlY3JldFZhbHVlLnNlY3JldHNNYW5hZ2VyKCdteXNxbC1kbXMtc2VjcmV0JyksXG4gKiAgICAgZGF0YWJhc2VOYW1lOiAnbXlkYicsXG4gKiAgIH0sXG4gKiAgIHRhcmdldEVuZHBvaW50OiB7XG4gKiAgICAgZW5naW5lOiBFbmRwb2ludEVuZ2luZS5BVVJPUkFfUE9TVEdSRVNRTCxcbiAqICAgICBzZXJ2ZXJOYW1lOiBjbHVzdGVyLmNsdXN0ZXJFbmRwb2ludC5ob3N0bmFtZSxcbiAqICAgICBwb3J0OiA1NDMyLFxuICogICAgIHVzZXJuYW1lOiAnZG1zX3VzZXInLFxuICogICAgIHBhc3N3b3JkOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoJ2F1cm9yYS1kbXMtc2VjcmV0JyksXG4gKiAgICAgZGF0YWJhc2VOYW1lOiAnbXlkYicsXG4gKiAgIH0sXG4gKiAgIHRhYmxlTWFwcGluZ3M6IG5ldyBUYWJsZU1hcHBpbmdzKCkuaW5jbHVkZVNjaGVtYSgncHVibGljJykudG9Kc29uKCksXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIERtc01pZ3JhdGlvblBpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEluc3RhbmNlIGZpZWxkc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogVGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIHByb3Zpc2lvbmVkIGJ5IHRoaXMgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uSW5zdGFuY2U6IERtc1JlcGxpY2F0aW9uSW5zdGFuY2U7XG5cbiAgLyoqIFRoZSBzb3VyY2UgZW5kcG9pbnQgdXNlZCBieSB0aGlzIHBpcGVsaW5lLiAqL1xuICByZWFkb25seSBzb3VyY2U6IElEbXNFbmRwb2ludDtcblxuICAvKiogVGhlIHRhcmdldCBlbmRwb2ludCB1c2VkIGJ5IHRoaXMgcGlwZWxpbmUuICovXG4gIHJlYWRvbmx5IHRhcmdldDogSURtc0VuZHBvaW50O1xuXG4gIC8qKiBUaGUgcmVwbGljYXRpb24gdGFzayB0aGF0IGRyaXZlcyB0aGUgbWlncmF0aW9uLiAqL1xuICByZWFkb25seSByZXBsaWNhdGlvblRhc2s6IERtc1JlcGxpY2F0aW9uVGFzaztcblxuICAvKiogQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgZm9yIHRoZSB0YXNrIChpZiBlbmFibGVDbG91ZFdhdGNoTG9ncyBpcyB0cnVlKS4gKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA/OiBsb2dzLkxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Qgd3JhcHBpbmcgdGhlIGN1c3RvbSByZXNvdXJjZXMgdGhhdCBjcmVhdGVkIHRoZSBgZG1zLWNsb3Vkd2F0Y2gtbG9ncy1yb2xlYC5cbiAgICogYHVuZGVmaW5lZGAgd2hlbiBgY3JlYXRlRG1zU2VydmljZVJvbGVzYCBpcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgZG1zQ2xvdWRXYXRjaFJvbGU/OiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCB3cmFwcGluZyB0aGUgY3VzdG9tIHJlc291cmNlcyB0aGF0IGNyZWF0ZWQgdGhlIGBkbXMtdnBjLXJvbGVgLlxuICAgKiBgdW5kZWZpbmVkYCB3aGVuIGBjcmVhdGVEbXNTZXJ2aWNlUm9sZXNgIGlzIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBkbXNWcGNSb2xlPzogQ29uc3RydWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMudmFsaWRhdGVQcm9wcyhwcm9wcyk7XG5cbiAgICBjb25zdCByZW1vdmFsUG9saWN5ID0gcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZO1xuICAgIGNvbnN0IGNyZWF0ZVJvbGVzID0gcHJvcHMuY3JlYXRlRG1zU2VydmljZVJvbGVzID8/IHRydWU7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGRtcy12cGMtcm9sZSDigJQgYWNjb3VudC1sZXZlbCBzaW5nbGV0b24gcmVxdWlyZWQgYnkgRE1TIHRvIHBsYWNlXG4gICAgLy8gcmVwbGljYXRpb24gaW5zdGFuY2VzIGluc2lkZSBhIFZQQy4gTXVzdCBleGlzdCBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gQ2ZuUmVwbGljYXRpb25JbnN0YW5jZSBpcyBjcmVhdGVkIGluIHRoZSBhY2NvdW50LlxuICAgIC8vIFNraXAgd2hlbiBjcmVhdGVEbXNTZXJ2aWNlUm9sZXMgaXMgZmFsc2UgKHJvbGVzIGFscmVhZHkgZXhpc3QpLlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKGNyZWF0ZVJvbGVzKSB7XG4gICAgICB0aGlzLmRtc1ZwY1JvbGUgPSBlbnN1cmVEbXNWcGNSb2xlKGNkay5TdGFjay5vZih0aGlzKSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDbG91ZFdhdGNoIGxvZyBncm91cCAmIElBTSByb2xlXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBlbmFibGVMb2dzID0gcHJvcHMuZW5hYmxlQ2xvdWRXYXRjaExvZ3MgPz8gdHJ1ZTtcblxuICAgIGlmIChlbmFibGVMb2dzKSB7XG4gICAgICB0aGlzLmxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ1Rhc2tMb2dHcm91cCcsIHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy9kbXMvdGFza3MvJHtpZH1gLFxuICAgICAgICByZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5LFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjcmVhdGVSb2xlcykge1xuICAgICAgICAvLyBkbXMtY2xvdWR3YXRjaC1sb2dzLXJvbGUgaXMgYW4gYWNjb3VudC1sZXZlbCBzaW5nbGV0b24g4oCUIERNUyByZXF1aXJlc1xuICAgICAgICAvLyB0aGlzIGV4YWN0IG5hbWUuIEd1YXJkIHdpdGggYSBzdGFjay1sZXZlbCBzaW5nbGV0b24gc28gZGVwbG95aW5nIG11bHRpcGxlXG4gICAgICAgIC8vIHBpcGVsaW5lcyBpbiB0aGUgc2FtZSBzdGFjayBkb2Vzbid0IGNyZWF0ZSBkdXBsaWNhdGUgcm9sZXMuXG4gICAgICAgIHRoaXMuZG1zQ2xvdWRXYXRjaFJvbGUgPSBlbnN1cmVEbXNDbG91ZFdhdGNoUm9sZShjZGsuU3RhY2sub2YodGhpcykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRoaXMucmVwbGljYXRpb25JbnN0YW5jZSA9IG5ldyBEbXNSZXBsaWNhdGlvbkluc3RhbmNlKHRoaXMsICdSZXBsaWNhdGlvbkluc3RhbmNlJywge1xuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgcmVwbGljYXRpb25JbnN0YW5jZUNsYXNzOiBwcm9wcy5yZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MsXG4gICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlLFxuICAgICAgbXVsdGlBejogcHJvcHMubXVsdGlBeixcbiAgICAgIGVuZ2luZVZlcnNpb246IHByb3BzLmVuZ2luZVZlcnNpb24sXG4gICAgICBrbXNLZXk6IHByb3BzLmVuY3J5cHRpb25LZXksXG4gICAgICByZW1vdmFsUG9saWN5LFxuICAgIH0pO1xuICAgIC8vIGRtcy12cGMtcm9sZSBtdXN0IGV4aXN0IGJlZm9yZSBETVMgY2FuIGRlc2NyaWJlIFZQQyBzdWJuZXRzIChzdWJuZXQgZ3JvdXApXG4gICAgLy8gb3IgcGxhY2UgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIGluc2lkZSBhIFZQQy5cbiAgICBpZiAodGhpcy5kbXNWcGNSb2xlKSB7XG4gICAgICB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2Uuc3VibmV0R3JvdXAubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuZG1zVnBjUm9sZSk7XG4gICAgICB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2UuY2ZuUmVwbGljYXRpb25JbnN0YW5jZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5kbXNWcGNSb2xlKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNvdXJjZSBlbmRwb2ludFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgaWYgKHByb3BzLmV4aXN0aW5nU291cmNlRW5kcG9pbnQpIHtcbiAgICAgIHRoaXMuc291cmNlID0gcHJvcHMuZXhpc3RpbmdTb3VyY2VFbmRwb2ludDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc291cmNlT3B0cyA9IHByb3BzLnNvdXJjZUVuZHBvaW50ITtcbiAgICAgIHRoaXMuc291cmNlID0gbmV3IERtc0VuZHBvaW50KHRoaXMsICdTb3VyY2VFbmRwb2ludCcsIHtcbiAgICAgICAgZW5kcG9pbnRUeXBlOiBFbmRwb2ludFR5cGUuU09VUkNFLFxuICAgICAgICBlbmdpbmU6IHNvdXJjZU9wdHMuZW5naW5lLFxuICAgICAgICBlbmRwb2ludElkZW50aWZpZXI6IHNvdXJjZU9wdHMuZW5kcG9pbnRJZGVudGlmaWVyLFxuICAgICAgICBzZXJ2ZXJOYW1lOiBzb3VyY2VPcHRzLnNlcnZlck5hbWUsXG4gICAgICAgIHBvcnQ6IHNvdXJjZU9wdHMucG9ydCxcbiAgICAgICAgdXNlcm5hbWU6IHNvdXJjZU9wdHMudXNlcm5hbWUsXG4gICAgICAgIHBhc3N3b3JkOiBzb3VyY2VPcHRzLnBhc3N3b3JkLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHNvdXJjZU9wdHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICBleHRyYUNvbm5lY3Rpb25BdHRyaWJ1dGVzOiBzb3VyY2VPcHRzLmV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXMsXG4gICAgICAgIGNlcnRpZmljYXRlQXJuOiBzb3VyY2VPcHRzLmNlcnRpZmljYXRlQXJuLFxuICAgICAgICBzc2xNb2RlOiBzb3VyY2VPcHRzLnNzbE1vZGUsXG4gICAgICAgIG15U3FsU2V0dGluZ3M6IHNvdXJjZU9wdHMubXlTcWxTZXR0aW5ncyxcbiAgICAgICAgcG9zdGdyZVNxbFNldHRpbmdzOiBzb3VyY2VPcHRzLnBvc3RncmVTcWxTZXR0aW5ncyxcbiAgICAgICAgb3JhY2xlU2V0dGluZ3M6IHNvdXJjZU9wdHMub3JhY2xlU2V0dGluZ3MsXG4gICAgICAgIHNxbFNlcnZlclNldHRpbmdzOiBzb3VyY2VPcHRzLnNxbFNlcnZlclNldHRpbmdzLFxuICAgICAgICBzYXBBc2VTZXR0aW5nczogc291cmNlT3B0cy5zYXBBc2VTZXR0aW5ncyxcbiAgICAgICAgZGIyU2V0dGluZ3M6IHNvdXJjZU9wdHMuZGIyU2V0dGluZ3MsXG4gICAgICAgIG1vbmdvRGJTZXR0aW5nczogc291cmNlT3B0cy5tb25nb0RiU2V0dGluZ3MsXG4gICAgICAgIHMzU2V0dGluZ3M6IHNvdXJjZU9wdHMuczNTZXR0aW5ncyxcbiAgICAgICAgcmVtb3ZhbFBvbGljeSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVGFyZ2V0IGVuZHBvaW50XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdUYXJnZXRFbmRwb2ludCkge1xuICAgICAgdGhpcy50YXJnZXQgPSBwcm9wcy5leGlzdGluZ1RhcmdldEVuZHBvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0YXJnZXRPcHRzID0gcHJvcHMudGFyZ2V0RW5kcG9pbnQhO1xuICAgICAgdGhpcy50YXJnZXQgPSBuZXcgRG1zRW5kcG9pbnQodGhpcywgJ1RhcmdldEVuZHBvaW50Jywge1xuICAgICAgICBlbmRwb2ludFR5cGU6IEVuZHBvaW50VHlwZS5UQVJHRVQsXG4gICAgICAgIGVuZ2luZTogdGFyZ2V0T3B0cy5lbmdpbmUsXG4gICAgICAgIGVuZHBvaW50SWRlbnRpZmllcjogdGFyZ2V0T3B0cy5lbmRwb2ludElkZW50aWZpZXIsXG4gICAgICAgIHNlcnZlck5hbWU6IHRhcmdldE9wdHMuc2VydmVyTmFtZSxcbiAgICAgICAgcG9ydDogdGFyZ2V0T3B0cy5wb3J0LFxuICAgICAgICB1c2VybmFtZTogdGFyZ2V0T3B0cy51c2VybmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IHRhcmdldE9wdHMucGFzc3dvcmQsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogdGFyZ2V0T3B0cy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIGV4dHJhQ29ubmVjdGlvbkF0dHJpYnV0ZXM6IHRhcmdldE9wdHMuZXh0cmFDb25uZWN0aW9uQXR0cmlidXRlcyxcbiAgICAgICAgY2VydGlmaWNhdGVBcm46IHRhcmdldE9wdHMuY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIHNzbE1vZGU6IHRhcmdldE9wdHMuc3NsTW9kZSxcbiAgICAgICAgbXlTcWxTZXR0aW5nczogdGFyZ2V0T3B0cy5teVNxbFNldHRpbmdzLFxuICAgICAgICBwb3N0Z3JlU3FsU2V0dGluZ3M6IHRhcmdldE9wdHMucG9zdGdyZVNxbFNldHRpbmdzLFxuICAgICAgICBvcmFjbGVTZXR0aW5nczogdGFyZ2V0T3B0cy5vcmFjbGVTZXR0aW5ncyxcbiAgICAgICAgc3FsU2VydmVyU2V0dGluZ3M6IHRhcmdldE9wdHMuc3FsU2VydmVyU2V0dGluZ3MsXG4gICAgICAgIHNhcEFzZVNldHRpbmdzOiB0YXJnZXRPcHRzLnNhcEFzZVNldHRpbmdzLFxuICAgICAgICBkYjJTZXR0aW5nczogdGFyZ2V0T3B0cy5kYjJTZXR0aW5ncyxcbiAgICAgICAgbW9uZ29EYlNldHRpbmdzOiB0YXJnZXRPcHRzLm1vbmdvRGJTZXR0aW5ncyxcbiAgICAgICAgczNTZXR0aW5nczogdGFyZ2V0T3B0cy5zM1NldHRpbmdzLFxuICAgICAgICBkeW5hbW9EYlNldHRpbmdzOiB0YXJnZXRPcHRzLmR5bmFtb0RiU2V0dGluZ3MsXG4gICAgICAgIHJlZHNoaWZ0U2V0dGluZ3M6IHRhcmdldE9wdHMucmVkc2hpZnRTZXR0aW5ncyxcbiAgICAgICAga2luZXNpc1NldHRpbmdzOiB0YXJnZXRPcHRzLmtpbmVzaXNTZXR0aW5ncyxcbiAgICAgICAga2Fma2FTZXR0aW5nczogdGFyZ2V0T3B0cy5rYWZrYVNldHRpbmdzLFxuICAgICAgICBvcGVuU2VhcmNoU2V0dGluZ3M6IHRhcmdldE9wdHMub3BlblNlYXJjaFNldHRpbmdzLFxuICAgICAgICBuZXB0dW5lU2V0dGluZ3M6IHRhcmdldE9wdHMubmVwdHVuZVNldHRpbmdzLFxuICAgICAgICByZWRpc1NldHRpbmdzOiB0YXJnZXRPcHRzLnJlZGlzU2V0dGluZ3MsXG4gICAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFRhYmxlIG1hcHBpbmdzIOKAlCBkZWZhdWx0IHRvIFwiaW5jbHVkZSBldmVyeXRoaW5nXCJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHRhYmxlTWFwcGluZ3MgPVxuICAgICAgcHJvcHMudGFibGVNYXBwaW5ncyA/PyBuZXcgVGFibGVNYXBwaW5ncygpLmluY2x1ZGVTY2hlbWEoJyUnKS50b0pzb24oKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gdGFza1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5yZXBsaWNhdGlvblRhc2sgPSBuZXcgRG1zUmVwbGljYXRpb25UYXNrKHRoaXMsICdSZXBsaWNhdGlvblRhc2snLCB7XG4gICAgICByZXBsaWNhdGlvbkluc3RhbmNlQXJuOiB0aGlzLnJlcGxpY2F0aW9uSW5zdGFuY2UucmVwbGljYXRpb25JbnN0YW5jZUFybixcbiAgICAgIHNvdXJjZUVuZHBvaW50OiB0aGlzLnNvdXJjZSxcbiAgICAgIHRhcmdldEVuZHBvaW50OiB0aGlzLnRhcmdldCxcbiAgICAgIG1pZ3JhdGlvblR5cGU6IHByb3BzLm1pZ3JhdGlvblR5cGUsXG4gICAgICB0YWJsZU1hcHBpbmdzLFxuICAgICAgdGFza1NldHRpbmdzOiBwcm9wcy50YXNrU2V0dGluZ3MsXG4gICAgICBjZGNTdGFydFRpbWU6IHByb3BzLmNkY1N0YXJ0VGltZSxcbiAgICAgIGNkY1N0YXJ0UG9zaXRpb246IHByb3BzLmNkY1N0YXJ0UG9zaXRpb24sXG4gICAgICBjZGNTdG9wUG9zaXRpb246IHByb3BzLmNkY1N0b3BQb3NpdGlvbixcbiAgICAgIHJlbW92YWxQb2xpY3ksXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQcml2YXRlIGhlbHBlcnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVByb3BzKHByb3BzOiBEbXNNaWdyYXRpb25QaXBlbGluZVByb3BzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzU291cmNlID0gISFwcm9wcy5zb3VyY2VFbmRwb2ludDtcbiAgICBjb25zdCBoYXNFeGlzdGluZ1NvdXJjZSA9ICEhcHJvcHMuZXhpc3RpbmdTb3VyY2VFbmRwb2ludDtcbiAgICBpZiAoaGFzU291cmNlICYmIGhhc0V4aXN0aW5nU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdQcm92aWRlIGVpdGhlciBgc291cmNlRW5kcG9pbnRgIG9yIGBleGlzdGluZ1NvdXJjZUVuZHBvaW50YCwgbm90IGJvdGguJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzU291cmNlICYmICFoYXNFeGlzdGluZ1NvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnT25lIG9mIGBzb3VyY2VFbmRwb2ludGAgb3IgYGV4aXN0aW5nU291cmNlRW5kcG9pbnRgIGlzIHJlcXVpcmVkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RhcmdldCA9ICEhcHJvcHMudGFyZ2V0RW5kcG9pbnQ7XG4gICAgY29uc3QgaGFzRXhpc3RpbmdUYXJnZXQgPSAhIXByb3BzLmV4aXN0aW5nVGFyZ2V0RW5kcG9pbnQ7XG4gICAgaWYgKGhhc1RhcmdldCAmJiBoYXNFeGlzdGluZ1RhcmdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnUHJvdmlkZSBlaXRoZXIgYHRhcmdldEVuZHBvaW50YCBvciBgZXhpc3RpbmdUYXJnZXRFbmRwb2ludGAsIG5vdCBib3RoLicsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWhhc1RhcmdldCAmJiAhaGFzRXhpc3RpbmdUYXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ09uZSBvZiBgdGFyZ2V0RW5kcG9pbnRgIG9yIGBleGlzdGluZ1RhcmdldEVuZHBvaW50YCBpcyByZXF1aXJlZC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -89,5 +89,5 @@ class DmsReplicationInstance extends constructs_1.Construct {
|
|
|
89
89
|
}
|
|
90
90
|
exports.DmsReplicationInstance = DmsReplicationInstance;
|
|
91
91
|
_a = JSII_RTTI_SYMBOL_1;
|
|
92
|
-
DmsReplicationInstance[_a] = { fqn: "cdk-dms-replication.DmsReplicationInstance", version: "0.1.
|
|
92
|
+
DmsReplicationInstance[_a] = { fqn: "cdk-dms-replication.DmsReplicationInstance", version: "0.1.13" };
|
|
93
93
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGljYXRpb24taW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVwbGljYXRpb24taW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBQ3ZDLG1DQUFtRDtBQW9GbkQ7Ozs7O0dBS0c7QUFDSCxNQUFhLHNCQUF1QixTQUFRLHNCQUFTO0lBZ0JuRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQzFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMEVBQTBFO1FBQzFFLFVBQVU7UUFDViwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLGFBQWE7WUFDaEIsS0FBSyxDQUFDLE1BQU07Z0JBQ1osSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7b0JBQ2pDLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFO29CQUNoRSxpQkFBaUIsRUFBRSxJQUFJO29CQUN2QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87aUJBQ2hFLENBQUMsQ0FBQztRQUVMLDBFQUEwRTtRQUMxRSxpQkFBaUI7UUFDakIsMEVBQTBFO1FBQzFFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBQzVDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtnQkFDdEQsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRSxFQUFFO2dCQUNoRSxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENB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LWNkay1saWInO1xuaW1wb3J0ICogYXMgZG1zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1kbXMnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MgfSBmcm9tICcuL2VudW1zJztcblxuLyoqIFByb3BzIGZvciB7QGxpbmsgRG1zUmVwbGljYXRpb25JbnN0YW5jZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIERtc1JlcGxpY2F0aW9uSW5zdGFuY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBJbnN0YW5jZSBjbGFzcyBmb3IgdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3MuUjZJX0xBUkdFXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3M/OiBSZXBsaWNhdGlvbkluc3RhbmNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIFZQQyBpbiB3aGljaCB0byBwbGFjZSB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqIFRoZSBjb25zdHJ1Y3QgY3JlYXRlcyBhIGRlZGljYXRlZCBzdWJuZXQgZ3JvdXAgZnJvbSB0aGUgcHJpdmF0ZSBzdWJuZXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogU3BlY2lmaWMgc3VibmV0cyB0byB1c2UgZm9yIHRoZSByZXBsaWNhdGlvbiBzdWJuZXQgZ3JvdXAuXG4gICAqIERlZmF1bHRzIHRvIGFsbCBwcml2YXRlIHN1Ym5ldHMgaW4gdGhlIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXR0YWNoIHRvIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICogQSBuZXcgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZCBpZiBub25lIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLklTZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBzdG9yYWdlIGF0IHJlc3QuXG4gICAqIEEgbmV3IGtleSBpcyBjcmVhdGVkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZWQgc3RvcmFnZSBpbiBHQi5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBNdWx0aS1BWi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpQXo/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXBsaWNhdGlvbiBpbnN0YW5jZSBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IG1pbm9yIHZlcnNpb24gdXBncmFkZXMgdG8gYmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5IGR1cmluZyBtYWludGVuYW5jZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmVmZXJyZWQgbWFpbnRlbmFuY2Ugd2luZG93LCBlLmcuIFwic3VuOjA0OjAwLXN1bjowNDozMFwiLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcGxpY2F0aW9uIGVuZ2luZSB2ZXJzaW9uLlxuICAgKiBAZGVmYXVsdCBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUgaW4gdGhlIHJlZ2lvbiAoY2hvc2VuIGJ5IERNUylcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExvZ2ljYWwgbmFtZSBvZiB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqIFVzZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIGlkZW50aWZpZXIgYW5kIHJlc291cmNlIG5hbWluZy5cbiAgICogQGRlZmF1bHQgaWQgb2YgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25JbnN0YW5jZUlkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlbW92YWwgcG9saWN5IGFwcGxpZWQgdG8gdGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQW4gTDItc3R5bGUgY29uc3RydWN0IHRoYXQgcHJvdmlzaW9ucyBhIERNUyByZXBsaWNhdGlvbiBpbnN0YW5jZSB3aXRoOlxuICogLSBQcml2YXRlIHN1Ym5ldCBwbGFjZW1lbnQgdmlhIGEgZGVkaWNhdGVkIHN1Ym5ldCBncm91cFxuICogLSBLTVMgZW5jcnlwdGlvbiBhdCByZXN0IChrZXkgY3JlYXRlZCBpZiBub3QgcHJvdmlkZWQpXG4gKiAtIEEgZGVkaWNhdGVkIHNlY3VyaXR5IGdyb3VwIChjcmVhdGVkIGlmIG5vdCBwcm92aWRlZClcbiAqL1xuZXhwb3J0IGNsYXNzIERtc1JlcGxpY2F0aW9uSW5zdGFuY2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKiogVGhlIHVuZGVybHlpbmcgQ2xvdWRGb3JtYXRpb24gcmVwbGljYXRpb24gaW5zdGFuY2UgcmVzb3VyY2UuICovXG4gIHJlYWRvbmx5IGNmblJlcGxpY2F0aW9uSW5zdGFuY2U6IGRtcy5DZm5SZXBsaWNhdGlvbkluc3RhbmNlO1xuXG4gIC8qKiBUaGUgcmVwbGljYXRpb24gc3VibmV0IGdyb3VwIGNyZWF0ZWQgZm9yIHRoaXMgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IHN1Ym5ldEdyb3VwOiBkbXMuQ2ZuUmVwbGljYXRpb25TdWJuZXRHcm91cDtcblxuICAvKiogVGhlIEtNUyBrZXkgdXNlZCBmb3Igc3RvcmFnZSBlbmNyeXB0aW9uLiAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5OiBrbXMuSUtleTtcblxuICAvKiogVGhlIHNlY3VyaXR5IGdyb3VwIGF0dGFjaGVkIHRvIHRoaXMgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXA6IGVjMi5JU2VjdXJpdHlHcm91cDtcblxuICAvKiogVGhlIHJlcGxpY2F0aW9uIGluc3RhbmNlIEFSTi4gKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25JbnN0YW5jZUFybjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbXNSZXBsaWNhdGlvbkluc3RhbmNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBLTVMga2V5XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLmVuY3J5cHRpb25LZXkgPVxuICAgICAgcHJvcHMua21zS2V5ID8/XG4gICAgICBuZXcga21zLktleSh0aGlzLCAnRW5jcnlwdGlvbktleScsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IGBETVMgcmVwbGljYXRpb24gaW5zdGFuY2UgZW5jcnlwdGlvbiBrZXkgZm9yICR7aWR9YCxcbiAgICAgICAgZW5hYmxlS2V5Um90YXRpb246IHRydWUsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZWN1cml0eSBncm91cFxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgcHJvdmlkZWQgPSBwcm9wcy5zZWN1cml0eUdyb3VwcyA/PyBbXTtcbiAgICBpZiAocHJvdmlkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBzZyA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgRE1TIHJlcGxpY2F0aW9uIGluc3RhbmNlIHNlY3VyaXR5IGdyb3VwIGZvciAke2lkfWAsXG4gICAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHNnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlY3VyaXR5R3JvdXAgPSBwcm92aWRlZFswXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwSWRzID0gcHJvdmlkZWQubGVuZ3RoID4gMFxuICAgICAgPyBwcm92aWRlZC5tYXAoKHNnKSA9PiBzZy5zZWN1cml0eUdyb3VwSWQpXG4gICAgICA6IFt0aGlzLnNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU3VibmV0IGdyb3VwXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBzdWJuZXRTZWxlY3Rpb24gPSBwcm9wcy52cGNTdWJuZXRzID8/IHtcbiAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1MsXG4gICAgfTtcbiAgICBjb25zdCBzdWJuZXRzID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMoc3VibmV0U2VsZWN0aW9uKTtcblxuICAgIHRoaXMuc3VibmV0R3JvdXAgPSBuZXcgZG1zLkNmblJlcGxpY2F0aW9uU3VibmV0R3JvdXAodGhpcywgJ1N1Ym5ldEdyb3VwJywge1xuICAgICAgcmVwbGljYXRpb25TdWJuZXRHcm91cERlc2NyaXB0aW9uOiBgRE1TIHN1Ym5ldCBncm91cCBmb3IgJHtpZH1gLFxuICAgICAgc3VibmV0SWRzOiBzdWJuZXRzLnN1Ym5ldElkcyxcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUmVwbGljYXRpb24gaW5zdGFuY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGluc3RhbmNlSWRlbnRpZmllciA9XG4gICAgICBwcm9wcy5yZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllciA/PyBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHsgbWF4TGVuZ3RoOiA2MyB9KS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlID0gbmV3IGRtcy5DZm5SZXBsaWNhdGlvbkluc3RhbmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzczogcHJvcHMucmVwbGljYXRpb25JbnN0YW5jZUNsYXNzID8/IFJlcGxpY2F0aW9uSW5zdGFuY2VDbGFzcy5SNklfTEFSR0UsXG4gICAgICByZXBsaWNhdGlvbkluc3RhbmNlSWRlbnRpZmllcjogaW5zdGFuY2VJZGVudGlmaWVyLFxuICAgICAgYWxsb2NhdGVkU3RvcmFnZTogcHJvcHMuYWxsb2NhdGVkU3RvcmFnZSA/PyAxMDAsXG4gICAgICBlbmdpbmVWZXJzaW9uOiBwcm9wcy5lbmdpbmVWZXJzaW9uLFxuICAgICAga21zS2V5SWQ6IHRoaXMuZW5jcnlwdGlvbktleS5rZXlBcm4sXG4gICAgICBtdWx0aUF6OiBwcm9wcy5tdWx0aUF6ID8/IGZhbHNlLFxuICAgICAgcHVibGljbHlBY2Nlc3NpYmxlOiBwcm9wcy5wdWJsaWNseUFjY2Vzc2libGUgPz8gZmFsc2UsXG4gICAgICBhdXRvTWlub3JWZXJzaW9uVXBncmFkZTogcHJvcHMuYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUgPz8gdHJ1ZSxcbiAgICAgIHJlcGxpY2F0aW9uU3VibmV0R3JvdXBJZGVudGlmaWVyOiB0aGlzLnN1Ym5ldEdyb3VwLnJlZixcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IHNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdzogcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3csXG4gICAgfSk7XG4gICAgdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlLmFwcGx5UmVtb3ZhbFBvbGljeShcbiAgICAgIHByb3BzLnJlbW92YWxQb2xpY3kgPz8gY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICApO1xuXG4gICAgdGhpcy5yZXBsaWNhdGlvbkluc3RhbmNlQXJuID0gdGhpcy5jZm5SZXBsaWNhdGlvbkluc3RhbmNlLnJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyBpbmJvdW5kIGFjY2VzcyB0byB0aGUgcmVwbGljYXRpb24gaW5zdGFuY2Ugb24gYSBnaXZlbiBwb3J0IGZyb20gYSBwZWVyLlxuICAgKiBVc2VmdWwgd2hlbiB0aGUgc291cmNlIG9yIHRhcmdldCBkYXRhYmFzZSBzZWN1cml0eSBncm91cCBuZWVkcyB0byB0cnVzdCB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICBhbGxvd0luYm91bmRGcm9tKHBlZXI6IGVjMi5JUGVlciwgcG9ydDogZWMyLlBvcnQsIGRlc2NyaXB0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VjdXJpdHlHcm91cCBpbnN0YW5jZW9mIGVjMi5TZWN1cml0eUdyb3VwKSB7XG4gICAgICB0aGlzLnNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUocGVlciwgcG9ydCwgZGVzY3JpcHRpb24gPz8gJ0FsbG93IERNUyByZXBsaWNhdGlvbiBpbnN0YW5jZScpO1xuICAgIH1cbiAgfVxufVxuIl19
|