cdk-dms-replication 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +13491 -0
- package/API.md +8606 -0
- package/LICENSE +202 -0
- package/README.md +883 -0
- package/cdk.context.json +1 -0
- package/integ/sample-app.ts +229 -0
- package/lib/dms-roles.d.ts +14 -0
- package/lib/dms-roles.js +42 -0
- package/lib/endpoint-settings.d.ts +419 -0
- package/lib/endpoint-settings.js +3 -0
- package/lib/endpoint.d.ts +143 -0
- package/lib/endpoint.js +402 -0
- package/lib/enums.d.ts +231 -0
- package/lib/enums.js +266 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +49 -0
- package/lib/migration-pipeline.d.ts +253 -0
- package/lib/migration-pipeline.js +218 -0
- package/lib/replication-instance.d.ts +99 -0
- package/lib/replication-instance.js +93 -0
- package/lib/replication-task.d.ts +72 -0
- package/lib/replication-task.js +46 -0
- package/lib/serverless-pipeline.d.ts +196 -0
- package/lib/serverless-pipeline.js +271 -0
- package/lib/table-mappings.d.ts +178 -0
- package/lib/table-mappings.js +283 -0
- package/lib/task-settings.d.ts +228 -0
- package/lib/task-settings.js +291 -0
- package/package.json +170 -0
- package/scripts/sync-instance-classes.js +213 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import { DatePartitionDelimiter, DatePartitionSequence, EncodingType, EncryptionMode, KafkaSecurityProtocol, MessageFormat, MongoAuthMechanism, MongoAuthType, MongoNestingLevel, MySqlTargetDbType, ParquetVersion, PostgresCdcPlugin, S3DataFormat, SqlServerSafeguardPolicy } from './enums';
|
|
3
|
+
/** Settings for MySQL and MariaDB endpoints. */
|
|
4
|
+
export interface MySqlSettings {
|
|
5
|
+
/** SQL to run after connecting to the endpoint. */
|
|
6
|
+
readonly afterConnectScript?: string;
|
|
7
|
+
/** Remove metadata from source that differs from target during full load. */
|
|
8
|
+
readonly cleanSourceMetadataOnMismatch?: boolean;
|
|
9
|
+
/** Interval in seconds between polls for source events during CDC. */
|
|
10
|
+
readonly eventsPollInterval?: number;
|
|
11
|
+
/** Maximum file size (in KB) for CSV files created during full load. */
|
|
12
|
+
readonly maxFileSize?: number;
|
|
13
|
+
/** Number of parallel threads to use for a full load. */
|
|
14
|
+
readonly parallelLoadThreads?: number;
|
|
15
|
+
/** ARN of the IAM role that provides access to the Secrets Manager secret. */
|
|
16
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
17
|
+
/** Full ARN or name of the secret in AWS Secrets Manager containing the endpoint connection details. */
|
|
18
|
+
readonly secretsManagerSecretId?: string;
|
|
19
|
+
/** Specifies the time zone for source MySQL. */
|
|
20
|
+
readonly serverTimezone?: string;
|
|
21
|
+
/** For a MySQL target, specifies how tables are created. */
|
|
22
|
+
readonly targetDbType?: MySqlTargetDbType;
|
|
23
|
+
}
|
|
24
|
+
/** Settings for PostgreSQL and Aurora PostgreSQL endpoints. */
|
|
25
|
+
export interface PostgreSqlSettings {
|
|
26
|
+
/** SQL to run after connecting. */
|
|
27
|
+
readonly afterConnectScript?: string;
|
|
28
|
+
/** Whether DMS captures DDL events and creates a replication slot. */
|
|
29
|
+
readonly captureDdls?: boolean;
|
|
30
|
+
/** Schema in which the operational DDL database artifacts are created. */
|
|
31
|
+
readonly ddlArtifactsSchema?: string;
|
|
32
|
+
/** Sets the client statement timeout for the PostgreSQL instance. */
|
|
33
|
+
readonly executeTimeout?: number;
|
|
34
|
+
/** Whether DMS fails tasks that attempt to truncate a LOB. */
|
|
35
|
+
readonly failTasksOnLobTruncation?: boolean;
|
|
36
|
+
/** Whether DMS enables heartbeat signals. */
|
|
37
|
+
readonly heartbeatEnable?: boolean;
|
|
38
|
+
/** The number of seconds between heartbeat signal calls. */
|
|
39
|
+
readonly heartbeatFrequency?: number;
|
|
40
|
+
/** Schema to store the heartbeat table. */
|
|
41
|
+
readonly heartbeatSchema?: string;
|
|
42
|
+
/** When true, maps boolean as boolean instead of varchar(5). */
|
|
43
|
+
readonly mapBooleanAsBoolean?: boolean;
|
|
44
|
+
/** Maximum file size (in KB) for CSV files created during full load. */
|
|
45
|
+
readonly maxFileSize?: number;
|
|
46
|
+
/** CDC plugin to use. */
|
|
47
|
+
readonly pluginName?: PostgresCdcPlugin;
|
|
48
|
+
/** ARN of the IAM role that provides access to Secrets Manager. */
|
|
49
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
50
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
51
|
+
readonly secretsManagerSecretId?: string;
|
|
52
|
+
/** Name of the logical replication slot created for CDC. */
|
|
53
|
+
readonly slotName?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Settings for Oracle endpoints. */
|
|
56
|
+
export interface OracleSettings {
|
|
57
|
+
/** Set to true to access the supplemental log directly. */
|
|
58
|
+
readonly accessAlternateDirectly?: boolean;
|
|
59
|
+
/** Whether DMS adds supplemental logging. */
|
|
60
|
+
readonly addSupplementalLogging?: boolean;
|
|
61
|
+
/** Additional archived redo log destination ID. */
|
|
62
|
+
readonly additionalArchivedLogDestId?: number;
|
|
63
|
+
/** Allows DMS to access SELECT on nested tables. */
|
|
64
|
+
readonly allowSelectNestedTables?: boolean;
|
|
65
|
+
/** Destination ID of the archived redo log. */
|
|
66
|
+
readonly archivedLogDestId?: number;
|
|
67
|
+
/** Reads changes only from archived redo logs (no online redo). */
|
|
68
|
+
readonly archivedLogsOnly?: boolean;
|
|
69
|
+
/** ASM password. */
|
|
70
|
+
readonly asmPassword?: cdk.SecretValue;
|
|
71
|
+
/** ASM server address. */
|
|
72
|
+
readonly asmServer?: string;
|
|
73
|
+
/** ASM user name. */
|
|
74
|
+
readonly asmUser?: string;
|
|
75
|
+
/** Semantics for char length: BYTE or CHAR. */
|
|
76
|
+
readonly charLengthSemantics?: string;
|
|
77
|
+
/** Whether DMS uses direct path full load. */
|
|
78
|
+
readonly directPathNoLog?: boolean;
|
|
79
|
+
/** Whether to load in parallel using direct path. */
|
|
80
|
+
readonly directPathParallelLoad?: boolean;
|
|
81
|
+
/** Specifies whether Oracle homogeneous tablespace migration is enabled. */
|
|
82
|
+
readonly enableHomogenousTablespace?: boolean;
|
|
83
|
+
/** Extra archived log destination IDs (up to 10). */
|
|
84
|
+
readonly extraArchivedLogDestIds?: number[];
|
|
85
|
+
/** Whether tasks fail if a LOB column is truncated. */
|
|
86
|
+
readonly failTasksOnLobTruncation?: boolean;
|
|
87
|
+
/** Precision to use when converting Oracle NUMBER to Amazon Redshift NUMERIC. */
|
|
88
|
+
readonly numberDatatypeScale?: number;
|
|
89
|
+
/** Path prefix used for the location of the online redo log. */
|
|
90
|
+
readonly oraclePathPrefix?: string;
|
|
91
|
+
/** Number of threads for parallel ASM reading. */
|
|
92
|
+
readonly parallelAsmReadThreads?: number;
|
|
93
|
+
/** Number of read-ahead blocks. */
|
|
94
|
+
readonly readAheadBlocks?: number;
|
|
95
|
+
/** Read the tablespace name from the online redo log. */
|
|
96
|
+
readonly readTableSpaceName?: boolean;
|
|
97
|
+
/** Retry interval in seconds when no archivelog is found. */
|
|
98
|
+
readonly retryInterval?: number;
|
|
99
|
+
/** ARN of IAM role for accessing Secrets Manager (main secret). */
|
|
100
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
101
|
+
/** ARN of IAM role for accessing the ASM Secrets Manager secret. */
|
|
102
|
+
readonly secretsManagerOracleAsmAccessRoleArn?: string;
|
|
103
|
+
/** Full ARN of the ASM secret in Secrets Manager. */
|
|
104
|
+
readonly secretsManagerOracleAsmSecretId?: string;
|
|
105
|
+
/** Full ARN of the main Secrets Manager secret. */
|
|
106
|
+
readonly secretsManagerSecretId?: string;
|
|
107
|
+
/** Name of the transparent data encryption (TDE) wallet. */
|
|
108
|
+
readonly securityDbEncryptionName?: string;
|
|
109
|
+
/** Use an alternate folder for online redo logs. */
|
|
110
|
+
readonly useAlternateFolderForOnline?: boolean;
|
|
111
|
+
/** Use B-file for large object replication. */
|
|
112
|
+
readonly useBFile?: boolean;
|
|
113
|
+
/** Use direct path full load. */
|
|
114
|
+
readonly useDirectPathFullLoad?: boolean;
|
|
115
|
+
/** Use LogMiner for CDC. */
|
|
116
|
+
readonly useLogminerReader?: boolean;
|
|
117
|
+
/** Use a path prefix for the location of the online redo log. */
|
|
118
|
+
readonly usePathPrefix?: string;
|
|
119
|
+
}
|
|
120
|
+
/** Settings for Microsoft SQL Server endpoints. */
|
|
121
|
+
export interface SqlServerSettings {
|
|
122
|
+
/** Maximum number of bytes per BCP packet. */
|
|
123
|
+
readonly bcpPacketSize?: number;
|
|
124
|
+
/** Filegroup in SQL Server for control tables. */
|
|
125
|
+
readonly controlTablesFileGroup?: string;
|
|
126
|
+
/** Whether to query a single AlwaysOn node. */
|
|
127
|
+
readonly querySingleAlwaysOnNode?: boolean;
|
|
128
|
+
/** Whether to use backup files for CDC. */
|
|
129
|
+
readonly readBackupOnly?: boolean;
|
|
130
|
+
/** Safeguard policy for SQL Server CDC. */
|
|
131
|
+
readonly safeguardPolicy?: SqlServerSafeguardPolicy;
|
|
132
|
+
/** ARN of IAM role for Secrets Manager. */
|
|
133
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
134
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
135
|
+
readonly secretsManagerSecretId?: string;
|
|
136
|
+
/** Use BCP full load. */
|
|
137
|
+
readonly useBcpFullLoad?: boolean;
|
|
138
|
+
/** Use third-party backup device. */
|
|
139
|
+
readonly useThirdPartyBackupDevice?: boolean;
|
|
140
|
+
/** Trim spaces from CHAR/VARCHAR columns. */
|
|
141
|
+
readonly trimSpaceInChar?: boolean;
|
|
142
|
+
/** Controls how DMS accesses the SQL Server transaction log. */
|
|
143
|
+
readonly tlogAccessMode?: string;
|
|
144
|
+
}
|
|
145
|
+
/** Settings for SAP Adaptive Server Enterprise (Sybase) endpoints. */
|
|
146
|
+
export interface SapAseSettings {
|
|
147
|
+
/** ARN of IAM role for Secrets Manager. */
|
|
148
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
149
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
150
|
+
readonly secretsManagerSecretId?: string;
|
|
151
|
+
}
|
|
152
|
+
/** Settings for IBM Db2 LUW endpoints. */
|
|
153
|
+
export interface Db2Settings {
|
|
154
|
+
/** Maximum number of bytes per read operation. */
|
|
155
|
+
readonly maxKBytesPerRead?: number;
|
|
156
|
+
/** Enables ongoing replication (CDC) for Db2. */
|
|
157
|
+
readonly setDataCaptureChanges?: boolean;
|
|
158
|
+
/** Current LSN as of which DMS should start reading. */
|
|
159
|
+
readonly currentLsn?: string;
|
|
160
|
+
/** ARN of IAM role for Secrets Manager. */
|
|
161
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
162
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
163
|
+
readonly secretsManagerSecretId?: string;
|
|
164
|
+
}
|
|
165
|
+
/** Settings shared by MongoDB and DocumentDB endpoints. */
|
|
166
|
+
export interface MongoDbSettings {
|
|
167
|
+
/** Authentication mechanism for the MongoDB endpoint. */
|
|
168
|
+
readonly authMechanism?: MongoAuthMechanism;
|
|
169
|
+
/** Database that MongoDB uses to authenticate. */
|
|
170
|
+
readonly authSource?: string;
|
|
171
|
+
/** Authentication type. */
|
|
172
|
+
readonly authType?: MongoAuthType;
|
|
173
|
+
/** Number of documents to preview to determine data structure. */
|
|
174
|
+
readonly docsToInvestigate?: number;
|
|
175
|
+
/** Specifies the document ID, which DMS includes as the primary key. */
|
|
176
|
+
readonly extractDocId?: boolean;
|
|
177
|
+
/** Nesting level for MongoDB documents. */
|
|
178
|
+
readonly nestingLevel?: MongoNestingLevel;
|
|
179
|
+
/** ARN of IAM role for Secrets Manager. */
|
|
180
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
181
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
182
|
+
readonly secretsManagerSecretId?: string;
|
|
183
|
+
}
|
|
184
|
+
/** Settings for Amazon S3 endpoints (source or target). */
|
|
185
|
+
export interface S3Settings {
|
|
186
|
+
/** S3 bucket name. */
|
|
187
|
+
readonly bucketName: string;
|
|
188
|
+
/** Folder path prefix within the bucket. */
|
|
189
|
+
readonly bucketFolder?: string;
|
|
190
|
+
/** IAM role ARN that DMS uses to access the S3 bucket. */
|
|
191
|
+
readonly serviceAccessRoleArn: string;
|
|
192
|
+
/** Whether DMS adds a column name field to CSV output. */
|
|
193
|
+
readonly addColumnName?: boolean;
|
|
194
|
+
/** Include CDC inserts and updates in the target. */
|
|
195
|
+
readonly cdcInsertsAndUpdates?: boolean;
|
|
196
|
+
/** Include only inserts (not updates or deletes) in the target. */
|
|
197
|
+
readonly cdcInsertsOnly?: boolean;
|
|
198
|
+
/** Maximum interval in seconds between CDC mini-batches (1-360). */
|
|
199
|
+
readonly cdcMaxBatchInterval?: number;
|
|
200
|
+
/** Minimum file size (in KB) to trigger a CDC file write. */
|
|
201
|
+
readonly cdcMinFileSize?: number;
|
|
202
|
+
/** CDC path in the source S3 bucket. */
|
|
203
|
+
readonly cdcPath?: string;
|
|
204
|
+
/** Column delimiter character for CSV output. Default: comma. */
|
|
205
|
+
readonly csvDelimiter?: string;
|
|
206
|
+
/** String used for null values when no-sup-value applies. */
|
|
207
|
+
readonly csvNoSupValue?: string;
|
|
208
|
+
/** String used for null values in CSV output. */
|
|
209
|
+
readonly csvNullValue?: string;
|
|
210
|
+
/** Row delimiter for CSV output. Default: newline. */
|
|
211
|
+
readonly csvRowDelimiter?: string;
|
|
212
|
+
/** Output data format: CSV or Parquet. */
|
|
213
|
+
readonly dataFormat?: S3DataFormat;
|
|
214
|
+
/** Date partition delimiter. */
|
|
215
|
+
readonly datePartitionDelimiter?: DatePartitionDelimiter;
|
|
216
|
+
/** Whether to partition output files by date. */
|
|
217
|
+
readonly datePartitionEnabled?: boolean;
|
|
218
|
+
/** Date partition sequence. */
|
|
219
|
+
readonly datePartitionSequence?: DatePartitionSequence;
|
|
220
|
+
/** Dictionary page size (in bytes) for Parquet. */
|
|
221
|
+
readonly dictPageSizeLimit?: number;
|
|
222
|
+
/** Whether to enable statistics for Parquet row groups. */
|
|
223
|
+
readonly enableStatistics?: boolean;
|
|
224
|
+
/** Encoding type for Parquet. */
|
|
225
|
+
readonly encodingType?: EncodingType;
|
|
226
|
+
/** Encryption mode for data at rest in S3. */
|
|
227
|
+
readonly encryptionMode?: EncryptionMode;
|
|
228
|
+
/** JSON structure defining external tables (for S3 source). */
|
|
229
|
+
readonly externalTableDefinition?: string;
|
|
230
|
+
/** Number of header rows to ignore in the S3 source. */
|
|
231
|
+
readonly ignoreHeaderRows?: number;
|
|
232
|
+
/** Whether to include the operation column for full-load rows. */
|
|
233
|
+
readonly includeOpForFullLoad?: boolean;
|
|
234
|
+
/** Maximum file size (in KB) for data files. */
|
|
235
|
+
readonly maxFileSize?: number;
|
|
236
|
+
/** Whether timestamps in Parquet use milliseconds instead of microseconds. */
|
|
237
|
+
readonly parquetTimestampInMillisecond?: boolean;
|
|
238
|
+
/** Parquet format version. */
|
|
239
|
+
readonly parquetVersion?: ParquetVersion;
|
|
240
|
+
/** Whether DMS preserves transaction boundaries (for CDC). */
|
|
241
|
+
readonly preserveTransactions?: boolean;
|
|
242
|
+
/** Whether to use RFC 4180 compliant CSV format. */
|
|
243
|
+
readonly rfc4180?: boolean;
|
|
244
|
+
/** Number of rows per Parquet row group. */
|
|
245
|
+
readonly rowGroupLength?: number;
|
|
246
|
+
/** KMS key ARN for SSE-KMS encryption. */
|
|
247
|
+
readonly serverSideEncryptionKmsKeyId?: string;
|
|
248
|
+
/** Column name for operation timestamps. */
|
|
249
|
+
readonly timestampColumnName?: string;
|
|
250
|
+
/** Whether to use CSV no-sup-value. */
|
|
251
|
+
readonly useCsvNoSupValue?: boolean;
|
|
252
|
+
/** Whether to use the task start time instead of transaction start time for full load. */
|
|
253
|
+
readonly useTaskStartTimeForFullLoadTimestamp?: boolean;
|
|
254
|
+
}
|
|
255
|
+
/** Settings for Amazon DynamoDB target endpoints. */
|
|
256
|
+
export interface DynamoDbSettings {
|
|
257
|
+
/** ARN of the IAM role that provides DMS access to DynamoDB. */
|
|
258
|
+
readonly serviceAccessRoleArn: string;
|
|
259
|
+
}
|
|
260
|
+
/** Settings for Amazon Redshift target endpoints. */
|
|
261
|
+
export interface RedshiftSettings {
|
|
262
|
+
/** Whether to accept dates in a specific format. */
|
|
263
|
+
readonly acceptAnyDate?: boolean;
|
|
264
|
+
/** SQL to run after connecting. */
|
|
265
|
+
readonly afterConnectScript?: string;
|
|
266
|
+
/** S3 intermediate bucket folder path. */
|
|
267
|
+
readonly bucketFolder?: string;
|
|
268
|
+
/** S3 bucket name used for the intermediate storage. */
|
|
269
|
+
readonly bucketName?: string;
|
|
270
|
+
/** Whether to enable case-sensitive column names. */
|
|
271
|
+
readonly caseSensitiveNames?: boolean;
|
|
272
|
+
/** Whether to enable automatic compression. */
|
|
273
|
+
readonly compUpdate?: boolean;
|
|
274
|
+
/** Timeout in seconds for database connections. */
|
|
275
|
+
readonly connectionTimeout?: number;
|
|
276
|
+
/** Date format for the DATEFORMAT option. */
|
|
277
|
+
readonly dateFormat?: string;
|
|
278
|
+
/** Whether to load empty strings as NULL. */
|
|
279
|
+
readonly emptyAsNull?: boolean;
|
|
280
|
+
/** Encryption mode for data at rest. */
|
|
281
|
+
readonly encryptionMode?: EncryptionMode;
|
|
282
|
+
/** Whether to allow explicit ID values in the COPY command. */
|
|
283
|
+
readonly explicitIds?: boolean;
|
|
284
|
+
/** Number of upload streams for parallel loading. */
|
|
285
|
+
readonly fileTransferUploadStreams?: number;
|
|
286
|
+
/** Timeout (in seconds) for loading data. */
|
|
287
|
+
readonly loadTimeout?: number;
|
|
288
|
+
/** Maximum file size (in KB) for each intermediate file. */
|
|
289
|
+
readonly maxFileSize?: number;
|
|
290
|
+
/** Whether to remove quoted data. */
|
|
291
|
+
readonly removeQuotes?: boolean;
|
|
292
|
+
/** Character to use to replace invalid UTF-8 characters. */
|
|
293
|
+
readonly replaceInvalidChars?: string;
|
|
294
|
+
/** Character to replace a specific character with. */
|
|
295
|
+
readonly replaceChars?: string;
|
|
296
|
+
/** ARN of IAM role for accessing Secrets Manager. */
|
|
297
|
+
readonly secretsManagerAccessRoleArn?: string;
|
|
298
|
+
/** Full ARN or name of the Secrets Manager secret. */
|
|
299
|
+
readonly secretsManagerSecretId?: string;
|
|
300
|
+
/** KMS key ARN for SSE-KMS. */
|
|
301
|
+
readonly serverSideEncryptionKmsKeyId?: string;
|
|
302
|
+
/** ARN of the IAM role that provides DMS access to the S3 staging bucket. */
|
|
303
|
+
readonly serviceAccessRoleArn?: string;
|
|
304
|
+
/** Date format for the TIMEFORMAT option. */
|
|
305
|
+
readonly timeFormat?: string;
|
|
306
|
+
/** Whether to remove trailing blanks from VARCHAR columns. */
|
|
307
|
+
readonly trimBlanks?: boolean;
|
|
308
|
+
/** Whether to truncate VARCHAR columns to the maximum length. */
|
|
309
|
+
readonly truncateColumns?: boolean;
|
|
310
|
+
/** Size of the write buffer (in KB). */
|
|
311
|
+
readonly writeBufferSize?: number;
|
|
312
|
+
}
|
|
313
|
+
/** Settings for Amazon Kinesis Data Streams target endpoints. */
|
|
314
|
+
export interface KinesisSettings {
|
|
315
|
+
/** ARN of the Kinesis stream. */
|
|
316
|
+
readonly streamArn: string;
|
|
317
|
+
/** ARN of the IAM role that provides DMS access to Kinesis. */
|
|
318
|
+
readonly serviceAccessRoleArn: string;
|
|
319
|
+
/** Whether to include control details in messages. */
|
|
320
|
+
readonly includeControlDetails?: boolean;
|
|
321
|
+
/** Whether to include null and empty columns in messages. */
|
|
322
|
+
readonly includeNullAndEmpty?: boolean;
|
|
323
|
+
/** Whether to include the partition value in messages. */
|
|
324
|
+
readonly includePartitionValue?: boolean;
|
|
325
|
+
/** Whether to include table ALTER operations in messages. */
|
|
326
|
+
readonly includeTableAlterOperations?: boolean;
|
|
327
|
+
/** Whether to include transaction details in messages. */
|
|
328
|
+
readonly includeTransactionDetails?: boolean;
|
|
329
|
+
/** Message format. */
|
|
330
|
+
readonly messageFormat?: MessageFormat;
|
|
331
|
+
/** Whether to omit the hex prefix from binary values. */
|
|
332
|
+
readonly noHexPrefix?: boolean;
|
|
333
|
+
/** Whether to include the schema name in the partition key. */
|
|
334
|
+
readonly partitionIncludeSchemaTable?: boolean;
|
|
335
|
+
}
|
|
336
|
+
/** Settings for Apache Kafka (and Amazon MSK) target endpoints. */
|
|
337
|
+
export interface KafkaSettings {
|
|
338
|
+
/** Kafka broker(s), e.g. "b-1.msk-cluster.abc123.kafka.us-east-1.amazonaws.com:9092". */
|
|
339
|
+
readonly broker: string;
|
|
340
|
+
/** Topic name to publish to. */
|
|
341
|
+
readonly topic?: string;
|
|
342
|
+
/** Whether to include control details in messages. */
|
|
343
|
+
readonly includeControlDetails?: boolean;
|
|
344
|
+
/** Whether to include null and empty columns in messages. */
|
|
345
|
+
readonly includeNullAndEmpty?: boolean;
|
|
346
|
+
/** Whether to include the partition value in messages. */
|
|
347
|
+
readonly includePartitionValue?: boolean;
|
|
348
|
+
/** Whether to include table ALTER operations. */
|
|
349
|
+
readonly includeTableAlterOperations?: boolean;
|
|
350
|
+
/** Whether to include transaction details. */
|
|
351
|
+
readonly includeTransactionDetails?: boolean;
|
|
352
|
+
/** Message format. */
|
|
353
|
+
readonly messageFormat?: MessageFormat;
|
|
354
|
+
/** Maximum message size in bytes. */
|
|
355
|
+
readonly messageMaxBytes?: number;
|
|
356
|
+
/** Whether to omit the hex prefix from binary values. */
|
|
357
|
+
readonly noHexPrefix?: boolean;
|
|
358
|
+
/** Whether to include the schema name in the partition key. */
|
|
359
|
+
readonly partitionIncludeSchemaTable?: boolean;
|
|
360
|
+
/** Security protocol for the Kafka connection. */
|
|
361
|
+
readonly securityProtocol?: KafkaSecurityProtocol;
|
|
362
|
+
/** SASL username. */
|
|
363
|
+
readonly saslUsername?: string;
|
|
364
|
+
/** SASL password. */
|
|
365
|
+
readonly saslPassword?: cdk.SecretValue;
|
|
366
|
+
/** ARN of the Secrets Manager secret holding the CA certificate. */
|
|
367
|
+
readonly sslCaCertificateArn?: string;
|
|
368
|
+
/** ARN of the Secrets Manager secret holding the client certificate. */
|
|
369
|
+
readonly sslClientCertificateArn?: string;
|
|
370
|
+
/** ARN of the Secrets Manager secret holding the client key. */
|
|
371
|
+
readonly sslClientKeyArn?: string;
|
|
372
|
+
/** Password for the client key. */
|
|
373
|
+
readonly sslClientKeyPassword?: cdk.SecretValue;
|
|
374
|
+
}
|
|
375
|
+
/** Settings for Amazon OpenSearch Service target endpoints. */
|
|
376
|
+
export interface OpenSearchSettings {
|
|
377
|
+
/** Endpoint URL of the OpenSearch cluster (e.g. https://my-domain.us-east-1.es.amazonaws.com). */
|
|
378
|
+
readonly endpointUri: string;
|
|
379
|
+
/** ARN of the IAM role that provides DMS access to OpenSearch. */
|
|
380
|
+
readonly serviceAccessRoleArn: string;
|
|
381
|
+
/** Number of seconds to retry on errors before failing. */
|
|
382
|
+
readonly errorRetryDuration?: number;
|
|
383
|
+
/** Maximum percentage of records that may fail before the task is stopped. */
|
|
384
|
+
readonly fullLoadErrorPercentage?: number;
|
|
385
|
+
}
|
|
386
|
+
/** Settings for Amazon Neptune target endpoints. */
|
|
387
|
+
export interface NeptuneSettings {
|
|
388
|
+
/** S3 bucket where DMS stages the migration data. */
|
|
389
|
+
readonly s3BucketName: string;
|
|
390
|
+
/** Folder within the S3 bucket for Neptune staging data. */
|
|
391
|
+
readonly s3BucketFolder: string;
|
|
392
|
+
/** ARN of the IAM role that provides DMS access to S3 and Neptune. */
|
|
393
|
+
readonly serviceAccessRoleArn: string;
|
|
394
|
+
/** Number of seconds to retry on errors before failing the task. */
|
|
395
|
+
readonly errorRetryDuration?: number;
|
|
396
|
+
/** Whether IAM auth is enabled on the Neptune cluster. */
|
|
397
|
+
readonly iamAuthEnabled?: boolean;
|
|
398
|
+
/** Maximum number of files per request to the Neptune bulk-load API. */
|
|
399
|
+
readonly maxFileSize?: number;
|
|
400
|
+
/** Maximum number of retries on endpoint exceptions. */
|
|
401
|
+
readonly maxRetryCount?: number;
|
|
402
|
+
}
|
|
403
|
+
/** Settings for Amazon ElastiCache for Redis target endpoints. */
|
|
404
|
+
export interface RedisSettings {
|
|
405
|
+
/** Redis server name or cluster endpoint. */
|
|
406
|
+
readonly serverName: string;
|
|
407
|
+
/** Redis port. Default: 6379. */
|
|
408
|
+
readonly port?: number;
|
|
409
|
+
/** SSL security protocol. */
|
|
410
|
+
readonly sslSecurityProtocol?: string;
|
|
411
|
+
/** Authentication type: none, auth-token, or auth-role. */
|
|
412
|
+
readonly authType?: string;
|
|
413
|
+
/** IAM role ARN for auth-role authentication. */
|
|
414
|
+
readonly authUserName?: string;
|
|
415
|
+
/** Auth token for auth-token authentication. */
|
|
416
|
+
readonly authPassword?: cdk.SecretValue;
|
|
417
|
+
/** ARN of the SSL CA certificate stored in Secrets Manager. */
|
|
418
|
+
readonly sslCaCertificateArn?: string;
|
|
419
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnQtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW5kcG9pbnQtc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBEYXRlUGFydGl0aW9uRGVsaW1pdGVyLFxuICBEYXRlUGFydGl0aW9uU2VxdWVuY2UsXG4gIEVuY29kaW5nVHlwZSxcbiAgRW5jcnlwdGlvbk1vZGUsXG4gIEthZmthU2VjdXJpdHlQcm90b2NvbCxcbiAgTWVzc2FnZUZvcm1hdCxcbiAgTW9uZ29BdXRoTWVjaGFuaXNtLFxuICBNb25nb0F1dGhUeXBlLFxuICBNb25nb05lc3RpbmdMZXZlbCxcbiAgTXlTcWxUYXJnZXREYlR5cGUsXG4gIFBhcnF1ZXRWZXJzaW9uLFxuICBQb3N0Z3Jlc0NkY1BsdWdpbixcbiAgUzNEYXRhRm9ybWF0LFxuICBTcWxTZXJ2ZXJTYWZlZ3VhcmRQb2xpY3ksXG59IGZyb20gJy4vZW51bXMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE15U1FMIC8gTWFyaWFEQlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgTXlTUUwgYW5kIE1hcmlhREIgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNeVNxbFNldHRpbmdzIHtcbiAgLyoqIFNRTCB0byBydW4gYWZ0ZXIgY29ubmVjdGluZyB0byB0aGUgZW5kcG9pbnQuICovXG4gIHJlYWRvbmx5IGFmdGVyQ29ubmVjdFNjcmlwdD86IHN0cmluZztcbiAgLyoqIFJlbW92ZSBtZXRhZGF0YSBmcm9tIHNvdXJjZSB0aGF0IGRpZmZlcnMgZnJvbSB0YXJnZXQgZHVyaW5nIGZ1bGwgbG9hZC4gKi9cbiAgcmVhZG9ubHkgY2xlYW5Tb3VyY2VNZXRhZGF0YU9uTWlzbWF0Y2g/OiBib29sZWFuO1xuICAvKiogSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHBvbGxzIGZvciBzb3VyY2UgZXZlbnRzIGR1cmluZyBDREMuICovXG4gIHJlYWRvbmx5IGV2ZW50c1BvbGxJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqIE1heGltdW0gZmlsZSBzaXplIChpbiBLQikgZm9yIENTViBmaWxlcyBjcmVhdGVkIGR1cmluZyBmdWxsIGxvYWQuICovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKiogTnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgdG8gdXNlIGZvciBhIGZ1bGwgbG9hZC4gKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxMb2FkVGhyZWFkcz86IG51bWJlcjtcbiAgLyoqIEFSTiBvZiB0aGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqIEZ1bGwgQVJOIG9yIG5hbWUgb2YgdGhlIHNlY3JldCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIGNvbnRhaW5pbmcgdGhlIGVuZHBvaW50IGNvbm5lY3Rpb24gZGV0YWlscy4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgLyoqIFNwZWNpZmllcyB0aGUgdGltZSB6b25lIGZvciBzb3VyY2UgTXlTUUwuICovXG4gIHJlYWRvbmx5IHNlcnZlclRpbWV6b25lPzogc3RyaW5nO1xuICAvKiogRm9yIGEgTXlTUUwgdGFyZ2V0LCBzcGVjaWZpZXMgaG93IHRhYmxlcyBhcmUgY3JlYXRlZC4gKi9cbiAgcmVhZG9ubHkgdGFyZ2V0RGJUeXBlPzogTXlTcWxUYXJnZXREYlR5cGU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUG9zdGdyZVNRTCAvIEF1cm9yYSBQb3N0Z3JlU1FMXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFNldHRpbmdzIGZvciBQb3N0Z3JlU1FMIGFuZCBBdXJvcmEgUG9zdGdyZVNRTCBlbmRwb2ludHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RncmVTcWxTZXR0aW5ncyB7XG4gIC8qKiBTUUwgdG8gcnVuIGFmdGVyIGNvbm5lY3RpbmcuICovXG4gIHJlYWRvbmx5IGFmdGVyQ29ubmVjdFNjcmlwdD86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgRE1TIGNhcHR1cmVzIERETCBldmVudHMgYW5kIGNyZWF0ZXMgYSByZXBsaWNhdGlvbiBzbG90LiAqL1xuICByZWFkb25seSBjYXB0dXJlRGRscz86IGJvb2xlYW47XG4gIC8qKiBTY2hlbWEgaW4gd2hpY2ggdGhlIG9wZXJhdGlvbmFsIERETCBkYXRhYmFzZSBhcnRpZmFjdHMgYXJlIGNyZWF0ZWQuICovXG4gIHJlYWRvbmx5IGRkbEFydGlmYWN0c1NjaGVtYT86IHN0cmluZztcbiAgLyoqIFNldHMgdGhlIGNsaWVudCBzdGF0ZW1lbnQgdGltZW91dCBmb3IgdGhlIFBvc3RncmVTUUwgaW5zdGFuY2UuICovXG4gIHJlYWRvbmx5IGV4ZWN1dGVUaW1lb3V0PzogbnVtYmVyO1xuICAvKiogV2hldGhlciBETVMgZmFpbHMgdGFza3MgdGhhdCBhdHRlbXB0IHRvIHRydW5jYXRlIGEgTE9CLiAqL1xuICByZWFkb25seSBmYWlsVGFza3NPbkxvYlRydW5jYXRpb24/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBETVMgZW5hYmxlcyBoZWFydGJlYXQgc2lnbmFscy4gKi9cbiAgcmVhZG9ubHkgaGVhcnRiZWF0RW5hYmxlPzogYm9vbGVhbjtcbiAgLyoqIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIGhlYXJ0YmVhdCBzaWduYWwgY2FsbHMuICovXG4gIHJlYWRvbmx5IGhlYXJ0YmVhdEZyZXF1ZW5jeT86IG51bWJlcjtcbiAgLyoqIFNjaGVtYSB0byBzdG9yZSB0aGUgaGVhcnRiZWF0IHRhYmxlLiAqL1xuICByZWFkb25seSBoZWFydGJlYXRTY2hlbWE/OiBzdHJpbmc7XG4gIC8qKiBXaGVuIHRydWUsIG1hcHMgYm9vbGVhbiBhcyBib29sZWFuIGluc3RlYWQgb2YgdmFyY2hhcig1KS4gKi9cbiAgcmVhZG9ubHkgbWFwQm9vbGVhbkFzQm9vbGVhbj86IGJvb2xlYW47XG4gIC8qKiBNYXhpbXVtIGZpbGUgc2l6ZSAoaW4gS0IpIGZvciBDU1YgZmlsZXMgY3JlYXRlZCBkdXJpbmcgZnVsbCBsb2FkLiAqL1xuICByZWFkb25seSBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqIENEQyBwbHVnaW4gdG8gdXNlLiAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lPzogUG9zdGdyZXNDZGNQbHVnaW47XG4gIC8qKiBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIFNlY3JldHMgTWFuYWdlci4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKiogRnVsbCBBUk4gb3IgbmFtZSBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgLyoqIE5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBjcmVhdGVkIGZvciBDREMuICovXG4gIHJlYWRvbmx5IHNsb3ROYW1lPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE9yYWNsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgT3JhY2xlIGVuZHBvaW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JhY2xlU2V0dGluZ3Mge1xuICAvKiogU2V0IHRvIHRydWUgdG8gYWNjZXNzIHRoZSBzdXBwbGVtZW50YWwgbG9nIGRpcmVjdGx5LiAqL1xuICByZWFkb25seSBhY2Nlc3NBbHRlcm5hdGVEaXJlY3RseT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIERNUyBhZGRzIHN1cHBsZW1lbnRhbCBsb2dnaW5nLiAqL1xuICByZWFkb25seSBhZGRTdXBwbGVtZW50YWxMb2dnaW5nPzogYm9vbGVhbjtcbiAgLyoqIEFkZGl0aW9uYWwgYXJjaGl2ZWQgcmVkbyBsb2cgZGVzdGluYXRpb24gSUQuICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxBcmNoaXZlZExvZ0Rlc3RJZD86IG51bWJlcjtcbiAgLyoqIEFsbG93cyBETVMgdG8gYWNjZXNzIFNFTEVDVCBvbiBuZXN0ZWQgdGFibGVzLiAqL1xuICByZWFkb25seSBhbGxvd1NlbGVjdE5lc3RlZFRhYmxlcz86IGJvb2xlYW47XG4gIC8qKiBEZXN0aW5hdGlvbiBJRCBvZiB0aGUgYXJjaGl2ZWQgcmVkbyBsb2cuICovXG4gIHJlYWRvbmx5IGFyY2hpdmVkTG9nRGVzdElkPzogbnVtYmVyO1xuICAvKiogUmVhZHMgY2hhbmdlcyBvbmx5IGZyb20gYXJjaGl2ZWQgcmVkbyBsb2dzIChubyBvbmxpbmUgcmVkbykuICovXG4gIHJlYWRvbmx5IGFyY2hpdmVkTG9nc09ubHk/OiBib29sZWFuO1xuICAvKiogQVNNIHBhc3N3b3JkLiAqL1xuICByZWFkb25seSBhc21QYXNzd29yZD86IGNkay5TZWNyZXRWYWx1ZTtcbiAgLyoqIEFTTSBzZXJ2ZXIgYWRkcmVzcy4gKi9cbiAgcmVhZG9ubHkgYXNtU2VydmVyPzogc3RyaW5nO1xuICAvKiogQVNNIHVzZXIgbmFtZS4gKi9cbiAgcmVhZG9ubHkgYXNtVXNlcj86IHN0cmluZztcbiAgLyoqIFNlbWFudGljcyBmb3IgY2hhciBsZW5ndGg6IEJZVEUgb3IgQ0hBUi4gKi9cbiAgcmVhZG9ubHkgY2hhckxlbmd0aFNlbWFudGljcz86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgRE1TIHVzZXMgZGlyZWN0IHBhdGggZnVsbCBsb2FkLiAqL1xuICByZWFkb25seSBkaXJlY3RQYXRoTm9Mb2c/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBsb2FkIGluIHBhcmFsbGVsIHVzaW5nIGRpcmVjdCBwYXRoLiAqL1xuICByZWFkb25seSBkaXJlY3RQYXRoUGFyYWxsZWxMb2FkPzogYm9vbGVhbjtcbiAgLyoqIFNwZWNpZmllcyB3aGV0aGVyIE9yYWNsZSBob21vZ2VuZW91cyB0YWJsZXNwYWNlIG1pZ3JhdGlvbiBpcyBlbmFibGVkLiAqL1xuICByZWFkb25seSBlbmFibGVIb21vZ2Vub3VzVGFibGVzcGFjZT86IGJvb2xlYW47XG4gIC8qKiBFeHRyYSBhcmNoaXZlZCBsb2cgZGVzdGluYXRpb24gSURzICh1cCB0byAxMCkuICovXG4gIHJlYWRvbmx5IGV4dHJhQXJjaGl2ZWRMb2dEZXN0SWRzPzogbnVtYmVyW107XG4gIC8qKiBXaGV0aGVyIHRhc2tzIGZhaWwgaWYgYSBMT0IgY29sdW1uIGlzIHRydW5jYXRlZC4gKi9cbiAgcmVhZG9ubHkgZmFpbFRhc2tzT25Mb2JUcnVuY2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFByZWNpc2lvbiB0byB1c2Ugd2hlbiBjb252ZXJ0aW5nIE9yYWNsZSBOVU1CRVIgdG8gQW1hem9uIFJlZHNoaWZ0IE5VTUVSSUMuICovXG4gIHJlYWRvbmx5IG51bWJlckRhdGF0eXBlU2NhbGU/OiBudW1iZXI7XG4gIC8qKiBQYXRoIHByZWZpeCB1c2VkIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZSByZWRvIGxvZy4gKi9cbiAgcmVhZG9ubHkgb3JhY2xlUGF0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiB0aHJlYWRzIGZvciBwYXJhbGxlbCBBU00gcmVhZGluZy4gKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxBc21SZWFkVGhyZWFkcz86IG51bWJlcjtcbiAgLyoqIE51bWJlciBvZiByZWFkLWFoZWFkIGJsb2Nrcy4gKi9cbiAgcmVhZG9ubHkgcmVhZEFoZWFkQmxvY2tzPzogbnVtYmVyO1xuICAvKiogUmVhZCB0aGUgdGFibGVzcGFjZSBuYW1lIGZyb20gdGhlIG9ubGluZSByZWRvIGxvZy4gKi9cbiAgcmVhZG9ubHkgcmVhZFRhYmxlU3BhY2VOYW1lPzogYm9vbGVhbjtcbiAgLyoqIFJldHJ5IGludGVydmFsIGluIHNlY29uZHMgd2hlbiBubyBhcmNoaXZlbG9nIGlzIGZvdW5kLiAqL1xuICByZWFkb25seSByZXRyeUludGVydmFsPzogbnVtYmVyO1xuICAvKiogQVJOIG9mIElBTSByb2xlIGZvciBhY2Nlc3NpbmcgU2VjcmV0cyBNYW5hZ2VyIChtYWluIHNlY3JldCkuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqIEFSTiBvZiBJQU0gcm9sZSBmb3IgYWNjZXNzaW5nIHRoZSBBU00gU2VjcmV0cyBNYW5hZ2VyIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJPcmFjbGVBc21BY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKiogRnVsbCBBUk4gb2YgdGhlIEFTTSBzZWNyZXQgaW4gU2VjcmV0cyBNYW5hZ2VyLiAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlck9yYWNsZUFzbVNlY3JldElkPzogc3RyaW5nO1xuICAvKiogRnVsbCBBUk4gb2YgdGhlIG1haW4gU2VjcmV0cyBNYW5hZ2VyIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgLyoqIE5hbWUgb2YgdGhlIHRyYW5zcGFyZW50IGRhdGEgZW5jcnlwdGlvbiAoVERFKSB3YWxsZXQuICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5RGJFbmNyeXB0aW9uTmFtZT86IHN0cmluZztcbiAgLyoqIFVzZSBhbiBhbHRlcm5hdGUgZm9sZGVyIGZvciBvbmxpbmUgcmVkbyBsb2dzLiAqL1xuICByZWFkb25seSB1c2VBbHRlcm5hdGVGb2xkZXJGb3JPbmxpbmU/OiBib29sZWFuO1xuICAvKiogVXNlIEItZmlsZSBmb3IgbGFyZ2Ugb2JqZWN0IHJlcGxpY2F0aW9uLiAqL1xuICByZWFkb25seSB1c2VCRmlsZT86IGJvb2xlYW47XG4gIC8qKiBVc2UgZGlyZWN0IHBhdGggZnVsbCBsb2FkLiAqL1xuICByZWFkb25seSB1c2VEaXJlY3RQYXRoRnVsbExvYWQ/OiBib29sZWFuO1xuICAvKiogVXNlIExvZ01pbmVyIGZvciBDREMuICovXG4gIHJlYWRvbmx5IHVzZUxvZ21pbmVyUmVhZGVyPzogYm9vbGVhbjtcbiAgLyoqIFVzZSBhIHBhdGggcHJlZml4IGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZSByZWRvIGxvZy4gKi9cbiAgcmVhZG9ubHkgdXNlUGF0aFByZWZpeD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTUUwgU2VydmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFNldHRpbmdzIGZvciBNaWNyb3NvZnQgU1FMIFNlcnZlciBlbmRwb2ludHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFNxbFNlcnZlclNldHRpbmdzIHtcbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBCQ1AgcGFja2V0LiAqL1xuICByZWFkb25seSBiY3BQYWNrZXRTaXplPzogbnVtYmVyO1xuICAvKiogRmlsZWdyb3VwIGluIFNRTCBTZXJ2ZXIgZm9yIGNvbnRyb2wgdGFibGVzLiAqL1xuICByZWFkb25seSBjb250cm9sVGFibGVzRmlsZUdyb3VwPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBxdWVyeSBhIHNpbmdsZSBBbHdheXNPbiBub2RlLiAqL1xuICByZWFkb25seSBxdWVyeVNpbmdsZUFsd2F5c09uTm9kZT86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBiYWNrdXAgZmlsZXMgZm9yIENEQy4gKi9cbiAgcmVhZG9ubHkgcmVhZEJhY2t1cE9ubHk/OiBib29sZWFuO1xuICAvKiogU2FmZWd1YXJkIHBvbGljeSBmb3IgU1FMIFNlcnZlciBDREMuICovXG4gIHJlYWRvbmx5IHNhZmVndWFyZFBvbGljeT86IFNxbFNlcnZlclNhZmVndWFyZFBvbGljeTtcbiAgLyoqIEFSTiBvZiBJQU0gcm9sZSBmb3IgU2VjcmV0cyBNYW5hZ2VyLiAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlckFjY2Vzc1JvbGVBcm4/OiBzdHJpbmc7XG4gIC8qKiBGdWxsIEFSTiBvciBuYW1lIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0LiAqL1xuICByZWFkb25seSBzZWNyZXRzTWFuYWdlclNlY3JldElkPzogc3RyaW5nO1xuICAvKiogVXNlIEJDUCBmdWxsIGxvYWQuICovXG4gIHJlYWRvbmx5IHVzZUJjcEZ1bGxMb2FkPzogYm9vbGVhbjtcbiAgLyoqIFVzZSB0aGlyZC1wYXJ0eSBiYWNrdXAgZGV2aWNlLiAqL1xuICByZWFkb25seSB1c2VUaGlyZFBhcnR5QmFja3VwRGV2aWNlPzogYm9vbGVhbjtcbiAgLyoqIFRyaW0gc3BhY2VzIGZyb20gQ0hBUi9WQVJDSEFSIGNvbHVtbnMuICovXG4gIHJlYWRvbmx5IHRyaW1TcGFjZUluQ2hhcj86IGJvb2xlYW47XG4gIC8qKiBDb250cm9scyBob3cgRE1TIGFjY2Vzc2VzIHRoZSBTUUwgU2VydmVyIHRyYW5zYWN0aW9uIGxvZy4gKi9cbiAgcmVhZG9ubHkgdGxvZ0FjY2Vzc01vZGU/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU0FQIEFTRSAoU3liYXNlKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgU0FQIEFkYXB0aXZlIFNlcnZlciBFbnRlcnByaXNlIChTeWJhc2UpIGVuZHBvaW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FwQXNlU2V0dGluZ3Mge1xuICAvKiogQVJOIG9mIElBTSByb2xlIGZvciBTZWNyZXRzIE1hbmFnZXIuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqIEZ1bGwgQVJOIG9yIG5hbWUgb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0SWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSUJNIERiMiBMVVdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogU2V0dGluZ3MgZm9yIElCTSBEYjIgTFVXIGVuZHBvaW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGIyU2V0dGluZ3Mge1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgcGVyIHJlYWQgb3BlcmF0aW9uLiAqL1xuICByZWFkb25seSBtYXhLQnl0ZXNQZXJSZWFkPzogbnVtYmVyO1xuICAvKiogRW5hYmxlcyBvbmdvaW5nIHJlcGxpY2F0aW9uIChDREMpIGZvciBEYjIuICovXG4gIHJlYWRvbmx5IHNldERhdGFDYXB0dXJlQ2hhbmdlcz86IGJvb2xlYW47XG4gIC8qKiBDdXJyZW50IExTTiBhcyBvZiB3aGljaCBETVMgc2hvdWxkIHN0YXJ0IHJlYWRpbmcuICovXG4gIHJlYWRvbmx5IGN1cnJlbnRMc24/OiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgSUFNIHJvbGUgZm9yIFNlY3JldHMgTWFuYWdlci4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKiogRnVsbCBBUk4gb3IgbmFtZSBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNb25nb0RCIC8gRG9jdW1lbnREQlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBzaGFyZWQgYnkgTW9uZ29EQiBhbmQgRG9jdW1lbnREQiBlbmRwb2ludHMuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbmdvRGJTZXR0aW5ncyB7XG4gIC8qKiBBdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gZm9yIHRoZSBNb25nb0RCIGVuZHBvaW50LiAqL1xuICByZWFkb25seSBhdXRoTWVjaGFuaXNtPzogTW9uZ29BdXRoTWVjaGFuaXNtO1xuICAvKiogRGF0YWJhc2UgdGhhdCBNb25nb0RCIHVzZXMgdG8gYXV0aGVudGljYXRlLiAqL1xuICByZWFkb25seSBhdXRoU291cmNlPzogc3RyaW5nO1xuICAvKiogQXV0aGVudGljYXRpb24gdHlwZS4gKi9cbiAgcmVhZG9ubHkgYXV0aFR5cGU/OiBNb25nb0F1dGhUeXBlO1xuICAvKiogTnVtYmVyIG9mIGRvY3VtZW50cyB0byBwcmV2aWV3IHRvIGRldGVybWluZSBkYXRhIHN0cnVjdHVyZS4gKi9cbiAgcmVhZG9ubHkgZG9jc1RvSW52ZXN0aWdhdGU/OiBudW1iZXI7XG4gIC8qKiBTcGVjaWZpZXMgdGhlIGRvY3VtZW50IElELCB3aGljaCBETVMgaW5jbHVkZXMgYXMgdGhlIHByaW1hcnkga2V5LiAqL1xuICByZWFkb25seSBleHRyYWN0RG9jSWQ/OiBib29sZWFuO1xuICAvKiogTmVzdGluZyBsZXZlbCBmb3IgTW9uZ29EQiBkb2N1bWVudHMuICovXG4gIHJlYWRvbmx5IG5lc3RpbmdMZXZlbD86IE1vbmdvTmVzdGluZ0xldmVsO1xuICAvKiogQVJOIG9mIElBTSByb2xlIGZvciBTZWNyZXRzIE1hbmFnZXIuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqIEZ1bGwgQVJOIG9yIG5hbWUgb2YgdGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQuICovXG4gIHJlYWRvbmx5IHNlY3JldHNNYW5hZ2VyU2VjcmV0SWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW1hem9uIFMzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFNldHRpbmdzIGZvciBBbWF6b24gUzMgZW5kcG9pbnRzIChzb3VyY2Ugb3IgdGFyZ2V0KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNTZXR0aW5ncyB7XG4gIC8qKiBTMyBidWNrZXQgbmFtZS4gKi9cbiAgcmVhZG9ubHkgYnVja2V0TmFtZTogc3RyaW5nO1xuICAvKiogRm9sZGVyIHBhdGggcHJlZml4IHdpdGhpbiB0aGUgYnVja2V0LiAqL1xuICByZWFkb25seSBidWNrZXRGb2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBJQU0gcm9sZSBBUk4gdGhhdCBETVMgdXNlcyB0byBhY2Nlc3MgdGhlIFMzIGJ1Y2tldC4gKi9cbiAgcmVhZG9ubHkgc2VydmljZUFjY2Vzc1JvbGVBcm46IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgRE1TIGFkZHMgYSBjb2x1bW4gbmFtZSBmaWVsZCB0byBDU1Ygb3V0cHV0LiAqL1xuICByZWFkb25seSBhZGRDb2x1bW5OYW1lPzogYm9vbGVhbjtcbiAgLyoqIEluY2x1ZGUgQ0RDIGluc2VydHMgYW5kIHVwZGF0ZXMgaW4gdGhlIHRhcmdldC4gKi9cbiAgcmVhZG9ubHkgY2RjSW5zZXJ0c0FuZFVwZGF0ZXM/OiBib29sZWFuO1xuICAvKiogSW5jbHVkZSBvbmx5IGluc2VydHMgKG5vdCB1cGRhdGVzIG9yIGRlbGV0ZXMpIGluIHRoZSB0YXJnZXQuICovXG4gIHJlYWRvbmx5IGNkY0luc2VydHNPbmx5PzogYm9vbGVhbjtcbiAgLyoqIE1heGltdW0gaW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIENEQyBtaW5pLWJhdGNoZXMgKDEtMzYwKS4gKi9cbiAgcmVhZG9ubHkgY2RjTWF4QmF0Y2hJbnRlcnZhbD86IG51bWJlcjtcbiAgLyoqIE1pbmltdW0gZmlsZSBzaXplIChpbiBLQikgdG8gdHJpZ2dlciBhIENEQyBmaWxlIHdyaXRlLiAqL1xuICByZWFkb25seSBjZGNNaW5GaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqIENEQyBwYXRoIGluIHRoZSBzb3VyY2UgUzMgYnVja2V0LiAqL1xuICByZWFkb25seSBjZGNQYXRoPzogc3RyaW5nO1xuICAvKiogQ29sdW1uIGRlbGltaXRlciBjaGFyYWN0ZXIgZm9yIENTViBvdXRwdXQuIERlZmF1bHQ6IGNvbW1hLiAqL1xuICByZWFkb25seSBjc3ZEZWxpbWl0ZXI/OiBzdHJpbmc7XG4gIC8qKiBTdHJpbmcgdXNlZCBmb3IgbnVsbCB2YWx1ZXMgd2hlbiBuby1zdXAtdmFsdWUgYXBwbGllcy4gKi9cbiAgcmVhZG9ubHkgY3N2Tm9TdXBWYWx1ZT86IHN0cmluZztcbiAgLyoqIFN0cmluZyB1c2VkIGZvciBudWxsIHZhbHVlcyBpbiBDU1Ygb3V0cHV0LiAqL1xuICByZWFkb25seSBjc3ZOdWxsVmFsdWU/OiBzdHJpbmc7XG4gIC8qKiBSb3cgZGVsaW1pdGVyIGZvciBDU1Ygb3V0cHV0LiBEZWZhdWx0OiBuZXdsaW5lLiAqL1xuICByZWFkb25seSBjc3ZSb3dEZWxpbWl0ZXI/OiBzdHJpbmc7XG4gIC8qKiBPdXRwdXQgZGF0YSBmb3JtYXQ6IENTViBvciBQYXJxdWV0LiAqL1xuICByZWFkb25seSBkYXRhRm9ybWF0PzogUzNEYXRhRm9ybWF0O1xuICAvKiogRGF0ZSBwYXJ0aXRpb24gZGVsaW1pdGVyLiAqL1xuICByZWFkb25seSBkYXRlUGFydGl0aW9uRGVsaW1pdGVyPzogRGF0ZVBhcnRpdGlvbkRlbGltaXRlcjtcbiAgLyoqIFdoZXRoZXIgdG8gcGFydGl0aW9uIG91dHB1dCBmaWxlcyBieSBkYXRlLiAqL1xuICByZWFkb25seSBkYXRlUGFydGl0aW9uRW5hYmxlZD86IGJvb2xlYW47XG4gIC8qKiBEYXRlIHBhcnRpdGlvbiBzZXF1ZW5jZS4gKi9cbiAgcmVhZG9ubHkgZGF0ZVBhcnRpdGlvblNlcXVlbmNlPzogRGF0ZVBhcnRpdGlvblNlcXVlbmNlO1xuICAvKiogRGljdGlvbmFyeSBwYWdlIHNpemUgKGluIGJ5dGVzKSBmb3IgUGFycXVldC4gKi9cbiAgcmVhZG9ubHkgZGljdFBhZ2VTaXplTGltaXQ/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRvIGVuYWJsZSBzdGF0aXN0aWNzIGZvciBQYXJxdWV0IHJvdyBncm91cHMuICovXG4gIHJlYWRvbmx5IGVuYWJsZVN0YXRpc3RpY3M/OiBib29sZWFuO1xuICAvKiogRW5jb2RpbmcgdHlwZSBmb3IgUGFycXVldC4gKi9cbiAgcmVhZG9ubHkgZW5jb2RpbmdUeXBlPzogRW5jb2RpbmdUeXBlO1xuICAvKiogRW5jcnlwdGlvbiBtb2RlIGZvciBkYXRhIGF0IHJlc3QgaW4gUzMuICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25Nb2RlPzogRW5jcnlwdGlvbk1vZGU7XG4gIC8qKiBKU09OIHN0cnVjdHVyZSBkZWZpbmluZyBleHRlcm5hbCB0YWJsZXMgKGZvciBTMyBzb3VyY2UpLiAqL1xuICByZWFkb25seSBleHRlcm5hbFRhYmxlRGVmaW5pdGlvbj86IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiBoZWFkZXIgcm93cyB0byBpZ25vcmUgaW4gdGhlIFMzIHNvdXJjZS4gKi9cbiAgcmVhZG9ubHkgaWdub3JlSGVhZGVyUm93cz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgb3BlcmF0aW9uIGNvbHVtbiBmb3IgZnVsbC1sb2FkIHJvd3MuICovXG4gIHJlYWRvbmx5IGluY2x1ZGVPcEZvckZ1bGxMb2FkPzogYm9vbGVhbjtcbiAgLyoqIE1heGltdW0gZmlsZSBzaXplIChpbiBLQikgZm9yIGRhdGEgZmlsZXMuICovXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0aW1lc3RhbXBzIGluIFBhcnF1ZXQgdXNlIG1pbGxpc2Vjb25kcyBpbnN0ZWFkIG9mIG1pY3Jvc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgcGFycXVldFRpbWVzdGFtcEluTWlsbGlzZWNvbmQ/OiBib29sZWFuO1xuICAvKiogUGFycXVldCBmb3JtYXQgdmVyc2lvbi4gKi9cbiAgcmVhZG9ubHkgcGFycXVldFZlcnNpb24/OiBQYXJxdWV0VmVyc2lvbjtcbiAgLyoqIFdoZXRoZXIgRE1TIHByZXNlcnZlcyB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIChmb3IgQ0RDKS4gKi9cbiAgcmVhZG9ubHkgcHJlc2VydmVUcmFuc2FjdGlvbnM/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byB1c2UgUkZDIDQxODAgY29tcGxpYW50IENTViBmb3JtYXQuICovXG4gIHJlYWRvbmx5IHJmYzQxODA/OiBib29sZWFuO1xuICAvKiogTnVtYmVyIG9mIHJvd3MgcGVyIFBhcnF1ZXQgcm93IGdyb3VwLiAqL1xuICByZWFkb25seSByb3dHcm91cExlbmd0aD86IG51bWJlcjtcbiAgLyoqIEtNUyBrZXkgQVJOIGZvciBTU0UtS01TIGVuY3J5cHRpb24uICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVFbmNyeXB0aW9uS21zS2V5SWQ/OiBzdHJpbmc7XG4gIC8qKiBDb2x1bW4gbmFtZSBmb3Igb3BlcmF0aW9uIHRpbWVzdGFtcHMuICovXG4gIHJlYWRvbmx5IHRpbWVzdGFtcENvbHVtbk5hbWU/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBDU1Ygbm8tc3VwLXZhbHVlLiAqL1xuICByZWFkb25seSB1c2VDc3ZOb1N1cFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gdXNlIHRoZSB0YXNrIHN0YXJ0IHRpbWUgaW5zdGVhZCBvZiB0cmFuc2FjdGlvbiBzdGFydCB0aW1lIGZvciBmdWxsIGxvYWQuICovXG4gIHJlYWRvbmx5IHVzZVRhc2tTdGFydFRpbWVGb3JGdWxsTG9hZFRpbWVzdGFtcD86IGJvb2xlYW47XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW1hem9uIER5bmFtb0RCXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFNldHRpbmdzIGZvciBBbWF6b24gRHluYW1vREIgdGFyZ2V0IGVuZHBvaW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vRGJTZXR0aW5ncyB7XG4gIC8qKiBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgRE1TIGFjY2VzcyB0byBEeW5hbW9EQi4gKi9cbiAgcmVhZG9ubHkgc2VydmljZUFjY2Vzc1JvbGVBcm46IHN0cmluZztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBbWF6b24gUmVkc2hpZnRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogU2V0dGluZ3MgZm9yIEFtYXpvbiBSZWRzaGlmdCB0YXJnZXQgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRzaGlmdFNldHRpbmdzIHtcbiAgLyoqIFdoZXRoZXIgdG8gYWNjZXB0IGRhdGVzIGluIGEgc3BlY2lmaWMgZm9ybWF0LiAqL1xuICByZWFkb25seSBhY2NlcHRBbnlEYXRlPzogYm9vbGVhbjtcbiAgLyoqIFNRTCB0byBydW4gYWZ0ZXIgY29ubmVjdGluZy4gKi9cbiAgcmVhZG9ubHkgYWZ0ZXJDb25uZWN0U2NyaXB0Pzogc3RyaW5nO1xuICAvKiogUzMgaW50ZXJtZWRpYXRlIGJ1Y2tldCBmb2xkZXIgcGF0aC4gKi9cbiAgcmVhZG9ubHkgYnVja2V0Rm9sZGVyPzogc3RyaW5nO1xuICAvKiogUzMgYnVja2V0IG5hbWUgdXNlZCBmb3IgdGhlIGludGVybWVkaWF0ZSBzdG9yYWdlLiAqL1xuICByZWFkb25seSBidWNrZXROYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBlbmFibGUgY2FzZS1zZW5zaXRpdmUgY29sdW1uIG5hbWVzLiAqL1xuICByZWFkb25seSBjYXNlU2Vuc2l0aXZlTmFtZXM/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBlbmFibGUgYXV0b21hdGljIGNvbXByZXNzaW9uLiAqL1xuICByZWFkb25seSBjb21wVXBkYXRlPzogYm9vbGVhbjtcbiAgLyoqIFRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgZGF0YWJhc2UgY29ubmVjdGlvbnMuICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25UaW1lb3V0PzogbnVtYmVyO1xuICAvKiogRGF0ZSBmb3JtYXQgZm9yIHRoZSBEQVRFRk9STUFUIG9wdGlvbi4gKi9cbiAgcmVhZG9ubHkgZGF0ZUZvcm1hdD86IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdG8gbG9hZCBlbXB0eSBzdHJpbmdzIGFzIE5VTEwuICovXG4gIHJlYWRvbmx5IGVtcHR5QXNOdWxsPzogYm9vbGVhbjtcbiAgLyoqIEVuY3J5cHRpb24gbW9kZSBmb3IgZGF0YSBhdCByZXN0LiAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uTW9kZT86IEVuY3J5cHRpb25Nb2RlO1xuICAvKiogV2hldGhlciB0byBhbGxvdyBleHBsaWNpdCBJRCB2YWx1ZXMgaW4gdGhlIENPUFkgY29tbWFuZC4gKi9cbiAgcmVhZG9ubHkgZXhwbGljaXRJZHM/OiBib29sZWFuO1xuICAvKiogTnVtYmVyIG9mIHVwbG9hZCBzdHJlYW1zIGZvciBwYXJhbGxlbCBsb2FkaW5nLiAqL1xuICByZWFkb25seSBmaWxlVHJhbnNmZXJVcGxvYWRTdHJlYW1zPzogbnVtYmVyO1xuICAvKiogVGltZW91dCAoaW4gc2Vjb25kcykgZm9yIGxvYWRpbmcgZGF0YS4gKi9cbiAgcmVhZG9ubHkgbG9hZFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIGZpbGUgc2l6ZSAoaW4gS0IpIGZvciBlYWNoIGludGVybWVkaWF0ZSBmaWxlLiAqL1xuICByZWFkb25seSBtYXhGaWxlU2l6ZT86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gcmVtb3ZlIHF1b3RlZCBkYXRhLiAqL1xuICByZWFkb25seSByZW1vdmVRdW90ZXM/OiBib29sZWFuO1xuICAvKiogQ2hhcmFjdGVyIHRvIHVzZSB0byByZXBsYWNlIGludmFsaWQgVVRGLTggY2hhcmFjdGVycy4gKi9cbiAgcmVhZG9ubHkgcmVwbGFjZUludmFsaWRDaGFycz86IHN0cmluZztcbiAgLyoqIENoYXJhY3RlciB0byByZXBsYWNlIGEgc3BlY2lmaWMgY2hhcmFjdGVyIHdpdGguICovXG4gIHJlYWRvbmx5IHJlcGxhY2VDaGFycz86IHN0cmluZztcbiAgLyoqIEFSTiBvZiBJQU0gcm9sZSBmb3IgYWNjZXNzaW5nIFNlY3JldHMgTWFuYWdlci4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJBY2Nlc3NSb2xlQXJuPzogc3RyaW5nO1xuICAvKiogRnVsbCBBUk4gb3IgbmFtZSBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldC4gKi9cbiAgcmVhZG9ubHkgc2VjcmV0c01hbmFnZXJTZWNyZXRJZD86IHN0cmluZztcbiAgLyoqIEtNUyBrZXkgQVJOIGZvciBTU0UtS01TLiAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlRW5jcnlwdGlvbkttc0tleUlkPzogc3RyaW5nO1xuICAvKiogQVJOIG9mIHRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIERNUyBhY2Nlc3MgdG8gdGhlIFMzIHN0YWdpbmcgYnVja2V0LiAqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybj86IHN0cmluZztcbiAgLyoqIERhdGUgZm9ybWF0IGZvciB0aGUgVElNRUZPUk1BVCBvcHRpb24uICovXG4gIHJlYWRvbmx5IHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSB0cmFpbGluZyBibGFua3MgZnJvbSBWQVJDSEFSIGNvbHVtbnMuICovXG4gIHJlYWRvbmx5IHRyaW1CbGFua3M/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byB0cnVuY2F0ZSBWQVJDSEFSIGNvbHVtbnMgdG8gdGhlIG1heGltdW0gbGVuZ3RoLiAqL1xuICByZWFkb25seSB0cnVuY2F0ZUNvbHVtbnM/OiBib29sZWFuO1xuICAvKiogU2l6ZSBvZiB0aGUgd3JpdGUgYnVmZmVyIChpbiBLQikuICovXG4gIHJlYWRvbmx5IHdyaXRlQnVmZmVyU2l6ZT86IG51bWJlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBbWF6b24gS2luZXNpcyBEYXRhIFN0cmVhbXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogU2V0dGluZ3MgZm9yIEFtYXpvbiBLaW5lc2lzIERhdGEgU3RyZWFtcyB0YXJnZXQgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBLaW5lc2lzU2V0dGluZ3Mge1xuICAvKiogQVJOIG9mIHRoZSBLaW5lc2lzIHN0cmVhbS4gKi9cbiAgcmVhZG9ubHkgc3RyZWFtQXJuOiBzdHJpbmc7XG4gIC8qKiBBUk4gb2YgdGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgRE1TIGFjY2VzcyB0byBLaW5lc2lzLiAqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybjogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNvbnRyb2wgZGV0YWlscyBpbiBtZXNzYWdlcy4gKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNvbnRyb2xEZXRhaWxzPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBudWxsIGFuZCBlbXB0eSBjb2x1bW5zIGluIG1lc3NhZ2VzLiAqL1xuICByZWFkb25seSBpbmNsdWRlTnVsbEFuZEVtcHR5PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgcGFydGl0aW9uIHZhbHVlIGluIG1lc3NhZ2VzLiAqL1xuICByZWFkb25seSBpbmNsdWRlUGFydGl0aW9uVmFsdWU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBpbmNsdWRlIHRhYmxlIEFMVEVSIG9wZXJhdGlvbnMgaW4gbWVzc2FnZXMuICovXG4gIHJlYWRvbmx5IGluY2x1ZGVUYWJsZUFsdGVyT3BlcmF0aW9ucz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIGluY2x1ZGUgdHJhbnNhY3Rpb24gZGV0YWlscyBpbiBtZXNzYWdlcy4gKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVRyYW5zYWN0aW9uRGV0YWlscz86IGJvb2xlYW47XG4gIC8qKiBNZXNzYWdlIGZvcm1hdC4gKi9cbiAgcmVhZG9ubHkgbWVzc2FnZUZvcm1hdD86IE1lc3NhZ2VGb3JtYXQ7XG4gIC8qKiBXaGV0aGVyIHRvIG9taXQgdGhlIGhleCBwcmVmaXggZnJvbSBiaW5hcnkgdmFsdWVzLiAqL1xuICByZWFkb25seSBub0hleFByZWZpeD86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIHNjaGVtYSBuYW1lIGluIHRoZSBwYXJ0aXRpb24ga2V5LiAqL1xuICByZWFkb25seSBwYXJ0aXRpb25JbmNsdWRlU2NoZW1hVGFibGU/OiBib29sZWFuO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEFwYWNoZSBLYWZrYVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgQXBhY2hlIEthZmthIChhbmQgQW1hem9uIE1TSykgdGFyZ2V0IGVuZHBvaW50cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2Fma2FTZXR0aW5ncyB7XG4gIC8qKiBLYWZrYSBicm9rZXIocyksIGUuZy4gXCJiLTEubXNrLWNsdXN0ZXIuYWJjMTIzLmthZmthLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tOjkwOTJcIi4gKi9cbiAgcmVhZG9ubHkgYnJva2VyOiBzdHJpbmc7XG4gIC8qKiBUb3BpYyBuYW1lIHRvIHB1Ymxpc2ggdG8uICovXG4gIHJlYWRvbmx5IHRvcGljPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBpbmNsdWRlIGNvbnRyb2wgZGV0YWlscyBpbiBtZXNzYWdlcy4gKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUNvbnRyb2xEZXRhaWxzPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBudWxsIGFuZCBlbXB0eSBjb2x1bW5zIGluIG1lc3NhZ2VzLiAqL1xuICByZWFkb25seSBpbmNsdWRlTnVsbEFuZEVtcHR5PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSB0aGUgcGFydGl0aW9uIHZhbHVlIGluIG1lc3NhZ2VzLiAqL1xuICByZWFkb25seSBpbmNsdWRlUGFydGl0aW9uVmFsdWU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBpbmNsdWRlIHRhYmxlIEFMVEVSIG9wZXJhdGlvbnMuICovXG4gIHJlYWRvbmx5IGluY2x1ZGVUYWJsZUFsdGVyT3BlcmF0aW9ucz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIGluY2x1ZGUgdHJhbnNhY3Rpb24gZGV0YWlscy4gKi9cbiAgcmVhZG9ubHkgaW5jbHVkZVRyYW5zYWN0aW9uRGV0YWlscz86IGJvb2xlYW47XG4gIC8qKiBNZXNzYWdlIGZvcm1hdC4gKi9cbiAgcmVhZG9ubHkgbWVzc2FnZUZvcm1hdD86IE1lc3NhZ2VGb3JtYXQ7XG4gIC8qKiBNYXhpbXVtIG1lc3NhZ2Ugc2l6ZSBpbiBieXRlcy4gKi9cbiAgcmVhZG9ubHkgbWVzc2FnZU1heEJ5dGVzPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0byBvbWl0IHRoZSBoZXggcHJlZml4IGZyb20gYmluYXJ5IHZhbHVlcy4gKi9cbiAgcmVhZG9ubHkgbm9IZXhQcmVmaXg/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0byBpbmNsdWRlIHRoZSBzY2hlbWEgbmFtZSBpbiB0aGUgcGFydGl0aW9uIGtleS4gKi9cbiAgcmVhZG9ubHkgcGFydGl0aW9uSW5jbHVkZVNjaGVtYVRhYmxlPzogYm9vbGVhbjtcbiAgLyoqIFNlY3VyaXR5IHByb3RvY29sIGZvciB0aGUgS2Fma2EgY29ubmVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlQcm90b2NvbD86IEthZmthU2VjdXJpdHlQcm90b2NvbDtcbiAgLyoqIFNBU0wgdXNlcm5hbWUuICovXG4gIHJlYWRvbmx5IHNhc2xVc2VybmFtZT86IHN0cmluZztcbiAgLyoqIFNBU0wgcGFzc3dvcmQuICovXG4gIHJlYWRvbmx5IHNhc2xQYXNzd29yZD86IGNkay5TZWNyZXRWYWx1ZTtcbiAgLyoqIEFSTiBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBob2xkaW5nIHRoZSBDQSBjZXJ0aWZpY2F0ZS4gKi9cbiAgcmVhZG9ubHkgc3NsQ2FDZXJ0aWZpY2F0ZUFybj86IHN0cmluZztcbiAgLyoqIEFSTiBvZiB0aGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBob2xkaW5nIHRoZSBjbGllbnQgY2VydGlmaWNhdGUuICovXG4gIHJlYWRvbmx5IHNzbENsaWVudENlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICAvKiogQVJOIG9mIHRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGhvbGRpbmcgdGhlIGNsaWVudCBrZXkuICovXG4gIHJlYWRvbmx5IHNzbENsaWVudEtleUFybj86IHN0cmluZztcbiAgLyoqIFBhc3N3b3JkIGZvciB0aGUgY2xpZW50IGtleS4gKi9cbiAgcmVhZG9ubHkgc3NsQ2xpZW50S2V5UGFzc3dvcmQ/OiBjZGsuU2VjcmV0VmFsdWU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW1hem9uIE9wZW5TZWFyY2ggU2VydmljZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgQW1hem9uIE9wZW5TZWFyY2ggU2VydmljZSB0YXJnZXQgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuU2VhcmNoU2V0dGluZ3Mge1xuICAvKiogRW5kcG9pbnQgVVJMIG9mIHRoZSBPcGVuU2VhcmNoIGNsdXN0ZXIgKGUuZy4gaHR0cHM6Ly9teS1kb21haW4udXMtZWFzdC0xLmVzLmFtYXpvbmF3cy5jb20pLiAqL1xuICByZWFkb25seSBlbmRwb2ludFVyaTogc3RyaW5nO1xuICAvKiogQVJOIG9mIHRoZSBJQU0gcm9sZSB0aGF0IHByb3ZpZGVzIERNUyBhY2Nlc3MgdG8gT3BlblNlYXJjaC4gKi9cbiAgcmVhZG9ubHkgc2VydmljZUFjY2Vzc1JvbGVBcm46IHN0cmluZztcbiAgLyoqIE51bWJlciBvZiBzZWNvbmRzIHRvIHJldHJ5IG9uIGVycm9ycyBiZWZvcmUgZmFpbGluZy4gKi9cbiAgcmVhZG9ubHkgZXJyb3JSZXRyeUR1cmF0aW9uPzogbnVtYmVyO1xuICAvKiogTWF4aW11bSBwZXJjZW50YWdlIG9mIHJlY29yZHMgdGhhdCBtYXkgZmFpbCBiZWZvcmUgdGhlIHRhc2sgaXMgc3RvcHBlZC4gKi9cbiAgcmVhZG9ubHkgZnVsbExvYWRFcnJvclBlcmNlbnRhZ2U/OiBudW1iZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW1hem9uIE5lcHR1bmVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogU2V0dGluZ3MgZm9yIEFtYXpvbiBOZXB0dW5lIHRhcmdldCBlbmRwb2ludHMuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lcHR1bmVTZXR0aW5ncyB7XG4gIC8qKiBTMyBidWNrZXQgd2hlcmUgRE1TIHN0YWdlcyB0aGUgbWlncmF0aW9uIGRhdGEuICovXG4gIHJlYWRvbmx5IHMzQnVja2V0TmFtZTogc3RyaW5nO1xuICAvKiogRm9sZGVyIHdpdGhpbiB0aGUgUzMgYnVja2V0IGZvciBOZXB0dW5lIHN0YWdpbmcgZGF0YS4gKi9cbiAgcmVhZG9ubHkgczNCdWNrZXRGb2xkZXI6IHN0cmluZztcbiAgLyoqIEFSTiBvZiB0aGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBETVMgYWNjZXNzIHRvIFMzIGFuZCBOZXB0dW5lLiAqL1xuICByZWFkb25seSBzZXJ2aWNlQWNjZXNzUm9sZUFybjogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIHNlY29uZHMgdG8gcmV0cnkgb24gZXJyb3JzIGJlZm9yZSBmYWlsaW5nIHRoZSB0YXNrLiAqL1xuICByZWFkb25seSBlcnJvclJldHJ5RHVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIElBTSBhdXRoIGlzIGVuYWJsZWQgb24gdGhlIE5lcHR1bmUgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgaWFtQXV0aEVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgZmlsZXMgcGVyIHJlcXVlc3QgdG8gdGhlIE5lcHR1bmUgYnVsay1sb2FkIEFQSS4gKi9cbiAgcmVhZG9ubHkgbWF4RmlsZVNpemU/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIG9uIGVuZHBvaW50IGV4Y2VwdGlvbnMuICovXG4gIHJlYWRvbmx5IG1heFJldHJ5Q291bnQ/OiBudW1iZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQW1hem9uIEVsYXN0aUNhY2hlIGZvciBSZWRpc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBTZXR0aW5ncyBmb3IgQW1hem9uIEVsYXN0aUNhY2hlIGZvciBSZWRpcyB0YXJnZXQgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpc1NldHRpbmdzIHtcbiAgLyoqIFJlZGlzIHNlcnZlciBuYW1lIG9yIGNsdXN0ZXIgZW5kcG9pbnQuICovXG4gIHJlYWRvbmx5IHNlcnZlck5hbWU6IHN0cmluZztcbiAgLyoqIFJlZGlzIHBvcnQuIERlZmF1bHQ6IDYzNzkuICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG4gIC8qKiBTU0wgc2VjdXJpdHkgcHJvdG9jb2wuICovXG4gIHJlYWRvbmx5IHNzbFNlY3VyaXR5UHJvdG9jb2w/OiBzdHJpbmc7XG4gIC8qKiBBdXRoZW50aWNhdGlvbiB0eXBlOiBub25lLCBhdXRoLXRva2VuLCBvciBhdXRoLXJvbGUuICovXG4gIHJlYWRvbmx5IGF1dGhUeXBlPzogc3RyaW5nO1xuICAvKiogSUFNIHJvbGUgQVJOIGZvciBhdXRoLXJvbGUgYXV0aGVudGljYXRpb24uICovXG4gIHJlYWRvbmx5IGF1dGhVc2VyTmFtZT86IHN0cmluZztcbiAgLyoqIEF1dGggdG9rZW4gZm9yIGF1dGgtdG9rZW4gYXV0aGVudGljYXRpb24uICovXG4gIHJlYWRvbmx5IGF1dGhQYXNzd29yZD86IGNkay5TZWNyZXRWYWx1ZTtcbiAgLyoqIEFSTiBvZiB0aGUgU1NMIENBIGNlcnRpZmljYXRlIHN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXIuICovXG4gIHJlYWRvbmx5IHNzbENhQ2VydGlmaWNhdGVBcm4/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import * as cdk from 'aws-cdk-lib';
|
|
2
|
+
import * as dms from 'aws-cdk-lib/aws-dms';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
import { Db2Settings, DynamoDbSettings, KafkaSettings, KinesisSettings, MongoDbSettings, MySqlSettings, NeptuneSettings, OpenSearchSettings, OracleSettings, PostgreSqlSettings, RedisSettings, RedshiftSettings, S3Settings, SapAseSettings, SqlServerSettings } from './endpoint-settings';
|
|
5
|
+
import { EndpointEngine, EndpointType } from './enums';
|
|
6
|
+
/**
|
|
7
|
+
* Minimal contract for a DMS endpoint that can be used as a source or target
|
|
8
|
+
* in a {@link DmsReplicationTask} or {@link DmsMigrationPipeline}.
|
|
9
|
+
*
|
|
10
|
+
* Use this interface when referencing an endpoint created outside of this
|
|
11
|
+
* construct (e.g. by ARN). For endpoints created by this library, use the
|
|
12
|
+
* concrete {@link DmsEndpoint} class directly — it exposes `cfnEndpoint`
|
|
13
|
+
* for L1 escape-hatch access.
|
|
14
|
+
*/
|
|
15
|
+
export interface IDmsEndpoint {
|
|
16
|
+
/** ARN of the DMS endpoint. */
|
|
17
|
+
readonly endpointArn: string;
|
|
18
|
+
}
|
|
19
|
+
/** Props for {@link DmsEndpoint}. */
|
|
20
|
+
export interface DmsEndpointProps {
|
|
21
|
+
/** Whether this is a source or target endpoint. */
|
|
22
|
+
readonly endpointType: EndpointType;
|
|
23
|
+
/** Database engine for this endpoint. */
|
|
24
|
+
readonly engine: EndpointEngine;
|
|
25
|
+
/**
|
|
26
|
+
* Logical identifier of the endpoint (used as the DMS endpoint identifier).
|
|
27
|
+
* Auto-generated from the construct ID if not provided.
|
|
28
|
+
*/
|
|
29
|
+
readonly endpointIdentifier?: string;
|
|
30
|
+
/** Database server hostname or IP address. */
|
|
31
|
+
readonly serverName?: string;
|
|
32
|
+
/** Database port. */
|
|
33
|
+
readonly port?: number;
|
|
34
|
+
/** Database user name. Used when not using Secrets Manager. */
|
|
35
|
+
readonly username?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Database password.
|
|
38
|
+
*
|
|
39
|
+
* @warning The resolved value is stored as **plaintext** in the CloudFormation
|
|
40
|
+
* template and state file. For production workloads, use Secrets Manager
|
|
41
|
+
* instead: set `secretsManagerSecretId` and `secretsManagerAccessRoleArn`
|
|
42
|
+
* in the engine-specific settings (e.g. `mySqlSettings`, `postgreSqlSettings`)
|
|
43
|
+
* and omit this property entirely.
|
|
44
|
+
*/
|
|
45
|
+
readonly password?: cdk.SecretValue;
|
|
46
|
+
/** Database name on the endpoint. */
|
|
47
|
+
readonly databaseName?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Extra connection attributes as a semicolon-separated string.
|
|
50
|
+
* Refer to the DMS documentation for engine-specific attributes.
|
|
51
|
+
*/
|
|
52
|
+
readonly extraConnectionAttributes?: string;
|
|
53
|
+
/**
|
|
54
|
+
* ARN of the SSL certificate authority certificate.
|
|
55
|
+
* Required when sslMode is 'verify-ca' or 'verify-full'.
|
|
56
|
+
*/
|
|
57
|
+
readonly certificateArn?: string;
|
|
58
|
+
/**
|
|
59
|
+
* SSL mode for the connection.
|
|
60
|
+
* @default "none"
|
|
61
|
+
*/
|
|
62
|
+
readonly sslMode?: string;
|
|
63
|
+
/** Settings for MySQL or MariaDB endpoints. */
|
|
64
|
+
readonly mySqlSettings?: MySqlSettings;
|
|
65
|
+
/** Settings for PostgreSQL or Aurora PostgreSQL endpoints. */
|
|
66
|
+
readonly postgreSqlSettings?: PostgreSqlSettings;
|
|
67
|
+
/** Settings for Oracle endpoints. */
|
|
68
|
+
readonly oracleSettings?: OracleSettings;
|
|
69
|
+
/** Settings for Microsoft SQL Server endpoints. */
|
|
70
|
+
readonly sqlServerSettings?: SqlServerSettings;
|
|
71
|
+
/** Settings for SAP ASE (Sybase) endpoints. */
|
|
72
|
+
readonly sapAseSettings?: SapAseSettings;
|
|
73
|
+
/** Settings for IBM Db2 LUW endpoints. */
|
|
74
|
+
readonly db2Settings?: Db2Settings;
|
|
75
|
+
/** Settings for MongoDB or Amazon DocumentDB endpoints. */
|
|
76
|
+
readonly mongoDbSettings?: MongoDbSettings;
|
|
77
|
+
/** Settings for Amazon S3 endpoints. */
|
|
78
|
+
readonly s3Settings?: S3Settings;
|
|
79
|
+
/** Settings for Amazon DynamoDB target endpoints. */
|
|
80
|
+
readonly dynamoDbSettings?: DynamoDbSettings;
|
|
81
|
+
/** Settings for Amazon Redshift target endpoints. */
|
|
82
|
+
readonly redshiftSettings?: RedshiftSettings;
|
|
83
|
+
/** Settings for Amazon Kinesis Data Streams target endpoints. */
|
|
84
|
+
readonly kinesisSettings?: KinesisSettings;
|
|
85
|
+
/** Settings for Apache Kafka (and Amazon MSK) target endpoints. */
|
|
86
|
+
readonly kafkaSettings?: KafkaSettings;
|
|
87
|
+
/** Settings for Amazon OpenSearch Service target endpoints. */
|
|
88
|
+
readonly openSearchSettings?: OpenSearchSettings;
|
|
89
|
+
/** Settings for Amazon Neptune target endpoints. */
|
|
90
|
+
readonly neptuneSettings?: NeptuneSettings;
|
|
91
|
+
/** Settings for Amazon ElastiCache for Redis target endpoints. */
|
|
92
|
+
readonly redisSettings?: RedisSettings;
|
|
93
|
+
/**
|
|
94
|
+
* Removal policy for the endpoint resource.
|
|
95
|
+
* @default cdk.RemovalPolicy.DESTROY
|
|
96
|
+
*/
|
|
97
|
+
readonly removalPolicy?: cdk.RemovalPolicy;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A DMS endpoint construct supporting every engine that DMS supports.
|
|
101
|
+
*
|
|
102
|
+
* Set `engine` to the desired {@link EndpointEngine} and supply the
|
|
103
|
+
* matching `*Settings` property. All other `*Settings` properties are
|
|
104
|
+
* ignored at runtime.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* // MySQL source
|
|
108
|
+
* new DmsEndpoint(this, 'Source', {
|
|
109
|
+
* endpointType: EndpointType.SOURCE,
|
|
110
|
+
* engine: EndpointEngine.MYSQL,
|
|
111
|
+
* serverName: 'mysql.example.com',
|
|
112
|
+
* port: 3306,
|
|
113
|
+
* username: 'dms_user',
|
|
114
|
+
* password: cdk.SecretValue.ssmSecure('/dms/mysql/password'),
|
|
115
|
+
* databaseName: 'mydb',
|
|
116
|
+
* });
|
|
117
|
+
*/
|
|
118
|
+
export declare class DmsEndpoint extends Construct implements IDmsEndpoint {
|
|
119
|
+
private static readonly TARGET_ONLY_ENGINES;
|
|
120
|
+
private static readonly SOURCE_ONLY_ENGINES;
|
|
121
|
+
private static validateEngineEndpointType;
|
|
122
|
+
/** The underlying CloudFormation endpoint resource. */
|
|
123
|
+
readonly cfnEndpoint: dms.CfnEndpoint;
|
|
124
|
+
/** ARN of the DMS endpoint. */
|
|
125
|
+
readonly endpointArn: string;
|
|
126
|
+
constructor(scope: Construct, id: string, props: DmsEndpointProps);
|
|
127
|
+
private buildMySqlSettings;
|
|
128
|
+
private buildPostgreSqlSettings;
|
|
129
|
+
private buildOracleSettings;
|
|
130
|
+
private buildSqlServerSettings;
|
|
131
|
+
private buildSapAseSettings;
|
|
132
|
+
private buildDb2Settings;
|
|
133
|
+
private buildMongoDbSettings;
|
|
134
|
+
private buildDocDbSettings;
|
|
135
|
+
private buildS3Settings;
|
|
136
|
+
private buildDynamoDbSettings;
|
|
137
|
+
private buildRedshiftSettings;
|
|
138
|
+
private buildKinesisSettings;
|
|
139
|
+
private buildKafkaSettings;
|
|
140
|
+
private buildOpenSearchSettings;
|
|
141
|
+
private buildNeptuneSettings;
|
|
142
|
+
private buildRedisSettings;
|
|
143
|
+
}
|