@sumaris-net/ngx-components 1.22.11-rc12 → 1.22.11-rc15

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 (27) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +266 -186
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/esm2015/public_api.js +1 -2
  6. package/esm2015/src/app/core/services/model/person.model.js +4 -2
  7. package/esm2015/src/app/shared/file/file.utils.js +1 -1
  8. package/esm2015/src/app/social/user-event/notification/user-event-notification.icon.js +3 -2
  9. package/esm2015/src/app/social/user-event/notification/user-event-notification.list.js +47 -23
  10. package/esm2015/src/app/social/user-event/testing/user-event.testing.js +61 -10
  11. package/esm2015/src/app/social/user-event/testing/user-event.testing.model.js +103 -0
  12. package/esm2015/src/app/social/user-event/testing/user-event.testing.service.js +34 -27
  13. package/esm2015/src/app/social/user-event/user-event.model.js +2 -106
  14. package/esm2015/src/app/social/user-event/user-event.service.js +20 -13
  15. package/fesm2015/sumaris-net.ngx-components.js +251 -192
  16. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  17. package/package.json +1 -1
  18. package/public_api.d.ts +0 -1
  19. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +18 -14
  20. package/src/app/social/user-event/testing/user-event.testing.d.ts +11 -3
  21. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +41 -0
  22. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +6 -5
  23. package/src/app/social/user-event/user-event.model.d.ts +9 -44
  24. package/src/app/social/user-event/user-event.service.d.ts +2 -1
  25. package/sumaris-net.ngx-components.metadata.json +1 -1
  26. package/esm2015/src/app/social/user-event/user-event.fragments.js +0 -27
  27. package/src/app/social/user-event/user-event.fragments.d.ts +0 -4
@@ -1,12 +1,13 @@
1
1
  import { Component, Inject, ViewChild } from '@angular/core';
2
2
  import { USER_EVENT_SERVICE } from '../user-event.service';
3
- import { UserEvent } from '../user-event.model';
4
3
  import { Router } from '@angular/router';
5
4
  import { Alerts } from '../../../shared/alerts';
6
5
  import { AlertController } from '@ionic/angular';
7
6
  import { TranslateService } from '@ngx-translate/core';
8
7
  import * as momentImported from 'moment';
9
8
  import { UserEventTestService } from './user-event.testing.service';
9
+ import { timer } from 'rxjs';
10
+ import { UserEventTest } from './user-event.testing.model';
10
11
  const moment = momentImported;
11
12
  export class UserEventTestingPage {
12
13
  constructor(userEventService, router, alertController, translateService) {
@@ -26,6 +27,12 @@ export class UserEventTestingPage {
26
27
  onRead: (userEvent) => { this.showMessage("debug message read "); }
27
28
  });
28
29
  }
30
+ get timerStarted() {
31
+ return !!this._timerSubscription;
32
+ }
33
+ ngOnDestroy() {
34
+ this.stopTimer();
35
+ }
29
36
  customize(userEvent) {
30
37
  // Choose avatarIcon
31
38
  switch (userEvent.level) {
@@ -56,7 +63,7 @@ export class UserEventTestingPage {
56
63
  }
57
64
  }
58
65
  addNotification() {
59
- this.userEventService.add(UserEvent.fromObject({
66
+ this.userEventService.add(UserEventTest.fromObject({
60
67
  issuer: 'system',
61
68
  recipient: 'me',
62
69
  type: 'message',
@@ -66,7 +73,7 @@ export class UserEventTestingPage {
66
73
  }));
67
74
  }
68
75
  addError() {
69
- this.userEventService.add(UserEvent.fromObject({
76
+ this.userEventService.add(UserEventTest.fromObject({
70
77
  issuer: 'system',
71
78
  recipient: 'me',
72
79
  type: 'upload',
@@ -76,7 +83,7 @@ export class UserEventTestingPage {
76
83
  }));
77
84
  }
78
85
  addWarning() {
79
- this.userEventService.add(UserEvent.fromObject({
86
+ this.userEventService.add(UserEventTest.fromObject({
80
87
  issuer: 'system',
81
88
  recipient: 'me',
82
89
  type: 'download',
@@ -86,7 +93,7 @@ export class UserEventTestingPage {
86
93
  }));
87
94
  }
88
95
  addDebug() {
89
- this.userEventService.add(UserEvent.fromObject({
96
+ this.userEventService.add(UserEventTest.fromObject({
90
97
  issuer: 'system',
91
98
  recipient: 'me',
92
99
  type: 'debug',
@@ -96,7 +103,7 @@ export class UserEventTestingPage {
96
103
  }));
97
104
  }
98
105
  addNotificationWithLink() {
99
- this.userEventService.add(UserEvent.fromObject({
106
+ this.userEventService.add(UserEventTest.fromObject({
100
107
  issuer: 'system',
101
108
  recipient: 'me',
102
109
  type: 'message',
@@ -113,7 +120,7 @@ export class UserEventTestingPage {
113
120
  }));
114
121
  }
115
122
  addNotificationWithAction() {
116
- this.userEventService.add(UserEvent.fromObject({
123
+ this.userEventService.add(UserEventTest.fromObject({
117
124
  issuer: 'system',
118
125
  recipient: 'me',
119
126
  type: 'message',
@@ -140,8 +147,52 @@ export class UserEventTestingPage {
140
147
  ]
141
148
  }));
142
149
  }
150
+ addMany(count) {
151
+ count = count || 20;
152
+ for (let i = 0; i < count; i++) {
153
+ this.addRandom(i);
154
+ }
155
+ }
156
+ startTimer(period) {
157
+ var _a;
158
+ (_a = this._timerSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
159
+ period = period || 1000;
160
+ let counter = 0;
161
+ this._timerSubscription = timer(period, period)
162
+ .subscribe(() => {
163
+ this.addRandom(counter);
164
+ counter++;
165
+ });
166
+ }
167
+ stopTimer() {
168
+ var _a;
169
+ (_a = this._timerSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
170
+ this._timerSubscription = null;
171
+ }
172
+ addRandom(value) {
173
+ switch (value % 6) {
174
+ case 0:
175
+ this.addNotification();
176
+ break;
177
+ case 1:
178
+ this.addError();
179
+ break;
180
+ case 2:
181
+ this.addDebug();
182
+ break;
183
+ case 3:
184
+ this.addNotificationWithLink();
185
+ break;
186
+ case 4:
187
+ this.addNotificationWithAction();
188
+ break;
189
+ case 5:
190
+ this.addNotificationWithDefaultAction();
191
+ break;
192
+ }
193
+ }
143
194
  addNotificationWithDefaultAction() {
144
- this.userEventService.add(UserEvent.fromObject({
195
+ this.userEventService.add(UserEventTest.fromObject({
145
196
  issuer: 'system',
146
197
  recipient: 'me',
147
198
  type: 'message',
@@ -164,7 +215,7 @@ export class UserEventTestingPage {
164
215
  UserEventTestingPage.decorators = [
165
216
  { type: Component, args: [{
166
217
  selector: 'job-progression-testing',
167
- template: "<ion-toolbar color=\"primary\">\n <ion-title>User events</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-user-event-notification-icon #notification [debug]=\"true\"></app-user-event-notification-icon>\n\n <p>\n <ion-button (click)=\"addNotification()\">Add notification</ion-button>\n <ion-button (click)=\"addError()\">Add error</ion-button>\n <ion-button (click)=\"addWarning()\">Add warning</ion-button>\n <ion-button (click)=\"addDebug()\">Add debug</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addNotificationWithLink()\">Add notification with link</ion-button>\n <ion-button (click)=\"addNotificationWithAction()\">Add notification with action</ion-button>\n <ion-button (click)=\"addNotificationWithDefaultAction()\">Add notification with default action</ion-button>\n </p>\n</ion-content>\n"
218
+ template: "<ion-toolbar color=\"primary\">\n <ion-title>User events</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-user-event-notification-icon #notification [debug]=\"true\"></app-user-event-notification-icon>\n\n <p>\n <ion-button (click)=\"addNotification()\">Add notification</ion-button>\n <ion-button (click)=\"addError()\">Add error</ion-button>\n <ion-button (click)=\"addWarning()\">Add warning</ion-button>\n <ion-button (click)=\"addDebug()\">Add debug</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addNotificationWithLink()\">Add notification with link</ion-button>\n <ion-button (click)=\"addNotificationWithAction()\">Add notification with action</ion-button>\n <ion-button (click)=\"addNotificationWithDefaultAction()\">Add notification with default action</ion-button>\n </p>\n <p>\n <ion-button (click)=\"addMany()\">Add notifications (x20)</ion-button>\n </p>\n <p>\n <ion-button (click)=\"startTimer()\" *ngIf=\"!timerStarted\">Start timer</ion-button>\n <ion-button (click)=\"stopTimer()\" *ngIf=\"timerStarted\">Stop timer</ion-button>\n </p>\n</ion-content>\n"
168
219
  },] }
169
220
  ];
170
221
  UserEventTestingPage.ctorParameters = () => [
@@ -176,4 +227,4 @@ UserEventTestingPage.ctorParameters = () => [
176
227
  UserEventTestingPage.propDecorators = {
177
228
  notification: [{ type: ViewChild, args: ['notification',] }]
178
229
  };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFDLFNBQVMsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUdsRSxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFNOUIsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUN3QyxnQkFBc0MsRUFDbEUsTUFBYyxFQUNkLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUhOLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDbEUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRzVDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLE1BQU0sRUFBRSxDQUFDLFNBQW9CLEVBQUUsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFBLENBQUMsQ0FBQztZQUNqRCxVQUFVLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzFCLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLENBQUM7U0FDRixDQUFDLENBQUE7UUFDRixnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxNQUFNLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUUsR0FBRyxPQUFPLFNBQVMsQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFBLENBQUMsQ0FBQztZQUN2RSxNQUFNLEVBQUUsQ0FBQyxTQUFvQixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUEsQ0FBQSxDQUFDO1NBQzdFLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFUyxTQUFTLENBQUMsU0FBb0I7UUFFdEMsb0JBQW9CO1FBQ3BCLFFBQVEsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN2QixLQUFLLE9BQU87Z0JBQ1YsU0FBUyxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUNsRSxNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLFNBQVMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO2dCQUNyRSxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULFNBQVMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQztnQkFDOUQsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3hELE1BQU07U0FDVDtRQUVELGNBQWM7UUFDZCxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUU7WUFDdEIsS0FBSyxTQUFTO2dCQUNaLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDdkQsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxTQUFTLENBQUMsSUFBSSxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2dCQUM1QyxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQzlDLE1BQU07U0FDVDtJQUVILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzNDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsTUFBTTtZQUNiLE9BQU8sRUFBRSx5R0FBeUc7WUFDbEgsWUFBWSxFQUFFLE1BQU0sRUFBRTtTQUN2QixDQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzNDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFlBQVksRUFBRSxNQUFNLEVBQUU7U0FDdkIsQ0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsWUFBWSxFQUFFLE1BQU0sRUFBRTtTQUN2QixDQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzNDLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTztZQUNkLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFlBQVksRUFBRSxNQUFNLEVBQUU7U0FDdkIsQ0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLFlBQVksRUFBRSxNQUFNLEVBQUU7WUFDdEIsT0FBTyxFQUFFLENBQWtCO29CQUN6QixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSx1QkFBdUI7cUJBQzlCO29CQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztpQkFDM0QsQ0FBQztTQUNILENBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDM0MsTUFBTSxFQUFFLFFBQVE7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxNQUFNO1lBQ2IsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixZQUFZLEVBQUUsTUFBTSxFQUFFO1lBQ3RCLE9BQU8sRUFBRTtnQkFDVTtvQkFDZixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSx1QkFBdUI7d0JBQzdCLEtBQUssRUFBRSxTQUFTO3FCQUNqQjtvQkFDRCxhQUFhLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ2dCO29CQUNmLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLHVCQUF1Qjt3QkFDaEMsS0FBSyxFQUFFLFdBQVc7cUJBQ25CO29CQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQyxDQUFDO2lCQUMzRDthQUNBO1NBQ0YsQ0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0NBQWdDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsUUFBUTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFlBQVksRUFBRSxNQUFNLEVBQUU7WUFDdEIsT0FBTyxFQUFFO2dCQUNVO29CQUNmLE9BQU8sRUFBRSxJQUFJO29CQUNiLElBQUksRUFBRSxTQUFTO29CQUNmLGFBQWEsRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7U0FDRixDQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBWTtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0UsQ0FBQzs7O1lBcExGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxzMkJBQXNDO2FBQ3ZDOzs7WUFSTyxvQkFBb0IsdUJBZXZCLE1BQU0sU0FBQyxrQkFBa0I7WUFwQnRCLE1BQU07WUFFTixlQUFlO1lBQ2YsZ0JBQWdCOzs7MkJBYXJCLFNBQVMsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VVNFUl9FVkVOVF9TRVJWSUNFfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyRXZlbnQsIFVzZXJFdmVudEFjdGlvbn0gZnJvbSAnLi4vdXNlci1ldmVudC5tb2RlbCc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWxlcnRzfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvYWxlcnRzJztcbmltcG9ydCB7QWxlcnRDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50SW1wb3J0ZWQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7VXNlckV2ZW50VGVzdFNlcnZpY2V9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBVc2VyRXZlbnROb3RpZmljYXRpb25JY29ufSBmcm9tICcuLi9ub3RpZmljYXRpb24vdXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbic7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudEltcG9ydGVkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqb2ItcHJvZ3Jlc3Npb24tdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAndXNlci1ldmVudC50ZXN0aW5nLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RpbmdQYWdlIHtcblxuICBAVmlld0NoaWxkKCdub3RpZmljYXRpb24nKSBub3RpZmljYXRpb246IEFwcFVzZXJFdmVudE5vdGlmaWNhdGlvbkljb247XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFVTRVJfRVZFTlRfU0VSVklDRSkgcHJvdGVjdGVkIHVzZXJFdmVudFNlcnZpY2U6IFVzZXJFdmVudFRlc3RTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgYWxlcnRDb250cm9sbGVyOiBBbGVydENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG5cbiAgICB1c2VyRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyTGlzdGVuZXIoe1xuICAgICAgYWNjZXB0OiAodXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHsgcmV0dXJuIHRydWUgfSxcbiAgICAgIG9uUmVjZWl2ZWQ6ICh1c2VyRXZlbnQ6IFVzZXJFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbWl6ZSh1c2VyRXZlbnQpO1xuICAgICAgICByZXR1cm4gdXNlckV2ZW50XG4gICAgICB9XG4gICAgfSlcbiAgICB1c2VyRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyTGlzdGVuZXIoe1xuICAgICAgYWNjZXB0OiAodXNlckV2ZW50OiBVc2VyRXZlbnQpID0+IHsgcmV0dXJuIHVzZXJFdmVudC5sZXZlbCA9PSBcIkRFQlVHXCIgfSxcbiAgICAgIG9uUmVhZDogKHVzZXJFdmVudDogVXNlckV2ZW50KSA9PiB7IHRoaXMuc2hvd01lc3NhZ2UoXCJkZWJ1ZyBtZXNzYWdlIHJlYWQgXCIpfVxuICAgIH0pXG4gIH1cblxuICBwcm90ZWN0ZWQgY3VzdG9taXplKHVzZXJFdmVudDogVXNlckV2ZW50KSB7XG5cbiAgICAvLyBDaG9vc2UgYXZhdGFySWNvblxuICAgIHN3aXRjaCAodXNlckV2ZW50LmxldmVsKSB7XG4gICAgICBjYXNlICdFUlJPUic6XG4gICAgICAgIHVzZXJFdmVudC5hdmF0YXJJY29uID0geyBpY29uOiAnY2xvc2Utb3V0bGluZScsIGNvbG9yOiAnZGFuZ2VyJyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1dBUk5JTkcnOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ3dhcm5pbmctb3V0bGluZScsIGNvbG9yOiAnd2FybmluZycgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdJTkZPJzpcbiAgICAgICAgdXNlckV2ZW50LmF2YXRhckljb24gPSB7IGljb246ICdpbmZvcm1hdGlvbi1jaXJjbGUtb3V0bGluZScgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdERUJVRyc6XG4gICAgICAgIHVzZXJFdmVudC5hdmF0YXJJY29uID0geyBpY29uOiAnY29nJywgY29sb3I6IFwibWVkaXVtXCIgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gQ2hvb3NlIGljb25cbiAgICBzd2l0Y2ggKHVzZXJFdmVudC50eXBlKSB7XG4gICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgdXNlckV2ZW50Lmljb24gPSB7IG1hdEljb246ICdpbmJveCcsIGNvbG9yOiAnYWNjZW50JyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIHVzZXJFdmVudC5pY29uID0geyBtYXRJY29uOiAnZmlsZV91cGxvYWQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICB1c2VyRXZlbnQuaWNvbiA9IHsgbWF0SWNvbjogJ2ZpbGVfZG93bmxvYWQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IG1vbWVudCgpLFxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkRXJyb3IoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnQuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ3VwbG9hZCcsXG4gICAgICAgIGxldmVsOiAnRVJST1InLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSBlcnJvcicsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogbW9tZW50KCksXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBhZGRXYXJuaW5nKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIGxldmVsOiAnV0FSTklORycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdhcm5pbmcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IG1vbWVudCgpLFxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkRGVidWcoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnQuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ2RlYnVnJyxcbiAgICAgICAgbGV2ZWw6ICdERUJVRycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIERFQlVHJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBsaW5rJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogWzxVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgIG5hbWU6ICdjbGljayBoZXJlJyxcbiAgICAgICAgICBpY29uUmVmOiB7XG4gICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhlY3V0ZUFjdGlvbjogZXZlbnQgPT4geyB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJykgfVxuICAgICAgICB9XVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnbWVzc2FnZScsXG4gICAgICAgIGxldmVsOiAnSU5GTycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdpdGggYWN0aW9uJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIDxVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrIGhlcmUnLFxuICAgICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd3YXJuaW5nJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDEnKSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8VXNlckV2ZW50QWN0aW9uPntcbiAgICAgICAgICAgIG5hbWU6ICdjbGljayBoZXJlIDInLFxuICAgICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgICBtYXRJY29uOiAnc2V0dGluZ3NfYXBwbGljYXRpb25zJyxcbiAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhlY3V0ZUFjdGlvbjogZXZlbnQgPT4geyB0aGlzLnNob3dNZXNzYWdlKCdhY3Rpb24gMicpIH1cbiAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBhZGROb3RpZmljYXRpb25XaXRoRGVmYXVsdEFjdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnbWVzc2FnZScsXG4gICAgICAgIGxldmVsOiAnSU5GTycsXG4gICAgICAgIG1lc3NhZ2U6ICdtZXNzYWdlIHdpdGggYWN0aW9uJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIDxVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnZGVmYXVsdCBhY3Rpb24nKSB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd01lc3NhZ2UodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIEFsZXJ0cy5zaG93RXJyb3IodGV4dCwgdGhpcy5hbGVydENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlU2VydmljZSk7XG4gIH1cbn1cblxuIl19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBYSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxLQUFLLGNBQWMsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFFbEUsT0FBTyxFQUFlLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDO0FBTTlCLE1BQU0sT0FBTyxvQkFBb0I7SUFVL0IsWUFDd0MsZ0JBQXNDLEVBQ2xFLE1BQWMsRUFDZCxlQUFnQyxFQUNoQyxnQkFBa0M7UUFITixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ2xFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUc1QyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxNQUFNLEVBQUUsQ0FBQyxTQUF3QixF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O29CQUNoQixPQUFPLEVBQUUsSUFBSTtvQkFDYixJQUFJLEVBQUUsU0FBUztvQkFDZixhQUFhLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUEsQ0FBQyxDQUFDO2lCQUMvRDthQUNGO1NBQ0YsQ0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsV0FBVyxDQUFDLElBQVk7UUFDaEMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdFLENBQUM7OztZQTdPRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsbW9DQUFzQzthQUN2Qzs7O1lBVk8sb0JBQW9CLHVCQXNCdkIsTUFBTSxTQUFDLGtCQUFrQjtZQTNCdEIsTUFBTTtZQUVOLGVBQWU7WUFDZixnQkFBZ0I7OzsyQkFpQnJCLFNBQVMsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVU0VSX0VWRU5UX1NFUlZJQ0V9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0lVc2VyRXZlbnRBY3Rpb259IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0c30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2FsZXJ0cyc7XG5pbXBvcnQge0FsZXJ0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1VzZXJFdmVudFRlc3RTZXJ2aWNlfSBmcm9tICcuL3VzZXItZXZlbnQudGVzdGluZy5zZXJ2aWNlJztcbmltcG9ydCB7QXBwVXNlckV2ZW50Tm90aWZpY2F0aW9uSWNvbn0gZnJvbSAnLi4vbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmljb24nO1xuaW1wb3J0IHtTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VXNlckV2ZW50VGVzdH0gZnJvbSAnLi91c2VyLWV2ZW50LnRlc3RpbmcubW9kZWwnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnam9iLXByb2dyZXNzaW9uLXRlc3RpbmcnLFxuICB0ZW1wbGF0ZVVybDogJ3VzZXItZXZlbnQudGVzdGluZy5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0aW5nUGFnZSBpbXBsZW1lbnRzIE9uRGVzdHJveXtcblxuICBwcml2YXRlIF90aW1lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoJ25vdGlmaWNhdGlvbicpIG5vdGlmaWNhdGlvbjogQXBwVXNlckV2ZW50Tm90aWZpY2F0aW9uSWNvbjtcblxuICBnZXQgdGltZXJTdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChVU0VSX0VWRU5UX1NFUlZJQ0UpIHByb3RlY3RlZCB1c2VyRXZlbnRTZXJ2aWNlOiBVc2VyRXZlbnRUZXN0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuXG4gICAgdXNlckV2ZW50U2VydmljZS5yZWdpc3Rlckxpc3RlbmVyKHtcbiAgICAgIGFjY2VwdDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4geyByZXR1cm4gdHJ1ZSB9LFxuICAgICAgb25SZWNlaXZlZDogKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbWl6ZSh1c2VyRXZlbnQpO1xuICAgICAgICByZXR1cm4gdXNlckV2ZW50XG4gICAgICB9XG4gICAgfSlcbiAgICB1c2VyRXZlbnRTZXJ2aWNlLnJlZ2lzdGVyTGlzdGVuZXIoe1xuICAgICAgYWNjZXB0OiAodXNlckV2ZW50OiBVc2VyRXZlbnRUZXN0KSA9PiB7IHJldHVybiB1c2VyRXZlbnQubGV2ZWwgPT0gXCJERUJVR1wiIH0sXG4gICAgICBvblJlYWQ6ICh1c2VyRXZlbnQ6IFVzZXJFdmVudFRlc3QpID0+IHsgdGhpcy5zaG93TWVzc2FnZShcImRlYnVnIG1lc3NhZ2UgcmVhZCBcIil9XG4gICAgfSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3VzdG9taXplKHVzZXJFdmVudDogVXNlckV2ZW50VGVzdCkge1xuXG4gICAgLy8gQ2hvb3NlIGF2YXRhckljb25cbiAgICBzd2l0Y2ggKHVzZXJFdmVudC5sZXZlbCkge1xuICAgICAgY2FzZSAnRVJST1InOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2Nsb3NlLW91dGxpbmUnLCBjb2xvcjogJ2RhbmdlcicgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdXQVJOSU5HJzpcbiAgICAgICAgdXNlckV2ZW50LmF2YXRhckljb24gPSB7IGljb246ICd3YXJuaW5nLW91dGxpbmUnLCBjb2xvcjogJ3dhcm5pbmcnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSU5GTyc6XG4gICAgICAgIHVzZXJFdmVudC5hdmF0YXJJY29uID0geyBpY29uOiAnaW5mb3JtYXRpb24tY2lyY2xlLW91dGxpbmUnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnREVCVUcnOlxuICAgICAgICB1c2VyRXZlbnQuYXZhdGFySWNvbiA9IHsgaWNvbjogJ2NvZycsIGNvbG9yOiBcIm1lZGl1bVwiIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIENob29zZSBpY29uXG4gICAgc3dpdGNoICh1c2VyRXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgIHVzZXJFdmVudC5pY29uID0geyBtYXRJY29uOiAnaW5ib3gnLCBjb2xvcjogJ2FjY2VudCcgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICB1c2VyRXZlbnQuaWNvbiA9IHsgbWF0SWNvbjogJ2ZpbGVfdXBsb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd25sb2FkJzpcbiAgICAgICAgdXNlckV2ZW50Lmljb24gPSB7IG1hdEljb246ICdmaWxlX2Rvd25sb2FkJyB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxuICAgICAgICBsZXZlbDogJ0lORk8nLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCBtZXNzYWdlIHRlc3QgbWVzc2FnZSB0ZXN0IG1lc3NhZ2UgdGVzdCcsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogbW9tZW50KCksXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBhZGRFcnJvcigpIHtcbiAgICB0aGlzLnVzZXJFdmVudFNlcnZpY2UuYWRkKFVzZXJFdmVudFRlc3QuZnJvbU9iamVjdCh7XG4gICAgICAgIGlzc3VlcjogJ3N5c3RlbScsXG4gICAgICAgIHJlY2lwaWVudDogJ21lJyxcbiAgICAgICAgdHlwZTogJ3VwbG9hZCcsXG4gICAgICAgIGxldmVsOiAnRVJST1InLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSBlcnJvcicsXG4gICAgICAgIGNyZWF0aW9uRGF0ZTogbW9tZW50KCksXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBhZGRXYXJuaW5nKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnZG93bmxvYWQnLFxuICAgICAgICBsZXZlbDogJ1dBUk5JTkcnLFxuICAgICAgICBtZXNzYWdlOiAnbWVzc2FnZSB3YXJuaW5nJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZERlYnVnKCkge1xuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5hZGQoVXNlckV2ZW50VGVzdC5mcm9tT2JqZWN0KHtcbiAgICAgICAgaXNzdWVyOiAnc3lzdGVtJyxcbiAgICAgICAgcmVjaXBpZW50OiAnbWUnLFxuICAgICAgICB0eXBlOiAnZGVidWcnLFxuICAgICAgICBsZXZlbDogJ0RFQlVHJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgREVCVUcnLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IG1vbWVudCgpLFxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aExpbmsoKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBsaW5rJyxcbiAgICAgICAgY3JlYXRpb25EYXRlOiBtb21lbnQoKSxcbiAgICAgICAgYWN0aW9uczogWzxJVXNlckV2ZW50QWN0aW9uPntcbiAgICAgICAgICBuYW1lOiAnY2xpY2sgaGVyZScsXG4gICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgaWNvbjogJ2Fycm93LWZvcndhcmQtb3V0bGluZSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpIH1cbiAgICAgICAgfV1cbiAgICAgIH1cbiAgICApKTtcbiAgfVxuXG4gIGFkZE5vdGlmaWNhdGlvbldpdGhBY3Rpb24oKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBhY3Rpb24nLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IG1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgbmFtZTogJ2NsaWNrIGhlcmUnLFxuICAgICAgICAgICAgaWNvblJlZjoge1xuICAgICAgICAgICAgICBpY29uOiAnYXJyb3ctZm9yd2FyZC1vdXRsaW5lJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd3YXJuaW5nJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDEnKSB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8SVVzZXJFdmVudEFjdGlvbj57XG4gICAgICAgICAgICBuYW1lOiAnY2xpY2sgaGVyZSAyJyxcbiAgICAgICAgICAgIGljb25SZWY6IHtcbiAgICAgICAgICAgICAgbWF0SWNvbjogJ3NldHRpbmdzX2FwcGxpY2F0aW9ucycsXG4gICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnYWN0aW9uIDInKSB9XG4gICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgICkpO1xuICB9XG5cbiAgYWRkTWFueShjb3VudD86IG51bWJlcikge1xuICAgIGNvdW50ID0gY291bnQgfHwgMjA7XG4gICAgZm9yIChsZXQgaT0wOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgdGhpcy5hZGRSYW5kb20oaSk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRUaW1lcihwZXJpb2Q/OiBudW1iZXIpIHtcbiAgICB0aGlzLl90aW1lclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHBlcmlvZCA9IHBlcmlvZCB8fCAxMDAwO1xuICAgIGxldCBjb3VudGVyID0gMDtcblxuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIocGVyaW9kLCBwZXJpb2QpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRSYW5kb20oY291bnRlcik7XG4gICAgICAgIGNvdW50ZXIrKztcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RvcFRpbWVyKCkge1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3RpbWVyU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgfVxuXG4gIGFkZFJhbmRvbSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3dpdGNoICh2YWx1ZSAlIDYpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpcy5hZGROb3RpZmljYXRpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuYWRkRXJyb3IoKVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5hZGREZWJ1ZygpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhMaW5rKClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHRoaXMuYWRkTm90aWZpY2F0aW9uV2l0aEFjdGlvbigpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICB0aGlzLmFkZE5vdGlmaWNhdGlvbldpdGhEZWZhdWx0QWN0aW9uKClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgYWRkTm90aWZpY2F0aW9uV2l0aERlZmF1bHRBY3Rpb24oKSB7XG4gICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLmFkZChVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoe1xuICAgICAgICBpc3N1ZXI6ICdzeXN0ZW0nLFxuICAgICAgICByZWNpcGllbnQ6ICdtZScsXG4gICAgICAgIHR5cGU6ICdtZXNzYWdlJyxcbiAgICAgICAgbGV2ZWw6ICdJTkZPJyxcbiAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ugd2l0aCBhY3Rpb24nLFxuICAgICAgICBjcmVhdGlvbkRhdGU6IG1vbWVudCgpLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgPElVc2VyRXZlbnRBY3Rpb24+e1xuICAgICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIGV4ZWN1dGVBY3Rpb246IGV2ZW50ID0+IHsgdGhpcy5zaG93TWVzc2FnZSgnZGVmYXVsdCBhY3Rpb24nKSB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd01lc3NhZ2UodGV4dDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIEFsZXJ0cy5zaG93RXJyb3IodGV4dCwgdGhpcy5hbGVydENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlU2VydmljZSk7XG4gIH1cbn1cblxuIl19
@@ -0,0 +1,103 @@
1
+ var UserEventTest_1;
2
+ import { __decorate } from "tslib";
3
+ // @dynamic
4
+ import { EntityClass } from '../../../core/services/model/entity.decorators';
5
+ import { Entity } from '../../../core/services/model/entity.model';
6
+ import { fromDateISOString, toDateISOString } from '../../../shared/dates';
7
+ import { EntityFilter } from '../../../core/services/model/filter.model';
8
+ import { isNil, isNotEmptyArray, isNotNil } from '../../../shared/functions';
9
+ // @dynamic
10
+ let UserEventTest = UserEventTest_1 = class UserEventTest extends Entity {
11
+ constructor() {
12
+ super(UserEventTest_1.TYPENAME);
13
+ }
14
+ asObject(opts) {
15
+ const target = super.asObject(opts);
16
+ target.creationDate = toDateISOString(this.creationDate);
17
+ target.readDate = toDateISOString(this.readDate);
18
+ // Serialize content
19
+ if (typeof target.content === 'object') {
20
+ target.content = JSON.stringify(target.content);
21
+ }
22
+ delete target.avatar;
23
+ delete target.avatarIcon;
24
+ delete target.icon;
25
+ delete target.actions;
26
+ return target;
27
+ }
28
+ fromObject(source) {
29
+ Object.assign(this, source); // Copy all properties
30
+ super.fromObject(source);
31
+ this.creationDate = fromDateISOString(source.creationDate);
32
+ this.readDate = fromDateISOString(source.readDate);
33
+ try {
34
+ // Deserialize content
35
+ if (typeof source.content === 'string' && source.content.startsWith('{')) {
36
+ this.content = JSON.parse(source.content);
37
+ }
38
+ // Deserialize content.context
39
+ if (this.content && typeof this.content.context === 'string' && this.content.context.startsWith('{')) {
40
+ this.content.context = JSON.parse(this.content.context);
41
+ }
42
+ }
43
+ catch (err) {
44
+ console.error('Error during UserEvent deserialization', err);
45
+ }
46
+ }
47
+ };
48
+ UserEventTest = UserEventTest_1 = __decorate([
49
+ EntityClass({ typename: 'UserEventTestVO' })
50
+ ], UserEventTest);
51
+ export { UserEventTest };
52
+ // @dynamic
53
+ let UserEventTestFilter = class UserEventTestFilter extends EntityFilter {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.types = [];
57
+ this.levels = [];
58
+ this.issuers = [];
59
+ this.recipients = [];
60
+ this.startDate = null;
61
+ this.excludeRead = false;
62
+ }
63
+ fromObject(source, opts) {
64
+ super.fromObject(source, opts);
65
+ this.types = source.types || [];
66
+ this.levels = source.levels || [];
67
+ this.issuers = source.issuers || [];
68
+ this.recipients = source.recipients || [];
69
+ this.startDate = fromDateISOString(source.startDate);
70
+ this.excludeRead = source.excludeRead || false;
71
+ }
72
+ buildFilter() {
73
+ const filterFns = super.buildFilter();
74
+ if (isNotEmptyArray(this.types)) {
75
+ filterFns.push(t => this.types.includes(t.type));
76
+ }
77
+ if (isNotEmptyArray(this.levels)) {
78
+ filterFns.push(t => this.levels.includes(t.level));
79
+ }
80
+ if (isNotEmptyArray(this.issuers)) {
81
+ filterFns.push(t => this.issuers.includes(t.issuer));
82
+ }
83
+ if (isNotEmptyArray(this.recipients)) {
84
+ filterFns.push(t => this.recipients.includes(t.recipient));
85
+ }
86
+ if (isNotNil(this.startDate)) {
87
+ filterFns.push(t => this.startDate.isSameOrBefore(t.creationDate));
88
+ }
89
+ if (this.excludeRead === true) {
90
+ filterFns.push(t => isNil(t.readSignature)); // todo or t.signature ?
91
+ }
92
+ return filterFns;
93
+ }
94
+ asObject(opts) {
95
+ const target = super.asObject(opts);
96
+ return target;
97
+ }
98
+ };
99
+ UserEventTestFilter = __decorate([
100
+ EntityClass({ typename: 'UserEventTestFilterVO' })
101
+ ], UserEventTestFilter);
102
+ export { UserEventTestFilter };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zb2NpYWwvdXNlci1ldmVudC90ZXN0aW5nL3VzZXItZXZlbnQudGVzdGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLFdBQVc7QUFDWCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBd0IsTUFBTSwyQ0FBMkMsQ0FBQztBQUd4RixPQUFPLEVBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFekUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXZFLE9BQU8sRUFBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRzNFLFdBQVc7SUFFRSxhQUFhLDJCQUFiLGFBQWMsU0FBUSxNQUFxQjtJQXdCdEQ7UUFDRSxLQUFLLENBQUMsZUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBNEI7UUFDbkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELG9CQUFvQjtRQUNwQixJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDdEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNqRDtRQUVELE9BQU8sTUFBTSxDQUFD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QTRCO1FBQ25DLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGLENBQUE7QUFuRFksbUJBQW1CO0lBRC9CLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBQyxDQUFDO0dBQ3BDLG1CQUFtQixDQW1EL0I7U0FuRFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGR5bmFtaWNcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHtFbnRpdHksIEVudGl0eUFzT2JqZWN0T3B0aW9uc30gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0ljb25SZWZ9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2Zyb21EYXRlSVNPU3RyaW5nLCB0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kYXRlcyc7XG5pbXBvcnQge0V2ZW50TGV2ZWwsIElVc2VyRXZlbnQsIElVc2VyRXZlbnRGaWx0ZXIsIElVc2VyRXZlbnRBY3Rpb259IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7RmlsdGVyRm59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge2lzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7U3RvcmVPYmplY3R9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuXG4vLyBAZHluYW1pY1xuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1VzZXJFdmVudFRlc3RWTyd9KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3QgZXh0ZW5kcyBFbnRpdHk8VXNlckV2ZW50VGVzdD4gaW1wbGVtZW50cyBJVXNlckV2ZW50PFVzZXJFdmVudFRlc3Q+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBVc2VyRXZlbnRUZXN0O1xuXG4gIHR5cGU6IHN0cmluZztcbiAgbGV2ZWw6IEV2ZW50TGV2ZWw7XG4gIGlzc3Vlcjogc3RyaW5nO1xuICByZWNpcGllbnQ6IHN0cmluZztcbiAgdXBkYXRlRGF0ZTogTW9tZW50O1xuICBjcmVhdGlvbkRhdGU6IE1vbWVudDtcbiAgcmVhZERhdGU6IE1vbWVudDtcblxuICBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IGFueTtcbiAgaGFzaDogc3RyaW5nO1xuICBzaWduYXR1cmU6IHN0cmluZztcbiAgcmVhZFNpZ25hdHVyZTogc3RyaW5nO1xuXG4gIGF2YXRhcj86IHN0cmluZztcbiAgYXZhdGFySWNvbj86IEljb25SZWY7XG4gIGljb24/OiBJY29uUmVmO1xuXG4gIGFjdGlvbnM/OiBJVXNlckV2ZW50QWN0aW9uW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVXNlckV2ZW50VGVzdC5UWVBFTkFNRSk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzdXBlci5hc09iamVjdChvcHRzKTtcbiAgICB0YXJnZXQuY3JlYXRpb25EYXRlID0gdG9EYXRlSVNPU3RyaW5nKHRoaXMuY3JlYXRpb25EYXRlKTtcbiAgICB0YXJnZXQucmVhZERhdGUgPSB0b0RhdGVJU09TdHJpbmcodGhpcy5yZWFkRGF0ZSk7XG5cbiAgICAvLyBTZXJpYWxpemUgY29udGVudFxuICAgIGlmICh0eXBlb2YgdGFyZ2V0LmNvbnRlbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0YXJnZXQuY29udGVudCA9IEpTT04uc3RyaW5naWZ5KHRhcmdldC5jb250ZW50KTtcbiAgICB9XG5cbiAgICBkZWxldGUgdGFyZ2V0LmF2YXRhcjtcbiAgICBkZWxldGUgdGFyZ2V0LmF2YXRhckljb247XG4gICAgZGVsZXRlIHRhcmdldC5pY29uO1xuICAgIGRlbGV0ZSB0YXJnZXQuYWN0aW9ucztcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBzb3VyY2UpOyAvLyBDb3B5IGFsbCBwcm9wZXJ0aWVzXG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuY3JlYXRpb25EYXRlID0gZnJvbURhdGVJU09TdHJpbmcoc291cmNlLmNyZWF0aW9uRGF0ZSk7XG4gICAgdGhpcy5yZWFkRGF0ZSA9IGZyb21EYXRlSVNPU3RyaW5nKHNvdXJjZS5yZWFkRGF0ZSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGVzZXJpYWxpemUgY29udGVudFxuICAgICAgaWYgKHR5cGVvZiBzb3VyY2UuY29udGVudCA9PT0gJ3N0cmluZycgJiYgc291cmNlLmNvbnRlbnQuc3RhcnRzV2l0aCgneycpKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IEpTT04ucGFyc2Uoc291cmNlLmNvbnRlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXNlcmlhbGl6ZSBjb250ZW50LmNvbnRleHRcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdHlwZW9mIHRoaXMuY29udGVudC5jb250ZXh0ID09PSAnc3RyaW5nJyAmJiB0aGlzLmNvbnRlbnQuY29udGV4dC5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbnRleHQgPSBKU09OLnBhcnNlKHRoaXMuY29udGVudC5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBVc2VyRXZlbnQgZGVzZXJpYWxpemF0aW9uJywgZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdVc2VyRXZlbnRUZXN0RmlsdGVyVk8nfSlcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRUZXN0RmlsdGVyIGV4dGVuZHMgRW50aXR5RmlsdGVyPFVzZXJFdmVudFRlc3RGaWx0ZXIsIFVzZXJFdmVudFRlc3Q+IGltcGxlbWVudHMgSVVzZXJFdmVudEZpbHRlcjxVc2VyRXZlbnRUZXN0PiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gVXNlckV2ZW50VGVzdEZpbHRlcjtcblxuICB0eXBlczogc3RyaW5nW10gPSBbXTtcbiAgbGV2ZWxzOiBFdmVudExldmVsW10gPSBbXTtcbiAgaXNzdWVyczogc3RyaW5nW10gPSBbXTtcbiAgcmVjaXBpZW50czogc3RyaW5nW10gPSBbXTtcbiAgc3RhcnREYXRlOiBNb21lbnQgPSBudWxsO1xuICBleGNsdWRlUmVhZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgdGhpcy50eXBlcyA9IHNvdXJjZS50eXBlcyB8fCBbXTtcbiAgICB0aGlzLmxldmVscyA9IHNvdXJjZS5sZXZlbHMgfHwgW107XG4gICAgdGhpcy5pc3N1ZXJzID0gc291cmNlLmlzc3VlcnMgfHwgW107XG4gICAgdGhpcy5yZWNpcGllbnRzID0gc291cmNlLnJlY2lwaWVudHMgfHwgW107XG4gICAgdGhpcy5zdGFydERhdGUgPSBmcm9tRGF0ZUlTT1N0cmluZyhzb3VyY2Uuc3RhcnREYXRlKTtcbiAgICB0aGlzLmV4Y2x1ZGVSZWFkID0gc291cmNlLmV4Y2x1ZGVSZWFkIHx8IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFVzZXJFdmVudFRlc3Q+W10ge1xuICAgIGNvbnN0IGZpbHRlckZucyA9IHN1cGVyLmJ1aWxkRmlsdGVyKCk7XG5cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMudHlwZXMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMudHlwZXMuaW5jbHVkZXModC50eXBlKSk7XG4gICAgfVxuICAgIGlmIChpc05vdEVtcHR5QXJyYXkodGhpcy5sZXZlbHMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMubGV2ZWxzLmluY2x1ZGVzKHQubGV2ZWwpKTtcbiAgICB9XG4gICAgaWYgKGlzTm90RW1wdHlBcnJheSh0aGlzLmlzc3VlcnMpKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IHRoaXMuaXNzdWVycy5pbmNsdWRlcyh0Lmlzc3VlcikpO1xuICAgIH1cbiAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHRoaXMucmVjaXBpZW50cykpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKHQgPT4gdGhpcy5yZWNpcGllbnRzLmluY2x1ZGVzKHQucmVjaXBpZW50KSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTm90TmlsKHRoaXMuc3RhcnREYXRlKSkge1xuICAgICAgZmlsdGVyRm5zLnB1c2godCA9PiB0aGlzLnN0YXJ0RGF0ZS5pc1NhbWVPckJlZm9yZSh0LmNyZWF0aW9uRGF0ZSkpXG4gICAgfVxuICAgIGlmICh0aGlzLmV4Y2x1ZGVSZWFkID09PSB0cnVlKSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaCh0ID0+IGlzTmlsKHQucmVhZFNpZ25hdHVyZSkpOyAvLyB0b2RvIG9yIHQuc2lnbmF0dXJlID9cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyRm5zO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IFN0b3JlT2JqZWN0IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzdXBlci5hc09iamVjdChvcHRzKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG4iXX0=
@@ -1,14 +1,15 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Inject, Injectable, Optional } from '@angular/core';
3
3
  import { AbstractUserEventService } from '../user-event.service';
4
- import { UserEvent } from '../user-event.model';
5
- import { of } from 'rxjs';
4
+ import { BehaviorSubject, Subject } from 'rxjs';
6
5
  import { GraphqlService } from '../../../core/graphql/graphql.service';
7
6
  import { AccountService } from '../../../core/services/account.service';
8
7
  import { NetworkService } from '../../../core/services/network.service';
9
8
  import { TranslateService } from '@ngx-translate/core';
10
9
  import { Environment, ENVIRONMENT } from '../../../../environments/environment.class';
11
10
  import { EntityUtils } from '../../../core/services/model/entity.model';
11
+ import { map } from 'rxjs/operators';
12
+ import { UserEventTest } from './user-event.testing.model';
12
13
  export class UserEventTestService extends AbstractUserEventService {
13
14
  constructor(graphql, accountService, network, translate, environment) {
14
15
  super(graphql, accountService, network, translate, {
@@ -23,27 +24,31 @@ export class UserEventTestService extends AbstractUserEventService {
23
24
  this.network = network;
24
25
  this.translate = translate;
25
26
  this.environment = environment;
26
- this.userEvents = [];
27
+ this.$userEvents = new BehaviorSubject([]);
28
+ this.$newUserEvents = new Subject();
27
29
  }
28
30
  fromObject(source) {
29
- return UserEvent.fromObject(source);
31
+ return UserEventTest.fromObject(source);
30
32
  }
31
33
  add(entity) {
34
+ var _a;
32
35
  return __awaiter(this, void 0, void 0, function* () {
33
36
  entity = yield this.processUserEvent(entity);
34
- entity.id = this.userEvents.length + 1;
35
- this.userEvents = [
37
+ entity.id = (((_a = this.$userEvents.value) === null || _a === void 0 ? void 0 : _a.length) || 0) + 1;
38
+ this.$userEvents.next([
36
39
  entity,
37
- ...this.userEvents
38
- ];
40
+ ...this.$userEvents.value
41
+ ]);
39
42
  this._countSubject.next((this._countSubject.value || 0) + 1);
43
+ this.$newUserEvents.next([entity]);
40
44
  });
41
45
  }
42
46
  asFilter(filter) {
43
47
  return filter;
44
48
  }
45
49
  count(filter, options) {
46
- return Promise.resolve(this.userEvents.length);
50
+ var _a;
51
+ return Promise.resolve(((_a = this.$userEvents.value) === null || _a === void 0 ? void 0 : _a.length) || 0);
47
52
  }
48
53
  delete(entity) {
49
54
  return Promise.resolve(undefined);
@@ -52,11 +57,11 @@ export class UserEventTestService extends AbstractUserEventService {
52
57
  return Promise.resolve(undefined);
53
58
  }
54
59
  listenAllChanges(filter, options) {
55
- return of();
60
+ return this.$newUserEvents.asObservable();
56
61
  }
57
62
  save(entity, options) {
58
63
  var _a;
59
- const toSave = (_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.find(value => value.id == (entity === null || entity === void 0 ? void 0 : entity.id));
64
+ const toSave = (_a = this.$userEvents.value) === null || _a === void 0 ? void 0 : _a.find(value => value.id == (entity === null || entity === void 0 ? void 0 : entity.id));
60
65
  Object.assign(toSave, entity);
61
66
  return entity;
62
67
  }
@@ -65,27 +70,29 @@ export class UserEventTestService extends AbstractUserEventService {
65
70
  for (const entity of (data || [])) {
66
71
  yield this.save(entity);
67
72
  }
68
- return Promise.resolve(this.userEvents);
73
+ return this.$userEvents.toPromise();
69
74
  });
70
75
  }
71
76
  watchAll(offset, size, sortBy, sortDirection, filter, opts) {
72
- var _a;
73
- let data = (this.userEvents || []).slice(offset || 0, offset + size);
74
- const total = ((_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.length) || 0;
75
- const res = { data, total };
76
- // Must re-order because of listenChanges result will add new event at the end
77
- data = EntityUtils.sort(data, sortBy, sortDirection);
78
- // Add fetch more
79
- const nextOffset = offset + data.length;
80
- if (nextOffset < res.total) {
81
- res.fetchMore = (_) => this.loadAll(nextOffset, size, sortBy, sortDirection, filter, Object.assign(Object.assign({}, opts), { fetchPolicy: 'no-cache' }));
82
- }
83
- return of(res);
77
+ return this.$userEvents.pipe(map(userEvents => {
78
+ var _a;
79
+ let data = (userEvents || []).slice(offset || 0, offset + size);
80
+ const total = ((_a = this.$userEvents.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
81
+ const res = { data, total };
82
+ // Must re-order because of listenChanges result will add new event at the end
83
+ data = EntityUtils.sort(data, sortBy, sortDirection);
84
+ // Add fetch more
85
+ const nextOffset = offset + data.length;
86
+ if (nextOffset < res.total) {
87
+ res.fetchMore = (_) => this.loadAll(nextOffset, size, sortBy, sortDirection, filter, Object.assign(Object.assign({}, opts), { fetchPolicy: 'no-cache' }));
88
+ }
89
+ return res;
90
+ }));
84
91
  }
85
92
  loadAll(offset, size, sortBy, sortDirection, filter, opts) {
86
93
  var _a;
87
- let data = (this.userEvents || []).slice(offset || 0, offset + size);
88
- const total = ((_a = this.userEvents) === null || _a === void 0 ? void 0 : _a.length) || 0;
94
+ let data = (this.$userEvents.value || []).slice(offset || 0, offset + size);
95
+ const total = ((_a = this.$userEvents.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
89
96
  const res = { data, total };
90
97
  // Must re-order because of listenChanges result will add new event at the end
91
98
  data = EntityUtils.sort(data, sortBy, sortDirection);
@@ -107,4 +114,4 @@ UserEventTestService.ctorParameters = () => [
107
114
  { type: TranslateService },
108
115
  { type: Environment, decorators: [{ type: Optional }, { type: Inject, args: [ENVIRONMENT,] }] }
109
116
  ];
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsd0JBQXdCLEVBQThDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcsT0FBTyxFQUFhLFNBQVMsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRSxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFJcEYsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBR3RFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx3QkFBb0Q7SUFJNUYsWUFDWSxPQUF1QixFQUN2QixjQUE4QixFQUM5QixPQUF1QixFQUN2QixTQUEyQixFQUNNLFdBQXdCO1FBRW5FLEtBQUssQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDakQsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJO2dCQUNiLGtCQUFrQixFQUFFLElBQUk7YUFDekI7WUFDRCxVQUFVLEVBQUUsV0FBVyxhQUFYLFdB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QUssRUFBRTtZQUMxQixHQUFHLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQ2xGLGdDQUFJLElBQUksS0FBRSxXQUFXLEVBQWUsVUFBVSxHQUFvQyxDQUNuRixDQUFDO1NBQ0g7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBL0dGLFVBQVU7OztZQVZILGNBQWM7WUFDZCxjQUFjO1lBQ2QsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixXQUFXLHVCQWdCZCxRQUFRLFlBQUksTUFBTSxTQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdFVzZXJFdmVudFNlcnZpY2UsIFVzZXJFdmVudExvYWRPcHRpb25zLCBVc2VyRXZlbnRXYXRjaE9wdGlvbnN9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0lVc2VyRXZlbnQsIFVzZXJFdmVudCwgVXNlckV2ZW50RmlsdGVyfSBmcm9tICcuLi91c2VyLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtHcmFwaHFsU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge0ZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBMb2FkUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlPFVzZXJFdmVudCwgVXNlckV2ZW50RmlsdGVyPiB7XG5cbiAgcHJpdmF0ZSB1c2VyRXZlbnRzOiBJVXNlckV2ZW50PGFueT5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgYWNjb3VudFNlcnZpY2UsIG5ldHdvcmssIHRyYW5zbGF0ZSwge1xuICAgICAgcXVlcmllczoge1xuICAgICAgICBsb2FkQWxsOiBudWxsLFxuICAgICAgICBsb2FkQWxsV2l0aENvbnRlbnQ6IG51bGxcbiAgICAgIH0sXG4gICAgICBwcm9kdWN0aW9uOiBlbnZpcm9ubWVudD8ucHJvZHVjdGlvblxuICAgIH0pO1xuICB9XG5cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KTogVXNlckV2ZW50IHtcbiAgICByZXR1cm4gVXNlckV2ZW50LmZyb21PYmplY3Qoc291cmNlKTtcbiAgfVxuXG4gIGFzeW5jIGFkZChlbnRpdHk6IElVc2VyRXZlbnQ8YW55Pikge1xuICAgIGVudGl0eSA9IGF3YWl0IHRoaXMucHJvY2Vzc1VzZXJFdmVudChlbnRpdHkpO1xuICAgIGVudGl0eS5pZCA9IHRoaXMudXNlckV2ZW50cy5sZW5ndGggKyAxO1xuICAgIHRoaXMudXNlckV2ZW50cyA9IFtcbiAgICAgIGVudGl0eSxcbiAgICAgIC4uLnRoaXMudXNlckV2ZW50c1xuICAgIF07XG4gICAgdGhpcy5fY291bnRTdWJqZWN0Lm5leHQoKHRoaXMuX2NvdW50U3ViamVjdC52YWx1ZSB8fCAwKSArIDEpO1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBQYXJ0aWFsPGFueT4pOiBhbnkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb3VudChmaWx0ZXI6IGFueSwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlckV2ZW50cy5sZW5ndGgpO1xuICB9XG5cbiAgZGVsZXRlKGVudGl0eTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBkZWxldGVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGxpc3RlbkFsbENoYW5nZXMoZmlsdGVyOiBhbnksIG9wdGlvbnM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMgJiB7IGludGVydmFsPzogbnVtYmVyOyBmZXRjaFBvbGljeT86IEZldGNoUG9saWN5IH0pOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIG9mKCk7XG4gIH1cblxuICBzYXZlKGVudGl0eTogYW55LCBvcHRpb25zPzogRW50aXR5U2VydmljZUxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIGNvbnN0IHRvU2F2ZSA9IHRoaXMudXNlckV2ZW50cz8uZmluZCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PSBlbnRpdHk/LmlkKTtcbiAgICBPYmplY3QuYXNzaWduKHRvU2F2ZSwgZW50aXR5KTtcblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBhc3luYyBzYXZlQWxsKGRhdGE6IGFueVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnlbXT4ge1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHkgb2YgKGRhdGEgfHwgW10pKSB7XG4gICAgICBhd2FpdCB0aGlzLnNhdmUoZW50aXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlckV2ZW50cyk7XG4gIH1cblxuICB3YXRjaEFsbChvZmZzZXQ6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0Qnk/OiBzdHJpbmcsIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uLCBmaWx0ZXI/OiBQYXJ0aWFsPGFueT4sIG9wdHM/OiBVc2VyRXZlbnRXYXRjaE9wdGlvbnMpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIGxldCBkYXRhID0gKHRoaXMudXNlckV2ZW50cyB8fCBbXSkuc2xpY2Uob2Zmc2V0fHwwLCBvZmZzZXQgKyBzaXplKTtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudXNlckV2ZW50cz8ubGVuZ3RoIHx8IDA7XG4gICAgY29uc3QgcmVzID0gPExvYWRSZXN1bHQ8VXNlckV2ZW50Pj57IGRhdGEsIHRvdGFsIH07XG5cbiAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICBkYXRhID0gRW50aXR5VXRpbHMuc29ydChkYXRhLCBzb3J0QnksIHNvcnREaXJlY3Rpb24pO1xuXG4gICAgLy8gQWRkIGZldGNoIG1vcmVcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgaWYgKG5leHRPZmZzZXQgPCByZXMudG90YWwpIHtcbiAgICAgIHJlcy5mZXRjaE1vcmUgPSAgKF8pID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlcixcbiAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YocmVzKTtcbiAgfVxuXG4gIGxvYWRBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxhbnk+LFxuICAgICAgICAgIG9wdHM/OiBVc2VyRXZlbnRMb2FkT3B0aW9ucyk6IFByb21pc2U8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgbGV0IGRhdGEgPSAodGhpcy51c2VyRXZlbnRzIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy51c2VyRXZlbnRzPy5sZW5ndGggfHwgMDtcblxuICAgIGNvbnN0IHJlcyA9IDxMb2FkUmVzdWx0PFVzZXJFdmVudD4+eyBkYXRhLCB0b3RhbCB9O1xuXG4gICAgLy8gTXVzdCByZS1vcmRlciBiZWNhdXNlIG9mIGxpc3RlbkNoYW5nZXMgcmVzdWx0IHdpbGwgYWRkIG5ldyBldmVudCBhdCB0aGUgZW5kXG4gICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlXG4gICAgY29uc3QgbmV4dE9mZnNldCA9IG9mZnNldCArIGRhdGEubGVuZ3RoO1xuICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzLnRvdGFsKSB7XG4gICAgICByZXMuZmV0Y2hNb3JlID0gIChfKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsXG4gICAgICAgIHsuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZSd9IGFzIHVua25vd24gYXMgVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICB9XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L3Rlc3RpbmcvdXNlci1ldmVudC50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsd0JBQXdCLEVBQThDLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUlwRixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDdEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxhQUFhLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUE0RDtJQUtwRyxZQUNZLE9BQXVCLEVBQ3ZCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLFNBQTJCLEVBQ00sV0FBd0I7UUFFbkUsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUk7Z0JBQ2Isa0JBQWtCLEVBQUUsSUFBSTthQUN6QjtZQUNELFVBQVUsRUFBRSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsVUFBVTtTQUNwQyxDQUFDLENBQUM7UUFaTyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDTSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVI3RCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN2RCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0lBZ0J4RCxDQUFDO0lBR0QsVUFBVSxDQUFDLE1BQVc7UUFDcEIsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFSyxHQUFHLENBQUMsTUFBcUI7OztZQUM3QixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLDBDQUFFLE1BQU0sS0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07Z0JBQ04sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7YUFDMUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O0tBQ3BDO0lBRUQsUUFBUSxDQUFDLE1BQW9CO1FBQzNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBVyxFQUFFLE9BQXVDOztRQUN4RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBQSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVztRQUNoQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFXLEVBQUUsSUFBVTtRQUMvQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVcsRUFBRSxPQUFrRjtRQUM5RyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFXLEVBQUUsT0FBa0M7O1FBRWxELE1BQU0sTUFBTSxTQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSywwQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxFQUFFLENBQUEsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFSyxPQUFPLENBQUMsSUFBVyxFQUFFLElBQVU7O1lBRW5DLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6QjtZQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0tBQUE7SUFFRCxRQUFRLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsYUFBNkIsRUFBRSxNQUFxQixFQUFFLElBQTRCO1FBQ3hJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTs7WUFDZixJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDOUQsTUFBTSxLQUFLLEdBQUcsT0FBQSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztZQUVsRCxNQUFNLEdBQUcsR0FBOEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFFdkQsOEVBQThFO1lBQzlFLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFckQsaUJBQWlCO1lBQ2pCLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3hDLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLEdBQUcsQ0FBQyxTQUFTLEdBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFDbEYsZ0NBQUksSUFBSSxLQUFFLFdBQVcsRUFBZSxVQUFVLEdBQW9DLENBQ25GLENBQUM7YUFDSDtZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUVILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsYUFBNkIsRUFBRSxNQUFxQixFQUNuRyxJQUEyQjs7UUFDakMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUcsT0FBQSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssMENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztRQUVsRCxNQUFNLEdBQUcsR0FBOEIsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFdkQsOEVBQThFO1FBQzlFLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFckQsaUJBQWlCO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3hDLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDMUIsR0FBRyxDQUFDLFNBQVMsR0FBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUNsRixnQ0FBSSxJQUFJLEtBQUUsV0FBVyxFQUFlLFVBQVUsR0FBb0MsQ0FDbkYsQ0FBQztTQUNIO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OztZQXZIRixVQUFVOzs7WUFaSCxjQUFjO1lBQ2QsY0FBYztZQUNkLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsV0FBVyx1QkFtQmQsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlLCBVc2VyRXZlbnRMb2FkT3B0aW9ucywgVXNlckV2ZW50V2F0Y2hPcHRpb25zfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtHcmFwaHFsU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge0ZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7RW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBMb2FkUmVzdWx0fSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtTb3J0RGlyZWN0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7RW50aXR5VXRpbHN9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1VzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXJ9IGZyb20gJy4vdXNlci1ldmVudC50ZXN0aW5nLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudFRlc3RTZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RVc2VyRXZlbnRTZXJ2aWNlPFVzZXJFdmVudFRlc3QsIFVzZXJFdmVudFRlc3RGaWx0ZXI+IHtcblxuICBwcml2YXRlICR1c2VyRXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyRXZlbnRUZXN0W10+KFtdKTtcbiAgcHJpdmF0ZSAkbmV3VXNlckV2ZW50cyA9IG5ldyBTdWJqZWN0PFVzZXJFdmVudFRlc3RbXT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjY291bnRTZXJ2aWNlOiBBY2NvdW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVOVklST05NRU5UKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50XG4gICkge1xuICAgIHN1cGVyKGdyYXBocWwsIGFjY291bnRTZXJ2aWNlLCBuZXR3b3JrLCB0cmFuc2xhdGUsIHtcbiAgICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgbG9hZEFsbDogbnVsbCxcbiAgICAgICAgbG9hZEFsbFdpdGhDb250ZW50OiBudWxsXG4gICAgICB9LFxuICAgICAgcHJvZHVjdGlvbjogZW52aXJvbm1lbnQ/LnByb2R1Y3Rpb25cbiAgICB9KTtcbiAgfVxuXG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFVzZXJFdmVudFRlc3Qge1xuICAgIHJldHVybiBVc2VyRXZlbnRUZXN0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgfVxuXG4gIGFzeW5jIGFkZChlbnRpdHk6IFVzZXJFdmVudFRlc3QpIHtcbiAgICBlbnRpdHkgPSBhd2FpdCB0aGlzLnByb2Nlc3NVc2VyRXZlbnQoZW50aXR5KTtcbiAgICBlbnRpdHkuaWQgPSAodGhpcy4kdXNlckV2ZW50cy52YWx1ZT8ubGVuZ3RoIHx8IDApICsgMTtcbiAgICB0aGlzLiR1c2VyRXZlbnRzLm5leHQoW1xuICAgICAgZW50aXR5LFxuICAgICAgLi4udGhpcy4kdXNlckV2ZW50cy52YWx1ZVxuICAgIF0pO1xuICAgIHRoaXMuX2NvdW50U3ViamVjdC5uZXh0KCh0aGlzLl9jb3VudFN1YmplY3QudmFsdWUgfHwgMCkgKyAxKTtcbiAgICB0aGlzLiRuZXdVc2VyRXZlbnRzLm5leHQoW2VudGl0eV0pO1xuICB9XG5cbiAgYXNGaWx0ZXIoZmlsdGVyOiBQYXJ0aWFsPGFueT4pOiBhbnkge1xuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjb3VudChmaWx0ZXI6IGFueSwgb3B0aW9ucz86IHsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwKTtcbiAgfVxuXG4gIGRlbGV0ZShlbnRpdHk6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgZGVsZXRlQWxsKGRhdGE6IGFueVtdLCBvcHRzPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBsaXN0ZW5BbGxDaGFuZ2VzKGZpbHRlcjogYW55LCBvcHRpb25zPzogVXNlckV2ZW50V2F0Y2hPcHRpb25zICYgeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLiRuZXdVc2VyRXZlbnRzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2F2ZShlbnRpdHk6IGFueSwgb3B0aW9ucz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG5cbiAgICBjb25zdCB0b1NhdmUgPSB0aGlzLiR1c2VyRXZlbnRzLnZhbHVlPy5maW5kKHZhbHVlID0+IHZhbHVlLmlkID09IGVudGl0eT8uaWQpO1xuICAgIE9iamVjdC5hc3NpZ24odG9TYXZlLCBlbnRpdHkpO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZGF0YTogYW55W10sIG9wdHM/OiBhbnkpOiBQcm9taXNlPGFueVtdPiB7XG5cbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiAoZGF0YSB8fCBbXSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZShlbnRpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiR1c2VyRXZlbnRzLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxhbnk+LCBvcHRzPzogVXNlckV2ZW50V2F0Y2hPcHRpb25zKTogT2JzZXJ2YWJsZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy4kdXNlckV2ZW50cy5waXBlKFxuICAgICAgbWFwKHVzZXJFdmVudHMgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9ICh1c2VyRXZlbnRzIHx8IFtdKS5zbGljZShvZmZzZXR8fDAsIG9mZnNldCArIHNpemUpO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IDxMb2FkUmVzdWx0PFVzZXJFdmVudFRlc3Q+PnsgZGF0YSwgdG90YWwgfTtcblxuICAgICAgICAvLyBNdXN0IHJlLW9yZGVyIGJlY2F1c2Ugb2YgbGlzdGVuQ2hhbmdlcyByZXN1bHQgd2lsbCBhZGQgbmV3IGV2ZW50IGF0IHRoZSBlbmRcbiAgICAgICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgICAgICAvLyBBZGQgZmV0Y2ggbW9yZVxuICAgICAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0ICsgZGF0YS5sZW5ndGg7XG4gICAgICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzLnRvdGFsKSB7XG4gICAgICAgICAgcmVzLmZldGNoTW9yZSA9ICAoXykgPT4gdGhpcy5sb2FkQWxsKG5leHRPZmZzZXQsIHNpemUsIHNvcnRCeSwgc29ydERpcmVjdGlvbiwgZmlsdGVyLFxuICAgICAgICAgICAgey4uLm9wdHMsIGZldGNoUG9saWN5OiA8RmV0Y2hQb2xpY3k+J25vLWNhY2hlJ30gYXMgdW5rbm93biBhcyBVc2VyRXZlbnRMb2FkT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICApXG5cbiAgfVxuXG4gIGxvYWRBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZmlsdGVyPzogUGFydGlhbDxhbnk+LFxuICAgICAgICAgIG9wdHM/OiBVc2VyRXZlbnRMb2FkT3B0aW9ucyk6IFByb21pc2U8TG9hZFJlc3VsdDxhbnk+PiB7XG4gICAgbGV0IGRhdGEgPSAodGhpcy4kdXNlckV2ZW50cy52YWx1ZSB8fCBbXSkuc2xpY2Uob2Zmc2V0fHwwLCBvZmZzZXQgKyBzaXplKTtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuJHVzZXJFdmVudHMudmFsdWU/Lmxlbmd0aCB8fCAwO1xuXG4gICAgY29uc3QgcmVzID0gPExvYWRSZXN1bHQ8VXNlckV2ZW50VGVzdD4+eyBkYXRhLCB0b3RhbCB9O1xuXG4gICAgLy8gTXVzdCByZS1vcmRlciBiZWNhdXNlIG9mIGxpc3RlbkNoYW5nZXMgcmVzdWx0IHdpbGwgYWRkIG5ldyBldmVudCBhdCB0aGUgZW5kXG4gICAgZGF0YSA9IEVudGl0eVV0aWxzLnNvcnQoZGF0YSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uKTtcblxuICAgIC8vIEFkZCBmZXRjaCBtb3JlXG4gICAgY29uc3QgbmV4dE9mZnNldCA9IG9mZnNldCArIGRhdGEubGVuZ3RoO1xuICAgIGlmIChuZXh0T2Zmc2V0IDwgcmVzLnRvdGFsKSB7XG4gICAgICByZXMuZmV0Y2hNb3JlID0gIChfKSA9PiB0aGlzLmxvYWRBbGwobmV4dE9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsXG4gICAgICAgIHsuLi5vcHRzLCBmZXRjaFBvbGljeTogPEZldGNoUG9saWN5Piduby1jYWNoZSd9IGFzIHVua25vd24gYXMgVXNlckV2ZW50TG9hZE9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICB9XG59XG4iXX0=