@microsoft/terraform-cdk-constructs 0.0.3-pre.6 → 0.0.3-pre.7

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.
Files changed (85) hide show
  1. package/.jsii +909 -306
  2. package/API.md +2488 -255
  3. package/README.md +112 -18
  4. package/docs/images/ide-documentation.png +0 -0
  5. package/lib/azure-actiongroup/lib/actiongroup.d.ts +39 -0
  6. package/lib/azure-actiongroup/lib/actiongroup.js +40 -1
  7. package/lib/azure-applicationgateway/lib/gateway.d.ts +76 -0
  8. package/lib/azure-applicationgateway/lib/gateway.js +78 -2
  9. package/lib/azure-applicationinsights/lib/appinsights.d.ts +50 -0
  10. package/lib/azure-applicationinsights/lib/appinsights.js +52 -3
  11. package/lib/azure-containerregistry/lib/registry.d.ts +29 -0
  12. package/lib/azure-containerregistry/lib/registry.js +31 -2
  13. package/lib/azure-datalake/lib/datalake.d.ts +50 -0
  14. package/lib/azure-datalake/lib/datalake.js +51 -1
  15. package/lib/azure-datalake/lib/filesystem.d.ts +51 -0
  16. package/lib/azure-datalake/lib/filesystem.js +52 -1
  17. package/lib/azure-datalake/lib/path.d.ts +37 -0
  18. package/lib/azure-datalake/lib/path.js +38 -1
  19. package/lib/azure-eventhub/lib/authorization.d.ts +30 -0
  20. package/lib/azure-eventhub/lib/authorization.js +32 -2
  21. package/lib/azure-eventhub/lib/cluster.d.ts +29 -0
  22. package/lib/azure-eventhub/lib/cluster.js +31 -2
  23. package/lib/azure-eventhub/lib/consumer.d.ts +28 -0
  24. package/lib/azure-eventhub/lib/consumer.js +30 -2
  25. package/lib/azure-eventhub/lib/instance.d.ts +118 -0
  26. package/lib/azure-eventhub/lib/instance.js +120 -2
  27. package/lib/azure-eventhub/lib/kusto-connection.d.ts +41 -0
  28. package/lib/azure-eventhub/lib/kusto-connection.js +43 -2
  29. package/lib/azure-eventhub/lib/namespace.d.ts +74 -0
  30. package/lib/azure-eventhub/lib/namespace.js +76 -3
  31. package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
  32. package/lib/azure-keyvault/lib/certificate.d.ts +96 -2
  33. package/lib/azure-keyvault/lib/certificate.js +55 -3
  34. package/lib/azure-keyvault/lib/key.d.ts +36 -0
  35. package/lib/azure-keyvault/lib/key.js +38 -2
  36. package/lib/azure-keyvault/lib/policy.d.ts +30 -0
  37. package/lib/azure-keyvault/lib/policy.js +32 -2
  38. package/lib/azure-keyvault/lib/secret.d.ts +31 -0
  39. package/lib/azure-keyvault/lib/secret.js +33 -2
  40. package/lib/azure-keyvault/lib/vault.d.ts +188 -0
  41. package/lib/azure-keyvault/lib/vault.js +191 -7
  42. package/lib/azure-kubernetes/lib/cluster.d.ts +25 -4
  43. package/lib/azure-kubernetes/lib/cluster.js +27 -6
  44. package/lib/azure-kusto/lib/cluster.d.ts +53 -0
  45. package/lib/azure-kusto/lib/cluster.js +55 -2
  46. package/lib/azure-kusto/lib/compute-specification.js +1 -1
  47. package/lib/azure-kusto/lib/database.d.ts +103 -0
  48. package/lib/azure-kusto/lib/database.js +105 -2
  49. package/lib/azure-loganalytics/lib/workspace.d.ts +47 -0
  50. package/lib/azure-loganalytics/lib/workspace.js +49 -2
  51. package/lib/azure-metricalert/lib/metric-alert.d.ts +43 -4
  52. package/lib/azure-metricalert/lib/metric-alert.js +45 -6
  53. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
  54. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +92 -0
  55. package/lib/azure-networksecuritygroup/lib/securitygroup.js +95 -5
  56. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +35 -4
  57. package/lib/azure-queryrulealert/lib/query-rule-alert.js +37 -6
  58. package/lib/azure-resourcegroup/lib/resource-group.d.ts +28 -0
  59. package/lib/azure-resourcegroup/lib/resource-group.js +30 -2
  60. package/lib/azure-storageaccount/lib/account.d.ts +75 -48
  61. package/lib/azure-storageaccount/lib/account.js +77 -50
  62. package/lib/azure-storageaccount/lib/container.d.ts +94 -12
  63. package/lib/azure-storageaccount/lib/container.js +97 -15
  64. package/lib/azure-storageaccount/lib/fileshare.d.ts +36 -0
  65. package/lib/azure-storageaccount/lib/fileshare.js +39 -3
  66. package/lib/azure-storageaccount/lib/queue.d.ts +29 -0
  67. package/lib/azure-storageaccount/lib/queue.js +31 -2
  68. package/lib/azure-storageaccount/lib/table.d.ts +32 -0
  69. package/lib/azure-storageaccount/lib/table.js +34 -2
  70. package/lib/azure-virtualmachine/lib/image-references.js +2 -2
  71. package/lib/azure-virtualmachine/lib/vm.d.ts +84 -8
  72. package/lib/azure-virtualmachine/lib/vm.js +87 -11
  73. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +98 -8
  74. package/lib/azure-virtualmachinescaleset/lib/cluster.js +101 -11
  75. package/lib/azure-virtualnetwork/lib/network.d.ts +61 -0
  76. package/lib/azure-virtualnetwork/lib/network.js +63 -3
  77. package/lib/azure-virtualnetwork/lib/peering.d.ts +39 -0
  78. package/lib/azure-virtualnetwork/lib/peering.js +41 -2
  79. package/lib/core-azure/lib/diagsettings.d.ts +37 -0
  80. package/lib/core-azure/lib/diagsettings.js +39 -2
  81. package/lib/core-azure/lib/rbac.d.ts +22 -4
  82. package/lib/core-azure/lib/rbac.js +24 -6
  83. package/lib/core-azure/lib/resource.d.ts +45 -0
  84. package/lib/core-azure/lib/resource.js +48 -4
  85. package/package.json +1 -1
@@ -11,6 +11,32 @@ const policy_1 = require("./policy");
11
11
  const secret_1 = require("./secret");
12
12
  const lib_1 = require("../../core-azure/lib");
13
13
  class Vault extends lib_1.AzureResource {
14
+ /**
15
+ * Constructs a new Azure Key Vault resource.
16
+ *
17
+ * This class creates and configures an Azure Key Vault, a secure store for managing secrets, keys, certificates, and other sensitive data.
18
+ * It supports advanced configurations such as access policies, network rules, and data retention policies.
19
+ *
20
+ * @param scope - The scope in which to define this construct, usually representing the Cloud Development Kit (CDK) stack.
21
+ * @param id - The unique identifier for this instance of the Key Vault.
22
+ * @param props - The properties for creating the Key Vault as defined in VaultProps. These include settings for location, SKU, tenant ID, etc.
23
+ *
24
+ * Example usage:
25
+ * ```typescript
26
+ * new Vault(this, 'MyKeyVault', {
27
+ * name: 'mySecureVault',
28
+ * location: 'East US',
29
+ * resourceGroup: myResourceGroup,
30
+ * sku: 'premium',
31
+ * tenantId: 'my-tenant-id',
32
+ * softDeleteRetentionDays: 90,
33
+ * purgeProtection: true,
34
+ * tags: {
35
+ * project: 'My Application'
36
+ * }
37
+ * });
38
+ * ```
39
+ */
14
40
  constructor(scope, id, props) {
15
41
  super(scope, id);
16
42
  this.accessPolicies = [];
@@ -45,7 +71,11 @@ class Vault extends lib_1.AzureResource {
45
71
  /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
46
72
  cdktfTerraformOutputKeyVaultname.overrideLogicalId("key_vault_name");
47
73
  }
48
- // Access Policy Methods
74
+ /**
75
+ * Grants read-only access to secrets stored in the Key Vault to a specified Azure AD group.
76
+ *
77
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to secrets.
78
+ */
49
79
  grantSecretReaderAccess(azureAdGroupId) {
50
80
  const policyProps = {
51
81
  keyVaultId: this,
@@ -56,6 +86,11 @@ class Vault extends lib_1.AzureResource {
56
86
  const policy = new policy_1.AccessPolicy(this, `kv_secret_reader_access_${azureAdGroupId}`, policyProps);
57
87
  this.accessPolicies.push(policy);
58
88
  }
89
+ /**
90
+ * Grants administrative access to secrets stored in the Key Vault to a specified Azure AD group.
91
+ *
92
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to secrets.
93
+ */
59
94
  grantSecretAdminAccess(azureAdGroupId) {
60
95
  const policyProps = {
61
96
  keyVaultId: this,
@@ -74,6 +109,11 @@ class Vault extends lib_1.AzureResource {
74
109
  const policy = new policy_1.AccessPolicy(this, `kv_secret_admin_access_${azureAdGroupId}`, policyProps);
75
110
  this.accessPolicies.push(policy);
76
111
  }
112
+ /**
113
+ * Grants administrative access to certificates stored in the Key Vault to a specified Azure AD group.
114
+ *
115
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to certificates.
116
+ */
77
117
  grantCertAdminAccess(azureAdGroupId) {
78
118
  const policyProps = {
79
119
  keyVaultId: this,
@@ -92,6 +132,11 @@ class Vault extends lib_1.AzureResource {
92
132
  const policy = new policy_1.AccessPolicy(this, `kv_cert_admin_access_${azureAdGroupId}`, policyProps);
93
133
  this.accessPolicies.push(policy);
94
134
  }
135
+ /**
136
+ * Grants read-only access to certificates stored in the Key Vault to a specified Azure AD group.
137
+ *
138
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to certificates.
139
+ */
95
140
  grantCertReaderAccess(azureAdGroupId) {
96
141
  const policyProps = {
97
142
  keyVaultId: this,
@@ -102,6 +147,11 @@ class Vault extends lib_1.AzureResource {
102
147
  const policy = new policy_1.AccessPolicy(this, `kv_cert_reader_access_${azureAdGroupId}`, policyProps);
103
148
  this.accessPolicies.push(policy);
104
149
  }
150
+ /**
151
+ * Grants administrative access to keys stored in the Key Vault to a specified Azure AD group.
152
+ *
153
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to keys.
154
+ */
105
155
  grantKeyAdminAccess(azureAdGroupId) {
106
156
  const policyProps = {
107
157
  keyVaultId: this,
@@ -120,16 +170,27 @@ class Vault extends lib_1.AzureResource {
120
170
  const policy = new policy_1.AccessPolicy(this, `kv_key_admin_access_${azureAdGroupId}`, policyProps);
121
171
  this.accessPolicies.push(policy);
122
172
  }
173
+ /**
174
+ * Grants read-only access to keys stored in the Key Vault to a specified Azure AD group.
175
+ *
176
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to keys.
177
+ */
123
178
  grantKeyReaderAccess(azureAdGroupId) {
124
179
  const policyProps = {
125
180
  keyVaultId: this,
126
181
  tenantId: this.props.tenantId,
127
182
  objectId: azureAdGroupId,
128
- certificatePermissions: ["Get", "List"],
183
+ keyPermissions: ["Get", "List"],
129
184
  };
130
185
  const policy = new policy_1.AccessPolicy(this, `kv_key_reader_access_${azureAdGroupId}`, policyProps);
131
186
  this.accessPolicies.push(policy);
132
187
  }
188
+ /**
189
+ * Grants custom access based on specified options to an Azure AD group in the Key Vault.
190
+ *
191
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive the custom access.
192
+ * @param options - Custom access options specifying various permissions for secrets, keys, certificates, and storage.
193
+ */
133
194
  grantCustomAccess(azureAdGroupId, options) {
134
195
  const policyProps = {
135
196
  keyVaultId: this,
@@ -140,7 +201,32 @@ class Vault extends lib_1.AzureResource {
140
201
  const policy = new policy_1.AccessPolicy(this, `kv_custom_policy_access_${azureAdGroupId}`, policyProps);
141
202
  this.accessPolicies.push(policy);
142
203
  }
143
- // Create Secret Methods
204
+ /**
205
+ * Creates a new secret within the Azure Key Vault.
206
+ *
207
+ * This method facilitates the storage of sensitive information in the form of a secret within the Key Vault.
208
+ * Secrets are protected items such as passwords, database connection strings, or any other piece of information
209
+ * that needs to be securely stored and accessed. This method allows setting additional properties such as
210
+ * expiration date and content type for better management and compliance.
211
+ *
212
+ * @param keyVaultSecretName - The unique name for the secret within the Key Vault.
213
+ * @param secretValue - The sensitive information or data that needs to be securely stored as a secret.
214
+ * @param expirationDate - Optional. The expiration date of the secret in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
215
+ * If provided, the secret will no longer be valid after this date.
216
+ * @param contentType - Optional. A description of the type of information the secret contains (e.g., 'password', 'connectionString').
217
+ * This can be used by applications to handle the secret appropriately.
218
+ *
219
+ * Example usage:
220
+ * ```typescript
221
+ * vault.addSecret(
222
+ * 'myDatabasePassword',
223
+ * 'p@ssw0rd123!',
224
+ * '2030-01-01',
225
+ * 'databasePassword'
226
+ * );
227
+ * ```
228
+ * This method does not return a value. It creates a secret within the Key Vault with the specified properties.
229
+ */
144
230
  addSecret(keyVaultSecretName, secretValue, expirationDate, contentType) {
145
231
  const secretProps = {
146
232
  keyVaultId: this,
@@ -152,7 +238,28 @@ class Vault extends lib_1.AzureResource {
152
238
  };
153
239
  new secret_1.Secret(this, keyVaultSecretName, secretProps);
154
240
  }
155
- // Create Key Methods
241
+ /**
242
+ * Creates an RSA cryptographic key within the Azure Key Vault.
243
+ *
244
+ * This method facilitates the creation of an RSA key, which is useful for a variety of cryptographic operations such as
245
+ * encryption, decryption, digital signature verification, and more. The RSA key created by this method is configurable
246
+ * with an optional expiration date and a default key size of 2048 bits. The key operations allowed include decryption,
247
+ * encryption, signing, verifying signatures, and key wrapping/unwrapping.
248
+ *
249
+ * @param keyVaultKeyName - The unique name for the RSA key within the Key Vault.
250
+ * @param expirationDate - Optional. The expiration date of the key in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
251
+ * If provided, the key will no longer be valid after this date.
252
+ * @returns A KeyVaultKey object representing the newly created RSA key within the vault.
253
+ *
254
+ * Example usage:
255
+ * ```typescript
256
+ * const rsaKey = vault.addRSAKey(
257
+ * 'myRSAKey',
258
+ * '2030-01-01'
259
+ * );
260
+ * ```
261
+ * This method returns the created KeyVaultKey object, allowing further operations or references to the key.
262
+ */
156
263
  addRSAKey(keyVaultKeyName, expirationDate) {
157
264
  const keyProps = {
158
265
  keyVaultId: this,
@@ -166,6 +273,35 @@ class Vault extends lib_1.AzureResource {
166
273
  const key = new key_1.Key(this, keyVaultKeyName, keyProps);
167
274
  return key.vaultKey;
168
275
  }
276
+ /**
277
+ * Creates a cryptographic key within the Azure Key Vault.
278
+ *
279
+ * This method allows the creation of a cryptographic key of specified type and size within the Key Vault. The key can be
280
+ * configured with specific operations it can perform, such as encryption, decryption, signing, etc. An optional expiration
281
+ * date can also be set to control the key's lifecycle. This method is flexible, supporting various key types and sizes,
282
+ * making it suitable for a wide range of cryptographic needs.
283
+ *
284
+ * @param keyVaultKeyName - The unique name for the cryptographic key within the Key Vault.
285
+ * @param keyType - The type of cryptographic key to create (e.g., 'RSA', 'EC', 'oct-HSM').
286
+ * @param keySize - The size of the cryptographic key in bits (e.g., 2048, 3072, 4096 for RSA).
287
+ * @param keyOpts - A list of cryptographic operations that the key is allowed to perform. Possible values might include
288
+ * 'encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'.
289
+ * @param expirationDate - Optional. The expiration date of the key in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
290
+ * If provided, the key will no longer be valid after this date, aligning with best practices for key management.
291
+ * @returns A KeyVaultKey object representing the newly created cryptographic key within the vault.
292
+ *
293
+ * Example usage:
294
+ * ```typescript
295
+ * const myKey = vault.addKey(
296
+ * 'myKey',
297
+ * 'RSA',
298
+ * 2048,
299
+ * ['encrypt', 'decrypt', 'sign', 'verify'],
300
+ * '2030-12-31'
301
+ * );
302
+ * ```
303
+ * This method returns the created KeyVaultKey object, enabling immediate use within the application for cryptographic operations.
304
+ */
169
305
  addKey(keyVaultKeyName, keyType, keySize, keyOpts, expirationDate) {
170
306
  const keyProps = {
171
307
  keyVaultId: this,
@@ -179,7 +315,34 @@ class Vault extends lib_1.AzureResource {
179
315
  const key = new key_1.Key(this, keyVaultKeyName, keyProps);
180
316
  return key.vaultKey;
181
317
  }
182
- // Create Certificate Methods
318
+ /**
319
+ * Creates a self-signed certificate within the Azure Key Vault.
320
+ *
321
+ * This method facilitates the creation of a self-signed certificate, which is a digital certificate that is signed by
322
+ * its own creator rather than a trusted authority. Self-signed certificates can be useful for testing, internal
323
+ * communications, or any scenario where public trust is not required. The method allows specifying subject details,
324
+ * DNS names for the certificate, and managing its lifecycle with action types and expiry.
325
+ *
326
+ * @param certName - The unique name for the certificate within the Key Vault.
327
+ * @param subject - The subject name of the certificate, typically formatted as an X.500 Distinguished Name (e.g., "CN=example.com").
328
+ * @param dnsNames - An array of DNS names that should be associated with this certificate. This is useful for certificates
329
+ * that need to be valid for multiple hostnames.
330
+ * @param actionType - Optional. Specifies the action to be performed with the certificate, such as 'create' or 'renew'.
331
+ * @param daysBeforeExpiry - Optional. Number of days before expiry when an action should be taken, useful for auto-renewal scenarios.
332
+ * @returns A KeyVaultCertificate object representing the newly created self-signed certificate.
333
+ *
334
+ * Example usage:
335
+ * ```typescript
336
+ * const myCertificate = vault.addSelfSignedCert(
337
+ * 'myCert',
338
+ * 'CN=mydomain.com',
339
+ * ['mydomain.com', 'www.mydomain.com'],
340
+ * 'create',
341
+ * 30
342
+ * );
343
+ * ```
344
+ * This method returns the KeyVaultCertificate object, enabling it to be used immediately within the application or stored for future use.
345
+ */
183
346
  addSelfSignedCert(certName, subject, dnsNames, actionType, daysBeforeExpiry) {
184
347
  const keyProps = {
185
348
  keyVaultId: this,
@@ -193,6 +356,27 @@ class Vault extends lib_1.AzureResource {
193
356
  const cert = new certificate_1.SelfSignedCertificate(this, certName, keyProps);
194
357
  return cert.certificate;
195
358
  }
359
+ /**
360
+ * Adds a certificate issuer to the Azure Key Vault.
361
+ *
362
+ * This method configures a certificate issuer within the Key Vault, allowing the Key Vault to issue certificates
363
+ * through external providers. Configuring an issuer is essential for enabling automated certificate management
364
+ * processes, such as issuance and renewal, directly through the Key Vault with a specified Certificate Authority (CA).
365
+ *
366
+ * @param name - The unique name for the certificate issuer within the Key Vault.
367
+ * @param provider - The name of the external provider that will issue the certificates, such as 'DigiCert' or 'GlobalSign'.
368
+ *
369
+ * Example usage:
370
+ * ```typescript
371
+ * vault.addCertIssuer(
372
+ * 'myCertIssuer',
373
+ * 'DigiCert'
374
+ * );
375
+ * ```
376
+ * This method configures a certificate issuer but does not return any value. The issuer details, including provider name
377
+ * and any necessary credentials (managed externally or through additional method parameters), are set up in the Key Vault
378
+ * for future certificate operations.
379
+ */
196
380
  addCertIssuer(name, provider) {
197
381
  new certificate_1.CertificateIssuer(this, name, {
198
382
  name: name,
@@ -204,5 +388,5 @@ class Vault extends lib_1.AzureResource {
204
388
  }
205
389
  exports.Vault = Vault;
206
390
  _a = JSII_RTTI_SYMBOL_1;
207
- Vault[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_keyvault.Vault", version: "0.0.3-pre.6" };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUta2V5dmF1bHQvbGliL3ZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBRytDO0FBSy9DLCtCQUErQjtBQUUvQiwrQ0FJdUI7QUFDdkIsK0JBQXNDO0FBQ3RDLHFDQUEyRDtBQUMzRCxxQ0FBK0M7QUFDL0MsOENBQXFEO0FBNEVyRCxNQUFhLEtBQU0sU0FBUSxtQkFBYTtJQU90QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1FBQ3pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIWCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFLMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRXpDLHlCQUF5QjtRQUN6QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQztRQUN0RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQztRQUNwQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUM7UUFFcEUsTUFBTSxlQUFlLEdBQUcsSUFBSSxvQkFBUSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDdEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDM0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxHQUFHO1lBQ1osUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixzQkFBc0IsRUFBRSxl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LEVBQUU7WUFDaEMsSUFBSSxFQUFFLElBQUk7WUFDVixZQUFZLEVBQUUsUUFBUTtZQUN0QixVQUFVLEVBQUUsSUFBSTtZQUNoQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE1Ukgsc0JBNlJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgS2V5VmF1bHQsXG4gIEtleVZhdWx0TmV0d29ya0FjbHMsXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0XCI7XG5pbXBvcnQgeyBLZXlWYXVsdENlcnRpZmljYXRlIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9rZXktdmF1bHQtY2VydGlmaWNhdGVcIjsgLy8gQWRqdXN0IHRoZSBpbXBvcnQgcGF0aCBiYXNlZCBvbiB0aGUgYWN0dWFsIG1vZHVsZSBsb2NhdGlvbi5cbmltcG9ydCB7IEtleVZhdWx0S2V5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9rZXktdmF1bHQta2V5XCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBDZXJ0aWZpY2F0ZUlzc3VlcixcbiAgU2VsZlNpZ25lZENlcnRpZmljYXRlLFxuICBTZWxmU2lnbmVkQ2VydGlmaWNhdGVQcm9wcyxcbn0gZnJvbSBcIi4vY2VydGlmaWNhdGVcIjtcbmltcG9ydCB7IEtleSwgS2V5UHJvcHMgfSBmcm9tIFwiLi9rZXlcIjtcbmltcG9ydCB7IEFjY2Vzc1BvbGljeSwgQWNjZXNzUG9saWN5UHJvcHMgfSBmcm9tIFwiLi9wb2xpY3lcIjtcbmltcG9ydCB7IFNlY3JldCwgU2VjcmV0UHJvcHMgfSBmcm9tIFwiLi9zZWNyZXRcIjtcbmltcG9ydCB7IEF6dXJlUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWYXVsdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBLZXkgVmF1bHQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgUmVnaW9uIHRvIGRlcGxveSB0aGUgS2V5IFZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBenVyZSBSZXNvdXJjZSBHcm91cC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhc3NpZ24gdG8gdGhlIEtleSBWYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBLZXkgVmF1bHQuXG4gICAqL1xuICByZWFkb25seSBza3U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgU0tVIHVzZWQgZm9yIHRoaXMgS2V5IFZhdWx0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlIHN0YW5kYXJkIGFuZCBwcmVtaXVtLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVuYW50SWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IHRlbmFudCBJRCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGluZyByZXF1ZXN0cyB0byB0aGUga2V5IHZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0FjbHM/OiBLZXlWYXVsdE5ldHdvcmtBY2xzO1xuICAvKipcbiAgICogQSBtYXAgb2YgSVAgbmV0d29yayBBQ0wgcnVsZXMuIFRoZSBrZXkgaXMgdGhlIElQIG9yIElQIHJhbmdlIGluIENJRFIgbm90YXRpb24uXG4gICAqIFRoZSB2YWx1ZSBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoYXQgSVAgcmFuZ2UuXG4gICAqL1xuICByZWFkb25seSBwdXJnZVByb3RlY3Rpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogIFNwZWNpZmllcyB3aGV0aGVyIHByb3RlY3Rpb24gYWdhaW5zdCBwdXJnZSBpcyBlbmFibGVkIGZvciB0aGlzIEtleSBWYXVsdC5cbiAgICogU2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIHRydWUgYWN0aXZhdGVzIHByb3RlY3Rpb24gYWdhaW5zdCBkZWxldGlvbiBvZiBhbnkgYWN0aXZlIGtleSwgc2VjcmV0IG9yIGNlcnRpZmljYXRlIGluIHRoZSB2YXVsdC4gVGhlIHNldHRpbmcgaXMgZWZmZWN0aXZlIG9ubHkgaWYgc29mdCBkZWxldGUgaXMgYWxzbyBlbmFibGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS5cbiAgICogT25jZSBhY3RpdmF0ZWQsIHRoZSBwcm9wZXJ0eSBjYW5ub3QgYmUgcmV2ZXJ0ZWQgdG8gZmFsc2UuXG4gICAqL1xuICByZWFkb25seSBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IGl0ZW1zIHNob3VsZCBiZSByZXRhaW5lZCBmb3Igb25jZSBzb2Z0LWRlbGV0ZWQuXG4gICAqL1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGdyYW50aW5nIGN1c3RvbSBhY2Nlc3MgcGVybWlzc2lvbnMgaW4gQXp1cmUgS2V5IFZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYW50Q3VzdG9tQWNjZXNzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBzZWNyZXRzIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEV4YW1wbGUgcGVybWlzc2lvbnMgaW5jbHVkZSAnZ2V0JywgJ2xpc3QnLCAnc2V0JywgJ2RlbGV0ZScsIGV0Yy5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldFBlcm1pc3Npb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsOiBBIGxpc3Qgb2YgcGVybWlzc2lvbnMgdG8gZ3JhbnQgZm9yIGNlcnRpZmljYXRlcyBpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBFeGFtcGxlIHBlcm1pc3Npb25zIGluY2x1ZGUgJ2dldCcsICdsaXN0JywgJ2NyZWF0ZScsICdkZWxldGUnLCBldGMuXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsOiBBIGxpc3Qgb2YgcGVybWlzc2lvbnMgdG8gZ3JhbnQgZm9yIGtleXMgaW4gdGhlIEtleSBWYXVsdC5cbiAgICogRXhhbXBsZSBwZXJtaXNzaW9ucyBpbmNsdWRlICdlbmNyeXB0JywgJ2RlY3J5cHQnLCAnd3JhcEtleScsICd1bndyYXBLZXknLCBldGMuXG4gICAqL1xuICByZWFkb25seSBrZXlQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBzdG9yYWdlIGFjY291bnRzIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEV4YW1wbGUgcGVybWlzc2lvbnMgaW5jbHVkZSAnZ2V0JywgJ2xpc3QnLCAnZGVsZXRlJywgJ3NldCcsICd1cGRhdGUnLCBldGMuXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlUGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFZhdWx0IGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHByb3BzOiBWYXVsdFByb3BzO1xuICBwdWJsaWMga2V5VmF1bHQ6IEtleVZhdWx0O1xuICBwdWJsaWMgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgYWNjZXNzUG9saWNpZXM6IEFjY2Vzc1BvbGljeVtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZhdWx0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucmVzb3VyY2VHcm91cCA9IHByb3BzLnJlc291cmNlR3JvdXA7XG5cbiAgICAvLyBQcm92aWRlIGRlZmF1bHQgdmFsdWVzXG4gICAgY29uc3QgcHVyZ2VQcm90ZWN0aW9uID0gcHJvcHMucHVyZ2VQcm90ZWN0aW9uID8/IHRydWU7XG4gICAgY29uc3Qgc2t1ID0gcHJvcHMuc2t1ID8/IFwic3RhbmRhcmRcIjtcbiAgICBjb25zdCBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5cyA9IHByb3BzLnNvZnREZWxldGVSZXRlbnRpb25EYXlzID8/IDkwO1xuXG4gICAgY29uc3QgYXp1cmVybUtleVZhdWx0ID0gbmV3IEtleVZhdWx0KHRoaXMsIFwia2V5X3ZhdWx0XCIsIHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHNrdU5hbWU6IHNrdSxcbiAgICAgIHRlbmFudElkOiBwcm9wcy50ZW5hbnRJZCxcbiAgICAgIG5ldHdvcmtBY2xzOiBwcm9wcy5uZXR3b3JrQWNscyxcbiAgICAgIHB1cmdlUHJvdGVjdGlvbkVuYWJsZWQ6IHB1cmdlUHJvdGVjdGlvbixcbiAgICAgIHNvZnREZWxldGVSZXRlbnRpb25EYXlzOiBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5cyxcbiAgICB9KTtcbiAgICB0aGlzLmlkID0gYXp1cmVybUtleVZhdWx0LmlkO1xuICAgIHRoaXMua2V5VmF1bHQgPSBhenVyZXJtS2V5VmF1bHQ7XG5cbiAgICAvLyBUZXJyYWZvcm0gT3V0cHV0c1xuICAgIGNvbnN0IGNka3RmVGVycmFmb3JtT3V0cHV0S2V5VmF1bHRpZCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJpZFwiLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYXp1cmVybUtleVZhdWx0LmlkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLypUaGlzIGFsbG93cyB0aGUgVGVycmFmb3JtIHJlc291cmNlIG5hbWUgdG8gbWF0Y2ggdGhlIG9yaWdpbmFsIG5hbWUuIFlvdSBjYW4gcmVtb3ZlIHRoZSBjYWxsIGlmIHlvdSBkb24ndCBuZWVkIHRoZW0gdG8gbWF0Y2guKi9cbiAgICBjZGt0ZlRlcnJhZm9ybU91dHB1dEtleVZhdWx0aWQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcblxuICAgIGNvbnN0IGNka3RmVGVycmFmb3JtT3V0cHV0S2V5VmF1bHRuYW1lID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBcImtleV92YXVsdF9uYW1lXCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBhenVyZXJtS2V5VmF1bHQubmFtZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8qVGhpcyBhbGxvd3MgdGhlIFRlcnJhZm9ybSByZXNvdXJjZSBuYW1lIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCBuYW1lLiBZb3UgY2FuIHJlbW92ZSB0aGUgY2FsbCBpZiB5b3UgZG9uJ3QgbmVlZCB0aGVtIHRvIG1hdGNoLiovXG4gICAgY2RrdGZUZXJyYWZvcm1PdXRwdXRLZXlWYXVsdG5hbWUub3ZlcnJpZGVMb2dpY2FsSWQoXCJrZXlfdmF1bHRfbmFtZVwiKTtcbiAgfVxuXG4gIC8vIEFjY2VzcyBQb2xpY3kgTWV0aG9kc1xuICBwdWJsaWMgZ3JhbnRTZWNyZXRSZWFkZXJBY2Nlc3MoYXp1cmVBZEdyb3VwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIHNlY3JldFBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9zZWNyZXRfcmVhZGVyX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgcHVibGljIGdyYW50U2VjcmV0QWRtaW5BY2Nlc3MoYXp1cmVBZEdyb3VwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIHNlY3JldFBlcm1pc3Npb25zOiBbXG4gICAgICAgIFwiR2V0XCIsXG4gICAgICAgIFwiTGlzdFwiLFxuICAgICAgICBcIlNldFwiLFxuICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICBcIkJhY2t1cFwiLFxuICAgICAgICBcIlJlc3RvcmVcIixcbiAgICAgICAgXCJSZWNvdmVyXCIsXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9zZWNyZXRfYWRtaW5fYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRDZXJ0QWRtaW5BY2Nlc3MoYXp1cmVBZEdyb3VwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIGNlcnRpZmljYXRlUGVybWlzc2lvbnM6IFtcbiAgICAgICAgXCJHZXRcIixcbiAgICAgICAgXCJMaXN0XCIsXG4gICAgICAgIFwiU2V0XCIsXG4gICAgICAgIFwiRGVsZXRlXCIsXG4gICAgICAgIFwiQmFja3VwXCIsXG4gICAgICAgIFwiUmVzdG9yZVwiLFxuICAgICAgICBcIlJlY292ZXJcIixcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBY2Nlc3NQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYGt2X2NlcnRfYWRtaW5fYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRDZXJ0UmVhZGVyQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9jZXJ0X3JlYWRlcl9hY2Nlc3NfJHthenVyZUFkR3JvdXBJZH1gLFxuICAgICAgcG9saWN5UHJvcHMsXG4gICAgKTtcbiAgICB0aGlzLmFjY2Vzc1BvbGljaWVzLnB1c2gocG9saWN5KTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudEtleUFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBrZXlQZXJtaXNzaW9uczogW1xuICAgICAgICBcIkdldFwiLFxuICAgICAgICBcIkxpc3RcIixcbiAgICAgICAgXCJTZXRcIixcbiAgICAgICAgXCJEZWxldGVcIixcbiAgICAgICAgXCJCYWNrdXBcIixcbiAgICAgICAgXCJSZXN0b3JlXCIsXG4gICAgICAgIFwiUmVjb3ZlclwiLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3Zfa2V5X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgcHVibGljIGdyYW50S2V5UmVhZGVyQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9rZXlfcmVhZGVyX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgcHVibGljIGdyYW50Q3VzdG9tQWNjZXNzKFxuICAgIGF6dXJlQWRHcm91cElkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogR3JhbnRDdXN0b21BY2Nlc3NPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9jdXN0b21fcG9saWN5X2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLy8gQ3JlYXRlIFNlY3JldCBNZXRob2RzXG4gIHB1YmxpYyBhZGRTZWNyZXQoXG4gICAga2V5VmF1bHRTZWNyZXROYW1lOiBzdHJpbmcsXG4gICAgc2VjcmV0VmFsdWU6IHN0cmluZyxcbiAgICBleHBpcmF0aW9uRGF0ZT86IHN0cmluZyxcbiAgICBjb250ZW50VHlwZT86IHN0cmluZyxcbiAgKSB7XG4gICAgY29uc3Qgc2VjcmV0UHJvcHM6IFNlY3JldFByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIG5hbWU6IGtleVZhdWx0U2VjcmV0TmFtZSxcbiAgICAgIHZhbHVlOiBzZWNyZXRWYWx1ZSxcbiAgICAgIGV4cGlyYXRpb25EYXRlOiBleHBpcmF0aW9uRGF0ZSxcbiAgICAgIGNvbnRlbnRUeXBlOiBjb250ZW50VHlwZSxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH07XG5cbiAgICBuZXcgU2VjcmV0KHRoaXMsIGtleVZhdWx0U2VjcmV0TmFtZSwgc2VjcmV0UHJvcHMpO1xuICB9XG5cbiAgLy8gQ3JlYXRlIEtleSBNZXRob2RzXG4gIHB1YmxpYyBhZGRSU0FLZXkoXG4gICAga2V5VmF1bHRLZXlOYW1lOiBzdHJpbmcsXG4gICAgZXhwaXJhdGlvbkRhdGU/OiBzdHJpbmcsXG4gICk6IEtleVZhdWx0S2V5IHtcbiAgICBjb25zdCBrZXlQcm9wczogS2V5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgbmFtZToga2V5VmF1bHRLZXlOYW1lLFxuICAgICAga2V5VHlwZTogXCJSU0FcIixcbiAgICAgIGtleVNpemU6IDIwNDgsXG4gICAgICBrZXlPcHRzOiBbXCJkZWNyeXB0XCIsIFwiZW5jcnlwdFwiLCBcInNpZ25cIiwgXCJ1bndyYXBLZXlcIiwgXCJ2ZXJpZnlcIiwgXCJ3cmFwS2V5XCJdLFxuICAgICAgZXhwaXJlczogZXhwaXJhdGlvbkRhdGUsXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5ID0gbmV3IEtleSh0aGlzLCBrZXlWYXVsdEtleU5hbWUsIGtleVByb3BzKTtcbiAgICByZXR1cm4ga2V5LnZhdWx0S2V5O1xuICB9XG5cbiAgcHVibGljIGFkZEtleShcbiAgICBrZXlWYXVsdEtleU5hbWU6IHN0cmluZyxcbiAgICBrZXlUeXBlOiBzdHJpbmcsXG4gICAga2V5U2l6ZTogbnVtYmVyLFxuICAgIGtleU9wdHM6IHN0cmluZ1tdLFxuICAgIGV4cGlyYXRpb25EYXRlPzogc3RyaW5nLFxuICApOiBLZXlWYXVsdEtleSB7XG4gICAgY29uc3Qga2V5UHJvcHM6IEtleVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIG5hbWU6IGtleVZhdWx0S2V5TmFtZSxcbiAgICAgIGtleVR5cGU6IGtleVR5cGUsXG4gICAgICBrZXlTaXplOiBrZXlTaXplLFxuICAgICAga2V5T3B0czoga2V5T3B0cyxcbiAgICAgIGV4cGlyZXM6IGV4cGlyYXRpb25EYXRlLFxuICAgICAgYWNjZXNzUG9saWNpZXM6IHRoaXMuYWNjZXNzUG9saWNpZXMsXG4gICAgfTtcblxuICAgIGNvbnN0IGtleSA9IG5ldyBLZXkodGhpcywga2V5VmF1bHRLZXlOYW1lLCBrZXlQcm9wcyk7XG4gICAgcmV0dXJuIGtleS52YXVsdEtleTtcbiAgfVxuXG4gIC8vIENyZWF0ZSBDZXJ0aWZpY2F0ZSBNZXRob2RzXG5cbiAgcHVibGljIGFkZFNlbGZTaWduZWRDZXJ0KFxuICAgIGNlcnROYW1lOiBzdHJpbmcsXG4gICAgc3ViamVjdDogc3RyaW5nLFxuICAgIGRuc05hbWVzOiBzdHJpbmdbXSxcbiAgICBhY3Rpb25UeXBlPzogc3RyaW5nLFxuICAgIGRheXNCZWZvcmVFeHBpcnk/OiBudW1iZXIsXG4gICk6IEtleVZhdWx0Q2VydGlmaWNhdGUge1xuICAgIGNvbnN0IGtleVByb3BzOiBTZWxmU2lnbmVkQ2VydGlmaWNhdGVQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBuYW1lOiBjZXJ0TmFtZSxcbiAgICAgIHN1YmplY3Q6IHN1YmplY3QsXG4gICAgICBkbnNOYW1lczogZG5zTmFtZXMsXG4gICAgICBhY3Rpb25UeXBlOiBhY3Rpb25UeXBlLFxuICAgICAgZGF5c0JlZm9yZUV4cGlyeTogZGF5c0JlZm9yZUV4cGlyeSxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH07XG4gICAgY29uc3QgY2VydCA9IG5ldyBTZWxmU2lnbmVkQ2VydGlmaWNhdGUodGhpcywgY2VydE5hbWUsIGtleVByb3BzKTtcbiAgICByZXR1cm4gY2VydC5jZXJ0aWZpY2F0ZTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDZXJ0SXNzdWVyKG5hbWU6IHN0cmluZywgcHJvdmlkZXI6IHN0cmluZykge1xuICAgIG5ldyBDZXJ0aWZpY2F0ZUlzc3Vlcih0aGlzLCBuYW1lLCB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgcHJvdmlkZXJOYW1lOiBwcm92aWRlcixcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
391
+ Vault[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_keyvault.Vault", version: "0.0.3-pre.7" };
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUta2V5dmF1bHQvbGliL3ZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBRytDO0FBSy9DLCtCQUErQjtBQUUvQiwrQ0FJdUI7QUFDdkIsK0JBQXNDO0FBQ3RDLHFDQUEyRDtBQUMzRCxxQ0FBK0M7QUFDL0MsOENBQXFEO0FBNEVyRCxNQUFhLEtBQU0sU0FBUSxtQkFBYTtJQU90Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlCRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQTdCWCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUErQjFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUV6Qyx5QkFBeUI7UUFDekIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUM7UUFDcEMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDO1FBRXBFLE1BQU0sZUFBZSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixPQUFPLEVBQUUsR0FBRztZQUNaLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVB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QUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksbUNBQXFCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLGFBQWEsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFDakQsSUFBSSwrQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLElBQUksRUFBRSxJQUFJO1lBQ1YsWUFBWSxFQUFFLFFBQVE7WUFDdEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbmRILHNCQW9kQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleVZhdWx0LFxuICBLZXlWYXVsdE5ldHdvcmtBY2xzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2tleS12YXVsdFwiO1xuaW1wb3J0IHsgS2V5VmF1bHRDZXJ0aWZpY2F0ZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0LWNlcnRpZmljYXRlXCI7IC8vIEFkanVzdCB0aGUgaW1wb3J0IHBhdGggYmFzZWQgb24gdGhlIGFjdHVhbCBtb2R1bGUgbG9jYXRpb24uXG5pbXBvcnQgeyBLZXlWYXVsdEtleSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0LWtleVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGVJc3N1ZXIsXG4gIFNlbGZTaWduZWRDZXJ0aWZpY2F0ZSxcbiAgU2VsZlNpZ25lZENlcnRpZmljYXRlUHJvcHMsXG59IGZyb20gXCIuL2NlcnRpZmljYXRlXCI7XG5pbXBvcnQgeyBLZXksIEtleVByb3BzIH0gZnJvbSBcIi4va2V5XCI7XG5pbXBvcnQgeyBBY2Nlc3NQb2xpY3ksIEFjY2Vzc1BvbGljeVByb3BzIH0gZnJvbSBcIi4vcG9saWN5XCI7XG5pbXBvcnQgeyBTZWNyZXQsIFNlY3JldFByb3BzIH0gZnJvbSBcIi4vc2VjcmV0XCI7XG5pbXBvcnQgeyBBenVyZVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmF1bHRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgS2V5IFZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEF6dXJlIFJlZ2lvbiB0byBkZXBsb3kgdGhlIEtleSBWYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQXp1cmUgUmVzb3VyY2UgR3JvdXAuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBLZXkgVmF1bHQuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFzc2lnbiB0byB0aGUgS2V5IFZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2t1Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIE5hbWUgb2YgdGhlIFNLVSB1c2VkIGZvciB0aGlzIEtleSBWYXVsdC4gUG9zc2libGUgdmFsdWVzIGFyZSBzdGFuZGFyZCBhbmQgcHJlbWl1bS5cbiAgICovXG4gIHJlYWRvbmx5IHRlbmFudElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSB0ZW5hbnQgSUQgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpbmcgcmVxdWVzdHMgdG8gdGhlIGtleSB2YXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xzPzogS2V5VmF1bHROZXR3b3JrQWNscztcbiAgLyoqXG4gICAqIEEgbWFwIG9mIElQIG5ldHdvcmsgQUNMIHJ1bGVzLiBUaGUga2V5IGlzIHRoZSBJUCBvciBJUCByYW5nZSBpbiBDSURSIG5vdGF0aW9uLlxuICAgKiBUaGUgdmFsdWUgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGF0IElQIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVyZ2VQcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBTcGVjaWZpZXMgd2hldGhlciBwcm90ZWN0aW9uIGFnYWluc3QgcHVyZ2UgaXMgZW5hYmxlZCBmb3IgdGhpcyBLZXkgVmF1bHQuXG4gICAqIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIGFjdGl2YXRlcyBwcm90ZWN0aW9uIGFnYWluc3QgZGVsZXRpb24gb2YgYW55IGFjdGl2ZSBrZXksIHNlY3JldCBvciBjZXJ0aWZpY2F0ZSBpbiB0aGUgdmF1bHQuIFRoZSBzZXR0aW5nIGlzIGVmZmVjdGl2ZSBvbmx5IGlmIHNvZnQgZGVsZXRlIGlzIGFsc28gZW5hYmxlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UuXG4gICAqIE9uY2UgYWN0aXZhdGVkLCB0aGUgcHJvcGVydHkgY2Fubm90IGJlIHJldmVydGVkIHRvIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc29mdERlbGV0ZVJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRheXMgdGhhdCBpdGVtcyBzaG91bGQgYmUgcmV0YWluZWQgZm9yIG9uY2Ugc29mdC1kZWxldGVkLlxuICAgKi9cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBncmFudGluZyBjdXN0b20gYWNjZXNzIHBlcm1pc3Npb25zIGluIEF6dXJlIEtleSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFudEN1c3RvbUFjY2Vzc09wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9uYWw6IEEgbGlzdCBvZiBwZXJtaXNzaW9ucyB0byBncmFudCBmb3Igc2VjcmV0cyBpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBFeGFtcGxlIHBlcm1pc3Npb25zIGluY2x1ZGUgJ2dldCcsICdsaXN0JywgJ3NldCcsICdkZWxldGUnLCBldGMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBjZXJ0aWZpY2F0ZXMgaW4gdGhlIEtleSBWYXVsdC5cbiAgICogRXhhbXBsZSBwZXJtaXNzaW9ucyBpbmNsdWRlICdnZXQnLCAnbGlzdCcsICdjcmVhdGUnLCAnZGVsZXRlJywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBrZXlzIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEV4YW1wbGUgcGVybWlzc2lvbnMgaW5jbHVkZSAnZW5jcnlwdCcsICdkZWNyeXB0JywgJ3dyYXBLZXknLCAndW53cmFwS2V5JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5UGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWw6IEEgbGlzdCBvZiBwZXJtaXNzaW9ucyB0byBncmFudCBmb3Igc3RvcmFnZSBhY2NvdW50cyBpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBFeGFtcGxlIHBlcm1pc3Npb25zIGluY2x1ZGUgJ2dldCcsICdsaXN0JywgJ2RlbGV0ZScsICdzZXQnLCAndXBkYXRlJywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZVBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBWYXVsdCBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICByZWFkb25seSBwcm9wczogVmF1bHRQcm9wcztcbiAgcHVibGljIGtleVZhdWx0OiBLZXlWYXVsdDtcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwcml2YXRlIGFjY2Vzc1BvbGljaWVzOiBBY2Nlc3NQb2xpY3lbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEF6dXJlIEtleSBWYXVsdCByZXNvdXJjZS5cbiAgICpcbiAgICogVGhpcyBjbGFzcyBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGFuIEF6dXJlIEtleSBWYXVsdCwgYSBzZWN1cmUgc3RvcmUgZm9yIG1hbmFnaW5nIHNlY3JldHMsIGtleXMsIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlbnNpdGl2ZSBkYXRhLlxuICAgKiBJdCBzdXBwb3J0cyBhZHZhbmNlZCBjb25maWd1cmF0aW9ucyBzdWNoIGFzIGFjY2VzcyBwb2xpY2llcywgbmV0d29yayBydWxlcywgYW5kIGRhdGEgcmV0ZW50aW9uIHBvbGljaWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0LCB1c3VhbGx5IHJlcHJlc2VudGluZyB0aGUgQ2xvdWQgRGV2ZWxvcG1lbnQgS2l0IChDREspIHN0YWNrLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIEtleSBWYXVsdC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIHRoZSBLZXkgVmF1bHQgYXMgZGVmaW5lZCBpbiBWYXVsdFByb3BzLiBUaGVzZSBpbmNsdWRlIHNldHRpbmdzIGZvciBsb2NhdGlvbiwgU0tVLCB0ZW5hbnQgSUQsIGV0Yy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBuZXcgVmF1bHQodGhpcywgJ015S2V5VmF1bHQnLCB7XG4gICAqICAgbmFtZTogJ215U2VjdXJlVmF1bHQnLFxuICAgKiAgIGxvY2F0aW9uOiAnRWFzdCBVUycsXG4gICAqICAgcmVzb3VyY2VHcm91cDogbXlSZXNvdXJjZUdyb3VwLFxuICAgKiAgIHNrdTogJ3ByZW1pdW0nLFxuICAgKiAgIHRlbmFudElkOiAnbXktdGVuYW50LWlkJyxcbiAgICogICBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5czogOTAsXG4gICAqICAgcHVyZ2VQcm90ZWN0aW9uOiB0cnVlLFxuICAgKiAgIHRhZ3M6IHtcbiAgICogICAgIHByb2plY3Q6ICdNeSBBcHBsaWNhdGlvbidcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWYXVsdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuXG4gICAgLy8gUHJvdmlkZSBkZWZhdWx0IHZhbHVlc1xuICAgIGNvbnN0IHB1cmdlUHJvdGVjdGlvbiA9IHByb3BzLnB1cmdlUHJvdGVjdGlvbiA/PyB0cnVlO1xuICAgIGNvbnN0IHNrdSA9IHByb3BzLnNrdSA/PyBcInN0YW5kYXJkXCI7XG4gICAgY29uc3Qgc29mdERlbGV0ZVJldGVudGlvbkRheXMgPSBwcm9wcy5zb2Z0RGVsZXRlUmV0ZW50aW9uRGF5cyA/PyA5MDtcblxuICAgIGNvbnN0IGF6dXJlcm1LZXlWYXVsdCA9IG5ldyBLZXlWYXVsdCh0aGlzLCBcImtleV92YXVsdFwiLCB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICBza3VOYW1lOiBza3UsXG4gICAgICB0ZW5hbnRJZDogcHJvcHMudGVuYW50SWQsXG4gICAgICBuZXR3b3JrQWNsczogcHJvcHMubmV0d29ya0FjbHMsXG4gICAgICBwdXJnZVByb3RlY3Rpb25FbmFibGVkOiBwdXJnZVByb3RlY3Rpb24sXG4gICAgICBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5czogc29mdERlbGV0ZVJldGVudGlvbkRheXMsXG4gICAgfSk7XG4gICAgdGhpcy5pZCA9IGF6dXJlcm1LZXlWYXVsdC5pZDtcbiAgICB0aGlzLmtleVZhdWx0ID0gYXp1cmVybUtleVZhdWx0O1xuXG4gICAgLy8gVGVycmFmb3JtIE91dHB1dHNcbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEtleVZhdWx0aWQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiaWRcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGF6dXJlcm1LZXlWYXVsdC5pZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8qVGhpcyBhbGxvd3MgdGhlIFRlcnJhZm9ybSByZXNvdXJjZSBuYW1lIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCBuYW1lLiBZb3UgY2FuIHJlbW92ZSB0aGUgY2FsbCBpZiB5b3UgZG9uJ3QgbmVlZCB0aGVtIHRvIG1hdGNoLiovXG4gICAgY2RrdGZUZXJyYWZvcm1PdXRwdXRLZXlWYXVsdGlkLm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG5cbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEtleVZhdWx0bmFtZSA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJrZXlfdmF1bHRfbmFtZVwiLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYXp1cmVybUtleVZhdWx0Lm5hbWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKlRoaXMgYWxsb3dzIHRoZSBUZXJyYWZvcm0gcmVzb3VyY2UgbmFtZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgbmFtZS4gWW91IGNhbiByZW1vdmUgdGhlIGNhbGwgaWYgeW91IGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaC4qL1xuICAgIGNka3RmVGVycmFmb3JtT3V0cHV0S2V5VmF1bHRuYW1lLm92ZXJyaWRlTG9naWNhbElkKFwia2V5X3ZhdWx0X25hbWVcIik7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gc2VjcmV0cyBzdG9yZWQgaW4gdGhlIEtleSBWYXVsdCB0byBhIHNwZWNpZmllZCBBenVyZSBBRCBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGF6dXJlQWRHcm91cElkIC0gVGhlIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgZ3JvdXAgSUQgdGhhdCB3aWxsIHJlY2VpdmUgcmVhZCBhY2Nlc3MgdG8gc2VjcmV0cy5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlY3JldFJlYWRlckFjY2VzcyhhenVyZUFkR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9saWN5UHJvcHM6IEFjY2Vzc1BvbGljeVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIHRlbmFudElkOiB0aGlzLnByb3BzLnRlbmFudElkLFxuICAgICAgb2JqZWN0SWQ6IGF6dXJlQWRHcm91cElkLFxuICAgICAgc2VjcmV0UGVybWlzc2lvbnM6IFtcIkdldFwiLCBcIkxpc3RcIl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBY2Nlc3NQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYGt2X3NlY3JldF9yZWFkZXJfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBzZWNyZXRzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gc2VjcmV0cy5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlY3JldEFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBzZWNyZXRQZXJtaXNzaW9uczogW1xuICAgICAgICBcIkdldFwiLFxuICAgICAgICBcIkxpc3RcIixcbiAgICAgICAgXCJTZXRcIixcbiAgICAgICAgXCJEZWxldGVcIixcbiAgICAgICAgXCJCYWNrdXBcIixcbiAgICAgICAgXCJSZXN0b3JlXCIsXG4gICAgICAgIFwiUmVjb3ZlclwiLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3Zfc2VjcmV0X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgcHVibGljIGdyYW50Q2VydEFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zOiBbXG4gICAgICAgIFwiR2V0XCIsXG4gICAgICAgIFwiTGlzdFwiLFxuICAgICAgICBcIlNldFwiLFxuICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICBcIkJhY2t1cFwiLFxuICAgICAgICBcIlJlc3RvcmVcIixcbiAgICAgICAgXCJSZWNvdmVyXCIsXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9jZXJ0X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIGNlcnRpZmljYXRlcyBzdG9yZWQgaW4gdGhlIEtleSBWYXVsdCB0byBhIHNwZWNpZmllZCBBenVyZSBBRCBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGF6dXJlQWRHcm91cElkIC0gVGhlIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgZ3JvdXAgSUQgdGhhdCB3aWxsIHJlY2VpdmUgcmVhZCBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgcHVibGljIGdyYW50Q2VydFJlYWRlckFjY2VzcyhhenVyZUFkR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9saWN5UHJvcHM6IEFjY2Vzc1BvbGljeVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIHRlbmFudElkOiB0aGlzLnByb3BzLnRlbmFudElkLFxuICAgICAgb2JqZWN0SWQ6IGF6dXJlQWRHcm91cElkLFxuICAgICAgY2VydGlmaWNhdGVQZXJtaXNzaW9uczogW1wiR2V0XCIsIFwiTGlzdFwiXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3ZfY2VydF9yZWFkZXJfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBrZXlzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8ga2V5cy5cbiAgICovXG4gIHB1YmxpYyBncmFudEtleUFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBrZXlQZXJtaXNzaW9uczogW1xuICAgICAgICBcIkdldFwiLFxuICAgICAgICBcIkxpc3RcIixcbiAgICAgICAgXCJTZXRcIixcbiAgICAgICAgXCJEZWxldGVcIixcbiAgICAgICAgXCJCYWNrdXBcIixcbiAgICAgICAgXCJSZXN0b3JlXCIsXG4gICAgICAgIFwiUmVjb3ZlclwiLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3Zfa2V5X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIGtleXMgc3RvcmVkIGluIHRoZSBLZXkgVmF1bHQgdG8gYSBzcGVjaWZpZWQgQXp1cmUgQUQgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBhenVyZUFkR3JvdXBJZCAtIFRoZSBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IGdyb3VwIElEIHRoYXQgd2lsbCByZWNlaXZlIHJlYWQgYWNjZXNzIHRvIGtleXMuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRLZXlSZWFkZXJBY2Nlc3MoYXp1cmVBZEdyb3VwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIGtleVBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9rZXlfcmVhZGVyX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBjdXN0b20gYWNjZXNzIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIHRvIGFuIEF6dXJlIEFEIGdyb3VwIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBhenVyZUFkR3JvdXBJZCAtIFRoZSBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IGdyb3VwIElEIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjdXN0b20gYWNjZXNzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEN1c3RvbSBhY2Nlc3Mgb3B0aW9ucyBzcGVjaWZ5aW5nIHZhcmlvdXMgcGVybWlzc2lvbnMgZm9yIHNlY3JldHMsIGtleXMsIGNlcnRpZmljYXRlcywgYW5kIHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRDdXN0b21BY2Nlc3MoXG4gICAgYXp1cmVBZEdyb3VwSWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBHcmFudEN1c3RvbUFjY2Vzc09wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBY2Nlc3NQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYGt2X2N1c3RvbV9wb2xpY3lfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzZWNyZXQgd2l0aGluIHRoZSBBenVyZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGZhY2lsaXRhdGVzIHRoZSBzdG9yYWdlIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHNlY3JldCB3aXRoaW4gdGhlIEtleSBWYXVsdC5cbiAgICogU2VjcmV0cyBhcmUgcHJvdGVjdGVkIGl0ZW1zIHN1Y2ggYXMgcGFzc3dvcmRzLCBkYXRhYmFzZSBjb25uZWN0aW9uIHN0cmluZ3MsIG9yIGFueSBvdGhlciBwaWVjZSBvZiBpbmZvcm1hdGlvblxuICAgKiB0aGF0IG5lZWRzIHRvIGJlIHNlY3VyZWx5IHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBzdWNoIGFzXG4gICAqIGV4cGlyYXRpb24gZGF0ZSBhbmQgY29udGVudCB0eXBlIGZvciBiZXR0ZXIgbWFuYWdlbWVudCBhbmQgY29tcGxpYW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGtleVZhdWx0U2VjcmV0TmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBmb3IgdGhlIHNlY3JldCB3aXRoaW4gdGhlIEtleSBWYXVsdC5cbiAgICogQHBhcmFtIHNlY3JldFZhbHVlIC0gVGhlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBvciBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgc2VjdXJlbHkgc3RvcmVkIGFzIGEgc2VjcmV0LlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUgc2VjcmV0IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUgc2VjcmV0IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZS5cbiAgICogQHBhcmFtIGNvbnRlbnRUeXBlIC0gT3B0aW9uYWwuIEEgZGVzY3JpcHRpb24gb2YgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24gdGhlIHNlY3JldCBjb250YWlucyAoZS5nLiwgJ3Bhc3N3b3JkJywgJ2Nvbm5lY3Rpb25TdHJpbmcnKS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gaGFuZGxlIHRoZSBzZWNyZXQgYXBwcm9wcmlhdGVseS5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXVsdC5hZGRTZWNyZXQoXG4gICAqICAgJ215RGF0YWJhc2VQYXNzd29yZCcsXG4gICAqICAgJ3BAc3N3MHJkMTIzIScsXG4gICAqICAgJzIwMzAtMDEtMDEnLFxuICAgKiAgICdkYXRhYmFzZVBhc3N3b3JkJ1xuICAgKiApO1xuICAgKiBgYGBcbiAgICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIEl0IGNyZWF0ZXMgYSBzZWNyZXQgd2l0aGluIHRoZSBLZXkgVmF1bHQgd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgYWRkU2VjcmV0KFxuICAgIGtleVZhdWx0U2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIHNlY3JldFZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJhdGlvbkRhdGU/OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IHNlY3JldFByb3BzOiBTZWNyZXRQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBuYW1lOiBrZXlWYXVsdFNlY3JldE5hbWUsXG4gICAgICB2YWx1ZTogc2VjcmV0VmFsdWUsXG4gICAgICBleHBpcmF0aW9uRGF0ZTogZXhwaXJhdGlvbkRhdGUsXG4gICAgICBjb250ZW50VHlwZTogY29udGVudFR5cGUsXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9O1xuXG4gICAgbmV3IFNlY3JldCh0aGlzLCBrZXlWYXVsdFNlY3JldE5hbWUsIHNlY3JldFByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIFJTQSBjcnlwdG9ncmFwaGljIGtleSB3aXRoaW4gdGhlIEF6dXJlIEtleSBWYXVsdC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgZmFjaWxpdGF0ZXMgdGhlIGNyZWF0aW9uIG9mIGFuIFJTQSBrZXksIHdoaWNoIGlzIHVzZWZ1bCBmb3IgYSB2YXJpZXR5IG9mIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBzdWNoIGFzXG4gICAqIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIGRpZ2l0YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiwgYW5kIG1vcmUuIFRoZSBSU0Ega2V5IGNyZWF0ZWQgYnkgdGhpcyBtZXRob2QgaXMgY29uZmlndXJhYmxlXG4gICAqIHdpdGggYW4gb3B0aW9uYWwgZXhwaXJhdGlvbiBkYXRlIGFuZCBhIGRlZmF1bHQga2V5IHNpemUgb2YgMjA0OCBiaXRzLiBUaGUga2V5IG9wZXJhdGlvbnMgYWxsb3dlZCBpbmNsdWRlIGRlY3J5cHRpb24sXG4gICAqIGVuY3J5cHRpb24sIHNpZ25pbmcsIHZlcmlmeWluZyBzaWduYXR1cmVzLCBhbmQga2V5IHdyYXBwaW5nL3Vud3JhcHBpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlWYXVsdEtleU5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgZm9yIHRoZSBSU0Ega2V5IHdpdGhpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUga2V5IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUga2V5IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZS5cbiAgICogQHJldHVybnMgQSBLZXlWYXVsdEtleSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBuZXdseSBjcmVhdGVkIFJTQSBrZXkgd2l0aGluIHRoZSB2YXVsdC5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByc2FLZXkgPSB2YXVsdC5hZGRSU0FLZXkoXG4gICAqICAgJ215UlNBS2V5JyxcbiAgICogICAnMjAzMC0wMS0wMSdcbiAgICogKTtcbiAgICogYGBgXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGNyZWF0ZWQgS2V5VmF1bHRLZXkgb2JqZWN0LCBhbGxvd2luZyBmdXJ0aGVyIG9wZXJhdGlvbnMgb3IgcmVmZXJlbmNlcyB0byB0aGUga2V5LlxuICAgKi9cbiAgcHVibGljIGFkZFJTQUtleShcbiAgICBrZXlWYXVsdEtleU5hbWU6IHN0cmluZyxcbiAgICBleHBpcmF0aW9uRGF0ZT86IHN0cmluZyxcbiAgKTogS2V5VmF1bHRLZXkge1xuICAgIGNvbnN0IGtleVByb3BzOiBLZXlQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBuYW1lOiBrZXlWYXVsdEtleU5hbWUsXG4gICAgICBrZXlUeXBlOiBcIlJTQVwiLFxuICAgICAga2V5U2l6ZTogMjA0OCxcbiAgICAgIGtleU9wdHM6IFtcImRlY3J5cHRcIiwgXCJlbmNyeXB0XCIsIFwic2lnblwiLCBcInVud3JhcEtleVwiLCBcInZlcmlmeVwiLCBcIndyYXBLZXlcIl0sXG4gICAgICBleHBpcmVzOiBleHBpcmF0aW9uRGF0ZSxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH07XG5cbiAgICBjb25zdCBrZXkgPSBuZXcgS2V5KHRoaXMsIGtleVZhdWx0S2V5TmFtZSwga2V5UHJvcHMpO1xuICAgIHJldHVybiBrZXkudmF1bHRLZXk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNyeXB0b2dyYXBoaWMga2V5IHdpdGhpbiB0aGUgQXp1cmUgS2V5IFZhdWx0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGEgY3J5cHRvZ3JhcGhpYyBrZXkgb2Ygc3BlY2lmaWVkIHR5cGUgYW5kIHNpemUgd2l0aGluIHRoZSBLZXkgVmF1bHQuIFRoZSBrZXkgY2FuIGJlXG4gICAqIGNvbmZpZ3VyZWQgd2l0aCBzcGVjaWZpYyBvcGVyYXRpb25zIGl0IGNhbiBwZXJmb3JtLCBzdWNoIGFzIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIGV0Yy4gQW4gb3B0aW9uYWwgZXhwaXJhdGlvblxuICAgKiBkYXRlIGNhbiBhbHNvIGJlIHNldCB0byBjb250cm9sIHRoZSBrZXkncyBsaWZlY3ljbGUuIFRoaXMgbWV0aG9kIGlzIGZsZXhpYmxlLCBzdXBwb3J0aW5nIHZhcmlvdXMga2V5IHR5cGVzIGFuZCBzaXplcyxcbiAgICogbWFraW5nIGl0IHN1aXRhYmxlIGZvciBhIHdpZGUgcmFuZ2Ugb2YgY3J5cHRvZ3JhcGhpYyBuZWVkcy5cbiAgICpcbiAgICogQHBhcmFtIGtleVZhdWx0S2V5TmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBmb3IgdGhlIGNyeXB0b2dyYXBoaWMga2V5IHdpdGhpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBAcGFyYW0ga2V5VHlwZSAtIFRoZSB0eXBlIG9mIGNyeXB0b2dyYXBoaWMga2V5IHRvIGNyZWF0ZSAoZS5nLiwgJ1JTQScsICdFQycsICdvY3QtSFNNJykuXG4gICAqIEBwYXJhbSBrZXlTaXplIC0gVGhlIHNpemUgb2YgdGhlIGNyeXB0b2dyYXBoaWMga2V5IGluIGJpdHMgKGUuZy4sIDIwNDgsIDMwNzIsIDQwOTYgZm9yIFJTQSkuXG4gICAqIEBwYXJhbSBrZXlPcHRzIC0gQSBsaXN0IG9mIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyB0aGF0IHRoZSBrZXkgaXMgYWxsb3dlZCB0byBwZXJmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgbWlnaHQgaW5jbHVkZVxuICAgKiAgICAgICAgICAgICAgICAgICdlbmNyeXB0JywgJ2RlY3J5cHQnLCAnc2lnbicsICd2ZXJpZnknLCAnd3JhcEtleScsICd1bndyYXBLZXknLlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUga2V5IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUga2V5IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZSwgYWxpZ25pbmcgd2l0aCBiZXN0IHByYWN0aWNlcyBmb3Iga2V5IG1hbmFnZW1lbnQuXG4gICAqIEByZXR1cm5zIEEgS2V5VmF1bHRLZXkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV3bHkgY3JlYXRlZCBjcnlwdG9ncmFwaGljIGtleSB3aXRoaW4gdGhlIHZhdWx0LlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG15S2V5ID0gdmF1bHQuYWRkS2V5KFxuICAgKiAgICdteUtleScsXG4gICAqICAgJ1JTQScsXG4gICAqICAgMjA0OCxcbiAgICogICBbJ2VuY3J5cHQnLCAnZGVjcnlwdCcsICdzaWduJywgJ3ZlcmlmeSddLFxuICAgKiAgICcyMDMwLTEyLTMxJ1xuICAgKiApO1xuICAgKiBgYGBcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgY3JlYXRlZCBLZXlWYXVsdEtleSBvYmplY3QsIGVuYWJsaW5nIGltbWVkaWF0ZSB1c2Ugd2l0aGluIHRoZSBhcHBsaWNhdGlvbiBmb3IgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFkZEtleShcbiAgICBrZXlWYXVsdEtleU5hbWU6IHN0cmluZyxcbiAgICBrZXlUeXBlOiBzdHJpbmcsXG4gICAga2V5U2l6ZTogbnVtYmVyLFxuICAgIGtleU9wdHM6IHN0cmluZ1tdLFxuICAgIGV4cGlyYXRpb25EYXRlPzogc3RyaW5nLFxuICApOiBLZXlWYXVsdEtleSB7XG4gICAgY29uc3Qga2V5UHJvcHM6IEtleVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIG5hbWU6IGtleVZhdWx0S2V5TmFtZSxcbiAgICAgIGtleVR5cGU6IGtleVR5cGUsXG4gICAgICBrZXlTaXplOiBrZXlTaXplLFxuICAgICAga2V5T3B0czoga2V5T3B0cyxcbiAgICAgIGV4cGlyZXM6IGV4cGlyYXRpb25EYXRlLFxuICAgICAgYWNjZXNzUG9saWNpZXM6IHRoaXMuYWNjZXNzUG9saWNpZXMsXG4gICAgfTtcblxuICAgIGNvbnN0IGtleSA9IG5ldyBLZXkodGhpcywga2V5VmF1bHRLZXlOYW1lLCBrZXlQcm9wcyk7XG4gICAgcmV0dXJuIGtleS52YXVsdEtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgd2l0aGluIHRoZSBBenVyZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGZhY2lsaXRhdGVzIHRoZSBjcmVhdGlvbiBvZiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLCB3aGljaCBpcyBhIGRpZ2l0YWwgY2VydGlmaWNhdGUgdGhhdCBpcyBzaWduZWQgYnlcbiAgICogaXRzIG93biBjcmVhdG9yIHJhdGhlciB0aGFuIGEgdHJ1c3RlZCBhdXRob3JpdHkuIFNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyBjYW4gYmUgdXNlZnVsIGZvciB0ZXN0aW5nLCBpbnRlcm5hbFxuICAgKiBjb21tdW5pY2F0aW9ucywgb3IgYW55IHNjZW5hcmlvIHdoZXJlIHB1YmxpYyB0cnVzdCBpcyBub3QgcmVxdWlyZWQuIFRoZSBtZXRob2QgYWxsb3dzIHNwZWNpZnlpbmcgc3ViamVjdCBkZXRhaWxzLFxuICAgKiBETlMgbmFtZXMgZm9yIHRoZSBjZXJ0aWZpY2F0ZSwgYW5kIG1hbmFnaW5nIGl0cyBsaWZlY3ljbGUgd2l0aCBhY3Rpb24gdHlwZXMgYW5kIGV4cGlyeS5cbiAgICpcbiAgICogQHBhcmFtIGNlcnROYW1lIC0gVGhlIHVuaXF1ZSBuYW1lIGZvciB0aGUgY2VydGlmaWNhdGUgd2l0aGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEBwYXJhbSBzdWJqZWN0IC0gVGhlIHN1YmplY3QgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUsIHR5cGljYWxseSBmb3JtYXR0ZWQgYXMgYW4gWC41MDAgRGlzdGluZ3Vpc2hlZCBOYW1lIChlLmcuLCBcIkNOPWV4YW1wbGUuY29tXCIpLlxuICAgKiBAcGFyYW0gZG5zTmFtZXMgLSBBbiBhcnJheSBvZiBETlMgbmFtZXMgdGhhdCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2VydGlmaWNhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBjZXJ0aWZpY2F0ZXNcbiAgICogICAgICAgICAgICAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHZhbGlkIGZvciBtdWx0aXBsZSBob3N0bmFtZXMuXG4gICAqIEBwYXJhbSBhY3Rpb25UeXBlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBjZXJ0aWZpY2F0ZSwgc3VjaCBhcyAnY3JlYXRlJyBvciAncmVuZXcnLlxuICAgKiBAcGFyYW0gZGF5c0JlZm9yZUV4cGlyeSAtIE9wdGlvbmFsLiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgZXhwaXJ5IHdoZW4gYW4gYWN0aW9uIHNob3VsZCBiZSB0YWtlbiwgdXNlZnVsIGZvciBhdXRvLXJlbmV3YWwgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJucyBBIEtleVZhdWx0Q2VydGlmaWNhdGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV3bHkgY3JlYXRlZCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBteUNlcnRpZmljYXRlID0gdmF1bHQuYWRkU2VsZlNpZ25lZENlcnQoXG4gICAqICAgJ215Q2VydCcsXG4gICAqICAgJ0NOPW15ZG9tYWluLmNvbScsXG4gICAqICAgWydteWRvbWFpbi5jb20nLCAnd3d3Lm15ZG9tYWluLmNvbSddLFxuICAgKiAgICdjcmVhdGUnLFxuICAgKiAgIDMwXG4gICAqICk7XG4gICAqIGBgYFxuICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBLZXlWYXVsdENlcnRpZmljYXRlIG9iamVjdCwgZW5hYmxpbmcgaXQgdG8gYmUgdXNlZCBpbW1lZGlhdGVseSB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uIG9yIHN0b3JlZCBmb3IgZnV0dXJlIHVzZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTZWxmU2lnbmVkQ2VydChcbiAgICBjZXJ0TmFtZTogc3RyaW5nLFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICBkbnNOYW1lczogc3RyaW5nW10sXG4gICAgYWN0aW9uVHlwZT86IHN0cmluZyxcbiAgICBkYXlzQmVmb3JlRXhwaXJ5PzogbnVtYmVyLFxuICApOiBLZXlWYXVsdENlcnRpZmljYXRlIHtcbiAgICBjb25zdCBrZXlQcm9wczogU2VsZlNpZ25lZENlcnRpZmljYXRlUHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgbmFtZTogY2VydE5hbWUsXG4gICAgICBzdWJqZWN0OiBzdWJqZWN0LFxuICAgICAgZG5zTmFtZXM6IGRuc05hbWVzLFxuICAgICAgYWN0aW9uVHlwZTogYWN0aW9uVHlwZSxcbiAgICAgIGRheXNCZWZvcmVFeHBpcnk6IGRheXNCZWZvcmVFeHBpcnksXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9O1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgU2VsZlNpZ25lZENlcnRpZmljYXRlKHRoaXMsIGNlcnROYW1lLCBrZXlQcm9wcyk7XG4gICAgcmV0dXJuIGNlcnQuY2VydGlmaWNhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNlcnRpZmljYXRlIGlzc3VlciB0byB0aGUgQXp1cmUgS2V5IFZhdWx0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjb25maWd1cmVzIGEgY2VydGlmaWNhdGUgaXNzdWVyIHdpdGhpbiB0aGUgS2V5IFZhdWx0LCBhbGxvd2luZyB0aGUgS2V5IFZhdWx0IHRvIGlzc3VlIGNlcnRpZmljYXRlc1xuICAgKiB0aHJvdWdoIGV4dGVybmFsIHByb3ZpZGVycy4gQ29uZmlndXJpbmcgYW4gaXNzdWVyIGlzIGVzc2VudGlhbCBmb3IgZW5hYmxpbmcgYXV0b21hdGVkIGNlcnRpZmljYXRlIG1hbmFnZW1lbnRcbiAgICogcHJvY2Vzc2VzLCBzdWNoIGFzIGlzc3VhbmNlIGFuZCByZW5ld2FsLCBkaXJlY3RseSB0aHJvdWdoIHRoZSBLZXkgVmF1bHQgd2l0aCBhIHNwZWNpZmllZCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSBpc3N1ZXIgd2l0aGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEBwYXJhbSBwcm92aWRlciAtIFRoZSBuYW1lIG9mIHRoZSBleHRlcm5hbCBwcm92aWRlciB0aGF0IHdpbGwgaXNzdWUgdGhlIGNlcnRpZmljYXRlcywgc3VjaCBhcyAnRGlnaUNlcnQnIG9yICdHbG9iYWxTaWduJy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXVsdC5hZGRDZXJ0SXNzdWVyKFxuICAgKiAgICdteUNlcnRJc3N1ZXInLFxuICAgKiAgICdEaWdpQ2VydCdcbiAgICogKTtcbiAgICogYGBgXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBjZXJ0aWZpY2F0ZSBpc3N1ZXIgYnV0IGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUuIFRoZSBpc3N1ZXIgZGV0YWlscywgaW5jbHVkaW5nIHByb3ZpZGVyIG5hbWVcbiAgICogYW5kIGFueSBuZWNlc3NhcnkgY3JlZGVudGlhbHMgKG1hbmFnZWQgZXh0ZXJuYWxseSBvciB0aHJvdWdoIGFkZGl0aW9uYWwgbWV0aG9kIHBhcmFtZXRlcnMpLCBhcmUgc2V0IHVwIGluIHRoZSBLZXkgVmF1bHRcbiAgICogZm9yIGZ1dHVyZSBjZXJ0aWZpY2F0ZSBvcGVyYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFkZENlcnRJc3N1ZXIobmFtZTogc3RyaW5nLCBwcm92aWRlcjogc3RyaW5nKSB7XG4gICAgbmV3IENlcnRpZmljYXRlSXNzdWVyKHRoaXMsIG5hbWUsIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBwcm92aWRlck5hbWU6IHByb3ZpZGVyLFxuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -63,10 +63,31 @@ export declare class Cluster extends AzureResource {
63
63
  /** The Resource Group associated with the AKS cluster. */
64
64
  resourceGroup: ResourceGroup;
65
65
  /**
66
- * Constructs a new AKS cluster.
67
- * @param scope The scope in which to define this construct.
68
- * @param id The unique ID or name for this construct.
69
- * @param props The properties required to configure the AKS cluster.
66
+ * Represents an Azure Kubernetes Service (AKS) cluster resource in Azure.
67
+ *
68
+ * This class is responsible for the creation and management of an AKS cluster, allowing for the deployment and orchestration
69
+ * of containerized applications using Kubernetes within the Azure cloud platform.
70
+ *
71
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) stack.
72
+ * @param id - The unique identifier for this instance of the AKS cluster.
73
+ * @param props - The properties required to configure the AKS cluster, as defined in the ClusterProps interface.
74
+ *
75
+ * Example usage:
76
+ * ```typescript
77
+ * new Cluster(this, 'MyAKSCluster', {
78
+ * name: 'example-cluster',
79
+ * location: 'East US',
80
+ * defaultNodePool: {
81
+ * vmSize: 'Standard_D2_v3',
82
+ * nodeCount: 3,
83
+ * type: 'VirtualMachineScaleSets'
84
+ * },
85
+ * resourceGroup: existingResourceGroup,
86
+ * tags: {
87
+ * environment: 'production'
88
+ * }
89
+ * });
90
+ * ```
70
91
  */
71
92
  constructor(scope: Construct, id: string, props: ClusterProps);
72
93
  }
@@ -10,10 +10,31 @@ const lib_1 = require("../../core-azure/lib");
10
10
  */
11
11
  class Cluster extends lib_1.AzureResource {
12
12
  /**
13
- * Constructs a new AKS cluster.
14
- * @param scope The scope in which to define this construct.
15
- * @param id The unique ID or name for this construct.
16
- * @param props The properties required to configure the AKS cluster.
13
+ * Represents an Azure Kubernetes Service (AKS) cluster resource in Azure.
14
+ *
15
+ * This class is responsible for the creation and management of an AKS cluster, allowing for the deployment and orchestration
16
+ * of containerized applications using Kubernetes within the Azure cloud platform.
17
+ *
18
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) stack.
19
+ * @param id - The unique identifier for this instance of the AKS cluster.
20
+ * @param props - The properties required to configure the AKS cluster, as defined in the ClusterProps interface.
21
+ *
22
+ * Example usage:
23
+ * ```typescript
24
+ * new Cluster(this, 'MyAKSCluster', {
25
+ * name: 'example-cluster',
26
+ * location: 'East US',
27
+ * defaultNodePool: {
28
+ * vmSize: 'Standard_D2_v3',
29
+ * nodeCount: 3,
30
+ * type: 'VirtualMachineScaleSets'
31
+ * },
32
+ * resourceGroup: existingResourceGroup,
33
+ * tags: {
34
+ * environment: 'production'
35
+ * }
36
+ * });
37
+ * ```
17
38
  */
18
39
  constructor(scope, id, props) {
19
40
  super(scope, id);
@@ -38,5 +59,5 @@ class Cluster extends lib_1.AzureResource {
38
59
  }
39
60
  exports.Cluster = Cluster;
40
61
  _a = JSII_RTTI_SYMBOL_1;
41
- Cluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_kubernetes.Cluster", version: "0.0.3-pre.6" };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1rdWJlcm5ldGVzL2xpYi9jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUZBS3dEO0FBR3hELDhDQUFxRDtBQTREckQ7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxtQkFBYTtJQU94Qzs7Ozs7T0FLRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEQsdURBQXVEO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksc0NBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUM3QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUMxQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtZQUM5RCxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDckIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLDZCQUE2QixFQUFFLElBQUk7WUFDbkMsMENBQTBDLEVBQ3hDLEtBQUssQ0FBQywwQ0FBMEM7WUFDbEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQztRQUVILG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7QUFwQ0gsMEJBNENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgS3ViZXJuZXRlc0NsdXN0ZXIsXG4gIEt1YmVybmV0ZXNDbHVzdGVyRGVmYXVsdE5vZGVQb29sLFxuICBLdWJlcm5ldGVzQ2x1c3RlcklkZW50aXR5LFxuICBLdWJlcm5ldGVzQ2x1c3RlckF6dXJlQWN0aXZlRGlyZWN0b3J5Um9sZUJhc2VkQWNjZXNzQ29udHJvbCxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9rdWJlcm5ldGVzLWNsdXN0ZXJcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYlwiO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyB0aGUgcHJvcGVydGllcyByZXF1aXJlZCB0byBjcmVhdGUgYW4gQUtTIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlclByb3BzIHtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBBS1MgY2x1c3Rlci4gTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBBenVyZSByZWdpb24uICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogVGhlIEF6dXJlIHJlZ2lvbiB3aGVyZSB0aGUgQUtTIGNsdXN0ZXIgd2lsbCBiZSBkZXBsb3llZC4gKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcblxuICAvKiogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRlZmF1bHQgbm9kZSBwb29sIG9mIHRoZSBBS1MgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgZGVmYXVsdE5vZGVQb29sOiBLdWJlcm5ldGVzQ2x1c3RlckRlZmF1bHROb2RlUG9vbDtcblxuICAvKipcbiAgICogVGhlIEF6dXJlIFJlc291cmNlIEdyb3VwIHdoZXJlIHRoZSBBS1MgY2x1c3RlciB3aWxsIGJlIGRlcGxveWVkLlxuICAgKiBPcHRpb25hbC4gSWYgbm90IHByb3ZpZGVkLCBhIG5ldyByZXNvdXJjZSBncm91cCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwPzogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogVGhlIGlkZW50aXR5IHVzZWQgZm9yIHRoZSBBS1MgY2x1c3Rlci4gQ2FuIGJlIGVpdGhlciBTeXN0ZW1Bc3NpZ25lZCBvciBVc2VyQXNzaWduZWQuXG4gICAqIE9wdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBLdWJlcm5ldGVzQ2x1c3RlcklkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIGludGVncmF0aW9uIG9mIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgKEFBRCkgd2l0aCBLdWJlcm5ldGVzIFJvbGUtQmFzZWQgQWNjZXNzIENvbnRyb2wgKFJCQUMpIGZvciB0aGUgQUtTIGNsdXN0ZXIuIFRoaXMgZmVhdHVyZSBlbmFibGVzIHRoZSB1c2Ugb2YgQUFEIHRvIG1hbmFnZSB1c2VyIGFuZCBncm91cCBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gdGhlIEt1YmVybmV0ZXMgY2x1c3RlciByZXNvdXJjZXMsIGxldmVyYWdpbmcgQUFEJ3Mgcm9idXN0IGlkZW50aXR5IGFuZCBhY2Nlc3MgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIFV0aWxpemluZyBBQUQgd2l0aCBLdWJlcm5ldGVzIFJCQUMgcHJvdmlkZXM6XG4gICAqIC0gRW5oYW5jZWQgc2VjdXJpdHkgdGhyb3VnaCBBQUQncyBpZGVudGl0eSBwcm90ZWN0aW9uIGZlYXR1cmVzLlxuICAgKiAtIFNpbXBsaWZpZWQgdXNlciBhbmQgZ3JvdXAgbWFuYWdlbWVudCBieSBsZXZlcmFnaW5nIGV4aXN0aW5nIEFBRCBkZWZpbml0aW9ucy5cbiAgICogLSBTdHJlYW1saW5lZCBhY2Nlc3MgY29udHJvbCBmb3IgS3ViZXJuZXRlcyByZXNvdXJjZXMsIGFsbG93aW5nIGZvciB0aGUgZGVmaW5pdGlvbiBvZiByb2xlcyBhbmQgcm9sZSBiaW5kaW5ncyBiYXNlZCBvbiBBQUQgaWRlbnRpdGllcy5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBvcHRpb25hbCBidXQgaGlnaGx5IHJlY29tbWVuZGVkIGZvciBjbHVzdGVycyB3aGVyZSBzZWN1cml0eSBhbmQgYWNjZXNzIGdvdmVybmFuY2UgYXJlIGEgcHJpb3JpdHkuIEl0IGFsbG93cyBmb3IgZmluZXItZ3JhaW5lZCBhY2Nlc3MgY29udHJvbCBhbmQgaW50ZWdyYXRlcyB0aGUgY2x1c3RlcidzIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHByb2Nlc3NlcyB3aXRoIGNvcnBvcmF0ZSBpZGVudGl0eSBtYW5hZ2VtZW50IHN5c3RlbXMuXG4gICAqXG4gICAqIEV4YW1wbGUgY29uZmlndXJhdGlvbiBtaWdodCBpbmNsdWRlIHNwZWNpZnlpbmcgdGhlIEFBRCB0ZW5hbnQgZGV0YWlscywgZW5hYmxpbmcgQXp1cmUgUkJBQyBmb3IgS3ViZXJuZXRlcyBhdXRob3JpemF0aW9uLCBhbmQgb3B0aW9uYWxseSBkZWZpbmluZyBzcGVjaWZpYyBBQUQgZ3JvdXBzIGZvciBjbHVzdGVyIGFkbWluIHJvbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXp1cmVBY3RpdmVEaXJlY3RvcnlSb2xlQmFzZWRBY2Nlc3NDb250cm9sPzogS3ViZXJuZXRlc0NsdXN0ZXJBenVyZUFjdGl2ZURpcmVjdG9yeVJvbGVCYXNlZEFjY2Vzc0NvbnRyb2w7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBJUCBhZGRyZXNzIHJhbmdlcyB0aGF0IGFyZSBhdXRob3JpemVkIHRvIGFjY2VzcyB0aGUgQUtTIEFQSSBzZXJ2ZXIuIFRoaXMgZW5oYW5jZXMgdGhlIHNlY3VyaXR5IG9mIHlvdXIgY2x1c3RlciBieSBlbnN1cmluZyB0aGF0IG9ubHkgdHJhZmZpYyBmcm9tIHRoZXNlIElQIHJhbmdlcyBjYW4gY29tbXVuaWNhdGUgd2l0aCB0aGUgS3ViZXJuZXRlcyBBUEkgc2VydmVyLlxuICAgKlxuICAgKiBTcGVjaWZ5aW5nIHRoaXMgbGlzdCBoZWxwcyB0byBwcm90ZWN0IHlvdXIgY2x1c3RlciBmcm9tIHVuYXV0aG9yaXplZCBhY2Nlc3MgYXR0ZW1wdHMuIEl0J3MgYSBjcml0aWNhbCBzZWN1cml0eSBtZWFzdXJlIGZvciBjbHVzdGVycyB0aGF0IGFyZSBleHBvc2VkIHRvIHRoZSBpbnRlcm5ldC4gSWYgeW91IHNwZWNpZnkgYW4gZW1wdHkgYXJyYXksIG5vIElQIGFkZHJlc3NlcyB3aWxsIGJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBBUEkgc2VydmVyLCBlZmZlY3RpdmVseSBibG9ja2luZyBhbGwgYWNjZXNzLiBJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkLCBhbGwgSVAgYWRkcmVzc2VzIGFyZSBhbGxvd2VkIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGFwaVNlcnZlckF1dGhvcml6ZWRJcFJhbmdlczogWycyMDMuMC4xMTMuMC8yNCcsICcxOTguNTEuMTAwLjAvMjQnXVxuICAgKlxuICAgKiBJdCdzIGltcG9ydGFudCB0byBjb25maWd1cmUgdGhpcyBwcm9wZXJ0eSBjYXJlZnVsbHksIGJhc2VkIG9uIHlvdXIgb3JnYW5pemF0aW9uJ3MgbmV0d29yayBwb2xpY2llcyBhbmQgYWNjZXNzIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGFwaVNlcnZlckF1dGhvcml6ZWRJcFJhbmdlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIEFLUyBjbHVzdGVyIHJlc291cmNlcyBmb3Igb3JnYW5pemF0aW9uYWwgcHVycG9zZXMuXG4gICAqIEtleS12YWx1ZSBwYWlycy4gT3B0aW9uYWwuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIEFLUyBjbHVzdGVyIHJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgQ2x1c3RlciBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICAvKiogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBBS1MgY2x1c3RlciByZXNvdXJjZS4gKi9cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBSZXNvdXJjZSBHcm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIEFLUyBjbHVzdGVyLiAqL1xuICBwdWJsaWMgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBBS1MgY2x1c3Rlci5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIElEIG9yIG5hbWUgZm9yIHRoaXMgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBBS1MgY2x1c3Rlci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDbHVzdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gU2V0dXAgb3IgcmV1c2UgdGhlIHByb3ZpZGVkIHJlc291cmNlIGdyb3VwLlxuICAgIHRoaXMucmVzb3VyY2VHcm91cCA9IHRoaXMuc2V0dXBSZXNvdXJjZUdyb3VwKHByb3BzKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgQUtTIENsdXN0ZXIgd2l0aCB0aGUgcHJvdmlkZWQgcHJvcGVydGllcy5cbiAgICBjb25zdCBha3MgPSBuZXcgS3ViZXJuZXRlc0NsdXN0ZXIodGhpcywgXCJBS1NcIiwge1xuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbixcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiB0aGlzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIGRlZmF1bHROb2RlUG9vbDogcHJvcHMuZGVmYXVsdE5vZGVQb29sLFxuICAgICAgYXBpU2VydmVyQXV0aG9yaXplZElwUmFuZ2VzOiBwcm9wcy5hcGlTZXJ2ZXJBdXRob3JpemVkSXBSYW5nZXMsXG4gICAgICBkbnNQcmVmaXg6IHByb3BzLm5hbWUsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgcm9sZUJhc2VkQWNjZXNzQ29udHJvbEVuYWJsZWQ6IHRydWUsXG4gICAgICBhenVyZUFjdGl2ZURpcmVjdG9yeVJvbGVCYXNlZEFjY2Vzc0NvbnRyb2w6XG4gICAgICAgIHByb3BzLmF6dXJlQWN0aXZlRGlyZWN0b3J5Um9sZUJhc2VkQWNjZXNzQ29udHJvbCxcbiAgICAgIGlkZW50aXR5OiBwcm9wcy5pZGVudGl0eSxcbiAgICB9KTtcblxuICAgIC8vIEFzc2lnbiB0aGUgQUtTIGNsdXN0ZXIgSUQgZm9yIGV4dGVybmFsIHJlZmVyZW5jZS5cbiAgICB0aGlzLmlkID0gYWtzLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIEF6dXJlIFJlc291cmNlIEdyb3VwIGZvciB0aGUgQUtTIGNsdXN0ZXIuXG4gICAqIElmIGEgcmVzb3VyY2UgZ3JvdXAgaXMgbm90IHByb3ZpZGVkIGluIHRoZSBwcm9wZXJ0aWVzLCBhIG5ldyBvbmUgaXMgY3JlYXRlZC5cbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIHByb3ZpZGVkIHRvIGNvbmZpZ3VyZSB0aGUgQUtTIGNsdXN0ZXIuXG4gICAqIEByZXR1cm5zIFRoZSBSZXNvdXJjZSBHcm91cCB3aGVyZSB0aGUgQUtTIGNsdXN0ZXIgd2lsbCBiZSBkZXBsb3llZC5cbiAgICovXG59XG4iXX0=
62
+ Cluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_kubernetes.Cluster", version: "0.0.3-pre.7" };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1rdWJlcm5ldGVzL2xpYi9jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUZBS3dEO0FBR3hELDhDQUFxRDtBQTREckQ7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxtQkFBYTtJQU94Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQkc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsOENBQThDO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBELHVEQUF1RDtRQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLHNDQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDN0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDMUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLDJCQUEyQixFQUFFLEtBQUssQ0FBQywyQkFBMkI7WUFDOUQsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ3JCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQiw2QkFBNkIsRUFBRSxJQUFJO1lBQ25DLDBDQUEwQyxFQUN4QyxLQUFLLENBQUMsMENBQTBDO1lBQ2xELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7UUFFSCxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7O0FBekRILDBCQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEt1YmVybmV0ZXNDbHVzdGVyLFxuICBLdWJlcm5ldGVzQ2x1c3RlckRlZmF1bHROb2RlUG9vbCxcbiAgS3ViZXJuZXRlc0NsdXN0ZXJJZGVudGl0eSxcbiAgS3ViZXJuZXRlc0NsdXN0ZXJBenVyZUFjdGl2ZURpcmVjdG9yeVJvbGVCYXNlZEFjY2Vzc0NvbnRyb2wsXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva3ViZXJuZXRlcy1jbHVzdGVyXCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF6dXJlUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWJcIjtcblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pbmcgdGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgdG8gY3JlYXRlIGFuIEFLUyBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJQcm9wcyB7XG4gIC8qKiBUaGUgbmFtZSBvZiB0aGUgQUtTIGNsdXN0ZXIuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgQXp1cmUgcmVnaW9uLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBBenVyZSByZWdpb24gd2hlcmUgdGhlIEFLUyBjbHVzdGVyIHdpbGwgYmUgZGVwbG95ZWQuICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG5cbiAgLyoqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkZWZhdWx0IG5vZGUgcG9vbCBvZiB0aGUgQUtTIGNsdXN0ZXIuICovXG4gIHJlYWRvbmx5IGRlZmF1bHROb2RlUG9vbDogS3ViZXJuZXRlc0NsdXN0ZXJEZWZhdWx0Tm9kZVBvb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBBenVyZSBSZXNvdXJjZSBHcm91cCB3aGVyZSB0aGUgQUtTIGNsdXN0ZXIgd2lsbCBiZSBkZXBsb3llZC5cbiAgICogT3B0aW9uYWwuIElmIG5vdCBwcm92aWRlZCwgYSBuZXcgcmVzb3VyY2UgZ3JvdXAgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cD86IFJlc291cmNlR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGl0eSB1c2VkIGZvciB0aGUgQUtTIGNsdXN0ZXIuIENhbiBiZSBlaXRoZXIgU3lzdGVtQXNzaWduZWQgb3IgVXNlckFzc2lnbmVkLlxuICAgKiBPcHRpb25hbC5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5PzogS3ViZXJuZXRlc0NsdXN0ZXJJZGVudGl0eTtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyBpbnRlZ3JhdGlvbiBvZiBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IChBQUQpIHdpdGggS3ViZXJuZXRlcyBSb2xlLUJhc2VkIEFjY2VzcyBDb250cm9sIChSQkFDKSBmb3IgdGhlIEFLUyBjbHVzdGVyLiBUaGlzIGZlYXR1cmUgZW5hYmxlcyB0aGUgdXNlIG9mIEFBRCB0byBtYW5hZ2UgdXNlciBhbmQgZ3JvdXAgYWNjZXNzIHBlcm1pc3Npb25zIHRvIHRoZSBLdWJlcm5ldGVzIGNsdXN0ZXIgcmVzb3VyY2VzLCBsZXZlcmFnaW5nIEFBRCdzIHJvYnVzdCBpZGVudGl0eSBhbmQgYWNjZXNzIG1hbmFnZW1lbnQgY2FwYWJpbGl0aWVzLlxuICAgKlxuICAgKiBVdGlsaXppbmcgQUFEIHdpdGggS3ViZXJuZXRlcyBSQkFDIHByb3ZpZGVzOlxuICAgKiAtIEVuaGFuY2VkIHNlY3VyaXR5IHRocm91Z2ggQUFEJ3MgaWRlbnRpdHkgcHJvdGVjdGlvbiBmZWF0dXJlcy5cbiAgICogLSBTaW1wbGlmaWVkIHVzZXIgYW5kIGdyb3VwIG1hbmFnZW1lbnQgYnkgbGV2ZXJhZ2luZyBleGlzdGluZyBBQUQgZGVmaW5pdGlvbnMuXG4gICAqIC0gU3RyZWFtbGluZWQgYWNjZXNzIGNvbnRyb2wgZm9yIEt1YmVybmV0ZXMgcmVzb3VyY2VzLCBhbGxvd2luZyBmb3IgdGhlIGRlZmluaXRpb24gb2Ygcm9sZXMgYW5kIHJvbGUgYmluZGluZ3MgYmFzZWQgb24gQUFEIGlkZW50aXRpZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgb3B0aW9uYWwgYnV0IGhpZ2hseSByZWNvbW1lbmRlZCBmb3IgY2x1c3RlcnMgd2hlcmUgc2VjdXJpdHkgYW5kIGFjY2VzcyBnb3Zlcm5hbmNlIGFyZSBhIHByaW9yaXR5LiBJdCBhbGxvd3MgZm9yIGZpbmVyLWdyYWluZWQgYWNjZXNzIGNvbnRyb2wgYW5kIGludGVncmF0ZXMgdGhlIGNsdXN0ZXIncyBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBwcm9jZXNzZXMgd2l0aCBjb3Jwb3JhdGUgaWRlbnRpdHkgbWFuYWdlbWVudCBzeXN0ZW1zLlxuICAgKlxuICAgKiBFeGFtcGxlIGNvbmZpZ3VyYXRpb24gbWlnaHQgaW5jbHVkZSBzcGVjaWZ5aW5nIHRoZSBBQUQgdGVuYW50IGRldGFpbHMsIGVuYWJsaW5nIEF6dXJlIFJCQUMgZm9yIEt1YmVybmV0ZXMgYXV0aG9yaXphdGlvbiwgYW5kIG9wdGlvbmFsbHkgZGVmaW5pbmcgc3BlY2lmaWMgQUFEIGdyb3VwcyBmb3IgY2x1c3RlciBhZG1pbiByb2xlcy5cbiAgICovXG4gIHJlYWRvbmx5IGF6dXJlQWN0aXZlRGlyZWN0b3J5Um9sZUJhc2VkQWNjZXNzQ29udHJvbD86IEt1YmVybmV0ZXNDbHVzdGVyQXp1cmVBY3RpdmVEaXJlY3RvcnlSb2xlQmFzZWRBY2Nlc3NDb250cm9sO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgSVAgYWRkcmVzcyByYW5nZXMgdGhhdCBhcmUgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhlIEFLUyBBUEkgc2VydmVyLiBUaGlzIGVuaGFuY2VzIHRoZSBzZWN1cml0eSBvZiB5b3VyIGNsdXN0ZXIgYnkgZW5zdXJpbmcgdGhhdCBvbmx5IHRyYWZmaWMgZnJvbSB0aGVzZSBJUCByYW5nZXMgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIEt1YmVybmV0ZXMgQVBJIHNlcnZlci5cbiAgICpcbiAgICogU3BlY2lmeWluZyB0aGlzIGxpc3QgaGVscHMgdG8gcHJvdGVjdCB5b3VyIGNsdXN0ZXIgZnJvbSB1bmF1dGhvcml6ZWQgYWNjZXNzIGF0dGVtcHRzLiBJdCdzIGEgY3JpdGljYWwgc2VjdXJpdHkgbWVhc3VyZSBmb3IgY2x1c3RlcnMgdGhhdCBhcmUgZXhwb3NlZCB0byB0aGUgaW50ZXJuZXQuIElmIHlvdSBzcGVjaWZ5IGFuIGVtcHR5IGFycmF5LCBubyBJUCBhZGRyZXNzZXMgd2lsbCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgQVBJIHNlcnZlciwgZWZmZWN0aXZlbHkgYmxvY2tpbmcgYWxsIGFjY2Vzcy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZGVmaW5lZCwgYWxsIElQIGFkZHJlc3NlcyBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LCB3aGljaCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLlxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiBhcGlTZXJ2ZXJBdXRob3JpemVkSXBSYW5nZXM6IFsnMjAzLjAuMTEzLjAvMjQnLCAnMTk4LjUxLjEwMC4wLzI0J11cbiAgICpcbiAgICogSXQncyBpbXBvcnRhbnQgdG8gY29uZmlndXJlIHRoaXMgcHJvcGVydHkgY2FyZWZ1bGx5LCBiYXNlZCBvbiB5b3VyIG9yZ2FuaXphdGlvbidzIG5ldHdvcmsgcG9saWNpZXMgYW5kIGFjY2VzcyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBhcGlTZXJ2ZXJBdXRob3JpemVkSXBSYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGFncyB0byBiZSBhcHBsaWVkIHRvIHRoZSBBS1MgY2x1c3RlciByZXNvdXJjZXMgZm9yIG9yZ2FuaXphdGlvbmFsIHB1cnBvc2VzLlxuICAgKiBLZXktdmFsdWUgcGFpcnMuIE9wdGlvbmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBBS1MgY2x1c3RlciByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENsdXN0ZXIgZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgLyoqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgQUtTIGNsdXN0ZXIgcmVzb3VyY2UuICovXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgUmVzb3VyY2UgR3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBBS1MgY2x1c3Rlci4gKi9cbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQXp1cmUgS3ViZXJuZXRlcyBTZXJ2aWNlIChBS1MpIGNsdXN0ZXIgcmVzb3VyY2UgaW4gQXp1cmUuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBjcmVhdGlvbiBhbmQgbWFuYWdlbWVudCBvZiBhbiBBS1MgY2x1c3RlciwgYWxsb3dpbmcgZm9yIHRoZSBkZXBsb3ltZW50IGFuZCBvcmNoZXN0cmF0aW9uXG4gICAqIG9mIGNvbnRhaW5lcml6ZWQgYXBwbGljYXRpb25zIHVzaW5nIEt1YmVybmV0ZXMgd2l0aGluIHRoZSBBenVyZSBjbG91ZCBwbGF0Zm9ybS5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCwgdHlwaWNhbGx5IHJlcHJlc2VudGluZyB0aGUgQ2xvdWQgRGV2ZWxvcG1lbnQgS2l0IChDREspIHN0YWNrLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIEFLUyBjbHVzdGVyLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyByZXF1aXJlZCB0byBjb25maWd1cmUgdGhlIEFLUyBjbHVzdGVyLCBhcyBkZWZpbmVkIGluIHRoZSBDbHVzdGVyUHJvcHMgaW50ZXJmYWNlLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG5ldyBDbHVzdGVyKHRoaXMsICdNeUFLU0NsdXN0ZXInLCB7XG4gICAqICAgbmFtZTogJ2V4YW1wbGUtY2x1c3RlcicsXG4gICAqICAgbG9jYXRpb246ICdFYXN0IFVTJyxcbiAgICogICBkZWZhdWx0Tm9kZVBvb2w6IHtcbiAgICogICAgIHZtU2l6ZTogJ1N0YW5kYXJkX0QyX3YzJyxcbiAgICogICAgIG5vZGVDb3VudDogMyxcbiAgICogICAgIHR5cGU6ICdWaXJ0dWFsTWFjaGluZVNjYWxlU2V0cydcbiAgICogICB9LFxuICAgKiAgIHJlc291cmNlR3JvdXA6IGV4aXN0aW5nUmVzb3VyY2VHcm91cCxcbiAgICogICB0YWdzOiB7XG4gICAqICAgICBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nXG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFNldHVwIG9yIHJldXNlIHRoZSBwcm92aWRlZCByZXNvdXJjZSBncm91cC5cbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSB0aGlzLnNldHVwUmVzb3VyY2VHcm91cChwcm9wcyk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIEFLUyBDbHVzdGVyIHdpdGggdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMuXG4gICAgY29uc3QgYWtzID0gbmV3IEt1YmVybmV0ZXNDbHVzdGVyKHRoaXMsIFwiQUtTXCIsIHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogdGhpcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICBkZWZhdWx0Tm9kZVBvb2w6IHByb3BzLmRlZmF1bHROb2RlUG9vbCxcbiAgICAgIGFwaVNlcnZlckF1dGhvcml6ZWRJcFJhbmdlczogcHJvcHMuYXBpU2VydmVyQXV0aG9yaXplZElwUmFuZ2VzLFxuICAgICAgZG5zUHJlZml4OiBwcm9wcy5uYW1lLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHJvbGVCYXNlZEFjY2Vzc0NvbnRyb2xFbmFibGVkOiB0cnVlLFxuICAgICAgYXp1cmVBY3RpdmVEaXJlY3RvcnlSb2xlQmFzZWRBY2Nlc3NDb250cm9sOlxuICAgICAgICBwcm9wcy5henVyZUFjdGl2ZURpcmVjdG9yeVJvbGVCYXNlZEFjY2Vzc0NvbnRyb2wsXG4gICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgfSk7XG5cbiAgICAvLyBBc3NpZ24gdGhlIEFLUyBjbHVzdGVyIElEIGZvciBleHRlcm5hbCByZWZlcmVuY2UuXG4gICAgdGhpcy5pZCA9IGFrcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBBenVyZSBSZXNvdXJjZSBHcm91cCBmb3IgdGhlIEFLUyBjbHVzdGVyLlxuICAgKiBJZiBhIHJlc291cmNlIGdyb3VwIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgcHJvcGVydGllcywgYSBuZXcgb25lIGlzIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcGVydGllcyBwcm92aWRlZCB0byBjb25maWd1cmUgdGhlIEFLUyBjbHVzdGVyLlxuICAgKiBAcmV0dXJucyBUaGUgUmVzb3VyY2UgR3JvdXAgd2hlcmUgdGhlIEFLUyBjbHVzdGVyIHdpbGwgYmUgZGVwbG95ZWQuXG4gICAqL1xufVxuIl19
@@ -78,6 +78,59 @@ export declare class Cluster extends AzureResource {
78
78
  id: string;
79
79
  resourceGroup: ResourceGroup;
80
80
  readonly uri: string;
81
+ /**
82
+ * Represents a Kusto (Azure Data Explorer) cluster in Azure.
83
+ *
84
+ * This class is responsible for the creation and management of a Kusto Cluster, which is a highly scalable and secure
85
+ * analytics service for ingesting, storing, and analyzing large volumes of data. The cluster supports various configurations
86
+ * tailored to the needs of specific data workloads and security requirements.
87
+ *
88
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) stack.
89
+ * @param id - The unique identifier for this instance of the cluster.
90
+ * @param kustoProps - The properties required to configure the Kusto cluster, as defined in the ClusterProps interface.
91
+ *
92
+ * Example usage:
93
+ * ```typescript
94
+ * new Cluster(this, 'MyKustoCluster', {
95
+ * name: 'example-cluster',
96
+ * location: 'West US',
97
+ * resourceGroup: myResourceGroup,
98
+ * sku: { tier: 'Standard', name: 'D13_v2', capacity: 2 },
99
+ * tags: {
100
+ * project: 'Data Analytics'
101
+ * }
102
+ * });
103
+ * ```
104
+ */
81
105
  constructor(scope: Construct, id: string, kustoProps: ClusterProps);
106
+ /**
107
+ * Adds a new database to the Azure Kusto Cluster.
108
+ *
109
+ * This method creates a database within the Azure Data Explorer (Kusto) cluster, defined by the properties provided.
110
+ * A database in Kusto serves as a logical group to manage various tables and store data. It is essential for performing
111
+ * data analytics and running queries. The database configuration can include settings like hot cache and soft delete periods,
112
+ * which optimize query performance and manage data lifecycle according to specific requirements.
113
+ *
114
+ * @param databaseProps - The properties required to create the database. These properties should include:
115
+ * - `kusto`: Reference to the Kusto cluster to which the database will be added.
116
+ * - `name`: The name of the database, which must be unique within the cluster.
117
+ * - `hotCachePeriod`: Optional. Specifies the duration that data should be kept in cache for faster query access.
118
+ * - `softDeletePeriod`: Optional. Specifies the duration that data should be retained before it stops being accessible to queries.
119
+ * Both the hot cache and soft delete periods should be specified in ISO 8601 duration format.
120
+ *
121
+ * @returns A `Database` object representing the newly created database within the Kusto cluster.
122
+ *
123
+ * Example usage:
124
+ * ```typescript
125
+ * const myDatabase = myCluster.addDatabase({
126
+ * kusto: myKustoCluster,
127
+ * name: 'OperationalData',
128
+ * hotCachePeriod: 'P14D', // 14 days
129
+ * softDeletePeriod: 'P365D' // 1 year
130
+ * });
131
+ * ```
132
+ * This method facilitates the efficient setup and scaling of databases within an Azure Kusto cluster, allowing
133
+ * for complex data analytics operations across large datasets.
134
+ */
82
135
  addDatabase(databaseProps: DatabaseProps): Database;
83
136
  }