@decaf-ts/integrations 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integrations.cjs +1608 -7
- package/dist/integrations.js +1841 -5
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +13 -5
- package/lib/cjs/graph/nodes/base.cjs +35 -0
- package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
- package/lib/cjs/graph/nodes/index.cjs +3 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/namespaces/index.cjs +26 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
- package/lib/cjs/namespaces/models/group.model.cjs +74 -0
- package/lib/cjs/namespaces/models/index.cjs +39 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
- package/lib/cjs/namespaces/models/role.model.cjs +84 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/user.model.cjs +75 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
- package/lib/cjs/namespaces/services/group.service.cjs +30 -0
- package/lib/cjs/namespaces/services/index.cjs +42 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
- package/lib/cjs/namespaces/services/role.service.cjs +45 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
- package/lib/cjs/namespaces/services/user.service.cjs +32 -0
- package/lib/cjs/namespaces/types.cjs +67 -0
- package/lib/cjs/namespaces/utils.cjs +161 -0
- package/lib/cjs/nest/authService.cjs +5 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
- package/lib/cjs/nest/graph/index.cjs +28 -0
- package/lib/cjs/nest/index.cjs +3 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +12 -4
- package/lib/esm/graph/nodes/base.js +30 -0
- package/lib/esm/graph/nodes/flow-control.js +31 -3
- package/lib/esm/graph/nodes/index.js +2 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/namespaces/index.js +9 -0
- package/lib/esm/namespaces/models/authorization-model.js +7 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
- package/lib/esm/namespaces/models/group-membership.model.js +57 -0
- package/lib/esm/namespaces/models/group.model.js +65 -0
- package/lib/esm/namespaces/models/index.js +22 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
- package/lib/esm/namespaces/models/org-unit.model.js +93 -0
- package/lib/esm/namespaces/models/permission.model.js +55 -0
- package/lib/esm/namespaces/models/principal.model.js +68 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
- package/lib/esm/namespaces/models/role-permission.model.js +46 -0
- package/lib/esm/namespaces/models/role.model.js +75 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
- package/lib/esm/namespaces/models/tenant.model.js +79 -0
- package/lib/esm/namespaces/models/user.model.js +66 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
- package/lib/esm/namespaces/services/authz.service.js +71 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
- package/lib/esm/namespaces/services/group-membership.service.js +37 -0
- package/lib/esm/namespaces/services/group.service.js +25 -0
- package/lib/esm/namespaces/services/index.js +25 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
- package/lib/esm/namespaces/services/org-unit.service.js +150 -0
- package/lib/esm/namespaces/services/permission.service.js +24 -0
- package/lib/esm/namespaces/services/principal.service.js +30 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
- package/lib/esm/namespaces/services/role-permission.service.js +46 -0
- package/lib/esm/namespaces/services/role.service.js +40 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
- package/lib/esm/namespaces/services/system-management.service.js +92 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
- package/lib/esm/namespaces/services/tenant.service.js +31 -0
- package/lib/esm/namespaces/services/user.service.js +27 -0
- package/lib/esm/namespaces/types.js +71 -0
- package/lib/esm/namespaces/utils.js +143 -0
- package/lib/esm/nest/authService.js +4 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
- package/lib/esm/nest/graph/index.js +11 -0
- package/lib/esm/nest/index.js +2 -1
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/flow-control.d.cts +9 -1
- package/lib/types/graph/nodes/flow-control.d.mts +9 -1
- package/lib/types/graph/nodes/index.d.cts +1 -0
- package/lib/types/graph/nodes/index.d.mts +1 -0
- package/lib/types/graph/types.d.cts +15 -1
- package/lib/types/graph/types.d.mts +15 -1
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/namespaces/index.d.cts +8 -0
- package/lib/types/namespaces/index.d.mts +8 -0
- package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
- package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
- package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
- package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
- package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/group.model.d.cts +15 -0
- package/lib/types/namespaces/models/group.model.d.mts +15 -0
- package/lib/types/namespaces/models/index.d.cts +21 -0
- package/lib/types/namespaces/models/index.d.mts +21 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
- package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
- package/lib/types/namespaces/models/permission.model.d.cts +11 -0
- package/lib/types/namespaces/models/permission.model.d.mts +11 -0
- package/lib/types/namespaces/models/principal.model.d.cts +16 -0
- package/lib/types/namespaces/models/principal.model.d.mts +16 -0
- package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
- package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
- package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
- package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
- package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
- package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
- package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
- package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
- package/lib/types/namespaces/models/role.model.d.cts +17 -0
- package/lib/types/namespaces/models/role.model.d.mts +17 -0
- package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
- package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
- package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
- package/lib/types/namespaces/models/user.model.d.cts +14 -0
- package/lib/types/namespaces/models/user.model.d.mts +14 -0
- package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
- package/lib/types/namespaces/services/authz.service.d.cts +10 -0
- package/lib/types/namespaces/services/authz.service.d.mts +10 -0
- package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
- package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
- package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
- package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
- package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
- package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
- package/lib/types/namespaces/services/group.service.d.cts +9 -0
- package/lib/types/namespaces/services/group.service.d.mts +9 -0
- package/lib/types/namespaces/services/index.d.cts +24 -0
- package/lib/types/namespaces/services/index.d.mts +24 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
- package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
- package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
- package/lib/types/namespaces/services/permission.service.d.cts +10 -0
- package/lib/types/namespaces/services/permission.service.d.mts +10 -0
- package/lib/types/namespaces/services/principal.service.d.cts +11 -0
- package/lib/types/namespaces/services/principal.service.d.mts +11 -0
- package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
- package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
- package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
- package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
- package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
- package/lib/types/namespaces/services/role.service.d.cts +12 -0
- package/lib/types/namespaces/services/role.service.d.mts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
- package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
- package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
- package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
- package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
- package/lib/types/namespaces/services/user.service.d.cts +11 -0
- package/lib/types/namespaces/services/user.service.d.mts +11 -0
- package/lib/types/namespaces/types.d.cts +230 -0
- package/lib/types/namespaces/types.d.mts +230 -0
- package/lib/types/namespaces/utils.d.cts +68 -0
- package/lib/types/namespaces/utils.d.mts +68 -0
- package/lib/types/nest/authService.d.cts +1 -0
- package/lib/types/nest/authService.d.mts +1 -0
- package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
- package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
- package/lib/types/nest/graph/index.d.cts +10 -0
- package/lib/types/nest/graph/index.d.mts +10 -0
- package/lib/types/nest/index.d.cts +1 -0
- package/lib/types/nest/index.d.mts +1 -0
- package/package.json +16 -5
- package/sql/001_constraints.sql +11 -0
- package/sql/002_rls.sql +20 -0
- package/sql/003_indexes.sql +2 -0
|
@@ -23,13 +23,19 @@ function readSwitchMetadata(context) {
|
|
|
23
23
|
* Detects whether a condition is a `CodeCondition` (has `type: "code"`).
|
|
24
24
|
*/
|
|
25
25
|
function isCodeCondition(cond) {
|
|
26
|
-
return typeof cond === "object" &&
|
|
26
|
+
return (typeof cond === "object" &&
|
|
27
|
+
cond !== null &&
|
|
28
|
+
"type" in cond &&
|
|
29
|
+
cond.type === "code");
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
29
32
|
* Detects whether a condition is a `ConditionExpression` (has `op` field).
|
|
30
33
|
*/
|
|
31
34
|
function isConditionExpression(cond) {
|
|
32
|
-
return typeof cond === "object" &&
|
|
35
|
+
return (typeof cond === "object" &&
|
|
36
|
+
cond !== null &&
|
|
37
|
+
"op" in cond &&
|
|
38
|
+
typeof cond.op === "string");
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Executor for `core.flow.switch` nodes.
|
|
@@ -81,7 +87,9 @@ class SwitchGraphNodeExecutor {
|
|
|
81
87
|
if (!evaluator) {
|
|
82
88
|
throw new GraphExecutionError_js_1.GraphExecutionError("Code conditions require a CodeSandboxEvaluator to be registered in GraphExecutionEngineConfig.codeSandboxEvaluator", "GRAPH_CODE_SANDBOX_NOT_CONFIGURED", { code: condition.code });
|
|
83
89
|
}
|
|
84
|
-
await context.log(`Evaluating code condition`, {
|
|
90
|
+
await context.log(`Evaluating code condition`, {
|
|
91
|
+
language: condition.language ?? "javascript",
|
|
92
|
+
});
|
|
85
93
|
const result = await evaluator.evaluate({
|
|
86
94
|
code: condition.code,
|
|
87
95
|
language: condition.language,
|
|
@@ -91,5 +99,5 @@ class SwitchGraphNodeExecutor {
|
|
|
91
99
|
}
|
|
92
100
|
}
|
|
93
101
|
exports.SwitchGraphNodeExecutor = SwitchGraphNodeExecutor;
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1CQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkNBQXNDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxtREFBOEM7QUFHckY7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLE9BQThCO0lBQ3hELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQStDLENBQUM7SUFDakYsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBbUMsQ0FBQztJQUNwRSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELE9BQU87UUFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksU0FBUztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBeUI7SUFDaEQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO0FBQzdGLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMscUJBQXFCLENB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Y3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yXG4gKiBAc3VtbWFyeSBFeGVjdXRvciBmb3IgdGhlIFN3aXRjaCBmbG93LWNvbnRyb2wgbm9kZSAoREVDQUYtMzIgwqcyMi4yLjIpLlxuICogQGRlc2NyaXB0aW9uIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gYWdhaW5zdCB0aGUgbm9kZSdzIGlucHV0IGFuZFxuICogcm91dGVzIHRoZSBpbnB1dCB0byB0aGUgZmlyc3QgbWF0Y2hpbmcgY2FzZSdzIG91dHB1dCBwb3J0LiBGYWxscyBiYWNrIHRvXG4gKiB0aGUgYGRlZmF1bHRgIG91dHB1dCB3aGVuIG5vIGNhc2UgbWF0Y2hlcy4gU3VwcG9ydHMgYm90aFxuICoge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb259IChncmFwaGljYWwgbW9kZSkgYW5kIHtAbGluayBDb2RlQ29uZGl0aW9ufVxuICogKGNvZGUgbW9kZSB2aWEgdGhlIHBsdWdnYWJsZSB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9KS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaE5vZGVFeGVjdXRvciB9IGZyb20gXCIuL0dyYXBoTm9kZUV4ZWN1dG9yXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUge1xuICBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgU3dpdGNoQ2FzZSxcbiAgU3dpdGNoQ2FzZUNvbmRpdGlvbixcbiAgU3dpdGNoTm9kZU1ldGFkYXRhLFxuICBDb25kaXRpb25FeHByZXNzaW9uLFxuICBDb2RlQ29uZGl0aW9uLFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL0dyYXBoRXhlY3V0aW9uRXJyb3JcIjtcbmltcG9ydCB7IENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IgfSBmcm9tIFwiLi4vbG9vcHMvQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuaW1wb3J0IHR5cGUgeyBDb2RlU2FuZGJveEV2YWx1YXRvciB9IGZyb20gXCIuL0NvZGVTYW5kYm94RXZhbHVhdG9yXCI7XG5cbi8qKlxuICogUmVhZHMgdGhlIFN3aXRjaCBtZXRhZGF0YSBmcm9tIHRoZSBub2RlIGRlZmluaXRpb24ncyBncmFwaCBtZXRhZGF0YS5cbiAqL1xuZnVuY3Rpb24gcmVhZFN3aXRjaE1ldGFkYXRhKGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dCk6IFN3aXRjaE5vZGVNZXRhZGF0YSB7XG4gIGNvbnN0IG1ldGEgPSBjb250ZXh0Lm5vZGUuZ3JhcGg/Lm1ldGFkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBpZiAoIW1ldGEpIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiIH07XG4gIGNvbnN0IHN3aXRjaE1ldGEgPSBtZXRhW1wic3dpdGNoXCJdIGFzIFN3aXRjaE5vZGVNZXRhZGF0YSB8IHVuZGVmaW5lZDtcbiAgaWYgKCFzd2l0Y2hNZXRhIHx8ICFBcnJheS5pc0FycmF5KHN3aXRjaE1ldGEuY2FzZXMpKSB7XG4gICAgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNhc2VzOiBzd2l0Y2hNZXRhLmNhc2VzLFxuICAgIGRlZmF1bHRQb3J0OiBzd2l0Y2hNZXRhLmRlZmF1bHRQb3J0ID8/IFwiZGVmYXVsdFwiLFxuICB9O1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb2RlQ29uZGl0aW9uYCAoaGFzIGB0eXBlOiBcImNvZGVcImApLlxuICovXG5mdW5jdGlvbiBpc0NvZGVDb25kaXRpb24oY29uZDogU3dpdGNoQ2FzZUNvbmRpdGlvbik6IGNvbmQgaXMgQ29kZUNvbmRpdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgY29uZCA9PT0gXCJvYmplY3RcIiAmJiBjb25kICE9PSBudWxsICYmIFwidHlwZVwiIGluIGNvbmQgJiYgY29uZC50eXBlID09PSBcImNvZGVcIjtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKGhhcyBgb3BgIGZpZWxkKS5cbiAqL1xuZnVuY3Rpb24gaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmQ6IFN3aXRjaENhc2VDb25kaXRpb24pOiBjb25kIGlzIENvbmRpdGlvbkV4cHJlc3Npb24ge1xuICByZXR1cm4gdHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiYgY29uZCAhPT0gbnVsbCAmJiBcIm9wXCIgaW4gY29uZCAmJiB0eXBlb2YgY29uZC5vcCA9PT0gXCJzdHJpbmdcIjtcbn1cblxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUuZmxvdy5zd2l0Y2hgIG5vZGVzLlxuICpcbiAqIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gaW4gb3JkZXIgYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlXG4gKiBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIFdoZW4gbm8gY2FzZSBtYXRjaGVzLCByb3V0ZXMgdG8gdGhlXG4gKiBgZGVmYXVsdGAgb3V0cHV0IHBvcnQuXG4gKlxuICogQ29uZGl0aW9uIGV2YWx1YXRpb246XG4gKiAtIGBDb25kaXRpb25FeHByZXNzaW9uYCDigJQgZXZhbHVhdGVkIHZpYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcn0uXG4gKiAtIGBDb2RlQ29uZGl0aW9uYCDigJQgZXZhbHVhdGVkIHZpYSB0aGUgcGx1Z2dhYmxlIHtAbGluayBDb2RlU2FuZGJveEV2YWx1YXRvcn1cbiAqICAgZnJvbSB0aGUgZW5naW5lJ3MgY29uZmlnLiBUaHJvd3MgYEdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRGBcbiAqICAgd2hlbiBubyBldmFsdWF0b3IgaXMgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yIGltcGxlbWVudHMgR3JhcGhOb2RlRXhlY3V0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cHJlc3Npb25FdmFsdWF0b3IgPSBuZXcgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZW5naW5lPzogeyBjb2RlU2FuZGJveEV2YWx1YXRvcj86IENvZGVTYW5kYm94RXZhbHVhdG9yIH0pIHt9XG5cbiAgYXN5bmMgZXhlY3V0ZShcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8R3JhcGhFeGVjdXRpb25WYWx1ZXM+IHtcbiAgICBjb25zdCBtZXRhID0gcmVhZFN3aXRjaE1ldGFkYXRhKGNvbnRleHQpO1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBpbnB1dFtcInZhbHVlXCJdID8/IGlucHV0O1xuXG4gICAgZm9yIChjb25zdCBzd2l0Y2hDYXNlIG9mIG1ldGEuY2FzZXMpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBhd2FpdCB0aGlzLmV2YWx1YXRlQ29uZGl0aW9uKHN3aXRjaENhc2UuY29uZGl0aW9uLCBpbnB1dFZhbHVlLCBpbnB1dCwgY29udGV4dCk7XG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICByZXR1cm4geyBbc3dpdGNoQ2FzZS5vdXRwdXRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRQb3J0ID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICByZXR1cm4geyBbZGVmYXVsdFBvcnRdOiBpbnB1dFZhbHVlIH07XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIGEgc2luZ2xlIHN3aXRjaCBjYXNlIGNvbmRpdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVDb25kaXRpb24oXG4gICAgY29uZGl0aW9uOiBTd2l0Y2hDYXNlQ29uZGl0aW9uLFxuICAgIGlucHV0VmFsdWU6IHVua25vd24sXG4gICAgZnVsbElucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKGlzQ29kZUNvbmRpdGlvbihjb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5ldmFsdWF0ZUNvZGVDb25kaXRpb24oY29uZGl0aW9uLCBmdWxsSW5wdXQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChpc0NvbmRpdGlvbkV4cHJlc3Npb24oY29uZGl0aW9uKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZShjb25kaXRpb24sIGlucHV0VmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgXCJVbmtub3duIHN3aXRjaCBjYXNlIGNvbmRpdGlvbiB0eXBlIOKAlCBtdXN0IGJlIENvbmRpdGlvbkV4cHJlc3Npb24gKG9wKSBvciBDb2RlQ29uZGl0aW9uICh0eXBlOiAnY29kZScpXCIsXG4gICAgICBcIkdSQVBIX1VOS05PV05fU1dJVENIX0NPTkRJVElPTlwiLFxuICAgICAgeyBjb25kaXRpb24gfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIGEgY29kZSBjb25kaXRpb24gdmlhIHRoZSBwbHVnZ2FibGUgc2FuZGJveCBldmFsdWF0b3IuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQ29kZUNvbmRpdGlvbihcbiAgICBjb25kaXRpb246IENvZGVDb25kaXRpb24sXG4gICAgaW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBldmFsdWF0b3IgPSB0aGlzLmVuZ2luZT8uY29kZVNhbmRib3hFdmFsdWF0b3I7XG4gICAgaWYgKCFldmFsdWF0b3IpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFxuICAgICAgICBcIkNvZGUgY29uZGl0aW9ucyByZXF1aXJlIGEgQ29kZVNhbmRib3hFdmFsdWF0b3IgdG8gYmUgcmVnaXN0ZXJlZCBpbiBHcmFwaEV4ZWN1dGlvbkVuZ2luZUNvbmZpZy5jb2RlU2FuZGJveEV2YWx1YXRvclwiLFxuICAgICAgICBcIkdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRFwiLFxuICAgICAgICB7IGNvZGU6IGNvbmRpdGlvbi5jb2RlIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgY29udGV4dC5sb2coYEV2YWx1YXRpbmcgY29kZSBjb25kaXRpb25gLCB7IGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UgPz8gXCJqYXZhc2NyaXB0XCIgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0b3IuZXZhbHVhdGUoe1xuICAgICAgY29kZTogY29uZGl0aW9uLmNvZGUsXG4gICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlLFxuICAgICAgaW5wdXQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFyZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrRUFBeUU7QUFDekUsZ0dBQTBGO0FBQzFGOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPO0lBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSTtRQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLFNBQVM7S0FDbkQsQ0FBQztBQUNOLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLElBQUk7SUFDekIsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO0FBQy9GLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQVMscUJBQXFCLENBQUMsSUFBSTtJQUMvQixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQztBQUNwRyxDQUFDO0FBQ0Q7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSx1QkFBdUI7SUFDaEMsWUFBWSxNQUFNO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksOERBQTRCLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTztRQUN4QixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO1FBQzNDLEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvRixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUNuRCxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDO1FBQ2xELE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQzdELElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE1BQU0sSUFBSSw0Q0FBbUIsQ0FBQyx1R0FBdUcsRUFBRSxnQ0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUwsQ0FBQztJQUNEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTztRQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSw0Q0FBbUIsQ0FBQyxvSEFBb0gsRUFBRSxtQ0FBbUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2TixDQUFDO1FBQ0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNqRyxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDcEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3BCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUM1QixLQUFLO1NBQ1IsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQTdDRCwwREE2Q0M7QUFDRCxreVVBQWt5VSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoRXhlY3V0aW9uRXJyb3IgfSBmcm9tIFwiLi8uLi9lcnJvcnMvR3JhcGhFeGVjdXRpb25FcnJvci5qc1wiO1xuaW1wb3J0IHsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvciB9IGZyb20gXCIuLy4uL2xvb3BzL0NvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IuanNcIjtcbi8qKlxuICogUmVhZHMgdGhlIFN3aXRjaCBtZXRhZGF0YSBmcm9tIHRoZSBub2RlIGRlZmluaXRpb24ncyBncmFwaCBtZXRhZGF0YS5cbiAqL1xuZnVuY3Rpb24gcmVhZFN3aXRjaE1ldGFkYXRhKGNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhID0gY29udGV4dC5ub2RlLmdyYXBoPy5tZXRhZGF0YTtcbiAgICBpZiAoIW1ldGEpXG4gICAgICAgIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiIH07XG4gICAgY29uc3Qgc3dpdGNoTWV0YSA9IG1ldGFbXCJzd2l0Y2hcIl07XG4gICAgaWYgKCFzd2l0Y2hNZXRhIHx8ICFBcnJheS5pc0FycmF5KHN3aXRjaE1ldGEuY2FzZXMpKSB7XG4gICAgICAgIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGNhc2VzOiBzd2l0Y2hNZXRhLmNhc2VzLFxuICAgICAgICBkZWZhdWx0UG9ydDogc3dpdGNoTWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIixcbiAgICB9O1xufVxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29kZUNvbmRpdGlvbmAgKGhhcyBgdHlwZTogXCJjb2RlXCJgKS5cbiAqL1xuZnVuY3Rpb24gaXNDb2RlQ29uZGl0aW9uKGNvbmQpIHtcbiAgICByZXR1cm4gdHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiYgY29uZCAhPT0gbnVsbCAmJiBcInR5cGVcIiBpbiBjb25kICYmIGNvbmQudHlwZSA9PT0gXCJjb2RlXCI7XG59XG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb25kaXRpb25FeHByZXNzaW9uYCAoaGFzIGBvcGAgZmllbGQpLlxuICovXG5mdW5jdGlvbiBpc0NvbmRpdGlvbkV4cHJlc3Npb24oY29uZCkge1xuICAgIHJldHVybiB0eXBlb2YgY29uZCA9PT0gXCJvYmplY3RcIiAmJiBjb25kICE9PSBudWxsICYmIFwib3BcIiBpbiBjb25kICYmIHR5cGVvZiBjb25kLm9wID09PSBcInN0cmluZ1wiO1xufVxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUuZmxvdy5zd2l0Y2hgIG5vZGVzLlxuICpcbiAqIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gaW4gb3JkZXIgYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlXG4gKiBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIFdoZW4gbm8gY2FzZSBtYXRjaGVzLCByb3V0ZXMgdG8gdGhlXG4gKiBgZGVmYXVsdGAgb3V0cHV0IHBvcnQuXG4gKlxuICogQ29uZGl0aW9uIGV2YWx1YXRpb246XG4gKiAtIGBDb25kaXRpb25FeHByZXNzaW9uYCDigJQgZXZhbHVhdGVkIHZpYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcn0uXG4gKiAtIGBDb2RlQ29uZGl0aW9uYCDigJQgZXZhbHVhdGVkIHZpYSB0aGUgcGx1Z2dhYmxlIHtAbGluayBDb2RlU2FuZGJveEV2YWx1YXRvcn1cbiAqICAgZnJvbSB0aGUgZW5naW5lJ3MgY29uZmlnLiBUaHJvd3MgYEdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRGBcbiAqICAgd2hlbiBubyBldmFsdWF0b3IgaXMgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgICBjb25zdHJ1Y3RvcihlbmdpbmUpIHtcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvciA9IG5ldyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGV4ZWN1dGUoaW5wdXQsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHJlYWRTd2l0Y2hNZXRhZGF0YShjb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG4gICAgICAgIGZvciAoY29uc3Qgc3dpdGNoQ2FzZSBvZiBtZXRhLmNhc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihzd2l0Y2hDYXNlLmNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgaW5wdXQsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3dpdGNoQ2FzZS5vdXRwdXRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQb3J0ID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICAgICAgcmV0dXJuIHsgW2RlZmF1bHRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBzaW5nbGUgc3dpdGNoIGNhc2UgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgZnVsbElucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGlmIChpc0NvZGVDb25kaXRpb24oY29uZGl0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbiwgZnVsbElucHV0LCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmRpdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUoY29uZGl0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcIlVua25vd24gc3dpdGNoIGNhc2UgY29uZGl0aW9uIHR5cGUg4oCUIG11c3QgYmUgQ29uZGl0aW9uRXhwcmVzc2lvbiAob3ApIG9yIENvZGVDb25kaXRpb24gKHR5cGU6ICdjb2RlJylcIiwgXCJHUkFQSF9VTktOT1dOX1NXSVRDSF9DT05ESVRJT05cIiwgeyBjb25kaXRpb24gfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIGNvZGUgY29uZGl0aW9uIHZpYSB0aGUgcGx1Z2dhYmxlIHNhbmRib3ggZXZhbHVhdG9yLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29kZUNvbmRpdGlvbihjb25kaXRpb24sIGlucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRvciA9IHRoaXMuZW5naW5lPy5jb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgICAgICAgaWYgKCFldmFsdWF0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFwiQ29kZSBjb25kaXRpb25zIHJlcXVpcmUgYSBDb2RlU2FuZGJveEV2YWx1YXRvciB0byBiZSByZWdpc3RlcmVkIGluIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnLmNvZGVTYW5kYm94RXZhbHVhdG9yXCIsIFwiR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEXCIsIHsgY29kZTogY29uZGl0aW9uLmNvZGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY29udGV4dC5sb2coYEV2YWx1YXRpbmcgY29kZSBjb25kaXRpb25gLCB7IGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UgPz8gXCJqYXZhc2NyaXB0XCIgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV2YWx1YXRvci5ldmFsdWF0ZSh7XG4gICAgICAgICAgICBjb2RlOiBjb25kaXRpb24uY29kZSxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVM2RwZEdOb1IzSmhjR2hPYjJSbFJYaGxZM1YwYjNJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZaM0poY0dndlpYaGxZM1YwYVc5dUwxTjNhWFJqYUVkeVlYQm9UbTlrWlVWNFpXTjFkRzl5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXMUNRU3hQUVVGUExFVkJRVVVzYlVKQlFXMUNMRVZCUVVVc01rTkJRWE5ETzBGQlEzQkZMRTlCUVU4c1JVRkJSU3cwUWtGQk5FSXNSVUZCUlN4dFJFRkJPRU03UVVGSGNrWTdPMGRCUlVjN1FVRkRTQ3hUUVVGVExHdENRVUZyUWl4RFFVRkRMRTlCUVRoQ08wbEJRM2hFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEZGQlFTdERMRU5CUVVNN1NVRkRha1lzU1VGQlNTeERRVUZETEVsQlFVazdVVUZCUlN4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeFhRVUZYTEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkRlRVFzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJiVU1zUTBGQlF6dEpRVU53UlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFJRVU53UkN4UFFVRlBMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeFhRVUZYTEVWQlFVVXNVMEZCVXl4RlFVRkZMRU5CUVVNN1NVRkRMME1zUTBGQlF6dEpRVU5FTEU5QlFVODdVVUZEVEN4TFFVRkxMRVZCUVVVc1ZVRkJWU3hEUVVGRExFdEJRVXM3VVVGRGRrSXNWMEZCVnl4RlFVRkZMRlZCUVZVc1EwRkJReXhYUVVGWExFbEJRVWtzVTBGQlV6dExRVU5xUkN4RFFVRkRPMEZCUTBvc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NVMEZCVXl4bFFVRmxMRU5CUVVNc1NVRkJlVUk3U1VGRGFFUXNUMEZCVHl4UFFVRlBMRWxCUVVrc1MwRkJTeXhSUVVGUkxFbEJRVWtzU1VGQlNTeExRVUZMTEVsQlFVa3NTVUZCU1N4TlFVRk5MRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NUVUZCVFN4RFFVRkRPMEZCUXpkR0xFTkJRVU03UVVGRlJEczdSMEZGUnp0QlFVTklMRk5CUVZNc2NVSkJRWEZDTEVOQlFVTXNTVUZCZVVJN1NVRkRkRVFzVDBGQlR5eFBRVUZQTEVsQlFVa3NTMEZCU3l4UlFVRlJMRWxCUVVrc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeEpRVUZKTEVsQlFVa3NTVUZCU1N4SlFVRkpMRTlCUVU4c1NVRkJTU3hEUVVGRExFVkJRVVVzUzBGQlN5eFJRVUZSTEVOQlFVTTdRVUZEYkVjc1EwRkJRenRCUVVWRU96czdPenM3T3pzN096czdSMEZaUnp0QlFVTklMRTFCUVUwc1QwRkJUeXgxUWtGQmRVSTdTVUZIYkVNc1dVRkJOa0lzVFVGQmQwUTdVVUZCZUVRc1YwRkJUU3hIUVVGT0xFMUJRVTBzUTBGQmEwUTdVVUZHY0VVc2QwSkJRVzFDTEVkQlFVY3NTVUZCU1N3MFFrRkJORUlzUlVGQlJTeERRVUZETzBsQlJXTXNRMEZCUXp0SlFVVjZSaXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVU5ZTEV0QlFUSkNMRVZCUXpOQ0xFOUJRVGhDTzFGQlJUbENMRTFCUVUwc1NVRkJTU3hIUVVGSExHdENRVUZyUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM3BETEUxQlFVMHNWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVTTdVVUZGTTBNc1MwRkJTeXhOUVVGTkxGVkJRVlVzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRjRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRk5CUVZNc1JVRkJSU3hWUVVGVkxFVkJRVVVzUzBGQlN5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMWxCUXk5R0xFbEJRVWtzVDBGQlR5eEZRVUZGTEVOQlFVTTdaMEpCUTFvc1QwRkJUeXhGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRE8xbEJRMnBFTEVOQlFVTTdVVUZEU0N4RFFVRkRPMUZCUlVRc1RVRkJUU3hYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NTVUZCU1N4VFFVRlRMRU5CUVVNN1VVRkRiRVFzVDBGQlR5eEZRVUZGTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFTkJRVU03U1VGRGRrTXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzUzBGQlN5eERRVUZETEdsQ1FVRnBRaXhEUVVNM1FpeFRRVUU0UWl4RlFVTTVRaXhWUVVGdFFpeEZRVU51UWl4VFFVRXJRaXhGUVVNdlFpeFBRVUU0UWp0UlFVVTVRaXhKUVVGSkxHVkJRV1VzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlN4RFFVRkRPMWxCUXk5Q0xFOUJRVThzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExGTkJRVk1zUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRia1VzUTBGQlF6dFJRVVZFTEVsQlFVa3NjVUpCUVhGQ0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVGUkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMUZCUTJ4RkxFTkJRVU03VVVGRlJDeE5RVUZOTEVsQlFVa3NiVUpCUVcxQ0xFTkJRek5DTEhWSFFVRjFSeXhGUVVOMlJ5eG5RMEZCWjBNc1JVRkRhRU1zUlVGQlJTeFRRVUZUTEVWQlFVVXNRMEZEWkN4RFFVRkRPMGxCUTBvc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwc3NTMEZCU3l4RFFVRkRMSEZDUVVGeFFpeERRVU5xUXl4VFFVRjNRaXhGUVVONFFpeExRVUV5UWl4RlFVTXpRaXhQUVVFNFFqdFJRVVU1UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEc5Q1FVRnZRaXhEUVVGRE8xRkJRM0JFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRaUVVObUxFMUJRVTBzU1VGQlNTeHRRa0ZCYlVJc1EwRkRNMElzYjBoQlFXOUlMRVZCUTNCSUxHMURRVUZ0UXl4RlFVTnVReXhGUVVGRkxFbEJRVWtzUlVGQlJTeFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUTNwQ0xFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNUVUZCVFN4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExESkNRVUV5UWl4RlFVRkZMRVZCUVVVc1VVRkJVU3hGUVVGRkxGTkJRVk1zUTBGQlF5eFJRVUZSTEVsQlFVa3NXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJRenRSUVVWcVJ5eE5RVUZOTEUxQlFVMHNSMEZCUnl4TlFVRk5MRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03V1VGRGRFTXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhKUVVGSk8xbEJRM0JDTEZGQlFWRXNSVUZCUlN4VFFVRlRMRU5CUVVNc1VVRkJVVHRaUVVNMVFpeExRVUZMTzFOQlEwNHNRMEZCUXl4RFFVRkRPMUZCUlVnc1QwRkJUeXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEyeENMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUUcxdlpIVnNaU0JwYm5SbFozSmhkR2x2Ym5NdlozSmhjR2d2WlhobFkzVjBhVzl1TDFOM2FYUmphRWR5WVhCb1RtOWtaVVY0WldOMWRHOXlYRzRnS2lCQWMzVnRiV0Z5ZVNCRmVHVmpkWFJ2Y2lCbWIzSWdkR2hsSUZOM2FYUmphQ0JtYkc5M0xXTnZiblJ5YjJ3Z2JtOWtaU0FvUkVWRFFVWXRNeklnd3FjeU1pNHlMaklwTGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVWMllXeDFZWFJsY3lCbFlXTm9JR05oYzJVbmN5QmpiMjVrYVhScGIyNGdZV2RoYVc1emRDQjBhR1VnYm05a1pTZHpJR2x1Y0hWMElHRnVaRnh1SUNvZ2NtOTFkR1Z6SUhSb1pTQnBibkIxZENCMGJ5QjBhR1VnWm1seWMzUWdiV0YwWTJocGJtY2dZMkZ6WlNkeklHOTFkSEIxZENCd2IzSjBMaUJHWVd4c2N5QmlZV05ySUhSdlhHNGdLaUIwYUdVZ1lHUmxabUYxYkhSZ0lHOTFkSEIxZENCM2FHVnVJRzV2SUdOaGMyVWdiV0YwWTJobGN5NGdVM1Z3Y0c5eWRITWdZbTkwYUZ4dUlDb2dlMEJzYVc1cklFTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNTlJQ2huY21Gd2FHbGpZV3dnYlc5a1pTa2dZVzVrSUh0QWJHbHVheUJEYjJSbFEyOXVaR2wwYVc5dWZWeHVJQ29nS0dOdlpHVWdiVzlrWlNCMmFXRWdkR2hsSUhCc2RXZG5ZV0pzWlNCN1FHeHBibXNnUTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNKOUtTNWNiaUFxTDF4dWFXMXdiM0owSUhSNWNHVWdleUJIY21Gd2FFNXZaR1ZGZUdWamRYUnZjaUI5SUdaeWIyMGdYQ0l1TDBkeVlYQm9UbTlrWlVWNFpXTjFkRzl5WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUVkeVlYQm9SWGhsWTNWMGFXOXVRMjl1ZEdWNGRDQjlJR1p5YjIwZ1hDSXVMMGR5WVhCb1JYaGxZM1YwYVc5dVEyOXVkR1Y0ZEZ3aU8xeHVhVzF3YjNKMElIUjVjR1VnZTF4dUlDQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmlBZ1UzZHBkR05vUTJGelpTeGNiaUFnVTNkcGRHTm9RMkZ6WlVOdmJtUnBkR2x2Yml4Y2JpQWdVM2RwZEdOb1RtOWtaVTFsZEdGa1lYUmhMRnh1SUNCRGIyNWthWFJwYjI1RmVIQnlaWE56YVc5dUxGeHVJQ0JEYjJSbFEyOXVaR2wwYVc5dUxGeHVmU0JtY205dElGd2lMaTR2ZEhsd1pYTmNJanRjYm1sdGNHOXlkQ0I3SUVkeVlYQm9SWGhsWTNWMGFXOXVSWEp5YjNJZ2ZTQm1jbTl0SUZ3aUxpNHZaWEp5YjNKekwwZHlZWEJvUlhobFkzVjBhVzl1UlhKeWIzSmNJanRjYm1sdGNHOXlkQ0I3SUVOdmJtUnBkR2x2YmtWNGNISmxjM05wYjI1RmRtRnNkV0YwYjNJZ2ZTQm1jbTl0SUZ3aUxpNHZiRzl2Y0hNdlEyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJrVjJZV3gxWVhSdmNsd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkRiMlJsVTJGdVpHSnZlRVYyWVd4MVlYUnZjaUI5SUdaeWIyMGdYQ0l1TDBOdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eVhDSTdYRzVjYmk4cUtseHVJQ29nVW1WaFpITWdkR2hsSUZOM2FYUmphQ0J0WlhSaFpHRjBZU0JtY205dElIUm9aU0J1YjJSbElHUmxabWx1YVhScGIyNG5jeUJuY21Gd2FDQnRaWFJoWkdGMFlTNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2NtVmhaRk4zYVhSamFFMWxkR0ZrWVhSaEtHTnZiblJsZUhRNklFZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkQ2s2SUZOM2FYUmphRTV2WkdWTlpYUmhaR0YwWVNCN1hHNGdJR052Ym5OMElHMWxkR0VnUFNCamIyNTBaWGgwTG01dlpHVXVaM0poY0dnL0xtMWxkR0ZrWVhSaElHRnpJRkpsWTI5eVpEeHpkSEpwYm1jc0lIVnVhMjV2ZDI0K0lId2dkVzVrWldacGJtVmtPMXh1SUNCcFppQW9JVzFsZEdFcElISmxkSFZ5YmlCN0lHTmhjMlZ6T2lCYlhTd2daR1ZtWVhWc2RGQnZjblE2SUZ3aVpHVm1ZWFZzZEZ3aUlIMDdYRzRnSUdOdmJuTjBJSE4zYVhSamFFMWxkR0VnUFNCdFpYUmhXMXdpYzNkcGRHTm9YQ0pkSUdGeklGTjNhWFJqYUU1dlpHVk5aWFJoWkdGMFlTQjhJSFZ1WkdWbWFXNWxaRHRjYmlBZ2FXWWdLQ0Z6ZDJsMFkyaE5aWFJoSUh4OElDRkJjbkpoZVM1cGMwRnljbUY1S0hOM2FYUmphRTFsZEdFdVkyRnpaWE1wS1NCN1hHNGdJQ0FnY21WMGRYSnVJSHNnWTJGelpYTTZJRnRkTENCa1pXWmhkV3gwVUc5eWREb2dYQ0prWldaaGRXeDBYQ0lnZlR0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnZTF4dUlDQWdJR05oYzJWek9pQnpkMmwwWTJoTlpYUmhMbU5oYzJWekxGeHVJQ0FnSUdSbFptRjFiSFJRYjNKME9pQnpkMmwwWTJoTlpYUmhMbVJsWm1GMWJIUlFiM0owSUQ4L0lGd2laR1ZtWVhWc2RGd2lMRnh1SUNCOU8xeHVmVnh1WEc0dktpcGNiaUFxSUVSbGRHVmpkSE1nZDJobGRHaGxjaUJoSUdOdmJtUnBkR2x2YmlCcGN5QmhJR0JEYjJSbFEyOXVaR2wwYVc5dVlDQW9hR0Z6SUdCMGVYQmxPaUJjSW1OdlpHVmNJbUFwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJwYzBOdlpHVkRiMjVrYVhScGIyNG9ZMjl1WkRvZ1UzZHBkR05vUTJGelpVTnZibVJwZEdsdmJpazZJR052Ym1RZ2FYTWdRMjlrWlVOdmJtUnBkR2x2YmlCN1hHNGdJSEpsZEhWeWJpQjBlWEJsYjJZZ1kyOXVaQ0E5UFQwZ1hDSnZZbXBsWTNSY0lpQW1KaUJqYjI1a0lDRTlQU0J1ZFd4c0lDWW1JRndpZEhsd1pWd2lJR2x1SUdOdmJtUWdKaVlnWTI5dVpDNTBlWEJsSUQwOVBTQmNJbU52WkdWY0lqdGNibjFjYmx4dUx5b3FYRzRnS2lCRVpYUmxZM1J6SUhkb1pYUm9aWElnWVNCamIyNWthWFJwYjI0Z2FYTWdZU0JnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2Ym1BZ0tHaGhjeUJnYjNCZ0lHWnBaV3hrS1M1Y2JpQXFMMXh1Wm5WdVkzUnBiMjRnYVhORGIyNWthWFJwYjI1RmVIQnlaWE56YVc5dUtHTnZibVE2SUZOM2FYUmphRU5oYzJWRGIyNWthWFJwYjI0cE9pQmpiMjVrSUdseklFTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNGdlMXh1SUNCeVpYUjFjbTRnZEhsd1pXOW1JR052Ym1RZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ1kyOXVaQ0FoUFQwZ2JuVnNiQ0FtSmlCY0ltOXdYQ0lnYVc0Z1kyOXVaQ0FtSmlCMGVYQmxiMllnWTI5dVpDNXZjQ0E5UFQwZ1hDSnpkSEpwYm1kY0lqdGNibjFjYmx4dUx5b3FYRzRnS2lCRmVHVmpkWFJ2Y2lCbWIzSWdZR052Y21VdVpteHZkeTV6ZDJsMFkyaGdJRzV2WkdWekxseHVJQ3BjYmlBcUlFVjJZV3gxWVhSbGN5QmxZV05vSUdOaGMyVW5jeUJqYjI1a2FYUnBiMjRnYVc0Z2IzSmtaWElnWVc1a0lISnZkWFJsY3lCMGFHVWdhVzV3ZFhRZ2RHOGdkR2hsWEc0Z0tpQm1hWEp6ZENCdFlYUmphR2x1WnlCallYTmxKM01nYjNWMGNIVjBJSEJ2Y25RdUlGZG9aVzRnYm04Z1kyRnpaU0J0WVhSamFHVnpMQ0J5YjNWMFpYTWdkRzhnZEdobFhHNGdLaUJnWkdWbVlYVnNkR0FnYjNWMGNIVjBJSEJ2Y25RdVhHNGdLbHh1SUNvZ1EyOXVaR2wwYVc5dUlHVjJZV3gxWVhScGIyNDZYRzRnS2lBdElHQkRiMjVrYVhScGIyNUZlSEJ5WlhOemFXOXVZQ0RpZ0pRZ1pYWmhiSFZoZEdWa0lIWnBZU0I3UUd4cGJtc2dRMjl1WkdsMGFXOXVSWGh3Y21WemMybHZia1YyWVd4MVlYUnZjbjB1WEc0Z0tpQXRJR0JEYjJSbFEyOXVaR2wwYVc5dVlDRGlnSlFnWlhaaGJIVmhkR1ZrSUhacFlTQjBhR1VnY0d4MVoyZGhZbXhsSUh0QWJHbHVheUJEYjJSbFUyRnVaR0p2ZUVWMllXeDFZWFJ2Y24xY2JpQXFJQ0FnWm5KdmJTQjBhR1VnWlc1bmFXNWxKM01nWTI5dVptbG5MaUJVYUhKdmQzTWdZRWRTUVZCSVgwTlBSRVZmVTBGT1JFSlBXRjlPVDFSZlEwOU9Sa2xIVlZKRlJHQmNiaUFxSUNBZ2QyaGxiaUJ1YnlCbGRtRnNkV0YwYjNJZ2FYTWdjbVZuYVhOMFpYSmxaQzVjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZOM2FYUmphRWR5WVhCb1RtOWtaVVY0WldOMWRHOXlJR2x0Y0d4bGJXVnVkSE1nUjNKaGNHaE9iMlJsUlhobFkzVjBiM0lnZTF4dUlDQndjbWwyWVhSbElISmxZV1J2Ym14NUlHVjRjSEpsYzNOcGIyNUZkbUZzZFdGMGIzSWdQU0J1WlhjZ1EyOXVaR2wwYVc5dVJYaHdjbVZ6YzJsdmJrVjJZV3gxWVhSdmNpZ3BPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLSEJ5YVhaaGRHVWdjbVZoWkc5dWJIa2daVzVuYVc1bFB6b2dleUJqYjJSbFUyRnVaR0p2ZUVWMllXeDFZWFJ2Y2o4NklFTnZaR1ZUWVc1a1ltOTRSWFpoYkhWaGRHOXlJSDBwSUh0OVhHNWNiaUFnWVhONWJtTWdaWGhsWTNWMFpTaGNiaUFnSUNCcGJuQjFkRG9nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNc1hHNGdJQ0FnWTI5dWRHVjRkRG9nUjNKaGNHaEZlR1ZqZFhScGIyNURiMjUwWlhoMFhHNGdJQ2s2SUZCeWIyMXBjMlU4UjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNK0lIdGNiaUFnSUNCamIyNXpkQ0J0WlhSaElEMGdjbVZoWkZOM2FYUmphRTFsZEdGa1lYUmhLR052Ym5SbGVIUXBPMXh1SUNBZ0lHTnZibk4wSUdsdWNIVjBWbUZzZFdVZ1BTQnBibkIxZEZ0Y0luWmhiSFZsWENKZElEOC9JR2x1Y0hWME8xeHVYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnpkMmwwWTJoRFlYTmxJRzltSUcxbGRHRXVZMkZ6WlhNcElIdGNiaUFnSUNBZ0lHTnZibk4wSUcxaGRHTm9aWE1nUFNCaGQyRnBkQ0IwYUdsekxtVjJZV3gxWVhSbFEyOXVaR2wwYVc5dUtITjNhWFJqYUVOaGMyVXVZMjl1WkdsMGFXOXVMQ0JwYm5CMWRGWmhiSFZsTENCcGJuQjFkQ3dnWTI5dWRHVjRkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjBZMmhsY3lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2V5QmJjM2RwZEdOb1EyRnpaUzV2ZFhSd2RYUlFiM0owWFRvZ2FXNXdkWFJXWVd4MVpTQjlPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUdSbFptRjFiSFJRYjNKMElEMGdiV1YwWVM1a1pXWmhkV3gwVUc5eWRDQS9QeUJjSW1SbFptRjFiSFJjSWp0Y2JpQWdJQ0J5WlhSMWNtNGdleUJiWkdWbVlYVnNkRkJ2Y25SZE9pQnBibkIxZEZaaGJIVmxJSDA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JYWmhiSFZoZEdWeklHRWdjMmx1WjJ4bElITjNhWFJqYUNCallYTmxJR052Ym1ScGRHbHZiaTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdaWFpoYkhWaGRHVkRiMjVrYVhScGIyNG9YRzRnSUNBZ1kyOXVaR2wwYVc5dU9pQlRkMmwwWTJoRFlYTmxRMjl1WkdsMGFXOXVMRnh1SUNBZ0lHbHVjSFYwVm1Gc2RXVTZJSFZ1YTI1dmQyNHNYRzRnSUNBZ1puVnNiRWx1Y0hWME9pQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmlBZ0lDQmpiMjUwWlhoME9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtOdmJuUmxlSFJjYmlBZ0tUb2dVSEp2YldselpUeGliMjlzWldGdVBpQjdYRzRnSUNBZ2FXWWdLR2x6UTI5a1pVTnZibVJwZEdsdmJpaGpiMjVrYVhScGIyNHBLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bGRtRnNkV0YwWlVOdlpHVkRiMjVrYVhScGIyNG9ZMjl1WkdsMGFXOXVMQ0JtZFd4c1NXNXdkWFFzSUdOdmJuUmxlSFFwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGMwTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNG9ZMjl1WkdsMGFXOXVLU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVpYaHdjbVZ6YzJsdmJrVjJZV3gxWVhSdmNpNWxkbUZzZFdGMFpTaGpiMjVrYVhScGIyNHNJR2x1Y0hWMFZtRnNkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvY205M0lHNWxkeUJIY21Gd2FFVjRaV04xZEdsdmJrVnljbTl5S0Z4dUlDQWdJQ0FnWENKVmJtdHViM2R1SUhOM2FYUmphQ0JqWVhObElHTnZibVJwZEdsdmJpQjBlWEJsSU9LQWxDQnRkWE4wSUdKbElFTnZibVJwZEdsdmJrVjRjSEpsYzNOcGIyNGdLRzl3S1NCdmNpQkRiMlJsUTI5dVpHbDBhVzl1SUNoMGVYQmxPaUFuWTI5a1pTY3BYQ0lzWEc0Z0lDQWdJQ0JjSWtkU1FWQklYMVZPUzA1UFYwNWZVMWRKVkVOSVgwTlBUa1JKVkVsUFRsd2lMRnh1SUNBZ0lDQWdleUJqYjI1a2FYUnBiMjRnZlZ4dUlDQWdJQ2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JYWmhiSFZoZEdWeklHRWdZMjlrWlNCamIyNWthWFJwYjI0Z2RtbGhJSFJvWlNCd2JIVm5aMkZpYkdVZ2MyRnVaR0p2ZUNCbGRtRnNkV0YwYjNJdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHRnplVzVqSUdWMllXeDFZWFJsUTI5a1pVTnZibVJwZEdsdmJpaGNiaUFnSUNCamIyNWthWFJwYjI0NklFTnZaR1ZEYjI1a2FYUnBiMjRzWEc0Z0lDQWdhVzV3ZFhRNklFZHlZWEJvUlhobFkzVjBhVzl1Vm1Gc2RXVnpMRnh1SUNBZ0lHTnZiblJsZUhRNklFZHlZWEJvUlhobFkzVjBhVzl1UTI5dWRHVjRkRnh1SUNBcE9pQlFjbTl0YVhObFBHSnZiMnhsWVc0K0lIdGNiaUFnSUNCamIyNXpkQ0JsZG1Gc2RXRjBiM0lnUFNCMGFHbHpMbVZ1WjJsdVpUOHVZMjlrWlZOaGJtUmliM2hGZG1Gc2RXRjBiM0k3WEc0Z0lDQWdhV1lnS0NGbGRtRnNkV0YwYjNJcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkhjbUZ3YUVWNFpXTjFkR2x2YmtWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JjSWtOdlpHVWdZMjl1WkdsMGFXOXVjeUJ5WlhGMWFYSmxJR0VnUTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNJZ2RHOGdZbVVnY21WbmFYTjBaWEpsWkNCcGJpQkhjbUZ3YUVWNFpXTjFkR2x2YmtWdVoybHVaVU52Ym1acFp5NWpiMlJsVTJGdVpHSnZlRVYyWVd4MVlYUnZjbHdpTEZ4dUlDQWdJQ0FnSUNCY0lrZFNRVkJJWDBOUFJFVmZVMEZPUkVKUFdGOU9UMVJmUTA5T1JrbEhWVkpGUkZ3aUxGeHVJQ0FnSUNBZ0lDQjdJR052WkdVNklHTnZibVJwZEdsdmJpNWpiMlJsSUgxY2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWVhkaGFYUWdZMjl1ZEdWNGRDNXNiMmNvWUVWMllXeDFZWFJwYm1jZ1kyOWtaU0JqYjI1a2FYUnBiMjVnTENCN0lHeGhibWQxWVdkbE9pQmpiMjVrYVhScGIyNHViR0Z1WjNWaFoyVWdQejhnWENKcVlYWmhjMk55YVhCMFhDSWdmU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQmhkMkZwZENCbGRtRnNkV0YwYjNJdVpYWmhiSFZoZEdVb2UxeHVJQ0FnSUNBZ1kyOWtaVG9nWTI5dVpHbDBhVzl1TG1OdlpHVXNYRzRnSUNBZ0lDQnNZVzVuZFdGblpUb2dZMjl1WkdsMGFXOXVMbXhoYm1kMVlXZGxMRnh1SUNBZ0lDQWdhVzV3ZFhRc1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnSVNGeVpYTjFiSFE3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZ3JhcGgvZXhlY3V0aW9uL1N3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMkNBQXNDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxtREFBOEM7QUFHckY7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQixDQUN6QixPQUE4QjtJQUU5QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUVwQixDQUFDO0lBQ2QsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBbUMsQ0FBQztJQUNwRSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUNELE9BQU87UUFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXLElBQUksU0FBUztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBeUI7SUFDaEQsT0FBTyxDQUNMLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsSUFBSSxLQUFLLElBQUk7UUFDYixNQUFNLElBQUksSUFBSTtRQUNkLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FB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bGUgaW50ZWdyYXRpb25zL2dyYXBoL2V4ZWN1dGlvbi9Td2l0Y2hHcmFwaE5vZGVFeGVjdXRvclxuICogQHN1bW1hcnkgRXhlY3V0b3IgZm9yIHRoZSBTd2l0Y2ggZmxvdy1jb250cm9sIG5vZGUgKERFQ0FGLTMyIMKnMjIuMi4yKS5cbiAqIEBkZXNjcmlwdGlvbiBFdmFsdWF0ZXMgZWFjaCBjYXNlJ3MgY29uZGl0aW9uIGFnYWluc3QgdGhlIG5vZGUncyBpbnB1dCBhbmRcbiAqIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlIGZpcnN0IG1hdGNoaW5nIGNhc2UncyBvdXRwdXQgcG9ydC4gRmFsbHMgYmFjayB0b1xuICogdGhlIGBkZWZhdWx0YCBvdXRwdXQgd2hlbiBubyBjYXNlIG1hdGNoZXMuIFN1cHBvcnRzIGJvdGhcbiAqIHtAbGluayBDb25kaXRpb25FeHByZXNzaW9ufSAoZ3JhcGhpY2FsIG1vZGUpIGFuZCB7QGxpbmsgQ29kZUNvbmRpdGlvbn1cbiAqIChjb2RlIG1vZGUgdmlhIHRoZSBwbHVnZ2FibGUge0BsaW5rIENvZGVTYW5kYm94RXZhbHVhdG9yfSkuXG4gKi9cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi9HcmFwaE5vZGVFeGVjdXRvclwiO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvbkNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcbiAgR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gIFN3aXRjaENhc2VDb25kaXRpb24sXG4gIFN3aXRjaE5vZGVNZXRhZGF0YSxcbiAgQ29uZGl0aW9uRXhwcmVzc2lvbixcbiAgQ29kZUNvbmRpdGlvbixcbn0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yXCI7XG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4uL2xvb3BzL0NvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3JcIjtcbmltcG9ydCB0eXBlIHsgQ29kZVNhbmRib3hFdmFsdWF0b3IgfSBmcm9tIFwiLi9Db2RlU2FuZGJveEV2YWx1YXRvclwiO1xuXG4vKipcbiAqIFJlYWRzIHRoZSBTd2l0Y2ggbWV0YWRhdGEgZnJvbSB0aGUgbm9kZSBkZWZpbml0aW9uJ3MgZ3JhcGggbWV0YWRhdGEuXG4gKi9cbmZ1bmN0aW9uIHJlYWRTd2l0Y2hNZXRhZGF0YShcbiAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4pOiBTd2l0Y2hOb2RlTWV0YWRhdGEge1xuICBjb25zdCBtZXRhID0gY29udGV4dC5ub2RlLmdyYXBoPy5tZXRhZGF0YSBhc1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IHVuZGVmaW5lZDtcbiAgaWYgKCFtZXRhKSByZXR1cm4geyBjYXNlczogW10sIGRlZmF1bHRQb3J0OiBcImRlZmF1bHRcIiB9O1xuICBjb25zdCBzd2l0Y2hNZXRhID0gbWV0YVtcInN3aXRjaFwiXSBhcyBTd2l0Y2hOb2RlTWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGlmICghc3dpdGNoTWV0YSB8fCAhQXJyYXkuaXNBcnJheShzd2l0Y2hNZXRhLmNhc2VzKSkge1xuICAgIHJldHVybiB7IGNhc2VzOiBbXSwgZGVmYXVsdFBvcnQ6IFwiZGVmYXVsdFwiIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjYXNlczogc3dpdGNoTWV0YS5jYXNlcyxcbiAgICBkZWZhdWx0UG9ydDogc3dpdGNoTWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIixcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29kZUNvbmRpdGlvbmAgKGhhcyBgdHlwZTogXCJjb2RlXCJgKS5cbiAqL1xuZnVuY3Rpb24gaXNDb2RlQ29uZGl0aW9uKGNvbmQ6IFN3aXRjaENhc2VDb25kaXRpb24pOiBjb25kIGlzIENvZGVDb25kaXRpb24ge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBjb25kID09PSBcIm9iamVjdFwiICYmXG4gICAgY29uZCAhPT0gbnVsbCAmJlxuICAgIFwidHlwZVwiIGluIGNvbmQgJiZcbiAgICBjb25kLnR5cGUgPT09IFwiY29kZVwiXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0cyB3aGV0aGVyIGEgY29uZGl0aW9uIGlzIGEgYENvbmRpdGlvbkV4cHJlc3Npb25gIChoYXMgYG9wYCBmaWVsZCkuXG4gKi9cbmZ1bmN0aW9uIGlzQ29uZGl0aW9uRXhwcmVzc2lvbihcbiAgY29uZDogU3dpdGNoQ2FzZUNvbmRpdGlvblxuKTogY29uZCBpcyBDb25kaXRpb25FeHByZXNzaW9uIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgY29uZCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIGNvbmQgIT09IG51bGwgJiZcbiAgICBcIm9wXCIgaW4gY29uZCAmJlxuICAgIHR5cGVvZiBjb25kLm9wID09PSBcInN0cmluZ1wiXG4gICk7XG59XG5cbi8qKlxuICogRXhlY3V0b3IgZm9yIGBjb3JlLmZsb3cuc3dpdGNoYCBub2Rlcy5cbiAqXG4gKiBFdmFsdWF0ZXMgZWFjaCBjYXNlJ3MgY29uZGl0aW9uIGluIG9yZGVyIGFuZCByb3V0ZXMgdGhlIGlucHV0IHRvIHRoZVxuICogZmlyc3QgbWF0Y2hpbmcgY2FzZSdzIG91dHB1dCBwb3J0LiBXaGVuIG5vIGNhc2UgbWF0Y2hlcywgcm91dGVzIHRvIHRoZVxuICogYGRlZmF1bHRgIG91dHB1dCBwb3J0LlxuICpcbiAqIENvbmRpdGlvbiBldmFsdWF0aW9uOlxuICogLSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAg4oCUIGV2YWx1YXRlZCB2aWEge0BsaW5rIENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3J9LlxuICogLSBgQ29kZUNvbmRpdGlvbmAg4oCUIGV2YWx1YXRlZCB2aWEgdGhlIHBsdWdnYWJsZSB7QGxpbmsgQ29kZVNhbmRib3hFdmFsdWF0b3J9XG4gKiAgIGZyb20gdGhlIGVuZ2luZSdzIGNvbmZpZy4gVGhyb3dzIGBHUkFQSF9DT0RFX1NBTkRCT1hfTk9UX0NPTkZJR1VSRURgXG4gKiAgIHdoZW4gbm8gZXZhbHVhdG9yIGlzIHJlZ2lzdGVyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvciBpbXBsZW1lbnRzIEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBleHByZXNzaW9uRXZhbHVhdG9yID0gbmV3IENvbmRpdGlvbkV4cHJlc3Npb25FdmFsdWF0b3IoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZT86IHsgY29kZVNhbmRib3hFdmFsdWF0b3I/OiBDb2RlU2FuZGJveEV2YWx1YXRvciB9XG4gICkge31cblxuICBhc3luYyBleGVjdXRlKFxuICAgIGlucHV0OiBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbiAgICBjb250ZXh0OiBHcmFwaEV4ZWN1dGlvbkNvbnRleHRcbiAgKTogUHJvbWlzZTxHcmFwaEV4ZWN1dGlvblZhbHVlcz4ge1xuICAgIGNvbnN0IG1ldGEgPSByZWFkU3dpdGNoTWV0YWRhdGEoY29udGV4dCk7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG5cbiAgICBmb3IgKGNvbnN0IHN3aXRjaENhc2Ugb2YgbWV0YS5jYXNlcykge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGF3YWl0IHRoaXMuZXZhbHVhdGVDb25kaXRpb24oXG4gICAgICAgIHN3aXRjaENhc2UuY29uZGl0aW9uLFxuICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgY29udGV4dFxuICAgICAgKTtcbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB7IFtzd2l0Y2hDYXNlLm91dHB1dFBvcnRdOiBpbnB1dFZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFBvcnQgPSBtZXRhLmRlZmF1bHRQb3J0ID8/IFwiZGVmYXVsdFwiO1xuICAgIHJldHVybiB7IFtkZWZhdWx0UG9ydF06IGlucHV0VmFsdWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSBzaW5nbGUgc3dpdGNoIGNhc2UgY29uZGl0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUNvbmRpdGlvbihcbiAgICBjb25kaXRpb246IFN3aXRjaENhc2VDb25kaXRpb24sXG4gICAgaW5wdXRWYWx1ZTogdW5rbm93bixcbiAgICBmdWxsSW5wdXQ6IEdyYXBoRXhlY3V0aW9uVmFsdWVzLFxuICAgIGNvbnRleHQ6IEdyYXBoRXhlY3V0aW9uQ29udGV4dFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoaXNDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbikpIHtcbiAgICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQ29kZUNvbmRpdGlvbihjb25kaXRpb24sIGZ1bGxJbnB1dCwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ29uZGl0aW9uRXhwcmVzc2lvbihjb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKGNvbmRpdGlvbiwgaW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICBcIlVua25vd24gc3dpdGNoIGNhc2UgY29uZGl0aW9uIHR5cGUg4oCUIG11c3QgYmUgQ29uZGl0aW9uRXhwcmVzc2lvbiAob3ApIG9yIENvZGVDb25kaXRpb24gKHR5cGU6ICdjb2RlJylcIixcbiAgICAgIFwiR1JBUEhfVU5LTk9XTl9TV0lUQ0hfQ09ORElUSU9OXCIsXG4gICAgICB7IGNvbmRpdGlvbiB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgYSBjb2RlIGNvbmRpdGlvbiB2aWEgdGhlIHBsdWdnYWJsZSBzYW5kYm94IGV2YWx1YXRvci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVDb2RlQ29uZGl0aW9uKFxuICAgIGNvbmRpdGlvbjogQ29kZUNvbmRpdGlvbixcbiAgICBpbnB1dDogR3JhcGhFeGVjdXRpb25WYWx1ZXMsXG4gICAgY29udGV4dDogR3JhcGhFeGVjdXRpb25Db250ZXh0XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGV2YWx1YXRvciA9IHRoaXMuZW5naW5lPy5jb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgICBpZiAoIWV2YWx1YXRvcikge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoRXhlY3V0aW9uRXJyb3IoXG4gICAgICAgIFwiQ29kZSBjb25kaXRpb25zIHJlcXVpcmUgYSBDb2RlU2FuZGJveEV2YWx1YXRvciB0byBiZSByZWdpc3RlcmVkIGluIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnLmNvZGVTYW5kYm94RXZhbHVhdG9yXCIsXG4gICAgICAgIFwiR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEXCIsXG4gICAgICAgIHsgY29kZTogY29uZGl0aW9uLmNvZGUgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBhd2FpdCBjb250ZXh0LmxvZyhgRXZhbHVhdGluZyBjb2RlIGNvbmRpdGlvbmAsIHtcbiAgICAgIGxhbmd1YWdlOiBjb25kaXRpb24ubGFuZ3VhZ2UgPz8gXCJqYXZhc2NyaXB0XCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0b3IuZXZhbHVhdGUoe1xuICAgICAgY29kZTogY29uZGl0aW9uLmNvZGUsXG4gICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlLFxuICAgICAgaW5wdXQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFyZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dpdGNoR3JhcGhOb2RlRXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJTd2l0Y2hHcmFwaE5vZGVFeGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrRUFBeUU7QUFDekUsZ0dBQTBGO0FBQzFGOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxPQUFPO0lBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztJQUMxQyxJQUFJLENBQUMsSUFBSTtRQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFDRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVyxJQUFJLFNBQVM7S0FDbkQsQ0FBQztBQUNOLENBQUM7QUFDRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLElBQUk7SUFDekIsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDNUIsSUFBSSxLQUFLLElBQUk7UUFDYixNQUFNLElBQUksSUFBSTtRQUNkLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEOztHQUVHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJO0lBQy9CLE9BQU8sQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRO1FBQzVCLElBQUksS0FBSyxJQUFJO1FBQ2IsSUFBSSxJQUFJLElBQUk7UUFDWixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsdUJBQXVCO0lBQ2hDLFlBQVksTUFBTTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLDhEQUE0QixFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU87UUFDeEIsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUMzQyxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDbkQsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQztRQUNsRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTztRQUM3RCxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxNQUFNLElBQUksNENBQW1CLENBQUMsdUdBQXVHLEVBQUUsZ0NBQWdDLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVMLENBQUM7SUFDRDs7T0FFRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU87UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksNENBQW1CLENBQUMsb0hBQW9ILEVBQUUsbUNBQW1DLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdk4sQ0FBQztRQUNELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRTtZQUMzQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsSUFBSSxZQUFZO1NBQy9DLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLEtBQUs7U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBL0NELDBEQStDQztBQUNELGsvVUFBay9VIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25FcnJvciB9IGZyb20gXCIuLy4uL2Vycm9ycy9HcmFwaEV4ZWN1dGlvbkVycm9yLmpzXCI7XG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yIH0gZnJvbSBcIi4vLi4vbG9vcHMvQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvci5qc1wiO1xuLyoqXG4gKiBSZWFkcyB0aGUgU3dpdGNoIG1ldGFkYXRhIGZyb20gdGhlIG5vZGUgZGVmaW5pdGlvbidzIGdyYXBoIG1ldGFkYXRhLlxuICovXG5mdW5jdGlvbiByZWFkU3dpdGNoTWV0YWRhdGEoY29udGV4dCkge1xuICAgIGNvbnN0IG1ldGEgPSBjb250ZXh0Lm5vZGUuZ3JhcGg/Lm1ldGFkYXRhO1xuICAgIGlmICghbWV0YSlcbiAgICAgICAgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgICBjb25zdCBzd2l0Y2hNZXRhID0gbWV0YVtcInN3aXRjaFwiXTtcbiAgICBpZiAoIXN3aXRjaE1ldGEgfHwgIUFycmF5LmlzQXJyYXkoc3dpdGNoTWV0YS5jYXNlcykpIHtcbiAgICAgICAgcmV0dXJuIHsgY2FzZXM6IFtdLCBkZWZhdWx0UG9ydDogXCJkZWZhdWx0XCIgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2FzZXM6IHN3aXRjaE1ldGEuY2FzZXMsXG4gICAgICAgIGRlZmF1bHRQb3J0OiBzd2l0Y2hNZXRhLmRlZmF1bHRQb3J0ID8/IFwiZGVmYXVsdFwiLFxuICAgIH07XG59XG4vKipcbiAqIERldGVjdHMgd2hldGhlciBhIGNvbmRpdGlvbiBpcyBhIGBDb2RlQ29uZGl0aW9uYCAoaGFzIGB0eXBlOiBcImNvZGVcImApLlxuICovXG5mdW5jdGlvbiBpc0NvZGVDb25kaXRpb24oY29uZCkge1xuICAgIHJldHVybiAodHlwZW9mIGNvbmQgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgY29uZCAhPT0gbnVsbCAmJlxuICAgICAgICBcInR5cGVcIiBpbiBjb25kICYmXG4gICAgICAgIGNvbmQudHlwZSA9PT0gXCJjb2RlXCIpO1xufVxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgYSBjb25kaXRpb24gaXMgYSBgQ29uZGl0aW9uRXhwcmVzc2lvbmAgKGhhcyBgb3BgIGZpZWxkKS5cbiAqL1xuZnVuY3Rpb24gaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmQpIHtcbiAgICByZXR1cm4gKHR5cGVvZiBjb25kID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIGNvbmQgIT09IG51bGwgJiZcbiAgICAgICAgXCJvcFwiIGluIGNvbmQgJiZcbiAgICAgICAgdHlwZW9mIGNvbmQub3AgPT09IFwic3RyaW5nXCIpO1xufVxuLyoqXG4gKiBFeGVjdXRvciBmb3IgYGNvcmUuZmxvdy5zd2l0Y2hgIG5vZGVzLlxuICpcbiAqIEV2YWx1YXRlcyBlYWNoIGNhc2UncyBjb25kaXRpb24gaW4gb3JkZXIgYW5kIHJvdXRlcyB0aGUgaW5wdXQgdG8gdGhlXG4gKiBmaXJzdCBtYXRjaGluZyBjYXNlJ3Mgb3V0cHV0IHBvcnQuIFdoZW4gbm8gY2FzZSBtYXRjaGVzLCByb3V0ZXMgdG8gdGhlXG4gKiBgZGVmYXVsdGAgb3V0cHV0IHBvcnQuXG4gKlxuICogQ29uZGl0aW9uIGV2YWx1YXRpb246XG4gKiAtIGBDb25kaXRpb25FeHByZXNzaW9uYCDigJQgZXZhbHVhdGVkIHZpYSB7QGxpbmsgQ29uZGl0aW9uRXhwcmVzc2lvbkV2YWx1YXRvcn0uXG4gKiAtIGBDb2RlQ29uZGl0aW9uYCDigJQgZXZhbHVhdGVkIHZpYSB0aGUgcGx1Z2dhYmxlIHtAbGluayBDb2RlU2FuZGJveEV2YWx1YXRvcn1cbiAqICAgZnJvbSB0aGUgZW5naW5lJ3MgY29uZmlnLiBUaHJvd3MgYEdSQVBIX0NPREVfU0FOREJPWF9OT1RfQ09ORklHVVJFRGBcbiAqICAgd2hlbiBubyBldmFsdWF0b3IgaXMgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFN3aXRjaEdyYXBoTm9kZUV4ZWN1dG9yIHtcbiAgICBjb25zdHJ1Y3RvcihlbmdpbmUpIHtcbiAgICAgICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvciA9IG5ldyBDb25kaXRpb25FeHByZXNzaW9uRXZhbHVhdG9yKCk7XG4gICAgfVxuICAgIGFzeW5jIGV4ZWN1dGUoaW5wdXQsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgbWV0YSA9IHJlYWRTd2l0Y2hNZXRhZGF0YShjb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGlucHV0W1widmFsdWVcIl0gPz8gaW5wdXQ7XG4gICAgICAgIGZvciAoY29uc3Qgc3dpdGNoQ2FzZSBvZiBtZXRhLmNhc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihzd2l0Y2hDYXNlLmNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgaW5wdXQsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBbc3dpdGNoQ2FzZS5vdXRwdXRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZmF1bHRQb3J0ID0gbWV0YS5kZWZhdWx0UG9ydCA/PyBcImRlZmF1bHRcIjtcbiAgICAgICAgcmV0dXJuIHsgW2RlZmF1bHRQb3J0XTogaW5wdXRWYWx1ZSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBzaW5nbGUgc3dpdGNoIGNhc2UgY29uZGl0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29uZGl0aW9uKGNvbmRpdGlvbiwgaW5wdXRWYWx1ZSwgZnVsbElucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGlmIChpc0NvZGVDb25kaXRpb24oY29uZGl0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVDb2RlQ29uZGl0aW9uKGNvbmRpdGlvbiwgZnVsbElucHV0LCBjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDb25kaXRpb25FeHByZXNzaW9uKGNvbmRpdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUoY29uZGl0aW9uLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgR3JhcGhFeGVjdXRpb25FcnJvcihcIlVua25vd24gc3dpdGNoIGNhc2UgY29uZGl0aW9uIHR5cGUg4oCUIG11c3QgYmUgQ29uZGl0aW9uRXhwcmVzc2lvbiAob3ApIG9yIENvZGVDb25kaXRpb24gKHR5cGU6ICdjb2RlJylcIiwgXCJHUkFQSF9VTktOT1dOX1NXSVRDSF9DT05ESVRJT05cIiwgeyBjb25kaXRpb24gfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIGNvZGUgY29uZGl0aW9uIHZpYSB0aGUgcGx1Z2dhYmxlIHNhbmRib3ggZXZhbHVhdG9yLlxuICAgICAqL1xuICAgIGFzeW5jIGV2YWx1YXRlQ29kZUNvbmRpdGlvbihjb25kaXRpb24sIGlucHV0LCBjb250ZXh0KSB7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRvciA9IHRoaXMuZW5naW5lPy5jb2RlU2FuZGJveEV2YWx1YXRvcjtcbiAgICAgICAgaWYgKCFldmFsdWF0b3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBHcmFwaEV4ZWN1dGlvbkVycm9yKFwiQ29kZSBjb25kaXRpb25zIHJlcXVpcmUgYSBDb2RlU2FuZGJveEV2YWx1YXRvciB0byBiZSByZWdpc3RlcmVkIGluIEdyYXBoRXhlY3V0aW9uRW5naW5lQ29uZmlnLmNvZGVTYW5kYm94RXZhbHVhdG9yXCIsIFwiR1JBUEhfQ09ERV9TQU5EQk9YX05PVF9DT05GSUdVUkVEXCIsIHsgY29kZTogY29uZGl0aW9uLmNvZGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY29udGV4dC5sb2coYEV2YWx1YXRpbmcgY29kZSBjb25kaXRpb25gLCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogY29uZGl0aW9uLmxhbmd1YWdlID8/IFwiamF2YXNjcmlwdFwiLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdG9yLmV2YWx1YXRlKHtcbiAgICAgICAgICAgIGNvZGU6IGNvbmRpdGlvbi5jb2RlLFxuICAgICAgICAgICAgbGFuZ3VhZ2U6IGNvbmRpdGlvbi5sYW5ndWFnZSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVUzZHBkR05vUjNKaGNHaE9iMlJsUlhobFkzVjBiM0l1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdlozSmhjR2d2WlhobFkzVjBhVzl1TDFOM2FYUmphRWR5WVhCb1RtOWtaVVY0WldOMWRHOXlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVd0Q1FTeFBRVUZQTEVWQlFVVXNiVUpCUVcxQ0xFVkJRVVVzTWtOQlFYTkRPMEZCUTNCRkxFOUJRVThzUlVGQlJTdzBRa0ZCTkVJc1JVRkJSU3h0UkVGQk9FTTdRVUZIY2tZN08wZEJSVWM3UVVGRFNDeFRRVUZUTEd0Q1FVRnJRaXhEUVVONlFpeFBRVUU0UWp0SlFVVTVRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hSUVVWd1FpeERRVUZETzBsQlEyUXNTVUZCU1N4RFFVRkRMRWxCUVVrN1VVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGRGVFUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQmJVTXNRMEZCUXp0SlFVTndSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXp0UlFVTndSQ3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRkxFTkJRVU03U1VGREwwTXNRMEZCUXp0SlFVTkVMRTlCUVU4N1VVRkRUQ3hMUVVGTExFVkJRVVVzVlVGQlZTeERRVUZETEV0QlFVczdVVUZEZGtJc1YwRkJWeXhGUVVGRkxGVkJRVlVzUTBGQlF5eFhRVUZYTEVsQlFVa3NVMEZCVXp0TFFVTnFSQ3hEUVVGRE8wRkJRMG9zUTBGQlF6dEJRVVZFT3p0SFFVVkhPMEZCUTBnc1UwRkJVeXhsUVVGbExFTkJRVU1zU1VGQmVVSTdTVUZEYUVRc1QwRkJUeXhEUVVOTUxFOUJRVThzU1VGQlNTeExRVUZMTEZGQlFWRTdVVUZEZUVJc1NVRkJTU3hMUVVGTExFbEJRVWs3VVVGRFlpeE5RVUZOTEVsQlFVa3NTVUZCU1R0UlFVTmtMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzVFVGQlRTeERRVU55UWl4RFFVRkRPMEZCUTBvc1EwRkJRenRCUVVWRU96dEhRVVZITzBGQlEwZ3NVMEZCVXl4eFFrRkJjVUlzUTBGRE5VSXNTVUZCZVVJN1NVRkZla0lzVDBGQlR5eERRVU5NTEU5QlFVOHNTVUZCU1N4TFFVRkxMRkZCUVZFN1VVRkRlRUlzU1VGQlNTeExRVUZMTEVsQlFVazdVVUZEWWl4SlFVRkpMRWxCUVVrc1NVRkJTVHRSUVVOYUxFOUJRVThzU1VGQlNTeERRVUZETEVWQlFVVXNTMEZCU3l4UlFVRlJMRU5CUXpWQ0xFTkJRVU03UVVGRFNpeERRVUZETzBGQlJVUTdPenM3T3pzN096czdPenRIUVZsSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEhWQ1FVRjFRanRKUVVkc1F5eFpRVU50UWl4TlFVRjNSRHRSUVVGNFJDeFhRVUZOTEVkQlFVNHNUVUZCVFN4RFFVRnJSRHRSUVVneFJDeDNRa0ZCYlVJc1IwRkJSeXhKUVVGSkxEUkNRVUUwUWl4RlFVRkZMRU5CUVVNN1NVRkpka1VzUTBGQlF6dEpRVVZLTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUTFnc1MwRkJNa0lzUlVGRE0wSXNUMEZCT0VJN1VVRkZPVUlzVFVGQlRTeEpRVUZKTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEZWtNc1RVRkJUU3hWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJRenRSUVVVelF5eExRVUZMTEUxQlFVMHNWVUZCVlN4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU53UXl4TlFVRk5MRTlCUVU4c1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkRNVU1zVlVGQlZTeERRVUZETEZOQlFWTXNSVUZEY0VJc1ZVRkJWU3hGUVVOV0xFdEJRVXNzUlVGRFRDeFBRVUZQTEVOQlExSXNRMEZCUXp0WlFVTkdMRWxCUVVrc1QwRkJUeXhGUVVGRkxFTkJRVU03WjBKQlExb3NUMEZCVHl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEZWQlFWVXNSVUZCUlN4RFFVRkRPMWxCUTJwRUxFTkJRVU03VVVGRFNDeERRVUZETzFGQlJVUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzU1VGQlNTeFRRVUZUTEVOQlFVTTdVVUZEYkVRc1QwRkJUeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNWVUZCVlN4RlFVRkZMRU5CUVVNN1NVRkRka01zUTBGQlF6dEpRVVZFT3p0UFFVVkhPMGxCUTBzc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVTTNRaXhUUVVFNFFpeEZRVU01UWl4VlFVRnRRaXhGUVVOdVFpeFRRVUVyUWl4RlFVTXZRaXhQUVVFNFFqdFJRVVU1UWl4SlFVRkpMR1ZCUVdVc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTeERRVUZETzFsQlF5OUNMRTlCUVU4c1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEYmtVc1EwRkJRenRSUVVWRUxFbEJRVWtzY1VKQlFYRkNMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU55UXl4UFFVRlBMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzFGQlEyeEZMRU5CUVVNN1VVRkZSQ3hOUVVGTkxFbEJRVWtzYlVKQlFXMUNMRU5CUXpOQ0xIVkhRVUYxUnl4RlFVTjJSeXhuUTBGQlowTXNSVUZEYUVNc1JVRkJSU3hUUVVGVExFVkJRVVVzUTBGRFpDeERRVUZETzBsQlEwb3NRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMHNzUzBGQlN5eERRVUZETEhGQ1FVRnhRaXhEUVVOcVF5eFRRVUYzUWl4RlFVTjRRaXhMUVVFeVFpeEZRVU16UWl4UFFVRTRRanRSUVVVNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxHOUNRVUZ2UWl4RFFVRkRPMUZCUTNCRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXp0WlFVTm1MRTFCUVUwc1NVRkJTU3h0UWtGQmJVSXNRMEZETTBJc2IwaEJRVzlJTEVWQlEzQklMRzFEUVVGdFF5eEZRVU51UXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlEzcENMRU5CUVVNN1VVRkRTaXhEUVVGRE8xRkJSVVFzVFVGQlRTeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMREpDUVVFeVFpeEZRVUZGTzFsQlF6ZERMRkZCUVZFc1JVRkJSU3hUUVVGVExFTkJRVU1zVVVGQlVTeEpRVUZKTEZsQlFWazdVMEZETjBNc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeE5RVUZOTEVkQlFVY3NUVUZCVFN4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRE8xbEJRM1JETEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1NVRkJTVHRaUVVOd1FpeFJRVUZSTEVWQlFVVXNVMEZCVXl4RFFVRkRMRkZCUVZFN1dVRkROVUlzUzBGQlN6dFRRVU5PTEVOQlFVTXNRMEZCUXp0UlFVVklMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU5zUWl4RFFVRkRPME5CUTBZaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaXBjYmlBcUlFQnRiMlIxYkdVZ2FXNTBaV2R5WVhScGIyNXpMMmR5WVhCb0wyVjRaV04xZEdsdmJpOVRkMmwwWTJoSGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2x4dUlDb2dRSE4xYlcxaGNua2dSWGhsWTNWMGIzSWdabTl5SUhSb1pTQlRkMmwwWTJnZ1pteHZkeTFqYjI1MGNtOXNJRzV2WkdVZ0tFUkZRMEZHTFRNeUlNS25Nakl1TWk0eUtTNWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQkZkbUZzZFdGMFpYTWdaV0ZqYUNCallYTmxKM01nWTI5dVpHbDBhVzl1SUdGbllXbHVjM1FnZEdobElHNXZaR1VuY3lCcGJuQjFkQ0JoYm1SY2JpQXFJSEp2ZFhSbGN5QjBhR1VnYVc1d2RYUWdkRzhnZEdobElHWnBjbk4wSUcxaGRHTm9hVzVuSUdOaGMyVW5jeUJ2ZFhSd2RYUWdjRzl5ZEM0Z1JtRnNiSE1nWW1GamF5QjBiMXh1SUNvZ2RHaGxJR0JrWldaaGRXeDBZQ0J2ZFhSd2RYUWdkMmhsYmlCdWJ5QmpZWE5sSUcxaGRHTm9aWE11SUZOMWNIQnZjblJ6SUdKdmRHaGNiaUFxSUh0QWJHbHVheUJEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1ZlNBb1ozSmhjR2hwWTJGc0lHMXZaR1VwSUdGdVpDQjdRR3hwYm1zZ1EyOWtaVU52Ym1ScGRHbHZibjFjYmlBcUlDaGpiMlJsSUcxdlpHVWdkbWxoSUhSb1pTQndiSFZuWjJGaWJHVWdlMEJzYVc1cklFTnZaR1ZUWVc1a1ltOTRSWFpoYkhWaGRHOXlmU2t1WEc0Z0tpOWNibWx0Y0c5eWRDQjBlWEJsSUhzZ1IzSmhjR2hPYjJSbFJYaGxZM1YwYjNJZ2ZTQm1jbTl0SUZ3aUxpOUhjbUZ3YUU1dlpHVkZlR1ZqZFhSdmNsd2lPMXh1YVcxd2IzSjBJSFI1Y0dVZ2V5QkhjbUZ3YUVWNFpXTjFkR2x2YmtOdmJuUmxlSFFnZlNCbWNtOXRJRndpTGk5SGNtRndhRVY0WldOMWRHbHZia052Ym5SbGVIUmNJanRjYm1sdGNHOXlkQ0IwZVhCbElIdGNiaUFnUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNc1hHNGdJRk4zYVhSamFFTmhjMlZEYjI1a2FYUnBiMjRzWEc0Z0lGTjNhWFJqYUU1dlpHVk5aWFJoWkdGMFlTeGNiaUFnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2Yml4Y2JpQWdRMjlrWlVOdmJtUnBkR2x2Yml4Y2JuMGdabkp2YlNCY0lpNHVMM1I1Y0dWelhDSTdYRzVwYlhCdmNuUWdleUJIY21Gd2FFVjRaV04xZEdsdmJrVnljbTl5SUgwZ1puSnZiU0JjSWk0dUwyVnljbTl5Y3k5SGNtRndhRVY0WldOMWRHbHZia1Z5Y205eVhDSTdYRzVwYlhCdmNuUWdleUJEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5SUgwZ1puSnZiU0JjSWk0dUwyeHZiM0J6TDBOdmJtUnBkR2x2YmtWNGNISmxjM05wYjI1RmRtRnNkV0YwYjNKY0lqdGNibWx0Y0c5eWRDQjBlWEJsSUhzZ1EyOWtaVk5oYm1SaWIzaEZkbUZzZFdGMGIzSWdmU0JtY205dElGd2lMaTlEYjJSbFUyRnVaR0p2ZUVWMllXeDFZWFJ2Y2x3aU8xeHVYRzR2S2lwY2JpQXFJRkpsWVdSeklIUm9aU0JUZDJsMFkyZ2diV1YwWVdSaGRHRWdabkp2YlNCMGFHVWdibTlrWlNCa1pXWnBibWwwYVc5dUozTWdaM0poY0dnZ2JXVjBZV1JoZEdFdVhHNGdLaTljYm1aMWJtTjBhVzl1SUhKbFlXUlRkMmwwWTJoTlpYUmhaR0YwWVNoY2JpQWdZMjl1ZEdWNGREb2dSM0poY0doRmVHVmpkWFJwYjI1RGIyNTBaWGgwWEc0cE9pQlRkMmwwWTJoT2IyUmxUV1YwWVdSaGRHRWdlMXh1SUNCamIyNXpkQ0J0WlhSaElEMGdZMjl1ZEdWNGRDNXViMlJsTG1keVlYQm9QeTV0WlhSaFpHRjBZU0JoYzF4dUlDQWdJSHdnVW1WamIzSmtQSE4wY21sdVp5d2dkVzVyYm05M2JqNWNiaUFnSUNCOElIVnVaR1ZtYVc1bFpEdGNiaUFnYVdZZ0tDRnRaWFJoS1NCeVpYUjFjbTRnZXlCallYTmxjem9nVzEwc0lHUmxabUYxYkhSUWIzSjBPaUJjSW1SbFptRjFiSFJjSWlCOU8xeHVJQ0JqYjI1emRDQnpkMmwwWTJoTlpYUmhJRDBnYldWMFlWdGNJbk4zYVhSamFGd2lYU0JoY3lCVGQybDBZMmhPYjJSbFRXVjBZV1JoZEdFZ2ZDQjFibVJsWm1sdVpXUTdYRzRnSUdsbUlDZ2hjM2RwZEdOb1RXVjBZU0I4ZkNBaFFYSnlZWGt1YVhOQmNuSmhlU2h6ZDJsMFkyaE5aWFJoTG1OaGMyVnpLU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjdJR05oYzJWek9pQmJYU3dnWkdWbVlYVnNkRkJ2Y25RNklGd2laR1ZtWVhWc2RGd2lJSDA3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSHRjYmlBZ0lDQmpZWE5sY3pvZ2MzZHBkR05vVFdWMFlTNWpZWE5sY3l4Y2JpQWdJQ0JrWldaaGRXeDBVRzl5ZERvZ2MzZHBkR05vVFdWMFlTNWtaV1poZFd4MFVHOXlkQ0EvUHlCY0ltUmxabUYxYkhSY0lpeGNiaUFnZlR0Y2JuMWNibHh1THlvcVhHNGdLaUJFWlhSbFkzUnpJSGRvWlhSb1pYSWdZU0JqYjI1a2FYUnBiMjRnYVhNZ1lTQmdRMjlrWlVOdmJtUnBkR2x2Ym1BZ0tHaGhjeUJnZEhsd1pUb2dYQ0pqYjJSbFhDSmdLUzVjYmlBcUwxeHVablZ1WTNScGIyNGdhWE5EYjJSbFEyOXVaR2wwYVc5dUtHTnZibVE2SUZOM2FYUmphRU5oYzJWRGIyNWthWFJwYjI0cE9pQmpiMjVrSUdseklFTnZaR1ZEYjI1a2FYUnBiMjRnZTF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUhSNWNHVnZaaUJqYjI1a0lEMDlQU0JjSW05aWFtVmpkRndpSUNZbVhHNGdJQ0FnWTI5dVpDQWhQVDBnYm5Wc2JDQW1KbHh1SUNBZ0lGd2lkSGx3WlZ3aUlHbHVJR052Ym1RZ0ppWmNiaUFnSUNCamIyNWtMblI1Y0dVZ1BUMDlJRndpWTI5a1pWd2lYRzRnSUNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUkdWMFpXTjBjeUIzYUdWMGFHVnlJR0VnWTI5dVpHbDBhVzl1SUdseklHRWdZRU52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjVnSUNob1lYTWdZRzl3WUNCbWFXVnNaQ2t1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2x6UTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2YmloY2JpQWdZMjl1WkRvZ1UzZHBkR05vUTJGelpVTnZibVJwZEdsdmJseHVLVG9nWTI5dVpDQnBjeUJEYjI1a2FYUnBiMjVGZUhCeVpYTnphVzl1SUh0Y2JpQWdjbVYwZFhKdUlDaGNiaUFnSUNCMGVYQmxiMllnWTI5dVpDQTlQVDBnWENKdlltcGxZM1JjSWlBbUpseHVJQ0FnSUdOdmJtUWdJVDA5SUc1MWJHd2dKaVpjYmlBZ0lDQmNJbTl3WENJZ2FXNGdZMjl1WkNBbUpseHVJQ0FnSUhSNWNHVnZaaUJqYjI1a0xtOXdJRDA5UFNCY0luTjBjbWx1WjF3aVhHNGdJQ2s3WEc1OVhHNWNiaThxS2x4dUlDb2dSWGhsWTNWMGIzSWdabTl5SUdCamIzSmxMbVpzYjNjdWMzZHBkR05vWUNCdWIyUmxjeTVjYmlBcVhHNGdLaUJGZG1Gc2RXRjBaWE1nWldGamFDQmpZWE5sSjNNZ1kyOXVaR2wwYVc5dUlHbHVJRzl5WkdWeUlHRnVaQ0J5YjNWMFpYTWdkR2hsSUdsdWNIVjBJSFJ2SUhSb1pWeHVJQ29nWm1seWMzUWdiV0YwWTJocGJtY2dZMkZ6WlNkeklHOTFkSEIxZENCd2IzSjBMaUJYYUdWdUlHNXZJR05oYzJVZ2JXRjBZMmhsY3l3Z2NtOTFkR1Z6SUhSdklIUm9aVnh1SUNvZ1lHUmxabUYxYkhSZ0lHOTFkSEIxZENCd2IzSjBMbHh1SUNwY2JpQXFJRU52Ym1ScGRHbHZiaUJsZG1Gc2RXRjBhVzl1T2x4dUlDb2dMU0JnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2Ym1BZzRvQ1VJR1YyWVd4MVlYUmxaQ0IyYVdFZ2UwQnNhVzVySUVOdmJtUnBkR2x2YmtWNGNISmxjM05wYjI1RmRtRnNkV0YwYjNKOUxseHVJQ29nTFNCZ1EyOWtaVU52Ym1ScGRHbHZibUFnNG9DVUlHVjJZV3gxWVhSbFpDQjJhV0VnZEdobElIQnNkV2RuWVdKc1pTQjdRR3hwYm1zZ1EyOWtaVk5oYm1SaWIzaEZkbUZzZFdGMGIzSjlYRzRnS2lBZ0lHWnliMjBnZEdobElHVnVaMmx1WlNkeklHTnZibVpwWnk0Z1ZHaHliM2R6SUdCSFVrRlFTRjlEVDBSRlgxTkJUa1JDVDFoZlRrOVVYME5QVGtaSlIxVlNSVVJnWEc0Z0tpQWdJSGRvWlc0Z2JtOGdaWFpoYkhWaGRHOXlJR2x6SUhKbFoybHpkR1Z5WldRdVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5QlRkMmwwWTJoSGNtRndhRTV2WkdWRmVHVmpkWFJ2Y2lCcGJYQnNaVzFsYm5SeklFZHlZWEJvVG05a1pVVjRaV04xZEc5eUlIdGNiaUFnY0hKcGRtRjBaU0J5WldGa2IyNXNlU0JsZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5SUQwZ2JtVjNJRU52Ym1ScGRHbHZia1Y0Y0hKbGMzTnBiMjVGZG1Gc2RXRjBiM0lvS1R0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2loY2JpQWdJQ0J3Y21sMllYUmxJSEpsWVdSdmJteDVJR1Z1WjJsdVpUODZJSHNnWTI5a1pWTmhibVJpYjNoRmRtRnNkV0YwYjNJL09pQkRiMlJsVTJGdVpHSnZlRVYyWVd4MVlYUnZjaUI5WEc0Z0lDa2dlMzFjYmx4dUlDQmhjM2x1WXlCbGVHVmpkWFJsS0Z4dUlDQWdJR2x1Y0hWME9pQkhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjeXhjYmlBZ0lDQmpiMjUwWlhoME9pQkhjbUZ3YUVWNFpXTjFkR2x2YmtOdmJuUmxlSFJjYmlBZ0tUb2dVSEp2YldselpUeEhjbUZ3YUVWNFpXTjFkR2x2YmxaaGJIVmxjejRnZTF4dUlDQWdJR052Ym5OMElHMWxkR0VnUFNCeVpXRmtVM2RwZEdOb1RXVjBZV1JoZEdFb1kyOXVkR1Y0ZENrN1hHNGdJQ0FnWTI5dWMzUWdhVzV3ZFhSV1lXeDFaU0E5SUdsdWNIVjBXMXdpZG1Gc2RXVmNJbDBnUHo4Z2FXNXdkWFE3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUhOM2FYUmphRU5oYzJVZ2IyWWdiV1YwWVM1allYTmxjeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdiV0YwWTJobGN5QTlJR0YzWVdsMElIUm9hWE11WlhaaGJIVmhkR1ZEYjI1a2FYUnBiMjRvWEc0Z0lDQWdJQ0FnSUhOM2FYUmphRU5oYzJVdVkyOXVaR2wwYVc5dUxGeHVJQ0FnSUNBZ0lDQnBibkIxZEZaaGJIVmxMRnh1SUNBZ0lDQWdJQ0JwYm5CMWRDeGNiaUFnSUNBZ0lDQWdZMjl1ZEdWNGRGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lHbG1JQ2h0WVhSamFHVnpLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3SUZ0emQybDBZMmhEWVhObExtOTFkSEIxZEZCdmNuUmRPaUJwYm5CMWRGWmhiSFZsSUgwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdaR1ZtWVhWc2RGQnZjblFnUFNCdFpYUmhMbVJsWm1GMWJIUlFiM0owSUQ4L0lGd2laR1ZtWVhWc2RGd2lPMXh1SUNBZ0lISmxkSFZ5YmlCN0lGdGtaV1poZFd4MFVHOXlkRjA2SUdsdWNIVjBWbUZzZFdVZ2ZUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGZG1Gc2RXRjBaWE1nWVNCemFXNW5iR1VnYzNkcGRHTm9JR05oYzJVZ1kyOXVaR2wwYVc5dUxseHVJQ0FnS2k5Y2JpQWdjSEpwZG1GMFpTQmhjM2x1WXlCbGRtRnNkV0YwWlVOdmJtUnBkR2x2YmloY2JpQWdJQ0JqYjI1a2FYUnBiMjQ2SUZOM2FYUmphRU5oYzJWRGIyNWthWFJwYjI0c1hHNGdJQ0FnYVc1d2RYUldZV3gxWlRvZ2RXNXJibTkzYml4Y2JpQWdJQ0JtZFd4c1NXNXdkWFE2SUVkeVlYQm9SWGhsWTNWMGFXOXVWbUZzZFdWekxGeHVJQ0FnSUdOdmJuUmxlSFE2SUVkeVlYQm9SWGhsWTNWMGFXOXVRMjl1ZEdWNGRGeHVJQ0FwT2lCUWNtOXRhWE5sUEdKdmIyeGxZVzQrSUh0Y2JpQWdJQ0JwWmlBb2FYTkRiMlJsUTI5dVpHbDBhVzl1S0dOdmJtUnBkR2x2YmlrcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVYyWVd4MVlYUmxRMjlrWlVOdmJtUnBkR2x2YmloamIyNWthWFJwYjI0c0lHWjFiR3hKYm5CMWRDd2dZMjl1ZEdWNGRDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR2x6UTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2YmloamIyNWthWFJwYjI0cEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVsZUhCeVpYTnphVzl1UlhaaGJIVmhkRzl5TG1WMllXeDFZWFJsS0dOdmJtUnBkR2x2Yml3Z2FXNXdkWFJXWVd4MVpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHliM2NnYm1WM0lFZHlZWEJvUlhobFkzVjBhVzl1UlhKeWIzSW9YRzRnSUNBZ0lDQmNJbFZ1YTI1dmQyNGdjM2RwZEdOb0lHTmhjMlVnWTI5dVpHbDBhVzl1SUhSNWNHVWc0b0NVSUcxMWMzUWdZbVVnUTI5dVpHbDBhVzl1Ulhod2NtVnpjMmx2YmlBb2IzQXBJRzl5SUVOdlpHVkRiMjVrYVhScGIyNGdLSFI1Y0dVNklDZGpiMlJsSnlsY0lpeGNiaUFnSUNBZ0lGd2lSMUpCVUVoZlZVNUxUazlYVGw5VFYwbFVRMGhmUTA5T1JFbFVTVTlPWENJc1hHNGdJQ0FnSUNCN0lHTnZibVJwZEdsdmJpQjlYRzRnSUNBZ0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGZG1Gc2RXRjBaWE1nWVNCamIyUmxJR052Ym1ScGRHbHZiaUIyYVdFZ2RHaGxJSEJzZFdkbllXSnNaU0J6WVc1a1ltOTRJR1YyWVd4MVlYUnZjaTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWVhONWJtTWdaWFpoYkhWaGRHVkRiMlJsUTI5dVpHbDBhVzl1S0Z4dUlDQWdJR052Ym1ScGRHbHZiam9nUTI5a1pVTnZibVJwZEdsdmJpeGNiaUFnSUNCcGJuQjFkRG9nUjNKaGNHaEZlR1ZqZFhScGIyNVdZV3gxWlhNc1hHNGdJQ0FnWTI5dWRHVjRkRG9nUjNKaGNHaEZlR1ZqZFhScGIyNURiMjUwWlhoMFhHNGdJQ2s2SUZCeWIyMXBjMlU4WW05dmJHVmhiajRnZTF4dUlDQWdJR052Ym5OMElHVjJZV3gxWVhSdmNpQTlJSFJvYVhNdVpXNW5hVzVsUHk1amIyUmxVMkZ1WkdKdmVFVjJZV3gxWVhSdmNqdGNiaUFnSUNCcFppQW9JV1YyWVd4MVlYUnZjaWtnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVkeVlYQm9SWGhsWTNWMGFXOXVSWEp5YjNJb1hHNGdJQ0FnSUNBZ0lGd2lRMjlrWlNCamIyNWthWFJwYjI1eklISmxjWFZwY21VZ1lTQkRiMlJsVTJGdVpHSnZlRVYyWVd4MVlYUnZjaUIwYnlCaVpTQnlaV2RwYzNSbGNtVmtJR2x1SUVkeVlYQm9SWGhsWTNWMGFXOXVSVzVuYVc1bFEyOXVabWxuTG1OdlpHVlRZVzVrWW05NFJYWmhiSFZoZEc5eVhDSXNYRzRnSUNBZ0lDQWdJRndpUjFKQlVFaGZRMDlFUlY5VFFVNUVRazlZWDA1UFZGOURUMDVHU1VkVlVrVkVYQ0lzWEc0Z0lDQWdJQ0FnSUhzZ1kyOWtaVG9nWTI5dVpHbDBhVzl1TG1OdlpHVWdmVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmhkMkZwZENCamIyNTBaWGgwTG14dlp5aGdSWFpoYkhWaGRHbHVaeUJqYjJSbElHTnZibVJwZEdsdmJtQXNJSHRjYmlBZ0lDQWdJR3hoYm1kMVlXZGxPaUJqYjI1a2FYUnBiMjR1YkdGdVozVmhaMlVnUHo4Z1hDSnFZWFpoYzJOeWFYQjBYQ0lzWEc0Z0lDQWdmU2s3WEc1Y2JpQWdJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQmhkMkZwZENCbGRtRnNkV0YwYjNJdVpYWmhiSFZoZEdVb2UxeHVJQ0FnSUNBZ1kyOWtaVG9nWTI5dVpHbDBhVzl1TG1OdlpHVXNYRzRnSUNBZ0lDQnNZVzVuZFdGblpUb2dZMjl1WkdsMGFXOXVMbXhoYm1kMVlXZGxMRnh1SUNBZ0lDQWdhVzV3ZFhRc1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnSVNGeVpYTjFiSFE3WEc0Z0lIMWNibjFjYmlKZGZRPT0iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphNode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module integrations/graph/nodes/base
|
|
6
|
+
* @summary Base class for graph node declarations.
|
|
7
|
+
* @description `GraphNode` extends {@link Model} with an overridable
|
|
8
|
+
* `applyMetadata` static method. Concrete node kinds that support dynamic
|
|
9
|
+
* metadata changes (e.g. `SwitchFlowNode` adding case output ports) override
|
|
10
|
+
* this method to compute their own ports, size, and data patches — the node
|
|
11
|
+
* is exclusively responsible for itself in every way.
|
|
12
|
+
*/
|
|
13
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
14
|
+
class GraphNode extends decorator_validation_1.Model {
|
|
15
|
+
/**
|
|
16
|
+
* Applies a metadata patch to this node class, returning the resulting
|
|
17
|
+
* ports, size, and data patches.
|
|
18
|
+
*
|
|
19
|
+
* The default implementation returns `null` (no changes). Concrete node
|
|
20
|
+
* kinds that support dynamic metadata override this to compute their own
|
|
21
|
+
* ports and size from the metadata — the caller (renderer) simply relays
|
|
22
|
+
* the result to the diagram model.
|
|
23
|
+
*
|
|
24
|
+
* @param _meta - The metadata patch (node-kind-specific, e.g.
|
|
25
|
+
* `SwitchNodeMetadata`).
|
|
26
|
+
* @returns The computed change, or `null` when the node kind does not
|
|
27
|
+
* support dynamic metadata.
|
|
28
|
+
*/
|
|
29
|
+
static applyMetadata(_meta) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.GraphNode = GraphNode;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncmFwaC9ub2Rlcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3ZELE1BQU0sT0FBTyxTQUFVLFNBQVEsS0FBSztJQUNsQzs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFjO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9ncmFwaC9ub2Rlcy9iYXNlXG4gKiBAc3VtbWFyeSBCYXNlIGNsYXNzIGZvciBncmFwaCBub2RlIGRlY2xhcmF0aW9ucy5cbiAqIEBkZXNjcmlwdGlvbiBgR3JhcGhOb2RlYCBleHRlbmRzIHtAbGluayBNb2RlbH0gd2l0aCBhbiBvdmVycmlkYWJsZVxuICogYGFwcGx5TWV0YWRhdGFgIHN0YXRpYyBtZXRob2QuIENvbmNyZXRlIG5vZGUga2luZHMgdGhhdCBzdXBwb3J0IGR5bmFtaWNcbiAqIG1ldGFkYXRhIGNoYW5nZXMgKGUuZy4gYFN3aXRjaEZsb3dOb2RlYCBhZGRpbmcgY2FzZSBvdXRwdXQgcG9ydHMpIG92ZXJyaWRlXG4gKiB0aGlzIG1ldGhvZCB0byBjb21wdXRlIHRoZWlyIG93biBwb3J0cywgc2l6ZSwgYW5kIGRhdGEgcGF0Y2hlcyDigJQgdGhlIG5vZGVcbiAqIGlzIGV4Y2x1c2l2ZWx5IHJlc3BvbnNpYmxlIGZvciBpdHNlbGYgaW4gZXZlcnkgd2F5LlxuICovXG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgTm9kZU1ldGFkYXRhQ2hhbmdlIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBHcmFwaE5vZGUgZXh0ZW5kcyBNb2RlbCB7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgbWV0YWRhdGEgcGF0Y2ggdG8gdGhpcyBub2RlIGNsYXNzLCByZXR1cm5pbmcgdGhlIHJlc3VsdGluZ1xuICAgKiBwb3J0cywgc2l6ZSwgYW5kIGRhdGEgcGF0Y2hlcy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgbnVsbGAgKG5vIGNoYW5nZXMpLiBDb25jcmV0ZSBub2RlXG4gICAqIGtpbmRzIHRoYXQgc3VwcG9ydCBkeW5hbWljIG1ldGFkYXRhIG92ZXJyaWRlIHRoaXMgdG8gY29tcHV0ZSB0aGVpciBvd25cbiAgICogcG9ydHMgYW5kIHNpemUgZnJvbSB0aGUgbWV0YWRhdGEg4oCUIHRoZSBjYWxsZXIgKHJlbmRlcmVyKSBzaW1wbHkgcmVsYXlzXG4gICAqIHRoZSByZXN1bHQgdG8gdGhlIGRpYWdyYW0gbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSBfbWV0YSAtIFRoZSBtZXRhZGF0YSBwYXRjaCAobm9kZS1raW5kLXNwZWNpZmljLCBlLmcuXG4gICAqICAgYFN3aXRjaE5vZGVNZXRhZGF0YWApLlxuICAgKiBAcmV0dXJucyBUaGUgY29tcHV0ZWQgY2hhbmdlLCBvciBgbnVsbGAgd2hlbiB0aGUgbm9kZSBraW5kIGRvZXMgbm90XG4gICAqICAgc3VwcG9ydCBkeW5hbWljIG1ldGFkYXRhLlxuICAgKi9cbiAgc3RhdGljIGFwcGx5TWV0YWRhdGEoX21ldGE6IHVua25vd24pOiBOb2RlTWV0YWRhdGFDaGFuZ2UgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7O0dBUUc7QUFDSCx5RUFBdUQ7QUFDdkQsTUFBYSxTQUFVLFNBQVEsNEJBQUs7SUFDaEM7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFsQkQsOEJBa0JDO0FBQ0QsOHNFQUE4c0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2dyYXBoL25vZGVzL2Jhc2VcbiAqIEBzdW1tYXJ5IEJhc2UgY2xhc3MgZm9yIGdyYXBoIG5vZGUgZGVjbGFyYXRpb25zLlxuICogQGRlc2NyaXB0aW9uIGBHcmFwaE5vZGVgIGV4dGVuZHMge0BsaW5rIE1vZGVsfSB3aXRoIGFuIG92ZXJyaWRhYmxlXG4gKiBgYXBwbHlNZXRhZGF0YWAgc3RhdGljIG1ldGhvZC4gQ29uY3JldGUgbm9kZSBraW5kcyB0aGF0IHN1cHBvcnQgZHluYW1pY1xuICogbWV0YWRhdGEgY2hhbmdlcyAoZS5nLiBgU3dpdGNoRmxvd05vZGVgIGFkZGluZyBjYXNlIG91dHB1dCBwb3J0cykgb3ZlcnJpZGVcbiAqIHRoaXMgbWV0aG9kIHRvIGNvbXB1dGUgdGhlaXIgb3duIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaGVzIOKAlCB0aGUgbm9kZVxuICogaXMgZXhjbHVzaXZlbHkgcmVzcG9uc2libGUgZm9yIGl0c2VsZiBpbiBldmVyeSB3YXkuXG4gKi9cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuZXhwb3J0IGNsYXNzIEdyYXBoTm9kZSBleHRlbmRzIE1vZGVsIHtcbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIGEgbWV0YWRhdGEgcGF0Y2ggdG8gdGhpcyBub2RlIGNsYXNzLCByZXR1cm5pbmcgdGhlIHJlc3VsdGluZ1xuICAgICAqIHBvcnRzLCBzaXplLCBhbmQgZGF0YSBwYXRjaGVzLlxuICAgICAqXG4gICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgbnVsbGAgKG5vIGNoYW5nZXMpLiBDb25jcmV0ZSBub2RlXG4gICAgICoga2luZHMgdGhhdCBzdXBwb3J0IGR5bmFtaWMgbWV0YWRhdGEgb3ZlcnJpZGUgdGhpcyB0byBjb21wdXRlIHRoZWlyIG93blxuICAgICAqIHBvcnRzIGFuZCBzaXplIGZyb20gdGhlIG1ldGFkYXRhIOKAlCB0aGUgY2FsbGVyIChyZW5kZXJlcikgc2ltcGx5IHJlbGF5c1xuICAgICAqIHRoZSByZXN1bHQgdG8gdGhlIGRpYWdyYW0gbW9kZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gX21ldGEgLSBUaGUgbWV0YWRhdGEgcGF0Y2ggKG5vZGUta2luZC1zcGVjaWZpYywgZS5nLlxuICAgICAqICAgYFN3aXRjaE5vZGVNZXRhZGF0YWApLlxuICAgICAqIEByZXR1cm5zIFRoZSBjb21wdXRlZCBjaGFuZ2UsIG9yIGBudWxsYCB3aGVuIHRoZSBub2RlIGtpbmQgZG9lcyBub3RcbiAgICAgKiAgIHN1cHBvcnQgZHluYW1pYyBtZXRhZGF0YS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXBwbHlNZXRhZGF0YShfbWV0YSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZbUZ6WlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OW5jbUZ3YUM5dWIyUmxjeTlpWVhObExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenRIUVZGSE8wRkJRMGdzVDBGQlR5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MR2REUVVGblF5eERRVUZETzBGQlIzWkVMRTFCUVUwc1QwRkJUeXhUUVVGVkxGTkJRVkVzUzBGQlN6dEpRVU5zUXpzN096czdPenM3T3pzN096dFBRV0ZITzBsQlEwZ3NUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhMUVVGak8xRkJRMnBETEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9xWEc0Z0tpQkFiVzlrZFd4bElHbHVkR1ZuY21GMGFXOXVjeTluY21Gd2FDOXViMlJsY3k5aVlYTmxYRzRnS2lCQWMzVnRiV0Z5ZVNCQ1lYTmxJR05zWVhOeklHWnZjaUJuY21Gd2FDQnViMlJsSUdSbFkyeGhjbUYwYVc5dWN5NWNiaUFxSUVCa1pYTmpjbWx3ZEdsdmJpQmdSM0poY0doT2IyUmxZQ0JsZUhSbGJtUnpJSHRBYkdsdWF5Qk5iMlJsYkgwZ2QybDBhQ0JoYmlCdmRtVnljbWxrWVdKc1pWeHVJQ29nWUdGd2NHeDVUV1YwWVdSaGRHRmdJSE4wWVhScFl5QnRaWFJvYjJRdUlFTnZibU55WlhSbElHNXZaR1VnYTJsdVpITWdkR2hoZENCemRYQndiM0owSUdSNWJtRnRhV05jYmlBcUlHMWxkR0ZrWVhSaElHTm9ZVzVuWlhNZ0tHVXVaeTRnWUZOM2FYUmphRVpzYjNkT2IyUmxZQ0JoWkdScGJtY2dZMkZ6WlNCdmRYUndkWFFnY0c5eWRITXBJRzkyWlhKeWFXUmxYRzRnS2lCMGFHbHpJRzFsZEdodlpDQjBieUJqYjIxd2RYUmxJSFJvWldseUlHOTNiaUJ3YjNKMGN5d2djMmw2WlN3Z1lXNWtJR1JoZEdFZ2NHRjBZMmhsY3lEaWdKUWdkR2hsSUc1dlpHVmNiaUFxSUdseklHVjRZMngxYzJsMlpXeDVJSEpsYzNCdmJuTnBZbXhsSUdadmNpQnBkSE5sYkdZZ2FXNGdaWFpsY25rZ2QyRjVMbHh1SUNvdlhHNXBiWEJ2Y25RZ2V5Qk5iMlJsYkNCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHVmpiM0poZEc5eUxYWmhiR2xrWVhScGIyNWNJanRjYm1sdGNHOXlkQ0IwZVhCbElIc2dUbTlrWlUxbGRHRmtZWFJoUTJoaGJtZGxJSDBnWm5KdmJTQmNJaTR1TDNSNWNHVnpYQ0k3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJIY21Gd2FFNXZaR1VnWlhoMFpXNWtjeUJOYjJSbGJDQjdYRzRnSUM4cUtseHVJQ0FnS2lCQmNIQnNhV1Z6SUdFZ2JXVjBZV1JoZEdFZ2NHRjBZMmdnZEc4Z2RHaHBjeUJ1YjJSbElHTnNZWE56TENCeVpYUjFjbTVwYm1jZ2RHaGxJSEpsYzNWc2RHbHVaMXh1SUNBZ0tpQndiM0owY3l3Z2MybDZaU3dnWVc1a0lHUmhkR0VnY0dGMFkyaGxjeTVjYmlBZ0lDcGNiaUFnSUNvZ1ZHaGxJR1JsWm1GMWJIUWdhVzF3YkdWdFpXNTBZWFJwYjI0Z2NtVjBkWEp1Y3lCZ2JuVnNiR0FnS0c1dklHTm9ZVzVuWlhNcExpQkRiMjVqY21WMFpTQnViMlJsWEc0Z0lDQXFJR3RwYm1SeklIUm9ZWFFnYzNWd2NHOXlkQ0JrZVc1aGJXbGpJRzFsZEdGa1lYUmhJRzkyWlhKeWFXUmxJSFJvYVhNZ2RHOGdZMjl0Y0hWMFpTQjBhR1ZwY2lCdmQyNWNiaUFnSUNvZ2NHOXlkSE1nWVc1a0lITnBlbVVnWm5KdmJTQjBhR1VnYldWMFlXUmhkR0VnNG9DVUlIUm9aU0JqWVd4c1pYSWdLSEpsYm1SbGNtVnlLU0J6YVcxd2JIa2djbVZzWVhselhHNGdJQ0FxSUhSb1pTQnlaWE4xYkhRZ2RHOGdkR2hsSUdScFlXZHlZVzBnYlc5a1pXd3VYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0JmYldWMFlTQXRJRlJvWlNCdFpYUmhaR0YwWVNCd1lYUmphQ0FvYm05a1pTMXJhVzVrTFhOd1pXTnBabWxqTENCbExtY3VYRzRnSUNBcUlDQWdZRk4zYVhSamFFNXZaR1ZOWlhSaFpHRjBZV0FwTGx4dUlDQWdLaUJBY21WMGRYSnVjeUJVYUdVZ1kyOXRjSFYwWldRZ1kyaGhibWRsTENCdmNpQmdiblZzYkdBZ2QyaGxiaUIwYUdVZ2JtOWtaU0JyYVc1a0lHUnZaWE1nYm05MFhHNGdJQ0FxSUNBZ2MzVndjRzl5ZENCa2VXNWhiV2xqSUcxbGRHRmtZWFJoTGx4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdGd2NHeDVUV1YwWVdSaGRHRW9YMjFsZEdFNklIVnVhMjV2ZDI0cE9pQk9iMlJsVFdWMFlXUmhkR0ZEYUdGdVoyVWdmQ0J1ZFd4c0lIdGNiaUFnSUNCeVpYUjFjbTRnYm5Wc2JEdGNiaUFnZlZ4dWZWeHVJbDE5Il19
|