@techextensor/tab-core-utility 2.2.197 → 2.2.199
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/esm2022/index.mjs +12 -10
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +3 -11
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +16 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +12 -39
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +14 -18
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +8 -12
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +56 -200
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +5 -6
- package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +9 -20
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +30 -16
- package/esm2022/lib/tab-core-utility/app/enums/common.enum.mjs +12 -1
- package/esm2022/lib/tab-core-utility/app/enums/dsq.enum.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +6 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +6 -2
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +9 -21
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +8 -53
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +6 -90
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +1 -9
- package/esm2022/lib/tab-core-utility/app/interfaces/release.interface.mjs +7 -0
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +36 -64
- package/esm2022/lib/tab-core-utility/app/models/app-object.class.mjs +1 -27
- package/esm2022/lib/tab-core-utility/app/models/data-source-queries.class.mjs +1 -22
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +16 -18
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +9 -13
- package/esm2022/lib/tab-core-utility/app/utils/filter.util.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +9 -10
- package/esm2022/lib/tab-core-utility/app/utils/select-query.util.mjs +107 -0
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +8 -5
- package/index.d.ts +11 -1
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +2 -6
- package/lib/tab-core-utility/app/constants/common.d.ts +15 -1
- package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +0 -16
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -1
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +16 -67
- package/lib/tab-core-utility/app/crud/tab-release.service.d.ts +5 -12
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +3 -1
- package/lib/tab-core-utility/app/enums/common.enum.d.ts +9 -0
- package/lib/tab-core-utility/app/enums/dsq.enum.d.ts +2 -2
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +4 -1
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +1 -0
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +0 -17
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -18
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +0 -53
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -6
- package/lib/tab-core-utility/app/interfaces/release.interface.d.ts +85 -0
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +84 -94
- package/lib/tab-core-utility/app/models/app-object.class.d.ts +2 -65
- package/lib/tab-core-utility/app/models/data-source-queries.class.d.ts +2 -71
- package/lib/tab-core-utility/app/models/filter.model.d.ts +9 -11
- package/lib/tab-core-utility/app/models/sort.model.d.ts +5 -7
- package/lib/tab-core-utility/app/utils/filter.util.d.ts +2 -2
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +3 -7
- package/lib/tab-core-utility/app/utils/select-query.util.d.ts +24 -0
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +3 -3
- package/package.json +1 -1
- package/esm2022/lib/tab-core-utility/app/enums/workflow.enum.mjs +0 -37
- package/lib/tab-core-utility/app/enums/workflow.enum.d.ts +0 -30
|
@@ -6,8 +6,7 @@ import { ScreenHelper } from "../helpers/screen/screen.helpers";
|
|
|
6
6
|
import { WhereClauseHelper } from "../helpers/common/where-clause.helpers";
|
|
7
7
|
import { RequestResponseHelper } from "../helpers/common/req-res.helpers";
|
|
8
8
|
import { MetadataHelper } from "../helpers/common/meta-data.helpers";
|
|
9
|
-
import {
|
|
10
|
-
import { getEditRecordId, getPrimaryKeyFields, getHeaders } from "../utils/req-res.util";
|
|
9
|
+
import { getEditRecordId, getHeaders } from "../utils/req-res.util";
|
|
11
10
|
import { APIFilterCriteria } from "../models/api-query.class";
|
|
12
11
|
import { ApiService } from '../../core/http-client/api.service';
|
|
13
12
|
import { SignalRService } from '../../core/service/signalr/signalr.service';
|
|
@@ -31,14 +30,13 @@ export class TabDeleteService {
|
|
|
31
30
|
*/
|
|
32
31
|
deleteRecord(screenId, data, objectIDToSave) {
|
|
33
32
|
let fields;
|
|
34
|
-
let
|
|
33
|
+
let appObjectModel;
|
|
35
34
|
let crudTableName = '';
|
|
36
35
|
if (screenId) {
|
|
37
36
|
// Retrieve screen information and fields
|
|
38
37
|
const screen = this.screenHelper.getScreen(screenId);
|
|
39
38
|
const screenDataSource = this.metadataHelper.getDataSourceQueryByIdOrName(screen.DataSourceQuery);
|
|
40
|
-
|
|
41
|
-
appObject = appObjectModel?.toJSON();
|
|
39
|
+
appObjectModel = this.metadataHelper.getAppObjectByIdOrName(screenDataSource?.ObjectID || '');
|
|
42
40
|
crudTableName = appObjectModel?.SystemDBTableName ?? '';
|
|
43
41
|
fields = screenDataSource?.fields()?.map((field) => {
|
|
44
42
|
return {
|
|
@@ -50,15 +48,14 @@ export class TabDeleteService {
|
|
|
50
48
|
if (objectIDToSave) {
|
|
51
49
|
// Retrieve fields based on object ID
|
|
52
50
|
fields = [];
|
|
53
|
-
|
|
54
|
-
appObject = appObjectModel?.toJSON();
|
|
51
|
+
appObjectModel = this.metadataHelper.getAppObjectByIdOrName(objectIDToSave);
|
|
55
52
|
appObjectModel?.fields().forEach(element => {
|
|
56
53
|
fields.push({ Field: element });
|
|
57
54
|
});
|
|
58
55
|
crudTableName = appObjectModel?.SystemDBTableName ?? '';
|
|
59
56
|
}
|
|
60
|
-
const primaryKeyFields =
|
|
61
|
-
if (
|
|
57
|
+
const primaryKeyFields = appObjectModel?.findFields((field) => field.IsPrimaryKey);
|
|
58
|
+
if (appObjectModel && crudTableName) {
|
|
62
59
|
let whereClause = APIFilterCriteria;
|
|
63
60
|
if (primaryKeyFields && primaryKeyFields.length > 1) {
|
|
64
61
|
// Bind where clause for delete operation with multiple primary keys
|
|
@@ -172,8 +169,7 @@ export class TabDeleteService {
|
|
|
172
169
|
deleteMultipleRecordByTable(tableName, values) {
|
|
173
170
|
// Retrieve app object and primary key fields
|
|
174
171
|
const appObjectModel = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === tableName)[0];
|
|
175
|
-
const
|
|
176
|
-
const primaryKeyFields = getPrimaryKeyFields(appObject);
|
|
172
|
+
const primaryKeyFields = appObjectModel?.findFields((field) => field.IsPrimaryKey);
|
|
177
173
|
// Generate values array from data
|
|
178
174
|
const valueArray = this.generateValuesArrayFromData(values, primaryKeyFields[0]?.FieldName);
|
|
179
175
|
// Bind where clause for delete operation using IN operator by table
|
|
@@ -248,4 +244,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
248
244
|
type: Injectable,
|
|
249
245
|
args: [{ providedIn: 'root' }]
|
|
250
246
|
}] });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWRlbGV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWRlbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJOUQsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZ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LEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTY3JlZW5IZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgV2hlcmVDbGF1c2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QsIEFwcFNjcmVlbiB9IGZyb20gXCIuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzc1wiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldFByaW1hcnlLZXlGaWVsZHMsIGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJEZWxldGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlbkhlbHBlciA9IGluamVjdChTY3JlZW5IZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2hlcmVDbGF1c2VIZWxwZXIgPSBpbmplY3QoV2hlcmVDbGF1c2VIZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdFJlc3BvbnNlSGVscGVyID0gaW5qZWN0KFJlcXVlc3RSZXNwb25zZUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsUlNlcnZpY2UgPSBpbmplY3QoU2lnbmFsUlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJhc2VkIG9uIHRoZSBnaXZlbiBzY3JlZW4gSUQsIGRhdGEsIGFuZCBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuLlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9mIHRoZSByZWNvcmQgdG8gZGVsZXRlLlxyXG4gICAqIEBwYXJhbSBvYmplY3RJRFRvU2F2ZSBUaGUgb2JqZWN0IElEIG9mIHRoZSByZWNvcmQgdG8gc2F2ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJRFRvU2F2ZTogYW55KSB7XHJcbiAgICBsZXQgZmllbGRzO1xyXG4gICAgbGV0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gbmV3IEFwcE9iamVjdCgpO1xyXG4gICAgbGV0IGNydWRUYWJsZU5hbWUgPSAnJztcclxuICAgIGlmIChzY3JlZW5JZCkge1xyXG4gICAgICAvLyBSZXRyaWV2ZSBzY3JlZW4gaW5mb3JtYXRpb24gYW5kIGZpZWxkc1xyXG4gICAgICBjb25zdCBzY3JlZW46IEFwcFNjcmVlbiA9IHRoaXMuc2NyZWVuSGVscGVyLmdldFNjcmVlbihzY3JlZW5JZCk7XHJcbiAgICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUoc2NyZWVuLkRhdGFTb3VyY2VRdWVyeSk7XHJcbiAgICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHNjcmVlbkRhdGFTb3VyY2U/Lk9iamVjdElEIHx8ICcnKTtcclxuICAgICAgYXBwT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LnRvSlNPTigpO1xyXG4gICAgICBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0TW9kZWw/LlN5c3RlbURCVGFibGVOYW1lID8/ICcnO1xyXG4gICAgICBmaWVsZHMgPSBzY3JlZW5EYXRhU291cmNlPy5maWVsZHMoKT8ubWFwKChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLmZpZWxkLFxyXG4gICAgICAgICAgRmllbGQ6IGZpZWxkLkZpZWxkXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqZWN0SURUb1NhdmUpIHtcclxuICAgICAgLy8gUmV0cmlldmUgZmllbGRzIGJhc2VkIG9uIG9iamVjdCBJRFxyXG4gICAgICBmaWVsZHMgPSBbXTtcclxuICAgICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUob2JqZWN0SURUb1NhdmUpO1xyXG4gICAgICBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICAgIGFwcE9iamVjdE1vZGVsPy5maWVsZHMoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3RNb2RlbD8uU3lzdGVtREJUYWJsZU5hbWUgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICBpZiAoYXBwT2JqZWN0ICYmIGNydWRUYWJsZU5hbWUpIHtcclxuICAgICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnkgPSBBUElGaWx0ZXJDcml0ZXJpYTtcclxuICAgICAgaWYgKHByaW1hcnlLZXlGaWVsZHMgJiYgcHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlV2l0aE11bHRpcGxlUHJpbWFyeUtleXMoZGF0YS5kYXRhLCBwcmltYXJ5S2V5RmllbGRzLCBjcnVkVGFibGVOYW1lKTtcclxuICAgICAgfSBlbHNlIGlmIChwcmltYXJ5S2V5RmllbGRzICYmIHByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBzaW5nbGUgcHJpbWFyeSBrZXlcclxuICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChkYXRhLmRhdGEsIHByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZShmaWVsZHMsIHJlY29yZElkLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKGNydWRUYWJsZU5hbWUsIHdoZXJlQ2xhdXNlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJ5IHRoZSBzcGVjaWZpZWQgdGFibGUgbmFtZSBhbmQgcHJpbWFyeSBrZXkgdmFsdWUuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIHByaW1hcnkga2V5IGZpZWxkLlxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRCeVRhYmxlKHRhYmxlTmFtZTogc3RyaW5nLCBwcmltYXJ5S2V5OiBzdHJpbmcsIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleSwgcHJpbWFyeUtleVZhbHVlKTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgbmV3IC9yZWNvcmRzL2RlbGV0ZSBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkZWxldGUgcXVlcnkgcGF5bG9hZCAoTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9KVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGRlbGV0ZShkYXRhOiBhbnksIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyBEYXRhIGlzIGFscmVhZHkgaW4gTkVXIGZvcm1hdDogeyBlbnRpdHlOYW1lLCB3aGVyZUNsYXVzZSB9XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIERFTEVURSB0byBuZXcgZW5kcG9pbnQgd2l0aCBib2R5XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUZyb21TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNEZWxldGUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGhlYWRlclxyXG4gICAgKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2U/LklzU3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkRlbGV0ZVNlcnZpY2VdIERlbGV0ZSBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAxOiBTWU5DIC0gSGFzIHJlc3VsdCBpbW1lZGlhdGVseVxyXG4gICAgICAgIGlmIChyZXNwb25zZT8uUmVzdWx0Py5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiAgb2Yoe1xyXG4gICAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgICAgUmVzdWx0OiByZXNwb25zZT8uUmVzdWx0Py5bMF1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAyOiBBU1lOQyAtIEhhcyBjb3JyZWxhdGlvbklkXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jRGVsZXRlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogVW5rbm93biByZXNwb25zZSBmb3JtYXRcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRGVsZXRlU2VydmljZV0gRGVsZXRlIGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGFzeW5jIGRlbGV0ZSAtIHdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIEluaXRpYWwgcmVzcG9uc2Ugd2l0aCBjb3JyZWxhdGlvbklkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHJlc3VsdCBmcm9tIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVBc3luY0RlbGV0ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQ7XHJcblxyXG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJEZWxldGVTZXJ2aWNlXSBNaXNzaW5nIGNvcnJlbGF0aW9uSWQgaW4gYXN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXYWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiB3aXRoIG1hdGNoaW5nIGNvcnJlbGF0aW9uSWRcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbFJTZXJ2aWNlLndhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZCkucGlwZShcclxuICAgICAgbWFwKChub3RpZmljYXRpb24pID0+IHtcclxuICAgICAgICAvLyBDaGVjayBpZiBvcGVyYXRpb24gc3VjY2VlZGVkXHJcbiAgICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm90aWZpY2F0aW9uLmVycm9yTWVzc2FnZSB8fCAnRGVsZXRlIG9wZXJhdGlvbiBmYWlsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSB3aXRoIHJlc3VsdCBmcm9tIG5vdGlmaWNhdGlvblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgIFJlc3VsdDogbm90aWZpY2F0aW9uLnJlc3VsdD8uWzBdLFxyXG4gICAgICAgICAgUmVjb3JkQWZmZWN0dGVkOiBub3RpZmljYXRpb24uYWZmZWN0ZWRSZWNvcmRzIHx8IDBcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ09wZXJhdGlvbiB0aW1lZCBvdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICdEZWxldGUgb3BlcmF0aW9uIHRpbWVkIG91dC4gVGhlIG9wZXJhdGlvbiBtYXkgc3RpbGwgY29tcGxldGUgaW4gdGhlIGJhY2tncm91bmQuIFBsZWFzZSByZWZyZXNoIHRvIHNlZSB0aGUgcmVzdWx0LidcclxuICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheXMgYSBkZWxldGUgY29uZmlybWF0aW9uIHBvcHVwLlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRlbGV0ZSBvcGVyYXRpb24sIG90aGVyd2lzZSBmYWxzZS5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmRQb3B1cCgpIHtcclxuICAgIGNvbnN0IHRleHQgPSBcIllvdSBhcmUgZ29pbmcgdG8gZGVsZXRlIHNlbGVjdGVkIHJlY29yZC4gQXJlIHlvdSBzdXJlIHdhbnQgdG8gZGVsZXRlIHRoZSBzYW1lP1wiO1xyXG4gICAgaWYgKGNvbmZpcm0odGV4dCkgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgbXVsdGlwbGUgcmVjb3JkcyBieSB0YWJsZSBuYW1lIGFuZCB2YWx1ZXMuXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUuXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgdmFsdWVzIG9mIHRoZSByZWNvcmRzIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVNdWx0aXBsZVJlY29yZEJ5VGFibGUodGFibGVOYW1lOiBzdHJpbmcsIHZhbHVlczogYW55KSB7XHJcbiAgICAvLyBSZXRyaWV2ZSBhcHAgb2JqZWN0IGFuZCBwcmltYXJ5IGtleSBmaWVsZHNcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IHRhYmxlTmFtZSlbMF07XHJcbiAgICBjb25zdCBhcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICAvLyBHZW5lcmF0ZSB2YWx1ZXMgYXJyYXkgZnJvbSBkYXRhXHJcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gdGhpcy5nZW5lcmF0ZVZhbHVlc0FycmF5RnJvbURhdGEodmFsdWVzLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUpXHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVVc2luZ0luT3BlcmF0b3JCeVRhYmxlKHRhYmxlTmFtZSwgcHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lLCB2YWx1ZUFycmF5KTtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci5kZWxldGVQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlKGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBtdWx0aXBsZSByZWNvcmRzIGZyb20gdGhlIHNwZWNpZmllZCB0YWJsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGF0YSBhcnJheS5cclxuICAgKiBUaGUgZGF0YSBhcnJheSBzaG91bGQgY29udGFpbiBrZXktdmFsdWUgcGFpcnMgd2l0aG91dCBwcmltYXJ5IGtleSBpbmZvcm1hdGlvbi5cclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiBkYXRhIG9iamVjdHMgdG8gZGVsZXRlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU11bHRpcGxlUmVjb3JkQnlUYWJsZVdpdGhvdXRQcmltYXJ5S2V5KHRhYmxlTmFtZTogc3RyaW5nLCB2YWx1ZXM6IGFueSAsIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBhcnJheSBmcm9tIGRhdGFcclxuICAgIGNvbnN0IHZhbHVlQXJyYXkgPSB0aGlzLmdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KHZhbHVlcyk7ICAgIFxyXG4gICAgLy8gQmluZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRHluYW1pY0RlbGV0ZSh0YWJsZU5hbWUsIHZhbHVlQXJyYXkpO1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQodGFibGVOYW1lLCB3aGVyZUNsYXVzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaiwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYSB2YWx1ZXMgYXJyYXkgZnJvbSB0aGUgZGF0YS5cclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IFRoZSBhcnJheSBvZiBkYXRhLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBleHRyYWN0IGZyb20gZWFjaCBlbGVtZW50LlxyXG4gICAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiB2YWx1ZXMuXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVWYWx1ZXNBcnJheUZyb21EYXRhKGRhdGFBcnJheTogYW55LCBrZXk6IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheTogYW55ID0gW11cclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICBkYXRhQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgdmFsdWVBcnJheS5wdXNoKGVsZW1lbnRba2V5XSlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVBcnJheVxyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgYXJyYXkuXHJcbiAgICogRWFjaCBlbnRyeSBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgaW5jbHVkZXMga2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIGRhdGEgb2JqZWN0cyxcclxuICAgKiBhbmQgYW4gYXNzb2NpYXRlZCBHcm91cElEIGluZGljYXRpbmcgdGhlIGluZGV4IG9mIHRoZSBkYXRhIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gZGF0YUFycmF5IEFuIGFycmF5IG9mIGRhdGEgb2JqZWN0cy5cclxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIG9iamVjdHMgd2l0aCBrZXlzLCB2YWx1ZXMsIGFuZCBncm91cCBpbmRpY2VzLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YVdpdGhvdXRQcmltYXJ5S2V5KGRhdGFBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZUFycmF5OiBhbnkgPSBbXTtcclxuICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBkYXRhIGFycmF5IGlzIHZhbGlkIGFuZCBoYXMgZWxlbWVudHNcclxuICAgIGlmIChkYXRhQXJyYXkgJiYgZGF0YUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBlbGVtZW50IGluIHRoZSBkYXRhIGFycmF5XHJcbiAgICAgIGRhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAvLyBFbnN1cmUgdGhlIGVsZW1lbnQgaXMgYW4gb2JqZWN0XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgZWFjaCBrZXktdmFsdWUgcGFpciBpbiB0aGUgb2JqZWN0XHJcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbGVtZW50KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgLy8gUHVzaCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUga2V5LCB2YWx1ZSwgYW5kIGluZGV4IGFzIEdyb3VwSUQgdG8gdmFsdWVBcnJheVxyXG4gICAgICAgICAgICB2YWx1ZUFycmF5LnB1c2goeyBcclxuICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgICAgR3JvdXBJRDogaW5kZXhcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlQXJyYXk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWRlbGV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWRlbGV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUk5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFD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QUU7Z0JBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUE7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw0Q0FBNEMsQ0FBQyxTQUFjO1FBQ3pELE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUMzQiwwREFBMEQ7UUFDMUQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLDhDQUE4QztZQUM5QyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUNoRCxrQ0FBa0M7Z0JBQ2xDLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUMzQyxpREFBaUQ7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTt3QkFDL0MsK0VBQStFO3dCQUMvRSxVQUFVLENBQUMsSUFBSSxDQUFDOzRCQUNkLEdBQUcsRUFBRSxHQUFHOzRCQUNSLEtBQUssRUFBRSxLQUFLOzRCQUNaLE9BQU8sRUFBRSxLQUFLO3lCQUNmLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzsrR0F6UFUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTY3JlZW5IZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgV2hlcmVDbGF1c2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJEZWxldGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlbkhlbHBlciA9IGluamVjdChTY3JlZW5IZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd2hlcmVDbGF1c2VIZWxwZXIgPSBpbmplY3QoV2hlcmVDbGF1c2VIZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdFJlc3BvbnNlSGVscGVyID0gaW5qZWN0KFJlcXVlc3RSZXNwb25zZUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsUlNlcnZpY2UgPSBpbmplY3QoU2lnbmFsUlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgcmVjb3JkIGJhc2VkIG9uIHRoZSBnaXZlbiBzY3JlZW4gSUQsIGRhdGEsIGFuZCBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuLlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIG9mIHRoZSByZWNvcmQgdG8gZGVsZXRlLlxyXG4gICAqIEBwYXJhbSBvYmplY3RJRFRvU2F2ZSBUaGUgb2JqZWN0IElEIG9mIHRoZSByZWNvcmQgdG8gc2F2ZS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBvZiB0aGUgZGVsZXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICBkZWxldGVSZWNvcmQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJRFRvU2F2ZTogYW55KSB7XHJcbiAgICBsZXQgZmllbGRzO1xyXG4gICAgbGV0IGFwcE9iamVjdE1vZGVsOiBSZXR1cm5UeXBlPE1ldGFkYXRhSGVscGVyWydnZXRBcHBPYmplY3RCeUlkT3JOYW1lJ10+IHwgdW5kZWZpbmVkO1xyXG4gICAgbGV0IGNydWRUYWJsZU5hbWUgPSAnJztcclxuICAgIGlmIChzY3JlZW5JZCkge1xyXG4gICAgICAvLyBSZXRyaWV2ZSBzY3JlZW4gaW5mb3JtYXRpb24gYW5kIGZpZWxkc1xyXG4gICAgICBjb25zdCBzY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgICBjb25zdCBzY3JlZW5EYXRhU291cmNlID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXREYXRhU291cmNlUXVlcnlCeUlkT3JOYW1lKHNjcmVlbi5EYXRhU291cmNlUXVlcnkpO1xyXG4gICAgICBhcHBPYmplY3RNb2RlbCA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShzY3JlZW5EYXRhU291cmNlPy5PYmplY3RJRCB8fCAnJyk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3RNb2RlbD8uU3lzdGVtREJUYWJsZU5hbWUgPz8gJyc7XHJcbiAgICAgIGZpZWxkcyA9IHNjcmVlbkRhdGFTb3VyY2U/LmZpZWxkcygpPy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uZmllbGQsXHJcbiAgICAgICAgICBGaWVsZDogZmllbGQuRmllbGRcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChvYmplY3RJRFRvU2F2ZSkge1xyXG4gICAgICAvLyBSZXRyaWV2ZSBmaWVsZHMgYmFzZWQgb24gb2JqZWN0IElEXHJcbiAgICAgIGZpZWxkcyA9IFtdO1xyXG4gICAgICBhcHBPYmplY3RNb2RlbCA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShvYmplY3RJRFRvU2F2ZSk7XHJcbiAgICAgIGFwcE9iamVjdE1vZGVsPy5maWVsZHMoKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSlcclxuICAgICAgfSk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3RNb2RlbD8uU3lzdGVtREJUYWJsZU5hbWUgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBhcHBPYmplY3RNb2RlbD8uZmluZEZpZWxkcygoZmllbGQpID0+IGZpZWxkLklzUHJpbWFyeUtleSk7XHJcbiAgICBpZiAoYXBwT2JqZWN0TW9kZWwgJiYgY3J1ZFRhYmxlTmFtZSkge1xyXG4gICAgICBsZXQgd2hlcmVDbGF1c2U6IGFueSA9IEFQSUZpbHRlckNyaXRlcmlhO1xyXG4gICAgICBpZiAocHJpbWFyeUtleUZpZWxkcyAmJiBwcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB3aXRoIG11bHRpcGxlIHByaW1hcnkga2V5c1xyXG4gICAgICAgIHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhkYXRhLmRhdGEsIHByaW1hcnlLZXlGaWVsZHMsIGNydWRUYWJsZU5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHByaW1hcnlLZXlGaWVsZHMgJiYgcHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB3aXRoIHNpbmdsZSBwcmltYXJ5IGtleVxyXG4gICAgICAgIGNvbnN0IHJlY29yZElkID0gZ2V0RWRpdFJlY29yZElkKGRhdGEuZGF0YSwgcHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKGZpZWxkcywgcmVjb3JkSWQsIHByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSwgY3J1ZFRhYmxlTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQoY3J1ZFRhYmxlTmFtZSwgd2hlcmVDbGF1c2UpO1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSByZWNvcmQgYnkgdGhlIHNwZWNpZmllZCB0YWJsZSBuYW1lIGFuZCBwcmltYXJ5IGtleSB2YWx1ZS5cclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgcHJpbWFyeSBrZXkgZmllbGQuXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXlWYWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5LlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZVJlY29yZEJ5VGFibGUodGFibGVOYW1lOiBzdHJpbmcsIHByaW1hcnlLZXk6IHN0cmluZywgcHJpbWFyeUtleVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vIEJpbmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIGJ5IHRhYmxlXHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZUJ5VGFibGUodGFibGVOYW1lLCBwcmltYXJ5S2V5LCBwcmltYXJ5S2V5VmFsdWUpO1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQodGFibGVOYW1lLCB3aGVyZUNsYXVzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyB0aGUgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBuZXcgL3JlY29yZHMvZGVsZXRlIGVuZHBvaW50IHdpdGggU1lOQy9BU1lOQyBzdXBwb3J0XHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRlbGV0ZSBxdWVyeSBwYXlsb2FkIChORVcgZm9ybWF0OiB7IGVudGl0eU5hbWUsIHdoZXJlQ2xhdXNlIH0pXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgZGVsZXRlKGRhdGE6IGFueSwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIC8vIERhdGEgaXMgYWxyZWFkeSBpbiBORVcgZm9ybWF0OiB7IGVudGl0eU5hbWUsIHdoZXJlQ2xhdXNlIH1cclxuICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcblxyXG4gICAgLy8gREVMRVRFIHRvIG5ldyBlbmRwb2ludCB3aXRoIGJvZHlcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlRnJvbVNlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmNydWRTZXJ2aWNlLFxyXG4gICAgICBBUEkucmVjb3Jkc0RlbGV0ZSxcclxuICAgICAgZGF0YSxcclxuICAgICAgaGVhZGVyXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZT8uSXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRGVsZXRlU2VydmljZV0gRGVsZXRlIGZhaWxlZDonLCByZXNwb25zZT8uRXJyb3JzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDE6IFNZTkMgLSBIYXMgcmVzdWx0IGltbWVkaWF0ZWx5XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5SZXN1bHQ/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuICBvZih7XHJcbiAgICAgICAgICAgIC4uLnJlc3BvbnNlLFxyXG4gICAgICAgICAgICBSZXN1bHQ6IHJlc3BvbnNlPy5SZXN1bHQ/LlswXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDI6IEFTWU5DIC0gSGFzIGNvcnJlbGF0aW9uSWRcclxuICAgICAgICBlbHNlIGlmIChyZXNwb25zZT8uQ29ycmVsYXRpb25JZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQXN5bmNEZWxldGUocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAzOiBVbmtub3duIHJlc3BvbnNlIGZvcm1hdFxyXG4gICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJEZWxldGVTZXJ2aWNlXSBEZWxldGUgZXJyb3I6JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgYXN5bmMgZGVsZXRlIC0gd2FpdCBmb3IgU2lnbmFsUiBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gcmVzcG9uc2UgSW5pdGlhbCByZXNwb25zZSB3aXRoIGNvcnJlbGF0aW9uSWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggcmVzdWx0IGZyb20gU2lnbmFsUiBub3RpZmljYXRpb25cclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUFzeW5jRGVsZXRlKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSByZXNwb25zZT8uQ29ycmVsYXRpb25JZDtcclxuXHJcbiAgICBpZiAoIWNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1RhYkRlbGV0ZVNlcnZpY2VdIE1pc3NpbmcgY29ycmVsYXRpb25JZCBpbiBhc3luYyByZXNwb25zZScpO1xyXG4gICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uIHdpdGggbWF0Y2hpbmcgY29ycmVsYXRpb25JZFxyXG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsUlNlcnZpY2Uud2FpdEZvck9wZXJhdGlvbihjb3JyZWxhdGlvbklkKS5waXBlKFxyXG4gICAgICBtYXAoKG5vdGlmaWNhdGlvbikgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIG9wZXJhdGlvbiBzdWNjZWVkZWRcclxuICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbi5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub3RpZmljYXRpb24uZXJyb3JNZXNzYWdlIHx8ICdEZWxldGUgb3BlcmF0aW9uIGZhaWxlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIHJlc3BvbnNlIHdpdGggcmVzdWx0IGZyb20gbm90aWZpY2F0aW9uXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3BvbnNlLFxyXG4gICAgICAgICAgUmVzdWx0OiBub3RpZmljYXRpb24ucmVzdWx0Py5bMF0sXHJcbiAgICAgICAgICBSZWNvcmRBZmZlY3R0ZWQ6IG5vdGlmaWNhdGlvbi5hZmZlY3RlZFJlY29yZHMgfHwgMFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnT3BlcmF0aW9uIHRpbWVkIG91dCcpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgJ0RlbGV0ZSBvcGVyYXRpb24gdGltZWQgb3V0LiBUaGUgb3BlcmF0aW9uIG1heSBzdGlsbCBjb21wbGV0ZSBpbiB0aGUgYmFja2dyb3VuZC4gUGxlYXNlIHJlZnJlc2ggdG8gc2VlIHRoZSByZXN1bHQuJ1xyXG4gICAgICAgICAgKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyBhIGRlbGV0ZSBjb25maXJtYXRpb24gcG9wdXAuXHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdXNlciBjb25maXJtcyB0aGUgZGVsZXRlIG9wZXJhdGlvbiwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqL1xyXG4gIGRlbGV0ZVJlY29yZFBvcHVwKCkge1xyXG4gICAgY29uc3QgdGV4dCA9IFwiWW91IGFyZSBnb2luZyB0byBkZWxldGUgc2VsZWN0ZWQgcmVjb3JkLiBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGUgdGhlIHNhbWU/XCI7XHJcbiAgICBpZiAoY29uZmlybSh0ZXh0KSA9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBtdWx0aXBsZSByZWNvcmRzIGJ5IHRhYmxlIG5hbWUgYW5kIHZhbHVlcy5cclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSB2YWx1ZXMgb2YgdGhlIHJlY29yZHMgdG8gZGVsZXRlLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU11bHRpcGxlUmVjb3JkQnlUYWJsZSh0YWJsZU5hbWU6IHN0cmluZywgdmFsdWVzOiBhbnkpIHtcclxuICAgIC8vIFJldHJpZXZlIGFwcCBvYmplY3QgYW5kIHByaW1hcnkga2V5IGZpZWxkc1xyXG4gICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFsbEFwcE9iamVjdHMob2JqID0+IG9iai5TeXN0ZW1EQlRhYmxlTmFtZSA9PT0gdGFibGVOYW1lKVswXTtcclxuICAgIGNvbnN0IHByaW1hcnlLZXlGaWVsZHM6IGFueSA9IGFwcE9iamVjdE1vZGVsPy5maW5kRmllbGRzKChmaWVsZCkgPT4gZmllbGQuSXNQcmltYXJ5S2V5KTtcclxuICAgIC8vIEdlbmVyYXRlIHZhbHVlcyBhcnJheSBmcm9tIGRhdGFcclxuICAgIGNvbnN0IHZhbHVlQXJyYXkgPSB0aGlzLmdlbmVyYXRlVmFsdWVzQXJyYXlGcm9tRGF0YSh2YWx1ZXMsIHByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSlcclxuICAgIC8vIEJpbmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGJ5IHRhYmxlXHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUodGFibGVOYW1lLCBwcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUsIHZhbHVlQXJyYXkpO1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLmRlbGV0ZVBheWxvYWQodGFibGVOYW1lLCB3aGVyZUNsYXVzZSk7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGUoZGF0YU9iaik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIG11bHRpcGxlIHJlY29yZHMgZnJvbSB0aGUgc3BlY2lmaWVkIHRhYmxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkYXRhIGFycmF5LlxyXG4gICAqIFRoZSBkYXRhIGFycmF5IHNob3VsZCBjb250YWluIGtleS12YWx1ZSBwYWlycyB3aXRob3V0IHByaW1hcnkga2V5IGluZm9ybWF0aW9uLlxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlLlxyXG4gICAqIEBwYXJhbSB2YWx1ZXMgVGhlIGFycmF5IG9mIGRhdGEgb2JqZWN0cyB0byBkZWxldGUuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2Ugb2YgdGhlIGRlbGV0ZSBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgZGVsZXRlTXVsdGlwbGVSZWNvcmRCeVRhYmxlV2l0aG91dFByaW1hcnlLZXkodGFibGVOYW1lOiBzdHJpbmcsIHZhbHVlczogYW55ICwgaGVhZGVycz86IGFueSkge1xyXG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGFycmF5IGZyb20gZGF0YVxyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IHRoaXMuZ2VuZXJhdGVWYWx1ZXNBcnJheUZyb21EYXRhV2l0aG91dFByaW1hcnlLZXkodmFsdWVzKTsgICAgXHJcbiAgICAvLyBCaW5kIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRlIG9wZXJhdGlvbiB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JEeW5hbWljRGVsZXRlKHRhYmxlTmFtZSwgdmFsdWVBcnJheSk7XHJcbiAgICBjb25zdCBkYXRhT2JqID0gdGhpcy5yZXF1ZXN0UmVzcG9uc2VIZWxwZXIuZGVsZXRlUGF5bG9hZCh0YWJsZU5hbWUsIHdoZXJlQ2xhdXNlKTtcclxuICAgIHJldHVybiB0aGlzLmRlbGV0ZShkYXRhT2JqLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIHZhbHVlcyBhcnJheSBmcm9tIHRoZSBkYXRhLlxyXG4gICAqIEBwYXJhbSBkYXRhQXJyYXkgVGhlIGFycmF5IG9mIGRhdGEuXHJcbiAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIGV4dHJhY3QgZnJvbSBlYWNoIGVsZW1lbnQuXHJcbiAgICogQHJldHVybnMgVGhlIGFycmF5IG9mIHZhbHVlcy5cclxuICAgKi9cclxuICBnZW5lcmF0ZVZhbHVlc0FycmF5RnJvbURhdGEoZGF0YUFycmF5OiBhbnksIGtleTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZUFycmF5OiBhbnkgPSBbXVxyXG4gICAgaWYgKGRhdGFBcnJheSAmJiBkYXRhQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIGRhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICB2YWx1ZUFycmF5LnB1c2goZWxlbWVudFtrZXldKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZUFycmF5XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhbiBhcnJheSBvZiB2YWx1ZXMgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSBhcnJheS5cclxuICAgKiBFYWNoIGVudHJ5IGluIHRoZSByZXR1cm5lZCBhcnJheSBpbmNsdWRlcyBrZXktdmFsdWUgcGFpcnMgZnJvbSB0aGUgZGF0YSBvYmplY3RzLFxyXG4gICAqIGFuZCBhbiBhc3NvY2lhdGVkIEdyb3VwSUQgaW5kaWNhdGluZyB0aGUgaW5kZXggb2YgdGhlIGRhdGEgb2JqZWN0LlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBkYXRhQXJyYXkgQW4gYXJyYXkgb2YgZGF0YSBvYmplY3RzLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IGNvbnRhaW5pbmcgb2JqZWN0cyB3aXRoIGtleXMsIHZhbHVlcywgYW5kIGdyb3VwIGluZGljZXMuXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVWYWx1ZXNBcnJheUZyb21EYXRhV2l0aG91dFByaW1hcnlLZXkoZGF0YUFycmF5OiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlQXJyYXk6IGFueSA9IFtdO1xyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGlucHV0IGRhdGEgYXJyYXkgaXMgdmFsaWQgYW5kIGhhcyBlbGVtZW50c1xyXG4gICAgaWYgKGRhdGFBcnJheSAmJiBkYXRhQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGVsZW1lbnQgaW4gdGhlIGRhdGEgYXJyYXlcclxuICAgICAgZGF0YUFycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIC8vIEVuc3VyZSB0aGUgZWxlbWVudCBpcyBhbiBvYmplY3RcclxuICAgICAgICBpZiAoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBlYWNoIGtleS12YWx1ZSBwYWlyIGluIHRoZSBvYmplY3RcclxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGVsZW1lbnQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBQdXNoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBrZXksIHZhbHVlLCBhbmQgaW5kZXggYXMgR3JvdXBJRCB0byB2YWx1ZUFycmF5XHJcbiAgICAgICAgICAgIHZhbHVlQXJyYXkucHVzaCh7IFxyXG4gICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICBHcm91cElEOiBpbmRleFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVBcnJheTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -4,7 +4,7 @@ import { getHeaders } from "../utils/req-res.util";
|
|
|
4
4
|
import { API, APIServices } from "../constants/api-constants";
|
|
5
5
|
import { of, throwError } from "rxjs";
|
|
6
6
|
import { switchMap, map, catchError } from "rxjs/operators";
|
|
7
|
-
import {
|
|
7
|
+
import { ConjunctionClause, FilterValueType, RelationalOperator } from "../enums/dsq.enum";
|
|
8
8
|
import { SignalRService } from "../../core/service/signalr/signalr.service";
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class TabFormioService {
|
|
@@ -154,7 +154,7 @@ export class TabFormioService {
|
|
|
154
154
|
operator: RelationalOperator.EqualTo,
|
|
155
155
|
value: recordId,
|
|
156
156
|
valueType: FilterValueType.Literal,
|
|
157
|
-
conjunction:
|
|
157
|
+
conjunction: ConjunctionClause.AND,
|
|
158
158
|
groupId: 0,
|
|
159
159
|
sequence: 1
|
|
160
160
|
}
|
|
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
|
|
|
185
185
|
type: Injectable,
|
|
186
186
|
args: [{ providedIn: 'root' }]
|
|
187
187
|
}] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWZvcm1pby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWZvcm1pby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUc1RSxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FzTzFEO0lBcE9DOzs7Ozs7OztPQVFHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsTUFBd0IsRUFBRSxNQUFZO1FBQ2hFLHVDQUF1QztRQUN2QyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUU3Qix1REFBdUQ7UUFDdkQsZ0RBQWdEO1FBQ2hELElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1B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d0JBQ3BDLEtBQUssRUFBRSxRQUFRO3dCQUNmLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTzt3QkFDbEMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7d0JBQ2pDLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFFBQVEsRUFBRSxDQUFDO3FCQUNaO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLGNBQWlDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLGNBQWMsRUFBRSxNQUFNLElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxXQUFtQixFQUFFLElBQTRCLEVBQUUsTUFBWTtRQUNuRixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsZ0JBQWdCLFdBQVcsU0FBUyxJQUFJLEVBQUUsRUFDdEUsTUFBTSxFQUNOLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQzsrR0F2T1UsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSBcIi4uL3V0aWxzL3JlcS1yZXMudXRpbFwiO1xyXG5pbXBvcnQgeyBBUEksIEFQSVNlcnZpY2VzIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBHZXRTY3JlZW5Db25maWcsIFByb2Nlc3NSZXF1ZXN0UGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBCdWlsZEZvcm1Db21wb25lbnRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NvbW1vbi5lbnVtXCI7XHJcbmltcG9ydCB7IENvbmp1Y3Rpb25DbGF1c2UsIEZpbHRlclZhbHVlVHlwZSwgUmVsYXRpb25hbE9wZXJhdG9yIH0gZnJvbSBcIi4uL2VudW1zL2RzcS5lbnVtXCI7XHJcbmltcG9ydCB7IFNpZ25hbFJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYkZvcm1pb1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpZ25hbFJTZXJ2aWNlID0gaW5qZWN0KFNpZ25hbFJTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBzY3JlZW4gZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgYmFzZWQgb24gdGhlIHNjcmVlbiBJRCBhbmQgb3B0aW9uYWwgY29uZmlndXJhdGlvbi5cclxuICAgKiBORVc6IFVzZXMgbWV0YWRhdGEgc2VydmljZSBlbmRwb2ludCAtIHJldHVybnMgbmV3IEFQSSBmb3JtYXQgZGlyZWN0bHlcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzY3JlZW5JZCAtIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlLlxyXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBsYXlvdXRJZCBhbmQgdmVyc2lvbi5cclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgQVBJIGNhbGwuXHJcbiAgICogQHJldHVybnMgVGhlIHNjcmVlbiBkYXRhIGluIG5ldyBBUEkgZm9ybWF0IChjYW1lbENhc2UpXHJcbiAgICovXHJcbiAgZ2V0U2NyZWVuKHNjcmVlbklkOiBzdHJpbmcsIGNvbmZpZz86IEdldFNjcmVlbkNvbmZpZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgLy8gUmV0cmlldmUgaGVhZGVycyBmb3IgdGhlIEFQSSByZXF1ZXN0XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG5cclxuICAgIC8vIE5FVyBBUEk6IEdFVCAvc2NyZWVuL3tzY3JlZW5JZH0gdmlhIG1ldGFkYXRhIHNlcnZpY2VcclxuICAgIC8vIFF1ZXJ5IHBhcmFtczogbGF5b3V0SWQsIHZlcnNpb24gKGlmIHByb3ZpZGVkKVxyXG4gICAgbGV0IGVuZHBvaW50ID0gYCR7QVBJLnNjcmVlbn0vJHtzY3JlZW5JZH1gO1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgaWYgKGNvbmZpZz8ubGF5b3V0SWQpIHtcclxuICAgICAgcXVlcnlQYXJhbXMucHVzaChgbGF5b3V0SWQ9JHtjb25maWcubGF5b3V0SWR9YCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29uZmlnPy52ZXJzaW9uKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYHZlcnNpb249JHtjb25maWcudmVyc2lvbn1gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocXVlcnlQYXJhbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBlbmRwb2ludCArPSBgPyR7cXVlcnlQYXJhbXMuam9pbignJicpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRGcm9tU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMubWV0YWRhdGFTZXJ2aWNlLFxyXG4gICAgICBlbmRwb2ludCxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBzdWJtaXNzaW9uIGRhdGEgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqIE5FVzogVXNlcyBmb3JtaW8gc2VydmljZSBlbmRwb2ludCAtIHJldHVybnMgbmV3IEFQSSBmb3JtYXQgZGlyZWN0bHlcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzY3JlZW5JZCAtIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlIGRhdGEgZm9yXHJcbiAgICogQHBhcmFtIHJlcXVlc3RQYXlsb2FkIC0gUmVxdWVzdCBwYXlsb2FkIGNvbnRhaW5pbmcgUmVxdG9rZW5zIGFuZCBvdGhlciBwYXJhbWV0ZXJzXHJcbiAgICogQHJldHVybnMgVGhlIHNjcmVlbiBkYXRhIGluIG5ldyBBUEkgZm9ybWF0IChjYW1lbENhc2UpXHJcbiAgICovXHJcbiAgZ2V0U2NyZWVuRGF0YShzY3JlZW5JZDogc3RyaW5nLCByZXF1ZXN0UGF5bG9hZDogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuXHJcbiAgICAvLyBORVcgQVBJOiBQT1NUIC9mb3JtaW8vc2NyZWVuZGF0YS97c2NyZWVuSWR9IHZpYSBmb3JtaW8gc2VydmljZVxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5mb3JtaW9TZXJ2aWNlLFxyXG4gICAgICBgJHtBUEkuc2NyZWVuRGF0YX0vJHtzY3JlZW5JZH1gLFxyXG4gICAgICByZXF1ZXN0UGF5bG9hZCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2Nlc3MgZm9ybSByZXF1ZXN0IC0gaGFuZGxlcyBib3RoIFNZTkMgYW5kIEFTWU5DIG9wZXJhdGlvbnMgdHJhbnNwYXJlbnRseVxyXG4gICAqXHJcbiAgICogU1lOQyBPcGVyYXRpb246IEJhY2tlbmQgcmV0dXJucyBpbnNlcnRlZElkIGltbWVkaWF0ZWx5IOKGkiBGZXRjaCBmdWxsIHJlY29yZCDihpIgUmV0dXJuXHJcbiAgICogQVNZTkMgT3BlcmF0aW9uOiBCYWNrZW5kIHJldHVybnMgY29ycmVsYXRpb25JZCDihpIgV2FpdCBmb3IgU2lnbmFsUiBub3RpZmljYXRpb24g4oaSIEZldGNoIGZ1bGwgcmVjb3JkIOKGkiBSZXR1cm5cclxuICAgKlxyXG4gICAqIERldmVsb3BlciBjb2RlIHN0YXlzIHRoZSBzYW1lIGZvciBib3RoIGNhc2VzIC0gcGxhdGZvcm0gaGFuZGxlcyBjb21wbGV4aXR5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSBPYmplY3QgY29udGFpbmluZyBzdWJtaXNzaW9uIGRhdGEgKFNjcmVlbklkLCBEYXRhKVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBmdWxsIHJlY29yZCBkYXRhIChhbHdheXMgcmV0dXJucyBjb21wbGV0ZSByZWNvcmQpXHJcbiAgICovXHJcbiAgcHJvY2Vzc1JlcXVlc3QoZGF0YTogUHJvY2Vzc1JlcXVlc3RQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmZvcm1pb1NlcnZpY2UsXHJcbiAgICAgIGAke0FQSS5wcm9jZXNzUmVxdWVzdH1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIHN1Y2Nlc3NcclxuICAgICAgICBpZiAoIXJlc3BvbnNlPy5Jc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJGb3JtaW9TZXJ2aWNlXSBQcm9jZXNzUmVxdWVzdCBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAxOiBTWU5DIC0gSGFzIGluc2VydGVkSWQgaW1tZWRpYXRlbHkgKG5vdCBudWxsKVxyXG4gICAgICAgIGlmIChyZXNwb25zZT8uUmVzdWx0Py5pbnNlcnRlZElkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVTeW5jT3BlcmF0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMjogQVNZTkMgLSBIYXMgQ29ycmVsYXRpb25JZCBhbmQgaW5zZXJ0ZWRJZCBpcyBudWxsXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jT3BlcmF0aW9uKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogT3RoZXIgcmVzcG9uc2UgKHJldHVybiBhcy1pcylcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRm9ybWlvU2VydmljZV0gUHJvY2Vzc1JlcXVlc3QgZXJyb3I6JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgU1lOQyBvcGVyYXRpb24gLSBmZXRjaCBmdWxsIHJlY29yZCBpbW1lZGlhdGVseVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlU3luY09wZXJhdGlvbihyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCB7IGluc2VydGVkSWQsIG9iamVjdE5hbWUsIHByaW1hcnlLZXlGaWVsZCB9ID0gcmVzcG9uc2U/LlJlc3VsdCB8fCB7fTtcclxuXHJcbiAgICBpZiAoIW9iamVjdE5hbWUgfHwgIWluc2VydGVkSWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1RhYkZvcm1pb1NlcnZpY2VdIE1pc3Npbmcgb2JqZWN0TmFtZSBvciBpbnNlcnRlZElkIGluIHN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwa0ZpZWxkID0gcHJpbWFyeUtleUZpZWxkIHx8ICdJZCc7IC8vIERlZmF1bHQgdG8gJ0lkJyBpZiBub3QgcHJvdmlkZWRcclxuXHJcbiAgICByZXR1cm4gdGhpcy5mZXRjaEZ1bGxSZWNvcmQob2JqZWN0TmFtZSwgaW5zZXJ0ZWRJZCwgcGtGaWVsZCkucGlwZShcclxuICAgICAgbWFwKChmdWxsUmVjb3JkKSA9PiAoe1xyXG4gICAgICAgIC4uLnJlc3BvbnNlLFxyXG4gICAgICAgIFJlc3VsdDogZnVsbFJlY29yZFxyXG4gICAgICB9KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkZvcm1pb1NlcnZpY2VdIEZhaWxlZCB0byBmZXRjaCBmdWxsIHJlY29yZDonLCBlcnJvcik7XHJcbiAgICAgICAgLy8gUmV0dXJuIHBhcnRpYWwgcmVzcG9uc2UgaWYgZmV0Y2ggZmFpbHNcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBBU1lOQyBvcGVyYXRpb24gLSB3YWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiwgdGhlbiBmZXRjaCBmdWxsIHJlY29yZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlQXN5bmNPcGVyYXRpb24ocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkO1xyXG4gICAgY29uc3QgcHJpbWFyeUtleUZpZWxkID0gcmVzcG9uc2U/LlJlc3VsdD8ucHJpbWFyeUtleUZpZWxkIHx8ICdJZCc7IC8vIEdldCBmcm9tIG9yaWdpbmFsIHJlc3BvbnNlXHJcblxyXG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJGb3JtaW9TZXJ2aWNlXSBNaXNzaW5nIGNvcnJlbGF0aW9uSWQgaW4gYXN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXYWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiB3aXRoIG1hdGNoaW5nIGNvcnJlbGF0aW9uSWRcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbFJTZXJ2aWNlLndhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChub3RpZmljYXRpb24pID0+IHtcclxuICAgICAgICAvLyBDaGVjayBpZiBvcGVyYXRpb24gc3VjY2VlZGVkXHJcbiAgICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcclxuICAgICAgICAgICAgKCkgPT4gbmV3IEVycm9yKG5vdGlmaWNhdGlvbi5lcnJvck1lc3NhZ2UgfHwgJ09wZXJhdGlvbiBmYWlsZWQnKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZldGNoIGZ1bGwgcmVjb3JkIHVzaW5nIHJlc3VsdCBmcm9tIG5vdGlmaWNhdGlvblxyXG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoRnVsbFJlY29yZChub3RpZmljYXRpb24uZW50aXR5TmFtZSwgbm90aWZpY2F0aW9uLnJlc3VsdD8uWzBdLCBwcmltYXJ5S2V5RmllbGQpO1xyXG4gICAgICB9KSxcclxuXHJcbiAgICAgIC8vIEJ1aWxkIG5vcm1hbGl6ZWQgcmVzcG9uc2VcclxuICAgICAgbWFwKChmdWxsUmVjb3JkKSA9PiAoe1xyXG4gICAgICAgIC4uLnJlc3BvbnNlLFxyXG4gICAgICAgIFJlc3VsdDogZnVsbFJlY29yZFxyXG4gICAgICB9KSksXHJcblxyXG4gICAgICAvLyBIYW5kbGUgZXJyb3JzICh0aW1lb3V0LCBmZXRjaCBmYWlsdXJlLCBldGMuKVxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnT3BlcmF0aW9uIHRpbWVkIG91dCcpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxyXG4gICAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdPcGVyYXRpb24gdGltZWQgb3V0LiBUaGUgb3BlcmF0aW9uIG1heSBzdGlsbCBjb21wbGV0ZSBpbiB0aGUgYmFja2dyb3VuZC4gUGxlYXNlIHJlZnJlc2ggdG8gc2VlIHRoZSByZXN1bHQuJ1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCBmdWxsIHJlY29yZCBmcm9tIENSVUQgc2VydmljZVxyXG4gICAqIEBwYXJhbSBvYmplY3ROYW1lIC0gRW50aXR5L1RhYmxlIG5hbWVcclxuICAgKiBAcGFyYW0gcmVjb3JkSWQgLSBSZWNvcmQgSUQgdG8gZmV0Y2hcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleUZpZWxkIC0gUHJpbWFyeSBrZXkgZmllbGQgbmFtZSAoZGVmYXVsdHMgdG8gJ0lkJylcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRnVsbFJlY29yZChvYmplY3ROYW1lOiBzdHJpbmcsIHJlY29yZElkOiBzdHJpbmcsIHByaW1hcnlLZXlGaWVsZCA9ICdJZCcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLlF1ZXJpZXNTZWxlY3QsXHJcbiAgICAgIHtcclxuICAgICAgICBFbnRpdHlOYW1lOiBvYmplY3ROYW1lLFxyXG4gICAgICAgIFJlc3VsdEZpZWxkX0FwcGZpZWxkSWRzOiBbJyonXSxcclxuICAgICAgICB3aGVyZUNsYXVzZToge1xyXG4gICAgICAgICAgZmlsdGVyczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZmllbGROYW1lOiBwcmltYXJ5S2V5RmllbGQsIC8vIFVzZSBkeW5hbWljIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiByZWNvcmRJZCxcclxuICAgICAgICAgICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICAgICAgICAgIGNvbmp1bmN0aW9uOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgICAgICAgICBncm91cElkOiAwLFxyXG4gICAgICAgICAgICAgIHNlcXVlbmNlOiAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICB9KS5waXBlKFxyXG4gICAgICAgIG1hcCgoc2VsZWN0UmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0UmVzcG9uc2U/LlJlc3VsdCAmJiBzZWxlY3RSZXNwb25zZT8uUmVzdWx0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdFJlc3BvbnNlLlJlc3VsdFswXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVjb3JkIG5vdCBmb3VuZCBhZnRlciBvcGVyYXRpb24nKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBmb3JtSU8gY29tcG9uZW50cyBmb3IgdGhlIGdpdmVuIGFwcE9iamVjdElkIGFuZCB0eXBlLlxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBJRCBvZiB0aGUgYXBwIG9iamVjdC5cclxuICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBjb21wb25lbnRzIHRvIHJldHJpZXZlLiBDYW4gYmUgZWl0aGVyICdDb21tb25GaWx0ZXInIG9yICdCdWxrVXBkYXRlJ1xyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBBUEkgY2FsbC5cclxuICAgKiBAcmV0dXJucyBUaGUgZm9ybUlPIGNvbXBvbmVudHMgaW4gdGhlIHJlc3BvbnNlIGJvZHkuXHJcbiAgICovXHJcbiAgYnVpbGRGb3JtSU9Db21wb25lbnRzKGFwcE9iamVjdElkOiBzdHJpbmcsIHR5cGU6IEJ1aWxkRm9ybUNvbXBvbmVudFR5cGUsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcclxuICAgICAgYCR7QVBJLkJ1aWxkRm9ybUlPQ29tcG9uZW50c30/YXBwT2JqZWN0SWQ9JHthcHBPYmplY3RJZH0mVHlwZT0ke3R5cGV9YCxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICApO1xyXG4gIH1cclxufSJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWZvcm1pby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWZvcm1pby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUc1RSxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FzTzFEO0lBcE9DOzs7Ozs7OztPQVFHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsTUFBd0IsRUFBRSxNQUFZO1FBQ2hFLHVDQUF1QztRQUN2QyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUU3Qix1REFBdUQ7UUFDdkQsZ0RBQWdEO1FBQ2hELElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1B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d0JBQ3BDLEtBQUssRUFBRSxRQUFRO3dCQUNmLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTzt3QkFDbEMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLEdBQUc7d0JBQ2xDLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFFBQVEsRUFBRSxDQUFDO3FCQUNaO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLGNBQWlDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLGNBQWMsRUFBRSxNQUFNLElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0QsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxXQUFtQixFQUFFLElBQTRCLEVBQUUsTUFBWTtRQUNuRixNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsZ0JBQWdCLFdBQVcsU0FBUyxJQUFJLEVBQUUsRUFDdEUsTUFBTSxFQUNOLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQzsrR0F2T1UsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSBcIi4uL3V0aWxzL3JlcS1yZXMudXRpbFwiO1xyXG5pbXBvcnQgeyBBUEksIEFQSVNlcnZpY2VzIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlLCBHZXRTY3JlZW5Db25maWcsIFByb2Nlc3NSZXF1ZXN0UGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBCdWlsZEZvcm1Db21wb25lbnRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NvbW1vbi5lbnVtXCI7XHJcbmltcG9ydCB7IENvbmp1bmN0aW9uQ2xhdXNlLCBGaWx0ZXJWYWx1ZVR5cGUsIFJlbGF0aW9uYWxPcGVyYXRvciB9IGZyb20gXCIuLi9lbnVtcy9kc3EuZW51bVwiO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3NlcnZpY2Uvc2lnbmFsci9zaWduYWxyLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJGb3JtaW9TZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzaWduYWxSU2VydmljZSA9IGluamVjdChTaWduYWxSU2VydmljZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgc2NyZWVuIGRhdGEgZnJvbSB0aGUgc2VydmVyIGJhc2VkIG9uIHRoZSBzY3JlZW4gSUQgYW5kIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogTkVXOiBVc2VzIG1ldGFkYXRhIHNlcnZpY2UgZW5kcG9pbnQgLSByZXR1cm5zIG5ldyBBUEkgZm9ybWF0IGRpcmVjdGx5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgLSBUaGUgSUQgb2YgdGhlIHNjcmVlbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgbGF5b3V0SWQgYW5kIHZlcnNpb24uXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSBjYWxsLlxyXG4gICAqIEByZXR1cm5zIFRoZSBzY3JlZW4gZGF0YSBpbiBuZXcgQVBJIGZvcm1hdCAoY2FtZWxDYXNlKVxyXG4gICAqL1xyXG4gIGdldFNjcmVlbihzY3JlZW5JZDogc3RyaW5nLCBjb25maWc/OiBHZXRTY3JlZW5Db25maWcsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIC8vIFJldHJpZXZlIGhlYWRlcnMgZm9yIHRoZSBBUEkgcmVxdWVzdFxyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuXHJcbiAgICAvLyBORVcgQVBJOiBHRVQgL3NjcmVlbi97c2NyZWVuSWR9IHZpYSBtZXRhZGF0YSBzZXJ2aWNlXHJcbiAgICAvLyBRdWVyeSBwYXJhbXM6IGxheW91dElkLCB2ZXJzaW9uIChpZiBwcm92aWRlZClcclxuICAgIGxldCBlbmRwb2ludCA9IGAke0FQSS5zY3JlZW59LyR7c2NyZWVuSWR9YDtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGlmIChjb25maWc/LmxheW91dElkKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYGxheW91dElkPSR7Y29uZmlnLmxheW91dElkfWApO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbmZpZz8udmVyc2lvbikge1xyXG4gICAgICBxdWVyeVBhcmFtcy5wdXNoKGB2ZXJzaW9uPSR7Y29uZmlnLnZlcnNpb259YCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZW5kcG9pbnQgKz0gYD8ke3F1ZXJ5UGFyYW1zLmpvaW4oJyYnKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0RnJvbVNlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLm1ldGFkYXRhU2VydmljZSxcclxuICAgICAgZW5kcG9pbnQsXHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgc3VibWlzc2lvbiBkYXRhIGZyb20gdGhlIHNlcnZlci5cclxuICAgKiBORVc6IFVzZXMgZm9ybWlvIHNlcnZpY2UgZW5kcG9pbnQgLSByZXR1cm5zIG5ldyBBUEkgZm9ybWF0IGRpcmVjdGx5XHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgLSBUaGUgSUQgb2YgdGhlIHNjcmVlbiB0byByZXRyaWV2ZSBkYXRhIGZvclxyXG4gICAqIEBwYXJhbSByZXF1ZXN0UGF5bG9hZCAtIFJlcXVlc3QgcGF5bG9hZCBjb250YWluaW5nIFJlcXRva2VucyBhbmQgb3RoZXIgcGFyYW1ldGVyc1xyXG4gICAqIEByZXR1cm5zIFRoZSBzY3JlZW4gZGF0YSBpbiBuZXcgQVBJIGZvcm1hdCAoY2FtZWxDYXNlKVxyXG4gICAqL1xyXG4gIGdldFNjcmVlbkRhdGEoc2NyZWVuSWQ6IHN0cmluZywgcmVxdWVzdFBheWxvYWQ6IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgLy8gTkVXIEFQSTogUE9TVCAvZm9ybWlvL3NjcmVlbmRhdGEve3NjcmVlbklkfSB2aWEgZm9ybWlvIHNlcnZpY2VcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuZm9ybWlvU2VydmljZSxcclxuICAgICAgYCR7QVBJLnNjcmVlbkRhdGF9LyR7c2NyZWVuSWR9YCxcclxuICAgICAgcmVxdWVzdFBheWxvYWQsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzIGZvcm0gcmVxdWVzdCAtIGhhbmRsZXMgYm90aCBTWU5DIGFuZCBBU1lOQyBvcGVyYXRpb25zIHRyYW5zcGFyZW50bHlcclxuICAgKlxyXG4gICAqIFNZTkMgT3BlcmF0aW9uOiBCYWNrZW5kIHJldHVybnMgaW5zZXJ0ZWRJZCBpbW1lZGlhdGVseSDihpIgRmV0Y2ggZnVsbCByZWNvcmQg4oaSIFJldHVyblxyXG4gICAqIEFTWU5DIE9wZXJhdGlvbjogQmFja2VuZCByZXR1cm5zIGNvcnJlbGF0aW9uSWQg4oaSIFdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uIOKGkiBGZXRjaCBmdWxsIHJlY29yZCDihpIgUmV0dXJuXHJcbiAgICpcclxuICAgKiBEZXZlbG9wZXIgY29kZSBzdGF5cyB0aGUgc2FtZSBmb3IgYm90aCBjYXNlcyAtIHBsYXRmb3JtIGhhbmRsZXMgY29tcGxleGl0eVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgT2JqZWN0IGNvbnRhaW5pbmcgc3VibWlzc2lvbiBkYXRhIChTY3JlZW5JZCwgRGF0YSlcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZnVsbCByZWNvcmQgZGF0YSAoYWx3YXlzIHJldHVybnMgY29tcGxldGUgcmVjb3JkKVxyXG4gICAqL1xyXG4gIHByb2Nlc3NSZXF1ZXN0KGRhdGE6IFByb2Nlc3NSZXF1ZXN0UGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5mb3JtaW9TZXJ2aWNlLFxyXG4gICAgICBgJHtBUEkucHJvY2Vzc1JlcXVlc3R9YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGZvciBzdWNjZXNzXHJcbiAgICAgICAgaWYgKCFyZXNwb25zZT8uSXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiRm9ybWlvU2VydmljZV0gUHJvY2Vzc1JlcXVlc3QgZmFpbGVkOicsIHJlc3BvbnNlPy5FcnJvcnMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMTogU1lOQyAtIEhhcyBpbnNlcnRlZElkIGltbWVkaWF0ZWx5IChub3QgbnVsbClcclxuICAgICAgICBpZiAocmVzcG9uc2U/LlJlc3VsdD8uaW5zZXJ0ZWRJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlU3luY09wZXJhdGlvbihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDI6IEFTWU5DIC0gSGFzIENvcnJlbGF0aW9uSWQgYW5kIGluc2VydGVkSWQgaXMgbnVsbFxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3luY09wZXJhdGlvbihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDM6IE90aGVyIHJlc3BvbnNlIChyZXR1cm4gYXMtaXMpXHJcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkZvcm1pb1NlcnZpY2VdIFByb2Nlc3NSZXF1ZXN0IGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIFNZTkMgb3BlcmF0aW9uIC0gZmV0Y2ggZnVsbCByZWNvcmQgaW1tZWRpYXRlbHlcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZVN5bmNPcGVyYXRpb24ocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgeyBpbnNlcnRlZElkLCBvYmplY3ROYW1lLCBwcmltYXJ5S2V5RmllbGQgfSA9IHJlc3BvbnNlPy5SZXN1bHQgfHwge307XHJcblxyXG4gICAgaWYgKCFvYmplY3ROYW1lIHx8ICFpbnNlcnRlZElkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJGb3JtaW9TZXJ2aWNlXSBNaXNzaW5nIG9iamVjdE5hbWUgb3IgaW5zZXJ0ZWRJZCBpbiBzeW5jIHJlc3BvbnNlJyk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGtGaWVsZCA9IHByaW1hcnlLZXlGaWVsZCB8fCAnSWQnOyAvLyBEZWZhdWx0IHRvICdJZCcgaWYgbm90IHByb3ZpZGVkXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hGdWxsUmVjb3JkKG9iamVjdE5hbWUsIGluc2VydGVkSWQsIHBrRmllbGQpLnBpcGUoXHJcbiAgICAgIG1hcCgoZnVsbFJlY29yZCkgPT4gKHtcclxuICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICBSZXN1bHQ6IGZ1bGxSZWNvcmRcclxuICAgICAgfSkpLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJGb3JtaW9TZXJ2aWNlXSBGYWlsZWQgdG8gZmV0Y2ggZnVsbCByZWNvcmQ6JywgZXJyb3IpO1xyXG4gICAgICAgIC8vIFJldHVybiBwYXJ0aWFsIHJlc3BvbnNlIGlmIGZldGNoIGZhaWxzXHJcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgQVNZTkMgb3BlcmF0aW9uIC0gd2FpdCBmb3IgU2lnbmFsUiBub3RpZmljYXRpb24sIHRoZW4gZmV0Y2ggZnVsbCByZWNvcmRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUFzeW5jT3BlcmF0aW9uKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSByZXNwb25zZT8uQ29ycmVsYXRpb25JZDtcclxuICAgIGNvbnN0IHByaW1hcnlLZXlGaWVsZCA9IHJlc3BvbnNlPy5SZXN1bHQ/LnByaW1hcnlLZXlGaWVsZCB8fCAnSWQnOyAvLyBHZXQgZnJvbSBvcmlnaW5hbCByZXNwb25zZVxyXG5cclxuICAgIGlmICghY29ycmVsYXRpb25JZCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbVGFiRm9ybWlvU2VydmljZV0gTWlzc2luZyBjb3JyZWxhdGlvbklkIGluIGFzeW5jIHJlc3BvbnNlJyk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2FpdCBmb3IgU2lnbmFsUiBub3RpZmljYXRpb24gd2l0aCBtYXRjaGluZyBjb3JyZWxhdGlvbklkXHJcbiAgICByZXR1cm4gdGhpcy5zaWduYWxSU2VydmljZS53YWl0Rm9yT3BlcmF0aW9uKGNvcnJlbGF0aW9uSWQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgobm90aWZpY2F0aW9uKSA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgb3BlcmF0aW9uIHN1Y2NlZWRlZFxyXG4gICAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzU3VjY2Vzcykge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXHJcbiAgICAgICAgICAgICgpID0+IG5ldyBFcnJvcihub3RpZmljYXRpb24uZXJyb3JNZXNzYWdlIHx8ICdPcGVyYXRpb24gZmFpbGVkJylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBGZXRjaCBmdWxsIHJlY29yZCB1c2luZyByZXN1bHQgZnJvbSBub3RpZmljYXRpb25cclxuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEZ1bGxSZWNvcmQobm90aWZpY2F0aW9uLmVudGl0eU5hbWUsIG5vdGlmaWNhdGlvbi5yZXN1bHQ/LlswXSwgcHJpbWFyeUtleUZpZWxkKTtcclxuICAgICAgfSksXHJcblxyXG4gICAgICAvLyBCdWlsZCBub3JtYWxpemVkIHJlc3BvbnNlXHJcbiAgICAgIG1hcCgoZnVsbFJlY29yZCkgPT4gKHtcclxuICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICBSZXN1bHQ6IGZ1bGxSZWNvcmRcclxuICAgICAgfSkpLFxyXG5cclxuICAgICAgLy8gSGFuZGxlIGVycm9ycyAodGltZW91dCwgZmV0Y2ggZmFpbHVyZSwgZXRjLilcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ09wZXJhdGlvbiB0aW1lZCBvdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcclxuICAgICAgICAgICAgKCkgPT5cclxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uIHRpbWVkIG91dC4gVGhlIG9wZXJhdGlvbiBtYXkgc3RpbGwgY29tcGxldGUgaW4gdGhlIGJhY2tncm91bmQuIFBsZWFzZSByZWZyZXNoIHRvIHNlZSB0aGUgcmVzdWx0LidcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggZnVsbCByZWNvcmQgZnJvbSBDUlVEIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gb2JqZWN0TmFtZSAtIEVudGl0eS9UYWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIHJlY29yZElkIC0gUmVjb3JkIElEIHRvIGZldGNoXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXlGaWVsZCAtIFByaW1hcnkga2V5IGZpZWxkIG5hbWUgKGRlZmF1bHRzIHRvICdJZCcpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaEZ1bGxSZWNvcmQob2JqZWN0TmFtZTogc3RyaW5nLCByZWNvcmRJZDogc3RyaW5nLCBwcmltYXJ5S2V5RmllbGQgPSAnSWQnKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgIEFQSS5RdWVyaWVzU2VsZWN0LFxyXG4gICAgICB7XHJcbiAgICAgICAgRW50aXR5TmFtZTogb2JqZWN0TmFtZSxcclxuICAgICAgICBSZXN1bHRGaWVsZF9BcHBmaWVsZElkczogWycqJ10sXHJcbiAgICAgICAgd2hlcmVDbGF1c2U6IHtcclxuICAgICAgICAgIGZpbHRlcnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGZpZWxkTmFtZTogcHJpbWFyeUtleUZpZWxkLCAvLyBVc2UgZHluYW1pYyBwcmltYXJ5IGtleSBmaWVsZFxyXG4gICAgICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgICAgICB2YWx1ZTogcmVjb3JkSWQsXHJcbiAgICAgICAgICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgICAgICBjb25qdW5jdGlvbjogQ29uanVuY3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgICAgICAgc2VxdWVuY2U6IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pLnBpcGUoXHJcbiAgICAgICAgbWFwKChzZWxlY3RSZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChzZWxlY3RSZXNwb25zZT8uUmVzdWx0ICYmIHNlbGVjdFJlc3BvbnNlPy5SZXN1bHQ/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0UmVzcG9uc2UuUmVzdWx0WzBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWNvcmQgbm90IGZvdW5kIGFmdGVyIG9wZXJhdGlvbicpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGZvcm1JTyBjb21wb25lbnRzIGZvciB0aGUgZ2l2ZW4gYXBwT2JqZWN0SWQgYW5kIHR5cGUuXHJcbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gVGhlIElEIG9mIHRoZSBhcHAgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgdGhlIGNvbXBvbmVudHMgdG8gcmV0cmlldmUuIENhbiBiZSBlaXRoZXIgJ0NvbW1vbkZpbHRlcicgb3IgJ0J1bGtVcGRhdGUnXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIEFQSSBjYWxsLlxyXG4gICAqIEByZXR1cm5zIFRoZSBmb3JtSU8gY29tcG9uZW50cyBpbiB0aGUgcmVzcG9uc2UgYm9keS5cclxuICAgKi9cclxuICBidWlsZEZvcm1JT0NvbXBvbmVudHMoYXBwT2JqZWN0SWQ6IHN0cmluZywgdHlwZTogQnVpbGRGb3JtQ29tcG9uZW50VHlwZSwgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICBgJHtBUEkuQnVpbGRGb3JtSU9Db21wb25lbnRzfT9hcHBPYmplY3RJZD0ke2FwcE9iamVjdElkfSZUeXBlPSR7dHlwZX1gLFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG59Il19
|