@aneoconsultingfr/armonik.api.angular 3.11.0-edge.89.ab31d7c → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/generated/applications-common.pb.mjs +22 -618
  3. package/esm2022/lib/generated/applications-fields.pb.mjs +231 -0
  4. package/esm2022/lib/generated/applications-filters.pb.mjs +349 -0
  5. package/esm2022/lib/generated/applications-service.pb.mjs +1 -1
  6. package/esm2022/lib/generated/applications-service.pbsc.mjs +6 -36
  7. package/esm2022/lib/generated/events-common.pb.mjs +19 -3
  8. package/esm2022/lib/generated/filters-common.pb.mjs +642 -0
  9. package/esm2022/lib/generated/partitions-common.pb.mjs +25 -433
  10. package/esm2022/lib/generated/partitions-fields.pb.mjs +233 -0
  11. package/esm2022/lib/generated/partitions-filters.pb.mjs +431 -0
  12. package/esm2022/lib/generated/partitions-service.pb.mjs +1 -1
  13. package/esm2022/lib/generated/partitions-service.pbsc.mjs +10 -10
  14. package/esm2022/lib/generated/results-common.pb.mjs +33 -565
  15. package/esm2022/lib/generated/results-fields.pb.mjs +234 -0
  16. package/esm2022/lib/generated/results-filters.pb.mjs +546 -0
  17. package/esm2022/lib/generated/results-service.pb.mjs +1 -1
  18. package/esm2022/lib/generated/results-service.pbsc.mjs +39 -39
  19. package/esm2022/lib/generated/sessions-common.pb.mjs +104 -822
  20. package/esm2022/lib/generated/sessions-fields.pb.mjs +504 -0
  21. package/esm2022/lib/generated/sessions-filters.pb.mjs +602 -0
  22. package/esm2022/lib/generated/sessions-service.pb.mjs +1 -1
  23. package/esm2022/lib/generated/sessions-service.pbsc.mjs +24 -24
  24. package/esm2022/lib/generated/tasks-common.pb.mjs +166 -900
  25. package/esm2022/lib/generated/tasks-fields.pb.mjs +513 -0
  26. package/esm2022/lib/generated/tasks-filters.pb.mjs +602 -0
  27. package/esm2022/lib/generated/tasks-service.pb.mjs +1 -1
  28. package/esm2022/lib/generated/tasks-service.pbsc.mjs +36 -36
  29. package/esm2022/lib/index.mjs +22 -12
  30. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs +11857 -10006
  31. package/fesm2022/aneoconsultingfr-armonik.api.angular.mjs.map +1 -1
  32. package/lib/generated/applications-common.pb.d.ts +11 -388
  33. package/lib/generated/applications-fields.pb.d.ts +153 -0
  34. package/lib/generated/applications-filters.pb.d.ts +222 -0
  35. package/lib/generated/applications-service.pbsc.d.ts +5 -21
  36. package/lib/generated/events-common.pb.d.ts +5 -0
  37. package/lib/generated/filters-common.pb.d.ts +408 -0
  38. package/lib/generated/partitions-common.pb.d.ts +15 -260
  39. package/lib/generated/partitions-fields.pb.d.ts +155 -0
  40. package/lib/generated/partitions-filters.pb.d.ts +240 -0
  41. package/lib/generated/partitions-service.pbsc.d.ts +9 -9
  42. package/lib/generated/results-common.pb.d.ts +24 -295
  43. package/lib/generated/results-fields.pb.d.ts +156 -0
  44. package/lib/generated/results-filters.pb.d.ts +315 -0
  45. package/lib/generated/results-service.pbsc.d.ts +38 -38
  46. package/lib/generated/sessions-common.pb.d.ts +76 -489
  47. package/lib/generated/sessions-fields.pb.d.ts +318 -0
  48. package/lib/generated/sessions-filters.pb.d.ts +327 -0
  49. package/lib/generated/sessions-service.pbsc.d.ts +19 -19
  50. package/lib/generated/tasks-common.pb.d.ts +139 -561
  51. package/lib/generated/tasks-fields.pb.d.ts +327 -0
  52. package/lib/generated/tasks-filters.pb.d.ts +327 -0
  53. package/lib/generated/tasks-service.pbsc.d.ts +31 -31
  54. package/lib/index.d.ts +21 -11
  55. package/package.json +2 -2
@@ -0,0 +1,349 @@
1
+ import { BinaryReader, BinaryWriter } from 'google-protobuf';
2
+ import * as armonikApiGrpcV1Applications001 from './applications-fields.pb';
3
+ import * as armonikApiGrpcV1002 from './filters-common.pb';
4
+ /**
5
+ * Message implementation for armonik.api.grpc.v1.applications.FilterField
6
+ */
7
+ export class FilterField {
8
+ static { this.id = 'armonik.api.grpc.v1.applications.FilterField'; }
9
+ /**
10
+ * Deserialize binary data to message
11
+ * @param instance message instance
12
+ */
13
+ static deserializeBinary(bytes) {
14
+ const instance = new FilterField();
15
+ FilterField.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
16
+ return instance;
17
+ }
18
+ /**
19
+ * Check all the properties and set default protobuf values if necessary
20
+ * @param _instance message instance
21
+ */
22
+ static refineValues(_instance) {
23
+ _instance.field = _instance.field || undefined;
24
+ }
25
+ /**
26
+ * Deserializes / reads binary message into message instance using provided binary reader
27
+ * @param _instance message instance
28
+ * @param _reader binary reader instance
29
+ */
30
+ static deserializeBinaryFromReader(_instance, _reader) {
31
+ while (_reader.nextField()) {
32
+ if (_reader.isEndGroup())
33
+ break;
34
+ switch (_reader.getFieldNumber()) {
35
+ case 1:
36
+ _instance.field = new armonikApiGrpcV1Applications001.ApplicationField();
37
+ _reader.readMessage(_instance.field, armonikApiGrpcV1Applications001.ApplicationField
38
+ .deserializeBinaryFromReader);
39
+ break;
40
+ case 2:
41
+ _instance.filterString = new armonikApiGrpcV1002.FilterString();
42
+ _reader.readMessage(_instance.filterString, armonikApiGrpcV1002.FilterString.deserializeBinaryFromReader);
43
+ break;
44
+ default:
45
+ _reader.skipField();
46
+ }
47
+ }
48
+ FilterField.refineValues(_instance);
49
+ }
50
+ /**
51
+ * Serializes a message to binary format using provided binary reader
52
+ * @param _instance message instance
53
+ * @param _writer binary writer instance
54
+ */
55
+ static serializeBinaryToWriter(_instance, _writer) {
56
+ if (_instance.field) {
57
+ _writer.writeMessage(1, _instance.field, armonikApiGrpcV1Applications001.ApplicationField.serializeBinaryToWriter);
58
+ }
59
+ if (_instance.filterString) {
60
+ _writer.writeMessage(2, _instance.filterString, armonikApiGrpcV1002.FilterString.serializeBinaryToWriter);
61
+ }
62
+ }
63
+ /**
64
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
65
+ * @param _value initial values object or instance of FilterField to deeply clone from
66
+ */
67
+ constructor(_value) {
68
+ this._valueCondition = FilterField.ValueConditionCase.none;
69
+ _value = _value || {};
70
+ this.field = _value.field
71
+ ? new armonikApiGrpcV1Applications001.ApplicationField(_value.field)
72
+ : undefined;
73
+ this.filterString = _value.filterString
74
+ ? new armonikApiGrpcV1002.FilterString(_value.filterString)
75
+ : undefined;
76
+ FilterField.refineValues(this);
77
+ }
78
+ get field() {
79
+ return this._field;
80
+ }
81
+ set field(value) {
82
+ this._field = value;
83
+ }
84
+ get filterString() {
85
+ return this._filterString;
86
+ }
87
+ set filterString(value) {
88
+ if (value !== undefined && value !== null) {
89
+ this._valueCondition = FilterField.ValueConditionCase.filterString;
90
+ }
91
+ this._filterString = value;
92
+ }
93
+ get valueCondition() {
94
+ return this._valueCondition;
95
+ }
96
+ /**
97
+ * Serialize message to binary data
98
+ * @param instance message instance
99
+ */
100
+ serializeBinary() {
101
+ const writer = new BinaryWriter();
102
+ FilterField.serializeBinaryToWriter(this, writer);
103
+ return writer.getResultBuffer();
104
+ }
105
+ /**
106
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
107
+ */
108
+ toObject() {
109
+ return {
110
+ field: this.field ? this.field.toObject() : undefined,
111
+ filterString: this.filterString ? this.filterString.toObject() : undefined
112
+ };
113
+ }
114
+ /**
115
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
116
+ */
117
+ toJSON() {
118
+ return this.toObject();
119
+ }
120
+ /**
121
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
122
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
123
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
124
+ */
125
+ toProtobufJSON(
126
+ // @ts-ignore
127
+ options) {
128
+ return {
129
+ field: this.field ? this.field.toProtobufJSON(options) : null,
130
+ filterString: this.filterString
131
+ ? this.filterString.toProtobufJSON(options)
132
+ : null
133
+ };
134
+ }
135
+ }
136
+ (function (FilterField) {
137
+ let ValueConditionCase;
138
+ (function (ValueConditionCase) {
139
+ ValueConditionCase[ValueConditionCase["none"] = 0] = "none";
140
+ ValueConditionCase[ValueConditionCase["filterString"] = 1] = "filterString";
141
+ })(ValueConditionCase = FilterField.ValueConditionCase || (FilterField.ValueConditionCase = {}));
142
+ })(FilterField || (FilterField = {}));
143
+ /**
144
+ * Message implementation for armonik.api.grpc.v1.applications.FiltersAnd
145
+ */
146
+ export class FiltersAnd {
147
+ static { this.id = 'armonik.api.grpc.v1.applications.FiltersAnd'; }
148
+ /**
149
+ * Deserialize binary data to message
150
+ * @param instance message instance
151
+ */
152
+ static deserializeBinary(bytes) {
153
+ const instance = new FiltersAnd();
154
+ FiltersAnd.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
155
+ return instance;
156
+ }
157
+ /**
158
+ * Check all the properties and set default protobuf values if necessary
159
+ * @param _instance message instance
160
+ */
161
+ static refineValues(_instance) {
162
+ _instance.and = _instance.and || [];
163
+ }
164
+ /**
165
+ * Deserializes / reads binary message into message instance using provided binary reader
166
+ * @param _instance message instance
167
+ * @param _reader binary reader instance
168
+ */
169
+ static deserializeBinaryFromReader(_instance, _reader) {
170
+ while (_reader.nextField()) {
171
+ if (_reader.isEndGroup())
172
+ break;
173
+ switch (_reader.getFieldNumber()) {
174
+ case 1:
175
+ const messageInitializer1 = new FilterField();
176
+ _reader.readMessage(messageInitializer1, FilterField.deserializeBinaryFromReader);
177
+ (_instance.and = _instance.and || []).push(messageInitializer1);
178
+ break;
179
+ default:
180
+ _reader.skipField();
181
+ }
182
+ }
183
+ FiltersAnd.refineValues(_instance);
184
+ }
185
+ /**
186
+ * Serializes a message to binary format using provided binary reader
187
+ * @param _instance message instance
188
+ * @param _writer binary writer instance
189
+ */
190
+ static serializeBinaryToWriter(_instance, _writer) {
191
+ if (_instance.and && _instance.and.length) {
192
+ _writer.writeRepeatedMessage(1, _instance.and, FilterField.serializeBinaryToWriter);
193
+ }
194
+ }
195
+ /**
196
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
197
+ * @param _value initial values object or instance of FiltersAnd to deeply clone from
198
+ */
199
+ constructor(_value) {
200
+ _value = _value || {};
201
+ this.and = (_value.and || []).map(m => new FilterField(m));
202
+ FiltersAnd.refineValues(this);
203
+ }
204
+ get and() {
205
+ return this._and;
206
+ }
207
+ set and(value) {
208
+ this._and = value;
209
+ }
210
+ /**
211
+ * Serialize message to binary data
212
+ * @param instance message instance
213
+ */
214
+ serializeBinary() {
215
+ const writer = new BinaryWriter();
216
+ FiltersAnd.serializeBinaryToWriter(this, writer);
217
+ return writer.getResultBuffer();
218
+ }
219
+ /**
220
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
221
+ */
222
+ toObject() {
223
+ return {
224
+ and: (this.and || []).map(m => m.toObject())
225
+ };
226
+ }
227
+ /**
228
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
229
+ */
230
+ toJSON() {
231
+ return this.toObject();
232
+ }
233
+ /**
234
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
235
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
236
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
237
+ */
238
+ toProtobufJSON(
239
+ // @ts-ignore
240
+ options) {
241
+ return {
242
+ and: (this.and || []).map(m => m.toProtobufJSON(options))
243
+ };
244
+ }
245
+ }
246
+ /**
247
+ * Message implementation for armonik.api.grpc.v1.applications.Filters
248
+ */
249
+ export class Filters {
250
+ static { this.id = 'armonik.api.grpc.v1.applications.Filters'; }
251
+ /**
252
+ * Deserialize binary data to message
253
+ * @param instance message instance
254
+ */
255
+ static deserializeBinary(bytes) {
256
+ const instance = new Filters();
257
+ Filters.deserializeBinaryFromReader(instance, new BinaryReader(bytes));
258
+ return instance;
259
+ }
260
+ /**
261
+ * Check all the properties and set default protobuf values if necessary
262
+ * @param _instance message instance
263
+ */
264
+ static refineValues(_instance) {
265
+ _instance.or = _instance.or || [];
266
+ }
267
+ /**
268
+ * Deserializes / reads binary message into message instance using provided binary reader
269
+ * @param _instance message instance
270
+ * @param _reader binary reader instance
271
+ */
272
+ static deserializeBinaryFromReader(_instance, _reader) {
273
+ while (_reader.nextField()) {
274
+ if (_reader.isEndGroup())
275
+ break;
276
+ switch (_reader.getFieldNumber()) {
277
+ case 1:
278
+ const messageInitializer1 = new FiltersAnd();
279
+ _reader.readMessage(messageInitializer1, FiltersAnd.deserializeBinaryFromReader);
280
+ (_instance.or = _instance.or || []).push(messageInitializer1);
281
+ break;
282
+ default:
283
+ _reader.skipField();
284
+ }
285
+ }
286
+ Filters.refineValues(_instance);
287
+ }
288
+ /**
289
+ * Serializes a message to binary format using provided binary reader
290
+ * @param _instance message instance
291
+ * @param _writer binary writer instance
292
+ */
293
+ static serializeBinaryToWriter(_instance, _writer) {
294
+ if (_instance.or && _instance.or.length) {
295
+ _writer.writeRepeatedMessage(1, _instance.or, FiltersAnd.serializeBinaryToWriter);
296
+ }
297
+ }
298
+ /**
299
+ * Message constructor. Initializes the properties and applies default Protobuf values if necessary
300
+ * @param _value initial values object or instance of Filters to deeply clone from
301
+ */
302
+ constructor(_value) {
303
+ _value = _value || {};
304
+ this.or = (_value.or || []).map(m => new FiltersAnd(m));
305
+ Filters.refineValues(this);
306
+ }
307
+ get or() {
308
+ return this._or;
309
+ }
310
+ set or(value) {
311
+ this._or = value;
312
+ }
313
+ /**
314
+ * Serialize message to binary data
315
+ * @param instance message instance
316
+ */
317
+ serializeBinary() {
318
+ const writer = new BinaryWriter();
319
+ Filters.serializeBinaryToWriter(this, writer);
320
+ return writer.getResultBuffer();
321
+ }
322
+ /**
323
+ * Cast message to standard JavaScript object (all non-primitive values are deeply cloned)
324
+ */
325
+ toObject() {
326
+ return {
327
+ or: (this.or || []).map(m => m.toObject())
328
+ };
329
+ }
330
+ /**
331
+ * Convenience method to support JSON.stringify(message), replicates the structure of toObject()
332
+ */
333
+ toJSON() {
334
+ return this.toObject();
335
+ }
336
+ /**
337
+ * Cast message to JSON using protobuf JSON notation: https://developers.google.com/protocol-buffers/docs/proto3#json
338
+ * Attention: output differs from toObject() e.g. enums are represented as names and not as numbers, Timestamp is an ISO Date string format etc.
339
+ * If the message itself or some of descendant messages is google.protobuf.Any, you MUST provide a message pool as options. If not, the messagePool is not required
340
+ */
341
+ toProtobufJSON(
342
+ // @ts-ignore
343
+ options) {
344
+ return {
345
+ or: (this.or || []).map(m => m.toProtobufJSON(options))
346
+ };
347
+ }
348
+ }
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLWZpbHRlcnMucGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvYXBwbGljYXRpb25zLWZpbHRlcnMucGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RSxPQUFPLEtBQUssK0JBQStCLE1BQU0sMEJBQTBCLENBQUM7QUFDNUUsT0FBTyxLQUFLLG1CQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQzNEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7YUFDZixPQUFFLEdBQUcsOENBQThDLEFBQWpELENBQWtEO0lBRTNEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFpQjtRQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFzQjtRQUN4QyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDJCQUEyQixDQUNoQyxTQUFzQixFQUN0QixPQUFxQjtRQUVyQixPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMxQixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQUUsTUFBTTtZQUVoQyxRQUFRLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDaEMsS0FBSyxDQUFD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QUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYztJQUNaLGFBQWE7SUFDYixPQUErQjtRQUUvQixPQUFPO1lBQ0wsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hELENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHtcbiAgR3JwY01lc3NhZ2UsXG4gIFJlY3Vyc2l2ZVBhcnRpYWwsXG4gIFRvUHJvdG9idWZKU09OT3B0aW9uc1xufSBmcm9tICdAbmd4LWdycGMvY29tbW9uJztcbmltcG9ydCB7IEJpbmFyeVJlYWRlciwgQmluYXJ5V3JpdGVyLCBCeXRlU291cmNlIH0gZnJvbSAnZ29vZ2xlLXByb3RvYnVmJztcbmltcG9ydCAqIGFzIGdvb2dsZVByb3RvYnVmMDAwIGZyb20gJ0BuZ3gtZ3JwYy93ZWxsLWtub3duLXR5cGVzJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDEgZnJvbSAnLi9hcHBsaWNhdGlvbnMtZmllbGRzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjEwMDIgZnJvbSAnLi9maWx0ZXJzLWNvbW1vbi5wYic7XG4vKipcbiAqIE1lc3NhZ2UgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkZpbHRlckZpZWxkXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWx0ZXJGaWVsZCBpbXBsZW1lbnRzIEdycGNNZXNzYWdlIHtcbiAgc3RhdGljIGlkID0gJ2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkZpbHRlckZpZWxkJztcblxuICAvKipcbiAgICogRGVzZXJpYWxpemUgYmluYXJ5IGRhdGEgdG8gbWVzc2FnZVxuICAgKiBAcGFyYW0gaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5KGJ5dGVzOiBCeXRlU291cmNlKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRmlsdGVyRmllbGQoKTtcbiAgICBGaWx0ZXJGaWVsZC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIoaW5zdGFuY2UsIG5ldyBCaW5hcnlSZWFkZXIoYnl0ZXMpKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgYWxsIHRoZSBwcm9wZXJ0aWVzIGFuZCBzZXQgZGVmYXVsdCBwcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHJlZmluZVZhbHVlcyhfaW5zdGFuY2U6IEZpbHRlckZpZWxkKSB7XG4gICAgX2luc3RhbmNlLmZpZWxkID0gX2luc3RhbmNlLmZpZWxkIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgLyByZWFkcyBiaW5hcnkgbWVzc2FnZSBpbnRvIG1lc3NhZ2UgaW5zdGFuY2UgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF9yZWFkZXIgYmluYXJ5IHJlYWRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihcbiAgICBfaW5zdGFuY2U6IEZpbHRlckZpZWxkLFxuICAgIF9yZWFkZXI6IEJpbmFyeVJlYWRlclxuICApIHtcbiAgICB3aGlsZSAoX3JlYWRlci5uZXh0RmllbGQoKSkge1xuICAgICAgaWYgKF9yZWFkZXIuaXNFbmRHcm91cCgpKSBicmVhaztcblxuICAgICAgc3dpdGNoIChfcmVhZGVyLmdldEZpZWxkTnVtYmVyKCkpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIF9pbnN0YW5jZS5maWVsZCA9IG5ldyBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQoKTtcbiAgICAgICAgICBfcmVhZGVyLnJlYWRNZXNzYWdlKFxuICAgICAgICAgICAgX2luc3RhbmNlLmZpZWxkLFxuICAgICAgICAgICAgYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMS5BcHBsaWNhdGlvbkZpZWxkXG4gICAgICAgICAgICAgIC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXJcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgX2luc3RhbmNlLmZpbHRlclN0cmluZyA9IG5ldyBhcm1vbmlrQXBpR3JwY1YxMDAyLkZpbHRlclN0cmluZygpO1xuICAgICAgICAgIF9yZWFkZXIucmVhZE1lc3NhZ2UoXG4gICAgICAgICAgICBfaW5zdGFuY2UuZmlsdGVyU3RyaW5nLFxuICAgICAgICAgICAgYXJtb25pa0FwaUdycGNWMTAwMi5GaWx0ZXJTdHJpbmcuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBfcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEZpbHRlckZpZWxkLnJlZmluZVZhbHVlcyhfaW5zdGFuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSBtZXNzYWdlIHRvIGJpbmFyeSBmb3JtYXQgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF93cml0ZXIgYmluYXJ5IHdyaXRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKFxuICAgIF9pbnN0YW5jZTogRmlsdGVyRmllbGQsXG4gICAgX3dyaXRlcjogQmluYXJ5V3JpdGVyXG4gICkge1xuICAgIGlmIChfaW5zdGFuY2UuZmllbGQpIHtcbiAgICAgIF93cml0ZXIud3JpdGVNZXNzYWdlKFxuICAgICAgICAxLFxuICAgICAgICBfaW5zdGFuY2UuZmllbGQgYXMgYW55LFxuICAgICAgICBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChfaW5zdGFuY2UuZmlsdGVyU3RyaW5nKSB7XG4gICAgICBfd3JpdGVyLndyaXRlTWVzc2FnZShcbiAgICAgICAgMixcbiAgICAgICAgX2luc3RhbmNlLmZpbHRlclN0cmluZyBhcyBhbnksXG4gICAgICAgIGFybW9uaWtBcGlHcnBjVjEwMDIuRmlsdGVyU3RyaW5nLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpZWxkPzogYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMS5BcHBsaWNhdGlvbkZpZWxkO1xuICBwcml2YXRlIF9maWx0ZXJTdHJpbmc/OiBhcm1vbmlrQXBpR3JwY1YxMDAyLkZpbHRlclN0cmluZztcblxuICBwcml2YXRlIF92YWx1ZUNvbmRpdGlvbjogRmlsdGVyRmllbGQuVmFsdWVDb25kaXRpb25DYXNlID1cbiAgICBGaWx0ZXJGaWVsZC5WYWx1ZUNvbmRpdGlvbkNhc2Uubm9uZTtcblxuICAvKipcbiAgICogTWVzc2FnZSBjb25zdHJ1Y3Rvci4gSW5pdGlhbGl6ZXMgdGhlIHByb3BlcnRpZXMgYW5kIGFwcGxpZXMgZGVmYXVsdCBQcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfdmFsdWUgaW5pdGlhbCB2YWx1ZXMgb2JqZWN0IG9yIGluc3RhbmNlIG9mIEZpbHRlckZpZWxkIHRvIGRlZXBseSBjbG9uZSBmcm9tXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfdmFsdWU/OiBSZWN1cnNpdmVQYXJ0aWFsPEZpbHRlckZpZWxkLkFzT2JqZWN0Pikge1xuICAgIF92YWx1ZSA9IF92YWx1ZSB8fCB7fTtcbiAgICB0aGlzLmZpZWxkID0gX3ZhbHVlLmZpZWxkXG4gICAgICA/IG5ldyBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQoX3ZhbHVlLmZpZWxkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5maWx0ZXJTdHJpbmcgPSBfdmFsdWUuZmlsdGVyU3RyaW5nXG4gICAgICA/IG5ldyBhcm1vbmlrQXBpR3JwY1YxMDAyLkZpbHRlclN0cmluZyhfdmFsdWUuZmlsdGVyU3RyaW5nKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgRmlsdGVyRmllbGQucmVmaW5lVmFsdWVzKHRoaXMpO1xuICB9XG4gIGdldCBmaWVsZCgpOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWVsZDtcbiAgfVxuICBzZXQgZmllbGQoXG4gICAgdmFsdWU6IGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDEuQXBwbGljYXRpb25GaWVsZCB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xuICB9XG4gIGdldCBmaWx0ZXJTdHJpbmcoKTogYXJtb25pa0FwaUdycGNWMTAwMi5GaWx0ZXJTdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTdHJpbmc7XG4gIH1cbiAgc2V0IGZpbHRlclN0cmluZyh2YWx1ZTogYXJtb25pa0FwaUdycGNWMTAwMi5GaWx0ZXJTdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5fdmFsdWVDb25kaXRpb24gPSBGaWx0ZXJGaWVsZC5WYWx1ZUNvbmRpdGlvbkNhc2UuZmlsdGVyU3RyaW5nO1xuICAgIH1cbiAgICB0aGlzLl9maWx0ZXJTdHJpbmcgPSB2YWx1ZTtcbiAgfVxuICBnZXQgdmFsdWVDb25kaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQ29uZGl0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSBtZXNzYWdlIHRvIGJpbmFyeSBkYXRhXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzZXJpYWxpemVCaW5hcnkoKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gbmV3IEJpbmFyeVdyaXRlcigpO1xuICAgIEZpbHRlckZpZWxkLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gICAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgKGFsbCBub24tcHJpbWl0aXZlIHZhbHVlcyBhcmUgZGVlcGx5IGNsb25lZClcbiAgICovXG4gIHRvT2JqZWN0KCk6IEZpbHRlckZpZWxkLkFzT2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGQ6IHRoaXMuZmllbGQgPyB0aGlzLmZpZWxkLnRvT2JqZWN0KCkgOiB1bmRlZmluZWQsXG4gICAgICBmaWx0ZXJTdHJpbmc6IHRoaXMuZmlsdGVyU3RyaW5nID8gdGhpcy5maWx0ZXJTdHJpbmcudG9PYmplY3QoKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHN1cHBvcnQgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSksIHJlcGxpY2F0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0b09iamVjdCgpXG4gICAqL1xuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9PYmplY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gSlNPTiB1c2luZyBwcm90b2J1ZiBKU09OIG5vdGF0aW9uOiBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wcm90b2NvbC1idWZmZXJzL2RvY3MvcHJvdG8zI2pzb25cbiAgICogQXR0ZW50aW9uOiBvdXRwdXQgZGlmZmVycyBmcm9tIHRvT2JqZWN0KCkgZS5nLiBlbnVtcyBhcmUgcmVwcmVzZW50ZWQgYXMgbmFtZXMgYW5kIG5vdCBhcyBudW1iZXJzLCBUaW1lc3RhbXAgaXMgYW4gSVNPIERhdGUgc3RyaW5nIGZvcm1hdCBldGMuXG4gICAqIElmIHRoZSBtZXNzYWdlIGl0c2VsZiBvciBzb21lIG9mIGRlc2NlbmRhbnQgbWVzc2FnZXMgaXMgZ29vZ2xlLnByb3RvYnVmLkFueSwgeW91IE1VU1QgcHJvdmlkZSBhIG1lc3NhZ2UgcG9vbCBhcyBvcHRpb25zLiBJZiBub3QsIHRoZSBtZXNzYWdlUG9vbCBpcyBub3QgcmVxdWlyZWRcbiAgICovXG4gIHRvUHJvdG9idWZKU09OKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcHRpb25zPzogVG9Qcm90b2J1ZkpTT05PcHRpb25zXG4gICk6IEZpbHRlckZpZWxkLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGQ6IHRoaXMuZmllbGQgPyB0aGlzLmZpZWxkLnRvUHJvdG9idWZKU09OKG9wdGlvbnMpIDogbnVsbCxcbiAgICAgIGZpbHRlclN0cmluZzogdGhpcy5maWx0ZXJTdHJpbmdcbiAgICAgICAgPyB0aGlzLmZpbHRlclN0cmluZy50b1Byb3RvYnVmSlNPTihvcHRpb25zKVxuICAgICAgICA6IG51bGxcbiAgICB9O1xuICB9XG59XG5leHBvcnQgbW9kdWxlIEZpbHRlckZpZWxkIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciBGaWx0ZXJGaWVsZFxuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc09iamVjdCB7XG4gICAgZmllbGQ/OiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQuQXNPYmplY3Q7XG4gICAgZmlsdGVyU3RyaW5nPzogYXJtb25pa0FwaUdycGNWMTAwMi5GaWx0ZXJTdHJpbmcuQXNPYmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogUHJvdG9idWYgSlNPTiByZXByZXNlbnRhdGlvbiBmb3IgRmlsdGVyRmllbGRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNQcm90b2J1ZkpTT04ge1xuICAgIGZpZWxkOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxLkFwcGxpY2F0aW9uRmllbGQuQXNQcm90b2J1ZkpTT04gfCBudWxsO1xuICAgIGZpbHRlclN0cmluZzogYXJtb25pa0FwaUdycGNWMTAwMi5GaWx0ZXJTdHJpbmcuQXNQcm90b2J1ZkpTT04gfCBudWxsO1xuICB9XG4gIGV4cG9ydCBlbnVtIFZhbHVlQ29uZGl0aW9uQ2FzZSB7XG4gICAgbm9uZSA9IDAsXG4gICAgZmlsdGVyU3RyaW5nID0gMVxuICB9XG59XG5cbi8qKlxuICogTWVzc2FnZSBpbXBsZW1lbnRhdGlvbiBmb3IgYXJtb25pay5hcGkuZ3JwYy52MS5hcHBsaWNhdGlvbnMuRmlsdGVyc0FuZFxuICovXG5leHBvcnQgY2xhc3MgRmlsdGVyc0FuZCBpbXBsZW1lbnRzIEdycGNNZXNzYWdlIHtcbiAgc3RhdGljIGlkID0gJ2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkZpbHRlcnNBbmQnO1xuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZSBiaW5hcnkgZGF0YSB0byBtZXNzYWdlXG4gICAqIEBwYXJhbSBpbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgZGVzZXJpYWxpemVCaW5hcnkoYnl0ZXM6IEJ5dGVTb3VyY2UpIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBGaWx0ZXJzQW5kKCk7XG4gICAgRmlsdGVyc0FuZC5kZXNlcmlhbGl6ZUJpbmFyeUZyb21SZWFkZXIoaW5zdGFuY2UsIG5ldyBCaW5hcnlSZWFkZXIoYnl0ZXMpKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgYWxsIHRoZSBwcm9wZXJ0aWVzIGFuZCBzZXQgZGVmYXVsdCBwcm90b2J1ZiB2YWx1ZXMgaWYgbmVjZXNzYXJ5XG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHJlZmluZVZhbHVlcyhfaW5zdGFuY2U6IEZpbHRlcnNBbmQpIHtcbiAgICBfaW5zdGFuY2UuYW5kID0gX2luc3RhbmNlLmFuZCB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgLyByZWFkcyBiaW5hcnkgbWVzc2FnZSBpbnRvIG1lc3NhZ2UgaW5zdGFuY2UgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF9yZWFkZXIgYmluYXJ5IHJlYWRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihcbiAgICBfaW5zdGFuY2U6IEZpbHRlcnNBbmQsXG4gICAgX3JlYWRlcjogQmluYXJ5UmVhZGVyXG4gICkge1xuICAgIHdoaWxlIChfcmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgICBpZiAoX3JlYWRlci5pc0VuZEdyb3VwKCkpIGJyZWFrO1xuXG4gICAgICBzd2l0Y2ggKF9yZWFkZXIuZ2V0RmllbGROdW1iZXIoKSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgY29uc3QgbWVzc2FnZUluaXRpYWxpemVyMSA9IG5ldyBGaWx0ZXJGaWVsZCgpO1xuICAgICAgICAgIF9yZWFkZXIucmVhZE1lc3NhZ2UoXG4gICAgICAgICAgICBtZXNzYWdlSW5pdGlhbGl6ZXIxLFxuICAgICAgICAgICAgRmlsdGVyRmllbGQuZGVzZXJpYWxpemVCaW5hcnlGcm9tUmVhZGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgICAoX2luc3RhbmNlLmFuZCA9IF9pbnN0YW5jZS5hbmQgfHwgW10pLnB1c2gobWVzc2FnZUluaXRpYWxpemVyMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgX3JlYWRlci5za2lwRmllbGQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBGaWx0ZXJzQW5kLnJlZmluZVZhbHVlcyhfaW5zdGFuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgYSBtZXNzYWdlIHRvIGJpbmFyeSBmb3JtYXQgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF93cml0ZXIgYmluYXJ5IHdyaXRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKF9pbnN0YW5jZTogRmlsdGVyc0FuZCwgX3dyaXRlcjogQmluYXJ5V3JpdGVyKSB7XG4gICAgaWYgKF9pbnN0YW5jZS5hbmQgJiYgX2luc3RhbmNlLmFuZC5sZW5ndGgpIHtcbiAgICAgIF93cml0ZXIud3JpdGVSZXBlYXRlZE1lc3NhZ2UoXG4gICAgICAgIDEsXG4gICAgICAgIF9pbnN0YW5jZS5hbmQgYXMgYW55LFxuICAgICAgICBGaWx0ZXJGaWVsZC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hbmQ/OiBGaWx0ZXJGaWVsZFtdO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGNvbnN0cnVjdG9yLiBJbml0aWFsaXplcyB0aGUgcHJvcGVydGllcyBhbmQgYXBwbGllcyBkZWZhdWx0IFByb3RvYnVmIHZhbHVlcyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIF92YWx1ZSBpbml0aWFsIHZhbHVlcyBvYmplY3Qgb3IgaW5zdGFuY2Ugb2YgRmlsdGVyc0FuZCB0byBkZWVwbHkgY2xvbmUgZnJvbVxuICAgKi9cbiAgY29uc3RydWN0b3IoX3ZhbHVlPzogUmVjdXJzaXZlUGFydGlhbDxGaWx0ZXJzQW5kLkFzT2JqZWN0Pikge1xuICAgIF92YWx1ZSA9IF92YWx1ZSB8fCB7fTtcbiAgICB0aGlzLmFuZCA9IChfdmFsdWUuYW5kIHx8IFtdKS5tYXAobSA9PiBuZXcgRmlsdGVyRmllbGQobSkpO1xuICAgIEZpbHRlcnNBbmQucmVmaW5lVmFsdWVzKHRoaXMpO1xuICB9XG4gIGdldCBhbmQoKTogRmlsdGVyRmllbGRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FuZDtcbiAgfVxuICBzZXQgYW5kKHZhbHVlOiBGaWx0ZXJGaWVsZFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYW5kID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIG1lc3NhZ2UgdG8gYmluYXJ5IGRhdGFcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHNlcmlhbGl6ZUJpbmFyeSgpIHtcbiAgICBjb25zdCB3cml0ZXIgPSBuZXcgQmluYXJ5V3JpdGVyKCk7XG4gICAgRmlsdGVyc0FuZC5zZXJpYWxpemVCaW5hcnlUb1dyaXRlcih0aGlzLCB3cml0ZXIpO1xuICAgIHJldHVybiB3cml0ZXIuZ2V0UmVzdWx0QnVmZmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzdCBtZXNzYWdlIHRvIHN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IChhbGwgbm9uLXByaW1pdGl2ZSB2YWx1ZXMgYXJlIGRlZXBseSBjbG9uZWQpXG4gICAqL1xuICB0b09iamVjdCgpOiBGaWx0ZXJzQW5kLkFzT2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgYW5kOiAodGhpcy5hbmQgfHwgW10pLm1hcChtID0+IG0udG9PYmplY3QoKSlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBzdXBwb3J0IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpLCByZXBsaWNhdGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdG9PYmplY3QoKVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvT2JqZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzdCBtZXNzYWdlIHRvIEpTT04gdXNpbmcgcHJvdG9idWYgSlNPTiBub3RhdGlvbjogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3Byb3RvMyNqc29uXG4gICAqIEF0dGVudGlvbjogb3V0cHV0IGRpZmZlcnMgZnJvbSB0b09iamVjdCgpIGUuZy4gZW51bXMgYXJlIHJlcHJlc2VudGVkIGFzIG5hbWVzIGFuZCBub3QgYXMgbnVtYmVycywgVGltZXN0YW1wIGlzIGFuIElTTyBEYXRlIHN0cmluZyBmb3JtYXQgZXRjLlxuICAgKiBJZiB0aGUgbWVzc2FnZSBpdHNlbGYgb3Igc29tZSBvZiBkZXNjZW5kYW50IG1lc3NhZ2VzIGlzIGdvb2dsZS5wcm90b2J1Zi5BbnksIHlvdSBNVVNUIHByb3ZpZGUgYSBtZXNzYWdlIHBvb2wgYXMgb3B0aW9ucy4gSWYgbm90LCB0aGUgbWVzc2FnZVBvb2wgaXMgbm90IHJlcXVpcmVkXG4gICAqL1xuICB0b1Byb3RvYnVmSlNPTihcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3B0aW9ucz86IFRvUHJvdG9idWZKU09OT3B0aW9uc1xuICApOiBGaWx0ZXJzQW5kLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgYW5kOiAodGhpcy5hbmQgfHwgW10pLm1hcChtID0+IG0udG9Qcm90b2J1ZkpTT04ob3B0aW9ucykpXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IG1vZHVsZSBGaWx0ZXJzQW5kIHtcbiAgLyoqXG4gICAqIFN0YW5kYXJkIEphdmFTY3JpcHQgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciBGaWx0ZXJzQW5kXG4gICAqL1xuICBleHBvcnQgaW50ZXJmYWNlIEFzT2JqZWN0IHtcbiAgICBhbmQ/OiBGaWx0ZXJGaWVsZC5Bc09iamVjdFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3RvYnVmIEpTT04gcmVwcmVzZW50YXRpb24gZm9yIEZpbHRlcnNBbmRcbiAgICovXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXNQcm90b2J1ZkpTT04ge1xuICAgIGFuZDogRmlsdGVyRmllbGQuQXNQcm90b2J1ZkpTT05bXSB8IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXNzYWdlIGltcGxlbWVudGF0aW9uIGZvciBhcm1vbmlrLmFwaS5ncnBjLnYxLmFwcGxpY2F0aW9ucy5GaWx0ZXJzXG4gKi9cbmV4cG9ydCBjbGFzcyBGaWx0ZXJzIGltcGxlbWVudHMgR3JwY01lc3NhZ2Uge1xuICBzdGF0aWMgaWQgPSAnYXJtb25pay5hcGkuZ3JwYy52MS5hcHBsaWNhdGlvbnMuRmlsdGVycyc7XG5cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplIGJpbmFyeSBkYXRhIHRvIG1lc3NhZ2VcbiAgICogQHBhcmFtIGluc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZUJpbmFyeShieXRlczogQnl0ZVNvdXJjZSkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEZpbHRlcnMoKTtcbiAgICBGaWx0ZXJzLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihpbnN0YW5jZSwgbmV3IEJpbmFyeVJlYWRlcihieXRlcykpO1xuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBhbGwgdGhlIHByb3BlcnRpZXMgYW5kIHNldCBkZWZhdWx0IHByb3RvYnVmIHZhbHVlcyBpZiBuZWNlc3NhcnlcbiAgICogQHBhcmFtIF9pbnN0YW5jZSBtZXNzYWdlIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgcmVmaW5lVmFsdWVzKF9pbnN0YW5jZTogRmlsdGVycykge1xuICAgIF9pbnN0YW5jZS5vciA9IF9pbnN0YW5jZS5vciB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlcmlhbGl6ZXMgLyByZWFkcyBiaW5hcnkgbWVzc2FnZSBpbnRvIG1lc3NhZ2UgaW5zdGFuY2UgdXNpbmcgcHJvdmlkZWQgYmluYXJ5IHJlYWRlclxuICAgKiBAcGFyYW0gX2luc3RhbmNlIG1lc3NhZ2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIF9yZWFkZXIgYmluYXJ5IHJlYWRlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlcihcbiAgICBfaW5zdGFuY2U6IEZpbHRlcnMsXG4gICAgX3JlYWRlcjogQmluYXJ5UmVhZGVyXG4gICkge1xuICAgIHdoaWxlIChfcmVhZGVyLm5leHRGaWVsZCgpKSB7XG4gICAgICBpZiAoX3JlYWRlci5pc0VuZEdyb3VwKCkpIGJyZWFrO1xuXG4gICAgICBzd2l0Y2ggKF9yZWFkZXIuZ2V0RmllbGROdW1iZXIoKSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgY29uc3QgbWVzc2FnZUluaXRpYWxpemVyMSA9IG5ldyBGaWx0ZXJzQW5kKCk7XG4gICAgICAgICAgX3JlYWRlci5yZWFkTWVzc2FnZShcbiAgICAgICAgICAgIG1lc3NhZ2VJbml0aWFsaXplcjEsXG4gICAgICAgICAgICBGaWx0ZXJzQW5kLmRlc2VyaWFsaXplQmluYXJ5RnJvbVJlYWRlclxuICAgICAgICAgICk7XG4gICAgICAgICAgKF9pbnN0YW5jZS5vciA9IF9pbnN0YW5jZS5vciB8fCBbXSkucHVzaChtZXNzYWdlSW5pdGlhbGl6ZXIxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBfcmVhZGVyLnNraXBGaWVsZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEZpbHRlcnMucmVmaW5lVmFsdWVzKF9pbnN0YW5jZSk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhIG1lc3NhZ2UgdG8gYmluYXJ5IGZvcm1hdCB1c2luZyBwcm92aWRlZCBiaW5hcnkgcmVhZGVyXG4gICAqIEBwYXJhbSBfaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKiBAcGFyYW0gX3dyaXRlciBiaW5hcnkgd3JpdGVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoX2luc3RhbmNlOiBGaWx0ZXJzLCBfd3JpdGVyOiBCaW5hcnlXcml0ZXIpIHtcbiAgICBpZiAoX2luc3RhbmNlLm9yICYmIF9pbnN0YW5jZS5vci5sZW5ndGgpIHtcbiAgICAgIF93cml0ZXIud3JpdGVSZXBlYXRlZE1lc3NhZ2UoXG4gICAgICAgIDEsXG4gICAgICAgIF9pbnN0YW5jZS5vciBhcyBhbnksXG4gICAgICAgIEZpbHRlcnNBbmQuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb3I/OiBGaWx0ZXJzQW5kW107XG5cbiAgLyoqXG4gICAqIE1lc3NhZ2UgY29uc3RydWN0b3IuIEluaXRpYWxpemVzIHRoZSBwcm9wZXJ0aWVzIGFuZCBhcHBsaWVzIGRlZmF1bHQgUHJvdG9idWYgdmFsdWVzIGlmIG5lY2Vzc2FyeVxuICAgKiBAcGFyYW0gX3ZhbHVlIGluaXRpYWwgdmFsdWVzIG9iamVjdCBvciBpbnN0YW5jZSBvZiBGaWx0ZXJzIHRvIGRlZXBseSBjbG9uZSBmcm9tXG4gICAqL1xuICBjb25zdHJ1Y3RvcihfdmFsdWU/OiBSZWN1cnNpdmVQYXJ0aWFsPEZpbHRlcnMuQXNPYmplY3Q+KSB7XG4gICAgX3ZhbHVlID0gX3ZhbHVlIHx8IHt9O1xuICAgIHRoaXMub3IgPSAoX3ZhbHVlLm9yIHx8IFtdKS5tYXAobSA9PiBuZXcgRmlsdGVyc0FuZChtKSk7XG4gICAgRmlsdGVycy5yZWZpbmVWYWx1ZXModGhpcyk7XG4gIH1cbiAgZ2V0IG9yKCk6IEZpbHRlcnNBbmRbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX29yO1xuICB9XG4gIHNldCBvcih2YWx1ZTogRmlsdGVyc0FuZFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fb3IgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgbWVzc2FnZSB0byBiaW5hcnkgZGF0YVxuICAgKiBAcGFyYW0gaW5zdGFuY2UgbWVzc2FnZSBpbnN0YW5jZVxuICAgKi9cbiAgc2VyaWFsaXplQmluYXJ5KCkge1xuICAgIGNvbnN0IHdyaXRlciA9IG5ldyBCaW5hcnlXcml0ZXIoKTtcbiAgICBGaWx0ZXJzLnNlcmlhbGl6ZUJpbmFyeVRvV3JpdGVyKHRoaXMsIHdyaXRlcik7XG4gICAgcmV0dXJuIHdyaXRlci5nZXRSZXN1bHRCdWZmZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYXN0IG1lc3NhZ2UgdG8gc3RhbmRhcmQgSmF2YVNjcmlwdCBvYmplY3QgKGFsbCBub24tcHJpbWl0aXZlIHZhbHVlcyBhcmUgZGVlcGx5IGNsb25lZClcbiAgICovXG4gIHRvT2JqZWN0KCk6IEZpbHRlcnMuQXNPYmplY3Qge1xuICAgIHJldHVybiB7XG4gICAgICBvcjogKHRoaXMub3IgfHwgW10pLm1hcChtID0+IG0udG9PYmplY3QoKSlcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBzdXBwb3J0IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpLCByZXBsaWNhdGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdG9PYmplY3QoKVxuICAgKi9cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvT2JqZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzdCBtZXNzYWdlIHRvIEpTT04gdXNpbmcgcHJvdG9idWYgSlNPTiBub3RhdGlvbjogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3Byb3RvMyNqc29uXG4gICAqIEF0dGVudGlvbjogb3V0cHV0IGRpZmZlcnMgZnJvbSB0b09iamVjdCgpIGUuZy4gZW51bXMgYXJlIHJlcHJlc2VudGVkIGFzIG5hbWVzIGFuZCBub3QgYXMgbnVtYmVycywgVGltZXN0YW1wIGlzIGFuIElTTyBEYXRlIHN0cmluZyBmb3JtYXQgZXRjLlxuICAgKiBJZiB0aGUgbWVzc2FnZSBpdHNlbGYgb3Igc29tZSBvZiBkZXNjZW5kYW50IG1lc3NhZ2VzIGlzIGdvb2dsZS5wcm90b2J1Zi5BbnksIHlvdSBNVVNUIHByb3ZpZGUgYSBtZXNzYWdlIHBvb2wgYXMgb3B0aW9ucy4gSWYgbm90LCB0aGUgbWVzc2FnZVBvb2wgaXMgbm90IHJlcXVpcmVkXG4gICAqL1xuICB0b1Byb3RvYnVmSlNPTihcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3B0aW9ucz86IFRvUHJvdG9idWZKU09OT3B0aW9uc1xuICApOiBGaWx0ZXJzLkFzUHJvdG9idWZKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3I6ICh0aGlzLm9yIHx8IFtdKS5tYXAobSA9PiBtLnRvUHJvdG9idWZKU09OKG9wdGlvbnMpKVxuICAgIH07XG4gIH1cbn1cbmV4cG9ydCBtb2R1bGUgRmlsdGVycyB7XG4gIC8qKlxuICAgKiBTdGFuZGFyZCBKYXZhU2NyaXB0IG9iamVjdCByZXByZXNlbnRhdGlvbiBmb3IgRmlsdGVyc1xuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc09iamVjdCB7XG4gICAgb3I/OiBGaWx0ZXJzQW5kLkFzT2JqZWN0W107XG4gIH1cblxuICAvKipcbiAgICogUHJvdG9idWYgSlNPTiByZXByZXNlbnRhdGlvbiBmb3IgRmlsdGVyc1xuICAgKi9cbiAgZXhwb3J0IGludGVyZmFjZSBBc1Byb3RvYnVmSlNPTiB7XG4gICAgb3I6IEZpbHRlcnNBbmQuQXNQcm90b2J1ZkpTT05bXSB8IG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLXNlcnZpY2UucGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvYXBwbGljYXRpb25zLXNlcnZpY2UucGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8vXG4vLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEVcbi8vIERPIE5PVCBNT0RJRlkgSVQhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1RcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjEwMDAgZnJvbSAnLi9vYmplY3RzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFTb3J0X2RpcmVjdGlvbjAwMSBmcm9tICcuL3NvcnQtZGlyZWN0aW9uLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIgZnJvbSAnLi9hcHBsaWNhdGlvbnMtY29tbW9uLnBiJztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLXNlcnZpY2UucGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmVvY29uc3VsdGluZ2ZyL2FybW9uaWsuYXBpLmFuZ3VsYXIvc3JjL2xpYi9nZW5lcmF0ZWQvYXBwbGljYXRpb25zLXNlcnZpY2UucGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8vXG4vLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEVcbi8vIERPIE5PVCBNT0RJRlkgSVQhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1RcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDAgZnJvbSAnLi9hcHBsaWNhdGlvbnMtZmllbGRzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDEgZnJvbSAnLi9hcHBsaWNhdGlvbnMtZmlsdGVycy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU29ydF9kaXJlY3Rpb24wMDIgZnJvbSAnLi9zb3J0LWRpcmVjdGlvbi5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzIGZyb20gJy4vYXBwbGljYXRpb25zLWNvbW1vbi5wYic7XG4iXX0=
@@ -7,7 +7,7 @@
7
7
  import { Inject, Injectable, Optional } from '@angular/core';
8
8
  import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common';
9
9
  import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core';
10
- import * as armonikApiGrpcV1Applications002 from './applications-common.pb';
10
+ import * as armonikApiGrpcV1Applications003 from './applications-common.pb';
11
11
  import { GRPC_APPLICATIONS_CLIENT_SETTINGS } from './applications-service.pbconf';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@ngx-grpc/core";
@@ -28,7 +28,7 @@ export class ApplicationsClient {
28
28
  *
29
29
  * @param requestMessage Request message
30
30
  * @param requestMetadata Request metadata
31
- * @returns Observable<GrpcEvent<armonikApiGrpcV1Applications002.ListApplicationsResponse>>
31
+ * @returns Observable<GrpcEvent<armonikApiGrpcV1Applications003.ListApplicationsResponse>>
32
32
  */
33
33
  listApplications: (requestData, requestMetadata = new GrpcMetadata()) => {
34
34
  return this.handler.handle({
@@ -37,26 +37,8 @@ export class ApplicationsClient {
37
37
  path: '/armonik.api.grpc.v1.applications.Applications/ListApplications',
38
38
  requestData,
39
39
  requestMetadata,
40
- requestClass: armonikApiGrpcV1Applications002.ListApplicationsRequest,
41
- responseClass: armonikApiGrpcV1Applications002.ListApplicationsResponse
42
- });
43
- },
44
- /**
45
- * Unary call: /armonik.api.grpc.v1.applications.Applications/CountTasksByStatus
46
- *
47
- * @param requestMessage Request message
48
- * @param requestMetadata Request metadata
49
- * @returns Observable<GrpcEvent<armonikApiGrpcV1Applications002.CountTasksByStatusResponse>>
50
- */
51
- countTasksByStatus: (requestData, requestMetadata = new GrpcMetadata()) => {
52
- return this.handler.handle({
53
- type: GrpcCallType.unary,
54
- client: this.client,
55
- path: '/armonik.api.grpc.v1.applications.Applications/CountTasksByStatus',
56
- requestData,
57
- requestMetadata,
58
- requestClass: armonikApiGrpcV1Applications002.CountTasksByStatusRequest,
59
- responseClass: armonikApiGrpcV1Applications002.CountTasksByStatusResponse
40
+ requestClass: armonikApiGrpcV1Applications003.ListApplicationsRequest,
41
+ responseClass: armonikApiGrpcV1Applications003.ListApplicationsResponse
60
42
  });
61
43
  }
62
44
  };
@@ -67,25 +49,13 @@ export class ApplicationsClient {
67
49
  *
68
50
  * @param requestMessage Request message
69
51
  * @param requestMetadata Request metadata
70
- * @returns Observable<armonikApiGrpcV1Applications002.ListApplicationsResponse>
52
+ * @returns Observable<armonikApiGrpcV1Applications003.ListApplicationsResponse>
71
53
  */
72
54
  listApplications(requestData, requestMetadata = new GrpcMetadata()) {
73
55
  return this.$raw
74
56
  .listApplications(requestData, requestMetadata)
75
57
  .pipe(throwStatusErrors(), takeMessages());
76
58
  }
77
- /**
78
- * Unary call @/armonik.api.grpc.v1.applications.Applications/CountTasksByStatus
79
- *
80
- * @param requestMessage Request message
81
- * @param requestMetadata Request metadata
82
- * @returns Observable<armonikApiGrpcV1Applications002.CountTasksByStatusResponse>
83
- */
84
- countTasksByStatus(requestData, requestMetadata = new GrpcMetadata()) {
85
- return this.$raw
86
- .countTasksByStatus(requestData, requestMetadata)
87
- .pipe(throwStatusErrors(), takeMessages());
88
- }
89
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ApplicationsClient, deps: [{ token: GRPC_APPLICATIONS_CLIENT_SETTINGS, optional: true }, { token: GRPC_CLIENT_FACTORY }, { token: i1.GrpcHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
90
60
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ApplicationsClient, providedIn: 'any' }); }
91
61
  }
@@ -101,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
101
71
  type: Inject,
102
72
  args: [GRPC_CLIENT_FACTORY]
103
73
  }] }, { type: i1.GrpcHandler }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLXNlcnZpY2UucGJzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZW9jb25zdWx0aW5nZnIvYXJtb25pay5hcGkuYW5ndWxhci9zcmMvbGliL2dlbmVyYXRlZC9hcHBsaWNhdGlvbnMtc2VydmljZS5wYnNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsY0FBYztBQUNkLEVBQUU7QUFDRiwyQkFBMkI7QUFDM0IsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsWUFBWSxFQUlaLFlBQVksRUFDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBS3hCLE9BQU8sS0FBSywrQkFBK0IsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBQ2xGOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQTJEN0IsWUFDeUQsUUFBYSxFQUN2QyxhQUFxQyxFQUMxRCxPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBM0Q5Qjs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHO1lBQ0w7Ozs7OztlQU1HO1lBQ0gsZ0JBQWdCLEVBQUUsQ0FDaEIsV0FBb0UsRUFDcEUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxpRUFBaUU7b0JBQ3ZFLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsK0JBQStCLENBQUMsdUJBQXVCO29CQUNyRSxhQUFhLEVBQUUsK0JBQStCLENBQUMsd0JBQXdCO2lCQUN4RSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0Q7Ozs7OztlQU1HO1lBQ0gsa0JBQWtCLEVBQUUsQ0FDbEIsV0FBc0UsRUFDdEUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFDRixtRUFBbUU7b0JBQ3JFLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsK0JBQStCLENBQUMseUJBQXlCO29CQUN2RSxhQUFhLEVBQ1gsK0JBQStCLENBQUMsMEJBQTBCO2lCQUM3RCxDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQztRQU9BLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FDdEMsK0NBQStDLEVBQy9DLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUNkLFdBQW9FLEVBQ3BFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUM5QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxrQkFBa0IsQ0FDaEIsV0FBc0UsRUFDdEUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFO1FBRXBDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQ2hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FwR1Usa0JBQWtCLGtCQTREUCxpQ0FBaUMsNkJBQzdDLG1CQUFtQjtrSEE3RGxCLGtCQUFrQixjQURMLEtBQUs7OzJGQUNsQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFOzswQkE2RDVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUNBQWlDOzswQkFDcEQsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogZXNsaW50LWRpc2FibGUgKi9cbi8vIEB0cy1ub2NoZWNrXG4vL1xuLy8gVEhJUyBJUyBBIEdFTkVSQVRFRCBGSUxFXG4vLyBETyBOT1QgTU9ESUZZIElUISBZT1VSIENIQU5HRVMgV0lMTCBCRSBMT1NUXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBHcnBjQ2FsbFR5cGUsXG4gIEdycGNDbGllbnQsXG4gIEdycGNDbGllbnRGYWN0b3J5LFxuICBHcnBjRXZlbnQsXG4gIEdycGNNZXRhZGF0YVxufSBmcm9tICdAbmd4LWdycGMvY29tbW9uJztcbmltcG9ydCB7XG4gIEdSUENfQ0xJRU5UX0ZBQ1RPUlksXG4gIEdycGNIYW5kbGVyLFxuICB0YWtlTWVzc2FnZXMsXG4gIHRocm93U3RhdHVzRXJyb3JzXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHRoaXNQcm90byBmcm9tICcuL2FwcGxpY2F0aW9ucy1zZXJ2aWNlLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjEwMDAgZnJvbSAnLi9vYmplY3RzLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFTb3J0X2RpcmVjdGlvbjAwMSBmcm9tICcuL3NvcnQtZGlyZWN0aW9uLnBiJztcbmltcG9ydCAqIGFzIGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIgZnJvbSAnLi9hcHBsaWNhdGlvbnMtY29tbW9uLnBiJztcbmltcG9ydCB7IEdSUENfQVBQTElDQVRJT05TX0NMSUVOVF9TRVRUSU5HUyB9IGZyb20gJy4vYXBwbGljYXRpb25zLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9uc1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdhbnknIH0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25zQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLmFwcGxpY2F0aW9ucy5BcHBsaWNhdGlvbnMvTGlzdEFwcGxpY2F0aW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIuTGlzdEFwcGxpY2F0aW9uc1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBsaXN0QXBwbGljYXRpb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5MaXN0QXBwbGljYXRpb25zUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5MaXN0QXBwbGljYXRpb25zUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLmFwcGxpY2F0aW9ucy5BcHBsaWNhdGlvbnMvTGlzdEFwcGxpY2F0aW9ucycsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5MaXN0QXBwbGljYXRpb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5MaXN0QXBwbGljYXRpb25zUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9ucy9Db3VudFRhc2tzQnlTdGF0dXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkNvdW50VGFza3NCeVN0YXR1c1Jlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjb3VudFRhc2tzQnlTdGF0dXM6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkNvdW50VGFza3NCeVN0YXR1c1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIuQ291bnRUYXNrc0J5U3RhdHVzUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDpcbiAgICAgICAgICAnL2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9ucy9Db3VudFRhc2tzQnlTdGF0dXMnLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIuQ291bnRUYXNrc0J5U3RhdHVzUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczpcbiAgICAgICAgICBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkNvdW50VGFza3NCeVN0YXR1c1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChHUlBDX0FQUExJQ0FUSU9OU19DTElFTlRfU0VUVElOR1MpIHNldHRpbmdzOiBhbnksXG4gICAgQEluamVjdChHUlBDX0NMSUVOVF9GQUNUT1JZKSBjbGllbnRGYWN0b3J5OiBHcnBjQ2xpZW50RmFjdG9yeTxhbnk+LFxuICAgIHByaXZhdGUgaGFuZGxlcjogR3JwY0hhbmRsZXJcbiAgKSB7XG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnRGYWN0b3J5LmNyZWF0ZUNsaWVudChcbiAgICAgICdhcm1vbmlrLmFwaS5ncnBjLnYxLmFwcGxpY2F0aW9ucy5BcHBsaWNhdGlvbnMnLFxuICAgICAgc2V0dGluZ3NcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXJ5IGNhbGwgQC9hcm1vbmlrLmFwaS5ncnBjLnYxLmFwcGxpY2F0aW9ucy5BcHBsaWNhdGlvbnMvTGlzdEFwcGxpY2F0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDIuTGlzdEFwcGxpY2F0aW9uc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdEFwcGxpY2F0aW9ucyhcbiAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5MaXN0QXBwbGljYXRpb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5saXN0QXBwbGljYXRpb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9ucy9Db3VudFRhc2tzQnlTdGF0dXNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkNvdW50VGFza3NCeVN0YXR1c1Jlc3BvbnNlPlxuICAgKi9cbiAgY291bnRUYXNrc0J5U3RhdHVzKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAyLkNvdW50VGFza3NCeVN0YXR1c1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMi5Db3VudFRhc2tzQnlTdGF0dXNSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jb3VudFRhc2tzQnlTdGF0dXMocmVxdWVzdERhdGEsIHJlcXVlc3RNZXRhZGF0YSlcbiAgICAgIC5waXBlKHRocm93U3RhdHVzRXJyb3JzKCksIHRha2VNZXNzYWdlcygpKTtcbiAgfVxufVxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25zLXNlcnZpY2UucGJzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZW9jb25zdWx0aW5nZnIvYXJtb25pay5hcGkuYW5ndWxhci9zcmMvbGliL2dlbmVyYXRlZC9hcHBsaWNhdGlvbnMtc2VydmljZS5wYnNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsY0FBYztBQUNkLEVBQUU7QUFDRiwyQkFBMkI7QUFDM0IsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsWUFBWSxFQUlaLFlBQVksRUFDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsWUFBWSxFQUNaLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE9BQU8sS0FBSywrQkFBK0IsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBQ2xGOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQWtDN0IsWUFDeUQsUUFBYSxFQUN2QyxhQUFxQyxFQUMxRCxPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBbEM5Qjs7OztXQUlHO1FBQ0gsU0FBSSxHQUFHO1lBQ0w7Ozs7OztlQU1HO1lBQ0gsZ0JBQWdCLEVBQUUsQ0FDaEIsV0FBb0UsRUFDcEUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFFLEVBR3BDLEVBQUU7Z0JBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDekIsSUFBSSxFQUFFLFlBQVksQ0FBQyxLQUFLO29CQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLElBQUksRUFBRSxpRUFBaUU7b0JBQ3ZFLFdBQVc7b0JBQ1gsZUFBZTtvQkFDZixZQUFZLEVBQUUsK0JBQStCLENBQUMsdUJBQXVCO29CQUNyRSxhQUFhLEVBQUUsK0JBQStCLENBQUMsd0JBQXdCO2lCQUN4RSxDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQztRQU9BLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FDdEMsK0NBQStDLEVBQy9DLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUNkLFdBQW9FLEVBQ3BFLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQzthQUM5QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBM0RVLGtCQUFrQixrQkFtQ1AsaUNBQWlDLDZCQUM3QyxtQkFBbUI7a0hBcENsQixrQkFBa0IsY0FETCxLQUFLOzsyRkFDbEIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRTs7MEJBb0M1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlDQUFpQzs7MEJBQ3BELE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGUgKi9cbi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBAdHMtbm9jaGVja1xuLy9cbi8vIFRISVMgSVMgQSBHRU5FUkFURUQgRklMRVxuLy8gRE8gTk9UIE1PRElGWSBJVCEgWU9VUiBDSEFOR0VTIFdJTEwgQkUgTE9TVFxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR3JwY0NhbGxUeXBlLFxuICBHcnBjQ2xpZW50LFxuICBHcnBjQ2xpZW50RmFjdG9yeSxcbiAgR3JwY0V2ZW50LFxuICBHcnBjTWV0YWRhdGFcbn0gZnJvbSAnQG5neC1ncnBjL2NvbW1vbic7XG5pbXBvcnQge1xuICBHUlBDX0NMSUVOVF9GQUNUT1JZLFxuICBHcnBjSGFuZGxlcixcbiAgdGFrZU1lc3NhZ2VzLFxuICB0aHJvd1N0YXR1c0Vycm9yc1xufSBmcm9tICdAbmd4LWdycGMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyB0aGlzUHJvdG8gZnJvbSAnLi9hcHBsaWNhdGlvbnMtc2VydmljZS5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAwIGZyb20gJy4vYXBwbGljYXRpb25zLWZpZWxkcy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAxIGZyb20gJy4vYXBwbGljYXRpb25zLWZpbHRlcnMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVNvcnRfZGlyZWN0aW9uMDAyIGZyb20gJy4vc29ydC1kaXJlY3Rpb24ucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMyBmcm9tICcuL2FwcGxpY2F0aW9ucy1jb21tb24ucGInO1xuaW1wb3J0IHsgR1JQQ19BUFBMSUNBVElPTlNfQ0xJRU5UX1NFVFRJTkdTIH0gZnJvbSAnLi9hcHBsaWNhdGlvbnMtc2VydmljZS5wYmNvbmYnO1xuLyoqXG4gKiBTZXJ2aWNlIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJtb25pay5hcGkuZ3JwYy52MS5hcHBsaWNhdGlvbnMuQXBwbGljYXRpb25zXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ2FueScgfSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbnNDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogR3JwY0NsaWVudDxhbnk+O1xuXG4gIC8qKlxuICAgKiBSYXcgUlBDIGltcGxlbWVudGF0aW9uIGZvciBlYWNoIHNlcnZpY2UgY2xpZW50IG1ldGhvZC5cbiAgICogVGhlIHJhdyBtZXRob2RzIHByb3ZpZGUgbW9yZSBjb250cm9sIG9uIHRoZSBpbmNvbWluZyBkYXRhIGFuZCBldmVudHMuIEUuZy4gdGhleSBjYW4gYmUgdXNlZnVsIHRvIHJlYWQgc3RhdHVzIGBPS2AgbWV0YWRhdGEuXG4gICAqIEF0dGVudGlvbjogdGhlc2UgbWV0aG9kcyBkbyBub3QgdGhyb3cgZXJyb3JzIHdoZW4gbm9uLXplcm8gc3RhdHVzIGNvZGVzIGFyZSByZWNlaXZlZC5cbiAgICovXG4gICRyYXcgPSB7XG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9ucy9MaXN0QXBwbGljYXRpb25zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMy5MaXN0QXBwbGljYXRpb25zUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGxpc3RBcHBsaWNhdGlvbnM6IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzLkxpc3RBcHBsaWNhdGlvbnNSZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuYXBwbGljYXRpb25zLkFwcGxpY2F0aW9ucy9MaXN0QXBwbGljYXRpb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzLkxpc3RBcHBsaWNhdGlvbnNSZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoR1JQQ19BUFBMSUNBVElPTlNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5hcHBsaWNhdGlvbnMuQXBwbGljYXRpb25zJyxcbiAgICAgIHNldHRpbmdzXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFyeSBjYWxsIEAvYXJtb25pay5hcGkuZ3JwYy52MS5hcHBsaWNhdGlvbnMuQXBwbGljYXRpb25zL0xpc3RBcHBsaWNhdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxQXBwbGljYXRpb25zMDAzLkxpc3RBcHBsaWNhdGlvbnNSZXNwb25zZT5cbiAgICovXG4gIGxpc3RBcHBsaWNhdGlvbnMoXG4gICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFBcHBsaWNhdGlvbnMwMDMuTGlzdEFwcGxpY2F0aW9uc1JlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMUFwcGxpY2F0aW9uczAwMy5MaXN0QXBwbGljYXRpb25zUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdEFwcGxpY2F0aW9ucyhyZXF1ZXN0RGF0YSwgcmVxdWVzdE1ldGFkYXRhKVxuICAgICAgLnBpcGUodGhyb3dTdGF0dXNFcnJvcnMoKSwgdGFrZU1lc3NhZ2VzKCkpO1xuICB9XG59XG4iXX0=