@techextensor/tab-core-utility 2.2.193 → 2.2.194

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 (85) hide show
  1. package/esm2022/index.mjs +1 -6
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +22 -38
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +14 -41
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +68 -47
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -84
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +42 -137
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +128 -156
  12. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  13. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +23 -28
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +45 -7
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
  18. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
  19. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
  20. package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
  21. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  22. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
  23. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
  24. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
  25. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
  26. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
  27. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
  28. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
  29. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
  30. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
  31. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
  32. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
  33. package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +11 -36
  34. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -78
  35. package/index.d.ts +0 -5
  36. package/lib/tab-core-utility/app/constants/api-constants.d.ts +18 -25
  37. package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
  38. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  39. package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +8 -14
  40. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +7 -9
  41. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
  42. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
  43. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +8 -50
  44. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
  45. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
  46. package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
  47. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +8 -5
  48. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
  49. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  50. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +51 -7
  51. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
  52. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
  53. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
  54. package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -1
  55. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +6 -56
  56. package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
  57. package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
  58. package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
  59. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  60. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +2 -7
  61. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  62. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  63. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  64. package/lib/tab-core-utility/app/utils/json.util.d.ts +2 -3
  65. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
  66. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
  67. package/lib/tab-core-utility/auth/auth.service.d.ts +0 -6
  68. package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -46
  69. package/package.json +2 -3
  70. package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +0 -79
  71. package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +0 -76
  72. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
  73. package/esm2022/lib/tab-core-utility/app/helpers/transition-response.adapter.mjs +0 -83
  74. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
  75. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -90
  76. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -268
  77. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
  78. package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +0 -32
  79. package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +0 -29
  80. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
  81. package/lib/tab-core-utility/app/helpers/transition-response.adapter.d.ts +0 -30
  82. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -84
  83. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
  84. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -73
  85. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +0 -122
@@ -1,4 +1,3 @@
1
- import { DataSourceQueryFieldType } from '../enums/dsq.enum';
2
1
  import { FilterModel } from './filter.model';
3
2
  import { ParameterModel } from './parameter.model';
4
3
  import { SortModel } from './sort.model';
@@ -11,51 +10,33 @@ export class DataSourceQueryModel {
11
10
  this.cachedParameters = [];
12
11
  this.cachedFilters = [];
13
12
  this.cachedSorts = [];
14
- this.parsedConfiguration = null;
15
- this.ID = raw?.queryId;
16
- this.ObjectID = parentAppObject?.ID;
17
- this.ObjectID_Tosave = raw?.ObjectID_Tosave;
18
- this.QueryName = raw?.queryName;
19
- this.DisplayName = raw?.queryName;
20
- this.parsedConfiguration = this.parseConfiguration(raw?.configurations);
21
- this.FilterLogic = this.parsedConfiguration?.Filters?.FilterLogic ?? null;
22
- }
23
- parseConfiguration(config) {
24
- try {
25
- return typeof config === 'string' ? JSON.parse(config) : (config ?? {});
26
- }
27
- catch {
28
- return {};
29
- }
13
+ this.ID = raw.ID;
14
+ this.ObjectID = raw.ObjectID;
15
+ this.ObjectID_Tosave = raw.ObjectID_Tosave;
16
+ this.QueryName = raw.QueryName;
17
+ this.DisplayName = raw.DisplayName;
18
+ this.FilterLogic = raw.FilterLogic;
30
19
  }
31
20
  /**
32
21
  * Gets the fields for the data source query. The fields are enriched with the corresponding `AppFieldModel` objects.
33
- * Handles both old format (array of objects) and new format (array of field ID strings).
34
22
  * @returns {DataSourceQueries_Fields[]} The array of enriched fields.
35
23
  */
36
24
  fields() {
37
25
  if (!this.enrichedFields?.length) {
38
- const rawFields = this.parsedConfiguration?.SelectedFields;
26
+ const rawFields = this.raw?.Fields;
39
27
  if (rawFields?.length) {
40
- this.enrichedFields = rawFields.map((field, index) => {
41
- // Get the field ID - either from string directly or from object property
42
- const fieldId = field;
28
+ // Enrich the fields by mapping each field to the corresponding `AppFieldModel` object.
29
+ this.enrichedFields = rawFields.map((field) => {
43
30
  let fieldModel;
44
31
  // First try to find the field in the parent object
45
- fieldModel = this.parentAppObject?.field(fieldId);
32
+ fieldModel = this.parentAppObject.field(field.AppFieldID);
46
33
  // If not found and metadataHelper is available, search across all objects
47
34
  if (!fieldModel && this.metadataHelper) {
48
- fieldModel = this.metadataHelper.getFieldByIdOrName(fieldId);
35
+ fieldModel = this.metadataHelper.getFieldByIdOrName(field.AppFieldID);
49
36
  }
50
- // Build the enriched field object
51
- // New format: construct the full object from field model
52
37
  return {
53
- ID: this.ID + '_' + fieldModel?.ID,
54
- AppFieldID: fieldModel?.ID,
55
- SeqNo: index + 1,
56
- FieldType: field.includes('.') ? DataSourceQueryFieldType.LookupField : DataSourceQueryFieldType.EntityField,
57
- FieldDetails: field,
58
- LookupDetails: field,
38
+ ...field,
39
+ // The `Field` property contains the corresponding `AppFieldModel` object.
59
40
  Field: fieldModel
60
41
  };
61
42
  });
@@ -82,9 +63,9 @@ export class DataSourceQueryModel {
82
63
  */
83
64
  parameters() {
84
65
  // Check if parameters have already been cached
85
- if (!this.cachedParameters?.length) {
66
+ if (!this.cachedParameters) {
86
67
  // Map raw parameters to ParameterModel instances and cache them
87
- this.cachedParameters = (this.parsedConfiguration?.Parameters || []).map((p) => new ParameterModel(p));
68
+ this.cachedParameters = (this.raw?.Parameters || []).map((p) => new ParameterModel(p));
88
69
  }
89
70
  return this.cachedParameters;
90
71
  }
@@ -110,9 +91,9 @@ export class DataSourceQueryModel {
110
91
  */
111
92
  filters() {
112
93
  // Check if filters have already been cached
113
- if (!this.cachedFilters?.length) {
94
+ if (!this.cachedFilters) {
114
95
  // Map raw filters to FilterModel instances and cache them
115
- this.cachedFilters = (this.parsedConfiguration?.Filters?.Filters || []).map((f) => new FilterModel(f));
96
+ this.cachedFilters = (this.raw.Filters?.Filters || []).map((f) => new FilterModel(f));
116
97
  }
117
98
  return this.cachedFilters;
118
99
  }
@@ -122,9 +103,9 @@ export class DataSourceQueryModel {
122
103
  */
123
104
  sorts() {
124
105
  // Check if sorts have already been cached
125
- if (!this.cachedSorts?.length) {
106
+ if (!this.cachedSorts) {
126
107
  // Map raw sorts to SortModel instances and cache them
127
- this.cachedSorts = (this.parsedConfiguration?.Sort || []).map((s) => new SortModel(s));
108
+ this.cachedSorts = (this.raw.Sort || []).map((s) => new SortModel(s));
128
109
  }
129
110
  // Return the cached sorts
130
111
  return this.cachedSorts;
@@ -142,26 +123,11 @@ export class DataSourceQueryModel {
142
123
  this.DisplayName?.toLowerCase().includes(searchTerm));
143
124
  }
144
125
  /**
145
- * Converts the DataSourceQueryModel instance to JSON in the old API format (PascalCase).
146
- * This ensures backward compatibility with code expecting the old format.
147
- *
148
- * @returns {any} The data in old API format.
126
+ * Converts the DataSourceQueryModel instance to a JSON representation.
127
+ * @returns {any} The raw data in JSON format.
149
128
  */
150
129
  toJSON() {
151
- return {
152
- ID: this.ID,
153
- ObjectID: this.ObjectID,
154
- ObjectID_Tosave: this.ObjectID_Tosave,
155
- QueryName: this.QueryName,
156
- DisplayName: this.DisplayName,
157
- Fields: this.fields(),
158
- Filters: {
159
- Filters: this.filters().map(f => f.toJSON()),
160
- FilterLogic: this.FilterLogic
161
- },
162
- Sort: this.sorts().map(s => s.toJSON()),
163
- Parameters: this.parameters().map(p => p.toJSON())
164
- };
130
+ return this.raw;
165
131
  }
166
132
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0IsRUFDaEMsY0FBOEI7UUFGckIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVGhDLG1CQUFjLEdBQStCLEVBQUUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFDOUIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBT3RDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsZUFBZSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDbEMs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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VRdWVyeUZpZWxkVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IEFwcE9iamVjdE1vZGVsIH0gZnJvbSAnLi9hcHAtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzJztcclxuaW1wb3J0IHsgRmlsdGVyTW9kZWwgfSBmcm9tICcuL2ZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFBhcmFtZXRlck1vZGVsIH0gZnJvbSAnLi9wYXJhbWV0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0TW9kZWwgfSBmcm9tICcuL3NvcnQubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VRdWVyeU1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IE9iamVjdElEOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgT2JqZWN0SURfVG9zYXZlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgUXVlcnlOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRGlzcGxheU5hbWU6IHN0cmluZztcclxuICByZWFkb25seSBGaWx0ZXJMb2dpYzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBlbnJpY2hlZEZpZWxkczogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZFBhcmFtZXRlcnM6IFBhcmFtZXRlck1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZEZpbHRlcnM6IEZpbHRlck1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZFNvcnRzOiBTb3J0TW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgcGFyc2VkQ29uZmlndXJhdGlvbjogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxyXG4gICAgcmVhZG9ubHkgcGFyZW50QXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCxcclxuICAgIHByaXZhdGUgbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLklEID0gcmF3Py5xdWVyeUlkO1xyXG4gICAgdGhpcy5PYmplY3RJRCA9IHBhcmVudEFwcE9iamVjdD8uSUQ7XHJcbiAgICB0aGlzLk9iamVjdElEX1Rvc2F2ZSA9IHJhdz8uT2JqZWN0SURfVG9zYXZlO1xyXG4gICAgdGhpcy5RdWVyeU5hbWUgPSByYXc/LnF1ZXJ5TmFtZTtcclxuICAgIHRoaXMuRGlzcGxheU5hbWUgPSByYXc/LnF1ZXJ5TmFtZTtcclxuICAgIHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbiA9IHRoaXMucGFyc2VDb25maWd1cmF0aW9uKHJhdz8uY29uZmlndXJhdGlvbnMpO1xyXG4gICAgdGhpcy5GaWx0ZXJMb2dpYyA9IHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbj8uRmlsdGVycz8uRmlsdGVyTG9naWMgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDb25maWd1cmF0aW9uKGNvbmZpZzogYW55KTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29uZmlnKSA6IChjb25maWcgPz8ge30pO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LiBUaGUgZmllbGRzIGFyZSBlbnJpY2hlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGBBcHBGaWVsZE1vZGVsYCBvYmplY3RzLlxyXG4gICAqIEhhbmRsZXMgYm90aCBvbGQgZm9ybWF0IChhcnJheSBvZiBvYmplY3RzKSBhbmQgbmV3IGZvcm1hdCAoYXJyYXkgb2YgZmllbGQgSUQgc3RyaW5ncykuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZW5yaWNoZWQgZmllbGRzLlxyXG4gICAqL1xyXG4gIGZpZWxkcygpOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICBpZiAoIXRoaXMuZW5yaWNoZWRGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnBhcnNlZENvbmZpZ3VyYXRpb24/LlNlbGVjdGVkRmllbGRzO1xyXG4gICAgICBpZiAocmF3RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgLy8gR2V0IHRoZSBmaWVsZCBJRCAtIGVpdGhlciBmcm9tIHN0cmluZyBkaXJlY3RseSBvciBmcm9tIG9iamVjdCBwcm9wZXJ0eVxyXG4gICAgICAgICAgY29uc3QgZmllbGRJZCA9IGZpZWxkO1xyXG5cclxuICAgICAgICAgIGxldCBmaWVsZE1vZGVsO1xyXG4gICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGZpZWxkIGluIHRoZSBwYXJlbnQgb2JqZWN0XHJcbiAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5wYXJlbnRBcHBPYmplY3Q/LmZpZWxkKGZpZWxkSWQpO1xyXG5cclxuICAgICAgICAgIC8vIElmIG5vdCBmb3VuZCBhbmQgbWV0YWRhdGFIZWxwZXIgaXMgYXZhaWxhYmxlLCBzZWFyY2ggYWNyb3NzIGFsbCBvYmplY3RzXHJcbiAgICAgICAgICBpZiAoIWZpZWxkTW9kZWwgJiYgdGhpcy5tZXRhZGF0YUhlbHBlcikge1xyXG4gICAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRGaWVsZEJ5SWRPck5hbWUoZmllbGRJZCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgdGhlIGVucmljaGVkIGZpZWxkIG9iamVjdFxyXG4gICAgICAgICAgLy8gTmV3IGZvcm1hdDogY29uc3RydWN0IHRoZSBmdWxsIG9iamVjdCBmcm9tIGZpZWxkIG1vZGVsXHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBJRDogdGhpcy5JRCArICdfJyArIGZpZWxkTW9kZWw/LklELFxyXG4gICAgICAgICAgICBBcHBGaWVsZElEOiBmaWVsZE1vZGVsPy5JRCxcclxuICAgICAgICAgICAgU2VxTm86IGluZGV4ICsgMSxcclxuICAgICAgICAgICAgRmllbGRUeXBlOiBmaWVsZC5pbmNsdWRlcygnLicpID8gRGF0YVNvdXJjZVF1ZXJ5RmllbGRUeXBlLkxvb2t1cEZpZWxkIDogRGF0YVNvdXJjZVF1ZXJ5RmllbGRUeXBlLkVudGl0eUZpZWxkLFxyXG4gICAgICAgICAgICBGaWVsZERldGFpbHM6IGZpZWxkLFxyXG4gICAgICAgICAgICBMb29rdXBEZXRhaWxzOiBmaWVsZCxcclxuICAgICAgICAgICAgRmllbGQ6IGZpZWxkTW9kZWxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGZpZWxkcywgcmV0dXJuIGFuIGVtcHR5IGFycmF5LlxyXG4gICAgICAgIHRoaXMuZW5yaWNoZWRGaWVsZHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gUmV0dXJuIHRoZSBlbnJpY2hlZCBmaWVsZHMuXHJcbiAgICByZXR1cm4gdGhpcy5lbnJpY2hlZEZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBmaWVsZHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0aGF0IHNhdGlzZnkgdGhlIGdpdmVuIGZpbHRlciBmdW5jdGlvbi5cclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZmllbGRzIHRoYXQgc2F0aXNmeSB0aGUgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpbHRlckZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbmQgY2FjaGVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXHJcbiAgICovXHJcbiAgcGFyYW1ldGVycygpOiBQYXJhbWV0ZXJNb2RlbFtdIHtcclxuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXHJcbiAgICBpZiAoIXRoaXMuY2FjaGVkUGFyYW1ldGVycz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRQYXJhbWV0ZXJzID0gKHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbj8uUGFyYW1ldGVycyB8fCBbXSkubWFwKChwOiBhbnkpID0+IG5ldyBQYXJhbWV0ZXJNb2RlbChwKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZWRQYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBtYW5kYXRvcnkgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIHtQYXJhbWV0ZXJNb2RlbFtdfSBUaGUgYXJyYXkgb2YgbWFuZGF0b3J5IFBhcmFtZXRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBtYW5kYXRvcnlQYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbHRlcihwID0+IHAuSXNNYW5kYXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYSBwYXJhbWV0ZXIgYnkgaXRzIG5hbWUgKGNhc2UtaW5zZW5zaXRpdmUpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gZmluZC5cclxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWwgfCB1bmRlZmluZWR9IFRoZSBwYXJhbWV0ZXIgbW9kZWwgaW5zdGFuY2UgaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWQuXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IFBhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IG5hbWVMb3dlciA9IG5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMoKS5maW5kKHAgPT4gcC5QYXJhbWV0ZXJOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lTG93ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIGZpbHRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7RmlsdGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIEZpbHRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBmaWx0ZXJzKCk6IEZpbHRlck1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgZmlsdGVycyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRGaWx0ZXJzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHJhdyBmaWx0ZXJzIHRvIEZpbHRlck1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxyXG4gICAgICB0aGlzLmNhY2hlZEZpbHRlcnMgPSAodGhpcy5wYXJzZWRDb25maWd1cmF0aW9uPy5GaWx0ZXJzPy5GaWx0ZXJzIHx8IFtdKS5tYXAoKGY6IGFueSkgPT4gbmV3IEZpbHRlck1vZGVsKGYpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhY2hlZEZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgc29ydHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7U29ydE1vZGVsW119IFRoZSBhcnJheSBvZiBTb3J0TW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIHNvcnRzKCk6IFNvcnRNb2RlbFtdIHtcclxuICAgIC8vIENoZWNrIGlmIHNvcnRzIGhhdmUgYWxyZWFkeSBiZWVuIGNhY2hlZFxyXG4gICAgaWYgKCF0aGlzLmNhY2hlZFNvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHJhdyBzb3J0cyB0byBTb3J0TW9kZWwgaW5zdGFuY2VzIGFuZCBjYWNoZSB0aGVtXHJcbiAgICAgIHRoaXMuY2FjaGVkU29ydHMgPSAodGhpcy5wYXJzZWRDb25maWd1cmF0aW9uPy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCBzb3J0c1xyXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHRlcm0gaXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIGZpZWxkcyBvZiB0aGVcclxuICAgKiBjdXJyZW50IGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICovXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5RdWVyeU5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZSB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICogVGhpcyBlbnN1cmVzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBjb2RlIGV4cGVjdGluZyB0aGUgb2xkIGZvcm1hdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSBkYXRhIGluIG9sZCBBUEkgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgSUQ6IHRoaXMuSUQsXHJcbiAgICAgIE9iamVjdElEOiB0aGlzLk9iamVjdElELFxyXG4gICAgICBPYmplY3RJRF9Ub3NhdmU6IHRoaXMuT2JqZWN0SURfVG9zYXZlLFxyXG4gICAgICBRdWVyeU5hbWU6IHRoaXMuUXVlcnlOYW1lLFxyXG4gICAgICBEaXNwbGF5TmFtZTogdGhpcy5EaXNwbGF5TmFtZSxcclxuICAgICAgRmllbGRzOiB0aGlzLmZpZWxkcygpLFxyXG4gICAgICBGaWx0ZXJzOiB7XHJcbiAgICAgICAgRmlsdGVyczogdGhpcy5maWx0ZXJzKCkubWFwKGYgPT4gZi50b0pTT04oKSksXHJcbiAgICAgICAgRmlsdGVyTG9naWM6IHRoaXMuRmlsdGVyTG9naWNcclxuICAgICAgfSxcclxuICAgICAgU29ydDogdGhpcy5zb3J0cygpLm1hcChzID0+IHMudG9KU09OKCkpLFxyXG4gICAgICBQYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMoKS5tYXAocCA9PiBwLnRvSlNPTigpKVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0IsRUFDaEMsY0FBOEI7UUFGckIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmhDLG1CQUFjLEdBQStCLEVBQUUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFPcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07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QUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQ0wsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gJy4vYXBwLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkcyB9IGZyb20gJy4vZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzcyc7XHJcbmltcG9ydCB7IEZpbHRlck1vZGVsIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJNb2RlbCB9IGZyb20gJy4vcGFyYW1ldGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydE1vZGVsIH0gZnJvbSAnLi9zb3J0Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUXVlcnlNb2RlbCB7XHJcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICByZWFkb25seSBPYmplY3RJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IE9iamVjdElEX1Rvc2F2ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IFF1ZXJ5TmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRmlsdGVyTG9naWM6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZW5yaWNoZWRGaWVsZHM6IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRQYXJhbWV0ZXJzOiBQYXJhbWV0ZXJNb2RlbFtdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRGaWx0ZXJzOiBGaWx0ZXJNb2RlbFtdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRTb3J0czogU29ydE1vZGVsW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxyXG4gICAgcmVhZG9ubHkgcGFyZW50QXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCxcclxuICAgIHByaXZhdGUgbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLklEID0gcmF3LklEO1xyXG4gICAgdGhpcy5PYmplY3RJRCA9IHJhdy5PYmplY3RJRDtcclxuICAgIHRoaXMuT2JqZWN0SURfVG9zYXZlID0gcmF3Lk9iamVjdElEX1Rvc2F2ZTtcclxuICAgIHRoaXMuUXVlcnlOYW1lID0gcmF3LlF1ZXJ5TmFtZTtcclxuICAgIHRoaXMuRGlzcGxheU5hbWUgPSByYXcuRGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLkZpbHRlckxvZ2ljID0gcmF3LkZpbHRlckxvZ2ljO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZmllbGRzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuIFRoZSBmaWVsZHMgYXJlIGVucmljaGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdHMuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZW5yaWNoZWQgZmllbGRzLlxyXG4gICAqL1xyXG4gIGZpZWxkcygpOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICBpZiAoIXRoaXMuZW5yaWNoZWRGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnJhdz8uRmllbGRzO1xyXG4gICAgICBpZiAocmF3RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAvLyBFbnJpY2ggdGhlIGZpZWxkcyBieSBtYXBwaW5nIGVhY2ggZmllbGQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdC5cclxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGZpZWxkTW9kZWw7XHJcblxyXG4gICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGZpZWxkIGluIHRoZSBwYXJlbnQgb2JqZWN0XHJcbiAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5wYXJlbnRBcHBPYmplY3QuZmllbGQoZmllbGQuQXBwRmllbGRJRCk7XHJcblxyXG4gICAgICAgICAgLy8gSWYgbm90IGZvdW5kIGFuZCBtZXRhZGF0YUhlbHBlciBpcyBhdmFpbGFibGUsIHNlYXJjaCBhY3Jvc3MgYWxsIG9iamVjdHNcclxuICAgICAgICAgIGlmICghZmllbGRNb2RlbCAmJiB0aGlzLm1ldGFkYXRhSGVscGVyKSB7XHJcbiAgICAgICAgICAgIGZpZWxkTW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEZpZWxkQnlJZE9yTmFtZShmaWVsZC5BcHBGaWVsZElEKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5maWVsZCxcclxuICAgICAgICAgICAgLy8gVGhlIGBGaWVsZGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdC5cclxuICAgICAgICAgICAgRmllbGQ6IGZpZWxkTW9kZWxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZmllbGRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXHJcbiAgICAgICAgdGhpcy5lbnJpY2hlZEZpZWxkcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGVucmljaGVkIGZpZWxkcy5cclxuICAgIHJldHVybiB0aGlzLmVucmljaGVkRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW119IFRoZSBhcnJheSBvZiBmaWVsZHMgdGhhdCBzYXRpc2Z5IHRoZSBmaWx0ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgZmluZEZpZWxkcyhmaWx0ZXJGbjogKGZpZWxkOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHMpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHMoKS5maWx0ZXIoZmlsdGVyRm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIFBhcmFtZXRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBwYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgcGFyYW1ldGVycyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRQYXJhbWV0ZXJzKSB7XHJcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRQYXJhbWV0ZXJzID0gKHRoaXMucmF3Py5QYXJhbWV0ZXJzIHx8IFtdKS5tYXAoKHA6IGFueSkgPT4gbmV3IFBhcmFtZXRlck1vZGVsKHApKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhY2hlZFBhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIG1hbmRhdG9yeSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBtYW5kYXRvcnkgUGFyYW1ldGVyTW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIG1hbmRhdG9yeVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzKCkuZmlsdGVyKHAgPT4gcC5Jc01hbmRhdG9yeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhIHBhcmFtZXRlciBieSBpdHMgbmFtZSAoY2FzZS1pbnNlbnNpdGl2ZSkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0byBmaW5kLlxyXG4gICAqIEByZXR1cm5zIHtQYXJhbWV0ZXJNb2RlbCB8IHVuZGVmaW5lZH0gVGhlIHBhcmFtZXRlciBtb2RlbCBpbnN0YW5jZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cclxuICAgKi9cclxuICBwYXJhbWV0ZXIobmFtZTogc3RyaW5nKTogUGFyYW1ldGVyTW9kZWwgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgbmFtZUxvd2VyID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbmQocCA9PiBwLlBhcmFtZXRlck5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVMb3dlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgZmlsdGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIHtGaWx0ZXJNb2RlbFtdfSBUaGUgYXJyYXkgb2YgRmlsdGVyTW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIGZpbHRlcnMoKTogRmlsdGVyTW9kZWxbXSB7XHJcbiAgICAvLyBDaGVjayBpZiBmaWx0ZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGNhY2hlZFxyXG4gICAgaWYgKCF0aGlzLmNhY2hlZEZpbHRlcnMpIHtcclxuICAgICAgLy8gTWFwIHJhdyBmaWx0ZXJzIHRvIEZpbHRlck1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxyXG4gICAgICB0aGlzLmNhY2hlZEZpbHRlcnMgPSAodGhpcy5yYXcuRmlsdGVycz8uRmlsdGVycyB8fCBbXSkubWFwKChmOiBhbnkpID0+IG5ldyBGaWx0ZXJNb2RlbChmKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZWRGaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHNvcnRzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1NvcnRNb2RlbFtdfSBUaGUgYXJyYXkgb2YgU29ydE1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBzb3J0cygpOiBTb3J0TW9kZWxbXSB7XHJcbiAgICAvLyBDaGVjayBpZiBzb3J0cyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRTb3J0cykge1xyXG4gICAgICAvLyBNYXAgcmF3IHNvcnRzIHRvIFNvcnRNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRTb3J0cyA9ICh0aGlzLnJhdy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCBzb3J0c1xyXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHRlcm0gaXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIGZpZWxkcyBvZiB0aGVcclxuICAgKiBjdXJyZW50IGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICovXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5RdWVyeU5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZSB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uXHJcbiAgICogQHJldHVybnMge2FueX0gVGhlIHJhdyBkYXRhIGluIEpTT04gZm9ybWF0LlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucmF3O1xyXG4gIH1cclxufSJdfQ==
@@ -1,35 +1,24 @@
1
1
  export class FilterModel {
2
2
  constructor(raw) {
3
3
  this.raw = raw;
4
- this.ID = raw?.Id;
5
- this.ConjuctionClause = raw?.Conjunction;
6
- this.RelationalOperator = raw?.Operator;
4
+ this.ID = raw?.ID;
5
+ this.ConjuctionClause = raw?.ConjuctionClause;
6
+ this.RelationalOperator = raw?.RelationalOperator;
7
7
  this.ValueType = raw?.ValueType;
8
- this.value = raw?.Value;
8
+ this.value = raw?.value;
9
9
  this.Sequence = raw?.Sequence;
10
- this.GroupID = raw?.GroupId;
10
+ this.GroupID = raw?.GroupID;
11
11
  this.LookupDetail = raw?.LookupDetail;
12
12
  this.FieldType = raw?.FieldType;
13
- this.FieldID = raw?.Id;
13
+ this.FieldID = raw?.FieldID;
14
14
  }
15
15
  /**
16
- * Converts the model to JSON in the old API format (PascalCase).
16
+ * Converts the current object to a JSON object.
17
17
  *
18
- * @returns A JSON representation in old format.
18
+ * @returns A JSON representation of the current object.
19
19
  */
20
20
  toJSON() {
21
- return {
22
- ID: this.ID,
23
- ConjuctionClause: this.ConjuctionClause,
24
- RelationalOperator: this.RelationalOperator,
25
- ValueType: this.ValueType,
26
- value: this.value,
27
- Sequence: this.Sequence,
28
- GroupID: this.GroupID,
29
- LookupDetail: this.LookupDetail,
30
- FieldType: this.FieldType,
31
- FieldID: this.FieldID
32
- };
21
+ return this.raw;
33
22
  }
34
23
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDSixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uanVjdGlvbkNsYXVzZSwgRGF0YVNvdXJjZVF1ZXJ5RmlsdGVyRmllbGRUeXBlLCBGaWx0ZXJWYWx1ZVR5cGUsIFJlbGF0aW9uYWxPcGVyYXRvciB9IGZyb20gXCIuLi9lbnVtcy9kc3EuZW51bVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlck1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2U7XHJcbiAgcmVhZG9ubHkgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3I7XHJcbiAgcmVhZG9ubHkgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGU7XHJcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcclxuICByZWFkb25seSBTZXF1ZW5jZTogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IEdyb3VwSUQ6IG51bWJlcjtcclxuICByZWFkb25seSBMb29rdXBEZXRhaWw6IHN0cmluZyB8IG51bGw7XHJcbiAgcmVhZG9ubHkgRmllbGRUeXBlOiBEYXRhU291cmNlUXVlcnlGaWx0ZXJGaWVsZFR5cGU7XHJcbiAgcmVhZG9ubHkgRmllbGRJRDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55KSB7XHJcbiAgICB0aGlzLklEID0gcmF3Py5JZDtcclxuICAgIHRoaXMuQ29uanVjdGlvbkNsYXVzZSA9IHJhdz8uQ29uanVuY3Rpb247XHJcbiAgICB0aGlzLlJlbGF0aW9uYWxPcGVyYXRvciA9IHJhdz8uT3BlcmF0b3I7XHJcbiAgICB0aGlzLlZhbHVlVHlwZSA9IHJhdz8uVmFsdWVUeXBlO1xyXG4gICAgdGhpcy52YWx1ZSA9IHJhdz8uVmFsdWU7XHJcbiAgICB0aGlzLlNlcXVlbmNlID0gcmF3Py5TZXF1ZW5jZTtcclxuICAgIHRoaXMuR3JvdXBJRCA9IHJhdz8uR3JvdXBJZDtcclxuICAgIHRoaXMuTG9va3VwRGV0YWlsID0gcmF3Py5Mb29rdXBEZXRhaWw7XHJcbiAgICB0aGlzLkZpZWxkVHlwZSA9IHJhdz8uRmllbGRUeXBlO1xyXG4gICAgdGhpcy5GaWVsZElEID0gcmF3Py5JZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBtb2RlbCB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBIEpTT04gcmVwcmVzZW50YXRpb24gaW4gb2xkIGZvcm1hdC5cclxuICAgKi9cclxuICB0b0pTT04oKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIElEOiB0aGlzLklELFxyXG4gICAgICBDb25qdWN0aW9uQ2xhdXNlOiB0aGlzLkNvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgICAgIFJlbGF0aW9uYWxPcGVyYXRvcjogdGhpcy5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgIFZhbHVlVHlwZTogdGhpcy5WYWx1ZVR5cGUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgICBTZXF1ZW5jZTogdGhpcy5TZXF1ZW5jZSxcclxuICAgICAgR3JvdXBJRDogdGhpcy5Hcm91cElELFxyXG4gICAgICBMb29rdXBEZXRhaWw6IHRoaXMuTG9va3VwRGV0YWlsLFxyXG4gICAgICBGaWVsZFR5cGU6IHRoaXMuRmllbGRUeXBlLFxyXG4gICAgICBGaWVsZElEOiB0aGlzLkZpZWxkSURcclxuICAgIH07XHJcbiAgfVxyXG59Il19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmp1Y3Rpb25DbGF1c2UsIERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZSwgRmlsdGVyVmFsdWVUeXBlLCBSZWxhdGlvbmFsT3BlcmF0b3IgfSBmcm9tIFwiLi4vZW51bXMvZHNxLmVudW1cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJNb2RlbCB7XHJcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICByZWFkb25seSBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlO1xyXG4gIHJlYWRvbmx5IFJlbGF0aW9uYWxPcGVyYXRvcjogUmVsYXRpb25hbE9wZXJhdG9yO1xyXG4gIHJlYWRvbmx5IFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlO1xyXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgU2VxdWVuY2U6IG51bWJlcjtcclxuICByZWFkb25seSBHcm91cElEOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgTG9va3VwRGV0YWlsOiBzdHJpbmcgfCBudWxsO1xyXG4gIHJlYWRvbmx5IEZpZWxkVHlwZTogRGF0YVNvdXJjZVF1ZXJ5RmlsdGVyRmllbGRUeXBlO1xyXG4gIHJlYWRvbmx5IEZpZWxkSUQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByYXc6IGFueSkge1xyXG4gICAgdGhpcy5JRCA9IHJhdz8uSUQ7XHJcbiAgICB0aGlzLkNvbmp1Y3Rpb25DbGF1c2UgPSByYXc/LkNvbmp1Y3Rpb25DbGF1c2U7XHJcbiAgICB0aGlzLlJlbGF0aW9uYWxPcGVyYXRvciA9IHJhdz8uUmVsYXRpb25hbE9wZXJhdG9yO1xyXG4gICAgdGhpcy5WYWx1ZVR5cGUgPSByYXc/LlZhbHVlVHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSByYXc/LnZhbHVlO1xyXG4gICAgdGhpcy5TZXF1ZW5jZSA9IHJhdz8uU2VxdWVuY2U7XHJcbiAgICB0aGlzLkdyb3VwSUQgPSByYXc/Lkdyb3VwSUQ7XHJcbiAgICB0aGlzLkxvb2t1cERldGFpbCA9IHJhdz8uTG9va3VwRGV0YWlsO1xyXG4gICAgdGhpcy5GaWVsZFR5cGUgPSByYXc/LkZpZWxkVHlwZTtcclxuICAgIHRoaXMuRmllbGRJRCA9IHJhdz8uRmllbGRJRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG9iamVjdCB0byBhIEpTT04gb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IG9iamVjdC5cclxuICAgKi9cclxuICB0b0pTT04oKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnJhdztcclxuICB9XHJcbn0iXX0=
@@ -1,24 +1,18 @@
1
1
  export class ParameterModel {
2
2
  constructor(raw) {
3
3
  this.raw = raw;
4
- this.ID = raw?.Id;
5
- this.ParameterName = raw?.FieldName;
4
+ this.ID = raw?.ID;
5
+ this.ParameterName = raw?.ParameterName;
6
6
  this.DataSourceQueryID = raw?.DataSourceQueryID;
7
7
  this.MappingFieldName = raw?.MappingFieldName;
8
8
  this.IsMandatory = raw?.IsMandatory;
9
9
  }
10
10
  /**
11
- * Converts the model to JSON in the old API format (PascalCase).
12
- * @returns {any} The model as a JSON object in old format.
11
+ * Converts the model to JSON.
12
+ * @returns {any} The model as a JSON object.
13
13
  */
14
14
  toJSON() {
15
- return {
16
- ID: this.ID,
17
- ParameterName: this.ParameterName,
18
- DataSourceQueryID: this.DataSourceQueryID,
19
- MappingFieldName: this.MappingFieldName,
20
- IsMandatory: this.IsMandatory
21
- };
15
+ return this.raw;
22
16
  }
23
17
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9wYXJhbWV0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFPdkIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0YsT0FBTztZQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ2hDLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFyYW1ldGVyTW9kZWwge1xyXG4gICAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IFBhcmFtZXRlck5hbWU6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IERhdGFTb3VyY2VRdWVyeUlEOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBNYXBwaW5nRmllbGROYW1lOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBJc01hbmRhdG9yeTogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55KSB7XHJcbiAgICAgICAgdGhpcy5JRCA9IHJhdz8uSWQ7XHJcbiAgICAgICAgdGhpcy5QYXJhbWV0ZXJOYW1lID0gcmF3Py5GaWVsZE5hbWU7XHJcbiAgICAgICAgdGhpcy5EYXRhU291cmNlUXVlcnlJRCA9IHJhdz8uRGF0YVNvdXJjZVF1ZXJ5SUQ7XHJcbiAgICAgICAgdGhpcy5NYXBwaW5nRmllbGROYW1lID0gcmF3Py5NYXBwaW5nRmllbGROYW1lO1xyXG4gICAgICAgIHRoaXMuSXNNYW5kYXRvcnkgPSByYXc/LklzTWFuZGF0b3J5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIG1vZGVsIHRvIEpTT04gaW4gdGhlIG9sZCBBUEkgZm9ybWF0IChQYXNjYWxDYXNlKS5cclxuICAgICAqIEByZXR1cm5zIHthbnl9IFRoZSBtb2RlbCBhcyBhIEpTT04gb2JqZWN0IGluIG9sZCBmb3JtYXQuXHJcbiAgICAgKi9cclxuICAgIHRvSlNPTigpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIElEOiB0aGlzLklELFxyXG4gICAgICAgICAgICBQYXJhbWV0ZXJOYW1lOiB0aGlzLlBhcmFtZXRlck5hbWUsXHJcbiAgICAgICAgICAgIERhdGFTb3VyY2VRdWVyeUlEOiB0aGlzLkRhdGFTb3VyY2VRdWVyeUlELFxyXG4gICAgICAgICAgICBNYXBwaW5nRmllbGROYW1lOiB0aGlzLk1hcHBpbmdGaWVsZE5hbWUsXHJcbiAgICAgICAgICAgIElzTWFuZGF0b3J5OiB0aGlzLklzTWFuZGF0b3J5XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufSJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9wYXJhbWV0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFPdkIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBQYXJhbWV0ZXJNb2RlbCB7XHJcbiAgICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgUGFyYW1ldGVyTmFtZTogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgRGF0YVNvdXJjZVF1ZXJ5SUQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IE1hcHBpbmdGaWVsZE5hbWU6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IElzTWFuZGF0b3J5OiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmF3OiBhbnkpIHtcclxuICAgICAgICB0aGlzLklEID0gcmF3Py5JRDtcclxuICAgICAgICB0aGlzLlBhcmFtZXRlck5hbWUgPSByYXc/LlBhcmFtZXRlck5hbWU7XHJcbiAgICAgICAgdGhpcy5EYXRhU291cmNlUXVlcnlJRCA9IHJhdz8uRGF0YVNvdXJjZVF1ZXJ5SUQ7XHJcbiAgICAgICAgdGhpcy5NYXBwaW5nRmllbGROYW1lID0gcmF3Py5NYXBwaW5nRmllbGROYW1lO1xyXG4gICAgICAgIHRoaXMuSXNNYW5kYXRvcnkgPSByYXc/LklzTWFuZGF0b3J5O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIG1vZGVsIHRvIEpTT04uXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBUaGUgbW9kZWwgYXMgYSBKU09OIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgdG9KU09OKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3O1xyXG4gICAgfVxyXG59Il19
@@ -1,7 +1,7 @@
1
1
  export class SortModel {
2
2
  constructor(raw) {
3
3
  this.raw = raw;
4
- this.ID = raw?.Id;
4
+ this.ID = raw?.ID;
5
5
  this.SortSequence = raw?.SortSequence;
6
6
  this.Sequence = raw?.Sequence;
7
7
  this.LookupDetails = raw?.LookupDetails;
@@ -9,17 +9,10 @@ export class SortModel {
9
9
  this.AppFieldID = raw?.AppFieldID;
10
10
  }
11
11
  /**
12
- * Converts the model to JSON in the old API format (PascalCase).
12
+ * Get raw data for this app object
13
13
  */
14
14
  toJSON() {
15
- return {
16
- ID: this.ID,
17
- SortSequence: this.SortSequence,
18
- Sequence: this.Sequence,
19
- LookupDetails: this.LookupDetails,
20
- FieldType: this.FieldType,
21
- AppFieldID: this.AppFieldID
22
- };
15
+ return this.raw;
23
16
  }
24
17
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvc29ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQVFwQixZQUE2QixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNuQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZSwgU29ydFNlcXVlbmNlIH0gZnJvbSBcIi4uL2VudW1zL2RzcS5lbnVtXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU29ydE1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IFNvcnRTZXF1ZW5jZTogU29ydFNlcXVlbmNlO1xyXG4gIHJlYWRvbmx5IFNlcXVlbmNlOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgTG9va3VwRGV0YWlsczogc3RyaW5nIHwgbnVsbDtcclxuICByZWFkb25seSBGaWVsZFR5cGU6IERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZTtcclxuICByZWFkb25seSBBcHBGaWVsZElEOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmF3OiBhbnkpIHtcclxuICAgIHRoaXMuSUQgPSByYXc/LklkO1xyXG4gICAgdGhpcy5Tb3J0U2VxdWVuY2UgPSByYXc/LlNvcnRTZXF1ZW5jZTtcclxuICAgIHRoaXMuU2VxdWVuY2UgPSByYXc/LlNlcXVlbmNlO1xyXG4gICAgdGhpcy5Mb29rdXBEZXRhaWxzID0gcmF3Py5Mb29rdXBEZXRhaWxzO1xyXG4gICAgdGhpcy5GaWVsZFR5cGUgPSByYXc/LkZpZWxkVHlwZTtcclxuICAgIHRoaXMuQXBwRmllbGRJRCA9IHJhdz8uQXBwRmllbGRJRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBtb2RlbCB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICovXHJcbiAgdG9KU09OKCk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBJRDogdGhpcy5JRCxcclxuICAgICAgU29ydFNlcXVlbmNlOiB0aGlzLlNvcnRTZXF1ZW5jZSxcclxuICAgICAgU2VxdWVuY2U6IHRoaXMuU2VxdWVuY2UsXHJcbiAgICAgIExvb2t1cERldGFpbHM6IHRoaXMuTG9va3VwRGV0YWlscyxcclxuICAgICAgRmllbGRUeXBlOiB0aGlzLkZpZWxkVHlwZSxcclxuICAgICAgQXBwRmllbGRJRDogdGhpcy5BcHBGaWVsZElEXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvc29ydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQVFwQixZQUE2QixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNuQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZSwgU29ydFNlcXVlbmNlIH0gZnJvbSBcIi4uL2VudW1zL2RzcS5lbnVtXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU29ydE1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IFNvcnRTZXF1ZW5jZTogU29ydFNlcXVlbmNlO1xyXG4gIHJlYWRvbmx5IFNlcXVlbmNlOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgTG9va3VwRGV0YWlsczogc3RyaW5nIHwgbnVsbDtcclxuICByZWFkb25seSBGaWVsZFR5cGU6IERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZTtcclxuICByZWFkb25seSBBcHBGaWVsZElEOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmF3OiBhbnkpIHtcclxuICAgIHRoaXMuSUQgPSByYXc/LklEO1xyXG4gICAgdGhpcy5Tb3J0U2VxdWVuY2UgPSByYXc/LlNvcnRTZXF1ZW5jZTtcclxuICAgIHRoaXMuU2VxdWVuY2UgPSByYXc/LlNlcXVlbmNlO1xyXG4gICAgdGhpcy5Mb29rdXBEZXRhaWxzID0gcmF3Py5Mb29rdXBEZXRhaWxzO1xyXG4gICAgdGhpcy5GaWVsZFR5cGUgPSByYXc/LkZpZWxkVHlwZTtcclxuICAgIHRoaXMuQXBwRmllbGRJRCA9IHJhdz8uQXBwRmllbGRJRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCByYXcgZGF0YSBmb3IgdGhpcyBhcHAgb2JqZWN0XHJcbiAgICovXHJcbiAgdG9KU09OKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5yYXc7XHJcbiAgfVxyXG59Il19
@@ -16,10 +16,9 @@ export function validateJSON(str) {
16
16
  }
17
17
  }
18
18
  /**
19
- * Creates dynamic data based on the input object for new API format
20
- * Transforms object into array of {fieldName, value} pairs
19
+ * Creates dynamic data based on the input object
21
20
  * @param obj The input object to create dynamic data from
22
- * @returns The formatted array with {fieldName, value} pairs
21
+ * @returns The formatted array
23
22
  */
24
23
  export function createDynamicData(obj) {
25
24
  return formatArray(obj);
@@ -70,29 +69,29 @@ export function getBulkInsertFields(dataArray) {
70
69
  return Array.from(fieldSet);
71
70
  }
72
71
  /**
73
- * Formats the input object into a new array with fieldName and value pairs (NEW API format)
72
+ * Formats the input object into a new array with AppFieldID and Value pairs
74
73
  * @param input The input object to be formatted
75
- * @returns The formatted array with fieldName and value pairs
74
+ * @returns The formatted array with AppFieldID and Value pairs
76
75
  */
77
76
  function formatArray(input) {
78
77
  if (input !== null && Object.keys(input)?.length) {
79
78
  const newObj = Object.keys(input).map((key) => {
80
- let value = '';
79
+ let Value = '';
81
80
  if (Array.isArray(input[key])) {
82
81
  if (key === 'Child_Relationship') {
83
- value = handleChildRelationship(input[key]);
82
+ Value = handleChildRelationship(input[key]);
84
83
  }
85
84
  else {
86
- value = handlechild(input[key]);
85
+ Value = handlechild(input[key]);
87
86
  }
88
87
  }
89
88
  else if (typeof input[key] === 'object') {
90
- value = handleObject(input[key]);
89
+ Value = handleObject(input[key]);
91
90
  }
92
91
  else {
93
- value = input[key];
92
+ Value = input[key];
94
93
  }
95
- return { fieldName: key, value };
94
+ return { AppFieldID: key, Value };
96
95
  });
97
96
  return newObj;
98
97
  }
@@ -116,17 +115,17 @@ function handlechild(input) {
116
115
  if (input !== null) {
117
116
  input.forEach((element) => {
118
117
  const newObj = Object.keys(element).map((key) => {
119
- let value = '';
118
+ let Value = '';
120
119
  if (Array.isArray(element[key])) {
121
- value = handlechild(element[key]);
120
+ Value = handlechild(element[key]);
122
121
  }
123
122
  else if (typeof element[key] === 'object') {
124
- value = formatArray(element[key]);
123
+ Value = formatArray(element[key]);
125
124
  }
126
125
  else {
127
- value = element[key];
126
+ Value = element[key];
128
127
  }
129
- return { fieldName: key, value };
128
+ return { AppFieldID: key, Value };
130
129
  });
131
130
  array.push(newObj);
132
131
  });
@@ -208,4 +207,4 @@ export function removeBlankArrayKeys(dataObj) {
208
207
  function isValueBlank(value) {
209
208
  return value == null || value === '' || value === 'null' || value === 'undefined';
210
209
  }
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL2pzb24udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsMENBQTBDO0FBQzFDLHVEQUF1RDtBQUV2RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUN4RSxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFRO0lBQ3hDLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQWM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUMsT0FBTyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUSxFQUFFLEVBQUU7UUFDakMsT0FBTyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQiw2Q0FBNkM7WUFDN0MsSUFDRSxLQUFLO2dCQUNMLE9BQU8sS0FBSyxLQUFL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SyxFQUFFLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDO0FBQ3BGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbi8qKlxyXG4gKiBWYWxpZGF0ZXMgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCBKU09OLlxyXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gdmFsaWRhdGUuXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEpTT04sIGZhbHNlIG90aGVyd2lzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUpTT04oc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QganNvbiA9IEpTT04ucGFyc2Uoc3RyKTtcclxuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoanNvbikuc2xpY2UoOCwgLTEpID09PSAnT2JqZWN0JztcclxuICB9IGNhdGNoIChlKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBkeW5hbWljIGRhdGEgYmFzZWQgb24gdGhlIGlucHV0IG9iamVjdCBmb3IgbmV3IEFQSSBmb3JtYXRcclxuICogVHJhbnNmb3JtcyBvYmplY3QgaW50byBhcnJheSBvZiB7ZmllbGROYW1lLCB2YWx1ZX0gcGFpcnNcclxuICogQHBhcmFtIG9iaiBUaGUgaW5wdXQgb2JqZWN0IHRvIGNyZWF0ZSBkeW5hbWljIGRhdGEgZnJvbVxyXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGFycmF5IHdpdGgge2ZpZWxkTmFtZSwgdmFsdWV9IHBhaXJzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRHluYW1pY0RhdGEob2JqOiBhbnkpIHtcclxuICByZXR1cm4gZm9ybWF0QXJyYXkob2JqKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHZhbHVlcyBmb3IgYnVsayBpbnNlcnQgYmFzZWQgb24gdGhlIGlucHV0IGRhdGEgYXJyYXlcclxuICogQHBhcmFtIHthbnlbXX0gZGF0YUFycmF5IFRoZSBpbnB1dCBkYXRhIGFycmF5IHRvIGNyZWF0ZSBidWxrIGluc2VydCB2YWx1ZXMgZnJvbVxyXG4gKiBAcmV0dXJucyB7YW55W11bXX0gVGhlIGZvcm1hdHRlZCBhcnJheSBvZiB2YWx1ZXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWxrSW5zZXJ0VmFsdWVzKGRhdGFBcnJheTogYW55KSB7XHJcbiAgY29uc3QgZmllbGRzID0gZ2V0QnVsa0luc2VydEZpZWxkcyhkYXRhQXJyYXkpO1xyXG5cclxuICByZXR1cm4gZGF0YUFycmF5Py5tYXAoKGl0ZW06YW55KSA9PiB7XHJcbiAgICByZXR1cm4gZmllbGRzPy5tYXAoZmllbGQgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bZmllbGRdO1xyXG5cclxuICAgICAgLy8gSGFuZGxlIG5lc3RlZCBvYmplY3QgKG5vbi1hcnJheSwgbm9uLW51bGwpXHJcbiAgICAgIGlmIChcclxuICAgICAgICB2YWx1ZSAmJlxyXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3Qgc3ViRmllbGRzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHN1YlZhbHVlcyA9IHN1YkZpZWxkcy5tYXAoc3ViS2V5ID0+IHZhbHVlW3N1YktleV0pO1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gYW4gb2JqZWN0IHdpdGggZmllbGRzIGFuZCB2YWx1ZXMgZm9yIG5lc3RlZCBvYmplY3RcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgRmllbGRzOiBzdWJGaWVsZHMsXHJcbiAgICAgICAgICBWYWx1ZXM6IHN1YlZhbHVlc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJldHVybiB0aGUgdmFsdWUgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgbnVsbFxyXG4gICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbDtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGZpZWxkcyBmb3IgYnVsayBpbnNlcnQgYmFzZWQgb24gdGhlIGlucHV0IGRhdGEgYXJyYXlcclxuICogQHBhcmFtIHthbnlbXX0gZGF0YUFycmF5IFRoZSBpbnB1dCBkYXRhIGFycmF5IHRvIGNyZWF0ZSBidWxrIGluc2VydCBmaWVsZHMgZnJvbVxyXG4gKiBAcmV0dXJucyB7c3RyaW5nW119IFRoZSBmb3JtYXR0ZWQgYXJyYXkgb2YgZmllbGRzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVsa0luc2VydEZpZWxkcyhkYXRhQXJyYXk6IGFueSk6IHN0cmluZ1tdIHtcclxuICAvKipcclxuICAgKiBBIFNldCB0byBrZWVwIHRyYWNrIG9mIHRoZSBmaWVsZHMgaW4gdGhlIGlucHV0IGRhdGEgYXJyYXlcclxuICAgKiBAdHlwZSB7U2V0PHN0cmluZz59XHJcbiAgICovXHJcbiAgY29uc3QgZmllbGRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICBkYXRhQXJyYXk/LmZvckVhY2goKGl0ZW06YW55KSA9PiB7XHJcbiAgICBPYmplY3Qua2V5cyhpdGVtKT8uZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBmaWVsZFNldC5hZGQoa2V5KTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gQXJyYXkuZnJvbShmaWVsZFNldCk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogRm9ybWF0cyB0aGUgaW5wdXQgb2JqZWN0IGludG8gYSBuZXcgYXJyYXkgd2l0aCBmaWVsZE5hbWUgYW5kIHZhbHVlIHBhaXJzIChORVcgQVBJIGZvcm1hdClcclxuICogQHBhcmFtIGlucHV0IFRoZSBpbnB1dCBvYmplY3QgdG8gYmUgZm9ybWF0dGVkXHJcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgYXJyYXkgd2l0aCBmaWVsZE5hbWUgYW5kIHZhbHVlIHBhaXJzXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3JtYXRBcnJheShpbnB1dDogYW55KSB7XHJcbiAgaWYgKGlucHV0ICE9PSBudWxsICYmIE9iamVjdC5rZXlzKGlucHV0KT8ubGVuZ3RoKSB7XHJcbiAgICBjb25zdCBuZXdPYmogPSBPYmplY3Qua2V5cyhpbnB1dCkubWFwKChrZXkpID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnkgPSAnJztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXRba2V5XSkpIHtcclxuICAgICAgICBpZiAoa2V5ID09PSAnQ2hpbGRfUmVsYXRpb25zaGlwJykge1xyXG4gICAgICAgICAgdmFsdWUgPSBoYW5kbGVDaGlsZFJlbGF0aW9uc2hpcChpbnB1dFtrZXldKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSBoYW5kbGVjaGlsZChpbnB1dFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0W2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdmFsdWUgPSBoYW5kbGVPYmplY3QoaW5wdXRba2V5XSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFsdWUgPSBpbnB1dFtrZXldO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7IGZpZWxkTmFtZToga2V5LCB2YWx1ZSB9O1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3T2JqO1xyXG4gIH1cclxuICByZXR1cm4gaW5wdXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIYW5kbGVzIHRoZSBDaGlsZF9SZWxhdGlvbnNoaXAga2V5IGluIHRoZSBpbnB1dCBvYmplY3RcclxuICogQHBhcmFtIGNoaWxkIFRoZSB2YWx1ZSBvZiB0aGUgQ2hpbGRfUmVsYXRpb25zaGlwIGtleVxyXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmdpZmllZCB2YWx1ZSBpZiBub3QgbnVsbCwgZW1wdHksIG9yICdudWxsJzsgb3RoZXJ3aXNlIG51bGxcclxuICovXHJcbmZ1bmN0aW9uIGhhbmRsZUNoaWxkUmVsYXRpb25zaGlwKGNoaWxkOiBhbnkpIHtcclxuICBpZiAoY2hpbGQgIT09IG51bGwgJiYgY2hpbGQgIT09ICcnICYmIGNoaWxkICE9PSAnbnVsbCcpIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjaGlsZCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlY2hpbGQoaW5wdXQ6IGFueSkge1xyXG4gIGNvbnN0IGFycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGlmIChpbnB1dCAhPT0gbnVsbCkge1xyXG4gICAgaW5wdXQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld09iaiA9IE9iamVjdC5rZXlzKGVsZW1lbnQpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSAnJztcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50W2tleV0pKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGhhbmRsZWNoaWxkKGVsZW1lbnRba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudFtrZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgdmFsdWUgPSBmb3JtYXRBcnJheShlbGVtZW50W2tleV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGVsZW1lbnRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgZmllbGROYW1lOiBrZXksIHZhbHVlIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICBhcnJheS5wdXNoKG5ld09iaik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIYW5kbGVzIG9iamVjdCBrZXlzIGluIHRoZSBpbnB1dCBvYmplY3QgYmFzZWQgb24gc3BlY2lmaWMgY2FzZXNcclxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGJlIGhhbmRsZWRcclxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5naWZpZWQgdmFsdWUgYmFzZWQgb24gc3BlY2lmaWMgY2FzZXMgb3IgcmVjdXJzaXZlbHkgZm9ybWF0cyB0aGUgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBoYW5kbGVPYmplY3Qob2JqOiBhbnkpIHtcclxuICBpZiAob2JqID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgc3dpdGNoIChPYmplY3Qua2V5cyhvYmopWzBdKSB7XHJcbiAgICBjYXNlICdDb250YWluZXInOlxyXG4gICAgY2FzZSAnU2V0dGluZ19WYWx1ZSc6XHJcbiAgICBjYXNlICdDaGlsZF9SZWxhdGlvbnNoaXAnOlxyXG4gICAgY2FzZSAnU2NyZWVuQ29uZmlndXJhdGlvbic6XHJcbiAgICBjYXNlICdBcHBPYmplY3RDb25maWd1cmF0aW9uJzpcclxuICAgIGNhc2UgJ1NjaGVtYUNvbmZpZyc6XHJcbiAgICBjYXNlICdDcml0ZXJpYSc6XHJcbiAgICBjYXNlICdBcHBseUNyaXRlcmlhJzpcclxuICAgIGNhc2UgJ1NMQVNldHRpbmcnOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiBmb3JtYXRBcnJheShvYmopO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZXMgYmxhbmsgdmFsdWVzIGZyb20gdGhlIGlucHV0IG9iamVjdFxyXG4gKiBAcGFyYW0gZGF0YU9iaiBUaGUgaW5wdXQgb2JqZWN0IHRvIHJlbW92ZSBibGFuayB2YWx1ZXMgZnJvbVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUJsYW5rVmFsdWUoZGF0YU9iajogYW55KSB7XHJcbiAgT2JqZWN0LmtleXMoZGF0YU9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhT2JqW2tleV0pKSB7XHJcbiAgICAgIGlmIChkYXRhT2JqW2tleV0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIGRhdGFPYmpba2V5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhT2JqW2tleV0uZm9yRWFjaCgoaXRlbTogeyBWYWx1ZTogYW55IH0sIGk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzVmFsdWVCbGFuayhpdGVtKSkge1xyXG4gICAgICAgICAgICBkYXRhT2JqW2tleV0uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVtb3ZlQmxhbmtWYWx1ZShpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgfSBlbHNlIGlmIChkYXRhT2JqW2tleV0gJiYgdHlwZW9mIGRhdGFPYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFPYmpba2V5XSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIGRhdGFPYmpba2V5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGRhdGFPYmpba2V5XSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKGlzVmFsdWVCbGFuayhkYXRhT2JqW2tleV0pKSB7XHJcbiAgICAgIGRlbGV0ZSBkYXRhT2JqW2tleV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmVzIGJsYW5rIGFycmF5IGtleXMgZnJvbSB0aGUgaW5wdXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBkYXRhT2JqIFRoZSBpbnB1dCBvYmplY3QgdG8gcmVtb3ZlIGJsYW5rIGFycmF5IGtleXMgZnJvbVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUJsYW5rQXJyYXlLZXlzKGRhdGFPYmo6IGFueSkge1xyXG4gIGRhdGFPYmouZm9yRWFjaCgoZWxlbWVudDogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ1ZhbHVlJykpIHtcclxuICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LlZhbHVlID09PSAnb2JqZWN0JyAmJiBlbGVtZW50LlZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgZGF0YU9iai5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNWYWx1ZUJsYW5rKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09ICdudWxsJyB8fCB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XHJcbn0iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL2pzb24udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsMENBQTBDO0FBQzFDLHVEQUF1RDtBQUV2RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUN4RSxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVE7SUFDeEMsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsU0FBYztJQUNoRCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU5QyxPQUFPLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRTtRQUNqQyxPQUFPLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTFCLDZDQUE2QztZQUM3QyxJQUNFLEtBQUs7Z0JBQ0wsT0FBTyxLQUFLLEtBQUss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LEVBQUUsSUFBSSxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxXQUFXLENBQUM7QUFDcEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRlcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIEpTT04uXHJcbiAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byB2YWxpZGF0ZS5cclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgSlNPTiwgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSlNPTihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZShzdHIpO1xyXG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChqc29uKS5zbGljZSg4LCAtMSkgPT09ICdPYmplY3QnO1xyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGR5bmFtaWMgZGF0YSBiYXNlZCBvbiB0aGUgaW5wdXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBvYmogVGhlIGlucHV0IG9iamVjdCB0byBjcmVhdGUgZHluYW1pYyBkYXRhIGZyb21cclxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBhcnJheVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUR5bmFtaWNEYXRhKG9iajogYW55KSB7XHJcbiAgcmV0dXJuIGZvcm1hdEFycmF5KG9iaik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZXMgZm9yIGJ1bGsgaW5zZXJ0IGJhc2VkIG9uIHRoZSBpbnB1dCBkYXRhIGFycmF5XHJcbiAqIEBwYXJhbSB7YW55W119IGRhdGFBcnJheSBUaGUgaW5wdXQgZGF0YSBhcnJheSB0byBjcmVhdGUgYnVsayBpbnNlcnQgdmFsdWVzIGZyb21cclxuICogQHJldHVybnMge2FueVtdW119IFRoZSBmb3JtYXR0ZWQgYXJyYXkgb2YgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVsa0luc2VydFZhbHVlcyhkYXRhQXJyYXk6IGFueSkge1xyXG4gIGNvbnN0IGZpZWxkcyA9IGdldEJ1bGtJbnNlcnRGaWVsZHMoZGF0YUFycmF5KTtcclxuXHJcbiAgcmV0dXJuIGRhdGFBcnJheT8ubWFwKChpdGVtOmFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGZpZWxkcz8ubWFwKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBpdGVtW2ZpZWxkXTtcclxuXHJcbiAgICAgIC8vIEhhbmRsZSBuZXN0ZWQgb2JqZWN0IChub24tYXJyYXksIG5vbi1udWxsKVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdmFsdWUgJiZcclxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgIUFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHN1YkZpZWxkcyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcclxuICAgICAgICBjb25zdCBzdWJWYWx1ZXMgPSBzdWJGaWVsZHMubWFwKHN1YktleSA9PiB2YWx1ZVtzdWJLZXldKTtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIGFuIG9iamVjdCB3aXRoIGZpZWxkcyBhbmQgdmFsdWVzIGZvciBuZXN0ZWQgb2JqZWN0XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIEZpZWxkczogc3ViRmllbGRzLFxyXG4gICAgICAgICAgVmFsdWVzOiBzdWJWYWx1ZXNcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZXR1cm4gdGhlIHZhbHVlIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIG51bGxcclxuICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IG51bGw7XHJcbiAgICB9KTtcclxuICB9KTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBmaWVsZHMgZm9yIGJ1bGsgaW5zZXJ0IGJhc2VkIG9uIHRoZSBpbnB1dCBkYXRhIGFycmF5XHJcbiAqIEBwYXJhbSB7YW55W119IGRhdGFBcnJheSBUaGUgaW5wdXQgZGF0YSBhcnJheSB0byBjcmVhdGUgYnVsayBpbnNlcnQgZmllbGRzIGZyb21cclxuICogQHJldHVybnMge3N0cmluZ1tdfSBUaGUgZm9ybWF0dGVkIGFycmF5IG9mIGZpZWxkc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1bGtJbnNlcnRGaWVsZHMoZGF0YUFycmF5OiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgLyoqXHJcbiAgICogQSBTZXQgdG8ga2VlcCB0cmFjayBvZiB0aGUgZmllbGRzIGluIHRoZSBpbnB1dCBkYXRhIGFycmF5XHJcbiAgICogQHR5cGUge1NldDxzdHJpbmc+fVxyXG4gICAqL1xyXG4gIGNvbnN0IGZpZWxkU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgZGF0YUFycmF5Py5mb3JFYWNoKChpdGVtOmFueSkgPT4ge1xyXG4gICAgT2JqZWN0LmtleXMoaXRlbSk/LmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgZmllbGRTZXQuYWRkKGtleSk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIEFycmF5LmZyb20oZmllbGRTZXQpO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdHMgdGhlIGlucHV0IG9iamVjdCBpbnRvIGEgbmV3IGFycmF5IHdpdGggQXBwRmllbGRJRCBhbmQgVmFsdWUgcGFpcnNcclxuICogQHBhcmFtIGlucHV0IFRoZSBpbnB1dCBvYmplY3QgdG8gYmUgZm9ybWF0dGVkXHJcbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgYXJyYXkgd2l0aCBBcHBGaWVsZElEIGFuZCBWYWx1ZSBwYWlyc1xyXG4gKi9cclxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoaW5wdXQ6IGFueSkge1xyXG4gIGlmIChpbnB1dCAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhpbnB1dCk/Lmxlbmd0aCkge1xyXG4gICAgY29uc3QgbmV3T2JqID0gT2JqZWN0LmtleXMoaW5wdXQpLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgIGxldCBWYWx1ZTogYW55ID0gJyc7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGlucHV0W2tleV0pKSB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gJ0NoaWxkX1JlbGF0aW9uc2hpcCcpIHtcclxuICAgICAgICAgIFZhbHVlID0gaGFuZGxlQ2hpbGRSZWxhdGlvbnNoaXAoaW5wdXRba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFZhbHVlID0gaGFuZGxlY2hpbGQoaW5wdXRba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dFtrZXldID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIFZhbHVlID0gaGFuZGxlT2JqZWN0KGlucHV0W2tleV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFZhbHVlID0gaW5wdXRba2V5XTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBBcHBGaWVsZElEOiBrZXksIFZhbHVlIH07XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdPYmo7XHJcbiAgfVxyXG4gIHJldHVybiBpbnB1dDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhhbmRsZXMgdGhlIENoaWxkX1JlbGF0aW9uc2hpcCBrZXkgaW4gdGhlIGlucHV0IG9iamVjdFxyXG4gKiBAcGFyYW0gY2hpbGQgVGhlIHZhbHVlIG9mIHRoZSBDaGlsZF9SZWxhdGlvbnNoaXAga2V5XHJcbiAqIEByZXR1cm5zIFRoZSBKU09OIHN0cmluZ2lmaWVkIHZhbHVlIGlmIG5vdCBudWxsLCBlbXB0eSwgb3IgJ251bGwnOyBvdGhlcndpc2UgbnVsbFxyXG4gKi9cclxuZnVuY3Rpb24gaGFuZGxlQ2hpbGRSZWxhdGlvbnNoaXAoY2hpbGQ6IGFueSkge1xyXG4gIGlmIChjaGlsZCAhPT0gbnVsbCAmJiBjaGlsZCAhPT0gJycgJiYgY2hpbGQgIT09ICdudWxsJykge1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNoaWxkKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVjaGlsZChpbnB1dDogYW55KSB7XHJcbiAgY29uc3QgYXJyYXk6IGFueVtdID0gW107XHJcbiAgaWYgKGlucHV0ICE9PSBudWxsKSB7XHJcbiAgICBpbnB1dC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3T2JqID0gT2JqZWN0LmtleXMoZWxlbWVudCkubWFwKChrZXkpID0+IHtcclxuICAgICAgICBsZXQgVmFsdWU6IGFueSA9ICcnO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnRba2V5XSkpIHtcclxuICAgICAgICAgIFZhbHVlID0gaGFuZGxlY2hpbGQoZWxlbWVudFtrZXldKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50W2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBWYWx1ZSA9IGZvcm1hdEFycmF5KGVsZW1lbnRba2V5XSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIFZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyBBcHBGaWVsZElEOiBrZXksIFZhbHVlIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICBhcnJheS5wdXNoKG5ld09iaik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIYW5kbGVzIG9iamVjdCBrZXlzIGluIHRoZSBpbnB1dCBvYmplY3QgYmFzZWQgb24gc3BlY2lmaWMgY2FzZXNcclxuICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGJlIGhhbmRsZWRcclxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5naWZpZWQgdmFsdWUgYmFzZWQgb24gc3BlY2lmaWMgY2FzZXMgb3IgcmVjdXJzaXZlbHkgZm9ybWF0cyB0aGUgb2JqZWN0XHJcbiAqL1xyXG5mdW5jdGlvbiBoYW5kbGVPYmplY3Qob2JqOiBhbnkpIHtcclxuICBpZiAob2JqID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgc3dpdGNoIChPYmplY3Qua2V5cyhvYmopWzBdKSB7XHJcbiAgICBjYXNlICdDb250YWluZXInOlxyXG4gICAgY2FzZSAnU2V0dGluZ19WYWx1ZSc6XHJcbiAgICBjYXNlICdDaGlsZF9SZWxhdGlvbnNoaXAnOlxyXG4gICAgY2FzZSAnU2NyZWVuQ29uZmlndXJhdGlvbic6XHJcbiAgICBjYXNlICdBcHBPYmplY3RDb25maWd1cmF0aW9uJzpcclxuICAgIGNhc2UgJ1NjaGVtYUNvbmZpZyc6XHJcbiAgICBjYXNlICdDcml0ZXJpYSc6XHJcbiAgICBjYXNlICdBcHBseUNyaXRlcmlhJzpcclxuICAgIGNhc2UgJ1NMQVNldHRpbmcnOlxyXG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiBmb3JtYXRBcnJheShvYmopO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZXMgYmxhbmsgdmFsdWVzIGZyb20gdGhlIGlucHV0IG9iamVjdFxyXG4gKiBAcGFyYW0gZGF0YU9iaiBUaGUgaW5wdXQgb2JqZWN0IHRvIHJlbW92ZSBibGFuayB2YWx1ZXMgZnJvbVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUJsYW5rVmFsdWUoZGF0YU9iajogYW55KSB7XHJcbiAgT2JqZWN0LmtleXMoZGF0YU9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhT2JqW2tleV0pKSB7XHJcbiAgICAgIGlmIChkYXRhT2JqW2tleV0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIGRhdGFPYmpba2V5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhT2JqW2tleV0uZm9yRWFjaCgoaXRlbTogeyBWYWx1ZTogYW55IH0sIGk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGlzVmFsdWVCbGFuayhpdGVtKSkge1xyXG4gICAgICAgICAgICBkYXRhT2JqW2tleV0uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVtb3ZlQmxhbmtWYWx1ZShpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgfSBlbHNlIGlmIChkYXRhT2JqW2tleV0gJiYgdHlwZW9mIGRhdGFPYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFPYmpba2V5XSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgZGVsZXRlIGRhdGFPYmpba2V5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGRhdGFPYmpba2V5XSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKGlzVmFsdWVCbGFuayhkYXRhT2JqW2tleV0pKSB7XHJcbiAgICAgIGRlbGV0ZSBkYXRhT2JqW2tleV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmVzIGJsYW5rIGFycmF5IGtleXMgZnJvbSB0aGUgaW5wdXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBkYXRhT2JqIFRoZSBpbnB1dCBvYmplY3QgdG8gcmVtb3ZlIGJsYW5rIGFycmF5IGtleXMgZnJvbVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUJsYW5rQXJyYXlLZXlzKGRhdGFPYmo6IGFueSkge1xyXG4gIGRhdGFPYmouZm9yRWFjaCgoZWxlbWVudDogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ1ZhbHVlJykpIHtcclxuICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LlZhbHVlID09PSAnb2JqZWN0JyAmJiBlbGVtZW50LlZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgZGF0YU9iai5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNWYWx1ZUJsYW5rKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09ICdudWxsJyB8fCB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCc7XHJcbn0iXX0=
@@ -2,6 +2,9 @@
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  import { HttpHeaders } from '@angular/common/http';
4
4
  import { Common } from '../constants/common';
5
+ import { getAppObject, getDsqIdfromSelectedAppObjectDSQArray, } from './tab-app.util';
6
+ import { API } from '../constants/api-constants';
7
+ import { getFormBuilderType } from './form-builder.util';
5
8
  import { StorageConstants } from '../constants/storage-constants';
6
9
  import { SessionStorageService } from '../../auth/session-storage.service';
7
10
  import { EncryptionService } from '../../core/service/encryption.service';
@@ -107,6 +110,57 @@ export function getEditRecordId(response, fieldName) {
107
110
  }
108
111
  return recordId;
109
112
  }
113
+ /**
114
+ * Generate the fields schema based on the AppFields
115
+ *
116
+ * @param fields - The AppFields object
117
+ * @returns any - The generated fields schema
118
+ */
119
+ export function generateFieldsSchema(url, fields) {
120
+ let schema = {};
121
+ // const apiUrl = getApiUrl();
122
+ if (fields.hasOwnProperty('LookUpDetails')) {
123
+ const selectedAppObject = getAppObject(fields.LookUpDetails.LookupObject);
124
+ const dsqID = getDsqIdfromSelectedAppObjectDSQArray(selectedAppObject?.DataSourceQueries, fields.LookUpDetails.LookupObject, 'List');
125
+ schema = {
126
+ label: fields.DisplayName,
127
+ type: 'select',
128
+ key: fields.SystemDBFieldName,
129
+ input: true,
130
+ dataSrc: 'url',
131
+ valueProperty: fields.LookUpDetails.LookupField,
132
+ template: `<span>{{ item.${fields.LookUpDetails.DisplayField} }}</span>`,
133
+ selectValues: 'Result',
134
+ data: {
135
+ // url: `${apiUrl}${API.getListFromDsq}${dsqID}`,// API.getListFromDsq + dsqID,
136
+ url: `${url}${API.getListFromDsq}${dsqID}`, // API.getListFromDsq + dsqID,
137
+ headers: [
138
+ {
139
+ "key": StorageConstants.applicationCode,
140
+ "value": sessionStorageService.getSessionStorage(StorageConstants.applicationCode)
141
+ },
142
+ {
143
+ "key": StorageConstants.Authorization,
144
+ "value": sessionStorageService.getSessionStorage(StorageConstants.token)
145
+ },
146
+ {
147
+ "key": StorageConstants.TenantId,
148
+ "value": sessionStorageService.getSessionStorage(StorageConstants.TenantId)
149
+ }
150
+ ],
151
+ },
152
+ };
153
+ }
154
+ else {
155
+ schema = {
156
+ label: fields.DisplayName,
157
+ type: getFormBuilderType(fields.FieldType.DataType),
158
+ key: fields.SystemDBFieldName,
159
+ input: true,
160
+ };
161
+ }
162
+ return schema;
163
+ }
110
164
  /**
111
165
  * Get the HttpHeaders for form data requests
112
166
  *
@@ -123,4 +177,4 @@ export function getFormDataHeaders() {
123
177
  }
124
178
  return null;
125
179
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFM0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFFBQWEsRUFBRSxHQUFXO0lBQzlELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBYSxFQUFFLEtBQWE7SUFDM0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxRQUFhLEVBQUUsTUFBVztJQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7UUFDOUIsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQWE7SUFDdEMsSUFBRyxPQUFPLEVBQUMsQ0FBQztRQUNWLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxLQUFLLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUUsNkZBQTZGO1FBQzdGLGdCQUFnQjtRQUNoQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBRXZDLElBQUksQ0FBQyxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7WUFDeEIsd0NBQXdDO1lBQ3hDLE9BQU8sSUFBSSxXQUFXLENBQUM7Z0JBQ25CLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLGFBQWEsRUFBRSxXQUFXO2dCQUMxQixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7YUFDMUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksS0FBSyxFQUFFLENBQUM7WUFDZixxQkFBcUI7WUFDckIsT0FBTyxJQUFJLFdBQVcsQ0FBQztnQkFDbkIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTthQUMxQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsNkNBQTZDO1FBQzdDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUVILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFvQjtJQUN0RCxJQUFJLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDOUIsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWEsRUFBRSxTQUFjO0lBQzNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztJQUNwQixJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDekMsQ0FBQztTQUFNLENBQUM7UUFDTixRQUFRLEdBQUcsUUFBUSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLGlCQUFpQixDQUNyRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQ3ZCLENBQUM7SUFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixNQUFNLEVBQUUsS0FBSztZQUNiLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QgfSBmcm9tICcuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzcyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuY29uc3QgZW5jcnlwdGlvblNlcnZpY2UgPSBuZXcgRW5jcnlwdGlvblNlcnZpY2UoKTtcclxuY29uc3Qgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNlc3Npb25TdG9yYWdlU2VydmljZShlbmNyeXB0aW9uU2VydmljZSk7XHJcblxyXG4vKipcclxuICogRGVsZXRlIGEga2V5IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIGJlIGRlbGV0ZWRcclxuICogQHJldHVybnMgYW55IC0gVGhlIHVwZGF0ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlS2V5RnJvbVJlc3BvbnNlKHJlc3BvbnNlOiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgZGVsZXRlIHJlc3BvbnNlW2tleV07XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBwcmltYXJ5IGtleSBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGQgLSBUaGUgZmllbGQgdG8gYmUgcmVtb3ZlZCBhcyBwcmltYXJ5IGtleVxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgdXBkYXRlZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmltYXJ5S2V5KHJlc3BvbnNlOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuICBpZiAoZmllbGQpIHtcclxuICAgIGRlbGV0ZUtleUZyb21SZXNwb25zZShyZXNwb25zZSwgZmllbGQpO1xyXG4gIH1cclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgbXVsdGlwbGUgcHJpbWFyeSBrZXlzIGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBmaWVsZHMgLSBUaGUgYXJyYXkgb2YgZmllbGRzIHRvIGJlIHJlbW92ZWQgYXMgcHJpbWFyeSBrZXlzXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSB1cGRhdGVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShyZXNwb25zZTogYW55LCBmaWVsZHM6IGFueSkge1xyXG4gIGZpZWxkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgIGRlbGV0ZSByZXNwb25zZVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBIdHRwSGVhZGVycyBmb3IgQVBJIHJlcXVlc3RzXHJcbiAqXHJcbiAqIEByZXR1cm5zIEh0dHBIZWFkZXJzIHwgbnVsbCAtIFRoZSBIdHRwSGVhZGVycyBvYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlcnMoaGVhZGVycz86IGFueSkge1xyXG4gIGlmKGhlYWRlcnMpe1xyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMudG9rZW4pO1xyXG4gICAgLy8gY29uc3Qgc3RhdGljVG9rZW4gPSBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5zdGF0aWNUb2tlbik7XHJcbiAgICAvLyBwYXRjaCB2ZXJzaW9uXHJcbiAgICBjb25zdCBzdGF0aWNUb2tlbiA9IENvbW1vbi5zdGF0aWNUb2tlbjtcclxuICAgIFxyXG4gICAgaWYgKCF0b2tlbiAmJiBzdGF0aWNUb2tlbikge1xyXG4gICAgICAgIC8vIFRva2VuIGlzIGVtcHR5IGJ1dCBzdGF0aWNUb2tlbiBpcyBub3RcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogc3RhdGljVG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodG9rZW4pIHtcclxuICAgICAgICAvLyBUb2tlbiBpcyBub3QgZW1wdHlcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVuIGJvdGggdG9rZW5zIGFyZSBlbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBwcmltYXJ5IGtleSBmaWVsZHMgZnJvbSB0aGUgQXBwT2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSBhcHBPYmplY3QgLSBUaGUgQXBwT2JqZWN0XHJcbiAqIEByZXR1cm5zIEFwcEZpZWxkc1tdIHwgbnVsbCAtIFRoZSBhcnJheSBvZiBwcmltYXJ5IGtleSBmaWVsZHMgb3IgbnVsbFxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdDogQXBwT2JqZWN0KSB7XHJcbiAgaWYgKGFwcE9iamVjdD8uRmllbGRzPy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhcHBPYmplY3QuRmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLklzUHJpbWFyeUtleSk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBlZGl0IHJlY29yZCBJRCBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIGZpZWxkIG5hbWUgZm9yIHRoZSBlZGl0IHJlY29yZCBJRFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgZWRpdCByZWNvcmQgSURcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0UmVjb3JkSWQocmVzcG9uc2U6IGFueSwgZmllbGROYW1lOiBhbnkpIHtcclxuICBsZXQgcmVjb3JkSWQgPSBudWxsO1xyXG4gIGlmIChmaWVsZE5hbWUpIHtcclxuICAgIHJlY29yZElkID0gcmVzcG9uc2VbZmllbGROYW1lXSB8fCBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZWNvcmRJZCA9IHJlc3BvbnNlLklkIHx8IHJlc3BvbnNlLklEIHx8IG51bGw7XHJcbiAgfVxyXG4gIHJldHVybiByZWNvcmRJZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgSHR0cEhlYWRlcnMgZm9yIGZvcm0gZGF0YSByZXF1ZXN0c1xyXG4gKlxyXG4gKiBAcmV0dXJucyBIdHRwSGVhZGVycyB8IG51bGwgLSBUaGUgSHR0cEhlYWRlcnMgb2JqZWN0IG9yIG51bGxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRGF0YUhlYWRlcnMoKSB7XHJcbiAgY29uc3QgaXNUb2tlbiA9IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShcclxuICAgIFN0b3JhZ2VDb25zdGFudHMudG9rZW5cclxuICApO1xyXG4gIGlmIChpc1Rva2VuKSB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgQWNjZXB0OiAnKi8qJyxcclxuICAgICAgQXV0aG9yaXphdGlvbjogaXNUb2tlbixcclxuICAgICAgQXBwbGljYXRpb25Db2RlOiBDb21tb24uYXBwbGljYXRpb25Db2RlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUNMLFlBQVksRUFDWixxQ0FBcUMsR0FDdEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFM0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFFBQWEsRUFBRSxHQUFXO0lBQzlELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBYSxFQUFFLEtBQWE7SUFDM0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLHFCQUFxQixDQUFD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QUFDaEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLGlCQUFpQixDQUNyRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQ3ZCLENBQUM7SUFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixNQUFNLEVBQUUsS0FBSztZQUNiLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QgfSBmcm9tICcuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzcyc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG4gIGdldERzcUlkZnJvbVNlbGVjdGVkQXBwT2JqZWN0RFNRQXJyYXksXHJcbn0gZnJvbSAnLi90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBBcHBGaWVsZHMgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzcyc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0Rm9ybUJ1aWxkZXJUeXBlIH0gZnJvbSAnLi9mb3JtLWJ1aWxkZXIudXRpbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuY29uc3QgZW5jcnlwdGlvblNlcnZpY2UgPSBuZXcgRW5jcnlwdGlvblNlcnZpY2UoKTtcclxuY29uc3Qgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNlc3Npb25TdG9yYWdlU2VydmljZShlbmNyeXB0aW9uU2VydmljZSk7XHJcblxyXG4vKipcclxuICogRGVsZXRlIGEga2V5IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIGJlIGRlbGV0ZWRcclxuICogQHJldHVybnMgYW55IC0gVGhlIHVwZGF0ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlS2V5RnJvbVJlc3BvbnNlKHJlc3BvbnNlOiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgZGVsZXRlIHJlc3BvbnNlW2tleV07XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBwcmltYXJ5IGtleSBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGQgLSBUaGUgZmllbGQgdG8gYmUgcmVtb3ZlZCBhcyBwcmltYXJ5IGtleVxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgdXBkYXRlZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmltYXJ5S2V5KHJlc3BvbnNlOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuICBpZiAoZmllbGQpIHtcclxuICAgIGRlbGV0ZUtleUZyb21SZXNwb25zZShyZXNwb25zZSwgZmllbGQpO1xyXG4gIH1cclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgbXVsdGlwbGUgcHJpbWFyeSBrZXlzIGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBmaWVsZHMgLSBUaGUgYXJyYXkgb2YgZmllbGRzIHRvIGJlIHJlbW92ZWQgYXMgcHJpbWFyeSBrZXlzXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSB1cGRhdGVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShyZXNwb25zZTogYW55LCBmaWVsZHM6IGFueSkge1xyXG4gIGZpZWxkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgIGRlbGV0ZSByZXNwb25zZVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBIdHRwSGVhZGVycyBmb3IgQVBJIHJlcXVlc3RzXHJcbiAqXHJcbiAqIEByZXR1cm5zIEh0dHBIZWFkZXJzIHwgbnVsbCAtIFRoZSBIdHRwSGVhZGVycyBvYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlcnMoaGVhZGVycz86IGFueSkge1xyXG4gIGlmKGhlYWRlcnMpe1xyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMudG9rZW4pO1xyXG4gICAgLy8gY29uc3Qgc3RhdGljVG9rZW4gPSBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5zdGF0aWNUb2tlbik7XHJcbiAgICAvLyBwYXRjaCB2ZXJzaW9uXHJcbiAgICBjb25zdCBzdGF0aWNUb2tlbiA9IENvbW1vbi5zdGF0aWNUb2tlbjtcclxuICAgIFxyXG4gICAgaWYgKCF0b2tlbiAmJiBzdGF0aWNUb2tlbikge1xyXG4gICAgICAgIC8vIFRva2VuIGlzIGVtcHR5IGJ1dCBzdGF0aWNUb2tlbiBpcyBub3RcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogc3RhdGljVG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodG9rZW4pIHtcclxuICAgICAgICAvLyBUb2tlbiBpcyBub3QgZW1wdHlcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVuIGJvdGggdG9rZW5zIGFyZSBlbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBwcmltYXJ5IGtleSBmaWVsZHMgZnJvbSB0aGUgQXBwT2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSBhcHBPYmplY3QgLSBUaGUgQXBwT2JqZWN0XHJcbiAqIEByZXR1cm5zIEFwcEZpZWxkc1tdIHwgbnVsbCAtIFRoZSBhcnJheSBvZiBwcmltYXJ5IGtleSBmaWVsZHMgb3IgbnVsbFxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdDogQXBwT2JqZWN0KSB7XHJcbiAgaWYgKGFwcE9iamVjdD8uRmllbGRzPy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhcHBPYmplY3QuRmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLklzUHJpbWFyeUtleSk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBlZGl0IHJlY29yZCBJRCBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIGZpZWxkIG5hbWUgZm9yIHRoZSBlZGl0IHJlY29yZCBJRFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgZWRpdCByZWNvcmQgSURcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0UmVjb3JkSWQocmVzcG9uc2U6IGFueSwgZmllbGROYW1lOiBhbnkpIHtcclxuICBsZXQgcmVjb3JkSWQgPSBudWxsO1xyXG4gIGlmIChmaWVsZE5hbWUpIHtcclxuICAgIHJlY29yZElkID0gcmVzcG9uc2VbZmllbGROYW1lXSB8fCBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZWNvcmRJZCA9IHJlc3BvbnNlLklkIHx8IHJlc3BvbnNlLklEIHx8IG51bGw7XHJcbiAgfVxyXG4gIHJldHVybiByZWNvcmRJZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIHRoZSBmaWVsZHMgc2NoZW1hIGJhc2VkIG9uIHRoZSBBcHBGaWVsZHNcclxuICpcclxuICogQHBhcmFtIGZpZWxkcyAtIFRoZSBBcHBGaWVsZHMgb2JqZWN0XHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSBnZW5lcmF0ZWQgZmllbGRzIHNjaGVtYVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRmllbGRzU2NoZW1hKHVybDphbnksZmllbGRzOiBBcHBGaWVsZHMpIHtcclxuICBsZXQgc2NoZW1hID0ge307XHJcbiAgLy8gY29uc3QgYXBpVXJsID0gZ2V0QXBpVXJsKCk7XHJcbiAgaWYgKGZpZWxkcy5oYXNPd25Qcm9wZXJ0eSgnTG9va1VwRGV0YWlscycpKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZEFwcE9iamVjdDogQXBwT2JqZWN0ID0gZ2V0QXBwT2JqZWN0KFxyXG4gICAgICBmaWVsZHMuTG9va1VwRGV0YWlscy5Mb29rdXBPYmplY3RcclxuICAgICk7XHJcbiAgICBjb25zdCBkc3FJRCA9IGdldERzcUlkZnJvbVNlbGVjdGVkQXBwT2JqZWN0RFNRQXJyYXkoXHJcbiAgICAgIHNlbGVjdGVkQXBwT2JqZWN0Py5EYXRhU291cmNlUXVlcmllcyxcclxuICAgICAgZmllbGRzLkxvb2tVcERldGFpbHMuTG9va3VwT2JqZWN0LFxyXG4gICAgICAnTGlzdCdcclxuICAgICk7XHJcbiAgICBzY2hlbWEgPSB7XHJcbiAgICAgIGxhYmVsOiBmaWVsZHMuRGlzcGxheU5hbWUsXHJcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICBrZXk6IGZpZWxkcy5TeXN0ZW1EQkZpZWxkTmFtZSxcclxuICAgICAgaW5wdXQ6IHRydWUsXHJcbiAgICAgIGRhdGFTcmM6ICd1cmwnLFxyXG4gICAgICB2YWx1ZVByb3BlcnR5OiBmaWVsZHMuTG9va1VwRGV0YWlscy5Mb29rdXBGaWVsZCxcclxuICAgICAgdGVtcGxhdGU6IGA8c3Bhbj57eyBpdGVtLiR7ZmllbGRzLkxvb2tVcERldGFpbHMuRGlzcGxheUZpZWxkfSB9fTwvc3Bhbj5gLFxyXG4gICAgICBzZWxlY3RWYWx1ZXM6ICdSZXN1bHQnLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgLy8gdXJsOiBgJHthcGlVcmx9JHtBUEkuZ2V0TGlzdEZyb21Ec3F9JHtkc3FJRH1gLC8vIEFQSS5nZXRMaXN0RnJvbURzcSArIGRzcUlELFxyXG4gICAgICAgIHVybDogYCR7dXJsfSR7QVBJLmdldExpc3RGcm9tRHNxfSR7ZHNxSUR9YCwvLyBBUEkuZ2V0TGlzdEZyb21Ec3EgKyBkc3FJRCxcclxuICAgICAgICBoZWFkZXJzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwia2V5XCI6IFN0b3JhZ2VDb25zdGFudHMuYXBwbGljYXRpb25Db2RlLFxyXG4gICAgICAgICAgICBcInZhbHVlXCI6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcGxpY2F0aW9uQ29kZSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwia2V5XCI6IFN0b3JhZ2VDb25zdGFudHMuQXV0aG9yaXphdGlvbixcclxuICAgICAgICAgICAgXCJ2YWx1ZVwiOiBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy50b2tlbilcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwia2V5XCI6IFN0b3JhZ2VDb25zdGFudHMuVGVuYW50SWQsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIjogc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuVGVuYW50SWQpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzY2hlbWEgPSB7XHJcbiAgICAgIGxhYmVsOiBmaWVsZHMuRGlzcGxheU5hbWUsXHJcbiAgICAgIHR5cGU6IGdldEZvcm1CdWlsZGVyVHlwZShmaWVsZHMuRmllbGRUeXBlLkRhdGFUeXBlKSxcclxuICAgICAga2V5OiBmaWVsZHMuU3lzdGVtREJGaWVsZE5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgfTtcclxuICB9XHJcbiAgcmV0dXJuIHNjaGVtYTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgSHR0cEhlYWRlcnMgZm9yIGZvcm0gZGF0YSByZXF1ZXN0c1xyXG4gKlxyXG4gKiBAcmV0dXJucyBIdHRwSGVhZGVycyB8IG51bGwgLSBUaGUgSHR0cEhlYWRlcnMgb2JqZWN0IG9yIG51bGxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRGF0YUhlYWRlcnMoKSB7XHJcbiAgY29uc3QgaXNUb2tlbiA9IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShcclxuICAgIFN0b3JhZ2VDb25zdGFudHMudG9rZW5cclxuICApO1xyXG4gIGlmIChpc1Rva2VuKSB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgQWNjZXB0OiAnKi8qJyxcclxuICAgICAgQXV0aG9yaXphdGlvbjogaXNUb2tlbixcclxuICAgICAgQXBwbGljYXRpb25Db2RlOiBDb21tb24uYXBwbGljYXRpb25Db2RlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcbiJdfQ==