@techextensor/tab-core-utility 2.2.196 → 2.2.198

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 (82) hide show
  1. package/README.md +7 -0
  2. package/esm2022/index.mjs +11 -10
  3. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +2 -10
  4. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +16 -1
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +7 -7
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +45 -39
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +14 -18
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +9 -9
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +62 -206
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +11 -12
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +7 -7
  12. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +36 -22
  13. package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +7 -7
  14. package/esm2022/lib/tab-core-utility/app/enums/dsq.enum.mjs +13 -13
  15. package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +31 -6
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +12 -13
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +7 -7
  18. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +11 -7
  19. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +15 -27
  20. package/esm2022/lib/tab-core-utility/app/helpers/common/template.helpers.mjs +7 -7
  21. package/esm2022/lib/tab-core-utility/app/helpers/common/user-personalization.helper.mjs +7 -7
  22. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +14 -59
  23. package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +31 -6
  24. package/esm2022/lib/tab-core-utility/app/helpers/screen/forms.helpers.mjs +7 -7
  25. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.mjs +7 -7
  26. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +12 -96
  27. package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +7 -7
  28. package/esm2022/lib/tab-core-utility/app/helpers/screen/plugin.helpers.mjs +7 -7
  29. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +7 -15
  30. package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
  31. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +36 -64
  32. package/esm2022/lib/tab-core-utility/app/models/app-object.class.mjs +1 -27
  33. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +4 -4
  34. package/esm2022/lib/tab-core-utility/app/models/data-source-queries.class.mjs +1 -22
  35. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +4 -4
  36. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +16 -18
  37. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +9 -13
  38. package/esm2022/lib/tab-core-utility/app/utils/filter.util.mjs +3 -3
  39. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -13
  40. package/esm2022/lib/tab-core-utility/app/utils/select-query.util.mjs +107 -0
  41. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +8 -5
  42. package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +8 -9
  43. package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +7 -7
  44. package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +7 -7
  45. package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +7 -7
  46. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +7 -7
  47. package/esm2022/lib/tab-core-utility/core/pipe/translate.pipe.mjs +11 -11
  48. package/esm2022/lib/tab-core-utility/core/service/confirmation.service.mjs +9 -9
  49. package/esm2022/lib/tab-core-utility/core/service/encryption.service.mjs +7 -7
  50. package/esm2022/lib/tab-core-utility/core/service/notification.service.mjs +9 -9
  51. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +7 -7
  52. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +9 -9
  53. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +9 -9
  54. package/esm2022/lib/tab-core-utility/core/service/translation.service.mjs +9 -9
  55. package/index.d.ts +10 -1
  56. package/lib/tab-core-utility/app/constants/api-constants.d.ts +0 -4
  57. package/lib/tab-core-utility/app/constants/common.d.ts +15 -1
  58. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +6 -1
  59. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +16 -67
  60. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +3 -1
  61. package/lib/tab-core-utility/app/enums/dsq.enum.d.ts +2 -2
  62. package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +2 -0
  63. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +4 -1
  64. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +1 -0
  65. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +0 -17
  66. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -18
  67. package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +2 -0
  68. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +0 -53
  69. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -6
  70. package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -2
  71. package/lib/tab-core-utility/app/models/api-query.class.d.ts +84 -94
  72. package/lib/tab-core-utility/app/models/app-object.class.d.ts +2 -65
  73. package/lib/tab-core-utility/app/models/data-source-queries.class.d.ts +2 -71
  74. package/lib/tab-core-utility/app/models/filter.model.d.ts +9 -11
  75. package/lib/tab-core-utility/app/models/sort.model.d.ts +5 -7
  76. package/lib/tab-core-utility/app/utils/filter.util.d.ts +2 -2
  77. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +0 -8
  78. package/lib/tab-core-utility/app/utils/select-query.util.d.ts +24 -0
  79. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +3 -3
  80. package/package.json +1 -3
  81. package/esm2022/lib/tab-core-utility/app/enums/workflow.enum.mjs +0 -37
  82. package/lib/tab-core-utility/app/enums/workflow.enum.d.ts +0 -30
@@ -4,8 +4,9 @@ import { ApiService } from '../../core/http-client/api.service';
4
4
  import { DSQHelper } from '../helpers/common/dsq.helpers';
5
5
  import { MetadataHelper } from '../helpers/common/meta-data.helpers';
6
6
  import { getHeaders } from '../utils/req-res.util';
7
+ import { parseStoredConfigurationToSelectQuery } from '../utils/select-query.util';
7
8
  import { API, APIServices } from '../constants/api-constants';
8
- import { CRUDFilter, CRUDPager, CRUDSelectPayload, CRUDSort, CRUDWhereClause } from '../models/api-query.class';
9
+ import { APIFilterCriteria } from '../models/api-query.class';
9
10
  import { FilterValueType } from '../enums/dsq.enum';
10
11
  import { AppObjectsConstants, DataSourceQueriesConstants, } from '../constants/app-object-constants';
11
12
  import { switchMap } from 'rxjs';
@@ -18,19 +19,15 @@ export class TabGetService {
18
19
  }
19
20
  /**
20
21
  * Execute RAW DSQ with Name
21
- * NEW: Uses new backend endpoint and CRUD microservice
22
22
  * @param data - Object containing AppObjectName and DSQName
23
23
  * @returns Response from the API
24
24
  */
25
25
  executeRAWDSQWithName(data, headers) {
26
26
  const header = getHeaders(headers);
27
- // NEW API: POST /Queries/execute/{objectName}/{dsqName} via CRUD service
28
27
  return this.apiService.postToService(APIServices.crudService, `${API.QueriesExecute}/${data.AppObjectName}/${data.DSQName}`, data, header);
29
28
  }
30
29
  /**
31
30
  * Get Record
32
- * @param params - Parameters for the request
33
- * @returns Response from the API
34
31
  */
35
32
  getRecord(params) {
36
33
  const headers = getHeaders();
@@ -39,23 +36,8 @@ export class TabGetService {
39
36
  }
40
37
  return null;
41
38
  }
42
- // /**
43
- // * Execute Raw SQL
44
- // * @param data - Data for the request
45
- // * @returns Response from the API
46
- // */
47
- // executeRawSql(data: any): any {
48
- // const headers = getHeaders();
49
- // if (headers) {
50
- // return this.apiService.post(`${API.rawSQL}?query=${data}`, '', headers);
51
- // }
52
- // return null;
53
- // }
54
39
  /**
55
40
  * Get History from Kibana microservice
56
- * @param appObjectId - ID of the application object
57
- * @param recordIds - Array of record IDs
58
- * @returns Response from the API
59
41
  */
60
42
  getHistory(payload, headers) {
61
43
  const appObjectName = this.metadataHelper.getAppObjectByIdOrName(payload.appObjectId)?.ObjectName;
@@ -67,65 +49,50 @@ export class TabGetService {
67
49
  }
68
50
  /**
69
51
  * Import data via report microservice
70
- * @param data - Import data payload
71
- * @returns Response from the API
72
52
  */
73
53
  importData(data) {
74
54
  const headers = getHeaders();
75
55
  return this.apiService.postToService(APIServices.reportService, API.importData, data, headers);
76
56
  }
77
57
  /**
78
- * Executes a select query with optional parameters
79
- * NEW: Uses new CRUD microservice endpoint with transformed payload
80
- * @param data - The select query data (old format)
81
- * @param parameters - Optional parameters to be applied to the query
82
- * @param additionalConfig - Optional additional configuration
83
- * @returns Result of the select query execution
58
+ * Executes a select query with optional parameters.
59
+ * Sends the APISelectQuery payload directly to the CRUD select endpoint.
60
+ *
61
+ * @param data - APISelectQuery payload (lowercase keys, full new contract shape)
62
+ * @param parameters - Optional reqtokens to substitute into Parameter-typed filter values
63
+ * @param additionalConfig - Optional partial APISelectQuery to merge over the input
84
64
  */
85
65
  selectExecutor(data, parameters, additionalConfig, headers) {
86
- // Prepare query data with parameters and config
87
66
  const preparedData = this.prepareSelectQueryData(data, parameters, additionalConfig);
88
- // Transform to new CRUD API payload format
89
- const crudPayload = this.transformToCRUDPayload(preparedData);
90
- // Call new CRUD microservice endpoint
91
67
  headers = getHeaders(headers);
92
- return this.apiService.postToService(APIServices.crudService, API.QueriesSelect, crudPayload, headers);
68
+ return this.apiService.postToService(APIServices.crudService, API.QueriesSelect, preparedData, headers);
93
69
  }
94
70
  /**
95
- * Prepares select query data by applying parameters and additional configuration
96
- * @param data - The select query data
97
- * @param parameters - Optional parameters to replace in filters
98
- * @param additionalConfig - Optional additional configuration to merge
99
- * @returns Prepared APISelectQuery with parameters applied
71
+ * Substitutes parameter values into Parameter-typed filter values, then merges any additional config.
72
+ * Mutates and returns the input.
100
73
  */
101
74
  prepareSelectQueryData(data, parameters, additionalConfig) {
102
- // Initialize WhereClause if parameters provided
103
75
  if (parameters && Object.keys(parameters).length) {
104
- data.WhereClause.FilterLogic = data?.WhereClause?.FilterLogic || '1';
105
- data.WhereClause.Filters = data?.WhereClause.Filters || [];
106
- data.WhereClause.SQLQuery = data?.WhereClause?.SQLQuery || '';
107
- /**
108
- * Replaces values from parameters if matched and in format of {{key}}.
109
- * Example: if filter.value is "{{userId}}" and
110
- * this._value.parameters.userId is 123, then filter.value will be replaced with
111
- * "123".
112
- */
113
- data.WhereClause.Filters.forEach((filter) => {
114
- // if valueType = 2 (Parameters)
115
- // then we need to replace the value with parameters and change the valueType to 1 (Literal)
116
- if (filter.ValueType == FilterValueType.Parameter) {
117
- filter.Value = filter?.Value?.replace(/([^}]+)/g, (match, key) => {
118
- const value = parameters[key];
119
- return value !== undefined ? value : null;
120
- });
121
- filter.ValueType = FilterValueType.Literal;
122
- }
123
- });
124
- (data?.WhereClause?.Filters || []).forEach((element) => {
125
- // if valueType = 2 (Parameters) then we need to replace the value with parameters
126
- if (element.ValueType === FilterValueType.Parameter &&
127
- parameters[element.FieldName]) {
128
- element.Value = parameters[element.FieldName];
76
+ data.whereClause = data.whereClause ?? new APIFilterCriteria();
77
+ data.whereClause.filterLogic = data.whereClause.filterLogic || '1';
78
+ data.whereClause.filters = data.whereClause.filters || [];
79
+ data.whereClause.filters.forEach((filter) => {
80
+ if (filter.valueType === FilterValueType.Parameter) {
81
+ // Template substitution: replace {{key}} with parameters[key]
82
+ if (typeof filter.value === 'string' && filter.value.includes('{{')) {
83
+ filter.value = filter.value.replace(/\{\{([^}]+)\}\}/g, (_match, key) => {
84
+ const v = parameters[key.trim()];
85
+ return v !== undefined ? String(v) : '';
86
+ });
87
+ }
88
+ // Bare-parameter substitution: filter.value is itself a parameter key
89
+ if (typeof filter.value === 'string' && parameters[filter.value] !== undefined) {
90
+ filter.value = parameters[filter.value];
91
+ }
92
+ else if (parameters[filter.fieldName] !== undefined) {
93
+ filter.value = parameters[filter.fieldName];
94
+ }
95
+ filter.valueType = FilterValueType.Literal;
129
96
  }
130
97
  });
131
98
  }
@@ -135,150 +102,47 @@ export class TabGetService {
135
102
  return data;
136
103
  }
137
104
  /**
138
- * Transforms old APISelectQuery format to new CRUD API format
139
- * @param apiSelectQuery - The old format select query
140
- * @returns CRUDSelectPayload - The new format payload
141
- */
142
- transformToCRUDPayload(apiSelectQuery) {
143
- const payload = new CRUDSelectPayload();
144
- // Basic properties transformation
145
- payload.EntityName = this.getEntityName(apiSelectQuery.QueryObjectID);
146
- payload.SelectedFields = apiSelectQuery.ResultField_AppfieldIds || [];
147
- payload.Distinct = apiSelectQuery.Distinct || false;
148
- // Transform complex properties
149
- payload.includes = this.transformJoinsToIncludes(apiSelectQuery.Joins);
150
- payload.Pager = this.transformPager(apiSelectQuery.TopCount);
151
- payload.whereClause = this.transformWhereClause(apiSelectQuery.WhereClause);
152
- payload.Sort = this.transformSort(apiSelectQuery.Sort);
153
- return payload;
154
- }
155
- /**
156
- * Gets entity name from QueryObjectID
157
- */
158
- getEntityName(queryObjectId) {
159
- const appObject = this.metadataHelper.getAppObjectByIdOrName(queryObjectId);
160
- return appObject?.ObjectName || queryObjectId;
161
- }
162
- /**
163
- * Transforms Joins to includes array
164
- */
165
- transformJoinsToIncludes(joins) {
166
- if (!joins || joins.length === 0)
167
- return undefined;
168
- return joins.map((join) => join.Relationship?.childDetails?.LookupObject || join);
169
- }
170
- /**
171
- * Transforms TopCount to Pager object
172
- */
173
- transformPager(topCount) {
174
- if (!topCount)
175
- return undefined;
176
- const pager = new CRUDPager();
177
- pager.pageNumber = 1;
178
- pager.pageSize = topCount;
179
- pager.returnTotalCount = true;
180
- return pager;
181
- }
182
- /**
183
- * Transforms WhereClause to new format
184
- */
185
- transformWhereClause(whereClause) {
186
- if (!whereClause?.Filters || whereClause.Filters.length === 0)
187
- return undefined;
188
- const crudWhereClause = new CRUDWhereClause();
189
- crudWhereClause.filters = whereClause.Filters.map((filter) => this.transformFilter(filter));
190
- return crudWhereClause;
191
- }
192
- /**
193
- * Transforms a single filter to new format
194
- */
195
- transformFilter(filter) {
196
- const crudFilter = new CRUDFilter();
197
- crudFilter.fieldName = filter.LookUpDetail || filter.FieldName;
198
- crudFilter.operator = filter.RelationalOperator;
199
- crudFilter.value = filter.Value;
200
- crudFilter.valueType = filter.ValueType;
201
- crudFilter.conjunction = filter.ConjuctionClause;
202
- crudFilter.groupId = filter.GroupID;
203
- crudFilter.sequence = filter.Sequence;
204
- return crudFilter;
205
- }
206
- /**
207
- * Transforms Sort array to new format
208
- */
209
- transformSort(sorts) {
210
- if (!sorts || sorts.length === 0)
211
- return undefined;
212
- return sorts.map((sort) => {
213
- const crudSort = new CRUDSort();
214
- crudSort.FieldName = sort.FieldID;
215
- crudSort.Direction = sort.SortSequence;
216
- return crudSort;
217
- });
218
- }
219
- /**
220
- * Executes a select query by its ID, using the provided parameters.
221
- *
222
- * @param selectQueryId - The ID of the select query to be executed.
223
- * @param parameters - Optional parameters to be applied to the query.
224
- * @returns The result of the select query execution.
225
- * @throws An error if the API response status code is not '200'.
105
+ * Executes a select query by its stored DSQ id.
106
+ * Fetches the stored DSQ row, parses its Configuration JSON (PascalCase storage shape),
107
+ * converts to lowercase APISelectQuery, then invokes selectExecutor.
226
108
  */
227
109
  executeSelectQueryById(selectQueryId, parameters, additionalConfig, headers) {
228
110
  return this.executeRAWDSQWithName({
229
111
  AppObjectName: AppObjectsConstants.TABD_Queries,
230
112
  DSQName: DataSourceQueriesConstants.Detail_TABD_Queries,
231
- Reqtokens: {
232
- ID: selectQueryId,
233
- },
113
+ Reqtokens: { ID: selectQueryId },
234
114
  }, headers).pipe(switchMap((res) => {
235
115
  if (res.IsSuccess && res.Result.length) {
236
- const Configuration = JSON.parse(res.Result[0].Configuration || '{}');
237
- if (Configuration.WhereClause?.filters) {
238
- Configuration.WhereClause.filters = this.removeWhereClauseForEmptyParams(Configuration.WhereClause.filters, parameters || {});
116
+ const storedConfig = JSON.parse(res.Result[0].Configuration || '{}');
117
+ const apiSelectQuery = parseStoredConfigurationToSelectQuery(storedConfig);
118
+ if (apiSelectQuery.whereClause?.filters) {
119
+ apiSelectQuery.whereClause.filters = this.removeFiltersWithEmptyParams(apiSelectQuery.whereClause.filters, parameters || {});
239
120
  }
240
- return this.selectExecutor(Configuration, parameters, additionalConfig, headers);
241
- }
242
- else {
243
- throw new Error(res.Message || 'Failed to fetch select query configuration.');
121
+ return this.selectExecutor(apiSelectQuery, parameters, additionalConfig, headers);
244
122
  }
123
+ throw new Error(res.Message || 'Failed to fetch select query configuration.');
245
124
  }));
246
125
  }
247
- removeWhereClauseForEmptyParams(filters, parameters) {
126
+ /**
127
+ * Removes Parameter-typed filters whose parameter is missing or empty.
128
+ * Internal helper used only by executeSelectQueryById.
129
+ */
130
+ removeFiltersWithEmptyParams(filters, parameters) {
248
131
  return filters.filter((filter) => {
249
- if (filter.ValueType === FilterValueType.Parameter) {
250
- const parameterName = filter.Value;
251
- if (parameterName in parameters && parameters[parameterName] === '') {
252
- return false; // Remove filter
132
+ if (filter.valueType === FilterValueType.Parameter) {
133
+ const parameterName = filter.value;
134
+ if (typeof parameterName === 'string' && parameterName in parameters && parameters[parameterName] === '') {
135
+ return false;
136
+ }
137
+ if (Object.keys(parameters || {}).length === 0) {
138
+ return false;
253
139
  }
254
140
  }
255
- if (Object.keys(parameters || {}).length === 0 && filter.ValueType === FilterValueType.Parameter) {
256
- return false; // Remove filter
257
- }
258
- return true; // Keep filter
141
+ return true;
259
142
  });
260
143
  }
261
- // /**
262
- // * Get Resource Language By Language Code
263
- // * @param languageCode - Language Code
264
- // * @returns Response from the API
265
- // */
266
- // getResourceLanguageByLanguageCode(languageCode: number): any {
267
- // const headers = getHeaders();
268
- // if (headers) {
269
- // return this.apiService.post(
270
- // `${API.languageResource}`,
271
- // { LanguageCode: languageCode },
272
- // headers
273
- // );
274
- // }
275
- // return null;
276
- // }
277
144
  /**
278
145
  * Get Search Data from Kibana microservice
279
- * @param searchQuery - Search Query string
280
- * @param limit - Limit of search results
281
- * @returns Response from the API
282
146
  */
283
147
  getSearchData(payload, params) {
284
148
  const headers = getHeaders();
@@ -286,12 +150,6 @@ export class TabGetService {
286
150
  }
287
151
  /**
288
152
  * Executes an HTTP request with the specified method, URL, headers, and body.
289
- *
290
- * @param fullUrl -The full URL of the request containing the query parameters.
291
- * @param method - The HTTP method to be used ('GET', 'POST', 'PUT', 'DELETE').
292
- * @param headers - The headers to include in the request.
293
- * @param body - The body content for methods like POST and PUT.
294
- * @returns The API response corresponding to the request.
295
153
  */
296
154
  executeHttpRequest(payload) {
297
155
  const headers = {
@@ -314,19 +172,17 @@ export class TabGetService {
314
172
  }
315
173
  }
316
174
  /**
317
- * Generates an HTTP Request based on the provided DataSourceQuery name
318
- * @param QueryName - The name of the DataSourceQuery
319
- * @returns The result of the generated HTTP request
175
+ * Generates an HTTP Request based on the provided DataSourceQuery name.
320
176
  */
321
177
  generateHttpRequest(dataSourceQueryName) {
322
178
  const headers = getHeaders();
323
179
  return this.apiService.get(`${API.GenerateHttpRequest}?dsqName=${dataSourceQueryName}`, undefined, headers);
324
180
  }
325
- static { this.ɵfac = function TabGetService_Factory(t) { return new (t || TabGetService)(); }; }
326
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabGetService, factory: TabGetService.ɵfac, providedIn: 'root' }); }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabGetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
182
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabGetService, providedIn: 'root' }); }
327
183
  }
328
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TabGetService, [{
329
- type: Injectable,
330
- args: [{ providedIn: 'root' }]
331
- }], null, null); })();
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQWtCLFVBQVUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSTdDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQTRXMUQ7SUExV0M7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxJQUFT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OEVBOVdVLGFBQWE7dUVBQWIsYUFBYSxXQUFiLGFBQWEsbUJBREEsTUFBTTs7aUZBQ25CLGFBQWE7Y0FEekIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvY29tbW9uL2RzcS5oZWxwZXJzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tICcuLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyBBUEksIEFQSVNlcnZpY2VzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBUElTZWxlY3RRdWVyeSwgQ1JVREZpbHRlciwgQ1JVRFBhZ2VyLCBDUlVEU2VsZWN0UGF5bG9hZCwgQ1JVRFNvcnQsIENSVURXaGVyZUNsYXVzZSB9IGZyb20gJy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBGaWx0ZXJWYWx1ZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwT2JqZWN0c0NvbnN0YW50cyxcclxuICBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cyxcclxufSBmcm9tICcuLi9jb25zdGFudHMvYXBwLW9iamVjdC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIEh0dHBFeGVjdXRlUmVxdWVzdFBheWxvYWQsIEltcG9ydERhdGFQYXlsb2FkLCBSY29yZEhpc3RvcnlQYXlsb2FkLCBTZWFyY2hEYXRhUGF5bG9hZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiR2V0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZHNxSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YUhlbHBlciA9IGluamVjdChNZXRhZGF0YUhlbHBlcik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGUgUkFXIERTUSB3aXRoIE5hbWVcclxuICAgKiBORVc6IFVzZXMgbmV3IGJhY2tlbmQgZW5kcG9pbnQgYW5kIENSVUQgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIGRhdGEgLSBPYmplY3QgY29udGFpbmluZyBBcHBPYmplY3ROYW1lIGFuZCBEU1FOYW1lXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZXhlY3V0ZVJBV0RTUVdpdGhOYW1lKGRhdGE6IGFueSwgaGVhZGVycz86IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgLy8gTkVXIEFQSTogUE9TVCAvUXVlcmllcy9leGVjdXRlL3tvYmplY3ROYW1lfS97ZHNxTmFtZX0gdmlhIENSVUQgc2VydmljZVxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgYCR7QVBJLlF1ZXJpZXNFeGVjdXRlfS8ke2RhdGEuQXBwT2JqZWN0TmFtZX0vJHtkYXRhLkRTUU5hbWV9YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgaGVhZGVyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFJlY29yZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFJlY29yZChwYXJhbXM6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLmdldHJlY29yZH1gLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBFeGVjdXRlIFJhdyBTUUxcclxuICAvLyAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIHRoZSByZXF1ZXN0XHJcbiAgLy8gICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgLy8gICovXHJcbiAgLy8gZXhlY3V0ZVJhd1NxbChkYXRhOiBhbnkpOiBhbnkge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkucmF3U1FMfT9xdWVyeT0ke2RhdGF9YCwgJycsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgSGlzdG9yeSBmcm9tIEtpYmFuYSBtaWNyb3NlcnZpY2VcclxuICAgKiBAcGFyYW0gYXBwT2JqZWN0SWQgLSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0XHJcbiAgICogQHBhcmFtIHJlY29yZElkcyAtIEFycmF5IG9mIHJlY29yZCBJRHNcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRIaXN0b3J5KHBheWxvYWQ6IFJjb3JkSGlzdG9yeVBheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBhcHBPYmplY3ROYW1lID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHBheWxvYWQuYXBwT2JqZWN0SWQpPy5PYmplY3ROYW1lO1xyXG4gICAgaGVhZGVycyA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmtpYmFuYVNlcnZpY2UsXHJcbiAgICAgIEFQSS5hdWRpdEdldEhpc3RvcnksXHJcbiAgICAgIHtcclxuICAgICAgICBSZWNvcmRJZHM6IHBheWxvYWQucmVjb3JkSWRzLFxyXG4gICAgICAgIGVudGl0eU5hbWU6IGFwcE9iamVjdE5hbWVcclxuICAgICAgfSxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9ydCBkYXRhIHZpYSByZXBvcnQgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIGRhdGEgLSBJbXBvcnQgZGF0YSBwYXlsb2FkXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgaW1wb3J0RGF0YShkYXRhOiBJbXBvcnREYXRhUGF5bG9hZCk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKEFQSVNlcnZpY2VzLnJlcG9ydFNlcnZpY2UsIEFQSS5pbXBvcnREYXRhLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VsZWN0IHF1ZXJ5IHdpdGggb3B0aW9uYWwgcGFyYW1ldGVyc1xyXG4gICAqIE5FVzogVXNlcyBuZXcgQ1JVRCBtaWNyb3NlcnZpY2UgZW5kcG9pbnQgd2l0aCB0cmFuc2Zvcm1lZCBwYXlsb2FkXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgc2VsZWN0IHF1ZXJ5IGRhdGEgKG9sZCBmb3JtYXQpXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICogQHBhcmFtIGFkZGl0aW9uYWxDb25maWcgLSBPcHRpb25hbCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25cclxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHNlbGVjdCBxdWVyeSBleGVjdXRpb25cclxuICAgKi9cclxuICBzZWxlY3RFeGVjdXRvcihkYXRhOiBBUElTZWxlY3RRdWVyeSwgcGFyYW1ldGVycz86IGFueSwgYWRkaXRpb25hbENvbmZpZz86IGFueSwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIC8vIFByZXBhcmUgcXVlcnkgZGF0YSB3aXRoIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ1xyXG4gICAgY29uc3QgcHJlcGFyZWREYXRhOiBhbnkgPSB0aGlzLnByZXBhcmVTZWxlY3RRdWVyeURhdGEoZGF0YSwgcGFyYW1ldGVycywgYWRkaXRpb25hbENvbmZpZyk7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIHRvIG5ldyBDUlVEIEFQSSBwYXlsb2FkIGZvcm1hdFxyXG4gICAgY29uc3QgY3J1ZFBheWxvYWQgPSB0aGlzLnRyYW5zZm9ybVRvQ1JVRFBheWxvYWQocHJlcGFyZWREYXRhKTtcclxuXHJcbiAgICAvLyBDYWxsIG5ldyBDUlVEIG1pY3Jvc2VydmljZSBlbmRwb2ludFxyXG4gICAgaGVhZGVycyA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmNydWRTZXJ2aWNlLFxyXG4gICAgICBBUEkuUXVlcmllc1NlbGVjdCxcclxuICAgICAgY3J1ZFBheWxvYWQsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcmVwYXJlcyBzZWxlY3QgcXVlcnkgZGF0YSBieSBhcHBseWluZyBwYXJhbWV0ZXJzIGFuZCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb25cclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBzZWxlY3QgcXVlcnkgZGF0YVxyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyB0byByZXBsYWNlIGluIGZpbHRlcnNcclxuICAgKiBAcGFyYW0gYWRkaXRpb25hbENvbmZpZyAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBtZXJnZVxyXG4gICAqIEByZXR1cm5zIFByZXBhcmVkIEFQSVNlbGVjdFF1ZXJ5IHdpdGggcGFyYW1ldGVycyBhcHBsaWVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwcmVwYXJlU2VsZWN0UXVlcnlEYXRhKGRhdGE6IGFueSwgcGFyYW1ldGVycz86IGFueSwgYWRkaXRpb25hbENvbmZpZz86IGFueSk6IGFueSB7XHJcbiAgICAvLyBJbml0aWFsaXplIFdoZXJlQ2xhdXNlIGlmIHBhcmFtZXRlcnMgcHJvdmlkZWRcclxuICAgIGlmIChwYXJhbWV0ZXJzICYmIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmxlbmd0aCkge1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gZGF0YT8uV2hlcmVDbGF1c2U/LkZpbHRlckxvZ2ljIHx8ICcxJztcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJzID0gZGF0YT8uV2hlcmVDbGF1c2UuRmlsdGVycyB8fCBbXTtcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5TUUxRdWVyeSA9IGRhdGE/LldoZXJlQ2xhdXNlPy5TUUxRdWVyeSB8fCAnJztcclxuICAgICAgLyoqXHJcbiAgICAgICAqIFJlcGxhY2VzIHZhbHVlcyBmcm9tIHBhcmFtZXRlcnMgaWYgbWF0Y2hlZCBhbmQgaW4gZm9ybWF0IG9mIHt7a2V5fX0uXHJcbiAgICAgICAqIEV4YW1wbGU6IGlmIGZpbHRlci52YWx1ZSBpcyBcInt7dXNlcklkfX1cIiBhbmRcclxuICAgICAgICogdGhpcy5fdmFsdWUucGFyYW1ldGVycy51c2VySWQgaXMgMTIzLCB0aGVuIGZpbHRlci52YWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGhcclxuICAgICAgICogXCIxMjNcIi5cclxuICAgICAgICovXHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycy5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGlmIHZhbHVlVHlwZSA9IDIgKFBhcmFtZXRlcnMpXHJcbiAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHZhbHVlIHdpdGggcGFyYW1ldGVycyBhbmQgY2hhbmdlIHRoZSB2YWx1ZVR5cGUgdG8gMSAoTGl0ZXJhbClcclxuICAgICAgICBpZiAoZmlsdGVyLlZhbHVlVHlwZSA9PSBGaWx0ZXJWYWx1ZVR5cGUuUGFyYW1ldGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWUgPSBmaWx0ZXI/LlZhbHVlPy5yZXBsYWNlKFxyXG4gICAgICAgICAgICAvKFtefV0rKS9nLFxyXG4gICAgICAgICAgICAobWF0Y2g6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlcnNba2V5XTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGZpbHRlci5WYWx1ZVR5cGUgPSBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAoZGF0YT8uV2hlcmVDbGF1c2U/LkZpbHRlcnMgfHwgW10pLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIGlmIHZhbHVlVHlwZSA9IDIgKFBhcmFtZXRlcnMpIHRoZW4gd2UgbmVlZCB0byByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHBhcmFtZXRlcnNcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbGVtZW50LlZhbHVlVHlwZSA9PT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlciAmJlxyXG4gICAgICAgICAgcGFyYW1ldGVyc1tlbGVtZW50LkZpZWxkTmFtZV1cclxuICAgICAgICApIHtcclxuICAgICAgICAgIGVsZW1lbnQuVmFsdWUgPSBwYXJhbWV0ZXJzW2VsZW1lbnQuRmllbGROYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKGFkZGl0aW9uYWxDb25maWcgJiYgdHlwZW9mIGFkZGl0aW9uYWxDb25maWcgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLmFkZGl0aW9uYWxDb25maWcgfTsgIFxyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybXMgb2xkIEFQSVNlbGVjdFF1ZXJ5IGZvcm1hdCB0byBuZXcgQ1JVRCBBUEkgZm9ybWF0XHJcbiAgICogQHBhcmFtIGFwaVNlbGVjdFF1ZXJ5IC0gVGhlIG9sZCBmb3JtYXQgc2VsZWN0IHF1ZXJ5XHJcbiAgICogQHJldHVybnMgQ1JVRFNlbGVjdFBheWxvYWQgLSBUaGUgbmV3IGZvcm1hdCBwYXlsb2FkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1Ub0NSVURQYXlsb2FkKGFwaVNlbGVjdFF1ZXJ5OiBBUElTZWxlY3RRdWVyeSk6IENSVURTZWxlY3RQYXlsb2FkIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSBuZXcgQ1JVRFNlbGVjdFBheWxvYWQoKTtcclxuXHJcbiAgICAvLyBCYXNpYyBwcm9wZXJ0aWVzIHRyYW5zZm9ybWF0aW9uXHJcbiAgICBwYXlsb2FkLkVudGl0eU5hbWUgPSB0aGlzLmdldEVudGl0eU5hbWUoYXBpU2VsZWN0UXVlcnkuUXVlcnlPYmplY3RJRCk7XHJcbiAgICBwYXlsb2FkLlNlbGVjdGVkRmllbGRzID0gYXBpU2VsZWN0UXVlcnkuUmVzdWx0RmllbGRfQXBwZmllbGRJZHMgfHwgW107XHJcbiAgICBwYXlsb2FkLkRpc3RpbmN0ID0gYXBpU2VsZWN0UXVlcnkuRGlzdGluY3QgfHwgZmFsc2U7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIGNvbXBsZXggcHJvcGVydGllc1xyXG4gICAgcGF5bG9hZC5pbmNsdWRlcyA9IHRoaXMudHJhbnNmb3JtSm9pbnNUb0luY2x1ZGVzKGFwaVNlbGVjdFF1ZXJ5LkpvaW5zKTtcclxuICAgIHBheWxvYWQuUGFnZXIgPSB0aGlzLnRyYW5zZm9ybVBhZ2VyKGFwaVNlbGVjdFF1ZXJ5LlRvcENvdW50KTtcclxuICAgIHBheWxvYWQud2hlcmVDbGF1c2UgPSB0aGlzLnRyYW5zZm9ybVdoZXJlQ2xhdXNlKGFwaVNlbGVjdFF1ZXJ5LldoZXJlQ2xhdXNlKTtcclxuICAgIHBheWxvYWQuU29ydCA9IHRoaXMudHJhbnNmb3JtU29ydChhcGlTZWxlY3RRdWVyeS5Tb3J0KTtcclxuXHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZW50aXR5IG5hbWUgZnJvbSBRdWVyeU9iamVjdElEXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRFbnRpdHlOYW1lKHF1ZXJ5T2JqZWN0SWQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhcHBPYmplY3QgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUocXVlcnlPYmplY3RJZCk7XHJcbiAgICByZXR1cm4gYXBwT2JqZWN0Py5PYmplY3ROYW1lIHx8IHF1ZXJ5T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1zIEpvaW5zIHRvIGluY2x1ZGVzIGFycmF5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1Kb2luc1RvSW5jbHVkZXMoam9pbnM/OiBhbnlbXSk6IGFueVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICgham9pbnMgfHwgam9pbnMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIHJldHVybiBqb2lucy5tYXAoKGpvaW46IGFueSkgPT5cclxuICAgICAgam9pbi5SZWxhdGlvbnNoaXA/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0IHx8IGpvaW5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1zIFRvcENvdW50IHRvIFBhZ2VyIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdHJhbnNmb3JtUGFnZXIodG9wQ291bnQ/OiBudW1iZXIpOiBDUlVEUGFnZXIgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCF0b3BDb3VudCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBwYWdlciA9IG5ldyBDUlVEUGFnZXIoKTtcclxuICAgIHBhZ2VyLnBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgcGFnZXIucGFnZVNpemUgPSB0b3BDb3VudDtcclxuICAgIHBhZ2VyLnJldHVyblRvdGFsQ291bnQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHBhZ2VyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyBXaGVyZUNsYXVzZSB0byBuZXcgZm9ybWF0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1XaGVyZUNsYXVzZSh3aGVyZUNsYXVzZT86IGFueSk6IENSVURXaGVyZUNsYXVzZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXdoZXJlQ2xhdXNlPy5GaWx0ZXJzIHx8IHdoZXJlQ2xhdXNlLkZpbHRlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGNydWRXaGVyZUNsYXVzZSA9IG5ldyBDUlVEV2hlcmVDbGF1c2UoKTtcclxuICAgIGNydWRXaGVyZUNsYXVzZS5maWx0ZXJzID0gd2hlcmVDbGF1c2UuRmlsdGVycy5tYXAoKGZpbHRlcjogYW55KSA9PlxyXG4gICAgICB0aGlzLnRyYW5zZm9ybUZpbHRlcihmaWx0ZXIpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGNydWRXaGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybXMgYSBzaW5nbGUgZmlsdGVyIHRvIG5ldyBmb3JtYXRcclxuICAgKi9cclxuICBwcml2YXRlIHRyYW5zZm9ybUZpbHRlcihmaWx0ZXI6IGFueSk6IENSVURGaWx0ZXIge1xyXG4gICAgY29uc3QgY3J1ZEZpbHRlciA9IG5ldyBDUlVERmlsdGVyKCk7XHJcbiAgICBjcnVkRmlsdGVyLmZpZWxkTmFtZSA9IGZpbHRlci5Mb29rVXBEZXRhaWwgfHwgZmlsdGVyLkZpZWxkTmFtZTtcclxuICAgIGNydWRGaWx0ZXIub3BlcmF0b3IgPSBmaWx0ZXIuUmVsYXRpb25hbE9wZXJhdG9yO1xyXG4gICAgY3J1ZEZpbHRlci52YWx1ZSA9IGZpbHRlci5WYWx1ZTtcclxuICAgIGNydWRGaWx0ZXIudmFsdWVUeXBlID0gZmlsdGVyLlZhbHVlVHlwZTtcclxuICAgIGNydWRGaWx0ZXIuY29uanVuY3Rpb24gPSBmaWx0ZXIuQ29uanVjdGlvbkNsYXVzZTtcclxuICAgIGNydWRGaWx0ZXIuZ3JvdXBJZCA9IGZpbHRlci5Hcm91cElEO1xyXG4gICAgY3J1ZEZpbHRlci5zZXF1ZW5jZSA9IGZpbHRlci5TZXF1ZW5jZTtcclxuICAgIHJldHVybiBjcnVkRmlsdGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyBTb3J0IGFycmF5IHRvIG5ldyBmb3JtYXRcclxuICAgKi9cclxuICBwcml2YXRlIHRyYW5zZm9ybVNvcnQoc29ydHM/OiBhbnlbXSk6IENSVURTb3J0W10gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFzb3J0cyB8fCBzb3J0cy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgcmV0dXJuIHNvcnRzLm1hcCgoc29ydDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNydWRTb3J0ID0gbmV3IENSVURTb3J0KCk7XHJcbiAgICAgIGNydWRTb3J0LkZpZWxkTmFtZSA9IHNvcnQuRmllbGRJRDtcclxuICAgICAgY3J1ZFNvcnQuRGlyZWN0aW9uID0gc29ydC5Tb3J0U2VxdWVuY2U7XHJcbiAgICAgIHJldHVybiBjcnVkU29ydDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWxlY3QgcXVlcnkgYnkgaXRzIElELCB1c2luZyB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWxlY3RRdWVyeUlkIC0gVGhlIElEIG9mIHRoZSBzZWxlY3QgcXVlcnkgdG8gYmUgZXhlY3V0ZWQuXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbGVjdCBxdWVyeSBleGVjdXRpb24uXHJcbiAgICogQHRocm93cyBBbiBlcnJvciBpZiB0aGUgQVBJIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIG5vdCAnMjAwJy5cclxuICAgKi9cclxuICBleGVjdXRlU2VsZWN0UXVlcnlCeUlkKHNlbGVjdFF1ZXJ5SWQ6IHN0cmluZywgcGFyYW1ldGVycz86IGFueSwgYWRkaXRpb25hbENvbmZpZz86IGFueSwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVSQVdEU1FXaXRoTmFtZSh7XHJcbiAgICAgIEFwcE9iamVjdE5hbWU6IEFwcE9iamVjdHNDb25zdGFudHMuVEFCRF9RdWVyaWVzLFxyXG4gICAgICBEU1FOYW1lOiBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cy5EZXRhaWxfVEFCRF9RdWVyaWVzLFxyXG4gICAgICBSZXF0b2tlbnM6IHtcclxuICAgICAgICBJRDogc2VsZWN0UXVlcnlJZCxcclxuICAgICAgfSxcclxuICAgIH0sIGhlYWRlcnMpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLklzU3VjY2VzcyAmJiByZXMuUmVzdWx0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgQ29uZmlndXJhdGlvbiA9IEpTT04ucGFyc2UocmVzLlJlc3VsdFswXS5Db25maWd1cmF0aW9uIHx8ICd7fScpO1xyXG4gICAgICAgICAgaWYgKENvbmZpZ3VyYXRpb24uV2hlcmVDbGF1c2U/LmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvbi5XaGVyZUNsYXVzZS5maWx0ZXJzID0gdGhpcy5yZW1vdmVXaGVyZUNsYXVzZUZvckVtcHR5UGFyYW1zKENvbmZpZ3VyYXRpb24uV2hlcmVDbGF1c2UuZmlsdGVycywgcGFyYW1ldGVycyB8fCB7fSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RFeGVjdXRvcihDb25maWd1cmF0aW9uLCBwYXJhbWV0ZXJzLCBhZGRpdGlvbmFsQ29uZmlnLCBoZWFkZXJzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5NZXNzYWdlIHx8ICdGYWlsZWQgdG8gZmV0Y2ggc2VsZWN0IHF1ZXJ5IGNvbmZpZ3VyYXRpb24uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVtb3ZlV2hlcmVDbGF1c2VGb3JFbXB0eVBhcmFtcyhmaWx0ZXJzOiBhbnlbXSwgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueVtdIHtcclxuICAgIHJldHVybiBmaWx0ZXJzLmZpbHRlcigoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGZpbHRlci5WYWx1ZVR5cGUgPT09IEZpbHRlclZhbHVlVHlwZS5QYXJhbWV0ZXIpIHtcclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gZmlsdGVyLlZhbHVlO1xyXG4gICAgICAgIGlmIChwYXJhbWV0ZXJOYW1lIGluIHBhcmFtZXRlcnMgJiYgcGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1lXSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVtb3ZlIGZpbHRlclxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1ldGVycyB8fCB7fSkubGVuZ3RoID09PSAwICYmIGZpbHRlci5WYWx1ZVR5cGUgPT09IEZpbHRlclZhbHVlVHlwZS5QYXJhbWV0ZXIpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlbW92ZSBmaWx0ZXJcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCBmaWx0ZXJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogR2V0IFJlc291cmNlIExhbmd1YWdlIEJ5IExhbmd1YWdlIENvZGVcclxuICAvLyAgKiBAcGFyYW0gbGFuZ3VhZ2VDb2RlIC0gTGFuZ3VhZ2UgQ29kZVxyXG4gIC8vICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gIC8vICAqL1xyXG4gIC8vIGdldFJlc291cmNlTGFuZ3VhZ2VCeUxhbmd1YWdlQ29kZShsYW5ndWFnZUNvZGU6IG51bWJlcik6IGFueSB7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gIC8vICAgaWYgKGhlYWRlcnMpIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gIC8vICAgICAgIGAke0FQSS5sYW5ndWFnZVJlc291cmNlfWAsXHJcbiAgLy8gICAgICAgeyBMYW5ndWFnZUNvZGU6IGxhbmd1YWdlQ29kZSB9LFxyXG4gIC8vICAgICAgIGhlYWRlcnNcclxuICAvLyAgICAgKTtcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBudWxsO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFNlYXJjaCBEYXRhIGZyb20gS2liYW5hIG1pY3Jvc2VydmljZVxyXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSAtIFNlYXJjaCBRdWVyeSBzdHJpbmdcclxuICAgKiBAcGFyYW0gbGltaXQgLSBMaW1pdCBvZiBzZWFyY2ggcmVzdWx0c1xyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFNlYXJjaERhdGEocGF5bG9hZDogU2VhcmNoRGF0YVBheWxvYWQsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldEZyb21TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5raWJhbmFTZXJ2aWNlLFxyXG4gICAgICBgJHtBUEkuZ2xvYmFsU2VhcmNofT9zZWFyY2hRdWVyeT0ke3BheWxvYWQuc2VhcmNoUXVlcnl9JmxpbWl0PSR7cGF5bG9hZC5saW1pdH0ke3BheWxvYWQ/LmFwcE9iamVjdElkID8gYCZhcHBPYmplY3RJZD0ke3BheWxvYWQuYXBwT2JqZWN0SWR9YCA6ICcnfWAsXHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbWV0aG9kLCBVUkwsIGhlYWRlcnMsIGFuZCBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZ1bGxVcmwgLVRoZSBmdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCBjb250YWluaW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgSFRUUCBtZXRob2QgdG8gYmUgdXNlZCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cclxuICAgKiBAcGFyYW0gaGVhZGVycyAtIFRoZSBoZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBjb250ZW50IGZvciBtZXRob2RzIGxpa2UgUE9TVCBhbmQgUFVULlxyXG4gICAqIEByZXR1cm5zIFRoZSBBUEkgcmVzcG9uc2UgY29ycmVzcG9uZGluZyB0byB0aGUgcmVxdWVzdC5cclxuICAgKi9cclxuICBleGVjdXRlSHR0cFJlcXVlc3QocGF5bG9hZDogSHR0cEV4ZWN1dGVSZXF1ZXN0UGF5bG9hZCk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0ge1xyXG4gICAgICAuLi4ocGF5bG9hZD8uaGVhZGVycyB8fCB7fSksXHJcbiAgICAgICdYLVNraXAtSW50ZXJjZXB0b3InOiAndHJ1ZScsXHJcbiAgICAgICdYLVNraXAtQXV0aCc6ICd0cnVlJyxcclxuICAgICAgJ1gtVHJhY2stQVBJLURldGFpbHMnOiAndHJ1ZScsXHJcbiAgICB9O1xyXG4gICAgaWYgKHBheWxvYWQubWV0aG9kID09ICdHRVQnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0QnlVcmwocGF5bG9hZC5mdWxsVXJsLCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHBheWxvYWQubWV0aG9kID09ICdQT1NUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCeVVybChwYXlsb2FkLmZ1bGxVcmwsIHBheWxvYWQuYm9keSwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChwYXlsb2FkLm1ldGhvZCA9PSAnUFVUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnB1dEJ5VXJsKHBheWxvYWQuZnVsbFVybCwgcGF5bG9hZC5ib2R5LCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHBheWxvYWQubWV0aG9kID09ICdERUxFVEUnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlQnlVcmwocGF5bG9hZC5mdWxsVXJsLCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgYW4gSFRUUCBSZXF1ZXN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBEYXRhU291cmNlUXVlcnkgbmFtZVxyXG4gICAqIEBwYXJhbSBRdWVyeU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgRGF0YVNvdXJjZVF1ZXJ5XHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZ2VuZXJhdGVkIEhUVFAgcmVxdWVzdFxyXG4gICAqL1xyXG4gIGdlbmVyYXRlSHR0cFJlcXVlc3QoZGF0YVNvdXJjZVF1ZXJ5TmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICBgJHtBUEkuR2VuZXJhdGVIdHRwUmVxdWVzdH0/ZHNxTmFtZT0ke2RhdGFTb3VyY2VRdWVyeU5hbWV9YCxcclxuICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabGetService, decorators: [{
185
+ type: Injectable,
186
+ args: [{ providedIn: 'root' }]
187
+ }] });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQWEsaUJBQWlCLEVBQWtCLE1BQU0sMkJBQTJCLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsMEJBQTBCLEdBQzNCLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJN0MsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBeU0xRDtJQXZNQzs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUMs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TVUsYUFBYTttSEFBYixhQUFhLGNBREEsTUFBTTs7NEZBQ25CLGFBQWE7a0JBRHpCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRFNRSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IHBhcnNlU3RvcmVkQ29uZmlndXJhdGlvblRvU2VsZWN0UXVlcnkgfSBmcm9tICcuLi91dGlscy9zZWxlY3QtcXVlcnkudXRpbCc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEFQSUZpbHRlciwgQVBJRmlsdGVyQ3JpdGVyaWEsIEFQSVNlbGVjdFF1ZXJ5IH0gZnJvbSAnLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IEZpbHRlclZhbHVlVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBBcHBPYmplY3RzQ29uc3RhbnRzLFxyXG4gIERhdGFTb3VyY2VRdWVyaWVzQ29uc3RhbnRzLFxyXG59IGZyb20gJy4uL2NvbnN0YW50cy9hcHAtb2JqZWN0LWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgSHR0cEV4ZWN1dGVSZXF1ZXN0UGF5bG9hZCwgSW1wb3J0RGF0YVBheWxvYWQsIFJjb3JkSGlzdG9yeVBheWxvYWQsIFNlYXJjaERhdGFQYXlsb2FkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJHZXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkc3FIZWxwZXIgPSBpbmplY3QoRFNRSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBSQVcgRFNRIHdpdGggTmFtZVxyXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IGNvbnRhaW5pbmcgQXBwT2JqZWN0TmFtZSBhbmQgRFNRTmFtZVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGV4ZWN1dGVSQVdEU1FXaXRoTmFtZShkYXRhOiBhbnksIGhlYWRlcnM/OiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgIGAke0FQSS5RdWVyaWVzRXhlY3V0ZX0vJHtkYXRhLkFwcE9iamVjdE5hbWV9LyR7ZGF0YS5EU1FOYW1lfWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIGhlYWRlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBSZWNvcmRcclxuICAgKi9cclxuICBnZXRSZWNvcmQocGFyYW1zOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KGAke0FQSS5nZXRyZWNvcmR9YCwgcGFyYW1zLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IEhpc3RvcnkgZnJvbSBLaWJhbmEgbWljcm9zZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeShwYXlsb2FkOiBSY29yZEhpc3RvcnlQYXlsb2FkLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgYXBwT2JqZWN0TmFtZSA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShwYXlsb2FkLmFwcE9iamVjdElkKT8uT2JqZWN0TmFtZTtcclxuICAgIGhlYWRlcnMgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5raWJhbmFTZXJ2aWNlLFxyXG4gICAgICBBUEkuYXVkaXRHZXRIaXN0b3J5LFxyXG4gICAgICB7XHJcbiAgICAgICAgUmVjb3JkSWRzOiBwYXlsb2FkLnJlY29yZElkcyxcclxuICAgICAgICBlbnRpdHlOYW1lOiBhcHBPYmplY3ROYW1lXHJcbiAgICAgIH0sXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvcnQgZGF0YSB2aWEgcmVwb3J0IG1pY3Jvc2VydmljZVxyXG4gICAqL1xyXG4gIGltcG9ydERhdGEoZGF0YTogSW1wb3J0RGF0YVBheWxvYWQpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShBUElTZXJ2aWNlcy5yZXBvcnRTZXJ2aWNlLCBBUEkuaW1wb3J0RGF0YSwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHNlbGVjdCBxdWVyeSB3aXRoIG9wdGlvbmFsIHBhcmFtZXRlcnMuXHJcbiAgICogU2VuZHMgdGhlIEFQSVNlbGVjdFF1ZXJ5IHBheWxvYWQgZGlyZWN0bHkgdG8gdGhlIENSVUQgc2VsZWN0IGVuZHBvaW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgLSBBUElTZWxlY3RRdWVyeSBwYXlsb2FkIChsb3dlcmNhc2Uga2V5cywgZnVsbCBuZXcgY29udHJhY3Qgc2hhcGUpXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCByZXF0b2tlbnMgdG8gc3Vic3RpdHV0ZSBpbnRvIFBhcmFtZXRlci10eXBlZCBmaWx0ZXIgdmFsdWVzXHJcbiAgICogQHBhcmFtIGFkZGl0aW9uYWxDb25maWcgLSBPcHRpb25hbCBwYXJ0aWFsIEFQSVNlbGVjdFF1ZXJ5IHRvIG1lcmdlIG92ZXIgdGhlIGlucHV0XHJcbiAgICovXHJcbiAgc2VsZWN0RXhlY3V0b3IoZGF0YTogQVBJU2VsZWN0UXVlcnksIHBhcmFtZXRlcnM/OiBhbnksIGFkZGl0aW9uYWxDb25maWc/OiBhbnksIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBwcmVwYXJlZERhdGEgPSB0aGlzLnByZXBhcmVTZWxlY3RRdWVyeURhdGEoZGF0YSwgcGFyYW1ldGVycywgYWRkaXRpb25hbENvbmZpZyk7XHJcbiAgICBoZWFkZXJzID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgIEFQSS5RdWVyaWVzU2VsZWN0LFxyXG4gICAgICBwcmVwYXJlZERhdGEsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzdGl0dXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGludG8gUGFyYW1ldGVyLXR5cGVkIGZpbHRlciB2YWx1ZXMsIHRoZW4gbWVyZ2VzIGFueSBhZGRpdGlvbmFsIGNvbmZpZy5cclxuICAgKiBNdXRhdGVzIGFuZCByZXR1cm5zIHRoZSBpbnB1dC5cclxuICAgKi9cclxuICBwcml2YXRlIHByZXBhcmVTZWxlY3RRdWVyeURhdGEoZGF0YTogQVBJU2VsZWN0UXVlcnksIHBhcmFtZXRlcnM/OiBhbnksIGFkZGl0aW9uYWxDb25maWc/OiBhbnkpOiBBUElTZWxlY3RRdWVyeSB7XHJcbiAgICBpZiAocGFyYW1ldGVycyAmJiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGgpIHtcclxuICAgICAgZGF0YS53aGVyZUNsYXVzZSA9IGRhdGEud2hlcmVDbGF1c2UgPz8gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICAgIGRhdGEud2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSBkYXRhLndoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljIHx8ICcxJztcclxuICAgICAgZGF0YS53aGVyZUNsYXVzZS5maWx0ZXJzID0gZGF0YS53aGVyZUNsYXVzZS5maWx0ZXJzIHx8IFtdO1xyXG5cclxuICAgICAgZGF0YS53aGVyZUNsYXVzZS5maWx0ZXJzLmZvckVhY2goKGZpbHRlcjogQVBJRmlsdGVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbHRlci52YWx1ZVR5cGUgPT09IEZpbHRlclZhbHVlVHlwZS5QYXJhbWV0ZXIpIHtcclxuICAgICAgICAgIC8vIFRlbXBsYXRlIHN1YnN0aXR1dGlvbjogcmVwbGFjZSB7e2tleX19IHdpdGggcGFyYW1ldGVyc1trZXldXHJcbiAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLnZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XHJcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGZpbHRlci52YWx1ZS5yZXBsYWNlKFxyXG4gICAgICAgICAgICAgIC9cXHtcXHsoW159XSspXFx9XFx9L2csXHJcbiAgICAgICAgICAgICAgKF9tYXRjaDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdiA9IHBhcmFtZXRlcnNba2V5LnRyaW0oKV07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHYpIDogJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gQmFyZS1wYXJhbWV0ZXIgc3Vic3RpdHV0aW9uOiBmaWx0ZXIudmFsdWUgaXMgaXRzZWxmIGEgcGFyYW1ldGVyIGtleVxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWx0ZXIudmFsdWUgPT09ICdzdHJpbmcnICYmIHBhcmFtZXRlcnNbZmlsdGVyLnZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IHBhcmFtZXRlcnNbZmlsdGVyLnZhbHVlXTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyc1tmaWx0ZXIuZmllbGROYW1lXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IHBhcmFtZXRlcnNbZmlsdGVyLmZpZWxkTmFtZV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmaWx0ZXIudmFsdWVUeXBlID0gRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWRkaXRpb25hbENvbmZpZyAmJiB0eXBlb2YgYWRkaXRpb25hbENvbmZpZyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4uYWRkaXRpb25hbENvbmZpZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWxlY3QgcXVlcnkgYnkgaXRzIHN0b3JlZCBEU1EgaWQuXHJcbiAgICogRmV0Y2hlcyB0aGUgc3RvcmVkIERTUSByb3csIHBhcnNlcyBpdHMgQ29uZmlndXJhdGlvbiBKU09OIChQYXNjYWxDYXNlIHN0b3JhZ2Ugc2hhcGUpLFxyXG4gICAqIGNvbnZlcnRzIHRvIGxvd2VyY2FzZSBBUElTZWxlY3RRdWVyeSwgdGhlbiBpbnZva2VzIHNlbGVjdEV4ZWN1dG9yLlxyXG4gICAqL1xyXG4gIGV4ZWN1dGVTZWxlY3RRdWVyeUJ5SWQoc2VsZWN0UXVlcnlJZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogYW55LCBhZGRpdGlvbmFsQ29uZmlnPzogYW55LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJBV0RTUVdpdGhOYW1lKHtcclxuICAgICAgQXBwT2JqZWN0TmFtZTogQXBwT2JqZWN0c0NvbnN0YW50cy5UQUJEX1F1ZXJpZXMsXHJcbiAgICAgIERTUU5hbWU6IERhdGFTb3VyY2VRdWVyaWVzQ29uc3RhbnRzLkRldGFpbF9UQUJEX1F1ZXJpZXMsXHJcbiAgICAgIFJlcXRva2VuczogeyBJRDogc2VsZWN0UXVlcnlJZCB9LFxyXG4gICAgfSwgaGVhZGVycykucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuSXNTdWNjZXNzICYmIHJlcy5SZXN1bHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBzdG9yZWRDb25maWcgPSBKU09OLnBhcnNlKHJlcy5SZXN1bHRbMF0uQ29uZmlndXJhdGlvbiB8fCAne30nKTtcclxuICAgICAgICAgIGNvbnN0IGFwaVNlbGVjdFF1ZXJ5ID0gcGFyc2VTdG9yZWRDb25maWd1cmF0aW9uVG9TZWxlY3RRdWVyeShzdG9yZWRDb25maWcpO1xyXG4gICAgICAgICAgaWYgKGFwaVNlbGVjdFF1ZXJ5LndoZXJlQ2xhdXNlPy5maWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIGFwaVNlbGVjdFF1ZXJ5LndoZXJlQ2xhdXNlLmZpbHRlcnMgPSB0aGlzLnJlbW92ZUZpbHRlcnNXaXRoRW1wdHlQYXJhbXMoYXBpU2VsZWN0UXVlcnkud2hlcmVDbGF1c2UuZmlsdGVycywgcGFyYW1ldGVycyB8fCB7fSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RFeGVjdXRvcihhcGlTZWxlY3RRdWVyeSwgcGFyYW1ldGVycywgYWRkaXRpb25hbENvbmZpZywgaGVhZGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuTWVzc2FnZSB8fCAnRmFpbGVkIHRvIGZldGNoIHNlbGVjdCBxdWVyeSBjb25maWd1cmF0aW9uLicpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgUGFyYW1ldGVyLXR5cGVkIGZpbHRlcnMgd2hvc2UgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3IgZW1wdHkuXHJcbiAgICogSW50ZXJuYWwgaGVscGVyIHVzZWQgb25seSBieSBleGVjdXRlU2VsZWN0UXVlcnlCeUlkLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlRmlsdGVyc1dpdGhFbXB0eVBhcmFtcyhmaWx0ZXJzOiBBUElGaWx0ZXJbXSwgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IEFQSUZpbHRlcltdIHtcclxuICAgIHJldHVybiBmaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiB7XHJcbiAgICAgIGlmIChmaWx0ZXIudmFsdWVUeXBlID09PSBGaWx0ZXJWYWx1ZVR5cGUuUGFyYW1ldGVyKSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyTmFtZSA9IGZpbHRlci52YWx1ZTtcclxuICAgICAgICBpZiAodHlwZW9mIHBhcmFtZXRlck5hbWUgPT09ICdzdHJpbmcnICYmIHBhcmFtZXRlck5hbWUgaW4gcGFyYW1ldGVycyAmJiBwYXJhbWV0ZXJzW3BhcmFtZXRlck5hbWVdID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1ldGVycyB8fCB7fSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgU2VhcmNoIERhdGEgZnJvbSBLaWJhbmEgbWljcm9zZXJ2aWNlXHJcbiAgICovXHJcbiAgZ2V0U2VhcmNoRGF0YShwYXlsb2FkOiBTZWFyY2hEYXRhUGF5bG9hZCwgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0RnJvbVNlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmtpYmFuYVNlcnZpY2UsXHJcbiAgICAgIGAke0FQSS5nbG9iYWxTZWFyY2h9P3NlYXJjaFF1ZXJ5PSR7cGF5bG9hZC5zZWFyY2hRdWVyeX0mbGltaXQ9JHtwYXlsb2FkLmxpbWl0fSR7cGF5bG9hZD8uYXBwT2JqZWN0SWQgPyBgJmFwcE9iamVjdElkPSR7cGF5bG9hZC5hcHBPYmplY3RJZH1gIDogJyd9YCxcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYW4gSFRUUCByZXF1ZXN0IHdpdGggdGhlIHNwZWNpZmllZCBtZXRob2QsIFVSTCwgaGVhZGVycywgYW5kIGJvZHkuXHJcbiAgICovXHJcbiAgZXhlY3V0ZUh0dHBSZXF1ZXN0KHBheWxvYWQ6IEh0dHBFeGVjdXRlUmVxdWVzdFBheWxvYWQpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHtcclxuICAgICAgLi4uKHBheWxvYWQ/LmhlYWRlcnMgfHwge30pLFxyXG4gICAgICAnWC1Ta2lwLUludGVyY2VwdG9yJzogJ3RydWUnLFxyXG4gICAgICAnWC1Ta2lwLUF1dGgnOiAndHJ1ZScsXHJcbiAgICAgICdYLVRyYWNrLUFQSS1EZXRhaWxzJzogJ3RydWUnLFxyXG4gICAgfTtcclxuICAgIGlmIChwYXlsb2FkLm1ldGhvZCA9PSAnR0VUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldEJ5VXJsKHBheWxvYWQuZnVsbFVybCwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChwYXlsb2FkLm1ldGhvZCA9PSAnUE9TVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QnlVcmwocGF5bG9hZC5mdWxsVXJsLCBwYXlsb2FkLmJvZHksIHsgaGVhZGVycyB9KTtcclxuICAgIH0gZWxzZSBpZiAocGF5bG9hZC5tZXRob2QgPT0gJ1BVVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wdXRCeVVybChwYXlsb2FkLmZ1bGxVcmwsIHBheWxvYWQuYm9keSwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChwYXlsb2FkLm1ldGhvZCA9PSAnREVMRVRFJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUJ5VXJsKHBheWxvYWQuZnVsbFVybCwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGFuIEhUVFAgUmVxdWVzdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgRGF0YVNvdXJjZVF1ZXJ5IG5hbWUuXHJcbiAgICovXHJcbiAgZ2VuZXJhdGVIdHRwUmVxdWVzdChkYXRhU291cmNlUXVlcnlOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgIGAke0FQSS5HZW5lcmF0ZUh0dHBSZXF1ZXN0fT9kc3FOYW1lPSR7ZGF0YVNvdXJjZVF1ZXJ5TmFtZX1gLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -5,7 +5,7 @@ import { switchMap, map, catchError } from 'rxjs/operators';
5
5
  import { ScreenHelper } from '../helpers/screen/screen.helpers';
6
6
  import { MetadataHelper } from '../helpers/common/meta-data.helpers';
7
7
  import { syncAppObjectFields } from '../utils/tab-app.util';
8
- import { getPrimaryKeyFields, removeMultiplePrimaryKey, removePrimaryKey, getHeaders } from '../utils/req-res.util';
8
+ import { removeMultiplePrimaryKey, removePrimaryKey, getHeaders } from '../utils/req-res.util';
9
9
  import { removeBlankValue, createDynamicData } from '../utils/json.util';
10
10
  import { ApiService } from '../../core/http-client/api.service';
11
11
  import { SignalRService } from '../../core/service/signalr/signalr.service';
@@ -39,17 +39,16 @@ export class TabInsertService {
39
39
  insertByObjectId(objectId, data, headers) {
40
40
  // Get AppObject metadata
41
41
  const appObjectModel = this.metadataHelper.getAppObjectByIdOrName(objectId);
42
- const appObject = appObjectModel?.toJSON();
43
42
  if (!appObjectModel?.ID) {
44
43
  return throwError(() => new Error(`AppObject not found: ${objectId}`));
45
44
  }
46
45
  // Get entity name (table name)
47
46
  const entityName = appObjectModel.SystemDBTableName;
48
47
  // Sync and filter data
49
- syncAppObjectFields(data.data, appObject);
48
+ syncAppObjectFields(data.data, appObjectModel);
50
49
  // Remove primary keys
51
- const PrimaryKeyFields = getPrimaryKeyFields(appObject);
52
- if (PrimaryKeyFields && PrimaryKeyFields.length === 1) {
50
+ const PrimaryKeyFields = appObjectModel?.findFields((field) => field.IsPrimaryKey);
51
+ if (PrimaryKeyFields && PrimaryKeyFields?.length === 1) {
53
52
  removePrimaryKey(data.data, PrimaryKeyFields[0]?.FieldName);
54
53
  }
55
54
  else if (PrimaryKeyFields && PrimaryKeyFields.length > 1) {
@@ -118,11 +117,11 @@ export class TabInsertService {
118
117
  return throwError(() => error);
119
118
  }));
120
119
  }
121
- static { this.ɵfac = function TabInsertService_Factory(t) { return new (t || TabInsertService)(); }; }
122
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabInsertService, factory: TabInsertService.ɵfac, providedIn: 'root' }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabInsertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
121
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabInsertService, providedIn: 'root' }); }
123
122
  }
124
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TabInsertService, [{
125
- type: Injectable,
126
- args: [{ providedIn: 'root' }]
127
- }], null, null); })();
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWluc2VydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWluc2VydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBSzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFB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LEdBQUcsUUFBUTtnQkFDWCxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsZUFBZSxFQUFFLFlBQVksQ0FBQyxlQUFlLElBQUksQ0FBQzthQUNuRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLHFCQUFxQixFQUFFLENBQUM7Z0JBQzVDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUMvQixtSEFBbUgsQ0FDcEgsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO2lGQXJJVSxnQkFBZ0I7dUVBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBREgsTUFBTTs7aUZBQ25CLGdCQUFnQjtjQUQ1QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjcmVlbkhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2NyZWVuL3NjcmVlbi5oZWxwZXJzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IHN5bmNBcHBPYmplY3RGaWVsZHMgfSBmcm9tICcuLi91dGlscy90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QsIEFwcFNjcmVlbiB9IGZyb20gJy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgZ2V0UHJpbWFyeUtleUZpZWxkcywgcmVtb3ZlTXVsdGlwbGVQcmltYXJ5S2V5LCByZW1vdmVQcmltYXJ5S2V5LCBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgcmVtb3ZlQmxhbmtWYWx1ZSwgY3JlYXRlRHluYW1pY0RhdGEgfSBmcm9tICcuLi91dGlscy9qc29uLnV0aWwnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpZ25hbFJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlL3NpZ25hbHIvc2lnbmFsci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJLCBBUElTZXJ2aWNlcyB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJJbnNlcnRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlbkhlbHBlciA9IGluamVjdChTY3JlZW5IZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpZ25hbFJTZXJ2aWNlID0gaW5qZWN0KFNpZ25hbFJTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0cyBkYXRhIGJ5IHNjcmVlbiBJRC5cclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgVGhlIElEIG9mIHRoZSBzY3JlZW4uXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gaW5zZXJ0LlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgd2l0aCB0aGUgaW5zZXJ0IHJlc3VsdC5cclxuICAgKi9cclxuICBpbnNlcnRCeVNjcmVlbklkKHNjcmVlbklkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgc2NyZWVuOiBBcHBTY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgY29uc3Qgc2NyZWVuRGF0YVNvdXJjZSA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShzY3JlZW4uRGF0YVNvdXJjZVF1ZXJ5KTtcclxuICAgIHJldHVybiB0aGlzLmluc2VydEJ5T2JqZWN0SWQoc2NyZWVuRGF0YVNvdXJjZT8uT2JqZWN0SUQgfHwgJycsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IHVzaW5nIC9yZWNvcmRzL2luc2VydCBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAqIEBwYXJhbSBvYmplY3RJZCBUaGUgSUQgb2YgdGhlIG9iamVjdFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGluc2VydFxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggaW5zZXJ0ZWRJZFxyXG4gICAqL1xyXG4gIGluc2VydEJ5T2JqZWN0SWQob2JqZWN0SWQ6IHN0cmluZywgZGF0YTogYW55LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgLy8gR2V0IEFwcE9iamVjdCBtZXRhZGF0YVxyXG4gICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUob2JqZWN0SWQpO1xyXG4gICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3QgPSBhcHBPYmplY3RNb2RlbD8udG9KU09OKCk7XHJcblxyXG4gICAgaWYgKCFhcHBPYmplY3RNb2RlbD8uSUQpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBBcHBPYmplY3Qgbm90IGZvdW5kOiAke29iamVjdElkfWApKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZXQgZW50aXR5IG5hbWUgKHRhYmxlIG5hbWUpXHJcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gYXBwT2JqZWN0TW9kZWwuU3lzdGVtREJUYWJsZU5hbWU7XHJcblxyXG4gICAgLy8gU3luYyBhbmQgZmlsdGVyIGRhdGFcclxuICAgIHN5bmNBcHBPYmplY3RGaWVsZHMoZGF0YS5kYXRhLCBhcHBPYmplY3QpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBwcmltYXJ5IGtleXNcclxuICAgIGNvbnN0IFByaW1hcnlLZXlGaWVsZHMgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICByZW1vdmVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgIH0gZWxzZSBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgcmVtb3ZlTXVsdGlwbGVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVtb3ZlIGJsYW5rIHZhbHVlc1xyXG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0geyAuLi5kYXRhLmRhdGEgfTtcclxuICAgIHJlbW92ZUJsYW5rVmFsdWUoZmlsdGVyZWREYXRhKTtcclxuXHJcbiAgICAvLyBUcmFuc2Zvcm0gdG8gbmV3IEFQSSBmb3JtYXQgdXNpbmcgY3JlYXRlRHluYW1pY0RhdGEgdXRpbGl0eVxyXG4gICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XHJcbiAgICAgIGVudGl0eU5hbWU6IGVudGl0eU5hbWUsXHJcbiAgICAgIGZpZWxkczogY3JlYXRlRHluYW1pY0RhdGEoZmlsdGVyZWREYXRhKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIFBPU1QgdG8gbmV3IGVuZHBvaW50XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLmNydWRTZXJ2aWNlLFxyXG4gICAgICBBUEkucmVjb3Jkc0luc2VydCxcclxuICAgICAgcmVxdWVzdEJvZHksXHJcbiAgICAgIGhlYWRlclxyXG4gICAgKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzcG9uc2U/LklzU3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkluc2VydFNlcnZpY2VdIEluc2VydCBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAxOiBTWU5DIC0gSGFzIGluc2VydGVkSWQgaW1tZWRpYXRlbHlcclxuICAgICAgICBpZiAocmVzcG9uc2U/LlJlc3VsdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgICAgUmVzdWx0OiByZXNwb25zZT8uUmVzdWx0Py5bMF1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAyOiBBU1lOQyAtIEhhcyBjb3JyZWxhdGlvbklkXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jSW5zZXJ0KHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogVW5rbm93biByZXNwb25zZSBmb3JtYXRcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiSW5zZXJ0U2VydmljZV0gSW5zZXJ0IGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGFzeW5jIGluc2VydCAtIHdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIEluaXRpYWwgcmVzcG9uc2Ugd2l0aCBjb3JyZWxhdGlvbklkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGluc2VydGVkSWQgZnJvbSBTaWduYWxSIG5vdGlmaWNhdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlQXN5bmNJbnNlcnQocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgY29ycmVsYXRpb25JZCA9IHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkO1xyXG5cclxuICAgIGlmICghY29ycmVsYXRpb25JZCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdbVGFiSW5zZXJ0U2VydmljZV0gTWlzc2luZyBjb3JyZWxhdGlvbklkIGluIGFzeW5jIHJlc3BvbnNlJyk7XHJcbiAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2FpdCBmb3IgU2lnbmFsUiBub3RpZmljYXRpb24gd2l0aCBtYXRjaGluZyBjb3JyZWxhdGlvbklkXHJcbiAgICByZXR1cm4gdGhpcy5zaWduYWxSU2VydmljZS53YWl0Rm9yT3BlcmF0aW9uKGNvcnJlbGF0aW9uSWQpLnBpcGUoXHJcbiAgICAgIG1hcCgobm90aWZpY2F0aW9uKSA9PiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgb3BlcmF0aW9uIHN1Y2NlZWRlZFxyXG4gICAgICAgIGlmICghbm90aWZpY2F0aW9uLmlzU3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5vdGlmaWNhdGlvbi5lcnJvck1lc3NhZ2UgfHwgJ0luc2VydCBvcGVyYXRpb24gZmFpbGVkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXR1cm4gcmVzcG9uc2Ugd2l0aCBpbnNlcnRlZElkIGZyb20gbm90aWZpY2F0aW9uIChtYXRjaCBvbGQgQVBJIGZvcm1hdClcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgICAgICBSZXN1bHQ6IG5vdGlmaWNhdGlvbi5yZXN1bHQ/LlswXSxcclxuICAgICAgICAgIFJlY29yZEFmZmVjdHRlZDogbm90aWZpY2F0aW9uLmFmZmVjdGVkUmVjb3JkcyB8fCAxXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgPT09ICdPcGVyYXRpb24gdGltZWQgb3V0Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAnSW5zZXJ0IG9wZXJhdGlvbiB0aW1lZCBvdXQuIFRoZSBvcGVyYXRpb24gbWF5IHN0aWxsIGNvbXBsZXRlIGluIHRoZSBiYWNrZ3JvdW5kLiBQbGVhc2UgcmVmcmVzaCB0byBzZWUgdGhlIHJlc3VsdC4nXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn0iXX0=
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabInsertService, decorators: [{
124
+ type: Injectable,
125
+ args: [{ providedIn: 'root' }]
126
+ }] });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWluc2VydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWluc2VydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBSzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLE1BQU0s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WCxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsZUFBZSxFQUFFLFlBQVksQ0FBQyxlQUFlLElBQUksQ0FBQzthQUNuRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLHFCQUFxQixFQUFFLENBQUM7Z0JBQzVDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUMvQixtSEFBbUgsQ0FDcEgsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXBJVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFNjcmVlbkhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvc2NyZWVuL3NjcmVlbi5oZWxwZXJzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IHN5bmNBcHBPYmplY3RGaWVsZHMgfSBmcm9tICcuLi91dGlscy90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyByZW1vdmVNdWx0aXBsZVByaW1hcnlLZXksIHJlbW92ZVByaW1hcnlLZXksIGdldEhlYWRlcnMgfSBmcm9tICcuLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyByZW1vdmVCbGFua1ZhbHVlLCBjcmVhdGVEeW5hbWljRGF0YSB9IGZyb20gJy4uL3V0aWxzL2pzb24udXRpbCc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2lnbmFsUlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2Uvc2lnbmFsci9zaWduYWxyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUEksIEFQSVNlcnZpY2VzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYkluc2VydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuSGVscGVyID0gaW5qZWN0KFNjcmVlbkhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsUlNlcnZpY2UgPSBpbmplY3QoU2lnbmFsUlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuICAvKipcclxuICAgKiBJbnNlcnRzIGRhdGEgYnkgc2NyZWVuIElELlxyXG4gICAqIEBwYXJhbSBzY3JlZW5JZCBUaGUgSUQgb2YgdGhlIHNjcmVlbi5cclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBpbnNlcnQuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB3aXRoIHRoZSBpbnNlcnQgcmVzdWx0LlxyXG4gICAqL1xyXG4gIGluc2VydEJ5U2NyZWVuSWQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBzY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgY29uc3Qgc2NyZWVuRGF0YVNvdXJjZSA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShzY3JlZW4uRGF0YVNvdXJjZVF1ZXJ5KTtcclxuICAgIHJldHVybiB0aGlzLmluc2VydEJ5T2JqZWN0SWQoc2NyZWVuRGF0YVNvdXJjZT8uT2JqZWN0SUQgfHwgJycsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IHVzaW5nIC9yZWNvcmRzL2luc2VydCBlbmRwb2ludCB3aXRoIFNZTkMvQVNZTkMgc3VwcG9ydFxyXG4gICAqIEBwYXJhbSBvYmplY3RJZCBUaGUgSUQgb2YgdGhlIG9iamVjdFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGluc2VydFxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggaW5zZXJ0ZWRJZFxyXG4gICAqL1xyXG4gIGluc2VydEJ5T2JqZWN0SWQob2JqZWN0SWQ6IHN0cmluZywgZGF0YTogYW55LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgLy8gR2V0IEFwcE9iamVjdCBtZXRhZGF0YVxyXG4gICAgY29uc3QgYXBwT2JqZWN0TW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUob2JqZWN0SWQpO1xyXG5cclxuICAgIGlmICghYXBwT2JqZWN0TW9kZWw/LklEKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQXBwT2JqZWN0IG5vdCBmb3VuZDogJHtvYmplY3RJZH1gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gR2V0IGVudGl0eSBuYW1lICh0YWJsZSBuYW1lKVxyXG4gICAgY29uc3QgZW50aXR5TmFtZSA9IGFwcE9iamVjdE1vZGVsLlN5c3RlbURCVGFibGVOYW1lO1xyXG5cclxuICAgIC8vIFN5bmMgYW5kIGZpbHRlciBkYXRhXHJcbiAgICBzeW5jQXBwT2JqZWN0RmllbGRzKGRhdGEuZGF0YSwgYXBwT2JqZWN0TW9kZWwpO1xyXG5cclxuICAgIC8vIFJlbW92ZSBwcmltYXJ5IGtleXNcclxuICAgIGNvbnN0IFByaW1hcnlLZXlGaWVsZHMgPSBhcHBPYmplY3RNb2RlbD8uZmluZEZpZWxkcygoZmllbGQpID0+IGZpZWxkLklzUHJpbWFyeUtleSk7XHJcbiAgICBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzPy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgcmVtb3ZlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICB9IGVsc2UgaWYgKFByaW1hcnlLZXlGaWVsZHMgJiYgUHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbW92ZSBibGFuayB2YWx1ZXNcclxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHsgLi4uZGF0YS5kYXRhIH07XHJcbiAgICByZW1vdmVCbGFua1ZhbHVlKGZpbHRlcmVkRGF0YSk7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIHRvIG5ldyBBUEkgZm9ybWF0IHVzaW5nIGNyZWF0ZUR5bmFtaWNEYXRhIHV0aWxpdHlcclxuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xyXG4gICAgICBlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxyXG4gICAgICBmaWVsZHM6IGNyZWF0ZUR5bmFtaWNEYXRhKGZpbHRlcmVkRGF0YSlcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuXHJcbiAgICAvLyBQT1NUIHRvIG5ldyBlbmRwb2ludFxyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNJbnNlcnQsXHJcbiAgICAgIHJlcXVlc3RCb2R5LFxyXG4gICAgICBoZWFkZXJcclxuICAgICkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlPy5Jc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJJbnNlcnRTZXJ2aWNlXSBJbnNlcnQgZmFpbGVkOicsIHJlc3BvbnNlPy5FcnJvcnMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMTogU1lOQyAtIEhhcyBpbnNlcnRlZElkIGltbWVkaWF0ZWx5XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5SZXN1bHQ/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHtcclxuICAgICAgICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgICAgICAgIFJlc3VsdDogcmVzcG9uc2U/LlJlc3VsdD8uWzBdXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMjogQVNZTkMgLSBIYXMgY29ycmVsYXRpb25JZFxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3luY0luc2VydChyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDM6IFVua25vd24gcmVzcG9uc2UgZm9ybWF0XHJcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RhYkluc2VydFNlcnZpY2VdIEluc2VydCBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBhc3luYyBpbnNlcnQgLSB3YWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvblxyXG4gICAqIEBwYXJhbSByZXNwb25zZSBJbml0aWFsIHJlc3BvbnNlIHdpdGggY29ycmVsYXRpb25JZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBpbnNlcnRlZElkIGZyb20gU2lnbmFsUiBub3RpZmljYXRpb25cclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUFzeW5jSW5zZXJ0KHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSByZXNwb25zZT8uQ29ycmVsYXRpb25JZDtcclxuXHJcbiAgICBpZiAoIWNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1RhYkluc2VydFNlcnZpY2VdIE1pc3NpbmcgY29ycmVsYXRpb25JZCBpbiBhc3luYyByZXNwb25zZScpO1xyXG4gICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uIHdpdGggbWF0Y2hpbmcgY29ycmVsYXRpb25JZFxyXG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsUlNlcnZpY2Uud2FpdEZvck9wZXJhdGlvbihjb3JyZWxhdGlvbklkKS5waXBlKFxyXG4gICAgICBtYXAoKG5vdGlmaWNhdGlvbikgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIG9wZXJhdGlvbiBzdWNjZWVkZWRcclxuICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbi5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub3RpZmljYXRpb24uZXJyb3JNZXNzYWdlIHx8ICdJbnNlcnQgb3BlcmF0aW9uIGZhaWxlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIHJlc3BvbnNlIHdpdGggaW5zZXJ0ZWRJZCBmcm9tIG5vdGlmaWNhdGlvbiAobWF0Y2ggb2xkIEFQSSBmb3JtYXQpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIC4uLnJlc3BvbnNlLFxyXG4gICAgICAgICAgUmVzdWx0OiBub3RpZmljYXRpb24ucmVzdWx0Py5bMF0sXHJcbiAgICAgICAgICBSZWNvcmRBZmZlY3R0ZWQ6IG5vdGlmaWNhdGlvbi5hZmZlY3RlZFJlY29yZHMgfHwgMVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnT3BlcmF0aW9uIHRpbWVkIG91dCcpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgJ0luc2VydCBvcGVyYXRpb24gdGltZWQgb3V0LiBUaGUgb3BlcmF0aW9uIG1heSBzdGlsbCBjb21wbGV0ZSBpbiB0aGUgYmFja2dyb3VuZC4gUGxlYXNlIHJlZnJlc2ggdG8gc2VlIHRoZSByZXN1bHQuJ1xyXG4gICAgICAgICAgKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59Il19
@@ -24,11 +24,11 @@ export class TabReleaseService {
24
24
  const header = getHeaders();
25
25
  return this.apiService.post(`${API.GetDataDifference}`, {}, header);
26
26
  }
27
- static { this.ɵfac = function TabReleaseService_Factory(t) { return new (t || TabReleaseService)(); }; }
28
- static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabReleaseService, factory: TabReleaseService.ɵfac, providedIn: 'root' }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabReleaseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabReleaseService, providedIn: 'root' }); }
29
29
  }
30
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TabReleaseService, [{
31
- type: Injectable,
32
- args: [{ providedIn: 'root' }]
33
- }], null, null); })();
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJlbGVhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1yZWxlYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1qRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FtQmxEO0lBakJDOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDO2tGQW5CVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiUmVsZWFzZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1ldGFkYXRhIEpTT05zIG9mIHR3byByZWxlYXNlcy5cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2VcclxuICAgKi9cclxuICBnZXRNZXRhRGF0YUpzb25EaWZmKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuR2V0UmVsZWFzZUpTT05EaWZmZXJlbmNlfWAsIHt9LCBoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGRhdGEgSlNPTnMgb2YgdHdvIHJlbGVhc2VzLlxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIGdldERhdGFKc29uRGlmZigpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLkdldERhdGFEaWZmZXJlbmNlfWAsIHt9LCBoZWFkZXIpO1xyXG4gIH1cclxufSJdfQ==
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TabReleaseService, decorators: [{
31
+ type: Injectable,
32
+ args: [{ providedIn: 'root' }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJlbGVhc2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1yZWxlYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1qRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0FtQmxEO0lBakJDOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixNQUFNLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RSxDQUFDOytHQW5CVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQURKLE1BQU07OzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiUmVsZWFzZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG1ldGFkYXRhIEpTT05zIG9mIHR3byByZWxlYXNlcy5cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2VcclxuICAgKi9cclxuICBnZXRNZXRhRGF0YUpzb25EaWZmKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuR2V0UmVsZWFzZUpTT05EaWZmZXJlbmNlfWAsIHt9LCBoZWFkZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGRhdGEgSlNPTnMgb2YgdHdvIHJlbGVhc2VzLlxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgdGhlIEFQSSByZXNwb25zZVxyXG4gICAqL1xyXG4gIGdldERhdGFKc29uRGlmZigpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLkdldERhdGFEaWZmZXJlbmNlfWAsIHt9LCBoZWFkZXIpO1xyXG4gIH1cclxufSJdfQ==