@microsoft/terraform-cdk-constructs 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.jsii +354 -264
  2. package/API.md +104 -76
  3. package/LICENSE +1 -1
  4. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  5. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  6. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  7. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  8. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  9. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  10. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  11. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  12. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  13. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  14. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  15. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  16. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  17. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  18. package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +2 -2
  19. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +17 -5
  20. package/lib/azure-policyassignment/lib/policy-assignment.js +19 -13
  21. package/lib/azure-policyassignment/test/policy-assignment.spec.js +9 -6
  22. package/lib/azure-policydefinition/lib/policy-definition.d.ts +33 -0
  23. package/lib/azure-policydefinition/lib/policy-definition.js +33 -2
  24. package/lib/azure-policydefinition/test/policy-definition.spec.js +69 -1
  25. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  26. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  27. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  28. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  29. package/lib/azure-roleassignment/lib/role-assignment-schemas.js +2 -2
  30. package/lib/azure-roleassignment/lib/role-assignment.d.ts +18 -5
  31. package/lib/azure-roleassignment/lib/role-assignment.js +18 -6
  32. package/lib/azure-roleassignment/test/role-assignment.spec.js +11 -1
  33. package/lib/azure-roledefinition/lib/role-definition.d.ts +1 -0
  34. package/lib/azure-roledefinition/lib/role-definition.js +2 -2
  35. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  36. package/lib/azure-subnet/lib/subnet.js +1 -1
  37. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  38. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  39. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  40. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  41. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  42. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  43. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  44. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  45. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  46. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  47. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  48. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  49. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  50. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  51. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  52. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  53. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  54. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  55. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  56. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  57. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  58. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +3 -2
  59. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  60. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  61. package/lib/testing/index.js +2 -2
  62. package/lib/testing/lib/cleanup.js +1 -1
  63. package/lib/testing/lib/metadata.js +1 -1
  64. package/package.json +1 -1
package/API.md CHANGED
@@ -27540,20 +27540,20 @@ This class provides a single, version-aware implementation for managing Azure
27540
27540
  Policy Assignments. It automatically handles version resolution, schema validation,
27541
27541
  and property transformation.
27542
27542
 
27543
- Note: Policy assignments can be deployed at subscription, resource group, or resource scope.
27544
- Like policy definitions, they do not have a location property as they are not region-specific.
27543
+ Note: Policy assignments can be deployed at management group, subscription, resource group,
27544
+ or resource scope. Like policy definitions, they do not have a location property as they
27545
+ are not region-specific.
27545
27546
 
27546
27547
  *Example*
27547
27548
 
27548
27549
  ```typescript
27549
- // Policy assignment with managed identity:
27550
- const assignment = new PolicyAssignment(this, "assignment", {
27551
- name: "deploy-monitoring-assignment",
27550
+ // Policy assignment at management group scope:
27551
+ const mgAssignment = new PolicyAssignment(this, "mgAssignment", {
27552
+ name: "mg-policy-assignment",
27552
27553
  policyDefinitionId: "/providers/Microsoft.Authorization/policyDefinitions/policy-id",
27553
- scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
27554
- identity: {
27555
- type: "SystemAssigned"
27556
- }
27554
+ scope: "/providers/Microsoft.Management/managementGroups/my-mg",
27555
+ displayName: "Management Group Policy",
27556
+ description: "Applies policy across the entire management group hierarchy"
27557
27557
  });
27558
27558
  ```
27559
27559
 
@@ -28041,20 +28041,20 @@ This class provides a single, version-aware implementation for managing Azure
28041
28041
  Policy Assignments. It automatically handles version resolution, schema validation,
28042
28042
  and property transformation.
28043
28043
 
28044
- Note: Policy assignments can be deployed at subscription, resource group, or resource scope.
28045
- Like policy definitions, they do not have a location property as they are not region-specific.
28044
+ Note: Policy assignments can be deployed at management group, subscription, resource group,
28045
+ or resource scope. Like policy definitions, they do not have a location property as they
28046
+ are not region-specific.
28046
28047
 
28047
28048
  *Example*
28048
28049
 
28049
28050
  ```typescript
28050
- // Policy assignment with managed identity:
28051
- const assignment = new PolicyAssignment(this, "assignment", {
28052
- name: "deploy-monitoring-assignment",
28051
+ // Policy assignment at management group scope:
28052
+ const mgAssignment = new PolicyAssignment(this, "mgAssignment", {
28053
+ name: "mg-policy-assignment",
28053
28054
  policyDefinitionId: "/providers/Microsoft.Authorization/policyDefinitions/policy-id",
28054
- scope: "/subscriptions/00000000-0000-0000-0000-000000000000",
28055
- identity: {
28056
- type: "SystemAssigned"
28057
- }
28055
+ scope: "/providers/Microsoft.Management/managementGroups/my-mg",
28056
+ displayName: "Management Group Policy",
28057
+ description: "Applies policy across the entire management group hierarchy"
28058
28058
  });
28059
28059
  ```
28060
28060
 
@@ -28549,26 +28549,20 @@ not region-specific.
28549
28549
  *Example*
28550
28550
 
28551
28551
  ```typescript
28552
- // Policy definition with parameters:
28553
- const policyDefinition = new PolicyDefinition(this, "policy", {
28554
- name: "require-tag-policy",
28555
- displayName: "Require tag on resources",
28552
+ // Policy definition at management group scope:
28553
+ const mgPolicyDefinition = new PolicyDefinition(this, "mgPolicy", {
28554
+ name: "mg-require-tag-policy",
28555
+ parentId: "/providers/Microsoft.Management/managementGroups/my-mg",
28556
+ displayName: "Management Group Tag Policy",
28557
+ description: "Enforces tags across the management group hierarchy",
28556
28558
  policyRule: {
28557
28559
  if: {
28558
- field: "[concat('tags[', parameters('tagName'), ']')]",
28560
+ field: "tags['CostCenter']",
28559
28561
  exists: "false"
28560
28562
  },
28561
28563
  then: {
28562
28564
  effect: "deny"
28563
28565
  }
28564
- },
28565
- parameters: {
28566
- tagName: {
28567
- type: "String",
28568
- metadata: {
28569
- displayName: "Tag Name"
28570
- }
28571
- }
28572
28566
  }
28573
28567
  });
28574
28568
  ```
@@ -29051,26 +29045,20 @@ not region-specific.
29051
29045
  *Example*
29052
29046
 
29053
29047
  ```typescript
29054
- // Policy definition with parameters:
29055
- const policyDefinition = new PolicyDefinition(this, "policy", {
29056
- name: "require-tag-policy",
29057
- displayName: "Require tag on resources",
29048
+ // Policy definition at management group scope:
29049
+ const mgPolicyDefinition = new PolicyDefinition(this, "mgPolicy", {
29050
+ name: "mg-require-tag-policy",
29051
+ parentId: "/providers/Microsoft.Management/managementGroups/my-mg",
29052
+ displayName: "Management Group Tag Policy",
29053
+ description: "Enforces tags across the management group hierarchy",
29058
29054
  policyRule: {
29059
29055
  if: {
29060
- field: "[concat('tags[', parameters('tagName'), ']')]",
29056
+ field: "tags['CostCenter']",
29061
29057
  exists: "false"
29062
29058
  },
29063
29059
  then: {
29064
29060
  effect: "deny"
29065
29061
  }
29066
- },
29067
- parameters: {
29068
- tagName: {
29069
- type: "String",
29070
- metadata: {
29071
- displayName: "Tag Name"
29072
- }
29073
- }
29074
29062
  }
29075
29063
  });
29076
29064
  ```
@@ -38577,8 +38565,9 @@ Role Assignments. It automatically handles version resolution, schema validation
38577
38565
  and property transformation.
38578
38566
 
38579
38567
  **Important Notes:**
38580
- - Role assignments are scoped resources deployed at subscription, resource group,
38581
- or resource level. They do not have a location property as they are not region-specific.
38568
+ - Role assignments are scoped resources deployed at management group, subscription,
38569
+ resource group, or resource level. They do not have a location property as they
38570
+ are not region-specific.
38582
38571
  - The `name` property (inherited from AzapiResourceProps) is not used. Azure automatically
38583
38572
  generates a deterministic GUID for role assignment names based on the deployment context.
38584
38573
  This ensures idempotent deployments without duplicate role assignments.
@@ -38586,16 +38575,14 @@ and property transformation.
38586
38575
  *Example*
38587
38576
 
38588
38577
  ```typescript
38589
- Conditional assignment with ABAC - Limit access to specific storage containers
38578
+ Management group scoped assignment - Assign Reader role at management group level
38590
38579
 
38591
- const assignment = new RoleAssignment(this, "conditional-assignment", {
38592
- roleDefinitionId: storageRole.id,
38593
- principalId: user.objectId,
38594
- scope: storageAccount.id,
38595
- principalType: "User",
38596
- condition: "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'",
38597
- conditionVersion: "2.0",
38598
- description: "Grants access only to the logs container",
38580
+ const mgAssignment = new RoleAssignment(this, "mg-assignment", {
38581
+ roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
38582
+ principalId: "00000000-0000-0000-0000-000000000000",
38583
+ scope: "/providers/Microsoft.Management/managementGroups/my-mg",
38584
+ principalType: "Group",
38585
+ description: "Grants read access across the entire management group hierarchy",
38599
38586
  });
38600
38587
  ```
38601
38588
 
@@ -39097,8 +39084,9 @@ Role Assignments. It automatically handles version resolution, schema validation
39097
39084
  and property transformation.
39098
39085
 
39099
39086
  **Important Notes:**
39100
- - Role assignments are scoped resources deployed at subscription, resource group,
39101
- or resource level. They do not have a location property as they are not region-specific.
39087
+ - Role assignments are scoped resources deployed at management group, subscription,
39088
+ resource group, or resource level. They do not have a location property as they
39089
+ are not region-specific.
39102
39090
  - The `name` property (inherited from AzapiResourceProps) is not used. Azure automatically
39103
39091
  generates a deterministic GUID for role assignment names based on the deployment context.
39104
39092
  This ensures idempotent deployments without duplicate role assignments.
@@ -39106,16 +39094,14 @@ and property transformation.
39106
39094
  *Example*
39107
39095
 
39108
39096
  ```typescript
39109
- Conditional assignment with ABAC - Limit access to specific storage containers
39097
+ Management group scoped assignment - Assign Reader role at management group level
39110
39098
 
39111
- const assignment = new RoleAssignment(this, "conditional-assignment", {
39112
- roleDefinitionId: storageRole.id,
39113
- principalId: user.objectId,
39114
- scope: storageAccount.id,
39115
- principalType: "User",
39116
- condition: "@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'logs'",
39117
- conditionVersion: "2.0",
39118
- description: "Grants access only to the logs container",
39099
+ const mgAssignment = new RoleAssignment(this, "mg-assignment", {
39100
+ roleDefinitionId: "/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7",
39101
+ principalId: "00000000-0000-0000-0000-000000000000",
39102
+ scope: "/providers/Microsoft.Management/managementGroups/my-mg",
39103
+ principalType: "Group",
39104
+ description: "Grants read access across the entire management group hierarchy",
39119
39105
  });
39120
39106
  ```
39121
39107
 
@@ -91604,7 +91590,7 @@ const policyAssignmentProps: PolicyAssignmentProps = { ... }
91604
91590
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.name">name</a></code> | <code>string</code> | The name of the resource. |
91605
91591
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags to apply to the resource. |
91606
91592
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.policyDefinitionId">policyDefinitionId</a></code> | <code>string</code> | The policy definition ID to assign This can be a built-in or custom policy definition Required property. |
91607
- | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the policy assignment is applied Can be a subscription, resource group, or resource Required property. |
91593
+ | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the policy assignment is applied Can be a management group, subscription, resource group, or resource Required property. |
91608
91594
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.description">description</a></code> | <code>string</code> | The policy assignment description Provides detailed information about the assignment. |
91609
91595
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.displayName">displayName</a></code> | <code>string</code> | The display name of the policy assignment Provides a human-readable name for the assignment. |
91610
91596
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyAssignmentProps.property.enforcementMode">enforcementMode</a></code> | <code>string</code> | The enforcement mode of the policy assignment. |
@@ -91866,7 +91852,7 @@ public readonly scope: string;
91866
91852
 
91867
91853
  - *Type:* string
91868
91854
 
91869
- The scope at which the policy assignment is applied Can be a subscription, resource group, or resource Required property.
91855
+ The scope at which the policy assignment is applied Can be a management group, subscription, resource group, or resource Required property.
91870
91856
 
91871
91857
  ---
91872
91858
 
@@ -92099,7 +92085,7 @@ const policyAssignmentProps: azure_policyassignment.PolicyAssignmentProps = { ..
92099
92085
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.name">name</a></code> | <code>string</code> | The name of the resource. |
92100
92086
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags to apply to the resource. |
92101
92087
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.policyDefinitionId">policyDefinitionId</a></code> | <code>string</code> | The policy definition ID to assign This can be a built-in or custom policy definition Required property. |
92102
- | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the policy assignment is applied Can be a subscription, resource group, or resource Required property. |
92088
+ | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the policy assignment is applied Can be a management group, subscription, resource group, or resource Required property. |
92103
92089
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.description">description</a></code> | <code>string</code> | The policy assignment description Provides detailed information about the assignment. |
92104
92090
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.displayName">displayName</a></code> | <code>string</code> | The display name of the policy assignment Provides a human-readable name for the assignment. |
92105
92091
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policyassignment.PolicyAssignmentProps.property.enforcementMode">enforcementMode</a></code> | <code>string</code> | The enforcement mode of the policy assignment. |
@@ -92361,7 +92347,7 @@ public readonly scope: string;
92361
92347
 
92362
92348
  - *Type:* string
92363
92349
 
92364
- The scope at which the policy assignment is applied Can be a subscription, resource group, or resource Required property.
92350
+ The scope at which the policy assignment is applied Can be a management group, subscription, resource group, or resource Required property.
92365
92351
 
92366
92352
  ---
92367
92353
 
@@ -92884,6 +92870,7 @@ const policyDefinitionProps: PolicyDefinitionProps = { ... }
92884
92870
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.metadata">metadata</a></code> | <code>any</code> | Metadata for the policy definition Used to store additional information like category, version, etc. |
92885
92871
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.mode">mode</a></code> | <code>string</code> | The policy mode Determines which resource types will be evaluated. |
92886
92872
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.parameters">parameters</a></code> | <code>any</code> | Parameters for the policy definition Allows policy assignments to provide values that are used in the policy rule. |
92873
+ | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.parentId">parentId</a></code> | <code>string</code> | The parent scope where the policy definition should be created Can be a management group or subscription scope If not specified, defaults to subscription scope. |
92887
92874
  | <code><a href="#@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.policyType">policyType</a></code> | <code>string</code> | The type of policy definition. |
92888
92875
 
92889
92876
  ---
@@ -93263,6 +93250,26 @@ Parameters for the policy definition Allows policy assignments to provide values
93263
93250
  ```
93264
93251
 
93265
93252
 
93253
+ ##### `parentId`<sup>Optional</sup> <a name="parentId" id="@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.parentId"></a>
93254
+
93255
+ ```typescript
93256
+ public readonly parentId: string;
93257
+ ```
93258
+
93259
+ - *Type:* string
93260
+ - *Default:* Subscription scope (auto-detected from client config)
93261
+
93262
+ The parent scope where the policy definition should be created Can be a management group or subscription scope If not specified, defaults to subscription scope.
93263
+
93264
+ ---
93265
+
93266
+ *Example*
93267
+
93268
+ ```typescript
93269
+ "/subscriptions/00000000-0000-0000-0000-000000000000"
93270
+ ```
93271
+
93272
+
93266
93273
  ##### `policyType`<sup>Optional</sup> <a name="policyType" id="@microsoft/terraform-cdk-constructs.PolicyDefinitionProps.property.policyType"></a>
93267
93274
 
93268
93275
  ```typescript
@@ -93323,6 +93330,7 @@ const policyDefinitionProps: azure_policydefinition.PolicyDefinitionProps = { ..
93323
93330
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.metadata">metadata</a></code> | <code>any</code> | Metadata for the policy definition Used to store additional information like category, version, etc. |
93324
93331
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.mode">mode</a></code> | <code>string</code> | The policy mode Determines which resource types will be evaluated. |
93325
93332
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.parameters">parameters</a></code> | <code>any</code> | Parameters for the policy definition Allows policy assignments to provide values that are used in the policy rule. |
93333
+ | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.parentId">parentId</a></code> | <code>string</code> | The parent scope where the policy definition should be created Can be a management group or subscription scope If not specified, defaults to subscription scope. |
93326
93334
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.policyType">policyType</a></code> | <code>string</code> | The type of policy definition. |
93327
93335
 
93328
93336
  ---
@@ -93702,6 +93710,26 @@ Parameters for the policy definition Allows policy assignments to provide values
93702
93710
  ```
93703
93711
 
93704
93712
 
93713
+ ##### `parentId`<sup>Optional</sup> <a name="parentId" id="@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.parentId"></a>
93714
+
93715
+ ```typescript
93716
+ public readonly parentId: string;
93717
+ ```
93718
+
93719
+ - *Type:* string
93720
+ - *Default:* Subscription scope (auto-detected from client config)
93721
+
93722
+ The parent scope where the policy definition should be created Can be a management group or subscription scope If not specified, defaults to subscription scope.
93723
+
93724
+ ---
93725
+
93726
+ *Example*
93727
+
93728
+ ```typescript
93729
+ "/subscriptions/00000000-0000-0000-0000-000000000000"
93730
+ ```
93731
+
93732
+
93705
93733
  ##### `policyType`<sup>Optional</sup> <a name="policyType" id="@microsoft/terraform-cdk-constructs.azure_policydefinition.PolicyDefinitionProps.property.policyType"></a>
93706
93734
 
93707
93735
  ```typescript
@@ -100930,7 +100958,7 @@ const roleAssignmentProps: RoleAssignmentProps = { ... }
100930
100958
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags to apply to the resource. |
100931
100959
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.principalId">principalId</a></code> | <code>string</code> | The principal ID (object ID) to which the role is assigned This can be a user, group, service principal, or managed identity Required property. |
100932
100960
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.roleDefinitionId">roleDefinitionId</a></code> | <code>string</code> | The role definition ID to assign This can be a built-in or custom role definition Required property. |
100933
- | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the role assignment is applied Can be a subscription, resource group, or resource Required property. |
100961
+ | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the role assignment is applied Can be a management group, subscription, resource group, or resource Required property. |
100934
100962
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.condition">condition</a></code> | <code>string</code> | The conditions on the role assignment Limits the resources it applies to using ABAC expressions Requires conditionVersion to be set when used. |
100935
100963
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.conditionVersion">conditionVersion</a></code> | <code>string</code> | Version of the condition syntax Required when condition is specified. |
100936
100964
  | <code><a href="#@microsoft/terraform-cdk-constructs.RoleAssignmentProps.property.delegatedManagedIdentityResourceId">delegatedManagedIdentityResourceId</a></code> | <code>string</code> | The delegated Azure Resource Id which contains a Managed Identity Applicable only when the principalType is Group Used for scenarios where a group assignment should use a specific managed identity. |
@@ -101208,7 +101236,7 @@ public readonly scope: string;
101208
101236
 
101209
101237
  - *Type:* string
101210
101238
 
101211
- The scope at which the role assignment is applied Can be a subscription, resource group, or resource Required property.
101239
+ The scope at which the role assignment is applied Can be a management group, subscription, resource group, or resource Required property.
101212
101240
 
101213
101241
  ---
101214
101242
 
@@ -101376,7 +101404,7 @@ const roleAssignmentProps: azure_roleassignment.RoleAssignmentProps = { ... }
101376
101404
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.tags">tags</a></code> | <code>{[ key: string ]: string}</code> | Tags to apply to the resource. |
101377
101405
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.principalId">principalId</a></code> | <code>string</code> | The principal ID (object ID) to which the role is assigned This can be a user, group, service principal, or managed identity Required property. |
101378
101406
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.roleDefinitionId">roleDefinitionId</a></code> | <code>string</code> | The role definition ID to assign This can be a built-in or custom role definition Required property. |
101379
- | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the role assignment is applied Can be a subscription, resource group, or resource Required property. |
101407
+ | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.scope">scope</a></code> | <code>string</code> | The scope at which the role assignment is applied Can be a management group, subscription, resource group, or resource Required property. |
101380
101408
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.condition">condition</a></code> | <code>string</code> | The conditions on the role assignment Limits the resources it applies to using ABAC expressions Requires conditionVersion to be set when used. |
101381
101409
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.conditionVersion">conditionVersion</a></code> | <code>string</code> | Version of the condition syntax Required when condition is specified. |
101382
101410
  | <code><a href="#@microsoft/terraform-cdk-constructs.azure_roleassignment.RoleAssignmentProps.property.delegatedManagedIdentityResourceId">delegatedManagedIdentityResourceId</a></code> | <code>string</code> | The delegated Azure Resource Id which contains a Managed Identity Applicable only when the principalType is Group Used for scenarios where a group assignment should use a specific managed identity. |
@@ -101654,7 +101682,7 @@ public readonly scope: string;
101654
101682
 
101655
101683
  - *Type:* string
101656
101684
 
101657
- The scope at which the role assignment is applied Can be a subscription, resource group, or resource Required property.
101685
+ The scope at which the role assignment is applied Can be a management group, subscription, resource group, or resource Required property.
101658
101686
 
101659
101687
  ---
101660
101688
 
@@ -102490,7 +102518,7 @@ An array of scopes where this role can be assigned Can include subscription, res
102490
102518
  *Example*
102491
102519
 
102492
102520
  ```typescript
102493
- ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name"]
102521
+ ["/providers/Microsoft.Management/managementGroups/my-mg"]
102494
102522
  ```
102495
102523
 
102496
102524
 
@@ -102876,7 +102904,7 @@ An array of scopes where this role can be assigned Can include subscription, res
102876
102904
  *Example*
102877
102905
 
102878
102906
  ```typescript
102879
- ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name"]
102907
+ ["/providers/Microsoft.Management/managementGroups/my-mg"]
102880
102908
  ```
102881
102909
 
102882
102910
 
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2025 Microsoft
1
+ Copyright (c) 2026 Microsoft
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
@@ -168,7 +168,7 @@ class ActionGroup extends azapi_resource_1.AzapiResource {
168
168
  }
169
169
  exports.ActionGroup = ActionGroup;
170
170
  _a = JSII_RTTI_SYMBOL_1;
171
- ActionGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ActionGroup", version: "1.6.0" };
171
+ ActionGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ActionGroup", version: "1.7.1" };
172
172
  (() => {
173
173
  azapi_resource_1.AzapiResource.registerSchemas(action_group_schemas_1.ACTION_GROUP_TYPE, action_group_schemas_1.ALL_ACTION_GROUP_VERSIONS);
174
174
  })();
@@ -179,7 +179,7 @@ class ActivityLogAlert extends azapi_resource_1.AzapiResource {
179
179
  }
180
180
  exports.ActivityLogAlert = ActivityLogAlert;
181
181
  _a = JSII_RTTI_SYMBOL_1;
182
- ActivityLogAlert[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ActivityLogAlert", version: "1.6.0" };
182
+ ActivityLogAlert[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ActivityLogAlert", version: "1.7.1" };
183
183
  (() => {
184
184
  azapi_resource_1.AzapiResource.registerSchemas(activity_log_alert_schemas_1.ACTIVITY_LOG_ALERT_TYPE, activity_log_alert_schemas_1.ALL_ACTIVITY_LOG_ALERT_VERSIONS);
185
185
  })();
@@ -459,7 +459,7 @@ class AksCluster extends azapi_resource_1.AzapiResource {
459
459
  }
460
460
  exports.AksCluster = AksCluster;
461
461
  _a = JSII_RTTI_SYMBOL_1;
462
- AksCluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.AksCluster", version: "1.6.0" };
462
+ AksCluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.AksCluster", version: "1.7.1" };
463
463
  (() => {
464
464
  azapi_resource_1.AzapiResource.registerSchemas(aks_cluster_schemas_1.AKS_CLUSTER_TYPE, aks_cluster_schemas_1.ALL_AKS_CLUSTER_VERSIONS);
465
465
  })();
@@ -167,7 +167,7 @@ class DiagnosticSettings extends azapi_resource_1.AzapiResource {
167
167
  }
168
168
  exports.DiagnosticSettings = DiagnosticSettings;
169
169
  _a = JSII_RTTI_SYMBOL_1;
170
- DiagnosticSettings[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DiagnosticSettings", version: "1.6.0" };
170
+ DiagnosticSettings[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DiagnosticSettings", version: "1.7.1" };
171
171
  (() => {
172
172
  azapi_resource_1.AzapiResource.registerSchemas(diagnostic_settings_schemas_1.DIAGNOSTIC_SETTINGS_TYPE, diagnostic_settings_schemas_1.ALL_DIAGNOSTIC_SETTINGS_VERSIONS);
173
173
  })();
@@ -207,7 +207,7 @@ class DnsForwardingRuleset extends azapi_resource_1.AzapiResource {
207
207
  }
208
208
  exports.DnsForwardingRuleset = DnsForwardingRuleset;
209
209
  _a = JSII_RTTI_SYMBOL_1;
210
- DnsForwardingRuleset[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRuleset", version: "1.6.0" };
210
+ DnsForwardingRuleset[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRuleset", version: "1.7.1" };
211
211
  (() => {
212
212
  azapi_resource_1.AzapiResource.registerSchemas(dns_forwarding_ruleset_schemas_1.DNS_FORWARDING_RULESET_TYPE, dns_forwarding_ruleset_schemas_1.ALL_DNS_FORWARDING_RULESET_VERSIONS);
213
213
  })();
@@ -186,7 +186,7 @@ class ForwardingRule extends azapi_resource_1.AzapiResource {
186
186
  }
187
187
  exports.ForwardingRule = ForwardingRule;
188
188
  _a = JSII_RTTI_SYMBOL_1;
189
- ForwardingRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ForwardingRule", version: "1.6.0" };
189
+ ForwardingRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ForwardingRule", version: "1.7.1" };
190
190
  (() => {
191
191
  azapi_resource_1.AzapiResource.registerSchemas(forwarding_rule_schemas_1.FORWARDING_RULE_TYPE, forwarding_rule_schemas_1.ALL_FORWARDING_RULE_VERSIONS);
192
192
  })();
@@ -171,7 +171,7 @@ class DnsForwardingRulesetVirtualNetworkLink extends azapi_resource_1.AzapiResou
171
171
  }
172
172
  exports.DnsForwardingRulesetVirtualNetworkLink = DnsForwardingRulesetVirtualNetworkLink;
173
173
  _a = JSII_RTTI_SYMBOL_1;
174
- DnsForwardingRulesetVirtualNetworkLink[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRulesetVirtualNetworkLink", version: "1.6.0" };
174
+ DnsForwardingRulesetVirtualNetworkLink[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRulesetVirtualNetworkLink", version: "1.7.1" };
175
175
  (() => {
176
176
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_link_schemas_1.VIRTUAL_NETWORK_LINK_TYPE, virtual_network_link_schemas_1.ALL_VIRTUAL_NETWORK_LINK_VERSIONS);
177
177
  })();
@@ -229,7 +229,7 @@ class DnsResolver extends azapi_resource_1.AzapiResource {
229
229
  }
230
230
  exports.DnsResolver = DnsResolver;
231
231
  _a = JSII_RTTI_SYMBOL_1;
232
- DnsResolver[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolver", version: "1.6.0" };
232
+ DnsResolver[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolver", version: "1.7.1" };
233
233
  (() => {
234
234
  azapi_resource_1.AzapiResource.registerSchemas(dns_resolver_schemas_1.DNS_RESOLVER_TYPE, dns_resolver_schemas_1.ALL_DNS_RESOLVER_VERSIONS);
235
235
  })();
@@ -236,7 +236,7 @@ class DnsResolverInboundEndpoint extends azapi_resource_1.AzapiResource {
236
236
  }
237
237
  exports.DnsResolverInboundEndpoint = DnsResolverInboundEndpoint;
238
238
  _a = JSII_RTTI_SYMBOL_1;
239
- DnsResolverInboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverInboundEndpoint", version: "1.6.0" };
239
+ DnsResolverInboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverInboundEndpoint", version: "1.7.1" };
240
240
  (() => {
241
241
  azapi_resource_1.AzapiResource.registerSchemas(inbound_endpoint_schemas_1.DNS_RESOLVER_INBOUND_ENDPOINT_TYPE, inbound_endpoint_schemas_1.ALL_DNS_RESOLVER_INBOUND_ENDPOINT_VERSIONS);
242
242
  })();
@@ -227,7 +227,7 @@ class DnsResolverOutboundEndpoint extends azapi_resource_1.AzapiResource {
227
227
  }
228
228
  exports.DnsResolverOutboundEndpoint = DnsResolverOutboundEndpoint;
229
229
  _a = JSII_RTTI_SYMBOL_1;
230
- DnsResolverOutboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverOutboundEndpoint", version: "1.6.0" };
230
+ DnsResolverOutboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverOutboundEndpoint", version: "1.7.1" };
231
231
  (() => {
232
232
  azapi_resource_1.AzapiResource.registerSchemas(outbound_endpoint_schemas_1.DNS_RESOLVER_OUTBOUND_ENDPOINT_TYPE, outbound_endpoint_schemas_1.ALL_DNS_RESOLVER_OUTBOUND_ENDPOINT_VERSIONS);
233
233
  })();
@@ -221,7 +221,7 @@ class DnsZone extends azapi_resource_1.AzapiResource {
221
221
  }
222
222
  exports.DnsZone = DnsZone;
223
223
  _a = JSII_RTTI_SYMBOL_1;
224
- DnsZone[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsZone", version: "1.6.0" };
224
+ DnsZone[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsZone", version: "1.7.1" };
225
225
  (() => {
226
226
  azapi_resource_1.AzapiResource.registerSchemas(dns_zone_schemas_1.DNS_ZONE_TYPE, dns_zone_schemas_1.ALL_DNS_ZONE_VERSIONS);
227
227
  })();
@@ -219,7 +219,7 @@ class MetricAlert extends azapi_resource_1.AzapiResource {
219
219
  }
220
220
  exports.MetricAlert = MetricAlert;
221
221
  _a = JSII_RTTI_SYMBOL_1;
222
- MetricAlert[_a] = { fqn: "@microsoft/terraform-cdk-constructs.MetricAlert", version: "1.6.0" };
222
+ MetricAlert[_a] = { fqn: "@microsoft/terraform-cdk-constructs.MetricAlert", version: "1.7.1" };
223
223
  (() => {
224
224
  azapi_resource_1.AzapiResource.registerSchemas(metric_alert_schemas_1.METRIC_ALERT_TYPE, metric_alert_schemas_1.ALL_METRIC_ALERT_VERSIONS);
225
225
  })();
@@ -206,7 +206,7 @@ class NetworkInterface extends azapi_resource_1.AzapiResource {
206
206
  }
207
207
  exports.NetworkInterface = NetworkInterface;
208
208
  _a = JSII_RTTI_SYMBOL_1;
209
- NetworkInterface[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkInterface", version: "1.6.0" };
209
+ NetworkInterface[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkInterface", version: "1.7.1" };
210
210
  (() => {
211
211
  azapi_resource_1.AzapiResource.registerSchemas(network_interface_schemas_1.NETWORK_INTERFACE_TYPE, network_interface_schemas_1.ALL_NETWORK_INTERFACE_VERSIONS);
212
212
  })();
@@ -219,7 +219,7 @@ class NetworkSecurityGroup extends azapi_resource_1.AzapiResource {
219
219
  }
220
220
  exports.NetworkSecurityGroup = NetworkSecurityGroup;
221
221
  _a = JSII_RTTI_SYMBOL_1;
222
- NetworkSecurityGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkSecurityGroup", version: "1.6.0" };
222
+ NetworkSecurityGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkSecurityGroup", version: "1.7.1" };
223
223
  (() => {
224
224
  azapi_resource_1.AzapiResource.registerSchemas(network_security_group_schemas_1.NETWORK_SECURITY_GROUP_TYPE, network_security_group_schemas_1.ALL_NETWORK_SECURITY_GROUP_VERSIONS);
225
225
  })();
@@ -52,7 +52,7 @@ const COMMON_PROPERTIES = {
52
52
  scope: {
53
53
  dataType: version_interfaces_1.PropertyType.STRING,
54
54
  required: true,
55
- description: "The scope at which the policy assignment is applied (subscription, resource group, or resource)",
55
+ description: "The scope at which the policy assignment is applied (management group, subscription, resource group, or resource)",
56
56
  validation: [
57
57
  {
58
58
  ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
@@ -257,4 +257,4 @@ exports.ALL_POLICY_ASSIGNMENT_VERSIONS = [
257
257
  * Resource type constant
258
258
  */
259
259
  exports.POLICY_ASSIGNMENT_TYPE = "Microsoft.Authorization/policyAssignments";
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1wb2xpY3lhc3NpZ25tZW50L2xpYi9wb2xpY3ktYXNzaWdubWVudC1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1Qsb0VBQW9FO1FBQ3RFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxhQUFhO2dCQUMxQyxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixPQUFPLEVBQ0wsMkZBQTJGO2FBQzlGO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFdBQVc7Z0JBQ3hDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLDREQUE0RDthQUN0RTtTQUNGO0tBQ0Y7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUNULHdGQUF3RjtRQUMxRixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtnQkFDckMsT0FBTyxFQUFFLHlEQUF5RDthQUNuRTtZQUNEO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsdUNBQXVDO2FBQ2pEO1NBQ0Y7S0FD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ZjtZQUNFLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO29CQUNyQyxPQUFPLEVBQUUseURBQXlEO2lCQUNuRTthQUNGO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtvQkFDckMsT0FBTyxFQUFFLDBDQUEwQztpQkFDcEQ7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLHlCQUF5QjtBQUN6QixnRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDVSxRQUFBLG9DQUFvQyxHQUFrQjtJQUNqRSxPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsMkNBQW1DO0lBQzNDLFlBQVksRUFBRSx3Q0FBbUIsQ0FBQyxNQUFNO0lBQ3hDLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLGNBQWMsRUFBRSw4Q0FBOEM7SUFDOUQsU0FBUyxFQUFFO1FBQ1Q7WUFDRSxVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQ1Qsd0hBQXdIO1lBQzFILFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDhCQUE4QixHQUFvQjtJQUM3RCw0Q0FBb0M7Q0FDckMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FDakMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFQSSBzY2hlbWFzIGZvciBBenVyZSBQb2xpY3kgQXNzaWdubWVudCBhY3Jvc3MgYWxsIHN1cHBvcnRlZCB2ZXJzaW9uc1xuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBjb21wbGV0ZSBBUEkgc2NoZW1hcyBmb3IgTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5QXNzaWdubWVudHNcbiAqIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy4gVGhlIHNjaGVtYXMgYXJlIHVzZWQgYnkgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAqIGZyYW1ld29yayBmb3IgdmFsaWRhdGlvbiwgdHJhbnNmb3JtYXRpb24sIGFuZCB2ZXJzaW9uIG1hbmFnZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBpU2NoZW1hLFxuICBQcm9wZXJ0eURlZmluaXRpb24sXG4gIFByb3BlcnR5VHlwZSxcbiAgVmFsaWRhdGlvblJ1bGVUeXBlLFxuICBWZXJzaW9uQ29uZmlnLFxuICBWZXJzaW9uU3VwcG9ydExldmVsLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01NT04gUFJPUEVSVFkgREVGSU5JVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnR5IGRlZmluaXRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIFBvbGljeSBBc3NpZ25tZW50IHZlcnNpb25zXG4gKi9cbmNvbnN0IENPTU1PTl9QUk9QRVJUSUVTOiB7IFtrZXk6IHN0cmluZ106IFByb3BlcnR5RGVmaW5pdGlvbiB9ID0ge1xuICBuYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgbmFtZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGVcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXlthLXpBLVowLTlfLV0rJFwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiUG9saWN5IGFzc2lnbm1lbnQgbmFtZSBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMSwgbWF4TGVuZ3RoOiA2NCB9LFxuICAgICAgICBtZXNzYWdlOiBcIlBvbGljeSBhc3NpZ25tZW50IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDY0IGNoYXJhY3RlcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcG9saWN5RGVmaW5pdGlvbklkOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBwb2xpY3kgZGVmaW5pdGlvbiBJRCB0byBhc3NpZ24uIFRoaXMgY2FuIGJlIGEgYnVpbHQtaW4gb3IgY3VzdG9tIHBvbGljeSBkZWZpbml0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlBvbGljeSBkZWZpbml0aW9uIElEIGlzIHJlcXVpcmVkIGZvciBwb2xpY3kgYXNzaWdubWVudHNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiUG9saWN5IGRlZmluaXRpb24gSUQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBzY29wZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgc2NvcGUgYXQgd2hpY2ggdGhlIHBvbGljeSBhc3NpZ25tZW50IGlzIGFwcGxpZWQgKHN1YnNjcmlwdGlvbiwgcmVzb3VyY2UgZ3JvdXAsIG9yIHJlc291cmNlKVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgbWVzc2FnZTogXCJTY29wZSBpcyByZXF1aXJlZCBmb3IgcG9saWN5IGFzc2lnbm1lbnRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGlzcGxheU5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnRcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMSwgbWF4TGVuZ3RoOiAxMjggfSxcbiAgICAgICAgbWVzc2FnZTogXCJEaXNwbGF5IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGRlc2NyaXB0aW9uOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcG9saWN5IGFzc2lnbm1lbnQgZGVzY3JpcHRpb24uIFByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhc3NpZ25tZW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDAsIG1heExlbmd0aDogNTEyIH0sXG4gICAgICAgIG1lc3NhZ2U6IFwiRGVzY3JpcHRpb24gbXVzdCBub3QgZXhjZWVkIDUxMiBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGVuZm9yY2VtZW50TW9kZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFwiRGVmYXVsdFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgZW5mb3JjZW1lbnQgbW9kZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFZhbGlkIHZhbHVlczogRGVmYXVsdCwgRG9Ob3RFbmZvcmNlXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl4oRGVmYXVsdHxEb05vdEVuZm9yY2UpJFwiLFxuICAgICAgICBtZXNzYWdlOiBcIkVuZm9yY2VtZW50IG1vZGUgbXVzdCBiZSBlaXRoZXIgRGVmYXVsdCBvciBEb05vdEVuZm9yY2VcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiUGFyYW1ldGVycyBmb3IgdGhlIHBvbGljeSBhc3NpZ25tZW50LiBQcm92aWRlcyB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgcG9saWN5IGRlZmluaXRpb25cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFyYW1ldGVycyBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgbWV0YWRhdGE6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIk1ldGFkYXRhIGZvciB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFVzZWQgdG8gc3RvcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBsaWtlIGFzc2lnbmVkQnksIHBhcmFtZXRlclNjb3BlcywgZXRjLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJNZXRhZGF0YSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaWRlbnRpdHk6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBtYW5hZ2VkIGlkZW50aXR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFJlcXVpcmVkIGZvciBwb2xpY2llcyB3aXRoIGRlcGxveUlmTm90RXhpc3RzIG9yIG1vZGlmeSBlZmZlY3RzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcIklkZW50aXR5IG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBub3RTY29wZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHBvbGljeSdzIGV4Y2x1ZGVkIHNjb3Blcy4gUmVzb3VyY2VzIHdpdGhpbiB0aGVzZSBzY29wZXMgd2lsbCBub3QgYmUgZXZhbHVhdGVkIGJ5IHRoZSBwb2xpY3lcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTogXCJOb3RTY29wZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG5vbkNvbXBsaWFuY2VNZXNzYWdlczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgbm9uLWNvbXBsaWFuY2UgbWVzc2FnZXMgZm9yIHRoZSBwb2xpY3kgYXNzaWdubWVudC4gUHJvdmlkZXMgY3VzdG9tIG1lc3NhZ2VzIHdoZW4gcmVzb3VyY2VzIGFyZSBub24tY29tcGxpYW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiTm9uQ29tcGxpYW5jZU1lc3NhZ2VzIG11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0c1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBpZ25vcmVDaGFuZ2VzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiQXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgdG8gaWdub3JlIGR1cmluZyB1cGRhdGVzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiSWdub3JlQ2hhbmdlcyBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3NcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OLVNQRUNJRklDIFNDSEVNQVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQVBJIFNjaGVtYSBmb3IgUG9saWN5IEFzc2lnbm1lbnQgdmVyc2lvbiAyMDIyLTA2LTAxXG4gKiBUaGlzIGlzIHRoZSBsYXRlc3Qgc3RhYmxlIEFQSSB2ZXJzaW9uIGZvciBwb2xpY3kgYXNzaWdubWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9BU1NJR05NRU5UX1NDSEVNQV8yMDIyXzA2XzAxOiBBcGlTY2hlbWEgPSB7XG4gIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lBc3NpZ25tZW50c1wiLFxuICB2ZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgcHJvcGVydGllczoge1xuICAgIC4uLkNPTU1PTl9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wicG9saWN5RGVmaW5pdGlvbklkXCIsIFwic2NvcGVcIl0sXG4gIG9wdGlvbmFsOiBbXG4gICAgXCJuYW1lXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiLFxuICAgIFwiZGVzY3JpcHRpb25cIixcbiAgICBcImVuZm9yY2VtZW50TW9kZVwiLFxuICAgIFwicGFyYW1ldGVyc1wiLFxuICAgIFwibWV0YWRhdGFcIixcbiAgICBcImlkZW50aXR5XCIsXG4gICAgXCJub3RTY29wZXNcIixcbiAgICBcIm5vbkNvbXBsaWFuY2VNZXNzYWdlc1wiLFxuICAgIFwiaWdub3JlQ2hhbmdlc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInBvbGljeURlZmluaXRpb25JZFwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQb2xpY3kgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3IgcG9saWN5IGFzc2lnbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwic2NvcGVcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiU2NvcGUgaXMgcmVxdWlyZWQgZm9yIHBvbGljeSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04gQ09ORklHVVJBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBQb2xpY3kgQXNzaWdubWVudCAyMDIyLTA2LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBQT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OXzIwMjJfMDZfMDE6IFZlcnNpb25Db25maWcgPSB7XG4gIHZlcnNpb246IFwiMjAyMi0wNi0wMVwiLFxuICBzY2hlbWE6IFBPTElDWV9BU1NJR05NRU5UX1NDSEVNQV8yMDIyXzA2XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICByZWxlYXNlRGF0ZTogXCIyMDIyLTA2LTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL3BvbGljeS1hc3NpZ25tZW50L21pZ3JhdGlvbi0yMDIyLTA2LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIFBvbGljeSBBc3NpZ25tZW50IEFQSSB3aXRoIGZ1bGwgc3VwcG9ydCBmb3IgZW5mb3JjZW1lbnQgbW9kZXMsIGlkZW50aXR5LCBhbmQgbm9uLWNvbXBsaWFuY2UgbWVzc2FnZXNcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBbGwgc3VwcG9ydGVkIFBvbGljeSBBc3NpZ25tZW50IHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9QT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OUzogVmVyc2lvbkNvbmZpZ1tdID0gW1xuICBQT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OXzIwMjJfMDZfMDEsXG5dO1xuXG4vKipcbiAqIFJlc291cmNlIHR5cGUgY29uc3RhbnRcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9BU1NJR05NRU5UX1RZUEUgPVxuICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeUFzc2lnbm1lbnRzXCI7XG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LWFzc2lnbm1lbnQtc2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1wb2xpY3lhc3NpZ25tZW50L2xpYi9wb2xpY3ktYXNzaWdubWVudC1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1Qsb0VBQW9FO1FBQ3RFLFVBQVUsRUFBRTtZQUNWO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxhQUFhO2dCQUMxQyxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixPQUFPLEVBQ0wsMkZBQTJGO2FBQzlGO1lBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFdBQVc7Z0JBQ3hDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtnQkFDdEMsT0FBTyxFQUFFLDREQUE0RDthQUN0RTtTQUNGO0tBQ0Y7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUNULHdGQUF3RjtRQUMxRixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtnQkFDckMsT0FBTyxFQUFFLHlEQUF5RDthQUNuRTtZQUNEO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxVQUFVO2dCQUN2QyxLQUFLLEVBQUUsaUNBQVksQ0FBQyxNQUFNO2dCQUMxQixPQUFPLEVBQUUsdUNBQXVDO2FBQ2pEO1NBQ0Y7S0FD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ZjtZQUNFLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsS0FBSyxFQUFFO2dCQUNMO29CQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxRQUFRO29CQUNyQyxPQUFPLEVBQUUseURBQXlEO2lCQUNuRTthQUNGO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtvQkFDckMsT0FBTyxFQUFFLDBDQUEwQztpQkFDcEQ7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsZ0ZBQWdGO0FBQ2hGLHlCQUF5QjtBQUN6QixnRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDVSxRQUFBLG9DQUFvQyxHQUFrQjtJQUNqRSxPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsMkNBQW1DO0lBQzNDLFlBQVksRUFBRSx3Q0FBbUIsQ0FBQyxNQUFNO0lBQ3hDLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLGVBQWUsRUFBRSxFQUFFO0lBQ25CLGNBQWMsRUFBRSw4Q0FBOEM7SUFDOUQsU0FBUyxFQUFFO1FBQ1Q7WUFDRSxVQUFVLEVBQUUsT0FBTztZQUNuQixXQUFXLEVBQ1Qsd0hBQXdIO1lBQzFILFFBQVEsRUFBRSxLQUFLO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLDhCQUE4QixHQUFvQjtJQUM3RCw0Q0FBb0M7Q0FDckMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FDakMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFQSSBzY2hlbWFzIGZvciBBenVyZSBQb2xpY3kgQXNzaWdubWVudCBhY3Jvc3MgYWxsIHN1cHBvcnRlZCB2ZXJzaW9uc1xuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBjb21wbGV0ZSBBUEkgc2NoZW1hcyBmb3IgTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcG9saWN5QXNzaWdubWVudHNcbiAqIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy4gVGhlIHNjaGVtYXMgYXJlIHVzZWQgYnkgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAqIGZyYW1ld29yayBmb3IgdmFsaWRhdGlvbiwgdHJhbnNmb3JtYXRpb24sIGFuZCB2ZXJzaW9uIG1hbmFnZW1lbnQuXG4gKi9cblxuaW1wb3J0IHtcbiAgQXBpU2NoZW1hLFxuICBQcm9wZXJ0eURlZmluaXRpb24sXG4gIFByb3BlcnR5VHlwZSxcbiAgVmFsaWRhdGlvblJ1bGVUeXBlLFxuICBWZXJzaW9uQ29uZmlnLFxuICBWZXJzaW9uU3VwcG9ydExldmVsLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01NT04gUFJPUEVSVFkgREVGSU5JVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnR5IGRlZmluaXRpb25zIHNoYXJlZCBhY3Jvc3MgYWxsIFBvbGljeSBBc3NpZ25tZW50IHZlcnNpb25zXG4gKi9cbmNvbnN0IENPTU1PTl9QUk9QRVJUSUVTOiB7IFtrZXk6IHN0cmluZ106IFByb3BlcnR5RGVmaW5pdGlvbiB9ID0ge1xuICBuYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgbmFtZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGVcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXlthLXpBLVowLTlfLV0rJFwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiUG9saWN5IGFzc2lnbm1lbnQgbmFtZSBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMSwgbWF4TGVuZ3RoOiA2NCB9LFxuICAgICAgICBtZXNzYWdlOiBcIlBvbGljeSBhc3NpZ25tZW50IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDY0IGNoYXJhY3RlcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcG9saWN5RGVmaW5pdGlvbklkOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBwb2xpY3kgZGVmaW5pdGlvbiBJRCB0byBhc3NpZ24uIFRoaXMgY2FuIGJlIGEgYnVpbHQtaW4gb3IgY3VzdG9tIHBvbGljeSBkZWZpbml0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlBvbGljeSBkZWZpbml0aW9uIElEIGlzIHJlcXVpcmVkIGZvciBwb2xpY3kgYXNzaWdubWVudHNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgICAgIG1lc3NhZ2U6IFwiUG9saWN5IGRlZmluaXRpb24gSUQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBzY29wZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgc2NvcGUgYXQgd2hpY2ggdGhlIHBvbGljeSBhc3NpZ25tZW50IGlzIGFwcGxpZWQgKG1hbmFnZW1lbnQgZ3JvdXAsIHN1YnNjcmlwdGlvbiwgcmVzb3VyY2UgZ3JvdXAsIG9yIHJlc291cmNlKVwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgbWVzc2FnZTogXCJTY29wZSBpcyByZXF1aXJlZCBmb3IgcG9saWN5IGFzc2lnbm1lbnRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgICAgICBtZXNzYWdlOiBcIlNjb3BlIG11c3QgYmUgYSBzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGlzcGxheU5hbWU6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnRcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0UsXG4gICAgICAgIHZhbHVlOiB7IG1pbkxlbmd0aDogMSwgbWF4TGVuZ3RoOiAxMjggfSxcbiAgICAgICAgbWVzc2FnZTogXCJEaXNwbGF5IG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEyOCBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGRlc2NyaXB0aW9uOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgcG9saWN5IGFzc2lnbm1lbnQgZGVzY3JpcHRpb24uIFByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhc3NpZ25tZW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDAsIG1heExlbmd0aDogNTEyIH0sXG4gICAgICAgIG1lc3NhZ2U6IFwiRGVzY3JpcHRpb24gbXVzdCBub3QgZXhjZWVkIDUxMiBjaGFyYWN0ZXJzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGVuZm9yY2VtZW50TW9kZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFwiRGVmYXVsdFwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgZW5mb3JjZW1lbnQgbW9kZSBvZiB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFZhbGlkIHZhbHVlczogRGVmYXVsdCwgRG9Ob3RFbmZvcmNlXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlBBVFRFUk5fTUFUQ0gsXG4gICAgICAgIHZhbHVlOiBcIl4oRGVmYXVsdHxEb05vdEVuZm9yY2UpJFwiLFxuICAgICAgICBtZXNzYWdlOiBcIkVuZm9yY2VtZW50IG1vZGUgbXVzdCBiZSBlaXRoZXIgRGVmYXVsdCBvciBEb05vdEVuZm9yY2VcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgcGFyYW1ldGVyczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiUGFyYW1ldGVycyBmb3IgdGhlIHBvbGljeSBhc3NpZ25tZW50LiBQcm92aWRlcyB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMgZGVmaW5lZCBpbiB0aGUgcG9saWN5IGRlZmluaXRpb25cIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5PQkpFQ1QsXG4gICAgICAgIG1lc3NhZ2U6IFwiUGFyYW1ldGVycyBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgbWV0YWRhdGE6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIk1ldGFkYXRhIGZvciB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFVzZWQgdG8gc3RvcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBsaWtlIGFzc2lnbmVkQnksIHBhcmFtZXRlclNjb3BlcywgZXRjLlwiLFxuICAgIHZhbGlkYXRpb246IFtcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICAgICAgbWVzc2FnZTogXCJNZXRhZGF0YSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgaWRlbnRpdHk6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLk9CSkVDVCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBtYW5hZ2VkIGlkZW50aXR5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9saWN5IGFzc2lnbm1lbnQuIFJlcXVpcmVkIGZvciBwb2xpY2llcyB3aXRoIGRlcGxveUlmTm90RXhpc3RzIG9yIG1vZGlmeSBlZmZlY3RzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuT0JKRUNULFxuICAgICAgICBtZXNzYWdlOiBcIklkZW50aXR5IG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdFwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBub3RTY29wZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiVGhlIHBvbGljeSdzIGV4Y2x1ZGVkIHNjb3Blcy4gUmVzb3VyY2VzIHdpdGhpbiB0aGVzZSBzY29wZXMgd2lsbCBub3QgYmUgZXZhbHVhdGVkIGJ5IHRoZSBwb2xpY3lcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTogXCJOb3RTY29wZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIG5vbkNvbXBsaWFuY2VNZXNzYWdlczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgbm9uLWNvbXBsaWFuY2UgbWVzc2FnZXMgZm9yIHRoZSBwb2xpY3kgYXNzaWdubWVudC4gUHJvdmlkZXMgY3VzdG9tIG1lc3NhZ2VzIHdoZW4gcmVzb3VyY2VzIGFyZSBub24tY29tcGxpYW50XCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiTm9uQ29tcGxpYW5jZU1lc3NhZ2VzIG11c3QgYmUgYW4gYXJyYXkgb2Ygb2JqZWN0c1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBpZ25vcmVDaGFuZ2VzOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IFwiQXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgdG8gaWdub3JlIGR1cmluZyB1cGRhdGVzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiSWdub3JlQ2hhbmdlcyBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3NcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBWRVJTSU9OLVNQRUNJRklDIFNDSEVNQVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQVBJIFNjaGVtYSBmb3IgUG9saWN5IEFzc2lnbm1lbnQgdmVyc2lvbiAyMDIyLTA2LTAxXG4gKiBUaGlzIGlzIHRoZSBsYXRlc3Qgc3RhYmxlIEFQSSB2ZXJzaW9uIGZvciBwb2xpY3kgYXNzaWdubWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9BU1NJR05NRU5UX1NDSEVNQV8yMDIyXzA2XzAxOiBBcGlTY2hlbWEgPSB7XG4gIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvbi9wb2xpY3lBc3NpZ25tZW50c1wiLFxuICB2ZXJzaW9uOiBcIjIwMjItMDYtMDFcIixcbiAgcHJvcGVydGllczoge1xuICAgIC4uLkNPTU1PTl9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wicG9saWN5RGVmaW5pdGlvbklkXCIsIFwic2NvcGVcIl0sXG4gIG9wdGlvbmFsOiBbXG4gICAgXCJuYW1lXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiLFxuICAgIFwiZGVzY3JpcHRpb25cIixcbiAgICBcImVuZm9yY2VtZW50TW9kZVwiLFxuICAgIFwicGFyYW1ldGVyc1wiLFxuICAgIFwibWV0YWRhdGFcIixcbiAgICBcImlkZW50aXR5XCIsXG4gICAgXCJub3RTY29wZXNcIixcbiAgICBcIm5vbkNvbXBsaWFuY2VNZXNzYWdlc1wiLFxuICAgIFwiaWdub3JlQ2hhbmdlc1wiLFxuICBdLFxuICBkZXByZWNhdGVkOiBbXSxcbiAgdHJhbnNmb3JtYXRpb25SdWxlczoge30sXG4gIHZhbGlkYXRpb25SdWxlczogW1xuICAgIHtcbiAgICAgIHByb3BlcnR5OiBcInBvbGljeURlZmluaXRpb25JZFwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQb2xpY3kgZGVmaW5pdGlvbiBJRCBpcyByZXF1aXJlZCBmb3IgcG9saWN5IGFzc2lnbm1lbnRzXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvcGVydHk6IFwic2NvcGVcIixcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICAgIG1lc3NhZ2U6IFwiU2NvcGUgaXMgcmVxdWlyZWQgZm9yIHBvbGljeSBhc3NpZ25tZW50c1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04gQ09ORklHVVJBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBQb2xpY3kgQXNzaWdubWVudCAyMDIyLTA2LTAxXG4gKi9cbmV4cG9ydCBjb25zdCBQT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OXzIwMjJfMDZfMDE6IFZlcnNpb25Db25maWcgPSB7XG4gIHZlcnNpb246IFwiMjAyMi0wNi0wMVwiLFxuICBzY2hlbWE6IFBPTElDWV9BU1NJR05NRU5UX1NDSEVNQV8yMDIyXzA2XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICByZWxlYXNlRGF0ZTogXCIyMDIyLTA2LTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL3BvbGljeS1hc3NpZ25tZW50L21pZ3JhdGlvbi0yMDIyLTA2LTAxXCIsXG4gIGNoYW5nZUxvZzogW1xuICAgIHtcbiAgICAgIGNoYW5nZVR5cGU6IFwiYWRkZWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0YWJsZSByZWxlYXNlIG9mIFBvbGljeSBBc3NpZ25tZW50IEFQSSB3aXRoIGZ1bGwgc3VwcG9ydCBmb3IgZW5mb3JjZW1lbnQgbW9kZXMsIGlkZW50aXR5LCBhbmQgbm9uLWNvbXBsaWFuY2UgbWVzc2FnZXNcIixcbiAgICAgIGJyZWFraW5nOiBmYWxzZSxcbiAgICB9LFxuICBdLFxufTtcblxuLyoqXG4gKiBBbGwgc3VwcG9ydGVkIFBvbGljeSBBc3NpZ25tZW50IHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9QT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OUzogVmVyc2lvbkNvbmZpZ1tdID0gW1xuICBQT0xJQ1lfQVNTSUdOTUVOVF9WRVJTSU9OXzIwMjJfMDZfMDEsXG5dO1xuXG4vKipcbiAqIFJlc291cmNlIHR5cGUgY29uc3RhbnRcbiAqL1xuZXhwb3J0IGNvbnN0IFBPTElDWV9BU1NJR05NRU5UX1RZUEUgPVxuICBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3BvbGljeUFzc2lnbm1lbnRzXCI7XG4iXX0=