@kontur.candy/tools 2.163.1-super-alfa.0 → 2.164.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/CHANGELOG.md +43 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +18 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +10 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +13 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +21 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +19 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +26 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +16 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +16 -0
- package/distr/Common/RngSchemeTypes/types.js +6 -0
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +2 -2
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +8 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -2
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -2
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/SelfUpdate.js +3 -3
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +35 -30
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +6 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
<a name="2.164.0"></a>
|
|
2
|
+
# [2.164.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.163.1-super-alfa.0...release/tools/v2.164.0) (2024-01-30)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **Tools:** Утилита candy теперь запускается под linux ([cf6e2f0](https://git.skbkontur.ru/ke/candy-utils/commit/cf6e2f0))
|
|
8
|
+
|
|
9
|
+
<a name="2.160.0"></a>
|
|
10
|
+
# [2.160.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.163.1-super-alfa.0...release/tools/v2.160.0) (2024-01-30)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **Tools:** Утилита candy теперь запускается под linux ([cf6e2f0](https://git.skbkontur.ru/ke/candy-utils/commit/cf6e2f0))
|
|
16
|
+
|
|
17
|
+
<a name="2.160.0-linux-compat.3"></a>
|
|
18
|
+
# [2.160.0-linux-compat.3](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.163.1-super-alfa.0...release/tools/v2.160.0-linux-compat.3) (2023-12-29)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **Tools:** Утилита candy теперь запускается под linux ([4fe23f1](https://git.skbkontur.ru/ke/candy-utils/commit/4fe23f1))
|
|
24
|
+
|
|
1
25
|
<a name="2.163.1-super-alfa.0"></a>
|
|
2
26
|
## [2.163.1-super-alfa.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.163.0...release/tools/v2.163.1-super-alfa.0) (2023-12-28)
|
|
3
27
|
|
|
@@ -10,6 +34,25 @@
|
|
|
10
34
|
<a name="2.161.0"></a>
|
|
11
35
|
# [2.161.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.159.0...release/tools/v2.161.0) (2023-12-26)
|
|
12
36
|
|
|
37
|
+
<a name="2.160.0-linux-compat.2"></a>
|
|
38
|
+
# [2.160.0-linux-compat.2](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.160.0-linux-compat.1...release/tools/v2.160.0-linux-compat.2) (2023-12-26)
|
|
39
|
+
|
|
40
|
+
<a name="2.160.0-linux-compat.1"></a>
|
|
41
|
+
# [2.160.0-linux-compat.1](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.160.0-linux-compat.0...release/tools/v2.160.0-linux-compat.1) (2023-09-19)
|
|
42
|
+
|
|
43
|
+
<a name="2.160.0-linux-compat.0"></a>
|
|
44
|
+
# [2.160.0-linux-compat.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.158.0...release/tools/v2.160.0-linux-compat.0) (2023-09-19)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### Bug Fixes
|
|
48
|
+
|
|
49
|
+
* **Tools:** Прибрана команда init-form, добавлена опция копирования схемы rng из hl ([c6b073c](https://git.skbkontur.ru/ke/candy-utils/commit/c6b073c)), see [#7230](https://yt.skbkontur.ru/issue/fs-7230)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Features
|
|
53
|
+
|
|
54
|
+
* **Tools:** Утилита candy теперь запускается под linux ([9223945](https://git.skbkontur.ru/ke/candy-utils/commit/9223945))
|
|
55
|
+
|
|
13
56
|
<a name="2.159.0"></a>
|
|
14
57
|
# [2.159.0](https://git.skbkontur.ru/ke/candy-utils/compare/release/tools/v2.158.0...release/tools/v2.159.0) (2023-08-03)
|
|
15
58
|
|
|
@@ -452,6 +452,20 @@ class CandyApiDraftClient {
|
|
|
452
452
|
}
|
|
453
453
|
return await response.json();
|
|
454
454
|
}
|
|
455
|
+
async importXmls(driveUris, combineMethod, combinatorType, isImportByFuf, args) {
|
|
456
|
+
const response = await this.httpClient.post(this.getDraftUrl("transfer/import-xmls")).withQueryParams({
|
|
457
|
+
combineMethod: combineMethod,
|
|
458
|
+
combinatorType: combinatorType,
|
|
459
|
+
importByFuf: isImportByFuf
|
|
460
|
+
}).withJsonBody({
|
|
461
|
+
FufDriveUris: driveUris,
|
|
462
|
+
arguments: args
|
|
463
|
+
});
|
|
464
|
+
if (response.status === 400) {
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
467
|
+
return await response.json();
|
|
468
|
+
}
|
|
455
469
|
async setDraftSettings(settings) {
|
|
456
470
|
await this.httpClient.patch(this.getDraftUrl("external/set-settings")).withJsonBody(settings);
|
|
457
471
|
}
|
|
@@ -490,6 +504,9 @@ class CandyApiDraftClient {
|
|
|
490
504
|
};
|
|
491
505
|
return this.httpClient.post(this.getDraftUrl("inner/search-by-string")).withQueryParams(params).withJsonBody(pathsToSearch).json();
|
|
492
506
|
}
|
|
507
|
+
async queryCollection(request, abortSignal) {
|
|
508
|
+
return this.httpClient.post(this.getDraftUrl("inner/query-collection")).withJsonBody(request).withAbortSignal(abortSignal).json();
|
|
509
|
+
}
|
|
493
510
|
async customNormalize(normalizerId, pathPrefixes, abortSignal) {
|
|
494
511
|
const params = {
|
|
495
512
|
normalizerId: normalizerId
|
|
@@ -531,4 +548,4 @@ class CandyApiDraftClient {
|
|
|
531
548
|
}
|
|
532
549
|
}
|
|
533
550
|
exports.CandyApiDraftClient = CandyApiDraftClient;
|
|
534
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0h0dHBDbGllbnQiLCJfQXV0aGVudGljYXRpb25Nb2RlIiwiX01vZGVsUGF0aCIsIl9Gb2N1c1R5cGVzIiwiX0RyYWZ0UHJlc2VudGF0aW9uVHlwZSIsIl9Jc0J1ZmZlciIsIl9GdWZTaXplVG9vTGFyZ2VFcnJvciIsInN0cmFuZ2VPcHRpb25zIiwic3JjIiwiZGF0YVZlcnNpb24iLCJTZXJ2ZXJFcnJvcnMiLCJleHBvcnRzIiwiY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nIiwic3BlYyIsInNraXAiLCJwYXRoT3JQYXRoUHJlZml4IiwidG9MZWdhY3lQYXRoIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJDYW5keUFwaURyYWZ0Q2xpZW50IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJwYXRocyIsIm1hcCIsImlubiIsInJlc3BvbnNlIiwicG9zdCIsImdldERyYWZ0VXJsIiwid2l0aEpzb25Cb2R5IiwianNvbiIsInJlc3VsdCIsIl9yZXNwb25zZSIsImlublNlcnZlclZhbHVlIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJlcnJvciIsImVycm9yQ29kZSIsIkZvY3VzU2VydmVyRXJyb3JDb2RlIiwiTm9Jbm5FcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSR2YWx1ZSIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvcjIiLCJnZXRBbGxHZnZzIiwiYWJvcnRTaWduYWwiLCJib2R5IiwiZ2V0IiwiY3JlYXRlRHJhZnRGcm9tRHJpdmUiLCJucyIsImZ1ZkRyaXZlVXJpIiwid2l0aFF1ZXJ5UGFyYW1zIiwid2l0aEFib3J0U2lnbmFsIiwiY3JlYXRlRW1wdHlEcmFmdCIsImdmdiIsImNyZWF0ZURyYWZ0IiwiZnVmQ29udGVudCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJFcnJvciIsImNoZWNrQWxpdmUiLCJkcmFmdFJlbGF0ZWRVcmwiLCJkcmFmdElkIiwiZ2V0RmVhdHVyZUZsYWdzIiwic2V0VGVzdENsYXNzaWZpY2F0aW9uIiwidGVzdENsYXNzaWZpY2F0aW9uIiwid2l0aFJhd0JvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJ1cmwiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24iLCJEcmFmdFByZXNlbnRhdGlvblR5cGUiLCJpbm5lckZ1ZiIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImNsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZEb3dubG9hZElubmVyIiwiaW5uZXIiLCJnZXRFcnJvckxvZyIsImdldERyYWZ0UHJlc2VudGF0aW9uVXJsIiwiZXJyb3JMb2ciLCJnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyIsImNoZWNrU2NlbmFyaW9zIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJfdGFza3MiLCJ0YXNrcyIsImdldEZ1ZldpdGhBdHRhY2htZW50cyIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsImdldEFsbFRhc2tzIiwiT2JqZWN0IiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwiY3VycmVudERhdGFWZXJzaW9uIiwiYWNjZXB0Q29kZSIsImdldFN1Y2Nlc3NSZXN1bHQiLCJfZGF0YVJlc3VsdCRkYXRhVmVyc2kiLCJkYXRhUmVzdWx0IiwicmVqZWN0Iiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFN1Y2Nlc3NSZXN1bHRTeW5jIiwiX2RhdGFSZXN1bHQkZGF0YVZlcnNpMiIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiY29udmVydGVkUnVsZXMiLCJ0b1N0cmluZyIsImxlbmd0aCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJmb3JtYXQiLCJnZXRSYXdQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZ2V0RGF0YVZlcnNpb24iLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJleHBsYW5hdG9yeU5vdGUiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsIl9yZXN1bHQkdmFsdWUiLCJfcmVzdWx0IiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJzZXRQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25UeXBlIiwiY29udGVudCIsInJlcXVlc3QiLCJwdXQiLCJpc0J1ZmZlciIsInBhdGNoUHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uQ29udGVudCIsInBhdGNoIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImVycm9yRGF0YSIsIkZ1ZlNpemVUb29MYXJnZUVycm9yIiwibWVzc2FnZSIsIkh0dHBFcnJvciIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJzb3VyY2VzVG90YWxDb3VudCIsImUiLCJVbmtub3duRXJyb3IiLCJhY2NlcHRUcmFuc2ZlclR5cGUiLCJ0cmFuc2ZlclR5cGUiLCJ0eXBlSWQiLCJhY2NlcHRNdWx0aXBsZVRyYW5zZmVyVHlwZSIsImZpbGVzIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsImV4Y2Vsc1RvUGFydGlhbEZ1ZnMiLCJwYXRoVG9UYWJsZSIsImltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aCIsImNvbWJpbmF0b3JUeXBlIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsImFyZ3MiLCJhcmd1bWVudHMiLCJzZXREcmFmdFNldHRpbmdzIiwic2V0dGluZ3MiLCJnZXREcmFmdFNldHRpbmdzIiwibm9ybWFsaXplQnlSdWxlcyIsInNldE11bHRpcGxlV2l0aE5vcm1hbGl6YXRpb24iLCJ1cmkiLCJmaW5hbFJ1bGVzIiwicGF0aCIsImNvbnZlcnRUb0xlZ2FjeVBhdGgiLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aHNQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwibWF4SW5zdGFuY2VDb3VudFBhcmFtcyIsInBhcmFtcyIsInNlYXJjaFN0cmluZyIsImN1c3RvbU5vcm1hbGl6ZSIsInBhdGhQcmVmaXhlcyIsImltcG9ydEVtcGxveWVlcyIsImRlbGV0ZUluc3RhbmNlcyIsImRlbGV0aW5nUnVsZXMiLCJydW5NYXNzQWN0aW9uIiwiYWN0aW9uSWQiLCJwYXJhbWV0ZXJzIiwicXVlcnlQYXJhbXMiLCJwcmludCIsInR5cGUiLCJwcmludEV4Y2VsIiwidGFibGVFeGNlbCIsImNoZWNrQnlQb3BkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NhbmR5QXBpQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi4vSHR0cENsaWVudC9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3IgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9IdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBJSHR0cENsaWVudCB9IGZyb20gXCIuLi9IdHRwQ2xpZW50L0lIdHRwQ2xpZW50XCI7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIGNyZWF0ZUF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9BdXRoZW50aWNhdGlvbk1vZGVcIjtcbmltcG9ydCB7IElDb21iaW5lQnlUcmFuc2ZlcnMgfSBmcm9tIFwiLi4vLi4vRW5naW5lL3NyYy9FbmdpbmUvQ29yZS9Nb2RhbE1hbmFnZXIvTW9kYWxzL1VwbG9hZFNlY3Rpb24vVHlwZXNcIjtcbmltcG9ydCB7IGNvbnZlcnRUb0xlZ2FjeVBhdGggfSBmcm9tIFwiLi4vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuXG5pbXBvcnQge1xuICAgIENoZWNrU2NlbmFyaW9UeXBlLFxuICAgIEZ1ZldpdGhBdHRhY2htZW50c1Jlc3BvbnNlLFxuICAgIElDYW5keUFwaUNsaWVudCxcbiAgICBJQ2FuZHlBcGlEcmFmdENsaWVudCxcbiAgICBJU2VuZENoYW5nZVNldFJlc3VsdCxcbiAgICBJU2VuZENoYW5nZVNldFN1Y2Nlc3NSZXN1bHQsXG4gICAgUGF0aExvYWRTcGVjaWZpY2F0aW9uLFxuICAgIERyYWZ0U2V0dGluZ3MsXG4gICAgQmFzZUdldEZ1ZlJlc3BvbnNlLFxufSBmcm9tIFwiLi9JQ2FuZHlBcGlDbGllbnRcIjtcbmltcG9ydCB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB7IFNlcnZlcklubmVyUmVzcG9uc2UsIFNlcnZlckpzb25SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7XG4gICAgRXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlLFxuICAgIEZpbGVQcm9wZXJ0aWVzLFxuICAgIEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlLFxuICAgIFNlcnZlckVycm9yUmVzcG9uc2UsXG4gICAgVXBsb2FkRmlsZVByb3BlcnRpZXNSZXNwb25zZSxcbn0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEZvY3VzU2VydmVyRXJyb3JDb2RlLCBHZXRCeUlublJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNUeXBlc1wiO1xuaW1wb3J0IHsgQXR0YWNoSW5mbyB9IGZyb20gXCIuL1R5cGVzL0F0dGFjaG1lbnRzL0F0dGFjbWVudHNcIjtcbmltcG9ydCB7IERyYWZ0UHJlc2VudGF0aW9uVHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvRHJhZnRQcmVzZW50YXRpb25UeXBlXCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBDb252ZXJ0RHJhZnRSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbnZlcnREcmFmdFJlcXVlc3RcIjtcbmltcG9ydCB7IEdldEF0dGFjaG1lbnRzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9HZXRBdHRhY2htZW50c1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlclJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRm9jdXMvRm9jdXNTZXJ2ZXJSZXNwb25zZVwiO1xuaW1wb3J0IHsgR2V0VGFza3NTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL0dldFRhc2tzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlclJlcXVpc2l0ZXNSZXNwb25zZVwiO1xuaW1wb3J0IHsgaXNCdWZmZXIgfSBmcm9tIFwiLi9Jc0J1ZmZlclwiO1xuaW1wb3J0IHsgQ29tYmluYXRvclR5cGUsIENvbWJpbmVGdWZSZXN1bHQsIEZ1ZkNvbWJpbmVNZXRob2QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9GZWF0dXJlRmxhZ3MvRmVhdHVyZUZsYWdzUmVzcG9uc2VcIjtcbmltcG9ydCB7IEZ1ZlNpemVUb29MYXJnZUVycm9yIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0Z1ZlNpemVUb29MYXJnZUVycm9yXCI7XG5pbXBvcnQgeyBJbXBvcnRFbXBsb3llZXNSZXF1ZXN0IH0gZnJvbSBcIi4vVHlwZXMvU3RhZmYvSW1wb3J0RW1wbG95ZWVzUmVxdWVzdFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi9UeXBlcy9NYXNzQWN0aW9ucy9NYXNzQWN0aW9uUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUHJpbnRUeXBlIH0gZnJvbSBcIi4vVHlwZXMvUHJpbnQvUHJpbnRUeXBlXCI7XG5pbXBvcnQgeyBQcmludFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvUHJpbnQvUHJpbnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgU2VydmVyUmF3UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSYXdSZXNwb25zZVwiO1xuaW1wb3J0IHsgVGVzdENsYXNzaWZpY2F0aW9uIH0gZnJvbSBcIi4vVHlwZXMvVGVzdENsYXNzaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBDYW5keVBvcGRQcm90b2NvbCB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL0NhbmR5UG9wZFByb3RvY29sXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi9UeXBlcy9JbnN0YW5jZXNEZWxldGluZy9JbnN0YW5jZXNEZWxldGluZ1J1bGVcIjtcbmltcG9ydCB7IFZhbHVlRm9ySW5zdGFuY2VzU2V0dGluZ1J1bGUgfSBmcm9tIFwiLi9UeXBlcy9NYXNzQWN0aW9ucy9WYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlXCI7XG5cbmNvbnN0IHN0cmFuZ2VPcHRpb25zID0geyBzcmM6IFwiY2hhbmdlU2V0XCIsIGRhdGFWZXJzaW9uOiBcIjBcIiB9O1xuXG5leHBvcnQgZW51bSBTZXJ2ZXJFcnJvcnMge1xuICAgIEZ1ZlNpemVUb29MYXJnZSA9IFwiRnVmU2l6ZVRvb0xhcmdlXCIsXG4gICAgQmFkUmVxdWVzdCA9IFwiQmFkUmVxdWVzdFwiLFxuICAgIFVua25vd25FcnJvciA9IFwiVW5rbm93bkVycm9yXCIsXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXRoTG9hZFNwZWNpZmljYXRpb25Ub1N0cmluZyhzcGVjOiBQYXRoTG9hZFNwZWNpZmljYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAgIChzcGVjLnNraXAgPyBcIi1cIiA6IFwiXCIpICtcbiAgICAgICAgKHNwZWMucGF0aE9yUGF0aFByZWZpeCA9PT0gXCIqXCIgPyBzcGVjLnBhdGhPclBhdGhQcmVmaXggOiBzcGVjLnBhdGhPclBhdGhQcmVmaXgudG9MZWdhY3lQYXRoKCkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlWm9uZTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgICAgICBhdXRoZW50aWNhdGlvbjogdW5kZWZpbmVkIHwgQXV0aGVudGljYXRpb25Nb2RlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGZldGNoSW1wbCwgYmFzZVVybCwgY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlcihhdXRoZW50aWNhdGlvbiksIHtcbiAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IENhbmR5QXBpRHJhZnRDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBwYXRocyA9IGlubnMubWFwKGlubiA9PiBgQGZvY3VzLyR7aW5ufWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChkcmFmdEZ1bGxJZCwgXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248Rm9jdXNTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHZXRCeUlublJlc3BvbnNlID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaW5uIG9mIGlubnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlublNlcnZlclZhbHVlID0gcmVzcG9uc2VbYEBmb2N1cy8ke2lubn1gXT8udmFsdWU7XG4gICAgICAgICAgICBpZiAoaW5uU2VydmVyVmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlNlcnZlciBkb2VzIG5vdCByZXR1cm4gaW5uIGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBGb2N1c1NlcnZlckVycm9yQ29kZS5Ob0lubkVycm9yLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uU2VydmVyVmFsdWUudmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IGlublNlcnZlclZhbHVlLmVycm9yQ29kZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBidWlsZC1zZXJ2ZXIvZ2Z2c2ApLmpzb248c3RyaW5nW10+KCk7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFRlc3RDbGFzc2lmaWNhdGlvbih0ZXN0Q2xhc3NpZmljYXRpb246IFRlc3RDbGFzc2lmaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoXCIvdGVzdG9ubHkvbW9jay1jbGFzc2lmaWNhdGlvblwiKVxuICAgICAgICAgICAgLndpdGhSYXdCb2R5KEpTT04uc3RyaW5naWZ5KHRlc3RDbGFzc2lmaWNhdGlvbikpO1xuICAgICAgICBpZiAoIShyZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHJlc3BvbnNlLiBDb2RlIGlzICR7cmVzcG9uc2Uuc3RhdHVzfS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImVycm9ybG9nXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7IGNoZWNrU2NlbmFyaW9zOiBjaGVja1NjZW5hcmlvcyB9KVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiB0YXNrc1tgQHRhc2svJHt0YXNrSWR9YF0/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGdWZXaXRoQXR0YWNobWVudHMoKTogUHJvbWlzZTxGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1Zi13aXRoLWF0dGFjaG1lbnRzXCIpKVxuICAgICAgICAgICAgLmpzb248RnVmV2l0aEF0dGFjaG1lbnRzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbEZ1ZihydWxlczogc3RyaW5nW10pOiBQcm9taXNlPEJhc2VHZXRGdWZSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxCYXNlR2V0RnVmUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFza3MpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7XG4gICAgICAgICAgICAgICAgICAgIFtgQHRhc2svJHt0YXNrSWR9YF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2tJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRhc2tJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtgQHRhc2svJHt0YXNrSWR9YF0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9ybG9nRXhwZXJ0KSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwicHJlc2VudGF0aW9ucy9lcnJvckxvZy9wcmludFwiKSwge1xuICAgICAgICAgICAgZXJyb3JMb2dOYW1lOiBlcnJvckxvZ05hbWUsXG4gICAgICAgICAgICBwcm9wc0RyaXZlTmFtZTogcHJvcHNOYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNsZWFyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29udmVydERyYWZ0RnJvbVByZXZHZnYoeyBwcmV2R2Z2RHJhZnRJZCwgZ2Z2IH06IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnRcIikpLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICBpZDogcHJldkdmdkRyYWZ0SWQsXG4gICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0LCBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcik6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShkYXRhKVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDA5KTtcblxuICAgICAgICBjb25zdCBnZXRTdWNjZXNzUmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuc3RhdHVzID09IDIwMCA/IGF3YWl0IGdldFN1Y2Nlc3NSZXN1bHQoKSA6IHJlc3VsdC5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VXaXRoTm9ybWFsaXphdGlvblNldChcbiAgICAgICAgZGF0YTogU2VydmVyQ2hhbmdlU2V0LFxuICAgICAgICBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcixcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9wYXRjaC13aXRoLW5vcm1hbGl6YXRpb25cIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiwgbm9ybWFsaXplcklkOiBub3JtYWxpemVySWQgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZGF0YSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwOSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGF0dXMgPT0gMjAwID8gYXdhaXQgcmVzdWx0Lmpzb248SVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0PigpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoXG4gICAgICAgIGRhdGE6IFNlcnZlckNoYW5nZVNldCxcbiAgICAgICAgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIsXG4gICAgICAgIG5vcm1hbGl6ZXJJZD86IHN0cmluZ1xuICAgICk6IElTZW5kQ2hhbmdlU2V0UmVzdWx0IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5odHRwQ2xpZW50LnBvc3RTeW5jKHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lclwiKSwgeyBkYXRhVmVyc2lvbjogY3VycmVudERhdGFWZXJzaW9uIH0sIGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IGdldFN1Y2Nlc3NSZXN1bHRTeW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0LnN0YXR1cyA9PSAyMDAgPyBnZXRTdWNjZXNzUmVzdWx0U3luYygpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogUGF0aExvYWRTcGVjaWZpY2F0aW9uW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShjb252ZXJ0ZWRSdWxlcy5sZW5ndGggPiAwID8gY29udmVydGVkUnVsZXMgOiBbXCIqXCJdKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZvcm1hdDogXCJKc29uVHJlZVwiIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGNvbnZlcnRlZFJ1bGVzLmxlbmd0aCA+IDAgPyBjb252ZXJ0ZWRSdWxlcyA6IFtcIipcIl0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVyUmF3UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyMlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoY29udmVydGVkUnVsZXMubGVuZ3RoID4gMCA/IGNvbnZlcnRlZFJ1bGVzIDogW1wiKlwiXSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlclJhd1Jlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhVmVyc2lvbigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZ2V0LWRhdGEtdmVyc2lvblwiKSkuanNvbjxudW1iZXI+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL2dldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFjY2VwdFRyYW5zZmVyVHlwZShcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgdHJhbnNmZXJUeXBlOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lYClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLCB0eXBlSWQ6IHRyYW5zZmVyVHlwZSB9KVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZpbGVzOiBJQ29tYmluZUJ5VHJhbnNmZXJzW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lLW11bHRpcGxlYClcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGZpbGVzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFVybChcInNldC1mdWZcIikpLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZ1ZkRyaXZlVXJpOiBkcml2ZVVyaSwgY29tYmluZU1ldGhvZDogY29tYmluZU1ldGhvZCB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGNlbHNUb1BhcnRpYWxGdWZzKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KFwidjEvZmlsZXMvZXhjZWxzLXRvLXBhcnRpYWwtZnVmc1wiKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiwgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pXG4gICAgICAgICAgICAgICAgLndpdGhKc29uQm9keShkcml2ZVVyaXMpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgoXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogc3RyaW5nLFxuICAgICAgICBjb21iaW5hdG9yVHlwZTogQ29tYmluYXRvclR5cGVcbiAgICApOiBQcm9taXNlPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9pbXBvcnQtZnJvbS1wYXJ0aWFsLWZ1ZnMtYnktcGF0aFwiKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5hdG9yVHlwZTogY29tYmluYXRvclR5cGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhcmdzPzogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmc1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgZHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldERyYWZ0U2V0dGluZ3Moc2V0dGluZ3M6IERyYWZ0U2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJleHRlcm5hbC9zZXQtc2V0dGluZ3NcIikpLndpdGhKc29uQm9keShzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERyYWZ0U2V0dGluZ3MoKTogUHJvbWlzZTxEcmFmdFNldHRpbmdzPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZXh0ZXJuYWwvZ2V0LXNldHRpbmdzXCIpKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjxEcmFmdFNldHRpbmdzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcInRlc3Qtbm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbihydWxlczogVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9zZXQtbXVsdGlwbGUtd2l0aC1ub3JtYWxpemF0aW9uXCIpO1xuICAgICAgICBjb25zdCBmaW5hbFJ1bGVzID0gcnVsZXMubWFwKHggPT4gKHsgLi4ueCwgcGF0aDogY29udmVydFRvTGVnYWN5UGF0aCh4LnBhdGgpIH0pKTtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHVyaSkud2l0aEpzb25Cb2R5KGZpbmFsUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aHNQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IG1heEluc3RhbmNlQ291bnRQYXJhbXMgPSBtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCA/IHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudCB9IDoge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoU3RyaW5nOiB0ZXh0LCBwYXRoc1ByZWZpeDogcGF0aHNQcmVmaXgsIC4uLm1heEluc3RhbmNlQ291bnRQYXJhbXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL3NlYXJjaC1ieS1zdHJpbmdcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHNUb1NlYXJjaClcbiAgICAgICAgICAgIC5qc29uPHN0cmluZ1tdPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjdXN0b21Ob3JtYWxpemUoXG4gICAgICAgIG5vcm1hbGl6ZXJJZDogc3RyaW5nLFxuICAgICAgICBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgbm9ybWFsaXplcklkOiBub3JtYWxpemVySWQgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvY3VzdG9tLW5vcm1hbGl6ZVwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRoUHJlZml4ZXMpXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0RW1wbG95ZWVzKHJlcXVlc3Q6IEltcG9ydEVtcGxveWVlc1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJzdGFmZlwiKSkud2l0aEpzb25Cb2R5KHJlcXVlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkZWxldGVJbnN0YW5jZXMoZGVsZXRpbmdSdWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL2RlbGV0ZS1pbnN0YW5jZXNcIikpLndpdGhKc29uQm9keShkZWxldGluZ1J1bGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7IGFjdGlvbklkOiBhY3Rpb25JZCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9tYXNzLWFjdGlvblwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludCh0eXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8UHJpbnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKGBwcmVzZW50YXRpb25zL2lubmVyL3ByaW50LyR7dHlwZX1gKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoYm9keSlcbiAgICAgICAgICAgIC5qc29uPFByaW50UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHByaW50RXhjZWwocGF0aFRvVGFibGU6IHN0cmluZyk6IFByb21pc2U8UHJpbnRSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKGBwcmVzZW50YXRpb25zL3RhYmxlL3ByaW50YCkpXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IHBhdGhUb1RhYmxlOiBwYXRoVG9UYWJsZSB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlRXhjZWwgPSByZXNwb25zZS5qc29uPFByaW50UmVzcG9uc2U+KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRXhjZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNoZWNrQnlQb3BkKCk6IFByb21pc2U8Q2FuZHlQb3BkUHJvdG9jb2w+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KFxuICAgICAgICAgICAgYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS9jaGVja0J5UG9wZGBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjxDYW5keVBvcGRQcm90b2NvbD4oKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLG1CQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUEyQkEsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssc0JBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUdBLElBQUFPLHFCQUFBLEdBQUFQLE9BQUE7QUFXQSxNQUFNUSxjQUFjLEdBQUc7RUFBRUMsR0FBRyxFQUFFLFdBQVc7RUFBRUMsV0FBVyxFQUFFO0FBQUksQ0FBQztBQUFDLElBRWxEQyxZQUFZLDBCQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQUEsT0FBWkEsWUFBWTtBQUFBO0FBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFBQSxZQUFBO0FBTXhCLFNBQVNFLG9DQUFvQ0EsQ0FBQ0MsSUFBMkIsRUFBVTtFQUMvRSxPQUNJLENBQUNBLElBQUksQ0FBQ0MsSUFB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
|
|
551
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0h0dHBDbGllbnQiLCJfQXV0aGVudGljYXRpb25Nb2RlIiwiX01vZGVsUGF0aCIsIl9Gb2N1c1R5cGVzIiwiX0RyYWZ0UHJlc2VudGF0aW9uVHlwZSIsIl9Jc0J1ZmZlciIsIl9GdWZTaXplVG9vTGFyZ2VFcnJvciIsInN0cmFuZ2VPcHRpb25zIiwic3JjIiwiZGF0YVZlcnNpb24iLCJTZXJ2ZXJFcnJvcnMiLCJleHBvcnRzIiwiY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nIiwic3BlYyIsInNraXAiLCJwYXRoT3JQYXRoUHJlZml4IiwidG9MZWdhY3lQYXRoIiwiQ2FuZHlBcGlDbGllbnQiLCJjb25zdHJ1Y3RvciIsImZldGNoSW1wbCIsImJhc2VVcmwiLCJyZXNvdXJjZVpvbmUiLCJhdXRoZW50aWNhdGlvbiIsImh0dHBDbGllbnQiLCJIdHRwQ2xpZW50IiwiY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJDYW5keUFwaURyYWZ0Q2xpZW50IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJwYXRocyIsIm1hcCIsImlubiIsInJlc3BvbnNlIiwicG9zdCIsImdldERyYWZ0VXJsIiwid2l0aEpzb25Cb2R5IiwianNvbiIsInJlc3VsdCIsIl9yZXNwb25zZSIsImlublNlcnZlclZhbHVlIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJlcnJvciIsImVycm9yQ29kZSIsIkZvY3VzU2VydmVyRXJyb3JDb2RlIiwiTm9Jbm5FcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSR2YWx1ZSIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvciIsIl9pbm5TZXJ2ZXJWYWx1ZSRlcnJvcjIiLCJnZXRBbGxHZnZzIiwiYWJvcnRTaWduYWwiLCJib2R5IiwiZ2V0IiwiY3JlYXRlRHJhZnRGcm9tRHJpdmUiLCJucyIsImZ1ZkRyaXZlVXJpIiwid2l0aFF1ZXJ5UGFyYW1zIiwid2l0aEFib3J0U2lnbmFsIiwiY3JlYXRlRW1wdHlEcmFmdCIsImdmdiIsImNyZWF0ZURyYWZ0IiwiZnVmQ29udGVudCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJFcnJvciIsImNoZWNrQWxpdmUiLCJkcmFmdFJlbGF0ZWRVcmwiLCJkcmFmdElkIiwiZ2V0RmVhdHVyZUZsYWdzIiwic2V0VGVzdENsYXNzaWZpY2F0aW9uIiwidGVzdENsYXNzaWZpY2F0aW9uIiwid2l0aFJhd0JvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJ1cmwiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2ciLCJnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmIiwiZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24iLCJEcmFmdFByZXNlbnRhdGlvblR5cGUiLCJpbm5lckZ1ZiIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImNsaWVudEluZm8iLCJnZXRIcmVmVG9Eb3dubG9hZEZvcm1zQ2xpZW50SW5mbyIsImZvcm1zQ2xpZW50SW5mbyIsImdldEhyZWZEb3dubG9hZElubmVyIiwiaW5uZXIiLCJnZXRFcnJvckxvZyIsImdldERyYWZ0UHJlc2VudGF0aW9uVXJsIiwiZXJyb3JMb2ciLCJnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyIsImNoZWNrU2NlbmFyaW9zIiwiZ2V0VGFza0J5SWQiLCJ0YXNrSWQiLCJfdGFza3MiLCJ0YXNrcyIsImdldEZ1ZldpdGhBdHRhY2htZW50cyIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsImdldEFsbFRhc2tzIiwiT2JqZWN0IiwidmFsdWVzIiwieCIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJhZGRlZCIsImNoYW5nZWQiLCJpZCIsInJlbW92ZWQiLCJjYW5jZWxUYXNrIiwiZ2V0RXhwZXJ0RXJyb3JMb2ciLCJlcnJvcmxvZ0V4cGVydCIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwicHJvcHNEcml2ZU5hbWUiLCJjbGVhckRyYWZ0IiwiY29udmVydERyYWZ0RnJvbVByZXZHZnYiLCJwcmV2R2Z2RHJhZnRJZCIsInNlbmRDaGFuZ2VTZXQiLCJkYXRhIiwiY3VycmVudERhdGFWZXJzaW9uIiwiYWNjZXB0Q29kZSIsImdldFN1Y2Nlc3NSZXN1bHQiLCJfZGF0YVJlc3VsdCRkYXRhVmVyc2kiLCJkYXRhUmVzdWx0IiwicmVqZWN0Iiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJwb3N0U3luYyIsImdldFN1Y2Nlc3NSZXN1bHRTeW5jIiwiX2RhdGFSZXN1bHQkZGF0YVZlcnNpMiIsImdldFJlcXVpc2l0ZXMiLCJyZXF1aXNpdGVMaXN0IiwiZ2V0SW5uZXIiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiY29udmVydGVkUnVsZXMiLCJ0b1N0cmluZyIsImxlbmd0aCIsImdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJmb3JtYXQiLCJnZXRSYXdQYXJ0aWFsSW5uZXJBc0pzb25UcmVlIiwiZ2V0RGF0YVZlcnNpb24iLCJnZXRFeHBsYW5hdG9yeU5vdGUiLCJleHBsYW5hdG9yeU5vdGUiLCJnZXRBdHRhY2htZW50QnlJZCIsImF0dGFjaG1lbnRJZCIsIl9yZXN1bHQkdmFsdWUiLCJfcmVzdWx0IiwiZ2V0QWxsQXR0YWNobWVudHMiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiY29udGVudFVyaSIsIm1ldGEiLCJzZXRQcmVzZW50YXRpb24iLCJwcmVzZW50YXRpb25UeXBlIiwiY29udGVudCIsInJlcXVlc3QiLCJwdXQiLCJpc0J1ZmZlciIsInBhdGNoUHJlc2VudGF0aW9uIiwicHJlc2VudGF0aW9uQ29udGVudCIsInBhdGNoIiwiZ2V0RmlsZVByb3BlcnRpZXMiLCJkcml2ZVVyaSIsInByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyIsImVycm9yRGF0YSIsIkZ1ZlNpemVUb29MYXJnZUVycm9yIiwibWVzc2FnZSIsIkh0dHBFcnJvciIsInVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmlzIiwic2VydmVyRXJyb3IiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJzb3VyY2VzVG90YWxDb3VudCIsImUiLCJVbmtub3duRXJyb3IiLCJhY2NlcHRUcmFuc2ZlclR5cGUiLCJ0cmFuc2ZlclR5cGUiLCJ0eXBlSWQiLCJhY2NlcHRNdWx0aXBsZVRyYW5zZmVyVHlwZSIsImZpbGVzIiwic2V0RnVmQnlEcml2ZVVyaSIsImNvbWJpbmVGdWZCeURyaXZlVXJpIiwiY29tYmluZU1ldGhvZCIsImV4Y2Vsc1RvUGFydGlhbEZ1ZnMiLCJwYXRoVG9UYWJsZSIsImltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aCIsImNvbWJpbmF0b3JUeXBlIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsImFyZ3MiLCJhcmd1bWVudHMiLCJpbXBvcnRYbWxzIiwiaXNJbXBvcnRCeUZ1ZiIsImltcG9ydEJ5RnVmIiwiRnVmRHJpdmVVcmlzIiwic2V0RHJhZnRTZXR0aW5ncyIsInNldHRpbmdzIiwiZ2V0RHJhZnRTZXR0aW5ncyIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJzZXRNdWx0aXBsZVdpdGhOb3JtYWxpemF0aW9uIiwidXJpIiwiZmluYWxSdWxlcyIsInBhdGgiLCJjb252ZXJ0VG9MZWdhY3lQYXRoIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhzUHJlZml4IiwicGF0aHNUb1NlYXJjaCIsIm1heEluc3RhbmNlQ291bnRQYXJhbXMiLCJwYXJhbXMiLCJzZWFyY2hTdHJpbmciLCJxdWVyeUNvbGxlY3Rpb24iLCJjdXN0b21Ob3JtYWxpemUiLCJwYXRoUHJlZml4ZXMiLCJpbXBvcnRFbXBsb3llZXMiLCJkZWxldGVJbnN0YW5jZXMiLCJkZWxldGluZ1J1bGVzIiwicnVuTWFzc0FjdGlvbiIsImFjdGlvbklkIiwicGFyYW1ldGVycyIsInF1ZXJ5UGFyYW1zIiwicHJpbnQiLCJ0eXBlIiwicHJpbnRFeGNlbCIsInRhYmxlRXhjZWwiLCJjaGVja0J5UG9wZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DYW5keUFwaUNsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB7IEZldGNoIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvRmV0Y2hJbXBsZW1lbnRhdGlvbi9GZXRjaFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSUh0dHBDbGllbnQgfSBmcm9tIFwiLi4vSHR0cENsaWVudC9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBjcmVhdGVBdXRoZW50aWNhdGlvblByb3ZpZGVyIH0gZnJvbSBcIi4uL0h0dHBDbGllbnQvQXV0aGVudGljYXRpb25Nb2RlXCI7XG5pbXBvcnQgeyBJQ29tYmluZUJ5VHJhbnNmZXJzIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL01vZGFscy9VcGxvYWRTZWN0aW9uL1R5cGVzXCI7XG5pbXBvcnQgeyBjb252ZXJ0VG9MZWdhY3lQYXRoIH0gZnJvbSBcIi4uL01vZGVsUGF0aC9Nb2RlbFBhdGhcIjtcblxuaW1wb3J0IHtcbiAgICBDaGVja1NjZW5hcmlvVHlwZSxcbiAgICBGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSxcbiAgICBJQ2FuZHlBcGlDbGllbnQsXG4gICAgSUNhbmR5QXBpRHJhZnRDbGllbnQsXG4gICAgSVNlbmRDaGFuZ2VTZXRSZXN1bHQsXG4gICAgSVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0LFxuICAgIFBhdGhMb2FkU3BlY2lmaWNhdGlvbixcbiAgICBEcmFmdFNldHRpbmdzLFxuICAgIEJhc2VHZXRGdWZSZXNwb25zZSxcbn0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgeyBTZXJ2ZXJJbm5lclJlc3BvbnNlLCBTZXJ2ZXJKc29uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJJbm5lclJlc3BvbnNlXCI7XG5pbXBvcnQge1xuICAgIEV4Y2Vsc1RvUGFydGlhbEZ1ZnNSZXNwb25zZSxcbiAgICBGaWxlUHJvcGVydGllcyxcbiAgICBJbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGhSZXNwb25zZSxcbiAgICBTZXJ2ZXJFcnJvclJlc3BvbnNlLFxuICAgIFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2UsXG59IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GaWxlUHJvcGVydGllc1wiO1xuaW1wb3J0IHsgQ3JlYXRlRHJhZnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0NyZWF0ZURyYWZ0L0NyZWF0ZURyYWZ0UmVzcG9uc2VcIjtcbmltcG9ydCB7IENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRXhwbGFuYXRvcnlOb3RlL0NyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlXCI7XG5pbXBvcnQgeyBEcmFmdEZ1bGxJZCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5pbXBvcnQgeyBTZXJ2ZXJDaGFuZ2VTZXQgfSBmcm9tIFwiLi9UeXBlcy9DaGFuZ2VTZXQvU2VydmVyQ2hhbmdlU2V0XCI7XG5pbXBvcnQgeyBTZXJ2ZXJUYXNrLCBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyB9IGZyb20gXCIuL1R5cGVzL1Rhc2tzL1Rhc2tzXCI7XG5pbXBvcnQgeyBGb2N1c1NlcnZlckVycm9yQ29kZSwgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBHZXRBdHRhY2htZW50c1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvR2V0QXR0YWNobWVudHNSZXNwb25zZVwiO1xuaW1wb3J0IHsgRm9jdXNTZXJ2ZXJSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzU2VydmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7IEdldFRhc2tzU2VydmVyUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9HZXRUYXNrc1NlcnZlclJlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vSXNCdWZmZXJcIjtcbmltcG9ydCB7IENvbWJpbmF0b3JUeXBlLCBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBGdWZTaXplVG9vTGFyZ2VFcnJvciB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9GdWZTaXplVG9vTGFyZ2VFcnJvclwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgUHJpbnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50UmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmF3UmVzcG9uc2VcIjtcbmltcG9ydCB7IFRlc3RDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuL1R5cGVzL1Rlc3RDbGFzc2lmaWNhdGlvblwiO1xuaW1wb3J0IHsgQ2FuZHlQb3BkUHJvdG9jb2wgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9DYW5keVBvcGRQcm90b2NvbFwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9RdWVyeUNvbGxlY3Rvbi9Jbm5lclF1ZXJ5UmVxdWVzdFwiO1xuaW1wb3J0IHsgSW5uZXJRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvUXVlcnlDb2xsZWN0b24vSW5uZXJRdWVyeVJlc3BvbnNlXCI7XG5cbmNvbnN0IHN0cmFuZ2VPcHRpb25zID0geyBzcmM6IFwiY2hhbmdlU2V0XCIsIGRhdGFWZXJzaW9uOiBcIjBcIiB9O1xuXG5leHBvcnQgZW51bSBTZXJ2ZXJFcnJvcnMge1xuICAgIEZ1ZlNpemVUb29MYXJnZSA9IFwiRnVmU2l6ZVRvb0xhcmdlXCIsXG4gICAgQmFkUmVxdWVzdCA9IFwiQmFkUmVxdWVzdFwiLFxuICAgIFVua25vd25FcnJvciA9IFwiVW5rbm93bkVycm9yXCIsXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXRoTG9hZFNwZWNpZmljYXRpb25Ub1N0cmluZyhzcGVjOiBQYXRoTG9hZFNwZWNpZmljYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAgIChzcGVjLnNraXAgPyBcIi1cIiA6IFwiXCIpICtcbiAgICAgICAgKHNwZWMucGF0aE9yUGF0aFByZWZpeCA9PT0gXCIqXCIgPyBzcGVjLnBhdGhPclBhdGhQcmVmaXggOiBzcGVjLnBhdGhPclBhdGhQcmVmaXgudG9MZWdhY3lQYXRoKCkpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIENhbmR5QXBpQ2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpQ2xpZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQ6IElIdHRwQ2xpZW50O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmZXRjaEltcGw6IEZldGNoLFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIHJlc291cmNlWm9uZTogdW5kZWZpbmVkIHwgc3RyaW5nLFxuICAgICAgICBhdXRoZW50aWNhdGlvbjogdW5kZWZpbmVkIHwgQXV0aGVudGljYXRpb25Nb2RlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGZldGNoSW1wbCwgYmFzZVVybCwgY3JlYXRlQXV0aGVudGljYXRpb25Qcm92aWRlcihhdXRoZW50aWNhdGlvbiksIHtcbiAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IENhbmR5QXBpRHJhZnRDbGllbnQodGhpcy5odHRwQ2xpZW50LCBkcmFmdEZ1bGxJZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBwYXRocyA9IGlubnMubWFwKGlubiA9PiBgQGZvY3VzLyR7aW5ufWApO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChkcmFmdEZ1bGxJZCwgXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhzKVxuICAgICAgICAgICAgLmpzb248Rm9jdXNTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBHZXRCeUlublJlc3BvbnNlID0ge307XG4gICAgICAgIGZvciAoY29uc3QgaW5uIG9mIGlubnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlublNlcnZlclZhbHVlID0gcmVzcG9uc2VbYEBmb2N1cy8ke2lubn1gXT8udmFsdWU7XG4gICAgICAgICAgICBpZiAoaW5uU2VydmVyVmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W2lubl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBcIlNlcnZlciBkb2VzIG5vdCByZXR1cm4gaW5uIGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlOiBGb2N1c1NlcnZlckVycm9yQ29kZS5Ob0lubkVycm9yLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpbm5dID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uU2VydmVyVmFsdWUudmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGU6IGlublNlcnZlclZhbHVlLmVycm9yQ29kZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBpbm5TZXJ2ZXJWYWx1ZS5lcnJvciA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnQuZ2V0KGBidWlsZC1zZXJ2ZXIvZ2Z2c2ApLmpzb248c3RyaW5nW10+KCk7XG4gICAgICAgIHJldHVybiBib2R5O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0LWZyb20tZHJpdmVgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgbnM6IG5zLFxuICAgICAgICAgICAgICAgIGZ1ZkRyaXZlVXJpOiBmdWZEcml2ZVVyaSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEFib3J0U2lnbmFsKGFib3J0U2lnbmFsKVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlRW1wdHlEcmFmdChuczogc3RyaW5nLCBnZnY6IHN0cmluZywgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbClcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGZ1ZkNvbnRlbnQ6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGFzeW5jIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogdW5kZWZpbmVkIHwgc3RyaW5nLCBmdWZDb250ZW50PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIGlmIChnZnYgPT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoZnVmQ29udGVudClcbiAgICAgICAgICAgICAgICAuanNvbjxDcmVhdGVEcmFmdFJlc3BvbnNlPigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnZnYgIT0gdW5kZWZpbmVkICYmIGZ1ZkNvbnRlbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7bnN9L2NyZWF0ZS1kcmFmdGApXG4gICAgICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2IH0pXG4gICAgICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgICAgIC53aXRoQm9keUZyb21CdWZmZXIoQnVmZmVyLmZyb20oW10pKVxuICAgICAgICAgICAgICAgIC5qc29uPENyZWF0ZURyYWZ0UmVzcG9uc2U+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdmdiA9PSB1bmRlZmluZWQgJiYgZnVmQ29udGVudCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjcmVhdGUgZHJhZnQ6IG5vIGdmdiBhbmQgbm8gZnVmIHNwZWNpZmllZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdChgdjEvbnMvJHtuc30vY3JlYXRlLWRyYWZ0YClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgLndpdGhDb250ZW50VHlwZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKVxuICAgICAgICAgICAgLndpdGhCb2R5RnJvbUJ1ZmZlcihmdWZDb250ZW50KVxuICAgICAgICAgICAgLmpzb248Q3JlYXRlRHJhZnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tBbGl2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChgX3N0YXR1cy9waW5nYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGRyYWZ0UmVsYXRlZFVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHtkcmFmdEZ1bGxJZC5kcmFmdElkfS8ke2RyYWZ0UmVsYXRlZFVybH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldChcInYxL2ZlYXR1cmVzL2ZsYWdzXCIpLmpzb248RmVhdHVyZUZsYWdzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldFRlc3RDbGFzc2lmaWNhdGlvbih0ZXN0Q2xhc3NpZmljYXRpb246IFRlc3RDbGFzc2lmaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QoXCIvdGVzdG9ubHkvbW9jay1jbGFzc2lmaWNhdGlvblwiKVxuICAgICAgICAgICAgLndpdGhSYXdCb2R5KEpTT04uc3RyaW5naWZ5KHRlc3RDbGFzc2lmaWNhdGlvbikpO1xuICAgICAgICBpZiAoIShyZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHJlc3BvbnNlLiBDb2RlIGlzICR7cmVzcG9uc2Uuc3RhdHVzfS5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDYW5keUFwaURyYWZ0Q2xpZW50IGltcGxlbWVudHMgSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSUh0dHBDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaHR0cENsaWVudDogSUh0dHBDbGllbnQsIGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCkge1xuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmRyYWZ0RnVsbElkID0gZHJhZnRGdWxsSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0lubmVyRWRpdG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQudXJsKGBpbm5lci1lZGl0b3IvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZEZ1ZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1ZlwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwiY29udmVyc2lvblwiKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyRnVmKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5jbGllbnRJbmZvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24oRHJhZnRQcmVzZW50YXRpb25UeXBlLmZvcm1zQ2xpZW50SW5mbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEhyZWZEb3dubG9hZERyYWZ0UHJlc2VudGF0aW9uKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKCk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXJyb3JMb2cpKS5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImVycm9ybG9nXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7IGNoZWNrU2NlbmFyaW9zOiBjaGVja1NjZW5hcmlvcyB9KVxuICAgICAgICAgICAgLmpzb248U2VydmVyRXJyb3JMb2c+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFRhc2tCeUlkKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTxTZXJ2ZXJUYXNrIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShbYEB0YXNrLypgXSlcbiAgICAgICAgICAgIC5qc29uPEdldFRhc2tzU2VydmVyUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiB0YXNrc1tgQHRhc2svJHt0YXNrSWR9YF0/LnZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRGdWZXaXRoQXR0YWNobWVudHMoKTogUHJvbWlzZTxGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWZ1Zi13aXRoLWF0dGFjaG1lbnRzXCIpKVxuICAgICAgICAgICAgLmpzb248RnVmV2l0aEF0dGFjaG1lbnRzUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbEZ1ZihydWxlczogc3RyaW5nW10pOiBQcm9taXNlPEJhc2VHZXRGdWZSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWZ1ZlwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocnVsZXMpXG4gICAgICAgICAgICAuanNvbjxCYXNlR2V0RnVmUmVzcG9uc2U+KCk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVGFza3MoKTogUHJvbWlzZTxTZXJ2ZXJUYXNrW10+IHtcbiAgICAgICAgY29uc3QgdGFza3MgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQHRhc2svKmBdKVxuICAgICAgICAgICAgLmpzb248R2V0VGFza3NTZXJ2ZXJSZXNwb25zZT4oKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFza3MpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuaW5uZXIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhzdHJhbmdlT3B0aW9ucylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoe1xuICAgICAgICAgICAgICAgIGFkZGVkOiBbXSxcbiAgICAgICAgICAgICAgICBjaGFuZ2VkOiB7XG4gICAgICAgICAgICAgICAgICAgIFtgQHRhc2svJHt0YXNrSWR9YF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRhc2tJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRhc2tJZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtdLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IHt9LFxuICAgICAgICAgICAgICAgIHJlbW92ZWQ6IFtgQHRhc2svJHt0YXNrSWR9YF0sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAuZ2V0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmVycm9ybG9nRXhwZXJ0KSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlckVycm9yTG9nPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnVybCh0aGlzLmdldERyYWZ0VXJsKFwicHJlc2VudGF0aW9ucy9lcnJvckxvZy9wcmludFwiKSwge1xuICAgICAgICAgICAgZXJyb3JMb2dOYW1lOiBlcnJvckxvZ05hbWUsXG4gICAgICAgICAgICBwcm9wc0RyaXZlTmFtZTogcHJvcHNOYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNsZWFyXCIpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29udmVydERyYWZ0RnJvbVByZXZHZnYoeyBwcmV2R2Z2RHJhZnRJZCwgZ2Z2IH06IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcImNvbnZlcnRcIikpLndpdGhRdWVyeVBhcmFtcyh7XG4gICAgICAgICAgICBpZDogcHJldkdmdkRyYWZ0SWQsXG4gICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0LCBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcik6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShkYXRhKVxuICAgICAgICAgICAgLmFjY2VwdENvZGUoNDA5KTtcblxuICAgICAgICBjb25zdCBnZXRTdWNjZXNzUmVzdWx0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiByZXN1bHQuc3RhdHVzID09IDIwMCA/IGF3YWl0IGdldFN1Y2Nlc3NSZXN1bHQoKSA6IHJlc3VsdC5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VXaXRoTm9ybWFsaXphdGlvblNldChcbiAgICAgICAgZGF0YTogU2VydmVyQ2hhbmdlU2V0LFxuICAgICAgICBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcixcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9wYXRjaC13aXRoLW5vcm1hbGl6YXRpb25cIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZGF0YVZlcnNpb246IGN1cnJlbnREYXRhVmVyc2lvbiwgbm9ybWFsaXplcklkOiBub3JtYWxpemVySWQgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZGF0YSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwOSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zdGF0dXMgPT0gMjAwID8gYXdhaXQgcmVzdWx0Lmpzb248SVNlbmRDaGFuZ2VTZXRTdWNjZXNzUmVzdWx0PigpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZENoYW5nZVNldFN5bmMoXG4gICAgICAgIGRhdGE6IFNlcnZlckNoYW5nZVNldCxcbiAgICAgICAgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIsXG4gICAgICAgIG5vcm1hbGl6ZXJJZD86IHN0cmluZ1xuICAgICk6IElTZW5kQ2hhbmdlU2V0UmVzdWx0IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5odHRwQ2xpZW50LnBvc3RTeW5jKHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lclwiKSwgeyBkYXRhVmVyc2lvbjogY3VycmVudERhdGFWZXJzaW9uIH0sIGRhdGEpO1xuXG4gICAgICAgIGNvbnN0IGdldFN1Y2Nlc3NSZXN1bHRTeW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVJlc3VsdCA9IHJlc3VsdC5qc29uPHsgZGF0YVZlcnNpb24/OiBudW1iZXIgfT4oKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZlcnNpb246IGRhdGFSZXN1bHQ/LmRhdGFWZXJzaW9uID8/IHJlamVjdChcIkludmFsaWQgZGF0YVZlcnNpb24gYWZ0ZXIgYXBwbHlpbmcgY2hhbmdlIHNldC5cIiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmVzdWx0LnN0YXR1cyA9PSAyMDAgPyBnZXRTdWNjZXNzUmVzdWx0U3luYygpIDogcmVzdWx0LnN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHJlcXVpc2l0ZUxpc3QpXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiB1bmRlZmluZWQgfCByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiZ2V0LWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShwYXRocylcbiAgICAgICAgICAgIC5qc29uPFNlcnZlcklubmVyUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihydWxlczogUGF0aExvYWRTcGVjaWZpY2F0aW9uW10sIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXIpOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShjb252ZXJ0ZWRSdWxlcy5sZW5ndGggPiAwID8gY29udmVydGVkUnVsZXMgOiBbXCIqXCJdKVxuICAgICAgICAgICAgLmpzb248U2VydmVySW5uZXJSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlQ291bnQ6IG1heEluc3RhbmNlQ291bnQudG9TdHJpbmcoKSB9KVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZvcm1hdDogXCJKc29uVHJlZVwiIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KGNvbnZlcnRlZFJ1bGVzLmxlbmd0aCA+IDAgPyBjb252ZXJ0ZWRSdWxlcyA6IFtcIipcIl0pXG4gICAgICAgICAgICAuanNvbjxTZXJ2ZXJKc29uUmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVyUmF3UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgY29udmVydGVkUnVsZXMgPSBydWxlcy5tYXAoY29udmVydFBhdGhMb2FkU3BlY2lmaWNhdGlvblRvU3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1wYXJ0aWFsLWlubmVyMlwiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMobWF4SW5zdGFuY2VDb3VudCAhPSB1bmRlZmluZWQgJiYgeyBtYXhJbnN0YW5jZUNvdW50OiBtYXhJbnN0YW5jZUNvdW50LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoY29udmVydGVkUnVsZXMubGVuZ3RoID4gMCA/IGNvbnZlcnRlZFJ1bGVzIDogW1wiKlwiXSlcbiAgICAgICAgICAgIC5qc29uPFNlcnZlclJhd1Jlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhVmVyc2lvbigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZ2V0LWRhdGEtdmVyc2lvblwiKSkuanNvbjxudW1iZXI+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChEcmFmdFByZXNlbnRhdGlvblR5cGUuZXhwbGFuYXRvcnlOb3RlKSlcbiAgICAgICAgICAgIC5qc29uPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJnZXQtaW5uZXJcIikpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KFtgQGF0dGFjaG1lbnQvJHthdHRhY2htZW50SWR9YF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gcmVzdWx0W2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnRJZH1gXT8udmFsdWUgPz8gcmVqZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImdldC1pbm5lclwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoW2BAYXR0YWNobWVudC8qYF0pXG4gICAgICAgICAgICAuanNvbjxHZXRBdHRhY2htZW50c1Jlc3BvbnNlPigpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXN1bHQpLm1hcCh4ID0+IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwoRHJhZnRQcmVzZW50YXRpb25UeXBlLmlubmVyKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoc3RyYW5nZU9wdGlvbnMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHtcbiAgICAgICAgICAgICAgICBhZGRlZDogW10sXG4gICAgICAgICAgICAgICAgY2hhbmdlZDoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogYXR0YWNobWVudElkcy5tYXAoaWQgPT4gYEBhdHRhY2htZW50LyR7aWR9YCksXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBhdHRhY2htZW50IG9mIGF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICBjaGFuZ2VkW2BAYXR0YWNobWVudC8ke2F0dGFjaG1lbnQuaWR9YF0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudFVyaTogYXR0YWNobWVudC5jb250ZW50VXJpLFxuICAgICAgICAgICAgICAgIGlkOiBhdHRhY2htZW50LmlkLFxuICAgICAgICAgICAgICAgIG1ldGE6IGF0dGFjaG1lbnQubWV0YSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0UHJlc2VudGF0aW9uVXJsKERyYWZ0UHJlc2VudGF0aW9uVHlwZS5pbm5lcikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHN0cmFuZ2VPcHRpb25zKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keSh7XG4gICAgICAgICAgICAgICAgYWRkZWQ6IFtdLFxuICAgICAgICAgICAgICAgIGNoYW5nZWQ6IGNoYW5nZWQsXG4gICAgICAgICAgICAgICAgcmVtb3ZlZDogW10sXG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvblR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogc3RyaW5nIHwgdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aFJhd0JvZHkoY29udGVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNCdWZmZXIoY29udGVudCkpIHtcbiAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LndpdGhSYXdCb2R5KGNvbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Qud2l0aEpzb25Cb2R5KGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlcXVlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBhdGNoUHJlc2VudGF0aW9uKFxuICAgICAgICBwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsXG4gICAgICAgIHByZXNlbnRhdGlvbkNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnRcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRQcmVzZW50YXRpb25VcmwocHJlc2VudGF0aW9uVHlwZSkpLndpdGhKc29uQm9keShwcmVzZW50YXRpb25Db250ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmlsZVByb3BlcnRpZXMoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoYHYxL2ZpbGVzL2dldC1wcm9wZXJ0aWVzYClcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQwMCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxGaWxlUHJvcGVydGllcz4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLmdldChgdjEvZmlsZXMvcHJlcGFyZS1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGdmdjogZ2Z2LCBkcml2ZVVyaTogZHJpdmVVcmkgfSlcbiAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb248eyBlcnJvckNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0+KCk7XG4gICAgICAgICAgICBpZiAoZXJyb3JEYXRhLmVycm9yQ29kZSA9PT0gXCJGdWZTaXplVG9vTGFyZ2VcIikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBGdWZTaXplVG9vTGFyZ2VFcnJvcihlcnJvckRhdGEubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yKGVycm9yRGF0YS5tZXNzYWdlLCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEZpbGVQcm9wZXJ0aWVzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL2ZpbGVzL3VwbG9hZC1hbmQtZ2V0LXByb3BlcnRpZXNgKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiB9KVxuICAgICAgICAgICAgICAgIC53aXRoSnNvbkJvZHkoZHJpdmVVcmlzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUsIGludmFsaWRTb3VyY2VEcml2ZUNvbnRlbnROYW1lczogXCJcIiwgc291cmNlc1RvdGFsQ291bnQ6IDAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+KCk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGFjY2VwdFRyYW5zZmVyVHlwZShcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgdHJhbnNmZXJUeXBlOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lYClcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgZnVmRHJpdmVVcmk6IGZ1ZkRyaXZlVXJpLCB0eXBlSWQ6IHRyYW5zZmVyVHlwZSB9KVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZpbGVzOiBJQ29tYmluZUJ5VHJhbnNmZXJzW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3QoYHYxL25zLyR7dGhpcy5kcmFmdEZ1bGxJZC5uc30vZHJhZnRzLyR7dGhpcy5kcmFmdEZ1bGxJZC5kcmFmdElkfS90cmFuc2Zlci9jb21iaW5lLW11bHRpcGxlYClcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGZpbGVzKVxuICAgICAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAgICAgLmFjY2VwdENvZGUoNDAwKVxuICAgICAgICAgICAgICAgIC5hY2NlcHRDb2RlKDQxMyk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbjx7IGVycm9yQ29kZTogU2VydmVyRXJyb3JzOyBtZXNzYWdlOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzZXJ2ZXJFcnJvcjogZGF0YS5lcnJvckNvZGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0RnVmQnlEcml2ZVVyaShkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudC5wdXQodGhpcy5nZXREcmFmdFVybChcInNldC1mdWZcIikpLndpdGhRdWVyeVBhcmFtcyh7IGRyaXZlVXJpOiBkcml2ZVVyaSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyh7IGZ1ZkRyaXZlVXJpOiBkcml2ZVVyaSwgY29tYmluZU1ldGhvZDogY29tYmluZU1ldGhvZCB9KVxuICAgICAgICAgICAgLndpdGhBYm9ydFNpZ25hbChhYm9ydFNpZ25hbCk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbjxDb21iaW5lRnVmUmVzdWx0PigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBleGNlbHNUb1BhcnRpYWxGdWZzKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KFwidjEvZmlsZXMvZXhjZWxzLXRvLXBhcnRpYWwtZnVmc1wiKVxuICAgICAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBnZnY6IGdmdiwgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pXG4gICAgICAgICAgICAgICAgLndpdGhKc29uQm9keShkcml2ZVVyaXMpO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb248RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgoXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogc3RyaW5nLFxuICAgICAgICBjb21iaW5hdG9yVHlwZTogQ29tYmluYXRvclR5cGVcbiAgICApOiBQcm9taXNlPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9pbXBvcnQtZnJvbS1wYXJ0aWFsLWZ1ZnMtYnktcGF0aFwiKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICBjb21iaW5hdG9yVHlwZTogY29tYmluYXRvclR5cGUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAud2l0aEpzb25Cb2R5KGRyaXZlVXJpKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlPigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBtdWx0aXBsZUNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kLFxuICAgICAgICBhcmdzPzogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJ0cmFuc2Zlci9jb21iaW5lLXdpdGgtZnVmc1wiKSlcbiAgICAgICAgICAgIC53aXRoUXVlcnlQYXJhbXMoeyBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgZHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGltcG9ydFhtbHMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGNvbWJpbmF0b3JUeXBlOiBDb21iaW5hdG9yVHlwZSxcbiAgICAgICAgaXNJbXBvcnRCeUZ1ZjogYm9vbGVhbixcbiAgICAgICAgYXJncz86IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwidHJhbnNmZXIvaW1wb3J0LXhtbHNcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHtcbiAgICAgICAgICAgICAgICBjb21iaW5lTWV0aG9kOiBjb21iaW5lTWV0aG9kLFxuICAgICAgICAgICAgICAgIGNvbWJpbmF0b3JUeXBlOiBjb21iaW5hdG9yVHlwZSxcbiAgICAgICAgICAgICAgICBpbXBvcnRCeUZ1ZjogaXNJbXBvcnRCeUZ1ZixcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHsgRnVmRHJpdmVVcmlzOiBkcml2ZVVyaXMsIGFyZ3VtZW50czogYXJncyB9KTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uPENvbWJpbmVGdWZSZXN1bHQ+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNldERyYWZ0U2V0dGluZ3Moc2V0dGluZ3M6IERyYWZ0U2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHRoaXMuZ2V0RHJhZnRVcmwoXCJleHRlcm5hbC9zZXQtc2V0dGluZ3NcIikpLndpdGhKc29uQm9keShzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldERyYWZ0U2V0dGluZ3MoKTogUHJvbWlzZTxEcmFmdFNldHRpbmdzPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLmdldERyYWZ0VXJsKFwiZXh0ZXJuYWwvZ2V0LXNldHRpbmdzXCIpKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjxEcmFmdFNldHRpbmdzPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy5nZXREcmFmdFVybChcInRlc3Qtbm9ybWFsaXplXCIpKS53aXRoSnNvbkJvZHkocnVsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SHJlZkRvd25sb2FkRHJhZnRQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uVHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC51cmwodGhpcy5nZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFVybChkcmFmdFJlbGF0ZWRVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9LyR7ZHJhZnRSZWxhdGVkVXJsfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREcmFmdFByZXNlbnRhdGlvblVybChwcmVzZW50YXRpb25UeXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREcmFmdFVybChgcHJlc2VudGF0aW9ucy8ke3ByZXNlbnRhdGlvblR5cGUudG9TdHJpbmcoKX1gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbihydWxlczogVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9zZXQtbXVsdGlwbGUtd2l0aC1ub3JtYWxpemF0aW9uXCIpO1xuICAgICAgICBjb25zdCBmaW5hbFJ1bGVzID0gcnVsZXMubWFwKHggPT4gKHsgLi4ueCwgcGF0aDogY29udmVydFRvTGVnYWN5UGF0aCh4LnBhdGgpIH0pKTtcbiAgICAgICAgYXdhaXQgdGhpcy5odHRwQ2xpZW50LnBhdGNoKHVyaSkud2l0aEpzb25Cb2R5KGZpbmFsUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aHNQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IG1heEluc3RhbmNlQ291bnRQYXJhbXMgPSBtYXhJbnN0YW5jZUNvdW50ICE9IHVuZGVmaW5lZCA/IHsgbWF4SW5zdGFuY2VDb3VudDogbWF4SW5zdGFuY2VDb3VudCB9IDoge307XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgc2VhcmNoU3RyaW5nOiB0ZXh0LCBwYXRoc1ByZWZpeDogcGF0aHNQcmVmaXgsIC4uLm1heEluc3RhbmNlQ291bnRQYXJhbXMgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL3NlYXJjaC1ieS1zdHJpbmdcIikpXG4gICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGF0aHNUb1NlYXJjaClcbiAgICAgICAgICAgIC5qc29uPHN0cmluZ1tdPigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBxdWVyeUNvbGxlY3Rpb24ocmVxdWVzdDogSW5uZXJRdWVyeVJlcXVlc3QsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPElubmVyUXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvcXVlcnktY29sbGVjdGlvblwiKSlcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocmVxdWVzdClcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpXG4gICAgICAgICAgICAuanNvbjxJbm5lclF1ZXJ5UmVzcG9uc2U+KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGN1c3RvbU5vcm1hbGl6ZShcbiAgICAgICAgbm9ybWFsaXplcklkOiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXhlczogc3RyaW5nW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0geyBub3JtYWxpemVySWQ6IG5vcm1hbGl6ZXJJZCB9O1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoXCJpbm5lci9jdXN0b20tbm9ybWFsaXplXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhwYXJhbXMpXG4gICAgICAgICAgICAud2l0aEpzb25Cb2R5KHBhdGhQcmVmaXhlcylcbiAgICAgICAgICAgIC53aXRoQWJvcnRTaWduYWwoYWJvcnRTaWduYWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRFbXBsb3llZXMocmVxdWVzdDogSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucGF0Y2godGhpcy5nZXREcmFmdFVybChcInN0YWZmXCIpKS53aXRoSnNvbkJvZHkocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbGV0ZUluc3RhbmNlcyhkZWxldGluZ1J1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLmdldERyYWZ0VXJsKFwiaW5uZXIvZGVsZXRlLWluc3RhbmNlc1wiKSkud2l0aEpzb25Cb2R5KGRlbGV0aW5nUnVsZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgYWN0aW9uSWQ6IGFjdGlvbklkIH07XG4gICAgICAgIGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgLnBvc3QodGhpcy5nZXREcmFmdFVybChcImlubmVyL21hc3MtYWN0aW9uXCIpKVxuICAgICAgICAgICAgLndpdGhRdWVyeVBhcmFtcyhxdWVyeVBhcmFtcylcbiAgICAgICAgICAgIC53aXRoSnNvbkJvZHkocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTxQcmludFJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvaW5uZXIvcHJpbnQvJHt0eXBlfWApKVxuICAgICAgICAgICAgLndpdGhKc29uQm9keShib2R5KVxuICAgICAgICAgICAgLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJpbnRFeGNlbChwYXRoVG9UYWJsZTogc3RyaW5nKTogUHJvbWlzZTxQcmludFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudFxuICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuZ2V0RHJhZnRVcmwoYHByZXNlbnRhdGlvbnMvdGFibGUvcHJpbnRgKSlcbiAgICAgICAgICAgICAgICAud2l0aFF1ZXJ5UGFyYW1zKHsgcGF0aFRvVGFibGU6IHBhdGhUb1RhYmxlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFibGVFeGNlbCA9IHJlc3BvbnNlLmpzb248UHJpbnRSZXNwb25zZT4oKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVFeGNlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2hlY2tCeVBvcGQoKTogUHJvbWlzZTxDYW5keVBvcGRQcm90b2NvbD4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICAgICAgICBgdjEvbnMvJHt0aGlzLmRyYWZ0RnVsbElkLm5zfS9kcmFmdHMvJHt0aGlzLmRyYWZ0RnVsbElkLmRyYWZ0SWR9L2NoZWNrQnlQb3BkYFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uPENhbmR5UG9wZFByb3RvY29sPigpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsWUFB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
|
|
@@ -189,6 +189,9 @@ class FakeCandyApiDraftClient {
|
|
|
189
189
|
multipleCombineFufByDriveUri(driveUris, combineMethod) {
|
|
190
190
|
return Promise.resolve(undefined);
|
|
191
191
|
}
|
|
192
|
+
importXmls(driveUris, combineMethod, combinatorType, isImportByFuf) {
|
|
193
|
+
return Promise.resolve(undefined);
|
|
194
|
+
}
|
|
192
195
|
setPresentation(type, content) {
|
|
193
196
|
return Promise.resolve(undefined);
|
|
194
197
|
}
|
|
@@ -198,6 +201,12 @@ class FakeCandyApiDraftClient {
|
|
|
198
201
|
searchInstancesByText(text, pathPrefix, pathsToSearch, maxInstanceCount) {
|
|
199
202
|
return Promise.resolve([]);
|
|
200
203
|
}
|
|
204
|
+
queryCollection(request, abortSignal) {
|
|
205
|
+
return Promise.resolve({
|
|
206
|
+
data: [],
|
|
207
|
+
columns: []
|
|
208
|
+
});
|
|
209
|
+
}
|
|
201
210
|
customNormalize(normalizerId, pathPrefixes) {
|
|
202
211
|
return Promise.resolve(undefined);
|
|
203
212
|
}
|
|
@@ -224,4 +233,4 @@ class FakeCandyApiDraftClient {
|
|
|
224
233
|
}
|
|
225
234
|
}
|
|
226
235
|
exports.FakeCandyApiDraftClient = FakeCandyApiDraftClient;
|
|
227
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9DYW5keUFwaUNsaWVudCIsIkZha2VDYW5keUFwaUNsaWVudCIsImdldEFsbEdmdnMiLCJhYm9ydFNpZ25hbCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tBbGl2ZSIsInVuZGVmaW5lZCIsImNyZWF0ZURyYWZ0IiwibnMiLCJnZnYiLCJib2R5IiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsInNldFRlc3RDbGFzc2lmaWNhdGlvbiIsInRlc3RDbGFzc2lmaWNhdGlvbiIsImV4cG9ydHMiLCJkZWxldGVJbnN0YW5jZXMiLCJkZWxldGluZ1J1bGVzIiwiZ2V0RnVmV2l0aEF0dGFjaG1lbnRzIiwiaW1wb3J0RW1wbG95ZWVzIiwicmVxdWVzdCIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsInJ1bk1hc3NBY3Rpb24iLCJhY3Rpb25JZCIsInBhcmFtZXRlcnMiLCJhY2NlcHRUcmFuc2ZlclR5cGUiLCJ0cmFuc2ZlclR5cGUiLCJhY2NlcHRNdWx0aXBsZVRyYW5zZmVyVHlwZSIsImZpbGVzIiwiY2FuY2VsVGFzayIsInRhc2tJZCIsImNsZWFyRHJhZnQiLCJjb252ZXJ0RHJhZnRGcm9tUHJldkdmdiIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJnZXRBbGxBdHRhY2htZW50cyIsImdldEFsbFRhc2tzIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRFcnJvckxvZyIsImdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zIiwiY2hlY2tTY2VuYXJpb3MiLCJnZXRFeHBlcnRFcnJvckxvZyIsImdldEV4cGxhbmF0b3J5Tm90ZSIsInByaW50IiwidHlwZSIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJ1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpcyIsInNlcnZlckVycm9yIiwiU2VydmVyRXJyb3JzIiwiVW5rbm93bkVycm9yIiwic291cmNlc1RvdGFsQ291bnQiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZyIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwicGF0aHMiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZSIsImdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJnZXRUYXNrQnlJZCIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJwYXRjaFByZXNlbnRhdGlvbiIsImNvbnRlbnQiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJzZW5kQ2hhbmdlU2V0IiwiZGF0YSIsImN1cnJlbnREYXRhVmVyc2lvbiIsImRhdGFWZXJzaW9uIiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsInNldFByZXNlbnRhdGlvbiIsInNldE11bHRpcGxlV2l0aE5vcm1hbGl6YXRpb24iLCJzZWFyY2hJbnN0YW5jZXNCeVRleHQiLCJ0ZXh0IiwicGF0aFByZWZpeCIsInBhdGhzVG9TZWFyY2giLCJjdXN0b21Ob3JtYWxpemUiLCJwYXRoUHJlZml4ZXMiLCJnZXREYXRhVmVyc2lvbiIsInByaW50RXhjZWwiLCJwYXRoVG9UYWJsZSIsImV4Y2Vsc1RvUGFydGlhbEZ1ZnMiLCJpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgiLCJjaGVja0J5UG9wZCIsImdldERyYWZ0U2V0dGluZ3MiLCJzZXREcmFmdFNldHRpbmdzIiwic2V0dGluZ3MiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvRmFrZUNhbmR5QXBpQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tIFwiLi4vRXJyb3JzXCI7XG5pbXBvcnQgeyBJQ29tYmluZUJ5VHJhbnNmZXJzIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9zcmMvRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL01vZGFscy9VcGxvYWRTZWN0aW9uL1R5cGVzXCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgICBDaGVja1NjZW5hcmlvVHlwZSxcbiAgICBGdWZXaXRoQXR0YWNobWVudHNSZXNwb25zZSxcbiAgICBJQ2FuZHlBcGlDbGllbnQsXG4gICAgSUNhbmR5QXBpRHJhZnRDbGllbnQsXG4gICAgSVNlbmRDaGFuZ2VTZXRSZXN1bHQsXG4gICAgUGF0aExvYWRTcGVjaWZpY2F0aW9uLFxuICAgIERyYWZ0U2V0dGluZ3MsXG59IGZyb20gXCIuL0lDYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuL1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlcklubmVyUmVzcG9uc2UsIFNlcnZlckpzb25SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0dldElubmVyL1NlcnZlcklubmVyUmVzcG9uc2VcIjtcbmltcG9ydCB7XG4gICAgRXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlLFxuICAgIEZpbGVQcm9wZXJ0aWVzLFxuICAgIEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlLFxuICAgIFNlcnZlckVycm9yUmVzcG9uc2UsXG4gICAgVXBsb2FkRmlsZVByb3BlcnRpZXNSZXNwb25zZSxcbn0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0ZpbGVQcm9wZXJ0aWVzXCI7XG5pbXBvcnQgeyBDcmVhdGVEcmFmdFJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvQ3JlYXRlRHJhZnQvQ3JlYXRlRHJhZnRSZXNwb25zZVwiO1xuaW1wb3J0IHsgQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9FeHBsYW5hdG9yeU5vdGUvQ3JlYXRlRXhwbGFuYXRvcnlOb3RlUmVzcG9uc2VcIjtcbmltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcbmltcG9ydCB7IFNlcnZlckNoYW5nZVNldCB9IGZyb20gXCIuL1R5cGVzL0NoYW5nZVNldC9TZXJ2ZXJDaGFuZ2VTZXRcIjtcbmltcG9ydCB7IFNlcnZlclRhc2ssIFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvIH0gZnJvbSBcIi4vVHlwZXMvVGFza3MvVGFza3NcIjtcbmltcG9ydCB7IEdldEJ5SW5uUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9Gb2N1cy9Gb2N1c1R5cGVzXCI7XG5pbXBvcnQgeyBBdHRhY2hJbmZvIH0gZnJvbSBcIi4vVHlwZXMvQXR0YWNobWVudHMvQXR0YWNtZW50c1wiO1xuaW1wb3J0IHsgRHJhZnRQcmVzZW50YXRpb25UeXBlIH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9EcmFmdFByZXNlbnRhdGlvblR5cGVcIjtcbmltcG9ydCB7IENvbnZlcnREcmFmdFJlcXVlc3QgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvQ29udmVydERyYWZ0UmVxdWVzdFwiO1xuaW1wb3J0IHsgUHJlc2VudGF0aW9uQ29udGVudCB9IGZyb20gXCIuL1R5cGVzL1ByZXNlbnRhdGlvbnMvUHJlc2VudGF0aW9uQ29udGVudFwiO1xuaW1wb3J0IHsgU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvcnMgfSBmcm9tIFwiLi9DYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgUHJpbnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50UmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmF3UmVzcG9uc2VcIjtcbmltcG9ydCB7IFRlc3RDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuL1R5cGVzL1Rlc3RDbGFzc2lmaWNhdGlvblwiO1xuaW1wb3J0IHsgQ2FuZHlQb3BkUHJvdG9jb2wgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9DYW5keVBvcGRQcm90b2NvbFwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQmFzZUdldEZ1ZlJlc3BvbnNlIH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5cbmV4cG9ydCBjbGFzcyBGYWtlQ2FuZHlBcGlDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlDbGllbnQge1xuICAgIHB1YmxpYyBnZXRBbGxHZnZzKGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0FsaXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiB1bmRlZmluZWQsIGJvZHk6IEJ1ZmZlcik6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT47XG4gICAgcHVibGljIGNyZWF0ZURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nIHwgdW5kZWZpbmVkLCBib2R5PzogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckRyYWZ0KGRyYWZ0RnVsbElkOiBEcmFmdEZ1bGxJZCk6IElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEcmFmdEZyb21Ecml2ZShcbiAgICAgICAgbnM6IHN0cmluZyxcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8Q3JlYXRlRHJhZnRSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVFbXB0eURyYWZ0KG5zOiBzdHJpbmcsIGdmdjogc3RyaW5nLCBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluZm9CeUlubnMoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkLCBpbm5zOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8R2V0QnlJbm5SZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZShmZWF0dXJlRmxhZ3M6IEZlYXR1cmVGbGFnc1Jlc3BvbnNlKTogRmVhdHVyZUZsYWdzUmVzcG9uc2Uge1xuICAgICAgICByZXR1cm4gZmVhdHVyZUZsYWdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGZWF0dXJlRmxhZ3MoKTogUHJvbWlzZTxGZWF0dXJlRmxhZ3NSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZTogRmVhdHVyZUZsYWdzUmVzcG9uc2UgPSB7IGNhbmR5VGVzdEZlYXR1cmU6IFwidHJ1ZVwiIH07XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUZXN0Q2xhc3NpZmljYXRpb24odGVzdENsYXNzaWZpY2F0aW9uOiBUZXN0Q2xhc3NpZmljYXRpb24pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmFrZUNhbmR5QXBpRHJhZnRDbGllbnQgaW1wbGVtZW50cyBJQ2FuZHlBcGlEcmFmdENsaWVudCB7XG4gICAgcHVibGljIGRlbGV0ZUluc3RhbmNlcyhkZWxldGluZ1J1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZ1ZldpdGhBdHRhY2htZW50cygpOiBQcm9taXNlPEZ1ZldpdGhBdHRhY2htZW50c1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZWVzKHJlcXVlc3Q6IEltcG9ydEVtcGxveWVlc1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQYXJ0aWFsRnVmKHJ1bGVzOiBzdHJpbmdbXSk6IFByb21pc2U8QmFzZUdldEZ1ZlJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY2NlcHRUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZ1ZkRyaXZlVXJpOiBzdHJpbmcsXG4gICAgICAgIHRyYW5zZmVyVHlwZTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJFcnJvclJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0TXVsdGlwbGVUcmFuc2ZlclR5cGUoXG4gICAgICAgIGZpbGVzOiBJQ29tYmluZUJ5VHJhbnNmZXJzW10sXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJEcmFmdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0RHJhZnRGcm9tUHJldkdmdihyZXF1ZXN0OiBDb252ZXJ0RHJhZnRSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlT3JVcGRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50czogcmVhZG9ubHkgQXR0YWNoSW5mb1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5xdWV1ZVRhc2sodGFza0lkOiBzdHJpbmcsIHRhc2tJbmZvOiBWZXJpZnlBbmRGaXhGbnNSZXF1aXJlbWVudHNUYXNrSW5mbyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEF0dGFjaG1lbnRzKCk6IFByb21pc2U8QXR0YWNoSW5mb1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxUYXNrcygpOiBQcm9taXNlPFNlcnZlclRhc2tbXT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0YWNobWVudEJ5SWQoYXR0YWNobWVudElkOiBzdHJpbmcpOiBQcm9taXNlPEF0dGFjaEluZm8+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFcnJvckxvZ1dpdGhDaGVja1NjZW5hcmlvcyhjaGVja1NjZW5hcmlvczogQ2hlY2tTY2VuYXJpb1R5cGVbXSk6IFByb21pc2U8U2VydmVyRXJyb3JMb2c+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXhwZXJ0RXJyb3JMb2coKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeHBsYW5hdG9yeU5vdGUoKTogUHJvbWlzZTxDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludCh0eXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8UHJpbnRSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWxlUHJvcGVydGllcyhkcml2ZVVyaTogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXBhcmVBbmRHZXRGaWxlUHJvcGVydGllcyhkcml2ZVVyaTogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVByb3BlcnRpZXMgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyhcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFVwbG9hZEZpbGVQcm9wZXJ0aWVzUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBzZXJ2ZXJFcnJvcjogU2VydmVyRXJyb3JzLlVua25vd25FcnJvcixcbiAgICAgICAgICAgIHNvdXJjZXNUb3RhbENvdW50OiAwLFxuICAgICAgICAgICAgaW52YWxpZFNvdXJjZURyaXZlQ29udGVudE5hbWVzOiBcIlwiLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZkRvd25sb2FkRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRJbm5lcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvQ29udmVydGF0aW9uTG9nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZENsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Eb3dubG9hZElubmVyRnVmKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9FcnJvckxvZ1BkZihlcnJvckxvZ05hbWU6IHN0cmluZywgcHJvcHNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvSW5uZXJFZGl0b3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFJlcXVpc2l0ZXMocmVxdWlzaXRlTGlzdDogcmVhZG9ubHkgc3RyaW5nW10pOiBQcm9taXNlPFNlcnZlclJlcXVpc2l0ZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldElubmVyKHBhdGhzOiByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IFByb21pc2U8U2VydmVySW5uZXJSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lcihcbiAgICAgICAgcnVsZXM6IHJlYWRvbmx5IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVySnNvblJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUoXG4gICAgICAgIHJ1bGVzOiByZWFkb25seSBQYXRoTG9hZFNwZWNpZmljYXRpb25bXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8U2VydmVyUmF3UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFza0J5SWQodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPFNlcnZlclRhc2sgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3JtYWxpemVCeVJ1bGVzKHJ1bGVzOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaFByZXNlbnRhdGlvbih0eXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IFByZXNlbnRhdGlvbkNvbnRlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVBdHRhY2htZW50cyhhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VTZXQoZGF0YTogU2VydmVyQ2hhbmdlU2V0LCBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcik6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRhdGFWZXJzaW9uOiAwIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kQ2hhbmdlV2l0aE5vcm1hbGl6YXRpb25TZXQoXG4gICAgICAgIGRhdGE6IFNlcnZlckNoYW5nZVNldCxcbiAgICAgICAgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIsXG4gICAgICAgIG5vcm1hbGl6ZXJJZD86IHN0cmluZ1xuICAgICk6IFByb21pc2U8SVNlbmRDaGFuZ2VTZXRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IGRhdGFWZXJzaW9uOiAwIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kQ2hhbmdlU2V0U3luYyhkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQsIGN1cnJlbnREYXRhVmVyc2lvbjogbnVtYmVyKTogSVNlbmRDaGFuZ2VTZXRSZXN1bHQge1xuICAgICAgICByZXR1cm4gMjAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGdWZCeURyaXZlVXJpKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG11bHRpcGxlQ29tYmluZUZ1ZkJ5RHJpdmVVcmkoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2RcbiAgICApOiBQcm9taXNlPENvbWJpbmVGdWZSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcmVzZW50YXRpb24odHlwZTogRHJhZnRQcmVzZW50YXRpb25UeXBlLCBjb250ZW50OiBzdHJpbmcgfCB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TXVsdGlwbGVXaXRoTm9ybWFsaXphdGlvbihydWxlczogVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoSW5zdGFuY2VzQnlUZXh0KFxuICAgICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICAgIHBhdGhQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgcGF0aHNUb1NlYXJjaDogc3RyaW5nW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXRhVmVyc2lvbigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludEV4Y2VsKHBhdGhUb1RhYmxlOiBzdHJpbmcpOiBQcm9taXNlPFByaW50UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhjZWxzVG9QYXJ0aWFsRnVmcyhcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPEV4Y2Vsc1RvUGFydGlhbEZ1ZnNSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGgoXG4gICAgICAgIHBhdGhUb1RhYmxlOiBzdHJpbmcsXG4gICAgICAgIGRyaXZlVXJpOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJbXBvcnRGcm9tUGFydGlhbEZ1ZnNCeVBhdGhSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0J5UG9wZCgpOiBQcm9taXNlPENhbmR5UG9wZFByb3RvY29sPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERyYWZ0U2V0dGluZ3MoKTogUHJvbWlzZTxEcmFmdFNldHRpbmdzPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldERyYWZ0U2V0dGluZ3Moc2V0dGluZ3M6IERyYWZ0U2V0dGluZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBa0NBLElBQUFDLGVBQUEsR0FBQUQsT0FBQTtBQVlPLE1BQU1FLGtCQUFrQixDQUE0QjtFQUNoREMsVUFBVUEsQ0FBQ0MsV0FBeUIsRUFBcUI7SUFDNUQsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsRUFBRSxDQUFDO0VBQzlCO0VBRU9DLFVBQVVBLENBQUEsRUFBa0I7SUFDL0IsT0FBT0YsT0FBTyxDQUFDQyxPQUFPLENBQUNF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
|
|
236
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9DYW5keUFwaUNsaWVudCIsIkZha2VDYW5keUFwaUNsaWVudCIsImdldEFsbEdmdnMiLCJhYm9ydFNpZ25hbCIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tBbGl2ZSIsInVuZGVmaW5lZCIsImNyZWF0ZURyYWZ0IiwibnMiLCJnZnYiLCJib2R5IiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImZvckRyYWZ0IiwiZHJhZnRGdWxsSWQiLCJGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCIsImNyZWF0ZURyYWZ0RnJvbURyaXZlIiwiZnVmRHJpdmVVcmkiLCJjcmVhdGVFbXB0eURyYWZ0IiwiZ2V0SW5mb0J5SW5ucyIsImlubnMiLCJnZXRGZWF0dXJlRmxhZ3NXaXRob3V0UHJvbWlzZSIsImZlYXR1cmVGbGFncyIsImdldEZlYXR1cmVGbGFncyIsInJlc3BvbnNlIiwiY2FuZHlUZXN0RmVhdHVyZSIsInNldFRlc3RDbGFzc2lmaWNhdGlvbiIsInRlc3RDbGFzc2lmaWNhdGlvbiIsImV4cG9ydHMiLCJkZWxldGVJbnN0YW5jZXMiLCJkZWxldGluZ1J1bGVzIiwiZ2V0RnVmV2l0aEF0dGFjaG1lbnRzIiwiaW1wb3J0RW1wbG95ZWVzIiwicmVxdWVzdCIsImdldFBhcnRpYWxGdWYiLCJydWxlcyIsInJ1bk1hc3NBY3Rpb24iLCJhY3Rpb25JZCIsInBhcmFtZXRlcnMiLCJhY2NlcHRUcmFuc2ZlclR5cGUiLCJ0cmFuc2ZlclR5cGUiLCJhY2NlcHRNdWx0aXBsZVRyYW5zZmVyVHlwZSIsImZpbGVzIiwiY2FuY2VsVGFzayIsInRhc2tJZCIsImNsZWFyRHJhZnQiLCJjb252ZXJ0RHJhZnRGcm9tUHJldkdmdiIsImNyZWF0ZU9yVXBkYXRlQXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImVucXVldWVUYXNrIiwidGFza0luZm8iLCJnZXRBbGxBdHRhY2htZW50cyIsImdldEFsbFRhc2tzIiwiZ2V0QXR0YWNobWVudEJ5SWQiLCJhdHRhY2htZW50SWQiLCJnZXRFcnJvckxvZyIsImdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zIiwiY2hlY2tTY2VuYXJpb3MiLCJnZXRFeHBlcnRFcnJvckxvZyIsImdldEV4cGxhbmF0b3J5Tm90ZSIsInByaW50IiwidHlwZSIsImdldEZpbGVQcm9wZXJ0aWVzIiwiZHJpdmVVcmkiLCJwcmVwYXJlQW5kR2V0RmlsZVByb3BlcnRpZXMiLCJ1cGxvYWRBbmRHZXRGaWxlUHJvcGVydGllcyIsImRyaXZlVXJpcyIsInNlcnZlckVycm9yIiwiU2VydmVyRXJyb3JzIiwiVW5rbm93bkVycm9yIiwic291cmNlc1RvdGFsQ291bnQiLCJpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXMiLCJnZXRIcmVmRG93bmxvYWRGdWYiLCJnZXRIcmVmRG93bmxvYWRJbm5lciIsImdldEhyZWZUb0NvbnZlcnRhdGlvbkxvZyIsImdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbyIsImdldEhyZWZUb0Rvd25sb2FkRm9ybXNDbGllbnRJbmZvIiwiZ2V0SHJlZlRvRG93bmxvYWRJbm5lckZ1ZiIsImdldEhyZWZUb0Vycm9yTG9nUGRmIiwiZXJyb3JMb2dOYW1lIiwicHJvcHNOYW1lIiwiZ2V0SHJlZlRvSW5uZXJFZGl0b3IiLCJnZXRSZXF1aXNpdGVzIiwicmVxdWlzaXRlTGlzdCIsImdldElubmVyIiwicGF0aHMiLCJnZXRQYXJ0aWFsSW5uZXIiLCJtYXhJbnN0YW5jZUNvdW50IiwiZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZSIsImdldFJhd1BhcnRpYWxJbm5lckFzSnNvblRyZWUiLCJnZXRUYXNrQnlJZCIsIm5vcm1hbGl6ZUJ5UnVsZXMiLCJwYXRjaFByZXNlbnRhdGlvbiIsImNvbnRlbnQiLCJyZW1vdmVBdHRhY2htZW50cyIsImF0dGFjaG1lbnRJZHMiLCJzZW5kQ2hhbmdlU2V0IiwiZGF0YSIsImN1cnJlbnREYXRhVmVyc2lvbiIsImRhdGFWZXJzaW9uIiwic2VuZENoYW5nZVdpdGhOb3JtYWxpemF0aW9uU2V0Iiwibm9ybWFsaXplcklkIiwic2VuZENoYW5nZVNldFN5bmMiLCJzZXRGdWZCeURyaXZlVXJpIiwiY29tYmluZUZ1ZkJ5RHJpdmVVcmkiLCJjb21iaW5lTWV0aG9kIiwibXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaSIsImltcG9ydFhtbHMiLCJjb21iaW5hdG9yVHlwZSIsImlzSW1wb3J0QnlGdWYiLCJzZXRQcmVzZW50YXRpb24iLCJzZXRNdWx0aXBsZVdpdGhOb3JtYWxpemF0aW9uIiwic2VhcmNoSW5zdGFuY2VzQnlUZXh0IiwidGV4dCIsInBhdGhQcmVmaXgiLCJwYXRoc1RvU2VhcmNoIiwicXVlcnlDb2xsZWN0aW9uIiwiY29sdW1ucyIsImN1c3RvbU5vcm1hbGl6ZSIsInBhdGhQcmVmaXhlcyIsImdldERhdGFWZXJzaW9uIiwicHJpbnRFeGNlbCIsInBhdGhUb1RhYmxlIiwiZXhjZWxzVG9QYXJ0aWFsRnVmcyIsImltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aCIsImNoZWNrQnlQb3BkIiwiZ2V0RHJhZnRTZXR0aW5ncyIsInNldERyYWZ0U2V0dGluZ3MiLCJzZXR0aW5ncyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9GYWtlQ2FuZHlBcGlDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcbmltcG9ydCB7IElDb21iaW5lQnlUcmFuc2ZlcnMgfSBmcm9tIFwiLi4vLi4vRW5naW5lL3NyYy9FbmdpbmUvQ29yZS9Nb2RhbE1hbmFnZXIvTW9kYWxzL1VwbG9hZFNlY3Rpb24vVHlwZXNcIjtcblxuaW1wb3J0IHR5cGUge1xuICAgIENoZWNrU2NlbmFyaW9UeXBlLFxuICAgIEZ1ZldpdGhBdHRhY2htZW50c1Jlc3BvbnNlLFxuICAgIElDYW5keUFwaUNsaWVudCxcbiAgICBJQ2FuZHlBcGlEcmFmdENsaWVudCxcbiAgICBJU2VuZENoYW5nZVNldFJlc3VsdCxcbiAgICBQYXRoTG9hZFNwZWNpZmljYXRpb24sXG4gICAgRHJhZnRTZXR0aW5ncyxcbn0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4vVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVySW5uZXJSZXNwb25zZSwgU2VydmVySnNvblJlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVySW5uZXJSZXNwb25zZVwiO1xuaW1wb3J0IHtcbiAgICBFeGNlbHNUb1BhcnRpYWxGdWZzUmVzcG9uc2UsXG4gICAgRmlsZVByb3BlcnRpZXMsXG4gICAgSW1wb3J0RnJvbVBhcnRpYWxGdWZzQnlQYXRoUmVzcG9uc2UsXG4gICAgU2VydmVyRXJyb3JSZXNwb25zZSxcbiAgICBVcGxvYWRGaWxlUHJvcGVydGllc1Jlc3BvbnNlLFxufSBmcm9tIFwiLi9UeXBlcy9EcmFmdEFjdGlvbnMvRmlsZVByb3BlcnRpZXNcIjtcbmltcG9ydCB7IENyZWF0ZURyYWZ0UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9DcmVhdGVEcmFmdC9DcmVhdGVEcmFmdFJlc3BvbnNlXCI7XG5pbXBvcnQgeyBDcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0V4cGxhbmF0b3J5Tm90ZS9DcmVhdGVFeHBsYW5hdG9yeU5vdGVSZXNwb25zZVwiO1xuaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi9UeXBlcy9EcmFmdEZ1bGxJZFwiO1xuaW1wb3J0IHsgU2VydmVyQ2hhbmdlU2V0IH0gZnJvbSBcIi4vVHlwZXMvQ2hhbmdlU2V0L1NlcnZlckNoYW5nZVNldFwiO1xuaW1wb3J0IHsgU2VydmVyVGFzaywgVmVyaWZ5QW5kRml4Rm5zUmVxdWlyZW1lbnRzVGFza0luZm8gfSBmcm9tIFwiLi9UeXBlcy9UYXNrcy9UYXNrc1wiO1xuaW1wb3J0IHsgR2V0QnlJbm5SZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL0ZvY3VzL0ZvY3VzVHlwZXNcIjtcbmltcG9ydCB7IEF0dGFjaEluZm8gfSBmcm9tIFwiLi9UeXBlcy9BdHRhY2htZW50cy9BdHRhY21lbnRzXCI7XG5pbXBvcnQgeyBEcmFmdFByZXNlbnRhdGlvblR5cGUgfSBmcm9tIFwiLi9UeXBlcy9QcmVzZW50YXRpb25zL0RyYWZ0UHJlc2VudGF0aW9uVHlwZVwiO1xuaW1wb3J0IHsgQ29udmVydERyYWZ0UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL0RyYWZ0QWN0aW9ucy9Db252ZXJ0RHJhZnRSZXF1ZXN0XCI7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25Db250ZW50IH0gZnJvbSBcIi4vVHlwZXMvUHJlc2VudGF0aW9ucy9QcmVzZW50YXRpb25Db250ZW50XCI7XG5pbXBvcnQgeyBTZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9HZXRJbm5lci9TZXJ2ZXJSZXF1aXNpdGVzUmVzcG9uc2VcIjtcbmltcG9ydCB7IENvbWJpbmF0b3JUeXBlLCBDb21iaW5lRnVmUmVzdWx0LCBGdWZDb21iaW5lTWV0aG9kIH0gZnJvbSBcIi4vVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IEZlYXR1cmVGbGFnc1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvRmVhdHVyZUZsYWdzL0ZlYXR1cmVGbGFnc1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBTZXJ2ZXJFcnJvcnMgfSBmcm9tIFwiLi9DYW5keUFwaUNsaWVudFwiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1N0YWZmL0ltcG9ydEVtcGxveWVlc1JlcXVlc3RcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgUHJpbnRSZXNwb25zZSB9IGZyb20gXCIuL1R5cGVzL1ByaW50L1ByaW50UmVzcG9uc2VcIjtcbmltcG9ydCB7IFNlcnZlclJhd1Jlc3BvbnNlIH0gZnJvbSBcIi4vVHlwZXMvR2V0SW5uZXIvU2VydmVyUmF3UmVzcG9uc2VcIjtcbmltcG9ydCB7IFRlc3RDbGFzc2lmaWNhdGlvbiB9IGZyb20gXCIuL1R5cGVzL1Rlc3RDbGFzc2lmaWNhdGlvblwiO1xuaW1wb3J0IHsgQ2FuZHlQb3BkUHJvdG9jb2wgfSBmcm9tIFwiLi9UeXBlcy9FcnJvckxvZy9DYW5keVBvcGRQcm90b2NvbFwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlIH0gZnJvbSBcIi4vVHlwZXMvTWFzc0FjdGlvbnMvVmFsdWVGb3JJbnN0YW5jZXNTZXR0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQmFzZUdldEZ1ZlJlc3BvbnNlIH0gZnJvbSBcIi4vSUNhbmR5QXBpQ2xpZW50XCI7XG5pbXBvcnQgeyBJbm5lclF1ZXJ5UmVxdWVzdCB9IGZyb20gXCIuL1R5cGVzL1F1ZXJ5Q29sbGVjdG9uL0lubmVyUXVlcnlSZXF1ZXN0XCI7XG5pbXBvcnQgeyBJbm5lclF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi9UeXBlcy9RdWVyeUNvbGxlY3Rvbi9Jbm5lclF1ZXJ5UmVzcG9uc2VcIjtcblxuZXhwb3J0IGNsYXNzIEZha2VDYW5keUFwaUNsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaUNsaWVudCB7XG4gICAgcHVibGljIGdldEFsbEdmdnMoYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQWxpdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+O1xuICAgIHB1YmxpYyBjcmVhdGVEcmFmdChuczogc3RyaW5nLCBnZnY6IHVuZGVmaW5lZCwgYm9keTogQnVmZmVyKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPjtcbiAgICBwdWJsaWMgY3JlYXRlRHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcgfCB1bmRlZmluZWQsIGJvZHk/OiBCdWZmZXIpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9yRHJhZnQoZHJhZnRGdWxsSWQ6IERyYWZ0RnVsbElkKTogSUNhbmR5QXBpRHJhZnRDbGllbnQge1xuICAgICAgICByZXR1cm4gbmV3IEZha2VDYW5keUFwaURyYWZ0Q2xpZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZURyYWZ0RnJvbURyaXZlKFxuICAgICAgICBuczogc3RyaW5nLFxuICAgICAgICBmdWZEcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4gICAgKTogUHJvbWlzZTxDcmVhdGVEcmFmdFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVtcHR5RHJhZnQobnM6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPENyZWF0ZURyYWZ0UmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5mb0J5SW5ucyhkcmFmdEZ1bGxJZDogRHJhZnRGdWxsSWQsIGlubnM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTxHZXRCeUlublJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFnc1dpdGhvdXRQcm9taXNlKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzUmVzcG9uc2UpOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSB7XG4gICAgICAgIHJldHVybiBmZWF0dXJlRmxhZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZlYXR1cmVGbGFncygpOiBQcm9taXNlPEZlYXR1cmVGbGFnc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlOiBGZWF0dXJlRmxhZ3NSZXNwb25zZSA9IHsgY2FuZHlUZXN0RmVhdHVyZTogXCJ0cnVlXCIgfTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRlc3RDbGFzc2lmaWNhdGlvbih0ZXN0Q2xhc3NpZmljYXRpb246IFRlc3RDbGFzc2lmaWNhdGlvbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlQ2FuZHlBcGlEcmFmdENsaWVudCBpbXBsZW1lbnRzIElDYW5keUFwaURyYWZ0Q2xpZW50IHtcbiAgICBwdWJsaWMgZGVsZXRlSW5zdGFuY2VzKGRlbGV0aW5nUnVsZXM6IEluc3RhbmNlc0RlbGV0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RnVmV2l0aEF0dGFjaG1lbnRzKCk6IFByb21pc2U8RnVmV2l0aEF0dGFjaG1lbnRzUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMocmVxdWVzdDogSW1wb3J0RW1wbG95ZWVzUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhcnRpYWxGdWYocnVsZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxCYXNlR2V0RnVmUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjY2VwdFRyYW5zZmVyVHlwZShcbiAgICAgICAgZnVmRHJpdmVVcmk6IHN0cmluZyxcbiAgICAgICAgdHJhbnNmZXJUeXBlOiBzdHJpbmcsXG4gICAgICAgIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWxcbiAgICApOiBQcm9taXNlPFNlcnZlckVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY2NlcHRNdWx0aXBsZVRyYW5zZmVyVHlwZShcbiAgICAgICAgZmlsZXM6IElDb21iaW5lQnlUcmFuc2ZlcnNbXSxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8U2VydmVyRXJyb3JSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyYWZ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnZlcnREcmFmdEZyb21QcmV2R2Z2KHJlcXVlc3Q6IENvbnZlcnREcmFmdFJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRzOiByZWFkb25seSBBdHRhY2hJbmZvW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnF1ZXVlVGFzayh0YXNrSWQ6IHN0cmluZywgdGFza0luZm86IFZlcmlmeUFuZEZpeEZuc1JlcXVpcmVtZW50c1Rhc2tJbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsQXR0YWNobWVudHMoKTogUHJvbWlzZTxBdHRhY2hJbmZvW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFRhc2tzKCk6IFByb21pc2U8U2VydmVyVGFza1tdPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRhY2htZW50QnlJZChhdHRhY2htZW50SWQ6IHN0cmluZyk6IFByb21pc2U8QXR0YWNoSW5mbz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nV2l0aENoZWNrU2NlbmFyaW9zKGNoZWNrU2NlbmFyaW9zOiBDaGVja1NjZW5hcmlvVHlwZVtdKTogUHJvbWlzZTxTZXJ2ZXJFcnJvckxvZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFeHBlcnRFcnJvckxvZygpOiBQcm9taXNlPFNlcnZlckVycm9yTG9nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEV4cGxhbmF0b3J5Tm90ZSgpOiBQcm9taXNlPENyZWF0ZUV4cGxhbmF0b3J5Tm90ZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTxQcmludFJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVQcm9wZXJ0aWVzIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZUFuZEdldEZpbGVQcm9wZXJ0aWVzKGRyaXZlVXJpOiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlUHJvcGVydGllcyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwbG9hZEFuZEdldEZpbGVQcm9wZXJ0aWVzKFxuICAgICAgICBkcml2ZVVyaXM6IHN0cmluZ1tdLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbFxuICAgICk6IFByb21pc2U8VXBsb2FkRmlsZVByb3BlcnRpZXNSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIHNlcnZlckVycm9yOiBTZXJ2ZXJFcnJvcnMuVW5rbm93bkVycm9yLFxuICAgICAgICAgICAgc291cmNlc1RvdGFsQ291bnQ6IDAsXG4gICAgICAgICAgICBpbnZhbGlkU291cmNlRHJpdmVDb250ZW50TmFtZXM6IFwiXCIsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmRG93bmxvYWRGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZEb3dubG9hZElubmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Db252ZXJ0YXRpb25Mb2coKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkQ2xpZW50SW5mbygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SHJlZlRvRG93bmxvYWRGb3Jtc0NsaWVudEluZm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Rvd25sb2FkSW5uZXJGdWYoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhyZWZUb0Vycm9yTG9nUGRmKGVycm9yTG9nTmFtZTogc3RyaW5nLCBwcm9wc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIcmVmVG9Jbm5lckVkaXRvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0UmVxdWlzaXRlcyhyZXF1aXNpdGVMaXN0OiByZWFkb25seSBzdHJpbmdbXSk6IFByb21pc2U8U2VydmVyUmVxdWlzaXRlc1Jlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SW5uZXIocGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxTZXJ2ZXJJbm5lclJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyKFxuICAgICAgICBydWxlczogcmVhZG9ubHkgUGF0aExvYWRTcGVjaWZpY2F0aW9uW10sXG4gICAgICAgIG1heEluc3RhbmNlQ291bnQ/OiBudW1iZXJcbiAgICApOiBQcm9taXNlPFNlcnZlcklubmVyUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IHJlYWRvbmx5IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJKc29uUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmF3UGFydGlhbElubmVyQXNKc29uVHJlZShcbiAgICAgICAgcnVsZXM6IHJlYWRvbmx5IFBhdGhMb2FkU3BlY2lmaWNhdGlvbltdLFxuICAgICAgICBtYXhJbnN0YW5jZUNvdW50PzogbnVtYmVyXG4gICAgKTogUHJvbWlzZTxTZXJ2ZXJSYXdSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYXNrQnlJZCh0YXNrSWQ6IHN0cmluZyk6IFByb21pc2U8U2VydmVyVGFzayB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vcm1hbGl6ZUJ5UnVsZXMocnVsZXM6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoUHJlc2VudGF0aW9uKHR5cGU6IERyYWZ0UHJlc2VudGF0aW9uVHlwZSwgY29udGVudDogUHJlc2VudGF0aW9uQ29udGVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUF0dGFjaG1lbnRzKGF0dGFjaG1lbnRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VuZENoYW5nZVNldChkYXRhOiBTZXJ2ZXJDaGFuZ2VTZXQsIGN1cnJlbnREYXRhVmVyc2lvbjogbnVtYmVyKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgZGF0YVZlcnNpb246IDAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNlbmRDaGFuZ2VXaXRoTm9ybWFsaXphdGlvblNldChcbiAgICAgICAgZGF0YTogU2VydmVyQ2hhbmdlU2V0LFxuICAgICAgICBjdXJyZW50RGF0YVZlcnNpb246IG51bWJlcixcbiAgICAgICAgbm9ybWFsaXplcklkPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxJU2VuZENoYW5nZVNldFJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgZGF0YVZlcnNpb246IDAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbmRDaGFuZ2VTZXRTeW5jKGRhdGE6IFNlcnZlckNoYW5nZVNldCwgY3VycmVudERhdGFWZXJzaW9uOiBudW1iZXIpOiBJU2VuZENoYW5nZVNldFJlc3VsdCB7XG4gICAgICAgIHJldHVybiAyMDA7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEZ1ZkJ5RHJpdmVVcmkoZHJpdmVVcmk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbWJpbmVGdWZCeURyaXZlVXJpKFxuICAgICAgICBkcml2ZVVyaTogc3RyaW5nLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBGdWZDb21iaW5lTWV0aG9kXG4gICAgKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbXVsdGlwbGVDb21iaW5lRnVmQnlEcml2ZVVyaShcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXSxcbiAgICAgICAgY29tYmluZU1ldGhvZDogRnVmQ29tYmluZU1ldGhvZFxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydFhtbHMoXG4gICAgICAgIGRyaXZlVXJpczogc3RyaW5nW10sXG4gICAgICAgIGNvbWJpbmVNZXRob2Q6IEZ1ZkNvbWJpbmVNZXRob2QsXG4gICAgICAgIGNvbWJpbmF0b3JUeXBlOiBDb21iaW5hdG9yVHlwZSxcbiAgICAgICAgaXNJbXBvcnRCeUZ1ZjogYm9vbGVhblxuICAgICk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByZXNlbnRhdGlvbih0eXBlOiBEcmFmdFByZXNlbnRhdGlvblR5cGUsIGNvbnRlbnQ6IHN0cmluZyB8IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNdWx0aXBsZVdpdGhOb3JtYWxpemF0aW9uKHJ1bGVzOiBWYWx1ZUZvckluc3RhbmNlc1NldHRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2hJbnN0YW5jZXNCeVRleHQoXG4gICAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgICAgcGF0aFByZWZpeDogc3RyaW5nLFxuICAgICAgICBwYXRoc1RvU2VhcmNoOiBzdHJpbmdbXSxcbiAgICAgICAgbWF4SW5zdGFuY2VDb3VudD86IG51bWJlclxuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHF1ZXJ5Q29sbGVjdGlvbihyZXF1ZXN0OiBJbm5lclF1ZXJ5UmVxdWVzdCwgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8SW5uZXJRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBkYXRhOiBbXSwgY29sdW1uczogW10gfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERhdGFWZXJzaW9uKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50RXhjZWwocGF0aFRvVGFibGU6IHN0cmluZyk6IFByb21pc2U8UHJpbnRSZXNwb25zZT4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGNlbHNUb1BhcnRpYWxGdWZzKFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmlzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8RXhjZWxzVG9QYXJ0aWFsRnVmc1Jlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aChcbiAgICAgICAgcGF0aFRvVGFibGU6IHN0cmluZyxcbiAgICAgICAgZHJpdmVVcmk6IHN0cmluZ1tdLFxuICAgICAgICBjb21iaW5lTWV0aG9kOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPEltcG9ydEZyb21QYXJ0aWFsRnVmc0J5UGF0aFJlc3BvbnNlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrQnlQb3BkKCk6IFByb21pc2U8Q2FuZHlQb3BkUHJvdG9jb2w+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RHJhZnRTZXR0aW5ncygpOiBQcm9taXNlPERyYWZ0U2V0dGluZ3M+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RHJhZnRTZXR0aW5ncyhzZXR0aW5nczogRHJhZnRTZXR0aW5ncyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFrQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBY08sTUFBTUUsa0JBQWtCLENBQTRCO0VBQ2hEQyxVQUFVQSxDQUFDQyxXQUF5QixFQUFxQjtJQUM1RCxPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxFQUFFLENBQUM7RUFDOUI7RUFFT0MsVUFBVUEsQ0FBQSxFQUFrQjtJQUMvQixPQUFPRixPQUFPLENBQUNDLE9BQU8sQ0FBQ0UsU0FBUyxDQUFDO0VBQ3JDO0VBSU9DLFdBQVdBLENBQUNDLEVBQVUsRUFBRUMsR0FBdUIsRUFBRUMsSUFBYSxFQUFnQztJQUNqRyxNQUFNLElBQUlDLDJCQUFtQixDQUFDLENBQUM7RUFDbkM7RUFFT0MsUUFBUUEsQ0FBQ0MsV0FBd0IsRUFBd0I7SUFDNUQsT0FBTyxJQUFJQyx1QkFBdUIsQ0FBQyxDQUFDO0VBQ3hDO0VBRU9DLG9CQUFvQkEs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
|