@microsoft/terraform-cdk-constructs 1.9.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 +38110 -28389
- package/API.md +40683 -30877
- 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/lib/log-analytics-workspace.d.ts +1 -1
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +3 -3
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +1 -1
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +6 -6
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +6 -6
- 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/lib/network-watcher.d.ts +1 -1
- package/lib/azure-networkwatcher/lib/network-watcher.js +3 -3
- package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +1 -1
- package/lib/azure-networkwatcher/test/network-watcher.integ.js +6 -6
- package/lib/azure-networkwatcher/test/network-watcher.spec.js +6 -6
- 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/lib/policy-set-definition.d.ts +1 -1
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +3 -3
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +1 -1
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +6 -6
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +6 -6
- 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.d.ts +5 -5
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +7 -7
- 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 +13 -13
- 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 +3 -0
- package/lib/index.js +5 -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
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* Run with: npm run integration:nostream
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
const
|
|
24
|
-
require("
|
|
23
|
+
const cdktn_1 = require("cdktn");
|
|
24
|
+
require("cdktn/lib/testing/adapters/jest");
|
|
25
25
|
const resource_group_1 = require("../../azure-resourcegroup/lib/resource-group");
|
|
26
26
|
const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
|
|
27
27
|
const testing_1 = require("../../testing");
|
|
@@ -308,9 +308,9 @@ class DnsRecordsExampleStack extends testing_1.BaseTestStack {
|
|
|
308
308
|
}
|
|
309
309
|
describe("DnsRecords Integration Test", () => {
|
|
310
310
|
it("should deploy, validate idempotency, and cleanup resources", () => {
|
|
311
|
-
const app =
|
|
311
|
+
const app = cdktn_1.Testing.app();
|
|
312
312
|
const stack = new DnsRecordsExampleStack(app, "test-dnsrecords");
|
|
313
|
-
const synthesized =
|
|
313
|
+
const synthesized = cdktn_1.Testing.fullSynth(stack);
|
|
314
314
|
// This will:
|
|
315
315
|
// 1. Run terraform apply to deploy resources (including parent-child relationships)
|
|
316
316
|
// 2. Run terraform plan to check idempotency (no changes expected)
|
|
@@ -318,4 +318,4 @@ describe("DnsRecords Integration Test", () => {
|
|
|
318
318
|
(0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
|
|
319
319
|
}, 600000); // 10 minute timeout for deployment and cleanup
|
|
320
320
|
});
|
|
321
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXJlY29yZHMuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZG5zem9uZS90ZXN0L2Rucy1yZWNvcmRzLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLGlGQUE2RTtBQUM3RSxrRkFBb0Y7QUFDcEYsMkNBQTZFO0FBQzdFLHlEQUE2RDtBQUM3RCw4Q0FBMEM7QUFDMUMsNENBVXdCO0FBRXhCLHdEQUF3RDtBQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFlLENBQUMsb0JBQW9CLEVBQUU7SUFDN0QsV0FBVyxFQUFFLENBQUM7Q0FDZixDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBdUIsU0FBUSx1QkFBYTtJQUNoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGNBQWMsRUFBRTtnQkFDZCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLHdCQUF3QjtRQUN4QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDakQsb0NBQW9DLEVBQ3BDLFFBQVEsQ0FDVCxDQUFDO1FBRUYscURBQXFEO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3ZELElBQUksRUFBRSxpQkFBaUI7WUFDdkIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsSUFBSSxFQUFF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QUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgUHVibGljIEROUyBab25lIFJlY29yZHNcbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIHVzYWdlIG9mIGFsbCBQdWJsaWMgRE5TIHJlY29yZCB0eXBlc1xuICogYW5kIHZhbGlkYXRlcyBkZXBsb3ltZW50LCBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgZm9yIGNoaWxkIHJlc291cmNlcy5cbiAqXG4gKiBTdXBwb3J0ZWQgUmVjb3JkIFR5cGVzOlxuICogLSBBIHJlY29yZCAoSVB2NCBhZGRyZXNzZXMsIGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBBQUFBIHJlY29yZCAoSVB2NiBhZGRyZXNzZXMsIGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBDQUEgcmVjb3JkIChDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgQXV0aG9yaXphdGlvbiAtIFBVQkxJQyBPTkxZKVxuICogLSBDTkFNRSByZWNvcmQgKGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBNWCByZWNvcmRcbiAqIC0gTlMgcmVjb3JkIChOYW1lIFNlcnZlciAtIFBVQkxJQyBPTkxZKVxuICogLSBQVFIgcmVjb3JkXG4gKiAtIFNSViByZWNvcmRcbiAqIC0gVFhUIHJlY29yZFxuICogLSAoU09BIGlzIG1hbmFnZWQgYnkgQXp1cmUgYXV0b21hdGljYWxseSlcbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0Zi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXJlc291cmNlZ3JvdXAvbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBEbnNab25lIH0gZnJvbSBcIi4uL2xpYi9kbnMtem9uZVwiO1xuaW1wb3J0IHtcbiAgRG5zQVJlY29yZCxcbiAgRG5zQWFhYVJlY29yZCxcbiAgRG5zQ2FhUmVjb3JkLFxuICBEbnNDbmFtZVJlY29yZCxcbiAgRG5zTXhSZWNvcmQsXG4gIERuc05zUmVjb3JkLFxuICBEbnNQdHJSZWNvcmQsXG4gIERuc1NydlJlY29yZCxcbiAgRG5zVHh0UmVjb3JkLFxufSBmcm9tIFwiLi4vbGliL3JlY29yZHNcIjtcblxuLy8gR2VuZXJhdGUgdW5pcXVlIHRlc3QgcnVuIG1ldGFkYXRhIGZvciB0aGlzIHRlc3Qgc3VpdGVcbmNvbnN0IHRlc3RNZXRhZGF0YSA9IG5ldyBUZXN0UnVuTWV0YWRhdGEoXCJkbnNyZWMtaW50ZWdyYXRpb25cIiwge1xuICBtYXhBZ2VIb3VyczogNCxcbn0pO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQdWJsaWMgRE5TIFJlY29yZHMgdXNhZ2VcbiAqXG4gKiBDcmVhdGVzIGEgUHVibGljIEROUyBab25lIGFuZCB2YXJpb3VzIHJlY29yZCB0eXBlcyB3aXRoaW4gaXQuXG4gKi9cbmNsYXNzIERuc1JlY29yZHNFeGFtcGxlU3RhY2sgZXh0ZW5kcyBCYXNlVGVzdFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVzdFJ1bk9wdGlvbnM6IHtcbiAgICAgICAgbWF4QWdlSG91cnM6IHRlc3RNZXRhZGF0YS5tYXhBZ2VIb3VycyxcbiAgICAgICAgYXV0b0NsZWFudXA6IHRlc3RNZXRhZGF0YS5hdXRvQ2xlYW51cCxcbiAgICAgICAgY2xlYW51cFBvbGljeTogdGVzdE1ldGFkYXRhLmNsZWFudXBQb2xpY3ksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29uZmlndXJlIEFaQVBJIHByb3ZpZGVyXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZXNcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwiZG5zcmVjXCIsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSByZXNvdXJjZSBncm91cCBmb3IgdGhlIEROUyB6b25lIGFuZCByZWNvcmRzXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwidGVzdC1yZ1wiLCB7XG4gICAgICBuYW1lOiByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1czJcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwicHVibGljLWRucy1yZWNvcmRzLXRlc3RpbmdcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgUHVibGljIEROUyBab25lIC0gdXNpbmcgYSB1bmlxdWUgem9uZSBuYW1lXG4gICAgLy8gTm90ZTogUHVibGljIEROUyB6b25lcyByZXF1aXJlIGdsb2JhbGx5IHVuaXF1ZSBuYW1lc1xuICAgIGNvbnN0IHpvbmVOYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvZG5zWm9uZXNcIixcbiAgICAgIFwicmVjXCIsXG4gICAgKTtcbiAgICBjb25zdCB6b25lID0gbmV3IERuc1pvbmUodGhpcywgXCJwdWJsaWMtZG5zLXpvbmVcIiwge1xuICAgICAgbmFtZTogYCR7em9uZU5hbWV9LmNvbWAsXG4gICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwiZG5zLXJlY29yZHMtdGVzdGluZ1wiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBBIFJlY29yZCAtIFNpbmdsZSBJUFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQVJlY29yZCh0aGlzLCBcImEtcmVjb3JkLXNpbmdsZVwiLCB7XG4gICAgICBuYW1lOiBcIndlYlwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzMDAsXG4gICAgICByZWNvcmRzOiBbeyBpcHY0QWRkcmVzczogXCIyMC4zMC40MC41MFwiIH1dLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJ3ZWItc2VydmVyXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEEgUmVjb3JkIC0gTXVsdGlwbGUgSVBzIChsb2FkIGJhbGFuY2luZylcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc0FSZWNvcmQodGhpcywgXCJhLXJlY29yZC1tdWx0aVwiLCB7XG4gICAgICBuYW1lOiBcImFwaVwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzMDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHsgaXB2NEFkZHJlc3M6IFwiMjAuMzAuNDAuNTFcIiB9LFxuICAgICAgICB7IGlwdjRBZGRyZXNzOiBcIjIwLjMwLjQwLjUyXCIgfSxcbiAgICAgICAgeyBpcHY0QWRkcmVzczogXCIyMC4zMC40MC41M1wiIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJhcGktc2VydmVycy1sb2FkYmFsYW5jZWRcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQUFBQSBSZWNvcmQgLSBJUHY2IGFkZHJlc3Nlc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQWFhYVJlY29yZCh0aGlzLCBcImFhYWEtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwiaXB2Nmhvc3RcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7IGlwdjZBZGRyZXNzOiBcIjIwMDE6ZGI4Ojg1YTM6OjhhMmU6MzcwOjczMzRcIiB9LFxuICAgICAgICB7IGlwdjZBZGRyZXNzOiBcIjIwMDE6ZGI4Ojg1YTM6OjhhMmU6MzcwOjczMzVcIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwiaXB2Ni1zZXJ2ZXJzXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENBQSBSZWNvcmQgLSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgQXV0aG9yaXphdGlvbiAoUFVCTElDIEROUyBPTkxZKVxuICAgIC8vIFNwZWNpZmllcyB3aGljaCBDQXMgYXJlIGFsbG93ZWQgdG8gaXNzdWUgY2VydGlmaWNhdGVzIGZvciB0aGlzIGRvbWFpblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQ2FhUmVjb3JkKHRoaXMsIFwiY2FhLXJlY29yZFwiLCB7XG4gICAgICBuYW1lOiBcIkBcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgeyBmbGFnczogMCwgdGFnOiBcImlzc3VlXCIsIHZhbHVlOiBcImxldHNlbmNyeXB0Lm9yZ1wiIH0sXG4gICAgICAgIHsgZmxhZ3M6IDAsIHRhZzogXCJpc3N1ZVwiLCB2YWx1ZTogXCJkaWdpY2VydC5jb21cIiB9LFxuICAgICAgICB7IGZsYWdzOiAwLCB0YWc6IFwiaXNzdWV3aWxkXCIsIHZhbHVlOiBcImxldHNlbmNyeXB0Lm9yZ1wiIH0sXG4gICAgICAgIHsgZmxhZ3M6IDAsIHRhZzogXCJpb2RlZlwiLCB2YWx1ZTogXCJtYWlsdG86c2VjdXJpdHlAZXhhbXBsZS5jb21cIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwiY2VydGlmaWNhdGUtYXV0aG9yaXR5LWF1dGhvcml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ05BTUUgUmVjb3JkIC0gQWxpYXNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc0NuYW1lUmVjb3JkKHRoaXMsIFwiY25hbWUtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwid3d3XCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICBjbmFtZTogYHdlYi4ke3pvbmVOYW1lfS5jb21gLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJhbGlhcy10by13ZWJcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTVggUmVjb3JkIC0gTWFpbCBleGNoYW5nZSBzZXJ2ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIG5ldyBEbnNNeFJlY29yZCh0aGlzLCBcIm14LXJlY29yZFwiLCB7XG4gICAgICBuYW1lOiBcIkBcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgeyBwcmVmZXJlbmNlOiAxMCwgZXhjaGFuZ2U6IGBtYWlsMS4ke3pvbmVOYW1lfS5jb21gIH0sXG4gICAgICAgIHsgcHJlZmVyZW5jZTogMjAsIGV4Y2hhbmdlOiBgbWFpbDIuJHt6b25lTmFtZX0uY29tYCB9LFxuICAgICAgICB7IHByZWZlcmVuY2U6IDMwLCBleGNoYW5nZTogXCJtYWlsLmJhY2t1cC1wcm92aWRlci5jb21cIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwibWFpbC1zZXJ2ZXJzXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE5TIFJlY29yZCAtIE5hbWUgc2VydmVyIGRlbGVnYXRpb24gKFBVQkxJQyBETlMgT05MWSlcbiAgICAvLyBVc2VkIGZvciBkZWxlZ2F0aW5nIGEgc3ViZG9tYWluIHRvIGRpZmZlcmVudCBuYW1lIHNlcnZlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc05zUmVjb3JkKHRoaXMsIFwibnMtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwic3ViZG9tYWluXCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHsgbnNkbmFtZTogXCJuczEuc3ViZG9tYWluLXByb3ZpZGVyLmNvbVwiIH0sXG4gICAgICAgIHsgbnNkbmFtZTogXCJuczIuc3ViZG9tYWluLXByb3ZpZGVyLmNvbVwiIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJzdWJkb21haW4tZGVsZWdhdGlvblwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQVFIgUmVjb3JkIC0gUmV2ZXJzZSBETlNcbiAgICAvLyBOb3RlOiBJbiBwcmFjdGljZSwgUFRSIHJlY29yZHMgYXJlIGNyZWF0ZWQgaW4gcmV2ZXJzZSBETlMgem9uZXNcbiAgICAvLyBtYW5hZ2VkIGJ5IElQIGFkZHJlc3MgcHJvdmlkZXJzLiBUaGlzIGRlbW9uc3RyYXRlcyB0aGUgcmVjb3JkIHN0cnVjdHVyZS5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1B0clJlY29yZCh0aGlzLCBcInB0ci1yZWNvcmRcIiwge1xuICAgICAgbmFtZTogXCJwdHJcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFt7IHB0cmRuYW1lOiBgc2VydmVyMS4ke3pvbmVOYW1lfS5jb21gIH1dLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJyZXZlcnNlLWRucy1leGFtcGxlXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNSViBSZWNvcmQgLSBTZXJ2aWNlIGxvY2F0aW9uXG4gICAgLy8gRm9ybWF0OiBfc2VydmljZS5fcHJvdG9jb2wgKGUuZy4sIF9zaXAuX3RjcClcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1NydlJlY29yZCh0aGlzLCBcInNydi1yZWNvcmQtc2lwXCIsIHtcbiAgICAgIG5hbWU6IFwiX3NpcC5fdGNwXCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcmlvcml0eTogMTAsXG4gICAgICAgICAgd2VpZ2h0OiA2MCxcbiAgICAgICAgICBwb3J0OiA1MDYwLFxuICAgICAgICAgIHRhcmdldDogYHNpcHNlcnZlcjEuJHt6b25lTmFtZX0uY29tYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByaW9yaXR5OiAxMCxcbiAgICAgICAgICB3ZWlnaHQ6IDQwLFxuICAgICAgICAgIHBvcnQ6IDUwNjAsXG4gICAgICAgICAgdGFyZ2V0OiBgc2lwc2VydmVyMi4ke3pvbmVOYW1lfS5jb21gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwic2lwLXNlcnZpY2UtZGlzY292ZXJ5XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNSViBSZWNvcmQgLSBNaWNyb3NvZnQgMzY1IEF1dG9kaXNjb3ZlclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zU3J2UmVjb3JkKHRoaXMsIFwic3J2LXJlY29yZC1hdXRvZGlzY292ZXJcIiwge1xuICAgICAgbmFtZTogXCJfYXV0b2Rpc2NvdmVyLl90Y3BcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByaW9yaXR5OiAwLFxuICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICBwb3J0OiA0NDMsXG4gICAgICAgICAgdGFyZ2V0OiBcImF1dG9kaXNjb3Zlci5vdXRsb29rLmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwib3V0bG9vay1hdXRvZGlzY292ZXJcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVFhUIFJlY29yZCAtIFJvb3QgZG9tYWluIFRYVCByZWNvcmRzIChTUEYgKyBEb21haW4gVmVyaWZpY2F0aW9uKVxuICAgIC8vIE5vdGU6IEluIEF6dXJlIEROUywgYWxsIFRYVCByZWNvcmRzIGZvciB0aGUgc2FtZSBuYW1lIG11c3QgYmUgaW4gYSBzaW5nbGUgcmVjb3JkIHNldC5cbiAgICAvLyBFYWNoIFRYVCByZWNvcmQgaW4gdGhlIHNldCBjYW4gaGF2ZSBtdWx0aXBsZSBzdHJpbmcgdmFsdWVzLlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zVHh0UmVjb3JkKHRoaXMsIFwidHh0LXJlY29yZC1yb290XCIsIHtcbiAgICAgIG5hbWU6IFwiQFwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzNjAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgIFwidj1zcGYxIGluY2x1ZGU6c3BmLnByb3RlY3Rpb24ub3V0bG9vay5jb20gaW5jbHVkZTpfc3BmLmdvb2dsZS5jb20gfmFsbFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgdmFsdWU6IFtcIk1TPW1zMTIzNDU2NzhcIl0gfSxcbiAgICAgIF0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcInJvb3QtdHh0LXJlY29yZHNcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVFhUIFJlY29yZCAtIERLSU0gcmVjb3JkXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIG5ldyBEbnNUeHRSZWNvcmQodGhpcywgXCJ0eHQtcmVjb3JkLWRraW1cIiwge1xuICAgICAgbmFtZTogXCJzZWxlY3RvcjEuX2RvbWFpbmtleVwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzNjAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgIFwidj1ES0lNMTsgaz1yc2E7IHA9TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FDLi4uXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcImRraW0tcmVjb3JkXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFRYVCBSZWNvcmQgLSBETUFSQyByZWNvcmRcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1R4dFJlY29yZCh0aGlzLCBcInR4dC1yZWNvcmQtZG1hcmNcIiwge1xuICAgICAgbmFtZTogXCJfZG1hcmNcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICBcInY9RE1BUkMxOyBwPXF1YXJhbnRpbmU7IHJ1YT1tYWlsdG86ZG1hcmMtcmVwb3J0c0BleGFtcGxlLmNvbTsgcGN0PTEwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJkbWFyYy1wb2xpY3lcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQWRkaXRpb25hbCBBIFJlY29yZCAtIHN1YmRvbWFpblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQVJlY29yZCh0aGlzLCBcImEtcmVjb3JkLXN1YmRvbWFpblwiLCB7XG4gICAgICBuYW1lOiBcImJsb2dcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzAwLFxuICAgICAgcmVjb3JkczogW3sgaXB2NEFkZHJlc3M6IFwiMjAuMzAuNDAuMTAwXCIgfV0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcImJsb2ctc2VydmVyXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiRG5zUmVjb3JkcyBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IERuc1JlY29yZHNFeGFtcGxlU3RhY2soYXBwLCBcInRlc3QtZG5zcmVjb3Jkc1wiKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKGluY2x1ZGluZyBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcylcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzIChjaGlsZCByZXNvdXJjZXMgY2xlYW51cCBiZWZvcmUgcGFyZW50KVxuICAgIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN5bnRoZXNpemVkLCB7IHZlcmlmeUNsZWFudXA6IHRydWUgfSk7XG4gIH0sIDYwMDAwMCk7IC8vIDEwIG1pbnV0ZSB0aW1lb3V0IGZvciBkZXBsb3ltZW50IGFuZCBjbGVhbnVwXG59KTtcbiJdfQ==
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXJlY29yZHMuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZG5zem9uZS90ZXN0L2Rucy1yZWNvcmRzLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLGlGQUE2RTtBQUM3RSxrRkFBb0Y7QUFDcEYsMkNBQTZFO0FBQzdFLHlEQUE2RDtBQUM3RCw4Q0FBMEM7QUFDMUMsNENBVXdCO0FBRXhCLHdEQUF3RDtBQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDBCQUFlLENBQUMsb0JBQW9CLEVBQUU7SUFDN0QsV0FBVyxFQUFFLENBQUM7Q0FDZixDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxzQkFBdUIsU0FBUSx1QkFBYTtJQUNoRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGNBQWMsRUFBRTtnQkFDZCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLHdCQUF3QjtRQUN4QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDakQsb0NBQW9DLEVBQ3BDLFFBQVEsQ0FDVCxDQUFDO1FBRUYscURBQXFEO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3ZELElBQUksRUFBRSxpQkFBaUI7WUFDdkIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsSUFBSSxFQUFF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QUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgUHVibGljIEROUyBab25lIFJlY29yZHNcbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIHVzYWdlIG9mIGFsbCBQdWJsaWMgRE5TIHJlY29yZCB0eXBlc1xuICogYW5kIHZhbGlkYXRlcyBkZXBsb3ltZW50LCBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgZm9yIGNoaWxkIHJlc291cmNlcy5cbiAqXG4gKiBTdXBwb3J0ZWQgUmVjb3JkIFR5cGVzOlxuICogLSBBIHJlY29yZCAoSVB2NCBhZGRyZXNzZXMsIGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBBQUFBIHJlY29yZCAoSVB2NiBhZGRyZXNzZXMsIGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBDQUEgcmVjb3JkIChDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgQXV0aG9yaXphdGlvbiAtIFBVQkxJQyBPTkxZKVxuICogLSBDTkFNRSByZWNvcmQgKGluY2x1ZGluZyBhbGlhcyByZWNvcmRzKVxuICogLSBNWCByZWNvcmRcbiAqIC0gTlMgcmVjb3JkIChOYW1lIFNlcnZlciAtIFBVQkxJQyBPTkxZKVxuICogLSBQVFIgcmVjb3JkXG4gKiAtIFNSViByZWNvcmRcbiAqIC0gVFhUIHJlY29yZFxuICogLSAoU09BIGlzIG1hbmFnZWQgYnkgQXp1cmUgYXV0b21hdGljYWxseSlcbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0bi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXJlc291cmNlZ3JvdXAvbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBEbnNab25lIH0gZnJvbSBcIi4uL2xpYi9kbnMtem9uZVwiO1xuaW1wb3J0IHtcbiAgRG5zQVJlY29yZCxcbiAgRG5zQWFhYVJlY29yZCxcbiAgRG5zQ2FhUmVjb3JkLFxuICBEbnNDbmFtZVJlY29yZCxcbiAgRG5zTXhSZWNvcmQsXG4gIERuc05zUmVjb3JkLFxuICBEbnNQdHJSZWNvcmQsXG4gIERuc1NydlJlY29yZCxcbiAgRG5zVHh0UmVjb3JkLFxufSBmcm9tIFwiLi4vbGliL3JlY29yZHNcIjtcblxuLy8gR2VuZXJhdGUgdW5pcXVlIHRlc3QgcnVuIG1ldGFkYXRhIGZvciB0aGlzIHRlc3Qgc3VpdGVcbmNvbnN0IHRlc3RNZXRhZGF0YSA9IG5ldyBUZXN0UnVuTWV0YWRhdGEoXCJkbnNyZWMtaW50ZWdyYXRpb25cIiwge1xuICBtYXhBZ2VIb3VyczogNCxcbn0pO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQdWJsaWMgRE5TIFJlY29yZHMgdXNhZ2VcbiAqXG4gKiBDcmVhdGVzIGEgUHVibGljIEROUyBab25lIGFuZCB2YXJpb3VzIHJlY29yZCB0eXBlcyB3aXRoaW4gaXQuXG4gKi9cbmNsYXNzIERuc1JlY29yZHNFeGFtcGxlU3RhY2sgZXh0ZW5kcyBCYXNlVGVzdFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVzdFJ1bk9wdGlvbnM6IHtcbiAgICAgICAgbWF4QWdlSG91cnM6IHRlc3RNZXRhZGF0YS5tYXhBZ2VIb3VycyxcbiAgICAgICAgYXV0b0NsZWFudXA6IHRlc3RNZXRhZGF0YS5hdXRvQ2xlYW51cCxcbiAgICAgICAgY2xlYW51cFBvbGljeTogdGVzdE1ldGFkYXRhLmNsZWFudXBQb2xpY3ksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29uZmlndXJlIEFaQVBJIHByb3ZpZGVyXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZXNcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwiZG5zcmVjXCIsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSByZXNvdXJjZSBncm91cCBmb3IgdGhlIEROUyB6b25lIGFuZCByZWNvcmRzXG4gICAgY29uc3QgcmVzb3VyY2VHcm91cCA9IG5ldyBSZXNvdXJjZUdyb3VwKHRoaXMsIFwidGVzdC1yZ1wiLCB7XG4gICAgICBuYW1lOiByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1czJcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwicHVibGljLWRucy1yZWNvcmRzLXRlc3RpbmdcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgUHVibGljIEROUyBab25lIC0gdXNpbmcgYSB1bmlxdWUgem9uZSBuYW1lXG4gICAgLy8gTm90ZTogUHVibGljIEROUyB6b25lcyByZXF1aXJlIGdsb2JhbGx5IHVuaXF1ZSBuYW1lc1xuICAgIGNvbnN0IHpvbmVOYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0Lk5ldHdvcmsvZG5zWm9uZXNcIixcbiAgICAgIFwicmVjXCIsXG4gICAgKTtcbiAgICBjb25zdCB6b25lID0gbmV3IERuc1pvbmUodGhpcywgXCJwdWJsaWMtZG5zLXpvbmVcIiwge1xuICAgICAgbmFtZTogYCR7em9uZU5hbWV9LmNvbWAsXG4gICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwiZG5zLXJlY29yZHMtdGVzdGluZ1wiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBBIFJlY29yZCAtIFNpbmdsZSBJUFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQVJlY29yZCh0aGlzLCBcImEtcmVjb3JkLXNpbmdsZVwiLCB7XG4gICAgICBuYW1lOiBcIndlYlwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzMDAsXG4gICAgICByZWNvcmRzOiBbeyBpcHY0QWRkcmVzczogXCIyMC4zMC40MC41MFwiIH1dLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJ3ZWItc2VydmVyXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEEgUmVjb3JkIC0gTXVsdGlwbGUgSVBzIChsb2FkIGJhbGFuY2luZylcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc0FSZWNvcmQodGhpcywgXCJhLXJlY29yZC1tdWx0aVwiLCB7XG4gICAgICBuYW1lOiBcImFwaVwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzMDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHsgaXB2NEFkZHJlc3M6IFwiMjAuMzAuNDAuNTFcIiB9LFxuICAgICAgICB7IGlwdjRBZGRyZXNzOiBcIjIwLjMwLjQwLjUyXCIgfSxcbiAgICAgICAgeyBpcHY0QWRkcmVzczogXCIyMC4zMC40MC41M1wiIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJhcGktc2VydmVycy1sb2FkYmFsYW5jZWRcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQUFBQSBSZWNvcmQgLSBJUHY2IGFkZHJlc3Nlc1xuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQWFhYVJlY29yZCh0aGlzLCBcImFhYWEtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwiaXB2Nmhvc3RcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7IGlwdjZBZGRyZXNzOiBcIjIwMDE6ZGI4Ojg1YTM6OjhhMmU6MzcwOjczMzRcIiB9LFxuICAgICAgICB7IGlwdjZBZGRyZXNzOiBcIjIwMDE6ZGI4Ojg1YTM6OjhhMmU6MzcwOjczMzVcIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwiaXB2Ni1zZXJ2ZXJzXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIENBQSBSZWNvcmQgLSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgQXV0aG9yaXphdGlvbiAoUFVCTElDIEROUyBPTkxZKVxuICAgIC8vIFNwZWNpZmllcyB3aGljaCBDQXMgYXJlIGFsbG93ZWQgdG8gaXNzdWUgY2VydGlmaWNhdGVzIGZvciB0aGlzIGRvbWFpblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQ2FhUmVjb3JkKHRoaXMsIFwiY2FhLXJlY29yZFwiLCB7XG4gICAgICBuYW1lOiBcIkBcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgeyBmbGFnczogMCwgdGFnOiBcImlzc3VlXCIsIHZhbHVlOiBcImxldHNlbmNyeXB0Lm9yZ1wiIH0sXG4gICAgICAgIHsgZmxhZ3M6IDAsIHRhZzogXCJpc3N1ZVwiLCB2YWx1ZTogXCJkaWdpY2VydC5jb21cIiB9LFxuICAgICAgICB7IGZsYWdzOiAwLCB0YWc6IFwiaXNzdWV3aWxkXCIsIHZhbHVlOiBcImxldHNlbmNyeXB0Lm9yZ1wiIH0sXG4gICAgICAgIHsgZmxhZ3M6IDAsIHRhZzogXCJpb2RlZlwiLCB2YWx1ZTogXCJtYWlsdG86c2VjdXJpdHlAZXhhbXBsZS5jb21cIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwiY2VydGlmaWNhdGUtYXV0aG9yaXR5LWF1dGhvcml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ05BTUUgUmVjb3JkIC0gQWxpYXNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc0NuYW1lUmVjb3JkKHRoaXMsIFwiY25hbWUtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwid3d3XCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICBjbmFtZTogYHdlYi4ke3pvbmVOYW1lfS5jb21gLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJhbGlhcy10by13ZWJcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gTVggUmVjb3JkIC0gTWFpbCBleGNoYW5nZSBzZXJ2ZXJzXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIG5ldyBEbnNNeFJlY29yZCh0aGlzLCBcIm14LXJlY29yZFwiLCB7XG4gICAgICBuYW1lOiBcIkBcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAgeyBwcmVmZXJlbmNlOiAxMCwgZXhjaGFuZ2U6IGBtYWlsMS4ke3pvbmVOYW1lfS5jb21gIH0sXG4gICAgICAgIHsgcHJlZmVyZW5jZTogMjAsIGV4Y2hhbmdlOiBgbWFpbDIuJHt6b25lTmFtZX0uY29tYCB9LFxuICAgICAgICB7IHByZWZlcmVuY2U6IDMwLCBleGNoYW5nZTogXCJtYWlsLmJhY2t1cC1wcm92aWRlci5jb21cIiB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwibWFpbC1zZXJ2ZXJzXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE5TIFJlY29yZCAtIE5hbWUgc2VydmVyIGRlbGVnYXRpb24gKFBVQkxJQyBETlMgT05MWSlcbiAgICAvLyBVc2VkIGZvciBkZWxlZ2F0aW5nIGEgc3ViZG9tYWluIHRvIGRpZmZlcmVudCBuYW1lIHNlcnZlcnNcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc05zUmVjb3JkKHRoaXMsIFwibnMtcmVjb3JkXCIsIHtcbiAgICAgIG5hbWU6IFwic3ViZG9tYWluXCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHsgbnNkbmFtZTogXCJuczEuc3ViZG9tYWluLXByb3ZpZGVyLmNvbVwiIH0sXG4gICAgICAgIHsgbnNkbmFtZTogXCJuczIuc3ViZG9tYWluLXByb3ZpZGVyLmNvbVwiIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJzdWJkb21haW4tZGVsZWdhdGlvblwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBQVFIgUmVjb3JkIC0gUmV2ZXJzZSBETlNcbiAgICAvLyBOb3RlOiBJbiBwcmFjdGljZSwgUFRSIHJlY29yZHMgYXJlIGNyZWF0ZWQgaW4gcmV2ZXJzZSBETlMgem9uZXNcbiAgICAvLyBtYW5hZ2VkIGJ5IElQIGFkZHJlc3MgcHJvdmlkZXJzLiBUaGlzIGRlbW9uc3RyYXRlcyB0aGUgcmVjb3JkIHN0cnVjdHVyZS5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1B0clJlY29yZCh0aGlzLCBcInB0ci1yZWNvcmRcIiwge1xuICAgICAgbmFtZTogXCJwdHJcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFt7IHB0cmRuYW1lOiBgc2VydmVyMS4ke3pvbmVOYW1lfS5jb21gIH1dLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJyZXZlcnNlLWRucy1leGFtcGxlXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNSViBSZWNvcmQgLSBTZXJ2aWNlIGxvY2F0aW9uXG4gICAgLy8gRm9ybWF0OiBfc2VydmljZS5fcHJvdG9jb2wgKGUuZy4sIF9zaXAuX3RjcClcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1NydlJlY29yZCh0aGlzLCBcInNydi1yZWNvcmQtc2lwXCIsIHtcbiAgICAgIG5hbWU6IFwiX3NpcC5fdGNwXCIsXG4gICAgICBkbnNab25lSWQ6IHpvbmUuaWQsXG4gICAgICB0dGw6IDM2MDAsXG4gICAgICByZWNvcmRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcmlvcml0eTogMTAsXG4gICAgICAgICAgd2VpZ2h0OiA2MCxcbiAgICAgICAgICBwb3J0OiA1MDYwLFxuICAgICAgICAgIHRhcmdldDogYHNpcHNlcnZlcjEuJHt6b25lTmFtZX0uY29tYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByaW9yaXR5OiAxMCxcbiAgICAgICAgICB3ZWlnaHQ6IDQwLFxuICAgICAgICAgIHBvcnQ6IDUwNjAsXG4gICAgICAgICAgdGFyZ2V0OiBgc2lwc2VydmVyMi4ke3pvbmVOYW1lfS5jb21gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwic2lwLXNlcnZpY2UtZGlzY292ZXJ5XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNSViBSZWNvcmQgLSBNaWNyb3NvZnQgMzY1IEF1dG9kaXNjb3ZlclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zU3J2UmVjb3JkKHRoaXMsIFwic3J2LXJlY29yZC1hdXRvZGlzY292ZXJcIiwge1xuICAgICAgbmFtZTogXCJfYXV0b2Rpc2NvdmVyLl90Y3BcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByaW9yaXR5OiAwLFxuICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICBwb3J0OiA0NDMsXG4gICAgICAgICAgdGFyZ2V0OiBcImF1dG9kaXNjb3Zlci5vdXRsb29rLmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHB1cnBvc2U6IFwib3V0bG9vay1hdXRvZGlzY292ZXJcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVFhUIFJlY29yZCAtIFJvb3QgZG9tYWluIFRYVCByZWNvcmRzIChTUEYgKyBEb21haW4gVmVyaWZpY2F0aW9uKVxuICAgIC8vIE5vdGU6IEluIEF6dXJlIEROUywgYWxsIFRYVCByZWNvcmRzIGZvciB0aGUgc2FtZSBuYW1lIG11c3QgYmUgaW4gYSBzaW5nbGUgcmVjb3JkIHNldC5cbiAgICAvLyBFYWNoIFRYVCByZWNvcmQgaW4gdGhlIHNldCBjYW4gaGF2ZSBtdWx0aXBsZSBzdHJpbmcgdmFsdWVzLlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zVHh0UmVjb3JkKHRoaXMsIFwidHh0LXJlY29yZC1yb290XCIsIHtcbiAgICAgIG5hbWU6IFwiQFwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzNjAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgIFwidj1zcGYxIGluY2x1ZGU6c3BmLnByb3RlY3Rpb24ub3V0bG9vay5jb20gaW5jbHVkZTpfc3BmLmdvb2dsZS5jb20gfmFsbFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgdmFsdWU6IFtcIk1TPW1zMTIzNDU2NzhcIl0gfSxcbiAgICAgIF0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcInJvb3QtdHh0LXJlY29yZHNcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVFhUIFJlY29yZCAtIERLSU0gcmVjb3JkXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIG5ldyBEbnNUeHRSZWNvcmQodGhpcywgXCJ0eHQtcmVjb3JkLWRraW1cIiwge1xuICAgICAgbmFtZTogXCJzZWxlY3RvcjEuX2RvbWFpbmtleVwiLFxuICAgICAgZG5zWm9uZUlkOiB6b25lLmlkLFxuICAgICAgdHRsOiAzNjAwLFxuICAgICAgcmVjb3JkczogW1xuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgIFwidj1ES0lNMTsgaz1yc2E7IHA9TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FDLi4uXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcImRraW0tcmVjb3JkXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFRYVCBSZWNvcmQgLSBETUFSQyByZWNvcmRcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgbmV3IERuc1R4dFJlY29yZCh0aGlzLCBcInR4dC1yZWNvcmQtZG1hcmNcIiwge1xuICAgICAgbmFtZTogXCJfZG1hcmNcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzYwMCxcbiAgICAgIHJlY29yZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICBcInY9RE1BUkMxOyBwPXF1YXJhbnRpbmU7IHJ1YT1tYWlsdG86ZG1hcmMtcmVwb3J0c0BleGFtcGxlLmNvbTsgcGN0PTEwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgcHVycG9zZTogXCJkbWFyYy1wb2xpY3lcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQWRkaXRpb25hbCBBIFJlY29yZCAtIHN1YmRvbWFpblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICBuZXcgRG5zQVJlY29yZCh0aGlzLCBcImEtcmVjb3JkLXN1YmRvbWFpblwiLCB7XG4gICAgICBuYW1lOiBcImJsb2dcIixcbiAgICAgIGRuc1pvbmVJZDogem9uZS5pZCxcbiAgICAgIHR0bDogMzAwLFxuICAgICAgcmVjb3JkczogW3sgaXB2NEFkZHJlc3M6IFwiMjAuMzAuNDAuMTAwXCIgfV0sXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICBwdXJwb3NlOiBcImJsb2ctc2VydmVyXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiRG5zUmVjb3JkcyBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IERuc1JlY29yZHNFeGFtcGxlU3RhY2soYXBwLCBcInRlc3QtZG5zcmVjb3Jkc1wiKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXMgKGluY2x1ZGluZyBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcylcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzIChjaGlsZCByZXNvdXJjZXMgY2xlYW51cCBiZWZvcmUgcGFyZW50KVxuICAgIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN5bnRoZXNpemVkLCB7IHZlcmlmeUNsZWFudXA6IHRydWUgfSk7XG4gIH0sIDYwMDAwMCk7IC8vIDEwIG1pbnV0ZSB0aW1lb3V0IGZvciBkZXBsb3ltZW50IGFuZCBjbGVhbnVwXG59KTtcbiJdfQ==
|