@techextensor/tab-core-utility 2.2.187 → 2.2.188

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.
Files changed (73) hide show
  1. package/esm2022/index.mjs +5 -1
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +27 -15
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +14 -50
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +38 -49
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +84 -30
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +141 -12
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +136 -35
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +89 -38
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +158 -131
  11. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  12. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +26 -19
  13. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +9 -11
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -45
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +79 -76
  17. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +38 -0
  18. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +8 -4
  19. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +8 -33
  20. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  21. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +42 -0
  22. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +39 -1
  23. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +36 -7
  24. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +84 -47
  25. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +24 -13
  26. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +57 -23
  27. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +21 -10
  28. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +12 -6
  29. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +11 -4
  30. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +17 -16
  31. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -55
  32. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +1 -164
  33. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +78 -1
  34. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +90 -0
  35. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +268 -0
  36. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +207 -0
  37. package/index.d.ts +4 -0
  38. package/lib/tab-core-utility/app/constants/api-constants.d.ts +15 -12
  39. package/lib/tab-core-utility/app/constants/common.d.ts +9 -0
  40. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  41. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +8 -1
  42. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +20 -10
  43. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +33 -6
  44. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +45 -3
  45. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +16 -21
  46. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +34 -19
  47. package/lib/tab-core-utility/app/enums/query.enum.d.ts +3 -6
  48. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +5 -8
  49. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +3 -0
  50. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  51. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +7 -51
  52. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +1 -0
  53. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +22 -0
  54. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +2 -1
  55. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +1 -0
  56. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +51 -2
  57. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +84 -0
  58. package/lib/tab-core-utility/app/models/api-query.class.d.ts +54 -9
  59. package/lib/tab-core-utility/app/models/app-field.model.d.ts +4 -2
  60. package/lib/tab-core-utility/app/models/app-object.model.d.ts +5 -3
  61. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  62. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +7 -2
  63. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  64. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  65. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  66. package/lib/tab-core-utility/app/utils/json.util.d.ts +3 -2
  67. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +1 -9
  68. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +0 -61
  69. package/lib/tab-core-utility/core/http-client/api.service.d.ts +46 -0
  70. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +40 -0
  71. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +73 -0
  72. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +122 -0
  73. package/package.json +3 -2
@@ -1,10 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
2
+ import { Injectable, inject } from '@angular/core';
3
3
  import { ConjuctionClause, RelationalOperator, FilterValueType, } from '../../enums/dsq.enum';
4
4
  import { APIFilterCriteria } from '../../models/api-query.class';
5
- import { getAppObjectFromSystemDBTableName, getAppObject, } from '../../utils/tab-app.util';
5
+ import { MetadataHelper } from './meta-data.helpers';
6
6
  import * as i0 from "@angular/core";
7
7
  export class WhereClauseHelper {
8
+ constructor() {
9
+ this.metadataHelper = inject(MetadataHelper);
10
+ }
8
11
  /**
9
12
  * Binds the where clause for deleting records based on field, value, field name, and CRUD table name
10
13
  * @param fields The fields to bind the where clause
@@ -14,9 +17,9 @@ export class WhereClauseHelper {
14
17
  * @returns The bound where clause for delete operation
15
18
  */
16
19
  bindWhereClauseForDelete(fields, value, fieldName, crudTableName) {
17
- const appobj = getAppObjectFromSystemDBTableName(crudTableName);
20
+ const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === crudTableName)[0];
18
21
  if (appobj && appobj.CRUDAppObjectId !== null) {
19
- const crudAppObj = getAppObject(appobj.CRUDAppObjectId);
22
+ const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId);
20
23
  if (crudAppObj) {
21
24
  crudTableName = crudAppObj.SystemDBTableName;
22
25
  }
@@ -46,8 +49,8 @@ export class WhereClauseHelper {
46
49
  */
47
50
  bindWhereClauseEmpty() {
48
51
  const whereClause = new APIFilterCriteria();
49
- whereClause.FilterLogic = '1';
50
- whereClause.Filters = [];
52
+ whereClause.filterLogic = '1';
53
+ whereClause.filters = [];
51
54
  return whereClause;
52
55
  }
53
56
  /**
@@ -62,18 +65,18 @@ export class WhereClauseHelper {
62
65
  const filteredFields = fields.filter((f) => fieldName
63
66
  ? f.Field?.FieldName === fieldName
64
67
  : f.Field?.FieldName === 'Id' || f.Field?.FieldName === 'ID');
65
- const filters = filteredFields.map((field) => ({
66
- ConjuctionClause: ConjuctionClause.AND,
67
- FieldID: crudTableName + '.' + field.Field.SystemDBFieldName,
68
- RelationalOperator: RelationalOperator.EqualTo,
69
- ValueType: FilterValueType.Literal,
68
+ const filters = filteredFields.map((field, index) => ({
69
+ conjunction: ConjuctionClause.AND,
70
+ fieldName: crudTableName + '.' + field.Field.FieldName,
71
+ operator: RelationalOperator.EqualTo,
72
+ valueType: FilterValueType.Literal,
70
73
  value: value,
71
- Sequence: 0,
72
- GroupID: 0,
74
+ sequence: index + 1,
75
+ groupId: 0,
73
76
  }));
74
77
  const whereClause = new APIFilterCriteria();
75
- whereClause.Filters = filters;
76
- whereClause.FilterLogic = '1';
78
+ whereClause.filters = filters;
79
+ whereClause.filterLogic = '1';
77
80
  return whereClause;
78
81
  }
79
82
  /**
@@ -85,25 +88,25 @@ export class WhereClauseHelper {
85
88
  */
86
89
  bindWhereClauseForMultiplePrimaryKeys(data, primaryKeys, crudTableName) {
87
90
  const whereClause = new APIFilterCriteria();
88
- whereClause.Filters = [];
91
+ whereClause.filters = [];
89
92
  if (primaryKeys && primaryKeys.length > 0) {
90
- primaryKeys.forEach((element) => {
93
+ primaryKeys.forEach((element, index) => {
91
94
  const value = data[element.FieldName];
92
95
  if (value) {
93
96
  const filter = {
94
- ConjuctionClause: ConjuctionClause.AND,
95
- FieldID: crudTableName + '.' + element.SystemDBFieldName,
96
- RelationalOperator: RelationalOperator.EqualTo,
97
- ValueType: FilterValueType.Literal,
97
+ conjunction: ConjuctionClause.AND,
98
+ fieldName: crudTableName + '.' + element.FieldName,
99
+ operator: RelationalOperator.EqualTo,
100
+ valueType: FilterValueType.Literal,
98
101
  value: value,
99
- Sequence: 0,
100
- GroupID: 0,
102
+ sequence: index + 1,
103
+ groupId: 0,
101
104
  };
102
- whereClause.Filters.push(filter);
105
+ whereClause.filters.push(filter);
103
106
  }
104
107
  });
105
108
  }
106
- whereClause.FilterLogic = '1';
109
+ whereClause.filterLogic = '1';
107
110
  return whereClause;
108
111
  }
109
112
  /**
@@ -114,22 +117,22 @@ export class WhereClauseHelper {
114
117
  */
115
118
  bindWhereClauseForUpdate(tableName, queryFieldsArray) {
116
119
  const whereClause = new APIFilterCriteria();
117
- whereClause.Filters = [];
120
+ whereClause.filters = [];
118
121
  if (queryFieldsArray.length) {
119
- queryFieldsArray.forEach((element) => {
122
+ queryFieldsArray.forEach((element, index) => {
120
123
  const filter = {
121
- ConjuctionClause: ConjuctionClause.AND,
122
- FieldID: tableName + '.' + element.FieldName,
123
- RelationalOperator: RelationalOperator.EqualTo,
124
- ValueType: FilterValueType.Literal,
124
+ conjunction: ConjuctionClause.AND,
125
+ fieldName: tableName + '.' + element.FieldName,
126
+ operator: RelationalOperator.EqualTo,
127
+ valueType: FilterValueType.Literal,
125
128
  value: element.FieldValue,
126
- Sequence: 0,
127
- GroupID: 0,
129
+ sequence: index + 1,
130
+ groupId: 0,
128
131
  };
129
- whereClause.Filters.push(filter);
132
+ whereClause.filters.push(filter);
130
133
  });
131
134
  }
132
- whereClause.FilterLogic = '1';
135
+ whereClause.filterLogic = '1';
133
136
  return whereClause;
134
137
  }
135
138
  /**
@@ -141,18 +144,18 @@ export class WhereClauseHelper {
141
144
  */
142
145
  bindWhereClauseForDeleteByTable(tableName, primaryKey, primaryKeyValue) {
143
146
  const whereClause = new APIFilterCriteria();
144
- whereClause.Filters = [];
147
+ whereClause.filters = [];
145
148
  const filter = {
146
- ConjuctionClause: ConjuctionClause.AND,
147
- FieldID: tableName + '.' + primaryKey,
148
- RelationalOperator: RelationalOperator.EqualTo,
149
- ValueType: FilterValueType.Literal,
149
+ conjunction: ConjuctionClause.AND,
150
+ fieldName: tableName + '.' + primaryKey,
151
+ operator: RelationalOperator.EqualTo,
152
+ valueType: FilterValueType.Literal,
150
153
  value: primaryKeyValue,
151
- Sequence: 0,
152
- GroupID: 0,
154
+ sequence: 1,
155
+ groupId: 0,
153
156
  };
154
- whereClause.Filters.push(filter);
155
- whereClause.FilterLogic = '1';
157
+ whereClause.filters.push(filter);
158
+ whereClause.filterLogic = '1';
156
159
  return whereClause;
157
160
  }
158
161
  /**
@@ -163,26 +166,26 @@ export class WhereClauseHelper {
163
166
  * @returns The bound where clause for delete operation using IN operator and table
164
167
  */
165
168
  bindWhereClauseForDeleteUsingInOperatorByTable(tableName, primaryKey, values) {
166
- const appobj = getAppObjectFromSystemDBTableName(tableName);
169
+ const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === tableName)[0];
167
170
  if (appobj?.CRUDAppObjectId !== null) {
168
- const crudAppObj = getAppObject(appobj.CRUDAppObjectId);
171
+ const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId || '');
169
172
  if (crudAppObj) {
170
173
  tableName = crudAppObj.SystemDBTableName;
171
174
  }
172
175
  }
173
176
  const whereClause = new APIFilterCriteria();
174
- whereClause.Filters = [];
177
+ whereClause.filters = [];
175
178
  const filter = {
176
- ConjuctionClause: ConjuctionClause.AND,
177
- FieldID: tableName + '.' + primaryKey,
178
- RelationalOperator: RelationalOperator.IN,
179
- ValueType: FilterValueType.Literal,
179
+ conjunction: ConjuctionClause.AND,
180
+ fieldName: tableName + '.' + primaryKey,
181
+ operator: RelationalOperator.IN,
182
+ valueType: FilterValueType.Literal,
180
183
  value: values.join(','),
181
- Sequence: 0,
182
- GroupID: 0,
184
+ sequence: 1,
185
+ groupId: 0,
183
186
  };
184
- whereClause.Filters.push(filter);
185
- whereClause.FilterLogic = '1';
187
+ whereClause.filters.push(filter);
188
+ whereClause.filterLogic = '1';
186
189
  return whereClause;
187
190
  }
188
191
  /**
@@ -205,23 +208,23 @@ export class WhereClauseHelper {
205
208
  */
206
209
  bindWhereClauseForUpdateUsingFilters(tableName, filters, fields) {
207
210
  const whereClause = new APIFilterCriteria();
208
- whereClause.Filters = [];
211
+ whereClause.filters = [];
209
212
  if (filters.length) {
210
- filters.forEach((element) => {
213
+ filters.forEach((element, index) => {
211
214
  const field = fields.find((f) => f.ID === element.FieldID) || {};
212
215
  const filter = {
213
- ConjuctionClause: element.ConjuctionClause,
214
- FieldID: `${tableName}.${field.FieldName}`,
215
- RelationalOperator: element.RelationalOperator,
216
- ValueType: element.ValueType,
216
+ conjunction: element.ConjuctionClause,
217
+ fieldName: tableName + '.' + field.FieldName,
218
+ operator: element.RelationalOperator,
219
+ valueType: element.ValueType,
217
220
  value: element.Value,
218
- Sequence: element.Sequence,
219
- GroupID: element.GroupID,
221
+ sequence: element.Sequence || index + 1,
222
+ groupId: element.GroupID,
220
223
  };
221
- whereClause.Filters.push(filter);
224
+ whereClause.filters.push(filter);
222
225
  });
223
226
  }
224
- whereClause.FilterLogic = '1';
227
+ whereClause.filterLogic = '1';
225
228
  return whereClause;
226
229
  }
227
230
  /**
@@ -232,23 +235,23 @@ export class WhereClauseHelper {
232
235
  */
233
236
  bindWhereClauseForDynamicDelete(tableName, keyValuePairs) {
234
237
  const whereClause = new APIFilterCriteria();
235
- whereClause.Filters = [];
238
+ whereClause.filters = [];
236
239
  // Loop through the key value pairs and add them to the where clause
237
- // The conjuction clause is AND for the first item and OR for the rest
240
+ // The conjuction clause is AND for all items
238
241
  keyValuePairs.forEach((pair, index) => {
239
242
  const filter = {
240
- ConjuctionClause: index === 0 ? ConjuctionClause.AND : ConjuctionClause.AND,
241
- FieldID: `${tableName}.${pair.key}`,
242
- RelationalOperator: RelationalOperator.EqualTo,
243
- ValueType: FilterValueType.Literal,
243
+ conjunction: index === 0 ? ConjuctionClause.AND : ConjuctionClause.AND,
244
+ fieldName: tableName + '.' + pair.key,
245
+ operator: RelationalOperator.EqualTo,
246
+ valueType: FilterValueType.Literal,
244
247
  value: pair.value,
245
- Sequence: index,
246
- GroupID: 0
248
+ sequence: index + 1,
249
+ groupId: 0
247
250
  };
248
- whereClause.Filters.push(filter);
251
+ whereClause.filters.push(filter);
249
252
  });
250
253
  // The filter logic is always '1' for dynamic delete
251
- whereClause.FilterLogic = '1';
254
+ whereClause.filterLogic = '1';
252
255
  return whereClause;
253
256
  }
254
257
  static { this.ɵfac = function WhereClauseHelper_Factory(t) { return new (t || WhereClauseHelper)(); }; }
@@ -258,4 +261,4 @@ export class WhereClauseHelper {
258
261
  type: Injectable,
259
262
  args: [{ providedIn: 'root' }]
260
263
  }], null, null); })();
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsWUFBWSxHQUNiLE1BQU0sMEJBQTBCLENBQUM7O0FBR2xDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7Ozs7Ozs7T0FPRztJQUNILHdCQUF3QixDQUN0QixNQUFXLEVBQ1gsS0FBVSxFQUNWLFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN4RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILCtDQUErQyxDQUM3QyxJQUFT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aUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29uanVjdGlvbkNsYXVzZSxcclxuICBSZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgRmlsdGVyVmFsdWVUeXBlLFxyXG59IGZyb20gJy4uLy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgQVBJRmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHtcclxuICBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL3RhYi1hcHAudXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZShjcnVkVGFibGVOYW1lKTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gZ2V0QXBwT2JqZWN0KGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiAoe1xyXG4gICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgRmllbGRJRDogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gZmlsdGVycztcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG5cclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgY29udGFpbmluZyBwcmltYXJ5IGtleSB2YWx1ZXNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleXMgVGhlIGFycmF5IG9mIHByaW1hcnkga2V5IGZpZWxkc1xyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIHByaW1hcnlLZXlzOiBhbnksXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAocHJpbWFyeUtleXMgJiYgcHJpbWFyeUtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBwcmltYXJ5S2V5cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbZWxlbWVudC5GaWVsZE5hbWVdO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBGaWVsZElEOiBjcnVkVGFibGVOYW1lICsgJy4nICsgZWxlbWVudC5TeXN0ZW1EQkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgICAgICAgR3JvdXBJRDogMCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIHF1ZXJ5RmllbGRzQXJyYXkgVGhlIGFycmF5IG9mIGZpZWxkcyBhbmQgdmFsdWVzIGZvciB0aGUgdXBkYXRlIHF1ZXJ5XHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZSh0YWJsZU5hbWU6IHN0cmluZywgcXVlcnlGaWVsZHNBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgaWYgKHF1ZXJ5RmllbGRzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHF1ZXJ5RmllbGRzQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgICAgIEZpZWxkSUQ6IHRhYmxlTmFtZSArICcuJyArIGVsZW1lbnQuRmllbGROYW1lLFxyXG4gICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IDAsXHJcbiAgICAgICAgICBHcm91cElEOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIGJ5IHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleVZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJpbWFyeSBrZXlcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZUJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogcHJpbWFyeUtleVZhbHVlLFxyXG4gICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgR3JvdXBJRDogMCxcclxuICAgIH07XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBJTiBvcGVyYXRvclxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYW5kIHRhYmxlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlVXNpbmdJbk9wZXJhdG9yQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgdmFsdWVzOiBbXVxyXG4gICkge1xyXG4gICAgY29uc3QgYXBwb2JqID0gZ2V0QXBwT2JqZWN0RnJvbVN5c3RlbURCVGFibGVOYW1lKHRhYmxlTmFtZSk7XHJcbiAgICBpZiAoYXBwb2JqPy5DUlVEQXBwT2JqZWN0SWQgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgY3J1ZEFwcE9iaiA9IGdldEFwcE9iamVjdChhcHBvYmouQ1JVREFwcE9iamVjdElkKTtcclxuICAgICAgaWYgKGNydWRBcHBPYmopIHtcclxuICAgICAgICB0YWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBlbGVtZW50LkNvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgICAgICAgICBGaWVsZElEOiBgJHt0YWJsZU5hbWV9LiR7ZmllbGQuRmllbGROYW1lfWAsXHJcbiAgICAgICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IGVsZW1lbnQuUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gICAgICAgICAgVmFsdWVUeXBlOiBlbGVtZW50LlZhbHVlVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiBlbGVtZW50LlZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IGVsZW1lbnQuU2VxdWVuY2UsXHJcbiAgICAgICAgICBHcm91cElEOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgdGhlIGZpcnN0IGl0ZW0gYW5kIE9SIGZvciB0aGUgcmVzdFxyXG4gICAga2V5VmFsdWVQYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgQ29uanVjdGlvbkNsYXVzZTogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIEZpZWxkSUQ6IGAke3RhYmxlTmFtZX0uJHtwYWlyLmtleX1gLFxyXG4gICAgICAgIFJlbGF0aW9uYWxPcGVyYXRvcjogUmVsYXRpb25hbE9wZXJhdG9yLkVxdWFsVG8sXHJcbiAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICB2YWx1ZTogcGFpci52YWx1ZSxcclxuICAgICAgICBTZXF1ZW5jZTogaW5kZXgsXHJcbiAgICAgICAgR3JvdXBJRDogMFxyXG4gICAgICB9O1xyXG4gICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRoZSBmaWx0ZXIgbG9naWMgaXMgYWx3YXlzICcxJyBmb3IgZHluYW1pYyBkZWxldGVcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxufVxyXG4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0F1VDFEO0lBdFRDOzs7Ozs7O09BT0c7SUFDSCx3QkFBd0IsQ0FDdEIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixhQUFhLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQy9DLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCwrQ0FBK0MsQ0FDN0MsSUFBUyxFQUNULFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLHFDQUFxQyxDQUMvQyxJQUFJLEVBQ0osU0FBUyxFQUNULGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0I7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssZUFBZSxDQUNyQixNQUFhLEVBQ2IsS0FBVSxFQUNWLFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUM5QyxTQUFTO1lBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsS0FBSyxJQUFJLENBQy9ELENBQUM7UUFFRixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztZQUNqQyxTQUFTLEVBQUUsYUFBYSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDdEQsUUFBUSxFQUFFLGtCQUFrQixDQUFDLE9BQU87WUFDcEMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQ2xDLEtBQUssRUFBRSxLQUFLO1lBQ1osUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO1lBQ25CLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDOUIsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFFOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUdEOzs7Ozs7T0FNRztJQUNILHFDQUFxQyxDQUNuQyxJQUFTLEVBQ1QsV0FBZ0IsRUFDaEIsYUFBcUI7UUFFckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixNQUFNLE1BQU0sR0FBUTt3QkFDbEIsV0FBVyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7d0JBQ2pDLFNBQVMsRUFBRSxhQUFhLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTO3dCQUNsRCxRQUFRLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt3QkFDcEMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxPQUFPO3dCQUNsQyxLQUFLLEVBQUUsS0FBSzt3QkFDWixRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUM7d0JBQ25CLE9BQU8sRUFBRSxDQUFDO3FCQUNYLENBQUM7b0JBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxTQUFpQixFQUFFLGdCQUFxQjtRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsS0FBYSxFQUFFLEVBQUU7Z0JBQ3ZELE1BQU0sTUFBTSxHQUFRO29CQUNsQixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztvQkFDakMsU0FBUyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVM7b0JBQzlDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO29CQUNwQyxTQUFTLEVBQUUsZUFBZSxDQUFDLE9BQU87b0JBQ2xDLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVTtvQkFDekIsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO29CQUNuQixPQUFPLEVBQUUsQ0FBQztpQkFDWCxDQUFDO2dCQUNGLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCwrQkFBK0IsQ0FDN0IsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsZUFBdUI7UUFFdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO1lBQ2pDLFNBQVMsRUFBRSxTQUFTLEdBQUcsR0FBRyxHQUFHLFVBQVU7WUFDdkMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLE9BQU87WUFDcEMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQ2xDLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDhDQUE4QyxDQUM1QyxTQUFpQixFQUNqQixVQUFrQixFQUNsQixNQUFVO1FBRVYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLE1BQU0sRUFBRSxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBUTtZQUNsQixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztZQUNqQyxTQUFTLEVBQUUsU0FBUyxHQUFHLEdBQUcsR0FBRyxVQUFVO1lBQ3ZDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO1lBQy9CLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTztZQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDdkIsUUFBUSxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDRCQUE0QixDQUMxQixNQUFXLEVBQ1gsS0FBVSxFQUNWLFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0NBQW9DLENBQ2xDLFNBQWlCLEVBQ2pCLE9BQVksRUFDWixNQUFhO1FBRWIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsS0FBYSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFakUsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7b0JBQ3JDLFNBQVMsRUFBRSxTQUFTLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTO29CQUM1QyxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQjtvQkFDcEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDO29CQUN2QyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87aUJBQ3pCLENBQUM7Z0JBRUYsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsK0JBQStCLENBQzdCLFNBQWlCLEVBQ2pCLGFBQW9CO1FBRXBCLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUV6QixvRUFBb0U7UUFDcEUsNkNBQTZDO1FBQzdDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRztnQkFDdEUsU0FBUyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUc7Z0JBQ3JDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO2dCQUNwQyxTQUFTLEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7WUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILG9EQUFvRDtRQUNwRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO2tGQXZUVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gIEZpbHRlclZhbHVlVHlwZSxcclxufSBmcm9tICcuLi8uLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSBjcnVkVGFibGVOYW1lKVswXTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLkZpZWxkTmFtZSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5cyBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcHJpbWFyeUtleXM6IGFueSxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChwcmltYXJ5S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHByaW1hcnlLZXlzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBxdWVyeUZpZWxkc0FycmF5IFRoZSBhcnJheSBvZiBmaWVsZHMgYW5kIHZhbHVlcyBmb3IgdGhlIHVwZGF0ZSBxdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUodGFibGVOYW1lOiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk6IGFueSkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChxdWVyeUZpZWxkc0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICBxdWVyeUZpZWxkc0FycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYnkgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBkZWxldGUgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5IFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGtleSBmaWVsZFxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleVZhbHVlOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHByaW1hcnlLZXlWYWx1ZSxcclxuICAgICAgc2VxdWVuY2U6IDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9O1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2YgdmFsdWVzIGZvciB0aGUgSU4gb3BlcmF0b3JcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGFuZCB0YWJsZVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHZhbHVlczogW11cclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaj8uQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCB8fCAnJyk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgdGFibGVOYW1lID0gY3J1ZEFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcHJpbWFyeUtleSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIHNlcXVlbmNlOiAxLFxyXG4gICAgICBncm91cElkOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjb25qdW5jdGlvbjogZWxlbWVudC5Db25qdWN0aW9uQ2xhdXNlLFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBmaWVsZC5GaWVsZE5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcjogZWxlbWVudC5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IGVsZW1lbnQuVmFsdWVUeXBlLFxyXG4gICAgICAgICAgdmFsdWU6IGVsZW1lbnQuVmFsdWUsXHJcbiAgICAgICAgICBzZXF1ZW5jZTogZWxlbWVudC5TZXF1ZW5jZSB8fCBpbmRleCArIDEsXHJcbiAgICAgICAgICBncm91cElkOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgYWxsIGl0ZW1zXHJcbiAgICBrZXlWYWx1ZVBhaXJzLmZvckVhY2goKHBhaXIsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgICBjb25qdW5jdGlvbjogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcGFpci5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgdmFsdWU6IHBhaXIudmFsdWUsXHJcbiAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICBncm91cElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVGhlIGZpbHRlciBsb2dpYyBpcyBhbHdheXMgJzEnIGZvciBkeW5hbWljIGRlbGV0ZVxyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ /**
2
+ * ResponseAdapter - Transforms new API response format to legacy format
3
+ *
4
+ * This adapter maintains backward compatibility by converting the new camelCase
5
+ * response format from the backend to the old PascalCase format expected by
6
+ * existing application code.
7
+ *
8
+ * @example
9
+ * // Auto-detect and normalize response
10
+ * return this.apiService.postToService(...).pipe(
11
+ * map(response => ResponseAdapter.normalize(response))
12
+ * );
13
+ */
14
+ export class ResponseAdapter {
15
+ /**
16
+ * Normalizes a StandardApiResponse to CommonApiResponse format.
17
+ * @param newResponse The response object in the new API format.
18
+ * @returns The normalized response in the legacy format.
19
+ */
20
+ static normalize(newResponse) {
21
+ return {
22
+ IsSuccess: newResponse?.isSuccess || false,
23
+ Result: newResponse?.result || null,
24
+ RecordAffectted: newResponse?.affectedRecords ?? 0,
25
+ TotalRecords: newResponse?.totalRecords ?? 0,
26
+ TotalExecutionTime: newResponse?.executionTimeMs ?? 0,
27
+ Log: newResponse?.logs ?? [],
28
+ Errors: newResponse?.error
29
+ ? [
30
+ newResponse.error?.message,
31
+ ...(newResponse.error?.details ? [newResponse.error?.details] : [])
32
+ ]
33
+ : [],
34
+ CorrelationId: newResponse?.correlationId // Preserve correlationId for async operations
35
+ };
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3Jlc3BvbnNlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFFMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBZ0M7UUFDL0MsT0FBTztZQUNMLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxJQUFJLEtBQUs7WUFDMUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSTtZQUNuQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ2xELFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxJQUFJLENBQUM7WUFDNUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ3JELEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDNUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLO2dCQUN4QixDQUFDLENBQUM7b0JBQ0UsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPO29CQUMxQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNwRTtnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUNOLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFFLDhDQUE4QztTQUMxRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgU3RhbmRhcmRBcGlSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogUmVzcG9uc2VBZGFwdGVyIC0gVHJhbnNmb3JtcyBuZXcgQVBJIHJlc3BvbnNlIGZvcm1hdCB0byBsZWdhY3kgZm9ybWF0XHJcbiAqXHJcbiAqIFRoaXMgYWRhcHRlciBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBieSBjb252ZXJ0aW5nIHRoZSBuZXcgY2FtZWxDYXNlXHJcbiAqIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHRoZSBiYWNrZW5kIHRvIHRoZSBvbGQgUGFzY2FsQ2FzZSBmb3JtYXQgZXhwZWN0ZWQgYnlcclxuICogZXhpc3RpbmcgYXBwbGljYXRpb24gY29kZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gQXV0by1kZXRlY3QgYW5kIG5vcm1hbGl6ZSByZXNwb25zZVxyXG4gKiByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoLi4uKS5waXBlKFxyXG4gKiAgIG1hcChyZXNwb25zZSA9PiBSZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICogKTtcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZXNwb25zZUFkYXB0ZXIge1xyXG5cclxuICAvKipcclxuICAgKiBOb3JtYWxpemVzIGEgU3RhbmRhcmRBcGlSZXNwb25zZSB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQuXHJcbiAgICogQHBhcmFtIG5ld1Jlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIG5ldyBBUEkgZm9ybWF0LlxyXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHJlc3BvbnNlIGluIHRoZSBsZWdhY3kgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHN0YXRpYyBub3JtYWxpemUobmV3UmVzcG9uc2U6IFN0YW5kYXJkQXBpUmVzcG9uc2UpOiBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBJc1N1Y2Nlc3M6IG5ld1Jlc3BvbnNlPy5pc1N1Y2Nlc3MgfHwgZmFsc2UsXHJcbiAgICAgIFJlc3VsdDogbmV3UmVzcG9uc2U/LnJlc3VsdCB8fCBudWxsLFxyXG4gICAgICBSZWNvcmRBZmZlY3R0ZWQ6IG5ld1Jlc3BvbnNlPy5hZmZlY3RlZFJlY29yZHMgPz8gMCxcclxuICAgICAgVG90YWxSZWNvcmRzOiBuZXdSZXNwb25zZT8udG90YWxSZWNvcmRzID8/IDAsXHJcbiAgICAgIFRvdGFsRXhlY3V0aW9uVGltZTogbmV3UmVzcG9uc2U/LmV4ZWN1dGlvblRpbWVNcyA/PyAwLFxyXG4gICAgICBMb2c6IG5ld1Jlc3BvbnNlPy5sb2dzID8/IFtdLFxyXG4gICAgICBFcnJvcnM6IG5ld1Jlc3BvbnNlPy5lcnJvclxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICBuZXdSZXNwb25zZS5lcnJvcj8ubWVzc2FnZSxcclxuICAgICAgICAgICAgLi4uKG5ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzID8gW25ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzXSA6IFtdKVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIENvcnJlbGF0aW9uSWQ6IG5ld1Jlc3BvbnNlPy5jb3JyZWxhdGlvbklkICAvLyBQcmVzZXJ2ZSBjb3JyZWxhdGlvbklkIGZvciBhc3luYyBvcGVyYXRpb25zXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,10 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
3
- import { getDsqIDFromQueryName } from '../../utils/tab-app.util';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { MetadataHelper } from '../common/meta-data.helpers';
4
4
  import { of } from 'rxjs';
5
5
  import { Common } from '../../constants/common';
6
6
  import * as i0 from "@angular/core";
7
7
  export class GridHelper {
8
+ constructor() {
9
+ this.metadataHelper = inject(MetadataHelper);
10
+ }
8
11
  /**
9
12
  * Generates a grid schema for the master app object.
10
13
  * @param masterAppObj The master app object.
@@ -33,7 +36,8 @@ export class GridHelper {
33
36
  childRel.childDetails.LookupObject +
34
37
  '_' +
35
38
  masterAppObj.SystemDBTableName;
36
- const dsqObject = getDsqIDFromQueryName(childRel.childDetails.LookupObject, dsqNameString);
39
+ const appObjectModel = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === childRel.childDetails.LookupObject)[0];
40
+ const dsqObject = appObjectModel?.dataSourceQuery(dsqNameString);
37
41
  if (dsqObject) {
38
42
  return {
39
43
  label: childRel?.childDetails?.LookupObject,
@@ -132,4 +136,4 @@ export class GridHelper {
132
136
  type: Injectable,
133
137
  args: [{ providedIn: 'root' }]
134
138
  }], null, null); })();
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJaEQsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxZQUF1QixFQUFFLEtBQVU7UUFDcEQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUN0QyxJQUFJLEVBQUUsWUFBWTtZQUNsQixHQUFHLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO1lBQ3pDLGlDQUFpQyxFQUFFLEtBQUs7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLFFBQWEsRUFBRSxZQUF1QjtRQUM1RCxNQUFNLGFBQWEsR0FDakIsS0FBSztZQUNMLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUNsQyxHQUFHO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUNyQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksRUFDbEMsYUFBYSxDQUNkLENBQUM7UUFDRixJ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QUUsT0FBTyxhQUFhLENBQUM7YUFDekMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7YUFDOUUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUMsQ0FBRyxtQkFBbUI7YUFDbEUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxvQkFBb0I7YUFDckUsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sY0FBYyxDQUFDOztZQUMzQyxPQUFPLGFBQWEsQ0FBQztJQUM1QixDQUFDOzJFQXBIVSxVQUFVO3VFQUFWLFVBQVUsV0FBVixVQUFVLG1CQURHLE1BQU07O2lGQUNuQixVQUFVO2NBRHRCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBwT2JqZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QuY2xhc3MnO1xyXG5pbXBvcnQgeyBnZXREc3FJREZyb21RdWVyeU5hbWUgfSBmcm9tICcuLi8uLi91dGlscy90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgSnFXaWRnaHRNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEdyaWRIZWxwZXIge1xyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIGdyaWQgc2NoZW1hIGZvciB0aGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGRzcUlEIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBJRC5cclxuICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIGdyaWQgc2NoZW1hLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlR3JpZFNjaGVtYShtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCwgZHNxSUQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgdHlwZTogJ2N1c3RvbUdyaWQnLFxyXG4gICAgICBrZXk6IG1hc3RlckFwcE9iaj8uU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgJ2N1c3RvbU9wdGlvbnMuZGF0YVNvdXJjZVF1ZXJ5SWQnOiBkc3FJRCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gc2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgZ3JpZCBzY2hlbWEgZm9yIHRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIGNoaWxkUmVsIFRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBjaGlsZCBncmlkIHNjaGVtYS5cclxuICAgKi9cclxuICBnZW5lcmF0ZUNoaWxkR3JpZFNjaGVtYShjaGlsZFJlbDogYW55LCBtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCkge1xyXG4gICAgY29uc3QgZHNxTmFtZVN0cmluZyA9XHJcbiAgICAgICdGS18nICtcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCArXHJcbiAgICAgICdfJyArXHJcbiAgICAgIG1hc3RlckFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIGNvbnN0IGRzcU9iamVjdCA9IGdldERzcUlERnJvbVF1ZXJ5TmFtZShcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCxcclxuICAgICAgZHNxTmFtZVN0cmluZ1xyXG4gICAgKTtcclxuICAgIGlmIChkc3FPYmplY3QpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogY2hpbGRSZWw/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0LFxyXG4gICAgICAgIHR5cGU6ICdjdXN0b21HcmlkJyxcclxuICAgICAgICBrZXk6IGNoaWxkUmVsPy5jaGlsZERldGFpbHM/Lkxvb2t1cE9iamVjdCxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAnY3VzdG9tT3B0aW9ucy5kYXRhU291cmNlUXVlcnlJZCc6IGRzcU9iamVjdCA/IGRzcU9iamVjdC5JRCA6ICcnLFxyXG4gICAgICAgIGxvZ2ljOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgRmllbGRzJyxcclxuICAgICAgICAgICAgdHJpZ2dlcjoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgICBqYXZhc2NyaXB0OiAncmVzdWx0PXRydWU7JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICdSZWZyZXNoICcgKyBjaGlsZFJlbD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgKyAnIEdyaWQnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb3BlcnR5JyxcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFyYW1ldGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tT3B0aW9ucy5wYXJhbWV0ZXJzJyxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogJ3t7ZGF0YS4nICsgbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSArICd9fScsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgZ3JpZCBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGdyaWQgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBnZXREZWZhdWx0R3JpZENvbmZpZ3VyYXRpb24oKTogSnFXaWRnaHRNb2RlbCB8IG51bGwge1xyXG4gICAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgICBpZiAodGFiRGF0YSkge1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGFiRGF0YT8uQXBwQ29uZmlndXJhdGlvbnMuZmluZChcclxuICAgICAgICAoYzogYW55KSA9PiBjLlNldHRpbmdfS2V5ID09PSAnR3JpZENvbmZpZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2x1bW4gdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2x1bW4gdHlwZS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5UeXBlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1iZXInO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDMpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA1KSByZXR1cm4gJ2RhdGUnOyAgLy9kYXRlXHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZSc7IC8vIGRhdGVUaW1lXHJcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IGZvciBlZGl0YWJsZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xyXG4gICAqL1xyXG4gIGdldENvbHVtbkNvbXBvbmVudFR5cGVGb3JFZGl0YWJsZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ2RlZmF1bHRFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1lcmljRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMykgcmV0dXJuICdib29sZWFuRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDUpIHJldHVybiAnZGF0ZVBpY2tlckVkaXQnOyAgIC8vIGRhdGVQaWNrZXJFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lUGlja2VyRWRpdCc7IC8vZGF0ZVRpbWVQaWNrZXJFZGl0XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMTcpIHJldHVybiAnZHJvcERvd25FZGl0JztcclxuICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUloRCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVtQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQW1IMUQ7SUFsSEM7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxZQUF1QixFQUFFLEtBQVU7UUFDcEQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUN0QyxJQUFJLEVBQUUsWUFBWTtZQUNsQixHQUFHLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO1lBQ3pDLGlDQUFpQyxFQUFFLEtBQUs7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLFFBQWEsRUFBRSxZQUF1QjtRQUM1RCxNQUFNLGFBQWEsR0FDakIsS0FBSztZQUNMLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUNsQyxHQUFHO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElB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LElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUMxRSxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sYUFBYSxDQUFDO2FBQzlFLElBQUksUUFBUSxLQUFLLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUN6QyxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUM5RSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFHLG1CQUFtQjthQUNsRSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLG9CQUFvQjthQUNyRSxJQUFJLFFBQVEsS0FBSyxFQUFFO1lBQUUsT0FBTyxjQUFjLENBQUM7O1lBQzNDLE9BQU8sYUFBYSxDQUFDO0lBQzVCLENBQUM7MkVBbkhVLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcE9iamVjdCB9IGZyb20gJy4uLy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgSnFXaWRnaHRNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEdyaWRIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIGdyaWQgc2NoZW1hIGZvciB0aGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGRzcUlEIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBJRC5cclxuICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIGdyaWQgc2NoZW1hLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlR3JpZFNjaGVtYShtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCwgZHNxSUQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgdHlwZTogJ2N1c3RvbUdyaWQnLFxyXG4gICAgICBrZXk6IG1hc3RlckFwcE9iaj8uU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgJ2N1c3RvbU9wdGlvbnMuZGF0YVNvdXJjZVF1ZXJ5SWQnOiBkc3FJRCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gc2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgZ3JpZCBzY2hlbWEgZm9yIHRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIGNoaWxkUmVsIFRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBjaGlsZCBncmlkIHNjaGVtYS5cclxuICAgKi9cclxuICBnZW5lcmF0ZUNoaWxkR3JpZFNjaGVtYShjaGlsZFJlbDogYW55LCBtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCkge1xyXG4gICAgY29uc3QgZHNxTmFtZVN0cmluZyA9XHJcbiAgICAgICdGS18nICtcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCArXHJcbiAgICAgICdfJyArXHJcbiAgICAgIG1hc3RlckFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IGNoaWxkUmVsLmNoaWxkRGV0YWlscy5Mb29rdXBPYmplY3QpWzBdO1xyXG4gICAgY29uc3QgZHNxT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LmRhdGFTb3VyY2VRdWVyeShkc3FOYW1lU3RyaW5nKTtcclxuICAgIGlmIChkc3FPYmplY3QpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogY2hpbGRSZWw/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0LFxyXG4gICAgICAgIHR5cGU6ICdjdXN0b21HcmlkJyxcclxuICAgICAgICBrZXk6IGNoaWxkUmVsPy5jaGlsZERldGFpbHM/Lkxvb2t1cE9iamVjdCxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAnY3VzdG9tT3B0aW9ucy5kYXRhU291cmNlUXVlcnlJZCc6IGRzcU9iamVjdCA/IGRzcU9iamVjdC5JRCA6ICcnLFxyXG4gICAgICAgIGxvZ2ljOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgRmllbGRzJyxcclxuICAgICAgICAgICAgdHJpZ2dlcjoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgICBqYXZhc2NyaXB0OiAncmVzdWx0PXRydWU7JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICdSZWZyZXNoICcgKyBjaGlsZFJlbD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgKyAnIEdyaWQnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb3BlcnR5JyxcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFyYW1ldGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tT3B0aW9ucy5wYXJhbWV0ZXJzJyxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogJ3t7ZGF0YS4nICsgbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSArICd9fScsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgZ3JpZCBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGdyaWQgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBnZXREZWZhdWx0R3JpZENvbmZpZ3VyYXRpb24oKTogSnFXaWRnaHRNb2RlbCB8IG51bGwge1xyXG4gICAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgICBpZiAodGFiRGF0YSkge1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGFiRGF0YT8uQXBwQ29uZmlndXJhdGlvbnMuZmluZChcclxuICAgICAgICAoYzogYW55KSA9PiBjLlNldHRpbmdfS2V5ID09PSAnR3JpZENvbmZpZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2x1bW4gdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2x1bW4gdHlwZS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5UeXBlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1iZXInO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDMpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA1KSByZXR1cm4gJ2RhdGUnOyAgLy9kYXRlXHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZSc7IC8vIGRhdGVUaW1lXHJcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IGZvciBlZGl0YWJsZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xyXG4gICAqL1xyXG4gIGdldENvbHVtbkNvbXBvbmVudFR5cGVGb3JFZGl0YWJsZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ2RlZmF1bHRFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1lcmljRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMykgcmV0dXJuICdib29sZWFuRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDUpIHJldHVybiAnZGF0ZVBpY2tlckVkaXQnOyAgIC8vIGRhdGVQaWNrZXJFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lUGlja2VyRWRpdCc7IC8vZGF0ZVRpbWVQaWNrZXJFZGl0XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMTcpIHJldHVybiAnZHJvcERvd25FZGl0JztcclxuICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,46 +1,21 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable } from '@angular/core';
3
- import { Common } from '../../constants/common';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { MetadataHelper } from '../common/meta-data.helpers';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ScreenHelper {
6
- // waitForData(timeout = 5000): Promise<void> {
7
- // return new Promise((resolve, reject) => {
8
- // const interval = 100; // Check every 100ms
9
- // let waited = 0;
10
- // const checkData = () => {
11
- // if (Common.tabJson) {
12
- // resolve();
13
- // } else if (waited >= timeout) {
14
- // reject(new Error('Timeout waiting for Common.tabJson'));
15
- // } else {
16
- // waited += interval;
17
- // setTimeout(checkData, interval);
18
- // }
19
- // };
20
- // checkData();
21
- // });
22
- // }
6
+ constructor() {
7
+ this.metadataHelper = inject(MetadataHelper);
8
+ }
23
9
  /**
24
10
  * Retrieves screen data based on the provided screen ID.
25
11
  * @param screenId The ID of the screen to retrieve.
26
12
  * @returns The screen data if found, otherwise null.
27
13
  */
28
14
  getScreenDetailsWithoutContainer(screenId) {
29
- // await this.waitForData();
30
- const tabData = Common.tabJson;
31
- if (tabData) {
32
- return tabData?.AppScreens.find((t) => t?.ID == screenId.toLowerCase());
33
- }
34
- else
35
- return null;
15
+ return this.metadataHelper.getAppScreenByIdOrName(screenId)?.toJSON() || null;
36
16
  }
37
17
  getScreen(screenId) {
38
- const tabData = Common.tabJson;
39
- if (tabData) {
40
- return tabData?.AppScreens.find((t) => t?.ID == screenId.toLowerCase());
41
- }
42
- else
43
- return null;
18
+ return this.metadataHelper.getAppScreenByIdOrName(screenId)?.toJSON() || null;
44
19
  }
45
20
  static { this.ɵfac = function ScreenHelper_Factory(t) { return new (t || ScreenHelper)(); }; }
46
21
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ScreenHelper, factory: ScreenHelper.ɵfac, providedIn: 'root' }); }
@@ -49,4 +24,4 @@ export class ScreenHelper {
49
24
  type: Injectable,
50
25
  args: [{ providedIn: 'root' }]
51
26
  }], null, null); })();
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdoRCxNQUFNLE9BQU8sWUFBWTtJQUN2QiwrQ0FBK0M7SUFDL0MsOENBQThDO0lBQzlDLGlEQUFpRDtJQUNqRCxzQkFBc0I7SUFFdEIsZ0NBQWdDO0lBQ2hDLDhCQUE4QjtJQUM5QixxQkFBcUI7SUFDckIsd0NBQXdDO0lBQ3hDLG1FQUFtRTtJQUNuRSxpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLDJDQUEyQztJQUMzQyxVQUFVO0lBQ1YsU0FBUztJQUVULG1CQUFtQjtJQUNuQixRQUFRO0lBQ1IsSUFBSTtJQUNKOzs7O09BSUc7SUFDSCxnQ0FBZ0MsQ0FBQyxRQUFnQjtRQUMvQyw0QkFBNEI7UUFDNUIsTUFBTSxPQUFPLEdBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FDN0IsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUM1QyxDQUFDO1FBQ0osQ0FBQzs7WUFBTSxPQUFPLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE1BQU0sT0FBTyxHQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQzdCLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FDNUMsQ0FBQztRQUNKLENBQUM7O1lBQU0sT0FBTyxJQUFJLENBQUM7SUFDckIsQ0FBQzs2RUExQ1UsWUFBWTt1RUFBWixZQUFZLFdBQVosWUFBWSxtQkFEQyxNQUFNOztpRkFDbkIsWUFBWTtjQUR4QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFNjcmVlbkhlbHBlciB7XHJcbiAgLy8gd2FpdEZvckRhdGEodGltZW91dCA9IDUwMDApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGludGVydmFsID0gMTAwOyAvLyBDaGVjayBldmVyeSAxMDBtc1xyXG4gIC8vICAgICBsZXQgd2FpdGVkID0gMDtcclxuICBcclxuICAvLyAgICAgY29uc3QgY2hlY2tEYXRhID0gKCkgPT4ge1xyXG4gIC8vICAgICAgIGlmIChDb21tb24udGFiSnNvbikge1xyXG4gIC8vICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAod2FpdGVkID49IHRpbWVvdXQpIHtcclxuICAvLyAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1RpbWVvdXQgd2FpdGluZyBmb3IgQ29tbW9uLnRhYkpzb24nKSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgIHdhaXRlZCArPSBpbnRlcnZhbDtcclxuICAvLyAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tEYXRhLCBpbnRlcnZhbCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9O1xyXG4gIFxyXG4gIC8vICAgICBjaGVja0RhdGEoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc2NyZWVuIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNjcmVlbiBJRC5cclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgVGhlIElEIG9mIHRoZSBzY3JlZW4gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMgVGhlIHNjcmVlbiBkYXRhIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRTY3JlZW5EZXRhaWxzV2l0aG91dENvbnRhaW5lcihzY3JlZW5JZDogc3RyaW5nKSB7XHJcbiAgICAvLyBhd2FpdCB0aGlzLndhaXRGb3JEYXRhKCk7XHJcbiAgICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICAgIGlmICh0YWJEYXRhKSB7XHJcbiAgICAgIHJldHVybiB0YWJEYXRhPy5BcHBTY3JlZW5zLmZpbmQoXHJcbiAgICAgICAgKHQ6IGFueSkgPT4gdD8uSUQgPT0gc2NyZWVuSWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2NyZWVuKHNjcmVlbklkOiBzdHJpbmcpIHsgICAgXHJcbiAgICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICAgIGlmICh0YWJEYXRhKSB7XHJcbiAgICAgIHJldHVybiB0YWJEYXRhPy5BcHBTY3JlZW5zLmZpbmQoXHJcbiAgICAgICAgKHQ6IGFueSkgPT4gdD8uSUQgPT0gc2NyZWVuSWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FjMUQ7SUFaQzs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsUUFBZ0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQztJQUNoRixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDaEYsQ0FBQzs2RUFkVSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQURDLE1BQU07O2lGQUNuQixZQUFZO2NBRHhCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gJy4uL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgU2NyZWVuSGVscGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHNjcmVlbiBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzY3JlZW4gSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBzY3JlZW4gZGF0YSBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0U2NyZWVuRGV0YWlsc1dpdGhvdXRDb250YWluZXIoc2NyZWVuSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShzY3JlZW5JZCk/LnRvSlNPTigpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTY3JlZW4oc2NyZWVuSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShzY3JlZW5JZCk/LnRvSlNPTigpIHx8IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGl2aWR1YWxDb25maWcgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFR5cGUsIEpzb25UeXBlLCBOb3RpZmljYXRpb25UeXBlLCBQcm9jZWR1cmVPYmplY3RUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NvbW1vbi5lbnVtXCI7XHJcblxyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzcG9uc2Uge1xyXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xyXG4gIGlzU3VjY2VzczogYm9vbGVhbjtcclxuICByZXN1bHQ6IGFueTtcclxuICBlcnJvcnM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZEluZm8ge1xyXG4gIGlzU3lzdGVtUmVjb3JkOiBib29sZWFuIHwgbnVsbDtcclxuICBibHVlcHJpbnRJZDogc3RyaW5nIHwgbnVsbDtcclxuICBibHVlcHJpbnRTdGF0dXNJZDogc3RyaW5nIHwgbnVsbDtcclxuICByZWNvcmRJZDogc3RyaW5nO1xyXG4gIHByaW1hcnlLZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgUmVxdWVzdElkOiBzdHJpbmdcclxuICBJc1N1Y2Nlc3M6IGJvb2xlYW5cclxuICBSZXN1bHQ6IGFueVxyXG4gIFN0YXR1c0NvZGU6IHN0cmluZ1xyXG4gIFJlY29yZEFmZmVjdHRlZDogbnVtYmVyXHJcbiAgVG90YWxSZWNvcmRzOiBudW1iZXJcclxuICBUb3RhbEV4ZWN1dGlvblRpbWU6IG51bWJlclxyXG4gIExvZzogYW55W11cclxuICBFcnJvcnM6IGFueVtdXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2NyZWVuQ29uZmlnIHtcclxuICBsYXlvdXRJZD86IHN0cmluZztcclxuICB2ZXJzaW9uPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1JlcXVlc3RQYXlsb2FkIHtcclxuICBTY3JlZW5JZDogc3RyaW5nLFxyXG4gIERhdGE6IGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlUGFyc2VQYXlsb2FkIHtcclxuICBEYXRhU291cmNlTW9kZT86IG51bWJlcixcclxuICBWYWx1ZTogc3RyaW5nLFxyXG4gIFRlbXBsYXRldmFyaWFibGVzOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZXh0U3RhdHVzUGF5bG9hZCB7XHJcbiAgcmVjb3JkSWQ6IHN0cmluZyxcclxuICBhcHBPYmplY3RJZD86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVN0YXR1c1BheWxvYWQgZXh0ZW5kcyBOZXh0U3RhdHVzUGF5bG9hZCB7XHJcbiAgbmV4dFBvc3NpYmxlU3RhdHVzSWQ6IHN0cmluZyxcclxuICBvcHRpb25zPzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCB7XHJcbiAgQ29ubmVjdGlvbklkOiBzdHJpbmcsXHJcbiAgVGFibGVzOiBzdHJpbmdbXSxcclxuICBWaWV3czogc3RyaW5nW11cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbG9uZURzcVBheWxvYWQge1xyXG4gIERTUUlkOiBzdHJpbmcsXHJcbiAgUXVlcnlOYW1lOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YUpzb25CeVR5cGVQYXlsb2FkIHtcclxuICBKc29uVHlwZTogSnNvblR5cGUsXHJcbiAgUmVxdG9rZW5zPzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3luY0FwcEZpZWxkc1BheWxvYWQge1xyXG4gIENvbm5lY3Rpb25JZDogc3RyaW5nO1xyXG4gIEFwcE9iamVjdElkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkIHtcclxuICBRdWVyeU9iamVjdElEOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlY29yZEluZm9EYXRhUGF5bG9hZCB7XHJcbiAgUXVlcnlPYmplY3RJRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZE1lZGlhRmlsZVBheWxvYWQge1xyXG4gIEJhc2U2NFN0cmluZzogc3RyaW5nO1xyXG4gIEZpbGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQge1xyXG4gIFVwbG9hZEZpbGVzOiBVcGxvYWRNZWRpYUZpbGVQYXlsb2FkW11cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYXlsb2FkIHtcclxuICBEYXRhUmVwb3J0SWQ6IHN0cmluZyxcclxuICBSZXF0b2tlbnM6IGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCB7XHJcbiAgdHlwZTogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbiAgZnJvbURhdGU6IHN0cmluZyxcclxuICB0b0RhdGU6IHN0cmluZyxcclxuICBsaW1pdD86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCB7XHJcbiAgdmFsdWU6IHN0cmluZyxcclxuICBsb2FkVGltZTogbnVtYmVyLFxyXG4gIHRhZ3M6IHtcclxuICAgIGRzcUlkczogc3RyaW5nW10sXHJcbiAgICBhcHBPYmplY3RJZHM6IHN0cmluZ1tdXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHRyYW5zbGF0ZVBheWxvYWQge1xyXG4gIGxhbmd1YWdlOiBzdHJpbmc7XHJcbiAgbGFuZ3VhZ2VDb2RlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMge1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBjb25maWd1cmF0aW9uPzogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPGFueT4+IHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucyB7XHJcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25PcHRpb25zIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBwcmltYXJ5T3B0aW9uPzogc3RyaW5nO1xyXG4gIHNlY29uZGFyeU9wdGlvbj86IHN0cmluZztcclxuICBkaXNwbGF5SGVhZGVyPzogYm9vbGVhbjtcclxuICBkaXNwbGF5Rm9vdGVyPzogYm9vbGVhbjtcclxuICBkaXNwbGF5Qm9keT86IGJvb2xlYW47XHJcbiAgZGlzcGxheVByaW1hcnlCdXR0b24/OiBib29sZWFuO1xyXG4gIGRpc3BsYXlTZWNvbmRhcnlCdXR0b24/OiBib29sZWFuO1xyXG4gIGRpc3BsYXlDbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZEJhc2VQYXlsb2FkIHtcclxuICBhcHBPYmplY3RJZE9yTmFtZT86IHN0cmluZztcclxuICBkYXRhU291cmNlUXVlcnlJZE9yTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRQYXlsb2FkIGV4dGVuZHMgQ3J1ZEJhc2VQYXlsb2FkIHtcclxuICBkYXRhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUGF5bG9hZCBleHRlbmRzIEluc2VydFBheWxvYWQge1xyXG4gIGNyaXRlcmlhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlUGF5bG9hZCBleHRlbmRzIENydWRCYXNlUGF5bG9hZCB7XHJcbiAgY3JpdGVyaWE6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlsb2FkIHtcclxuICBkYXRhU291cmNlUXVlcnlJZE9yTmFtZTogc3RyaW5nO1xyXG4gIGNyaXRlcmlhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wcm90RGF0YVBheWxvYWQge1xyXG4gIEltcG9ydE9iamVjdE1hcHBpbmdJZDogc3RyaW5nO1xyXG4gIEZpbGU6IHN0cmluZztcclxuICBJbXBvcnRUeXBlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoRGF0YVBheWxvYWQge1xyXG4gIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBhcHBPYmplY3RJZD86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJjb3JkSGlzdG9yeVBheWxvYWQge1xyXG4gIGFwcE9iamVjdElkOiBzdHJpbmc7XHJcbiAgcmVjb3JkSWRzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwRXhlY3V0ZVJlcXVlc3RQYXlsb2FkIHtcclxuICBmdWxsVXJsOiBzdHJpbmcsXHJcbiAgbWV0aG9kOiBIdHRwUmVxdWVzdFR5cGUsXHJcbiAgaGVhZGVycz86IGFueSxcclxuICBib2R5PzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZVBheWxvYWQge1xyXG4gIE9iamVjdE5hbWU6IHN0cmluZztcclxuICBPYmplY3RUeXBlOiBQcm9jZWR1cmVPYmplY3RUeXBlXHJcbiAgUGFyYW1ldGVycz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBleGVjdXRlVEFCV29ya2Zsb3dQYXlsb2FkICB7XHJcbiAgICBXb3JrRmxvd0lEIDogc3RyaW5nLFxyXG4gICAgQXBwT2JqZWN0SWQ6IHN0cmluZyxcclxuICAgIFJlcXRva2Vucz86IGFueVxyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluZGl2aWR1YWxDb25maWcgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFR5cGUsIEpzb25UeXBlLCBOb3RpZmljYXRpb25UeXBlLCBQcm9jZWR1cmVPYmplY3RUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2NvbW1vbi5lbnVtXCI7XHJcblxyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVzcG9uc2Uge1xyXG4gIHJlcXVlc3RJZDogc3RyaW5nO1xyXG4gIGlzU3VjY2VzczogYm9vbGVhbjtcclxuICByZXN1bHQ6IGFueTtcclxuICBlcnJvcnM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZEluZm8ge1xyXG4gIGlzU3lzdGVtUmVjb3JkOiBib29sZWFuIHwgbnVsbDtcclxuICBibHVlcHJpbnRJZDogc3RyaW5nIHwgbnVsbDtcclxuICBibHVlcHJpbnRTdGF0dXNJZDogc3RyaW5nIHwgbnVsbDtcclxuICByZWNvcmRJZDogc3RyaW5nO1xyXG4gIHByaW1hcnlLZXk6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgSXNTdWNjZXNzOiBib29sZWFuXHJcbiAgUmVzdWx0OiBhbnlcclxuICBSZWNvcmRBZmZlY3R0ZWQ6IG51bWJlclxyXG4gIFRvdGFsUmVjb3JkczogbnVtYmVyXHJcbiAgVG90YWxFeGVjdXRpb25UaW1lOiBudW1iZXJcclxuICBMb2c6IGFueVtdXHJcbiAgRXJyb3JzOiBhbnlbXVxyXG4gIENvcnJlbGF0aW9uSWQ/OiBzdHJpbmcgIC8vIEZvciBhc3luYyBvcGVyYXRpb25zXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2NyZWVuQ29uZmlnIHtcclxuICBsYXlvdXRJZD86IHN0cmluZztcclxuICB2ZXJzaW9uPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1JlcXVlc3RQYXlsb2FkIHtcclxuICBTY3JlZW5JZDogc3RyaW5nLFxyXG4gIERhdGE6IGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlUGFyc2VQYXlsb2FkIHtcclxuICBEYXRhU291cmNlTW9kZT86IG51bWJlcixcclxuICBWYWx1ZTogc3RyaW5nLFxyXG4gIFRlbXBsYXRldmFyaWFibGVzOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOZXh0U3RhdHVzUGF5bG9hZCB7XHJcbiAgcmVjb3JkSWQ6IHN0cmluZyxcclxuICBhcHBPYmplY3RJZD86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVN0YXR1c1BheWxvYWQgZXh0ZW5kcyBOZXh0U3RhdHVzUGF5bG9hZCB7XHJcbiAgbmV4dFBvc3NpYmxlU3RhdHVzSWQ6IHN0cmluZyxcclxuICBvcHRpb25zPzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCB7XHJcbiAgQ29ubmVjdGlvbklkOiBzdHJpbmcsXHJcbiAgVGFibGVzOiBzdHJpbmdbXSxcclxuICBWaWV3czogc3RyaW5nW11cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbG9uZURzcVBheWxvYWQge1xyXG4gIERTUUlkOiBzdHJpbmcsXHJcbiAgUXVlcnlOYW1lOiBzdHJpbmcsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0RGF0YUpzb25CeVR5cGVQYXlsb2FkIHtcclxuICBKc29uVHlwZTogSnNvblR5cGUsXHJcbiAgUmVxdG9rZW5zPzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3luY0FwcEZpZWxkc1BheWxvYWQge1xyXG4gIENvbm5lY3Rpb25JZDogc3RyaW5nO1xyXG4gIEFwcE9iamVjdElkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkIHtcclxuICBRdWVyeU9iamVjdElEOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlY29yZEluZm9EYXRhUGF5bG9hZCB7XHJcbiAgUXVlcnlPYmplY3RJRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZE1lZGlhRmlsZVBheWxvYWQge1xyXG4gIEJhc2U2NFN0cmluZzogc3RyaW5nO1xyXG4gIEZpbGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQge1xyXG4gIFVwbG9hZEZpbGVzOiBVcGxvYWRNZWRpYUZpbGVQYXlsb2FkW11cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYXlsb2FkIHtcclxuICBEYXRhUmVwb3J0SWQ6IHN0cmluZyxcclxuICBSZXF0b2tlbnM6IGFueVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCB7XHJcbiAgdHlwZTogc3RyaW5nLFxyXG4gIHZhbHVlOiBzdHJpbmcsXHJcbiAgZnJvbURhdGU6IHN0cmluZyxcclxuICB0b0RhdGU6IHN0cmluZyxcclxuICBsaW1pdD86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCB7XHJcbiAgdmFsdWU6IHN0cmluZyxcclxuICBsb2FkVGltZTogbnVtYmVyLFxyXG4gIHRhZ3M6IHtcclxuICAgIGRzcUlkczogc3RyaW5nW10sXHJcbiAgICBhcHBPYmplY3RJZHM6IHN0cmluZ1tdXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHRyYW5zbGF0ZVBheWxvYWQge1xyXG4gIGxhbmd1YWdlOiBzdHJpbmc7XHJcbiAgbGFuZ3VhZ2VDb2RlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZU5vdGlmaWNhdGlvbk9wdGlvbnMge1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBjb25maWd1cmF0aW9uPzogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPGFueT4+IHwgdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk9wdGlvbnMgZXh0ZW5kcyBCYXNlTm90aWZpY2F0aW9uT3B0aW9ucyB7XHJcbiAgdHlwZTogTm90aWZpY2F0aW9uVHlwZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtYXRpb25PcHRpb25zIHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBwcmltYXJ5T3B0aW9uPzogc3RyaW5nO1xyXG4gIHNlY29uZGFyeU9wdGlvbj86IHN0cmluZztcclxuICBkaXNwbGF5SGVhZGVyPzogYm9vbGVhbjtcclxuICBkaXNwbGF5Rm9vdGVyPzogYm9vbGVhbjtcclxuICBkaXNwbGF5Qm9keT86IGJvb2xlYW47XHJcbiAgZGlzcGxheVByaW1hcnlCdXR0b24/OiBib29sZWFuO1xyXG4gIGRpc3BsYXlTZWNvbmRhcnlCdXR0b24/OiBib29sZWFuO1xyXG4gIGRpc3BsYXlDbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZEJhc2VQYXlsb2FkIHtcclxuICBhcHBPYmplY3RJZE9yTmFtZT86IHN0cmluZztcclxuICBkYXRhU291cmNlUXVlcnlJZE9yTmFtZT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbnNlcnRQYXlsb2FkIGV4dGVuZHMgQ3J1ZEJhc2VQYXlsb2FkIHtcclxuICBkYXRhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUGF5bG9hZCBleHRlbmRzIEluc2VydFBheWxvYWQge1xyXG4gIGNyaXRlcmlhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlUGF5bG9hZCBleHRlbmRzIENydWRCYXNlUGF5bG9hZCB7XHJcbiAgY3JpdGVyaWE6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRQYXlsb2FkIHtcclxuICBkYXRhU291cmNlUXVlcnlJZE9yTmFtZTogc3RyaW5nO1xyXG4gIGNyaXRlcmlhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wcm90RGF0YVBheWxvYWQge1xyXG4gIEltcG9ydE9iamVjdE1hcHBpbmdJZDogc3RyaW5nO1xyXG4gIEZpbGU6IHN0cmluZztcclxuICBJbXBvcnRUeXBlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoRGF0YVBheWxvYWQge1xyXG4gIHNlYXJjaFF1ZXJ5OiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBhcHBPYmplY3RJZD86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJjb3JkSGlzdG9yeVBheWxvYWQge1xyXG4gIGFwcE9iamVjdElkOiBzdHJpbmc7XHJcbiAgcmVjb3JkSWRzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwRXhlY3V0ZVJlcXVlc3RQYXlsb2FkIHtcclxuICBmdWxsVXJsOiBzdHJpbmcsXHJcbiAgbWV0aG9kOiBIdHRwUmVxdWVzdFR5cGUsXHJcbiAgaGVhZGVycz86IGFueSxcclxuICBib2R5PzogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgZXhlY3V0ZVN0b3JlZFByb2NlZHVyZVBheWxvYWQge1xyXG4gIE9iamVjdE5hbWU6IHN0cmluZztcclxuICBPYmplY3RUeXBlOiBQcm9jZWR1cmVPYmplY3RUeXBlXHJcbiAgUGFyYW1ldGVycz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBleGVjdXRlVEFCV29ya2Zsb3dQYXlsb2FkICB7XHJcbiAgICBXb3JrRmxvd0lEIDogc3RyaW5nLFxyXG4gICAgQXBwT2JqZWN0SWQ6IHN0cmluZyxcclxuICAgIFJlcXRva2Vucz86IGFueVxyXG59XHJcblxyXG4vKipcclxuICogU3RhbmRhcmQgQVBJIHJlc3BvbnNlIGZvcm1hdCAoY2FtZWxDYXNlIC0gTkVXIEJBQ0tFTkQpXHJcbiAqIEFsbCBuZXcgQVBJcyByZXR1cm4gdGhpcyBjb25zaXN0ZW50IHN0cnVjdHVyZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZEFwaVJlc3BvbnNlIHtcclxuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWwgKi9cclxuICAgIGlzU3VjY2VzczogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogRXJyb3IgaW5mb3JtYXRpb24gKG51bGwgaWYgc3VjY2Vzc2Z1bCkgKi9cclxuICAgIGVycm9yOiBBcGlFcnJvciB8IG51bGw7XHJcblxyXG4gICAgLyoqIFJlc3BvbnNlIGRhdGEgKG51bGwgaWYgZXJyb3IpICovXHJcbiAgICByZXN1bHQ6IGFueSB8IG51bGw7XHJcblxyXG4gICAgLyoqIFJlcXVlc3QgZXhlY3V0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzICovXHJcbiAgICBleGVjdXRpb25UaW1lTXM6IG51bWJlcjtcclxuXHJcbiAgICAvKiogTG9nIGVudHJpZXMgZnJvbSB0aGUgcmVxdWVzdCAqL1xyXG4gICAgbG9nczogc3RyaW5nW107XHJcblxyXG4gICAgLyoqIEFkZGl0aW9uYWwgbWV0YWRhdGEgYWJvdXQgdGhlIHJlcXVlc3QgKi9cclxuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuICAgIC8qKiBOdW1iZXIgb2YgcmVjb3JkcyBhZmZlY3RlZCAoZm9yIG11dGF0aW9ucykgKi9cclxuICAgIGFmZmVjdGVkUmVjb3Jkcz86IG51bWJlcjtcclxuXHJcbiAgICAvKiogVG90YWwgbnVtYmVyIG9mIHJlY29yZHMgKGZvciBxdWVyaWVzKSAqL1xyXG4gICAgdG90YWxSZWNvcmRzPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKiBDb3JyZWxhdGlvbiBJRCBmb3IgYXN5bmMgb3BlcmF0aW9ucyAobnVsbCBmb3Igc3luYyBvcGVyYXRpb25zKSAqL1xyXG4gICAgY29ycmVsYXRpb25JZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEVycm9yIGluZm9ybWF0aW9uIGluIG5ldyBBUEkgZm9ybWF0XHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFwaUVycm9yIHtcclxuICAgIC8qKiBFcnJvciBjb2RlIChlLmcuLCBcIlVORVhQRUNURURfRVJST1JcIiwgXCJWQUxJREFUSU9OX0VSUk9SXCIpICovXHJcbiAgICBjb2RlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSAqL1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBUZWNobmljYWwgZXJyb3IgZGV0YWlscyBmb3IgZGVidWdnaW5nICovXHJcbiAgICBkZXRhaWxzOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNaWNyb3NlcnZpY2UgVVJMcyBjb25maWd1cmF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFQSVNlcnZpY2VVcmxzIHtcclxuICAgIGNydWRTZXJ2aWNlOiBzdHJpbmc7XHJcbiAgICBtZXRhZGF0YVNlcnZpY2U6IHN0cmluZztcclxuICAgIGZvcm1pb1NlcnZpY2U6IHN0cmluZztcclxuICAgIGlkZW50aXR5U2VydmljZTogc3RyaW5nO1xyXG4gICAgY29kZUV4ZWN1dG9yU2VydmljZTogc3RyaW5nO1xyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZTogc3RyaW5nO1xyXG4gICAgd29ya2Zsb3dTZXJ2aWNlOiBzdHJpbmc7XHJcbiAgICBraWJhbmFTZXJ2aWNlOiBzdHJpbmc7XHJcbiAgICByZXBvcnRTZXJ2aWNlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFQSVNlcnZpY2VOYW1lID0ga2V5b2YgQVBJU2VydmljZVVybHM7XHJcbiJdfQ==