@microsoft/terraform-cdk-constructs 1.8.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +48328 -33656
- package/API.md +56123 -38995
- package/lib/azure-actiongroup/lib/action-group.d.ts +3 -3
- package/lib/azure-actiongroup/lib/action-group.js +5 -5
- package/lib/azure-actiongroup/test/action-group.integ.d.ts +1 -1
- package/lib/azure-actiongroup/test/action-group.integ.js +5 -5
- package/lib/azure-actiongroup/test/action-group.spec.js +9 -9
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +3 -3
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +5 -5
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +1 -1
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +6 -6
- package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +9 -9
- package/lib/azure-aks/lib/aks-cluster.d.ts +6 -6
- package/lib/azure-aks/lib/aks-cluster.js +8 -8
- package/lib/azure-aks/test/aks-cluster.integ.d.ts +1 -1
- package/lib/azure-aks/test/aks-cluster.integ.js +5 -5
- package/lib/azure-aks/test/aks-cluster.spec.js +12 -12
- package/lib/azure-containerapps/index.d.ts +1 -0
- package/lib/azure-containerapps/index.js +18 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
- package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
- package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
- package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
- package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
- package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
- package/lib/azure-containerapps/lib/container-app.js +320 -0
- package/lib/azure-containerapps/lib/index.d.ts +4 -0
- package/lib/azure-containerapps/lib/index.js +21 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
- package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app.integ.js +119 -0
- package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app.spec.js +839 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +3 -3
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +5 -5
- package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +7 -7
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +6 -6
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +6 -6
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +1 -1
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +5 -5
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +11 -11
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +14 -14
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +12 -12
- package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +8 -8
- package/lib/azure-dnsresolver/lib/dns-resolver.js +10 -10
- package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +6 -6
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +8 -8
- package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +7 -7
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +9 -9
- package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/dns-resolver.integ.js +5 -5
- package/lib/azure-dnsresolver/test/dns-resolver.spec.js +11 -11
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +12 -12
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +9 -9
- package/lib/azure-dnszone/lib/dns-zone.d.ts +6 -6
- package/lib/azure-dnszone/lib/dns-zone.js +8 -8
- package/lib/azure-dnszone/lib/records/dns-records.d.ts +31 -31
- package/lib/azure-dnszone/lib/records/dns-records.js +42 -42
- package/lib/azure-dnszone/test/dns-records.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-records.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-records.spec.js +57 -57
- package/lib/azure-dnszone/test/dns-zone.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-zone.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-zone.spec.js +11 -11
- package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
- package/lib/azure-loganalyticsworkspace/index.js +23 -0
- package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
- package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
- package/lib/azure-metricalert/lib/metric-alert.d.ts +3 -3
- package/lib/azure-metricalert/lib/metric-alert.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.integ.d.ts +1 -1
- package/lib/azure-metricalert/test/metric-alert.integ.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.spec.js +9 -9
- package/lib/azure-networkinterface/lib/network-interface.d.ts +5 -5
- package/lib/azure-networkinterface/lib/network-interface.js +7 -7
- package/lib/azure-networkinterface/test/network-interface.integ.d.ts +1 -1
- package/lib/azure-networkinterface/test/network-interface.integ.js +5 -5
- package/lib/azure-networkinterface/test/network-interface.spec.js +11 -11
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +6 -6
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +8 -8
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +1 -1
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +5 -5
- package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +12 -12
- package/lib/azure-networkwatcher/index.d.ts +14 -0
- package/lib/azure-networkwatcher/index.js +31 -0
- package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
- package/lib/azure-networkwatcher/lib/index.js +22 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
- package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
- package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
- package/lib/azure-policyassignment/lib/policy-assignment.d.ts +3 -3
- package/lib/azure-policyassignment/lib/policy-assignment.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +1 -1
- package/lib/azure-policyassignment/test/policy-assignment.integ.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.spec.js +12 -12
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +3 -3
- package/lib/azure-policydefinition/lib/policy-definition.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +1 -1
- package/lib/azure-policydefinition/test/policy-definition.integ.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.spec.js +19 -19
- package/lib/azure-policysetdefinition/index.d.ts +10 -0
- package/lib/azure-policysetdefinition/index.js +27 -0
- package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
- package/lib/azure-policysetdefinition/lib/index.js +22 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +10 -10
- package/lib/azure-privatednszone/lib/private-dns-zone.js +12 -12
- package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +25 -25
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +34 -34
- package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-records.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-records.spec.js +49 -49
- package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-zone.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-zone.spec.js +12 -12
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +6 -6
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +8 -8
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +1 -1
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +5 -5
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +12 -12
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +5 -5
- package/lib/azure-publicipaddress/lib/public-ip-address.js +7 -7
- package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +1 -1
- package/lib/azure-publicipaddress/test/public-ip-address.integ.js +6 -6
- package/lib/azure-publicipaddress/test/public-ip-address.spec.js +11 -11
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +5 -5
- package/lib/azure-resourcegroup/lib/resource-group.js +7 -7
- package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +1 -1
- package/lib/azure-resourcegroup/test/resource-group.integ.js +5 -5
- package/lib/azure-resourcegroup/test/resource-group.spec.js +14 -14
- package/lib/azure-roleassignment/lib/role-assignment.d.ts +3 -3
- package/lib/azure-roleassignment/lib/role-assignment.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +1 -1
- package/lib/azure-roleassignment/test/role-assignment.integ.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.spec.js +12 -12
- package/lib/azure-roledefinition/lib/role-definition.d.ts +3 -3
- package/lib/azure-roledefinition/lib/role-definition.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.integ.d.ts +1 -1
- package/lib/azure-roledefinition/test/role-definition.integ.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.spec.js +12 -12
- package/lib/azure-storageaccount/lib/storage-account.d.ts +6 -6
- package/lib/azure-storageaccount/lib/storage-account.js +8 -8
- package/lib/azure-storageaccount/test/storage-account.integ.d.ts +1 -1
- package/lib/azure-storageaccount/test/storage-account.integ.js +5 -5
- package/lib/azure-storageaccount/test/storage-account.spec.js +11 -11
- package/lib/azure-subnet/lib/subnet.d.ts +3 -3
- package/lib/azure-subnet/lib/subnet.js +5 -5
- package/lib/azure-subnet/test/subnet.integ.d.ts +1 -1
- package/lib/azure-subnet/test/subnet.integ.js +5 -5
- package/lib/azure-subnet/test/subnet.spec.js +9 -9
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +6 -6
- package/lib/azure-virtualmachine/lib/virtual-machine.js +8 -8
- package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +1 -1
- package/lib/azure-virtualmachine/test/virtual-machine.integ.js +5 -5
- package/lib/azure-virtualmachine/test/virtual-machine.spec.js +17 -17
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +6 -6
- package/lib/azure-virtualnetwork/lib/virtual-network.js +8 -8
- package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +1 -1
- package/lib/azure-virtualnetwork/test/virtual-network.integ.js +5 -5
- package/lib/azure-virtualnetwork/test/virtual-network.spec.js +12 -12
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +9 -7
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +13 -10
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +5 -5
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +119 -11
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +7 -7
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +20 -20
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +7 -7
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +9 -9
- package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +17 -17
- package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +15 -15
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +5 -5
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +57 -57
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +6 -6
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +8 -8
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +1 -1
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +5 -5
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +12 -12
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +7 -7
- package/lib/core-azure/lib/azapi/azapi-resource.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +7 -7
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +12 -12
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +15 -15
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +35 -35
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +58 -58
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +49 -49
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +13 -13
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +22 -22
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +24 -24
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +40 -40
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +44 -44
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +72 -72
- package/lib/core-azure/lib/azapi/providers-azapi/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +54 -54
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +86 -86
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +65 -65
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +102 -102
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +62 -62
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +36 -36
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +69 -69
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +12 -0
- package/lib/index.js +14 -2
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.js +8 -8
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +10 -22
- package/setup.js +2 -2
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* Run with: npm run integration:nostream
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
const
|
|
15
|
-
require("
|
|
14
|
+
const cdktn_1 = require("cdktn");
|
|
15
|
+
require("cdktn/lib/testing/adapters/jest");
|
|
16
16
|
const child_process_1 = require("child_process");
|
|
17
17
|
const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
|
|
18
18
|
const testing_1 = require("../../testing");
|
|
@@ -129,9 +129,9 @@ class RoleDefinitionExampleStack extends testing_1.BaseTestStack {
|
|
|
129
129
|
}
|
|
130
130
|
describe("Role Definition Integration Test", () => {
|
|
131
131
|
it("should deploy, validate idempotency, and cleanup role definition resources", () => {
|
|
132
|
-
const app =
|
|
132
|
+
const app = cdktn_1.Testing.app();
|
|
133
133
|
const stack = new RoleDefinitionExampleStack(app, "test-role-definition");
|
|
134
|
-
const synthesized =
|
|
134
|
+
const synthesized = cdktn_1.Testing.fullSynth(stack);
|
|
135
135
|
// This will:
|
|
136
136
|
// 1. Run terraform apply to deploy resources (custom role definitions)
|
|
137
137
|
// 2. Run terraform plan to check idempotency (no changes expected)
|
|
@@ -139,4 +139,4 @@ describe("Role Definition Integration Test", () => {
|
|
|
139
139
|
(0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
|
|
140
140
|
}, 600000); // 10 minute timeout for deployment and cleanup
|
|
141
141
|
});
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1kZWZpbml0aW9uLmludGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXJvbGVkZWZpbml0aW9uL3Rlc3Qvcm9sZS1kZWZpbml0aW9uLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOztBQUVILGlDQUFnQztBQUVoQywyQ0FBeUM7QUFDekMsaURBQXlDO0FBQ3pDLGtGQUFvRjtBQUNwRiwyQ0FBNkU7QUFDN0UseURBQTZEO0FBQzdELDREQUF3RDtBQUV4RCx3REFBd0Q7QUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLDZCQUE2QixFQUFFO0lBQ3RFLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLDBCQUEyQixTQUFRLHVCQUFhO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7YUFDMUM7U0FDRixDQUFDLENBQUM7UUFFSCwyQkFBMkI7UUFDM0IsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsNkVBQTZFO1FBQzdFLElBQUksY0FBc0IsQ0FBQztRQUMzQixJQUFJLENBQUM7WUFDSCxjQUFjO2dCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO29CQUMvQixJQUFBLHdCQUFRLEVBQUMsbUNBQW1DLEVBQUU7d0JBQzVDLFFBQVEsRUFBRSxPQUFPO3FCQUNsQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUlBQXVJLENBQ3hJLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsY0FBYyxFQUFFLENBQUM7UUFFN0Qsa0VBQWtFO1FBQ2xFLHFFQUFxRTtRQUNyRSxpRUFBaUU7UUFDakUsdUVBQXVFO1FBQ3ZFLDBCQUEwQjtRQUUxQix3REFBd0Q7UUFDeEQsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUN6QyxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLFdBQVcsRUFDVCwrRUFBK0U7WUFDakYsSUFBSSxFQUFFLFlBQVk7WUFDbEIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLE9BQU8sRUFBRTt3QkFDUCx3Q0FBd0M7d0JBQ3hDLHFEQUFxRDt3QkFDckQsOEJBQThCO3dCQUM5QixrQ0FBa0M7d0JBQ2xDLDBDQUEwQzt3QkFDMUMsMENBQTBDO3FCQUMzQztvQkFDRCxVQUFVLEVBQUUsRUFBRTtvQkFDZCxXQUFXLEVBQUUsRUFBRTtvQkFDZixjQUFjLEVBQUUsRUFBRTtpQkFDbkI7YUFDRjtZQUNELGdCQUFnQixFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDckMsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCx5RUFBeUU7UUFDekUsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUNoRCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFdBQVcsRUFDVCxrRkFBa0Y7WUFDcEYsSUFBSSxFQUFFLFlBQVk7WUFDbEIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLGtEQUFrRDtvQkFDbEQsT0FBTyxFQUFFO3dCQUNQLHdDQUF3Qzt3QkFDeEMseUNBQXlDO3dCQUN6QyxtREFBbUQ7d0JBQ25ELHdEQUF3RDt3QkFDeEQsZ0VBQWdFO3dCQUNoRSxpRUFBaUU7cUJBQ2xFO29CQUNELG9DQUFvQztvQkFDcEMsVUFBVSxFQUFFO3dCQUNWLDBDQUEwQzt3QkFDMUMsa0VBQWtFO3FCQUNuRTtvQkFDRCw0Q0FBNEM7b0JBQzVDLFdBQVcsRUFBRTt3QkFDWCxzRUFBc0U7d0JBQ3RFLHVFQUF1RTt3QkFDdkUsNEVBQTRFO3FCQUM3RTtvQkFDRCxrREFBa0Q7b0JBQ2xELGNBQWMsRUFBRTt3QkFDZCx3RUFBd0U7cUJBQ3pFO2lCQUNGO2FBQ0Y7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsaUJBQWlCO2dCQUNqQiwrQ0FBK0M7Z0JBQy9DLEdBQUcsaUJBQWlCLDRCQUE0QjthQUNqRDtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixPQUFPLEVBQUUsb0JBQW9CO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxFQUFFLENBQUMsNEVBQTRFLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsYUFBYTtRQUNiLHVFQUF1RTtRQUN2RSxtRUFBbUU7UUFDbkUsZ0RBQWdEO1FBQ2hELElBQUEsdUNBQTZCLEVBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsK0NBQStDO0FBQzdELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IGZvciBBenVyZSBSb2xlIERlZmluaXRpb25cbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBSb2xlRGVmaW5pdGlvbiBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICpcbiAqIFRoZSB0ZXN0IGNyZWF0ZXMgY3VzdG9tIFJCQUMgcm9sZXMgd2l0aCB2YXJpb3VzIHBlcm1pc3Npb24gY29uZmlndXJhdGlvbnNcbiAqIGF0IHN1YnNjcmlwdGlvbiBzY29wZS5cbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0Zi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBSb2xlRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9saWIvcm9sZS1kZWZpbml0aW9uXCI7XG5cbi8vIEdlbmVyYXRlIHVuaXF1ZSB0ZXN0IHJ1biBtZXRhZGF0YSBmb3IgdGhpcyB0ZXN0IHN1aXRlXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwicm9sZS1kZWZpbml0aW9uLWludGVncmF0aW9uXCIsIHtcbiAgbWF4QWdlSG91cnM6IDQsXG59KTtcblxuLyoqXG4gKiBFeGFtcGxlIHN0YWNrIGRlbW9uc3RyYXRpbmcgUm9sZSBEZWZpbml0aW9uIHVzYWdlXG4gKi9cbmNsYXNzIFJvbGVEZWZpbml0aW9uRXhhbXBsZVN0YWNrIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlc3RSdW5PcHRpb25zOiB7XG4gICAgICAgIG1heEFnZUhvdXJzOiB0ZXN0TWV0YWRhdGEubWF4QWdlSG91cnMsXG4gICAgICAgIGF1dG9DbGVhbnVwOiB0ZXN0TWV0YWRhdGEuYXV0b0NsZWFudXAsXG4gICAgICAgIGNsZWFudXBQb2xpY3k6IHRlc3RNZXRhZGF0YS5jbGVhbnVwUG9saWN5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZHluYW1pY2FsbHkgZnJvbSBBenVyZSBDTEkgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICBsZXQgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgc3Vic2NyaXB0aW9uSWQgPVxuICAgICAgICBwcm9jZXNzLmVudi5BUk1fU1VCU0NSSVBUSU9OX0lEIHx8XG4gICAgICAgIGV4ZWNTeW5jKFwiYXogYWNjb3VudCBzaG93IC0tcXVlcnkgaWQgLW8gdHN2XCIsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICB9KS50cmltKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJGYWlsZWQgdG8gZ2V0IEF6dXJlIHN1YnNjcmlwdGlvbiBJRC4gUGxlYXNlIGVuc3VyZSB5b3UgYXJlIGxvZ2dlZCBpbiB3aXRoICdheiBsb2dpbicgb3Igc2V0IEFSTV9TVUJTQ1JJUFRJT05fSUQgZW52aXJvbm1lbnQgdmFyaWFibGUuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzdWJzY3JpcHRpb25TY29wZSA9IGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbklkfWA7XG5cbiAgICAvLyBOb3RlOiBSb2xlIGRlZmluaXRpb24gSURzIGFyZSBhdXRvLWdlbmVyYXRlZCBhcyBHVUlEcyBieSBBenVyZS5cbiAgICAvLyBUaGUgJ25hbWUnIHBhcmFtZXRlciBpcyBub3QgbmVlZGVkIC0gQXp1cmUgdXNlcyBndWlkKCkgdG8gZ2VuZXJhdGVcbiAgICAvLyBkZXRlcm1pbmlzdGljIElEcyBiYXNlZCBvbiBkZXBsb3ltZW50IGNvbnRleHQgZm9yIGlkZW1wb3RlbmN5LlxuICAgIC8vIFVzZSAncm9sZU5hbWUnIGZvciB0aGUgaHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIGFuZCAnZGVzY3JpcHRpb24nXG4gICAgLy8gZm9yIGFkZGl0aW9uYWwgY29udGV4dC5cblxuICAgIC8vIEV4YW1wbGUgMTogQmFzaWMgcmVhZC1vbmx5IHJvbGUgZm9yIGNvbXB1dGUgcmVzb3VyY2VzXG4gICAgbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwidm0tcmVhZGVyLXJvbGVcIiwge1xuICAgICAgcm9sZU5hbWU6IFwiVmlydHVhbCBNYWNoaW5lIFJlYWRlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQ2FuIHZpZXcgdmlydHVhbCBtYWNoaW5lcyBhbmQgdGhlaXIgcHJvcGVydGllcyBidXQgY2Fubm90IHBlcmZvcm0gYW55IGFjdGlvbnNcIixcbiAgICAgIHR5cGU6IFwiQ3VzdG9tUm9sZVwiLFxuICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2luc3RhbmNlVmlldy9yZWFkXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5Db21wdXRlL2Rpc2tzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvc25hcHNob3RzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya0ludGVyZmFjZXMvcmVhZFwiLFxuICAgICAgICAgICAgXCJNaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9yZWFkXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBub3RBY3Rpb25zOiBbXSxcbiAgICAgICAgICBkYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgbm90RGF0YUFjdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtzdWJzY3JpcHRpb25TY29wZV0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICAgIHB1cnBvc2U6IFwicmVhZC1vbmx5LWNvbXB1dGVcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDI6IEFkdmFuY2VkIHJvbGUgd2l0aCBjb250cm9sIHBsYW5lIGFuZCBkYXRhIHBsYW5lIHBlcm1pc3Npb25zXG4gICAgbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwic3RvcmFnZS1vcGVyYXRvci1yb2xlXCIsIHtcbiAgICAgIHJvbGVOYW1lOiBcIlN0b3JhZ2UgT3BlcmF0b3JcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkNhbiBtYW5hZ2Ugc3RvcmFnZSBhY2NvdW50cyBhbmQgcmVhZC93cml0ZSBibG9iIGRhdGEgYnV0IGNhbm5vdCBkZWxldGUgcmVzb3VyY2VzXCIsXG4gICAgICB0eXBlOiBcIkN1c3RvbVJvbGVcIixcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBDb250cm9sIHBsYW5lIGFjdGlvbnMgLSBtYW5hZ2Ugc3RvcmFnZSBhY2NvdW50c1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3dyaXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9saXN0a2V5cy9hY3Rpb25cIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlZ2VuZXJhdGVrZXkvYWN0aW9uXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9yZWFkXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy93cml0ZVwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgLy8gRXhwbGljaXRseSBkZW55IGRlbGV0ZSBvcGVyYXRpb25zXG4gICAgICAgICAgbm90QWN0aW9uczogW1xuICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvZGVsZXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9kZWxldGVcIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIC8vIERhdGEgcGxhbmUgYWN0aW9ucyAtIHJlYWQgYW5kIHdyaXRlIGJsb2JzXG4gICAgICAgICAgZGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3dyaXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9hZGQvYWN0aW9uXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBFeHBsaWNpdGx5IGRlbnkgZGVsZXRlIG9wZXJhdGlvbnMgb24gZGF0YSBwbGFuZVxuICAgICAgICAgIG5vdERhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9kZWxldGVcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICAgIC8vIENhbiBhbHNvIGJlIGFzc2lnbmVkIGF0IHJlc291cmNlIGdyb3VwIGxldmVsXG4gICAgICAgIGAke3N1YnNjcmlwdGlvblNjb3BlfS9yZXNvdXJjZUdyb3Vwcy9zdG9yYWdlLXJnYCxcbiAgICAgIF0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImFkdmFuY2VkXCIsXG4gICAgICAgIHB1cnBvc2U6IFwic3RvcmFnZS1vcGVyYXRpb25zXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUm9sZSBEZWZpbml0aW9uIEludGVncmF0aW9uIFRlc3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBkZXBsb3ksIHZhbGlkYXRlIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cCByb2xlIGRlZmluaXRpb24gcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFJvbGVEZWZpbml0aW9uRXhhbXBsZVN0YWNrKGFwcCwgXCJ0ZXN0LXJvbGUtZGVmaW5pdGlvblwiKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKGN1c3RvbSByb2xlIGRlZmluaXRpb25zKVxuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCwgeyB2ZXJpZnlDbGVhbnVwOiB0cnVlIH0pO1xuICB9LCA2MDAwMDApOyAvLyAxMCBtaW51dGUgdGltZW91dCBmb3IgZGVwbG95bWVudCBhbmQgY2xlYW51cFxufSk7XG4iXX0=
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1kZWZpbml0aW9uLmludGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXJvbGVkZWZpbml0aW9uL3Rlc3Qvcm9sZS1kZWZpbml0aW9uLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7OztHQVVHOztBQUVILGlDQUFnQztBQUVoQywyQ0FBeUM7QUFDekMsaURBQXlDO0FBQ3pDLGtGQUFvRjtBQUNwRiwyQ0FBNkU7QUFDN0UseURBQTZEO0FBQzdELDREQUF3RDtBQUV4RCx3REFBd0Q7QUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLDZCQUE2QixFQUFFO0lBQ3RFLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLDBCQUEyQixTQUFRLHVCQUFhO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7YUFDMUM7U0FDRixDQUFDLENBQUM7UUFFSCwyQkFBMkI7UUFDM0IsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsNkVBQTZFO1FBQzdFLElBQUksY0FBc0IsQ0FBQztRQUMzQixJQUFJLENBQUM7WUFDSCxjQUFjO2dCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO29CQUMvQixJQUFBLHdCQUFRLEVBQUMsbUNBQW1DLEVBQUU7d0JBQzVDLFFBQVEsRUFBRSxPQUFPO3FCQUNsQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUlBQXVJLENBQ3hJLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsY0FBYyxFQUFFLENBQUM7UUFFN0Qsa0VBQWtFO1FBQ2xFLHFFQUFxRTtRQUNyRSxpRUFBaUU7UUFDakUsdUVBQXVFO1FBQ3ZFLDBCQUEwQjtRQUUxQix3REFBd0Q7UUFDeEQsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUN6QyxRQUFRLEVBQUUsd0JBQXdCO1lBQ2xDLFdBQVcsRUFDVCwrRUFBK0U7WUFDakYsSUFBSSxFQUFFLFlBQVk7WUFDbEIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLE9BQU8sRUFBRTt3QkFDUCx3Q0FBd0M7d0JBQ3hDLHFEQUFxRDt3QkFDckQsOEJBQThCO3dCQUM5QixrQ0FBa0M7d0JBQ2xDLDBDQUEwQzt3QkFDMUMsMENBQTBDO3FCQUMzQztvQkFDRCxVQUFVLEVBQUUsRUFBRTtvQkFDZCxXQUFXLEVBQUUsRUFBRTtvQkFDZixjQUFjLEVBQUUsRUFBRTtpQkFDbkI7YUFDRjtZQUNELGdCQUFnQixFQUFFLENBQUMsaUJBQWlCLENBQUM7WUFDckMsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7YUFDN0I7U0FDRixDQUFDLENBQUM7UUFFSCx5RUFBeUU7UUFDekUsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUNoRCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFdBQVcsRUFDVCxrRkFBa0Y7WUFDcEYsSUFBSSxFQUFFLFlBQVk7WUFDbEIsV0FBVyxFQUFFO2dCQUNYO29CQUNFLGtEQUFrRDtvQkFDbEQsT0FBTyxFQUFFO3dCQUNQLHdDQUF3Qzt3QkFDeEMseUNBQXlDO3dCQUN6QyxtREFBbUQ7d0JBQ25ELHdEQUF3RDt3QkFDeEQsZ0VBQWdFO3dCQUNoRSxpRUFBaUU7cUJBQ2xFO29CQUNELG9DQUFvQztvQkFDcEMsVUFBVSxFQUFFO3dCQUNWLDBDQUEwQzt3QkFDMUMsa0VBQWtFO3FCQUNuRTtvQkFDRCw0Q0FBNEM7b0JBQzVDLFdBQVcsRUFBRTt3QkFDWCxzRUFBc0U7d0JBQ3RFLHVFQUF1RTt3QkFDdkUsNEVBQTRFO3FCQUM3RTtvQkFDRCxrREFBa0Q7b0JBQ2xELGNBQWMsRUFBRTt3QkFDZCx3RUFBd0U7cUJBQ3pFO2lCQUNGO2FBQ0Y7WUFDRCxnQkFBZ0IsRUFBRTtnQkFDaEIsaUJBQWlCO2dCQUNqQiwrQ0FBK0M7Z0JBQy9DLEdBQUcsaUJBQWlCLDRCQUE0QjthQUNqRDtZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixPQUFPLEVBQUUsb0JBQW9CO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxFQUFFLENBQUMsNEVBQTRFLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsYUFBYTtRQUNiLHVFQUF1RTtRQUN2RSxtRUFBbUU7UUFDbkUsZ0RBQWdEO1FBQ2hELElBQUEsdUNBQTZCLEVBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsK0NBQStDO0FBQzdELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBJbnRlZ3JhdGlvbiB0ZXN0IGZvciBBenVyZSBSb2xlIERlZmluaXRpb25cbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBSb2xlRGVmaW5pdGlvbiBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICpcbiAqIFRoZSB0ZXN0IGNyZWF0ZXMgY3VzdG9tIFJCQUMgcm9sZXMgd2l0aCB2YXJpb3VzIHBlcm1pc3Npb24gY29uZmlndXJhdGlvbnNcbiAqIGF0IHN1YnNjcmlwdGlvbiBzY29wZS5cbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0bi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBSb2xlRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9saWIvcm9sZS1kZWZpbml0aW9uXCI7XG5cbi8vIEdlbmVyYXRlIHVuaXF1ZSB0ZXN0IHJ1biBtZXRhZGF0YSBmb3IgdGhpcyB0ZXN0IHN1aXRlXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwicm9sZS1kZWZpbml0aW9uLWludGVncmF0aW9uXCIsIHtcbiAgbWF4QWdlSG91cnM6IDQsXG59KTtcblxuLyoqXG4gKiBFeGFtcGxlIHN0YWNrIGRlbW9uc3RyYXRpbmcgUm9sZSBEZWZpbml0aW9uIHVzYWdlXG4gKi9cbmNsYXNzIFJvbGVEZWZpbml0aW9uRXhhbXBsZVN0YWNrIGV4dGVuZHMgQmFzZVRlc3RTdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHRlc3RSdW5PcHRpb25zOiB7XG4gICAgICAgIG1heEFnZUhvdXJzOiB0ZXN0TWV0YWRhdGEubWF4QWdlSG91cnMsXG4gICAgICAgIGF1dG9DbGVhbnVwOiB0ZXN0TWV0YWRhdGEuYXV0b0NsZWFudXAsXG4gICAgICAgIGNsZWFudXBQb2xpY3k6IHRlc3RNZXRhZGF0YS5jbGVhbnVwUG9saWN5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZHluYW1pY2FsbHkgZnJvbSBBenVyZSBDTEkgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVcbiAgICBsZXQgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgc3Vic2NyaXB0aW9uSWQgPVxuICAgICAgICBwcm9jZXNzLmVudi5BUk1fU1VCU0NSSVBUSU9OX0lEIHx8XG4gICAgICAgIGV4ZWNTeW5jKFwiYXogYWNjb3VudCBzaG93IC0tcXVlcnkgaWQgLW8gdHN2XCIsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICB9KS50cmltKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJGYWlsZWQgdG8gZ2V0IEF6dXJlIHN1YnNjcmlwdGlvbiBJRC4gUGxlYXNlIGVuc3VyZSB5b3UgYXJlIGxvZ2dlZCBpbiB3aXRoICdheiBsb2dpbicgb3Igc2V0IEFSTV9TVUJTQ1JJUFRJT05fSUQgZW52aXJvbm1lbnQgdmFyaWFibGUuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBzdWJzY3JpcHRpb25TY29wZSA9IGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbklkfWA7XG5cbiAgICAvLyBOb3RlOiBSb2xlIGRlZmluaXRpb24gSURzIGFyZSBhdXRvLWdlbmVyYXRlZCBhcyBHVUlEcyBieSBBenVyZS5cbiAgICAvLyBUaGUgJ25hbWUnIHBhcmFtZXRlciBpcyBub3QgbmVlZGVkIC0gQXp1cmUgdXNlcyBndWlkKCkgdG8gZ2VuZXJhdGVcbiAgICAvLyBkZXRlcm1pbmlzdGljIElEcyBiYXNlZCBvbiBkZXBsb3ltZW50IGNvbnRleHQgZm9yIGlkZW1wb3RlbmN5LlxuICAgIC8vIFVzZSAncm9sZU5hbWUnIGZvciB0aGUgaHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIGFuZCAnZGVzY3JpcHRpb24nXG4gICAgLy8gZm9yIGFkZGl0aW9uYWwgY29udGV4dC5cblxuICAgIC8vIEV4YW1wbGUgMTogQmFzaWMgcmVhZC1vbmx5IHJvbGUgZm9yIGNvbXB1dGUgcmVzb3VyY2VzXG4gICAgbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwidm0tcmVhZGVyLXJvbGVcIiwge1xuICAgICAgcm9sZU5hbWU6IFwiVmlydHVhbCBNYWNoaW5lIFJlYWRlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQ2FuIHZpZXcgdmlydHVhbCBtYWNoaW5lcyBhbmQgdGhlaXIgcHJvcGVydGllcyBidXQgY2Fubm90IHBlcmZvcm0gYW55IGFjdGlvbnNcIixcbiAgICAgIHR5cGU6IFwiQ3VzdG9tUm9sZVwiLFxuICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2luc3RhbmNlVmlldy9yZWFkXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5Db21wdXRlL2Rpc2tzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvc25hcHNob3RzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya0ludGVyZmFjZXMvcmVhZFwiLFxuICAgICAgICAgICAgXCJNaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9yZWFkXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBub3RBY3Rpb25zOiBbXSxcbiAgICAgICAgICBkYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgbm90RGF0YUFjdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtzdWJzY3JpcHRpb25TY29wZV0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICAgIHB1cnBvc2U6IFwicmVhZC1vbmx5LWNvbXB1dGVcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDI6IEFkdmFuY2VkIHJvbGUgd2l0aCBjb250cm9sIHBsYW5lIGFuZCBkYXRhIHBsYW5lIHBlcm1pc3Npb25zXG4gICAgbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwic3RvcmFnZS1vcGVyYXRvci1yb2xlXCIsIHtcbiAgICAgIHJvbGVOYW1lOiBcIlN0b3JhZ2UgT3BlcmF0b3JcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkNhbiBtYW5hZ2Ugc3RvcmFnZSBhY2NvdW50cyBhbmQgcmVhZC93cml0ZSBibG9iIGRhdGEgYnV0IGNhbm5vdCBkZWxldGUgcmVzb3VyY2VzXCIsXG4gICAgICB0eXBlOiBcIkN1c3RvbVJvbGVcIixcbiAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBDb250cm9sIHBsYW5lIGFjdGlvbnMgLSBtYW5hZ2Ugc3RvcmFnZSBhY2NvdW50c1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3dyaXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9saXN0a2V5cy9hY3Rpb25cIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlZ2VuZXJhdGVrZXkvYWN0aW9uXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9yZWFkXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy93cml0ZVwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgLy8gRXhwbGljaXRseSBkZW55IGRlbGV0ZSBvcGVyYXRpb25zXG4gICAgICAgICAgbm90QWN0aW9uczogW1xuICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvZGVsZXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9kZWxldGVcIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIC8vIERhdGEgcGxhbmUgYWN0aW9ucyAtIHJlYWQgYW5kIHdyaXRlIGJsb2JzXG4gICAgICAgICAgZGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3dyaXRlXCIsXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9hZGQvYWN0aW9uXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICAvLyBFeHBsaWNpdGx5IGRlbnkgZGVsZXRlIG9wZXJhdGlvbnMgb24gZGF0YSBwbGFuZVxuICAgICAgICAgIG5vdERhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9kZWxldGVcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICAgIC8vIENhbiBhbHNvIGJlIGFzc2lnbmVkIGF0IHJlc291cmNlIGdyb3VwIGxldmVsXG4gICAgICAgIGAke3N1YnNjcmlwdGlvblNjb3BlfS9yZXNvdXJjZUdyb3Vwcy9zdG9yYWdlLXJnYCxcbiAgICAgIF0sXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBleGFtcGxlOiBcImFkdmFuY2VkXCIsXG4gICAgICAgIHB1cnBvc2U6IFwic3RvcmFnZS1vcGVyYXRpb25zXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUm9sZSBEZWZpbml0aW9uIEludGVncmF0aW9uIFRlc3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBkZXBsb3ksIHZhbGlkYXRlIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cCByb2xlIGRlZmluaXRpb24gcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFJvbGVEZWZpbml0aW9uRXhhbXBsZVN0YWNrKGFwcCwgXCJ0ZXN0LXJvbGUtZGVmaW5pdGlvblwiKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKGN1c3RvbSByb2xlIGRlZmluaXRpb25zKVxuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCwgeyB2ZXJpZnlDbGVhbnVwOiB0cnVlIH0pO1xuICB9LCA2MDAwMDApOyAvLyAxMCBtaW51dGUgdGltZW91dCBmb3IgZGVwbG95bWVudCBhbmQgY2xlYW51cFxufSk7XG4iXX0=
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* role definition-specific functionality.
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const cdktn_1 = require("cdktn");
|
|
12
|
+
const cdktn = require("cdktn");
|
|
13
13
|
const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
|
|
14
14
|
const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
|
|
15
15
|
const role_definition_1 = require("../lib/role-definition");
|
|
@@ -19,8 +19,8 @@ describe("RoleDefinition - Unified Implementation", () => {
|
|
|
19
19
|
let stack;
|
|
20
20
|
let manager;
|
|
21
21
|
beforeEach(() => {
|
|
22
|
-
app =
|
|
23
|
-
stack = new
|
|
22
|
+
app = cdktn_1.Testing.app();
|
|
23
|
+
stack = new cdktn.TerraformStack(app, "TestStack");
|
|
24
24
|
manager = api_version_manager_1.ApiVersionManager.instance();
|
|
25
25
|
// Ensure Role Definition schemas are registered
|
|
26
26
|
try {
|
|
@@ -417,8 +417,8 @@ describe("RoleDefinition - Unified Implementation", () => {
|
|
|
417
417
|
"/subscriptions/00000000-0000-0000-0000-000000000000",
|
|
418
418
|
],
|
|
419
419
|
});
|
|
420
|
-
expect(roleDefinition.idOutput).toBeInstanceOf(
|
|
421
|
-
expect(roleDefinition.nameOutput).toBeInstanceOf(
|
|
420
|
+
expect(roleDefinition.idOutput).toBeInstanceOf(cdktn.TerraformOutput);
|
|
421
|
+
expect(roleDefinition.nameOutput).toBeInstanceOf(cdktn.TerraformOutput);
|
|
422
422
|
});
|
|
423
423
|
});
|
|
424
424
|
describe("Permissions Configuration", () => {
|
|
@@ -864,13 +864,13 @@ describe("RoleDefinition - Unified Implementation", () => {
|
|
|
864
864
|
"/subscriptions/00000000-0000-0000-0000-000000000000",
|
|
865
865
|
],
|
|
866
866
|
});
|
|
867
|
-
const synthesized =
|
|
867
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
868
868
|
expect(synthesized).toBeDefined();
|
|
869
869
|
const stackConfig = JSON.parse(synthesized);
|
|
870
870
|
expect(stackConfig.resource).toBeDefined();
|
|
871
871
|
});
|
|
872
872
|
it("should work in complex CDK constructs", () => {
|
|
873
|
-
class ComplexConstruct extends
|
|
873
|
+
class ComplexConstruct extends cdktn.TerraformStack {
|
|
874
874
|
constructor(scope, id) {
|
|
875
875
|
super(scope, id);
|
|
876
876
|
const role1 = new role_definition_1.RoleDefinition(this, "Role1", {
|
|
@@ -898,10 +898,10 @@ describe("RoleDefinition - Unified Implementation", () => {
|
|
|
898
898
|
],
|
|
899
899
|
apiVersion: "2022-04-01",
|
|
900
900
|
});
|
|
901
|
-
new
|
|
901
|
+
new cdktn.TerraformOutput(this, "Role1Id", {
|
|
902
902
|
value: role1.id,
|
|
903
903
|
});
|
|
904
|
-
new
|
|
904
|
+
new cdktn.TerraformOutput(this, "Role2Id", {
|
|
905
905
|
value: role2.id,
|
|
906
906
|
});
|
|
907
907
|
}
|
|
@@ -938,9 +938,9 @@ describe("RoleDefinition - Unified Implementation", () => {
|
|
|
938
938
|
});
|
|
939
939
|
expect(role1.resolvedApiVersion).toBe("2022-04-01");
|
|
940
940
|
expect(role2.resolvedApiVersion).toBe("2022-04-01");
|
|
941
|
-
const synthesized =
|
|
941
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
942
942
|
expect(synthesized).toBeDefined();
|
|
943
943
|
});
|
|
944
944
|
});
|
|
945
945
|
});
|
|
946
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1kZWZpbml0aW9uLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWRlZmluaXRpb24vdGVzdC9yb2xlLWRlZmluaXRpb24uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsNERBQTZFO0FBQzdFLDRFQUd3QztBQUV4QyxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO0lBQ3ZELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLDhDQUFvQixFQUNwQixzREFBNEIsQ0FDN0IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLHdFQUF3RSxFQUFFLEdBQUcsRUFBRTtZQUNoRixNQUFNLEtBQUssR0FBd0I7Z0JBQ2pDLElBQUksRUFBRSxXQUFXO2dCQUNqQixRQUFRLEVBQUUsV0FBVztnQkFDckIsV0FBVyxFQUFFO29CQUNYO3dCQUNFLE9BQU8sRUFBRSxDQUFDLHdDQUF3QyxDQUFDO3dC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QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFcEQsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21wcmVoZW5zaXZlIHRlc3RzIGZvciB0aGUgdW5pZmllZCBSb2xlRGVmaW5pdGlvbiBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIHVuaWZpZWQgUm9sZURlZmluaXRpb24gY2xhc3MgdGhhdCB1c2VzXG4gKiB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsuIFRlc3RzIGNvdmVyIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb24sXG4gKiBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcsIHNjaGVtYSB2YWxpZGF0aW9uLCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiwgYW5kXG4gKiByb2xlIGRlZmluaXRpb24tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IEFwaVZlcnNpb25NYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9hcGktdmVyc2lvbi1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBWZXJzaW9uU3VwcG9ydExldmVsIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUm9sZURlZmluaXRpb24sIFJvbGVEZWZpbml0aW9uUHJvcHMgfSBmcm9tIFwiLi4vbGliL3JvbGUtZGVmaW5pdGlvblwiO1xuaW1wb3J0IHtcbiAgQUxMX1JPTEVfREVGSU5JVElPTl9WRVJTSU9OUyxcbiAgUk9MRV9ERUZJTklUSU9OX1RZUEUsXG59IGZyb20gXCIuLi9saWIvcm9sZS1kZWZpbml0aW9uLXNjaGVtYXNcIjtcblxuZGVzY3JpYmUoXCJSb2xlRGVmaW5pdGlvbiAtIFVuaWZpZWQgSW1wbGVtZW50YXRpb25cIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBBcGlWZXJzaW9uTWFuYWdlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gICAgbWFuYWdlciA9IEFwaVZlcnNpb25NYW5hZ2VyLmluc3RhbmNlKCk7XG5cbiAgICAvLyBFbnN1cmUgUm9sZSBEZWZpbml0aW9uIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWRcbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgUk9MRV9ERUZJTklUSU9OX1RZUEUsXG4gICAgICAgIEFMTF9ST0xFX0RFRklOSVRJT05fVkVSU0lPTlMsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZ25vcmUgaWYgYWxyZWFkeSByZWdpc3RlcmVkXG4gICAgfVxuICB9KTtcblxuICBkZXNjcmliZShcIkNvbnN0cnVjdG9yIGFuZCBCYXNpYyBQcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcm9sZSBkZWZpbml0aW9uIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJvbGVEZWZpbml0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW10sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZUluc3RhbmNlT2YoUm9sZURlZmluaXRpb24pO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7IC8vIExhdGVzdCB2ZXJzaW9uXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgLy8gTmFtZSBpcyBhIGRldGVybWluaXN0aWMgVVVJRCBiYXNlZCBvbiByb2xlTmFtZSBhbmQgYXNzaWduYWJsZVNjb3Blc1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLm5hbWUpLnRvTWF0Y2goXG4gICAgICAgIC9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JC8sXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJvbGUgZGVmaW5pdGlvbiB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUm9sZURlZmluaXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGUtcGlubmVkXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGUgUGlubmVkXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA0LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJvbGUgZGVmaW5pdGlvbiB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSb2xlRGVmaW5pdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZS1mdWxsXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZSBGdWxsXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgY29tcHJlaGVuc2l2ZSB0ZXN0IHJvbGUgZm9yIHVuaXQgdGVzdGluZ1wiLFxuICAgICAgICB0eXBlOiBcIkN1c3RvbVJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIixcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvc3RhcnQvYWN0aW9uXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2RlbGV0ZVwiXSxcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlTWlncmF0aW9uQW5hbHlzaXM6IHRydWUsXG4gICAgICAgIGVuYWJsZVRyYW5zZm9ybWF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucm9sZU5hbWUpLnRvQmUoXCJUZXN0IFJvbGUgRnVsbFwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJBIGNvbXByZWhlbnNpdmUgdGVzdCByb2xlIGZvciB1bml0IHRlc3RpbmdcIixcbiAgICAgICk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMudHlwZSkudG9CZShcIkN1c3RvbVJvbGVcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3BlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZ2VuZXJhdGUgZGV0ZXJtaW5pc3RpYyBVVUlEIG5hbWUgd2hlbiBuYW1lIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUm9sZURlZmluaXRpb25Qcm9wcyA9IHtcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIC8vIE5hbWUgaXMgYSBkZXRlcm1pbmlzdGljIFVVSUQsIG5vdCB0aGUgY29uc3RydWN0IElEXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubmFtZSkudG9NYXRjaChcbiAgICAgICAgL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kLyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIHJvbGVOYW1lIHRvIGJlIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwgcHJvcHMpO1xuICAgICAgfSkudG9UaHJvdyhcIlJlcXVpcmVkIHByb3BlcnR5ICdyb2xlTmFtZScgaXMgbWlzc2luZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlcXVpcmUgcGVybWlzc2lvbnMgdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IGFueSA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHByb3BzKTtcbiAgICAgIH0pLnRvVGhyb3coXCJSZXF1aXJlZCBwcm9wZXJ0eSAncGVybWlzc2lvbnMnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIGFzc2lnbmFibGVTY29wZXMgdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IGFueSA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiUmVxdWlyZWQgcHJvcGVydHkgJ2Fzc2lnbmFibGVTY29wZXMnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRnJhbWV3b3JrIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZXNvbHZlIGxhdGVzdCBBUEkgdmVyc2lvbiBhdXRvbWF0aWNhbGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWxsIHJlZ2lzdGVyZWQgQVBJIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSByb2xlRGVmaW5pdGlvbi5zdXBwb3J0ZWRWZXJzaW9ucygpO1xuICAgICAgZXhwZWN0KHN1cHBvcnRlZFZlcnNpb25zKS50b0NvbnRhaW4oXCIyMDIyLTA0LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgdmVyc2lvbiBzdXBwb3J0XCIsICgpID0+IHtcbiAgICAgIC8vIFZhbGlkIHZlcnNpb25cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJWYWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG5cbiAgICAgIC8vIEludmFsaWQgdmVyc2lvblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIkludmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjAtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjAtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24uc2NoZW1hKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoUk9MRV9ERUZJTklUSU9OX1RZUEUpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnNjaGVtYS52ZXJzaW9uKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5zY2hlbWEucHJvcGVydGllcykudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGxvYWQgdmVyc2lvbiBjb25maWd1cmF0aW9uIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZlcnNpb25Db25maWcudmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24udmVyc2lvbkNvbmZpZy5zdXBwb3J0TGV2ZWwpLnRvQmUoXG4gICAgICAgIFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcm9wZXJ0eSBWYWxpZGF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIHdoZW4gdmFsaWRhdGlvbiBpcyBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSb2xlRGVmaW5pdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSB2YWxpZGF0aW9uIHJlc3VsdHMgZm9yIHZhbGlkIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwge1xuICAgICAgICBuYW1lOiBcInZhbGlkLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVmFsaWQgUm9sZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHZhbGlkIHJvbGUgZGVmaW5pdGlvblwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi52YWxpZGF0aW9uUmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQhLnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQhLmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2tpcCB2YWxpZGF0aW9uIHdoZW4gZGlzYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIk1pZ3JhdGlvbiBBbmFseXNpc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc2tpcCBtaWdyYXRpb24gYW5hbHlzaXMgZm9yIHNpbmdsZSB2ZXJzaW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNpbmNlIHRoZXJlJ3Mgb25seSBvbmUgdmVyc2lvbiwgbWlncmF0aW9uIGFuYWx5c2lzIHNob3VsZCBiZSBza2lwcGVkXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIG1pZ3JhdGlvbiBhbmFseXNpcyB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubWlncmF0aW9uQW5hbHlzaXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSZXNvdXJjZSBDcmVhdGlvbiBhbmQgQm9keVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNvcnJlY3QgcmVzb3VyY2UgYm9keSB3aXRoIG1pbmltYWwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5yb2xlTmFtZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9ucykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5hc3NpZ25hYmxlU2NvcGVzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNvcnJlY3QgcmVzb3VyY2UgYm9keSB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCByb2xlIGRlZmluaXRpb25cIixcbiAgICAgICAgdHlwZTogXCJDdXN0b21Sb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgICBub3RBY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvZGVsZXRlXCJdLFxuICAgICAgICAgICAgZGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvYmxvYlNlcnZpY2VzL2NvbnRhaW5lcnMvYmxvYnMvcmVhZFwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG5vdERhdGFBY3Rpb25zOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnJvbGVOYW1lKS50b0JlKFwiVGVzdCBSb2xlXCIpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFwiQSB0ZXN0IHJvbGUgZGVmaW5pdGlvblwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy50eXBlKS50b0JlKFwiQ3VzdG9tUm9sZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlLW91dHB1dHNcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUGVybWlzc2lvbnMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBjb250cm9sIHBsYW5lIGFjdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQ29udHJvbFBsYW5lUm9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiY29udHJvbC1wbGFuZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkNvbnRyb2wgUGxhbmUgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVhZFwiLFxuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9zdGFydC9hY3Rpb25cIixcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVzdGFydC9hY3Rpb25cIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLmFjdGlvbnMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgY29udHJvbCBwbGFuZSBub3RBY3Rpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIk5vdEFjdGlvbnNSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJub3QtYWN0aW9ucy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk5vdCBBY3Rpb25zIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvKlwiXSxcbiAgICAgICAgICAgIG5vdEFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvZGVsZXRlXCIsXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3dyaXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5ub3RBY3Rpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGRhdGEgcGxhbmUgYWN0aW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJEYXRhUGxhbmVSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJkYXRhLXBsYW5lLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRGF0YSBQbGFuZSBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIl0sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9yZWFkXCIsXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3dyaXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5kYXRhQWN0aW9ucykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBkYXRhIHBsYW5lIG5vdERhdGFBY3Rpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIk5vdERhdGFBY3Rpb25zUm9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwibm90LWRhdGEtYWN0aW9ucy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk5vdCBEYXRhIEFjdGlvbnMgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzLypcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9kZWxldGVcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLm5vdERhdGFBY3Rpb25zKS50b0hhdmVMZW5ndGgoXG4gICAgICAgIDEsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBjb21wbGV4IHBlcm1pc3Npb24gY29tYmluYXRpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIkNvbXBsZXhQZXJtaXNzaW9uc1wiLCB7XG4gICAgICAgIG5hbWU6IFwiY29tcGxleC1wZXJtaXNzaW9uc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJDb21wbGV4IFBlcm1pc3Npb25zIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvKlwiXSxcbiAgICAgICAgICAgIG5vdEFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9kZWxldGVcIl0sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy8qXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbm90RGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvYmxvYlNlcnZpY2VzL2NvbnRhaW5lcnMvYmxvYnMvZGVsZXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5hY3Rpb25zKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLm5vdEFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnNbMF0uZGF0YUFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnNbMF0ubm90RGF0YUFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG11bHRpcGxlIHBlcm1pc3Npb24gb2JqZWN0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJNdWx0aXBsZVBlcm1pc3Npb25zXCIsIHtcbiAgICAgICAgbmFtZTogXCJtdWx0aXBsZS1wZXJtaXNzaW9uc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJNdWx0aXBsZSBQZXJtaXNzaW9ucyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQXNzaWduYWJsZSBTY29wZXMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBzdWJzY3JpcHRpb24gc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiU3Vic2NyaXB0aW9uU2NvcGVcIiwge1xuICAgICAgICBuYW1lOiBcInN1YnNjcmlwdGlvbi1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlN1YnNjcmlwdGlvbiBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmFzc2lnbmFibGVTY29wZXNbMF0pLnRvQ29udGFpbihcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IHJlc291cmNlIGdyb3VwIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJlc291cmNlR3JvdXBTY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJSZXNvdXJjZSBHcm91cCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3Jlc291cmNlR3JvdXBzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3Blc1swXSkudG9Db250YWluKFxuICAgICAgICBcIi9yZXNvdXJjZUdyb3Vwcy9cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG1hbmFnZW1lbnQgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiTWFuYWdlbWVudEdyb3VwU2NvcGVcIiwge1xuICAgICAgICBuYW1lOiBcIm1nLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiTWFuYWdlbWVudCBHcm91cCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL3Rlc3QtbWdcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3Blc1swXSkudG9Db250YWluKFxuICAgICAgICBcIi9tYW5hZ2VtZW50R3JvdXBzL1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgYXNzaWduYWJsZSBzY29wZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiTXVsdGlwbGVTY29wZXNcIiwge1xuICAgICAgICBuYW1lOiBcIm11bHRpcGxlLXNjb3Blcy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk11bHRpcGxlIFNjb3BlcyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvcmcxXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvcmcyXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmFzc2lnbmFibGVTY29wZXMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSb2xlIFR5cGVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBkZWZhdWx0IHRvIEN1c3RvbVJvbGUgdHlwZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJEZWZhdWx0VHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiZGVmYXVsdC10eXBlLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRGVmYXVsdCBUeXBlIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJDdXN0b21Sb2xlXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBleHBsaWNpdCBDdXN0b21Sb2xlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQ3VzdG9tVHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiY3VzdG9tLXR5cGUtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJDdXN0b20gVHlwZSBSb2xlXCIsXG4gICAgICAgIHR5cGU6IFwiQ3VzdG9tUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5yb2xlVHlwZSkudG9CZShcIkN1c3RvbVJvbGVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IEJ1aWx0SW5Sb2xlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQnVpbHRJblR5cGVcIiwge1xuICAgICAgICBuYW1lOiBcImJ1aWx0aW4tdHlwZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkJ1aWx0LUluIFR5cGUgUm9sZVwiLFxuICAgICAgICB0eXBlOiBcIkJ1aWx0SW5Sb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJvbGVUeXBlKS50b0JlKFwiQnVpbHRJblJvbGVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgYW5kIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGxldCByb2xlRGVmaW5pdGlvbjogUm9sZURlZmluaXRpb247XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCByb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLmlkKS50b01hdGNoKC9eXFwkXFx7LipcXC5pZFxcfSQvKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgcmVzb3VyY2VJZCBwcm9wZXJ0eSBtYXRjaGluZyBpZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucmVzb3VyY2VJZCkudG9CZShyb2xlRGVmaW5pdGlvbi5pZCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXR1cm4gY29ycmVjdCByb2xlTmFtZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZU5hbWUpLnRvQmUoXCJUZXN0IFJvbGVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXR1cm4gY29ycmVjdCByb2xlVHlwZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJDdXN0b21Sb2xlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJJZ25vcmVDaGFuZ2VzXCIsIHtcbiAgICAgICAgbmFtZTogXCJpZ25vcmUtY2hhbmdlcy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIklnbm9yZSBDaGFuZ2VzIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlSW5zdGFuY2VPZihSb2xlRGVmaW5pdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZW1wdHkgaWdub3JlIGNoYW5nZXMgYXJyYXlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiRW1wdHlJZ25vcmVcIiwge1xuICAgICAgICBuYW1lOiBcImVtcHR5LWlnbm9yZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkVtcHR5IElnbm9yZSBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZUluc3RhbmNlT2YoUm9sZURlZmluaXRpb24pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkVycm9yIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgaW52YWxpZCBBUEkgdmVyc2lvbnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSW52YWxpZEFQSVwiLCB7XG4gICAgICAgICAgbmFtZTogXCJpbnZhbGlkLWFwaS1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiSW52YWxpZCBBUEkgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcImludmFsaWQtdmVyc2lvblwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJVbnN1cHBvcnRlZCBBUEkgdmVyc2lvbiAnaW52YWxpZC12ZXJzaW9uJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHByb3BlcnRpZXMgd2hlbiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgLy8gUm9sZSBkZWZpbml0aW9ucyBnZW5lcmF0ZSBkZXRlcm1pbmlzdGljIFVVSURzIGZvciBuYW1lcywgc28gbmFtZSB2YWxpZGF0aW9uXG4gICAgICAvLyBkb2Vzbid0IGFwcGx5IHRoZSBzYW1lIHdheS4gVGVzdCB0aGF0IHZhbGlkIHJvbGUgZGVmaW5pdGlvbnMgcGFzcyB2YWxpZGF0aW9uLlxuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVmFsaWRhdGlvblRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLCAvLyBUaGlzIGlzIGlnbm9yZWQgaW4gZmF2b3Igb2YgZ2VuZXJhdGVkIFVVSURcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24udmFsaWRhdGlvblJlc3VsdCEudmFsaWQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIHJlZ2lzdHJhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiU2NoZW1hVGVzdFwiLCB7XG4gICAgICAgICAgbmFtZTogXCJzY2hlbWEtdGVzdC1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiU2NoZW1hIFRlc3QgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkpTSUkgQ29tcGxpYW5jZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBKU0lJLWNvbXBsaWFudCBjb25zdHJ1Y3RvclwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaVRlc3RcIiwge1xuICAgICAgICAgIG5hbWU6IFwianNpaS10ZXN0XCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiSlNJSSBUZXN0IFJvbGVcIixcbiAgICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgSlNJSS1jb21wbGlhbnQgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJKc2lpUHJvcHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktcHJvcHNcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiSlNJSSBQcm9wcyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ubmFtZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5yb2xlTmFtZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IG1ldGhvZHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaU1ldGhvZHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktbWV0aG9kc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJKU0lJIE1ldGhvZHMgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ubGF0ZXN0VmVyc2lvbikudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5zdXBwb3J0ZWRWZXJzaW9ucykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2VyaWFsaXplIGNvbXBsZXggb2JqZWN0cyBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaVNlcmlhbGl6YXRpb25cIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktc2VyaWFsaXphdGlvblwiLFxuICAgICAgICByb2xlTmFtZTogXCJKU0lJIFNlcmlhbGl6YXRpb24gUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2RlbGV0ZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoKCkgPT5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocm9sZURlZmluaXRpb24udmFsaWRhdGlvblJlc3VsdCksXG4gICAgICApLm5vdC50b1Rocm93KCk7XG4gICAgICBleHBlY3QoKCkgPT4gSlNPTi5zdHJpbmdpZnkocm9sZURlZmluaXRpb24uc2NoZW1hKSkubm90LnRvVGhyb3coKTtcbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShyb2xlRGVmaW5pdGlvbi52ZXJzaW9uQ29uZmlnKSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgVGVycmFmb3JtIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHRvIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInN5bnRoLXRlc3RcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiU3ludGggVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHdvcmsgaW4gY29tcGxleCBDREsgY29uc3RydWN0c1wiLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDb21wbGV4Q29uc3RydWN0IGV4dGVuZHMgY2RrdGYuVGVycmFmb3JtU3RhY2sge1xuICAgICAgICBjb25zdHJ1Y3RvcihzY29wZTogY2RrdGYuQXBwLCBpZDogc3RyaW5nKSB7XG4gICAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICAgIGNvbnN0IHJvbGUxID0gbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwiUm9sZTFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJyb2xlLTFcIixcbiAgICAgICAgICAgIHJvbGVOYW1lOiBcIkZpcnN0IFJvbGVcIixcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVhZFwiXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgcm9sZTIgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgXCJSb2xlMlwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcInJvbGUtMlwiLFxuICAgICAgICAgICAgcm9sZU5hbWU6IFwiU2Vjb25kIFJvbGVcIixcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJSb2xlMUlkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiByb2xlMS5pZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJSb2xlMklkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiByb2xlMi5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgQ29tcGxleENvbnN0cnVjdChhcHAsIFwiQ29tcGxleFN0YWNrXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSByb2xlIGRlZmluaXRpb25zIGluIHRoZSBzYW1lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGUxID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJvbGUxXCIsIHtcbiAgICAgICAgbmFtZTogXCJyb2xlLTFcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRmlyc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJvbGUyID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJvbGUyXCIsIHtcbiAgICAgICAgbmFtZTogXCJyb2xlLTJcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiU2Vjb25kIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZTEucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICAgIGV4cGVjdChyb2xlMi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA0LTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
946
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1kZWZpbml0aW9uLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWRlZmluaXRpb24vdGVzdC9yb2xlLWRlZmluaXRpb24uc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsNERBQTZFO0FBQzdFLDRFQUd3QztBQUV4QyxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO0lBQ3ZELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLGdEQUFnRDtRQUNoRCxJQUFJLENBQUM7WUFDSCxPQUFPLENBQUMsb0JBQW9CLENBQzFCLDhDQUFvQixFQUNwQixzREFBNEIsQ0FDN0IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsK0JBQStCO1FBQ2pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7UUFDaEQsRUFBRSxDQUFDLHdFQUF3RSxFQUFFLEdBQUcsRUFBRTtZQUNoRixNQUFNLEtBQUssR0FBd0I7Z0JBQ2pDLElBQUksRUFBRSxXQUFXO2dCQUNqQixRQUFRLEVBQUUsV0FBVztnQkFDckIsV0FBVyxFQUFFO29CQUNYO3dCQUNFLE9BQU8sRUFBRSxDQUFDLHdDQUF3QyxDQUFDO3dC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QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFcEQsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21wcmVoZW5zaXZlIHRlc3RzIGZvciB0aGUgdW5pZmllZCBSb2xlRGVmaW5pdGlvbiBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIHVuaWZpZWQgUm9sZURlZmluaXRpb24gY2xhc3MgdGhhdCB1c2VzXG4gKiB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsuIFRlc3RzIGNvdmVyIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb24sXG4gKiBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcsIHNjaGVtYSB2YWxpZGF0aW9uLCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiwgYW5kXG4gKiByb2xlIGRlZmluaXRpb24tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eS5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgKiBhcyBjZGt0biBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IEFwaVZlcnNpb25NYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9hcGktdmVyc2lvbi1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBWZXJzaW9uU3VwcG9ydExldmVsIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgUm9sZURlZmluaXRpb24sIFJvbGVEZWZpbml0aW9uUHJvcHMgfSBmcm9tIFwiLi4vbGliL3JvbGUtZGVmaW5pdGlvblwiO1xuaW1wb3J0IHtcbiAgQUxMX1JPTEVfREVGSU5JVElPTl9WRVJTSU9OUyxcbiAgUk9MRV9ERUZJTklUSU9OX1RZUEUsXG59IGZyb20gXCIuLi9saWIvcm9sZS1kZWZpbml0aW9uLXNjaGVtYXNcIjtcblxuZGVzY3JpYmUoXCJSb2xlRGVmaW5pdGlvbiAtIFVuaWZpZWQgSW1wbGVtZW50YXRpb25cIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0bi5BcHA7XG4gIGxldCBzdGFjazogY2RrdG4uVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBBcGlWZXJzaW9uTWFuYWdlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RuLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gICAgbWFuYWdlciA9IEFwaVZlcnNpb25NYW5hZ2VyLmluc3RhbmNlKCk7XG5cbiAgICAvLyBFbnN1cmUgUm9sZSBEZWZpbml0aW9uIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWRcbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgUk9MRV9ERUZJTklUSU9OX1RZUEUsXG4gICAgICAgIEFMTF9ST0xFX0RFRklOSVRJT05fVkVSU0lPTlMsXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBJZ25vcmUgaWYgYWxyZWFkeSByZWdpc3RlcmVkXG4gICAgfVxuICB9KTtcblxuICBkZXNjcmliZShcIkNvbnN0cnVjdG9yIGFuZCBCYXNpYyBQcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcm9sZSBkZWZpbml0aW9uIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFJvbGVEZWZpbml0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW10sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZUluc3RhbmNlT2YoUm9sZURlZmluaXRpb24pO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7IC8vIExhdGVzdCB2ZXJzaW9uXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgLy8gTmFtZSBpcyBhIGRldGVybWluaXN0aWMgVVVJRCBiYXNlZCBvbiByb2xlTmFtZSBhbmQgYXNzaWduYWJsZVNjb3Blc1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLm5hbWUpLnRvTWF0Y2goXG4gICAgICAgIC9eWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JC8sXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJvbGUgZGVmaW5pdGlvbiB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUm9sZURlZmluaXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGUtcGlubmVkXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGUgUGlubmVkXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA0LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHJvbGUgZGVmaW5pdGlvbiB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSb2xlRGVmaW5pdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZS1mdWxsXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZSBGdWxsXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgY29tcHJlaGVuc2l2ZSB0ZXN0IHJvbGUgZm9yIHVuaXQgdGVzdGluZ1wiLFxuICAgICAgICB0eXBlOiBcIkN1c3RvbVJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIixcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvc3RhcnQvYWN0aW9uXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2RlbGV0ZVwiXSxcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW10sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgZW5hYmxlTWlncmF0aW9uQW5hbHlzaXM6IHRydWUsXG4gICAgICAgIGVuYWJsZVRyYW5zZm9ybWF0aW9uOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucm9sZU5hbWUpLnRvQmUoXCJUZXN0IFJvbGUgRnVsbFwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJBIGNvbXByZWhlbnNpdmUgdGVzdCByb2xlIGZvciB1bml0IHRlc3RpbmdcIixcbiAgICAgICk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMudHlwZSkudG9CZShcIkN1c3RvbVJvbGVcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3BlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZ2VuZXJhdGUgZGV0ZXJtaW5pc3RpYyBVVUlEIG5hbWUgd2hlbiBuYW1lIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUm9sZURlZmluaXRpb25Qcm9wcyA9IHtcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG5cbiAgICAgIC8vIE5hbWUgaXMgYSBkZXRlcm1pbmlzdGljIFVVSUQsIG5vdCB0aGUgY29uc3RydWN0IElEXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubmFtZSkudG9NYXRjaChcbiAgICAgICAgL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kLyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIHJvbGVOYW1lIHRvIGJlIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBhbnkgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwgcHJvcHMpO1xuICAgICAgfSkudG9UaHJvdyhcIlJlcXVpcmVkIHByb3BlcnR5ICdyb2xlTmFtZScgaXMgbWlzc2luZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlcXVpcmUgcGVybWlzc2lvbnMgdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IGFueSA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHByb3BzKTtcbiAgICAgIH0pLnRvVGhyb3coXCJSZXF1aXJlZCBwcm9wZXJ0eSAncGVybWlzc2lvbnMnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXF1aXJlIGFzc2lnbmFibGVTY29wZXMgdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IGFueSA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiUmVxdWlyZWQgcHJvcGVydHkgJ2Fzc2lnbmFibGVTY29wZXMnIGlzIG1pc3NpbmdcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRnJhbWV3b3JrIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZXNvbHZlIGxhdGVzdCBBUEkgdmVyc2lvbiBhdXRvbWF0aWNhbGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWxsIHJlZ2lzdGVyZWQgQVBJIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3VwcG9ydGVkVmVyc2lvbnMgPSByb2xlRGVmaW5pdGlvbi5zdXBwb3J0ZWRWZXJzaW9ucygpO1xuICAgICAgZXhwZWN0KHN1cHBvcnRlZFZlcnNpb25zKS50b0NvbnRhaW4oXCIyMDIyLTA0LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgdmVyc2lvbiBzdXBwb3J0XCIsICgpID0+IHtcbiAgICAgIC8vIFZhbGlkIHZlcnNpb25cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJWYWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLm5vdC50b1Rocm93KCk7XG5cbiAgICAgIC8vIEludmFsaWQgdmVyc2lvblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIkludmFsaWRWZXJzaW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjAtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjAtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24uc2NoZW1hKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoUk9MRV9ERUZJTklUSU9OX1RZUEUpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnNjaGVtYS52ZXJzaW9uKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5zY2hlbWEucHJvcGVydGllcykudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGxvYWQgdmVyc2lvbiBjb25maWd1cmF0aW9uIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZlcnNpb25Db25maWcudmVyc2lvbikudG9CZShcIjIwMjItMDQtMDFcIik7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24udmVyc2lvbkNvbmZpZy5zdXBwb3J0TGV2ZWwpLnRvQmUoXG4gICAgICAgIFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcm9wZXJ0eSBWYWxpZGF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSBwcm9wZXJ0aWVzIHdoZW4gdmFsaWRhdGlvbiBpcyBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBSb2xlRGVmaW5pdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCBwcm9wcyk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSB2YWxpZGF0aW9uIHJlc3VsdHMgZm9yIHZhbGlkIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwge1xuICAgICAgICBuYW1lOiBcInZhbGlkLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVmFsaWQgUm9sZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBIHZhbGlkIHJvbGUgZGVmaW5pdGlvblwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi52YWxpZGF0aW9uUmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQhLnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQhLmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2tpcCB2YWxpZGF0aW9uIHdoZW4gZGlzYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVGVzdFJvbGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJUZXN0IFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgZW5hYmxlVmFsaWRhdGlvbjogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIk1pZ3JhdGlvbiBBbmFseXNpc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc2tpcCBtaWdyYXRpb24gYW5hbHlzaXMgZm9yIHNpbmdsZSB2ZXJzaW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMi0wNC0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNpbmNlIHRoZXJlJ3Mgb25seSBvbmUgdmVyc2lvbiwgbWlncmF0aW9uIGFuYWx5c2lzIHNob3VsZCBiZSBza2lwcGVkXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBza2lwIG1pZ3JhdGlvbiBhbmFseXNpcyB3aGVuIGRpc2FibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZU1pZ3JhdGlvbkFuYWx5c2lzOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ubWlncmF0aW9uQW5hbHlzaXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSZXNvdXJjZSBDcmVhdGlvbiBhbmQgQm9keVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNvcnJlY3QgcmVzb3VyY2UgYm9keSB3aXRoIG1pbmltYWwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlRlc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5yb2xlTmFtZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9ucykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5hc3NpZ25hYmxlU2NvcGVzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNvcnJlY3QgcmVzb3VyY2UgYm9keSB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCByb2xlIGRlZmluaXRpb25cIixcbiAgICAgICAgdHlwZTogXCJDdXN0b21Sb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgICBub3RBY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvZGVsZXRlXCJdLFxuICAgICAgICAgICAgZGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvYmxvYlNlcnZpY2VzL2NvbnRhaW5lcnMvYmxvYnMvcmVhZFwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG5vdERhdGFBY3Rpb25zOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnJvbGVOYW1lKS50b0JlKFwiVGVzdCBSb2xlXCIpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFwiQSB0ZXN0IHJvbGUgZGVmaW5pdGlvblwiKTtcbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy50eXBlKS50b0JlKFwiQ3VzdG9tUm9sZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJUZXN0Um9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1yb2xlLW91dHB1dHNcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RuLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUGVybWlzc2lvbnMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBjb250cm9sIHBsYW5lIGFjdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQ29udHJvbFBsYW5lUm9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiY29udHJvbC1wbGFuZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkNvbnRyb2wgUGxhbmUgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVhZFwiLFxuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9zdGFydC9hY3Rpb25cIixcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVzdGFydC9hY3Rpb25cIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLmFjdGlvbnMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgY29udHJvbCBwbGFuZSBub3RBY3Rpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIk5vdEFjdGlvbnNSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJub3QtYWN0aW9ucy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk5vdCBBY3Rpb25zIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvKlwiXSxcbiAgICAgICAgICAgIG5vdEFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvZGVsZXRlXCIsXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3dyaXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5ub3RBY3Rpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGRhdGEgcGxhbmUgYWN0aW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJEYXRhUGxhbmVSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJkYXRhLXBsYW5lLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRGF0YSBQbGFuZSBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL3JlYWRcIl0sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9yZWFkXCIsXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3dyaXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5kYXRhQWN0aW9ucykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBkYXRhIHBsYW5lIG5vdERhdGFBY3Rpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIk5vdERhdGFBY3Rpb25zUm9sZVwiLCB7XG4gICAgICAgIG5hbWU6IFwibm90LWRhdGEtYWN0aW9ucy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk5vdCBEYXRhIEFjdGlvbnMgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzLypcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBub3REYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy9kZWxldGVcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLm5vdERhdGFBY3Rpb25zKS50b0hhdmVMZW5ndGgoXG4gICAgICAgIDEsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBjb21wbGV4IHBlcm1pc3Npb24gY29tYmluYXRpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIkNvbXBsZXhQZXJtaXNzaW9uc1wiLCB7XG4gICAgICAgIG5hbWU6IFwiY29tcGxleC1wZXJtaXNzaW9uc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJDb21wbGV4IFBlcm1pc3Npb25zIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvKlwiXSxcbiAgICAgICAgICAgIG5vdEFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9kZWxldGVcIl0sXG4gICAgICAgICAgICBkYXRhQWN0aW9uczogW1xuICAgICAgICAgICAgICBcIk1pY3Jvc29mdC5TdG9yYWdlL3N0b3JhZ2VBY2NvdW50cy9ibG9iU2VydmljZXMvY29udGFpbmVycy9ibG9icy8qXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbm90RGF0YUFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvYmxvYlNlcnZpY2VzL2NvbnRhaW5lcnMvYmxvYnMvZGVsZXRlXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5wcm9wcy5wZXJtaXNzaW9uc1swXS5hY3Rpb25zKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zWzBdLm5vdEFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnNbMF0uZGF0YUFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMucGVybWlzc2lvbnNbMF0ubm90RGF0YUFjdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG11bHRpcGxlIHBlcm1pc3Npb24gb2JqZWN0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJNdWx0aXBsZVBlcm1pc3Npb25zXCIsIHtcbiAgICAgICAgbmFtZTogXCJtdWx0aXBsZS1wZXJtaXNzaW9uc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJNdWx0aXBsZSBQZXJtaXNzaW9ucyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFBY3Rpb25zOiBbXG4gICAgICAgICAgICAgIFwiTWljcm9zb2Z0LlN0b3JhZ2Uvc3RvcmFnZUFjY291bnRzL2Jsb2JTZXJ2aWNlcy9jb250YWluZXJzL2Jsb2JzL3JlYWRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLnBlcm1pc3Npb25zKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQXNzaWduYWJsZSBTY29wZXMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBzdWJzY3JpcHRpb24gc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiU3Vic2NyaXB0aW9uU2NvcGVcIiwge1xuICAgICAgICBuYW1lOiBcInN1YnNjcmlwdGlvbi1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIlN1YnNjcmlwdGlvbiBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmFzc2lnbmFibGVTY29wZXNbMF0pLnRvQ29udGFpbihcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IHJlc291cmNlIGdyb3VwIHNjb3BlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJlc291cmNlR3JvdXBTY29wZVwiLCB7XG4gICAgICAgIG5hbWU6IFwicmctcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJSZXNvdXJjZSBHcm91cCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3Jlc291cmNlR3JvdXBzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3Blc1swXSkudG9Db250YWluKFxuICAgICAgICBcIi9yZXNvdXJjZUdyb3Vwcy9cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IG1hbmFnZW1lbnQgZ3JvdXAgc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiTWFuYWdlbWVudEdyb3VwU2NvcGVcIiwge1xuICAgICAgICBuYW1lOiBcIm1nLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiTWFuYWdlbWVudCBHcm91cCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL3Rlc3QtbWdcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucHJvcHMuYXNzaWduYWJsZVNjb3Blc1swXSkudG9Db250YWluKFxuICAgICAgICBcIi9tYW5hZ2VtZW50R3JvdXBzL1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgYXNzaWduYWJsZSBzY29wZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiTXVsdGlwbGVTY29wZXNcIiwge1xuICAgICAgICBuYW1lOiBcIm11bHRpcGxlLXNjb3Blcy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIk11bHRpcGxlIFNjb3BlcyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvcmcxXCIsXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvcmcyXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnByb3BzLmFzc2lnbmFibGVTY29wZXMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSb2xlIFR5cGVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBkZWZhdWx0IHRvIEN1c3RvbVJvbGUgdHlwZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJEZWZhdWx0VHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiZGVmYXVsdC10eXBlLXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRGVmYXVsdCBUeXBlIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJDdXN0b21Sb2xlXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBleHBsaWNpdCBDdXN0b21Sb2xlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQ3VzdG9tVHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiY3VzdG9tLXR5cGUtcm9sZVwiLFxuICAgICAgICByb2xlTmFtZTogXCJDdXN0b20gVHlwZSBSb2xlXCIsXG4gICAgICAgIHR5cGU6IFwiQ3VzdG9tUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbi5yb2xlVHlwZSkudG9CZShcIkN1c3RvbVJvbGVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IEJ1aWx0SW5Sb2xlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiQnVpbHRJblR5cGVcIiwge1xuICAgICAgICBuYW1lOiBcImJ1aWx0aW4tdHlwZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkJ1aWx0LUluIFR5cGUgUm9sZVwiLFxuICAgICAgICB0eXBlOiBcIkJ1aWx0SW5Sb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnJvbGVUeXBlKS50b0JlKFwiQnVpbHRJblJvbGVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgYW5kIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGxldCByb2xlRGVmaW5pdGlvbjogUm9sZURlZmluaXRpb247XG5cbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHJvbGVEZWZpbml0aW9uID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlRlc3RSb2xlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJvbGVcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkEgdGVzdCByb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLmlkKS50b01hdGNoKC9eXFwkXFx7LipcXC5pZFxcfSQvKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgcmVzb3VyY2VJZCBwcm9wZXJ0eSBtYXRjaGluZyBpZFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucmVzb3VyY2VJZCkudG9CZShyb2xlRGVmaW5pdGlvbi5pZCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXR1cm4gY29ycmVjdCByb2xlTmFtZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZU5hbWUpLnRvQmUoXCJUZXN0IFJvbGVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZXR1cm4gY29ycmVjdCByb2xlVHlwZVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJDdXN0b21Sb2xlXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJJZ25vcmVDaGFuZ2VzXCIsIHtcbiAgICAgICAgbmFtZTogXCJpZ25vcmUtY2hhbmdlcy1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIklnbm9yZSBDaGFuZ2VzIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uKS50b0JlSW5zdGFuY2VPZihSb2xlRGVmaW5pdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZW1wdHkgaWdub3JlIGNoYW5nZXMgYXJyYXlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiRW1wdHlJZ25vcmVcIiwge1xuICAgICAgICBuYW1lOiBcImVtcHR5LWlnbm9yZS1yb2xlXCIsXG4gICAgICAgIHJvbGVOYW1lOiBcIkVtcHR5IElnbm9yZSBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyb2xlRGVmaW5pdGlvbikudG9CZUluc3RhbmNlT2YoUm9sZURlZmluaXRpb24pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkVycm9yIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgaW52YWxpZCBBUEkgdmVyc2lvbnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSW52YWxpZEFQSVwiLCB7XG4gICAgICAgICAgbmFtZTogXCJpbnZhbGlkLWFwaS1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiSW52YWxpZCBBUEkgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcImludmFsaWQtdmVyc2lvblwiLFxuICAgICAgICB9KTtcbiAgICAgIH0pLnRvVGhyb3coXCJVbnN1cHBvcnRlZCBBUEkgdmVyc2lvbiAnaW52YWxpZC12ZXJzaW9uJ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHByb3BlcnRpZXMgd2hlbiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgLy8gUm9sZSBkZWZpbml0aW9ucyBnZW5lcmF0ZSBkZXRlcm1pbmlzdGljIFVVSURzIGZvciBuYW1lcywgc28gbmFtZSB2YWxpZGF0aW9uXG4gICAgICAvLyBkb2Vzbid0IGFwcGx5IHRoZSBzYW1lIHdheS4gVGVzdCB0aGF0IHZhbGlkIHJvbGUgZGVmaW5pdGlvbnMgcGFzcyB2YWxpZGF0aW9uLlxuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiVmFsaWRhdGlvblRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtcm9sZVwiLCAvLyBUaGlzIGlzIGlnbm9yZWQgaW4gZmF2b3Igb2YgZ2VuZXJhdGVkIFVVSURcbiAgICAgICAgcm9sZU5hbWU6IFwiVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJvbGVEZWZpbml0aW9uLnZhbGlkYXRpb25SZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qocm9sZURlZmluaXRpb24udmFsaWRhdGlvblJlc3VsdCEudmFsaWQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgc2NoZW1hIHJlZ2lzdHJhdGlvbiBlcnJvcnMgZ3JhY2VmdWxseVwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiU2NoZW1hVGVzdFwiLCB7XG4gICAgICAgICAgbmFtZTogXCJzY2hlbWEtdGVzdC1yb2xlXCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiU2NoZW1hIFRlc3QgUm9sZVwiLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkpTSUkgQ29tcGxpYW5jZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBKU0lJLWNvbXBsaWFudCBjb25zdHJ1Y3RvclwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaVRlc3RcIiwge1xuICAgICAgICAgIG5hbWU6IFwianNpaS10ZXN0XCIsXG4gICAgICAgICAgcm9sZU5hbWU6IFwiSlNJSSBUZXN0IFJvbGVcIixcbiAgICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuUmVzb3VyY2VzL3N1YnNjcmlwdGlvbnMvcmVhZFwiXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgSlNJSS1jb21wbGlhbnQgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb2xlRGVmaW5pdGlvbiA9IG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJKc2lpUHJvcHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktcHJvcHNcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiSlNJSSBQcm9wcyBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ubmFtZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5yb2xlTmFtZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ucm9sZVR5cGUpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIEpTSUktY29tcGxpYW50IG1ldGhvZHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaU1ldGhvZHNcIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktbWV0aG9kc1wiLFxuICAgICAgICByb2xlTmFtZTogXCJKU0lJIE1ldGhvZHMgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvc3Vic2NyaXB0aW9ucy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2Ygcm9sZURlZmluaXRpb24ubGF0ZXN0VmVyc2lvbikudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiByb2xlRGVmaW5pdGlvbi5zdXBwb3J0ZWRWZXJzaW9ucykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc2VyaWFsaXplIGNvbXBsZXggb2JqZWN0cyBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9sZURlZmluaXRpb24gPSBuZXcgUm9sZURlZmluaXRpb24oc3RhY2ssIFwiSnNpaVNlcmlhbGl6YXRpb25cIiwge1xuICAgICAgICBuYW1lOiBcImpzaWktc2VyaWFsaXphdGlvblwiLFxuICAgICAgICByb2xlTmFtZTogXCJKU0lJIFNlcmlhbGl6YXRpb24gUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgICAgbm90QWN0aW9uczogW1wiTWljcm9zb2Z0LkNvbXB1dGUvdmlydHVhbE1hY2hpbmVzL2RlbGV0ZVwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoKCkgPT5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocm9sZURlZmluaXRpb24udmFsaWRhdGlvblJlc3VsdCksXG4gICAgICApLm5vdC50b1Rocm93KCk7XG4gICAgICBleHBlY3QoKCkgPT4gSlNPTi5zdHJpbmdpZnkocm9sZURlZmluaXRpb24uc2NoZW1hKSkubm90LnRvVGhyb3coKTtcbiAgICAgIGV4cGVjdCgoKSA9PiBKU09OLnN0cmluZ2lmeShyb2xlRGVmaW5pdGlvbi52ZXJzaW9uQ29uZmlnKSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgVGVycmFmb3JtIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHRvIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBSb2xlRGVmaW5pdGlvbihzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInN5bnRoLXRlc3RcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiU3ludGggVGVzdCBSb2xlXCIsXG4gICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uczogW1wiTWljcm9zb2Z0LlJlc291cmNlcy9zdWJzY3JpcHRpb25zL3JlYWRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYXNzaWduYWJsZVNjb3BlczogW1xuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHdvcmsgaW4gY29tcGxleCBDREsgY29uc3RydWN0c1wiLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDb21wbGV4Q29uc3RydWN0IGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtU3RhY2sge1xuICAgICAgICBjb25zdHJ1Y3RvcihzY29wZTogY2RrdG4uQXBwLCBpZDogc3RyaW5nKSB7XG4gICAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICAgIGNvbnN0IHJvbGUxID0gbmV3IFJvbGVEZWZpbml0aW9uKHRoaXMsIFwiUm9sZTFcIiwge1xuICAgICAgICAgICAgbmFtZTogXCJyb2xlLTFcIixcbiAgICAgICAgICAgIHJvbGVOYW1lOiBcIkZpcnN0IFJvbGVcIixcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuQ29tcHV0ZS92aXJ0dWFsTWFjaGluZXMvcmVhZFwiXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgcm9sZTIgPSBuZXcgUm9sZURlZmluaXRpb24odGhpcywgXCJSb2xlMlwiLCB7XG4gICAgICAgICAgICBuYW1lOiBcInJvbGUtMlwiLFxuICAgICAgICAgICAgcm9sZU5hbWU6IFwiU2Vjb25kIFJvbGVcIixcbiAgICAgICAgICAgIHBlcm1pc3Npb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJSb2xlMUlkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiByb2xlMS5pZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJSb2xlMklkXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiByb2xlMi5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgQ29tcGxleENvbnN0cnVjdChhcHAsIFwiQ29tcGxleFN0YWNrXCIpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSByb2xlIGRlZmluaXRpb25zIGluIHRoZSBzYW1lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvbGUxID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJvbGUxXCIsIHtcbiAgICAgICAgbmFtZTogXCJyb2xlLTFcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiRmlyc3QgUm9sZVwiLFxuICAgICAgICBwZXJtaXNzaW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcIk1pY3Jvc29mdC5Db21wdXRlL3ZpcnR1YWxNYWNoaW5lcy9yZWFkXCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFzc2lnbmFibGVTY29wZXM6IFtcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJvbGUyID0gbmV3IFJvbGVEZWZpbml0aW9uKHN0YWNrLCBcIlJvbGUyXCIsIHtcbiAgICAgICAgbmFtZTogXCJyb2xlLTJcIixcbiAgICAgICAgcm9sZU5hbWU6IFwiU2Vjb25kIFJvbGVcIixcbiAgICAgICAgcGVybWlzc2lvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvcmVhZFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBhc3NpZ25hYmxlU2NvcGVzOiBbXG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBdLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9sZTEucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMi0wNC0wMVwiKTtcbiAgICAgIGV4cGVjdChyb2xlMi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIyLTA0LTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* - Full backward compatibility with existing Storage Account interface
|
|
18
18
|
* - JSII compliance for multi-language support
|
|
19
19
|
*/
|
|
20
|
-
import * as
|
|
20
|
+
import * as cdktn from "cdktn";
|
|
21
21
|
import { Construct } from "constructs";
|
|
22
22
|
import { StorageAccountMonitoringOptions } from "./storage-account-schemas";
|
|
23
23
|
import { AzapiResource, AzapiResourceProps, MonitoringConfig } from "../../core-azure/lib/azapi/azapi-resource";
|
|
@@ -279,11 +279,11 @@ export declare class StorageAccount extends AzapiResource {
|
|
|
279
279
|
*/
|
|
280
280
|
static defaultMonitoring(actionGroupId: string, workspaceId?: string, options?: StorageAccountMonitoringOptions): MonitoringConfig;
|
|
281
281
|
readonly props: StorageAccountProps;
|
|
282
|
-
readonly idOutput:
|
|
283
|
-
readonly locationOutput:
|
|
284
|
-
readonly nameOutput:
|
|
285
|
-
readonly tagsOutput:
|
|
286
|
-
readonly primaryEndpointsOutput:
|
|
282
|
+
readonly idOutput: cdktn.TerraformOutput;
|
|
283
|
+
readonly locationOutput: cdktn.TerraformOutput;
|
|
284
|
+
readonly nameOutput: cdktn.TerraformOutput;
|
|
285
|
+
readonly tagsOutput: cdktn.TerraformOutput;
|
|
286
|
+
readonly primaryEndpointsOutput: cdktn.TerraformOutput;
|
|
287
287
|
/**
|
|
288
288
|
* Creates a new Azure Storage Account using the VersionedAzapiResource framework
|
|
289
289
|
*
|