@coolon/angular-ui-powerups 0.0.63 → 0.0.65

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 (46) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +722 -561
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +10 -10
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +10 -10
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/interaction/abstract-activity.js +5 -68
  10. package/esm2015/lib/interaction/activity.js +71 -11
  11. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +213 -120
  12. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  13. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -43
  14. package/esm2015/lib/interaction/index.js +2 -2
  15. package/esm2015/lib/interaction/interaction-context.js +11 -5
  16. package/esm2015/lib/interaction/services/dialog-interaction.service.js +94 -65
  17. package/esm2015/lib/place/guards/leave-place.guard.js +95 -131
  18. package/esm2015/lib/place/place-router.js +87 -6
  19. package/esm2015/public_api.js +2 -2
  20. package/esm5/coolon-angular-ui-powerups.js +10 -10
  21. package/esm5/index.js +2 -2
  22. package/esm5/lib/interaction/abstract-activity.js +10 -96
  23. package/esm5/lib/interaction/activity.js +110 -11
  24. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +285 -143
  25. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +6 -7
  26. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +19 -67
  27. package/esm5/lib/interaction/index.js +2 -2
  28. package/esm5/lib/interaction/interaction-context.js +18 -7
  29. package/esm5/lib/interaction/services/dialog-interaction.service.js +112 -64
  30. package/esm5/lib/place/guards/leave-place.guard.js +51 -137
  31. package/esm5/lib/place/place-router.js +96 -6
  32. package/esm5/public_api.js +2 -2
  33. package/fesm2015/coolon-angular-ui-powerups.js +582 -439
  34. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  35. package/fesm5/coolon-angular-ui-powerups.js +695 -535
  36. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  37. package/lib/interaction/abstract-activity.d.ts +4 -13
  38. package/lib/interaction/activity.d.ts +13 -6
  39. package/lib/interaction/components/activity-container/activity-container.component.d.ts +37 -25
  40. package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +2 -5
  41. package/lib/interaction/components/activity-outlet/activity-outlet.component.d.ts +1 -10
  42. package/lib/interaction/interaction-context.d.ts +6 -6
  43. package/lib/interaction/services/dialog-interaction.service.d.ts +4 -6
  44. package/lib/place/guards/leave-place.guard.d.ts +6 -7
  45. package/lib/place/place-router.d.ts +14 -1
  46. package/package.json +1 -1
@@ -5,23 +5,180 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Component, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';
7
7
  import { MatTabGroup } from '@angular/material';
8
- import { Dsl, MutableListModel } from '@coolon/pectin';
9
- import { DisposableComponent } from '../../../components/disposable-component';
8
+ import { assert, Dsl, MutableListModel, MutableStream } from '@coolon/pectin';
10
9
  import { InteractionContext } from '../../interaction-context';
11
10
  import { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';
12
11
  import { AlertDialogComponent } from '../alert-dialog/alert-dialog.component';
13
12
  import { ConfirmThenDialogComponent } from '../confirm-then-dialog/confirm-then-dialog.component';
14
13
  import { ConfirmationDialogComponent } from '../confirmation-dialog/confirmation-dialog.component';
14
+ /**
15
+ * Note: this class is mutable and is stored in a list model. This is normally a big no no but
16
+ * we're manually deriving other models from the list after view state changes. I.e. we not
17
+ * using pectin chains on any of the mutable fields.
18
+ * @template D, R, E
19
+ */
20
+ var /**
21
+ * Note: this class is mutable and is stored in a list model. This is normally a big no no but
22
+ * we're manually deriving other models from the list after view state changes. I.e. we not
23
+ * using pectin chains on any of the mutable fields.
24
+ * @template D, R, E
25
+ */
26
+ TabContext = /** @class */ (function () {
27
+ function TabContext(activityData, activityClass, interactionContext, activityCallbacks) {
28
+ this.activityData = activityData;
29
+ this.activityClass = activityClass;
30
+ this.interactionContext = interactionContext;
31
+ this.activityCallbacks = activityCallbacks;
32
+ this._complete = false;
33
+ }
34
+ /**
35
+ * @return {?}
36
+ */
37
+ TabContext.prototype.isComponentRealised = /**
38
+ * @return {?}
39
+ */
40
+ function () {
41
+ return !!this._component;
42
+ };
43
+ /**
44
+ * @return {?}
45
+ */
46
+ TabContext.prototype.isComplete = /**
47
+ * @return {?}
48
+ */
49
+ function () {
50
+ return this._complete;
51
+ };
52
+ /**
53
+ * @param {?} component
54
+ * @return {?}
55
+ */
56
+ TabContext.prototype.componentReady = /**
57
+ * @param {?} component
58
+ * @return {?}
59
+ */
60
+ function (component) {
61
+ assert.isNil(this._component);
62
+ this._component = component;
63
+ };
64
+ Object.defineProperty(TabContext.prototype, "component", {
65
+ get: /**
66
+ * @return {?}
67
+ */
68
+ function () {
69
+ return this._component;
70
+ },
71
+ enumerable: true,
72
+ configurable: true
73
+ });
74
+ // @Trace()
75
+ // @Trace()
76
+ /**
77
+ * @param {?} result
78
+ * @return {?}
79
+ */
80
+ TabContext.prototype.onDone =
81
+ // @Trace()
82
+ /**
83
+ * @param {?} result
84
+ * @return {?}
85
+ */
86
+ function (result) {
87
+ this._complete = true;
88
+ this.activityCallbacks.onDone(result);
89
+ };
90
+ // @Trace()
91
+ // @Trace()
92
+ /**
93
+ * @param {?} error
94
+ * @return {?}
95
+ */
96
+ TabContext.prototype.onCancel =
97
+ // @Trace()
98
+ /**
99
+ * @param {?} error
100
+ * @return {?}
101
+ */
102
+ function (error) {
103
+ this._complete = true;
104
+ this.activityCallbacks.onCancel(error);
105
+ };
106
+ return TabContext;
107
+ }());
108
+ if (false) {
109
+ /**
110
+ * @type {?}
111
+ * @private
112
+ */
113
+ TabContext.prototype._complete;
114
+ /**
115
+ * @type {?}
116
+ * @private
117
+ */
118
+ TabContext.prototype._component;
119
+ /** @type {?} */
120
+ TabContext.prototype.activityData;
121
+ /** @type {?} */
122
+ TabContext.prototype.activityClass;
123
+ /** @type {?} */
124
+ TabContext.prototype.interactionContext;
125
+ /** @type {?} */
126
+ TabContext.prototype.activityCallbacks;
127
+ }
128
+ /**
129
+ * @template D, R, E
130
+ */
15
131
  var ActivityContainerComponent = /** @class */ (function (_super) {
16
132
  tslib_1.__extends(ActivityContainerComponent, _super);
17
133
  function ActivityContainerComponent() {
18
134
  var _this = _super.call(this) || this;
19
- _this.activityOutletTabs = new MutableListModel();
20
- _this.obsoleteTabs = [];
135
+ _this.activityFinishedEvents = new MutableStream();
136
+ _this.activityTabs = new MutableListModel();
21
137
  _this.finished = false;
22
138
  _this._activityList = new MutableListModel();
139
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
140
+ chain(_this.activityFinishedEvents).throttle(50).subscribe((/**
141
+ * @return {?}
142
+ */
143
+ function () { return _this.onActivityFinished(); }));
23
144
  return _this;
24
145
  }
146
+ Object.defineProperty(ActivityContainerComponent.prototype, "initialActivityOutletContext", {
147
+ get: /**
148
+ * @return {?}
149
+ */
150
+ function () {
151
+ return this.activityTabs.length > 0 ? this.activityTabs.value[0] : null;
152
+ },
153
+ set: /**
154
+ * @param {?} initialContext
155
+ * @return {?}
156
+ */
157
+ function (initialContext) {
158
+ var _this = this;
159
+ assert.isNil(this.initialActivityOutletContext);
160
+ this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {
161
+ onDone: (/**
162
+ * @param {?} result
163
+ * @return {?}
164
+ */
165
+ function (result) {
166
+ _this.finished = true;
167
+ return initialContext.onDone(result);
168
+ }),
169
+ onCancel: (/**
170
+ * @param {?} error
171
+ * @return {?}
172
+ */
173
+ function (error) {
174
+ _this.finished = true;
175
+ return initialContext.onCancel(error);
176
+ })
177
+ }));
178
+ },
179
+ enumerable: true,
180
+ configurable: true
181
+ });
25
182
  /**
26
183
  * @return {?}
27
184
  */
@@ -57,94 +214,28 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
57
214
  */
58
215
  function () {
59
216
  var _this = this;
60
- var observe = Dsl.disposeWith(this).observe;
61
- this._activityList.value = this.outlets.toArray().map((/**
62
- * @param {?} c
217
+ var _a = Dsl.disposeWith(this), chain = _a.chain, observe = _a.observe;
218
+ observe.valuesFrom(this.outlets.changes).subscribe((/**
63
219
  * @return {?}
64
220
  */
65
- function (c) { return c.component; }));
66
- observe.valuesFrom(this.outlets.changes).subscribe((/**
67
- * @param {?} change
221
+ function () { return setTimeout((/**
68
222
  * @return {?}
69
223
  */
70
- function (change) {
71
- _this.safelyUpdateActivityList(change.map((/**
72
- * @param {?} c
73
- * @return {?}
74
- */
75
- function (c) { return c.component; })));
76
- }));
224
+ function () { return _this.updateActivityList(); })); }));
77
225
  observe.valuesFrom(this.tabs.animationDone).subscribe((/**
78
226
  * @return {?}
79
227
  */
80
228
  function () { return _this.onAnimationFinished(); }));
229
+ this.updateActivityList();
81
230
  };
82
231
  /**
83
- * Update in the next tick to avoid changing state in the current change detection cycle.
84
- * @param activities
85
- */
86
- /**
87
- * Update in the next tick to avoid changing state in the current change detection cycle.
88
- * @private
89
- * @param {?} activities
90
- * @return {?}
91
- */
92
- ActivityContainerComponent.prototype.safelyUpdateActivityList = /**
93
- * Update in the next tick to avoid changing state in the current change detection cycle.
94
- * @private
95
- * @param {?} activities
96
- * @return {?}
97
- */
98
- function (activities) {
99
- var _this = this;
100
- setTimeout((/**
101
- * @return {?}
102
- */
103
- function () { return _this._activityList.value = activities; }));
104
- };
105
- /**
106
- * @template D, R, E
107
- * @param {?} initialContext
108
- * @return {?}
109
- */
110
- ActivityContainerComponent.prototype.initialise = /**
111
- * @template D, R, E
112
- * @param {?} initialContext
113
- * @return {?}
114
- */
115
- function (initialContext) {
116
- /** @type {?} */
117
- var self = this;
118
- this.initialActivityOutletContext = {
119
- activityClass: initialContext.activityClass,
120
- activityData: initialContext.activityData,
121
- onDone: (/**
122
- * @param {?} result
123
- * @return {?}
124
- */
125
- function (result) {
126
- self.finished = true;
127
- return initialContext.onDone(result);
128
- }),
129
- onCancel: (/**
130
- * @param {?} error
131
- * @return {?}
132
- */
133
- function (error) {
134
- self.finished = true;
135
- return initialContext.onCancel(error);
136
- }),
137
- interactionContext: this
138
- };
139
- };
140
- /**
141
- * @template D, R, E
232
+ * @template D1, R1, E1
142
233
  * @param {?} activityType
143
234
  * @param {?=} data
144
235
  * @return {?}
145
236
  */
146
237
  ActivityContainerComponent.prototype.startActivity = /**
147
- * @template D, R, E
238
+ * @template D1, R1, E1
148
239
  * @param {?} activityType
149
240
  * @param {?=} data
150
241
  * @return {?}
@@ -160,41 +251,26 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
160
251
  */
161
252
  function (resolve, reject) {
162
253
  /** @type {?} */
163
- var context = {
164
- interactionContext: self,
165
- activityClass: activityType,
166
- activityData: data,
254
+ var context = new TabContext(data, activityType, self, {
167
255
  onDone: (/**
168
256
  * @param {?} result
169
257
  * @return {?}
170
258
  */
171
259
  function (result) {
172
- self.obsoleteTabs.push(context);
173
- // animating on the next tick gives chained done's a chance to
174
- // finished before we start an animations
175
260
  resolve(result);
176
- setTimeout((/**
177
- * @return {?}
178
- */
179
- function () { return self.animateTabs(); }));
261
+ self.activityFinishedEvents.publish({});
180
262
  }),
181
263
  onCancel: (/**
182
264
  * @param {?} error
183
265
  * @return {?}
184
266
  */
185
267
  function (error) {
186
- self.obsoleteTabs.push(context);
187
- // finished before we start an animations
188
268
  reject(error);
189
- // animating on the next tick gives chained done's a chance to complete before we animate
190
- setTimeout((/**
191
- * @return {?}
192
- */
193
- function () { return self.animateTabs(); }));
269
+ self.activityFinishedEvents.publish({});
194
270
  })
195
- };
196
- self.activityOutletTabs.push(context);
197
- self.tabs.selectedIndex = _this.activityOutletTabs.length;
271
+ });
272
+ self.activityTabs.push(context);
273
+ self.tabs.selectedIndex = _this.activityTabs.length;
198
274
  }));
199
275
  };
200
276
  /**
@@ -220,14 +296,14 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
220
296
  return this.startActivity(ConfirmationDialogComponent, confirm);
221
297
  };
222
298
  /**
223
- * @template D, R, E
299
+ * @template D1, R1, E1
224
300
  * @param {?} confirm
225
301
  * @param {?} activityType
226
302
  * @param {?=} data
227
303
  * @return {?}
228
304
  */
229
305
  ActivityContainerComponent.prototype.confirmThen = /**
230
- * @template D, R, E
306
+ * @template D1, R1, E1
231
307
  * @param {?} confirm
232
308
  * @param {?} activityType
233
309
  * @param {?=} data
@@ -240,43 +316,131 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
240
316
  data: data
241
317
  });
242
318
  };
319
+ // @Trace()
320
+ // @Trace()
243
321
  /**
244
322
  * @private
245
323
  * @return {?}
246
324
  */
247
- ActivityContainerComponent.prototype.onAnimationFinished = /**
325
+ ActivityContainerComponent.prototype.onActivityFinished =
326
+ // @Trace()
327
+ /**
328
+ * @private
329
+ * @return {?}
330
+ */
331
+ function () {
332
+ // don't do anything if job already queued up.
333
+ if (!this.finished) {
334
+ if (this.synchroniseSelectedTabIndex()) {
335
+ this.cleanupStaleActivities();
336
+ }
337
+ this.updateActivityList();
338
+ }
339
+ };
340
+ // @Trace()
341
+ // @Trace()
342
+ /**
343
+ * @private
344
+ * @return {?}
345
+ */
346
+ ActivityContainerComponent.prototype.cleanupStaleActivities =
347
+ // @Trace()
348
+ /**
248
349
  * @private
249
350
  * @return {?}
250
351
  */
251
352
  function () {
252
353
  var _this = this;
253
- this.activityOutletTabs.value = this.activityOutletTabs.value.filter((/**
254
- * @param {?} tab
354
+ // clean up old tabs
355
+ if (this.tabs.selectedIndex < this.activityTabs.length - 1) {
356
+ this.activityTabs.runInTransaction((/**
357
+ * @param {?} draft
358
+ * @return {?}
359
+ */
360
+ function (draft) {
361
+ draft.value = draft.value.slice(0, 1 + _this.tabs.selectedIndex);
362
+ }));
363
+ }
364
+ };
365
+ /**
366
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
367
+ */
368
+ // @Trace()
369
+ /**
370
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
371
+ * @private
372
+ * @return {?}
373
+ */
374
+ // @Trace()
375
+ ActivityContainerComponent.prototype.synchroniseSelectedTabIndex = /**
376
+ * Synchronises the selected tab index. Returns true if there was no change to the selected index.
377
+ * @private
378
+ * @return {?}
379
+ */
380
+ // @Trace()
381
+ function () {
382
+ /** @type {?} */
383
+ var previousIndex = this.tabs.selectedIndex;
384
+ /** @type {?} */
385
+ var newIndex = this.activityTabs.query().findIndex((/**
386
+ * @param {?} t
255
387
  * @return {?}
256
388
  */
257
- function (tab) {
258
- return !_this.obsoleteTabs.includes(tab);
259
- }));
260
- this.obsoleteTabs = [];
261
- this.outlets.toArray()[this.tabs.selectedIndex].notifyReady();
389
+ function (t) { return t.isComplete(); })) - 1;
390
+ this.tabs.selectedIndex = newIndex;
391
+ return previousIndex === newIndex;
262
392
  };
393
+ // @Trace()
394
+ // @Trace()
263
395
  /**
264
396
  * @private
265
397
  * @return {?}
266
398
  */
267
- ActivityContainerComponent.prototype.animateTabs = /**
399
+ ActivityContainerComponent.prototype.onAnimationFinished =
400
+ // @Trace()
401
+ /**
268
402
  * @private
269
403
  * @return {?}
270
404
  */
271
405
  function () {
272
- if (!this.finished) {
273
- this.tabs.selectedIndex = this.activityOutletTabs.length - this.obsoleteTabs.length;
274
- }
406
+ this.getSelectedOutlet().component.onActivityReady();
407
+ this.cleanupStaleActivities();
408
+ this.updateActivityList();
409
+ };
410
+ /**
411
+ * @private
412
+ * @return {?}
413
+ */
414
+ ActivityContainerComponent.prototype.updateActivityList = /**
415
+ * @private
416
+ * @return {?}
417
+ */
418
+ function () {
419
+ this._activityList.value = this.activityTabs.value.filter((/**
420
+ * @param {?} t
421
+ * @return {?}
422
+ */
423
+ function (t) { return !t.isComplete() && t.isComponentRealised(); })).map((/**
424
+ * @param {?} t
425
+ * @return {?}
426
+ */
427
+ function (t) { return t.component; }));
428
+ };
429
+ /**
430
+ * @private
431
+ * @return {?}
432
+ */
433
+ ActivityContainerComponent.prototype.getSelectedOutlet = /**
434
+ * @private
435
+ * @return {?}
436
+ */
437
+ function () {
438
+ return this.outlets.toArray()[this.tabs.selectedIndex];
275
439
  };
276
440
  ActivityContainerComponent.decorators = [
277
441
  { type: Component, args: [{
278
442
  selector: 'angular-ui-powerups-activity-container',
279
- template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab>\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"initialActivityOutletContext\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of activityOutletTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
443
+ template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"true\">\n <mat-tab *ngFor=\"let tab of activityTabs.value\">\n <angular-ui-powerups-activity-outlet [interactionContext]=\"this\"\n [activityContext]=\"tab\"></angular-ui-powerups-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
280
444
  styles: [":host{display:block}"]
281
445
  }] }
282
446
  ];
@@ -289,26 +453,22 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
289
453
  outlets: [{ type: ViewChildren, args: [ActivityOutletComponent,] }]
290
454
  };
291
455
  return ActivityContainerComponent;
292
- }(DisposableComponent));
456
+ }(InteractionContext));
293
457
  export { ActivityContainerComponent };
294
458
  if (false) {
459
+ /**
460
+ * @type {?}
461
+ * @private
462
+ */
463
+ ActivityContainerComponent.prototype.activityFinishedEvents;
295
464
  /** @type {?} */
296
465
  ActivityContainerComponent.prototype.parentInteractionContext;
297
466
  /** @type {?} */
298
- ActivityContainerComponent.prototype.initialActivityOutletContext;
299
- /** @type {?} */
300
- ActivityContainerComponent.prototype.currentActivity;
301
- /** @type {?} */
302
467
  ActivityContainerComponent.prototype.tabs;
303
468
  /** @type {?} */
304
469
  ActivityContainerComponent.prototype.outlets;
305
470
  /** @type {?} */
306
- ActivityContainerComponent.prototype.activityOutletTabs;
307
- /**
308
- * @type {?}
309
- * @private
310
- */
311
- ActivityContainerComponent.prototype.obsoleteTabs;
471
+ ActivityContainerComponent.prototype.activityTabs;
312
472
  /**
313
473
  * @type {?}
314
474
  * @private
@@ -320,22 +480,4 @@ if (false) {
320
480
  */
321
481
  ActivityContainerComponent.prototype._activityList;
322
482
  }
323
- (function (ActivityContainerComponent) {
324
- /**
325
- * @record
326
- * @template D, R, E
327
- */
328
- function ActivityContext() { }
329
- ActivityContainerComponent.ActivityContext = ActivityContext;
330
- if (false) {
331
- /** @type {?} */
332
- ActivityContext.prototype.activityClass;
333
- /** @type {?} */
334
- ActivityContext.prototype.activityData;
335
- /** @type {?} */
336
- ActivityContext.prototype.onDone;
337
- /** @type {?} */
338
- ActivityContext.prototype.onCancel;
339
- }
340
- })(ActivityContainerComponent || (ActivityContainerComponent = {}));
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBRUwsR0FBRyxFQUVILGdCQUFnQixFQUlqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRS9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRW5HO0lBS2dELHNEQUFtQjtJQXNCakU7UUFBQSxZQUNFLGlCQUFPLFNBQ1I7UUFSUSx3QkFBa0IsR0FBRyxJQUFJLGdCQUFnQixFQUF3QyxDQUFDO1FBQ25GLGtCQUFZLEdBQTJDLEVBQUUsQ0FBQztRQUMxRCxjQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVIsbUJBQWEsR0FBRyxJQUFJLGdCQUFnQixFQUFzQixDQUFDOztJQUk1RSxDQUFDOzs7O0lBRUQsNkNBQVE7OztJQUFSO1FBQ0UsT0FBTyxJQUFJ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bXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RhYmxlLFxuICBEc2wsXG4gIExpc3RNb2RlbCxcbiAgTXV0YWJsZUxpc3RNb2RlbCxcbiAgVHJhbnNhY3Rpb25PYnNlcnZlcixcbiAgVXNlRGVsZWdhdGUsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgRGlzcG9zYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnLi4vLi4vYWxlcnQnO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gJy4uLy4uL2NvbmZpcm0nO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBBY3Rpdml0eU91dGxldENvbnRleHQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQnO1xuaW1wb3J0IHsgQWN0aXZpdHlPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS10aGVuLWRpYWxvZy9jb25maXJtLXRoZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYW5ndWxhci11aS1wb3dlcnVwcy1hY3Rpdml0eS1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBEaXNwb3NhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIEBJbnB1dCgpXG4gIHBhcmVudEludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0O1xuXG4gIEBJbnB1dCgpXG4gIGluaXRpYWxBY3Rpdml0eU91dGxldENvbnRleHQ6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxhbnksIGFueSwgYW55PjtcblxuICByZWFkb25seSBjdXJyZW50QWN0aXZpdHk6IFZhbHVlTW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+PjtcblxuICBAVmlld0NoaWxkKCd0YWJzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGFiczogTWF0VGFiR3JvdXA7XG5cbiAgQFZpZXdDaGlsZHJlbihBY3Rpdml0eU91dGxldENvbXBvbmVudClcbiAgb3V0bGV0czogUXVlcnlMaXN0PEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PGFueSwgYW55LCBhbnk+PjtcblxuICByZWFkb25seSBhY3Rpdml0eU91dGxldFRhYnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxBY3Rpdml0eU91dGxldENvbnRleHQ8YW55LCBhbnksIGFueT4+KCk7XG4gIHByaXZhdGUgb2Jzb2xldGVUYWJzOiBBY3Rpdml0eU91dGxldENvbnRleHQ8YW55LCBhbnksIGFueT5bXSA9IFtdO1xuICBwcml2YXRlIGZpbmlzaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZpdHlMaXN0ID0gbmV3IE11dGFibGVMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRJbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIGdldCBhY3Rpdml0eUxpc3QoKTpMaXN0TW9kZWw8QWN0aXZpdHk8YW55LGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZpdHlMaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBvYnNlcnZlIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5fYWN0aXZpdHlMaXN0LnZhbHVlID0gdGhpcy5vdXRsZXRzLnRvQXJyYXkoKS5tYXAoYyA9PiBjLmNvbXBvbmVudCk7XG4gICAgb2JzZXJ2ZS52YWx1ZXNGcm9tKHRoaXMub3V0bGV0cy5jaGFuZ2VzKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgdGhpcy5zYWZlbHlVcGRhdGVBY3Rpdml0eUxpc3QoY2hhbmdlLm1hcChjID0+IGMuY29tcG9uZW50KSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZS52YWx1ZXNGcm9tKHRoaXMudGFicy5hbmltYXRpb25Eb25lKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkFuaW1hdGlvbkZpbmlzaGVkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBpbiB0aGUgbmV4dCB0aWNrIHRvIGF2b2lkIGNoYW5naW5nIHN0YXRlIGluIHRoZSBjdXJyZW50IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAqIEBwYXJhbSBhY3Rpdml0aWVzXG4gICAqL1xuICBwcml2YXRlIHNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdChhY3Rpdml0aWVzOkFjdGl2aXR5PGFueSxhbnk+W10pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX2FjdGl2aXR5TGlzdC52YWx1ZSA9IGFjdGl2aXRpZXMpO1xuICB9XG5cbiAgaW5pdGlhbGlzZTxELCBSLCBFPihpbml0aWFsQ29udGV4dDogQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuQWN0aXZpdHlDb250ZXh0PEQsIFIsIEU+KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5pbml0aWFsQWN0aXZpdHlPdXRsZXRDb250ZXh0ID0ge1xuICAgICAgYWN0aXZpdHlDbGFzczogaW5pdGlhbENvbnRleHQuYWN0aXZpdHlDbGFzcyxcbiAgICAgIGFjdGl2aXR5RGF0YTogaW5pdGlhbENvbnRleHQuYWN0aXZpdHlEYXRhLFxuICAgICAgb25Eb25lOiBmdW5jdGlvbihyZXN1bHQ6IFIpIHtcbiAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkRvbmUocmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogZnVuY3Rpb24oZXJyb3I6IEUpIHtcbiAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkNhbmNlbChlcnJvcik7XG4gICAgICB9LFxuICAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiB0aGlzXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0QWN0aXZpdHk8RCwgUiwgRT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PiwgZGF0YT86IEQpOiBQcm9taXNlPFI+IHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Uj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiBzZWxmLFxuICAgICAgICBhY3Rpdml0eUNsYXNzOiBhY3Rpdml0eVR5cGUsXG4gICAgICAgIGFjdGl2aXR5RGF0YTogZGF0YSxcbiAgICAgICAgb25Eb25lOiBmdW5jdGlvbihyZXN1bHQ6IFIpIHtcbiAgICAgICAgICBzZWxmLm9ic29sZXRlVGFicy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgIC8vIGFuaW1hdGluZyBvbiB0aGUgbmV4dCB0aWNrIGdpdmVzIGNoYWluZWQgZG9uZSdzIGEgY2hhbmNlIHRvXG4gICAgICAgICAgLy8gZmluaXNoZWQgYmVmb3JlIHdlIHN0YXJ0IGFuIGFuaW1hdGlvbnNcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZWxmLmFuaW1hdGVUYWJzKCkpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24oZXJyb3I6IEUpIHtcbiAgICAgICAgICBzZWxmLm9ic29sZXRlVGFicy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgIC8vIGZpbmlzaGVkIGJlZm9yZSB3ZSBzdGFydCBhbiBhbmltYXRpb25zXG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAvLyBhbmltYXRpbmcgb24gdGhlIG5leHQgdGljayBnaXZlcyBjaGFpbmVkIGRvbmUncyBhIGNoYW5jZSB0byBjb21wbGV0ZSBiZWZvcmUgd2UgYW5pbWF0ZVxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2VsZi5hbmltYXRlVGFicygpKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHNlbGYuYWN0aXZpdHlPdXRsZXRUYWJzLnB1c2goY29udGV4dCk7XG4gICAgICBzZWxmLnRhYnMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuYWN0aXZpdHlPdXRsZXRUYWJzLmxlbmd0aDtcbiAgICB9KTtcbiAgfVxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQWxlcnREaWFsb2dDb21wb25lbnQsIGFsZXJ0KTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0QWN0aXZpdHkoQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCBjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1UaGVuPEQsIFIsIEU+KGNvbmZpcm06IENvbmZpcm0sIGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE/OiBEKTogUHJvbWlzZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRBY3Rpdml0eTxDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudC5EYXRhPEQsIFIsIEU+LCBSLCBFPihDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgY29uZmlybSxcbiAgICAgIGFjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIG9uQW5pbWF0aW9uRmluaXNoZWQoKSB7XG4gICAgdGhpcy5hY3Rpdml0eU91dGxldFRhYnMudmFsdWUgPSB0aGlzLmFjdGl2aXR5T3V0bGV0VGFicy52YWx1ZS5maWx0ZXIodGFiID0+IHtcbiAgICAgIHJldHVybiAhdGhpcy5vYnNvbGV0ZVRhYnMuaW5jbHVkZXModGFiKTtcbiAgICB9KTtcbiAgICB0aGlzLm9ic29sZXRlVGFicyA9IFtdO1xuICAgIHRoaXMub3V0bGV0cy50b0FycmF5KClbdGhpcy50YWJzLnNlbGVjdGVkSW5kZXhdLm5vdGlmeVJlYWR5KCk7XG4gIH1cblxuICBwcml2YXRlIGFuaW1hdGVUYWJzKCkge1xuICAgIGlmICghdGhpcy5maW5pc2hlZCkge1xuICAgICAgdGhpcy50YWJzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmFjdGl2aXR5T3V0bGV0VGFicy5sZW5ndGggLSB0aGlzLm9ic29sZXRlVGFicy5sZW5ndGg7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlDb250ZXh0PEQsIFIsIEU+IHtcbiAgICBhY3Rpdml0eUNsYXNzOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PixcbiAgICBhY3Rpdml0eURhdGE6IEQsXG4gICAgb25Eb25lOiAocmVzdWx0OiBSKSA9PiB2b2lkLFxuICAgIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHZvaWQsXG4gIH1cbn1cbiJdfQ==
483
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2FjdGl2aXR5LWNvbnRhaW5lci9hY3Rpdml0eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFpQixHQUFHLEVBQWEsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7Ozs7QUFPbkc7Ozs7Ozs7SUFLRSxvQkFBcUIsWUFBZSxFQUNmLGFBQStDLEVBQy9DLGtCQUFzQyxFQUN0QyxpQkFBMkM7UUFIM0MsaUJBQVksR0FBWixZQUFZLENBQUc7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7UUFDL0MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBTnhELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFPMUIsQ0FBQzs7OztJQUVELHdDQUFtQjs7O0lBQW5CO1FB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LElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU07Ozs7UUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUExQyxDQUEwQyxFQUFDLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFNBQVMsRUFBWCxDQUFXLEVBQUMsQ0FBQztJQUNuSSxDQUFDOzs7OztJQUVPLHNEQUFpQjs7OztJQUF6QjtRQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7O2dCQWxKRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsbVZBQWtEOztpQkFFbkQ7Ozs7OzJDQUtFLEtBQUs7K0NBR0wsS0FBSzt1QkFtQkwsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MEJBR2xDLFlBQVksU0FBQyx1QkFBdUI7O0lBaUh2QyxpQ0FBQztDQUFBLEFBbkpELENBS3lELGtCQUFrQixHQThJMUU7U0E5SVksMEJBQTBCOzs7Ozs7SUFFckMsNERBQW1FOztJQUVuRSw4REFDNkM7O0lBcUI3QywwQ0FDa0I7O0lBRWxCLDZDQUMyRDs7SUFFM0Qsa0RBQTBFOzs7OztJQUMxRSw4Q0FBeUI7Ozs7O0lBRXpCLG1EQUE0RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBhc3NlcnQsIENvbnN0cnVjdGFibGUsIERzbCwgTGlzdE1vZGVsLCBNdXRhYmxlTGlzdE1vZGVsLCBNdXRhYmxlU3RyZWFtIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuXG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnLi4vLi4vYWxlcnQnO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gJy4uLy4uL2NvbmZpcm0nO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vaW50ZXJhY3Rpb24tY29udGV4dCc7XG5pbXBvcnQgeyBBY3Rpdml0eU91dGxldENvbnRleHQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQnO1xuaW1wb3J0IHsgQWN0aXZpdHlPdXRsZXRDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS10aGVuLWRpYWxvZy9jb25maXJtLXRoZW4tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcblxuLyoqXG4gKiBOb3RlOiB0aGlzIGNsYXNzIGlzIG11dGFibGUgYW5kIGlzIHN0b3JlZCBpbiBhIGxpc3QgbW9kZWwuICBUaGlzIGlzIG5vcm1hbGx5IGEgYmlnIG5vIG5vIGJ1dFxuICogIHdlJ3JlIG1hbnVhbGx5IGRlcml2aW5nIG90aGVyIG1vZGVscyBmcm9tIHRoZSBsaXN0IGFmdGVyIHZpZXcgc3RhdGUgY2hhbmdlcy4gIEkuZS4gd2Ugbm90XG4gKiAgdXNpbmcgcGVjdGluIGNoYWlucyBvbiBhbnkgb2YgdGhlIG11dGFibGUgZmllbGRzLlxuICovXG5jbGFzcyBUYWJDb250ZXh0PEQsIFIsIEU+IGltcGxlbWVudHMgQWN0aXZpdHlPdXRsZXRDb250ZXh0PEQsIFIsIEU+IHtcblxuICBwcml2YXRlIF9jb21wbGV0ZSA9IGZhbHNlO1xuICBwcml2YXRlIF9jb21wb25lbnQ6IEFjdGl2aXR5PEQsIFIsIEU+O1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGFjdGl2aXR5RGF0YTogRCxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgYWN0aXZpdHlDbGFzczogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LFxuICAgICAgICAgICAgICByZWFkb25seSBhY3Rpdml0eUNhbGxiYWNrczogQWN0aXZpdHkuQ2FsbGJhY2tzPFIsIEU+KSB7XG4gIH1cblxuICBpc0NvbXBvbmVudFJlYWxpc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2NvbXBvbmVudDtcbiAgfVxuXG4gIGlzQ29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBsZXRlO1xuICB9XG5cbiAgY29tcG9uZW50UmVhZHkoY29tcG9uZW50OiBBY3Rpdml0eTxELCBSLCBFPikge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLl9jb21wb25lbnQpO1xuICAgIHRoaXMuX2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxuXG4gIGdldCBjb21wb25lbnQoKTogQWN0aXZpdHk8RCwgUiwgRT4ge1xuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbkRvbmUocmVzdWx0OiBSKTogdm9pZCB7XG4gICAgdGhpcy5fY29tcGxldGUgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZpdHlDYWxsYmFja3Mub25Eb25lKHJlc3VsdCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvbkNhbmNlbChlcnJvcjogRSk6IHZvaWQge1xuICAgIHRoaXMuX2NvbXBsZXRlID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2aXR5Q2FsbGJhY2tzLm9uQ2FuY2VsKGVycm9yKTtcbiAgfVxuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXItdWktcG93ZXJ1cHMtYWN0aXZpdHktY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50PEQsIFIsIEU+IGV4dGVuZHMgSW50ZXJhY3Rpb25Db250ZXh0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5RmluaXNoZWRFdmVudHMgPSBuZXcgTXV0YWJsZVN0cmVhbTxhbnk+KCk7XG5cbiAgQElucHV0KClcbiAgcGFyZW50SW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQ7XG5cbiAgQElucHV0KClcbiAgc2V0IGluaXRpYWxBY3Rpdml0eU91dGxldENvbnRleHQoaW5pdGlhbENvbnRleHQ6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPikge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLmluaXRpYWxBY3Rpdml0eU91dGxldENvbnRleHQpO1xuICAgIHRoaXMuYWN0aXZpdHlUYWJzLnB1c2gobmV3IFRhYkNvbnRleHQoaW5pdGlhbENvbnRleHQuYWN0aXZpdHlEYXRhLCBpbml0aWFsQ29udGV4dC5hY3Rpdml0eUNsYXNzLCB0aGlzLCB7XG4gICAgICBvbkRvbmU6IChyZXN1bHQ6IFIpID0+IHtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBpbml0aWFsQ29udGV4dC5vbkRvbmUocmVzdWx0KTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogKGVycm9yOiBFKSA9PiB7XG4gICAgICAgIHRoaXMuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gaW5pdGlhbENvbnRleHQub25DYW5jZWwoZXJyb3IpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGdldCBpbml0aWFsQWN0aXZpdHlPdXRsZXRDb250ZXh0KCk6IEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlUYWJzLmxlbmd0aCA+IDAgPyB0aGlzLmFjdGl2aXR5VGFicy52YWx1ZVswXSA6IG51bGw7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0YWJzJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGFiczogTWF0VGFiR3JvdXA7XG5cbiAgQFZpZXdDaGlsZHJlbihBY3Rpdml0eU91dGxldENvbXBvbmVudClcbiAgb3V0bGV0czogUXVlcnlMaXN0PEFjdGl2aXR5T3V0bGV0Q29tcG9uZW50PGFueSwgYW55LCBhbnk+PjtcblxuICByZWFkb25seSBhY3Rpdml0eVRhYnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxUYWJDb250ZXh0PGFueSwgYW55LCBhbnk+PigpO1xuICBwcml2YXRlIGZpbmlzaGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZpdHlMaXN0ID0gbmV3IE11dGFibGVMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBjaGFpbih0aGlzLmFjdGl2aXR5RmluaXNoZWRFdmVudHMpLnRocm90dGxlKDUwKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkFjdGl2aXR5RmluaXNoZWQoKSk7XG4gIH1cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRJbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIGdldCBhY3Rpdml0eUxpc3QoKTogTGlzdE1vZGVsPEFjdGl2aXR5PGFueSwgYW55LCBhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2aXR5TGlzdC5yZWFkb25seTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY2hhaW4sIG9ic2VydmUgfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICBvYnNlcnZlLnZhbHVlc0Zyb20odGhpcy5vdXRsZXRzLmNoYW5nZXMpLnN1YnNjcmliZSgoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlQWN0aXZpdHlMaXN0KCkpKTtcbiAgICBvYnNlcnZlLnZhbHVlc0Zyb20odGhpcy50YWJzLmFuaW1hdGlvbkRvbmUpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQW5pbWF0aW9uRmluaXNoZWQoKSk7XG4gICAgdGhpcy51cGRhdGVBY3Rpdml0eUxpc3QoKTtcbiAgfVxuXG4gIHN0YXJ0QWN0aXZpdHk8RDEsIFIxLCBFMT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQxLCBSMSwgRTE+PiwgZGF0YT86IEQxKTogUHJvbWlzZTxSMT4ge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxSMT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IG5ldyBUYWJDb250ZXh0KGRhdGEsIGFjdGl2aXR5VHlwZSwgc2VsZiwge1xuICAgICAgICBvbkRvbmU6IGZ1bmN0aW9uKHJlc3VsdDogUjEpIHtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgc2VsZi5hY3Rpdml0eUZpbmlzaGVkRXZlbnRzLnB1Ymxpc2goe30pO1xuICAgICAgICB9LFxuICAgICAgICBvbkNhbmNlbDogZnVuY3Rpb24oZXJyb3I6IEUxKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICBzZWxmLmFjdGl2aXR5RmluaXNoZWRFdmVudHMucHVibGlzaCh7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2VsZi5hY3Rpdml0eVRhYnMucHVzaChjb250ZXh0KTtcbiAgICAgIHNlbGYudGFicy5zZWxlY3RlZEluZGV4ID0gdGhpcy5hY3Rpdml0eVRhYnMubGVuZ3RoO1xuICAgIH0pO1xuICB9XG5cblxuICBhbGVydChhbGVydDogQWxlcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdGFydEFjdGl2aXR5KEFsZXJ0RGlhbG9nQ29tcG9uZW50LCBhbGVydCk7XG4gIH1cblxuICBjb25maXJtKGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdGFydEFjdGl2aXR5KENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwgY29uZmlybSk7XG4gIH1cblxuICBjb25maXJtVGhlbjxEMSwgUjEsIEUxPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RDEsIFIxLCBFMT4+LCBkYXRhPzogRDEpOiBQcm9taXNlPFIxPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRBY3Rpdml0eTxDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudC5EYXRhPEQxLCBSMSwgRTE+LCBSMSwgRTE+KENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBjb25maXJtLFxuICAgICAgYWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGUsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwcml2YXRlIG9uQWN0aXZpdHlGaW5pc2hlZCgpIHtcbiAgICAvLyBkb24ndCBkbyBhbnl0aGluZyBpZiBqb2IgYWxyZWFkeSBxdWV1ZWQgdXAuXG4gICAgaWYgKCF0aGlzLmZpbmlzaGVkKSB7XG4gICAgICBpZiAodGhpcy5zeW5jaHJvbmlzZVNlbGVjdGVkVGFiSW5kZXgoKSkge1xuICAgICAgICB0aGlzLmNsZWFudXBTdGFsZUFjdGl2aXRpZXMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlQWN0aXZpdHlMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBjbGVhbnVwU3RhbGVBY3Rpdml0aWVzKCkge1xuICAgIC8vIGNsZWFuIHVwIG9sZCB0YWJzXG4gICAgaWYgKHRoaXMudGFicy5zZWxlY3RlZEluZGV4IDwgdGhpcy5hY3Rpdml0eVRhYnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5hY3Rpdml0eVRhYnMucnVuSW5UcmFuc2FjdGlvbihkcmFmdCA9PiB7XG4gICAgICAgIGRyYWZ0LnZhbHVlID0gZHJhZnQudmFsdWUuc2xpY2UoMCwgMSArIHRoaXMudGFicy5zZWxlY3RlZEluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbmlzZXMgdGhlIHNlbGVjdGVkIHRhYiBpbmRleC4gIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgbm8gY2hhbmdlIHRvIHRoZSBzZWxlY3RlZCBpbmRleC5cbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgc3luY2hyb25pc2VTZWxlY3RlZFRhYkluZGV4KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleDtcbiAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuYWN0aXZpdHlUYWJzLnF1ZXJ5KCkuZmluZEluZGV4KHQgPT4gdC5pc0NvbXBsZXRlKCkpIC0gMTtcbiAgICB0aGlzLnRhYnMuc2VsZWN0ZWRJbmRleCA9IG5ld0luZGV4O1xuICAgIHJldHVybiBwcmV2aW91c0luZGV4ID09PSBuZXdJbmRleDtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25BbmltYXRpb25GaW5pc2hlZCgpIHtcbiAgICB0aGlzLmdldFNlbGVjdGVkT3V0bGV0KCkuY29tcG9uZW50Lm9uQWN0aXZpdHlSZWFkeSgpO1xuICAgIHRoaXMuY2xlYW51cFN0YWxlQWN0aXZpdGllcygpO1xuICAgIHRoaXMudXBkYXRlQWN0aXZpdHlMaXN0KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFjdGl2aXR5TGlzdCgpIHtcbiAgICB0aGlzLl9hY3Rpdml0eUxpc3QudmFsdWUgPSB0aGlzLmFjdGl2aXR5VGFicy52YWx1ZS5maWx0ZXIodCA9PiAhdC5pc0NvbXBsZXRlKCkgJiYgdC5pc0NvbXBvbmVudFJlYWxpc2VkKCkpLm1hcCh0ID0+IHQuY29tcG9uZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWRPdXRsZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0bGV0cy50b0FycmF5KClbdGhpcy50YWJzLnNlbGVjdGVkSW5kZXhdO1xuICB9XG59XG4iXX0=
@@ -8,15 +8,14 @@
8
8
  */
9
9
  export function ActivityOutletContext() { }
10
10
  if (false) {
11
- /** @type {?} */
12
- ActivityOutletContext.prototype.interactionContext;
13
11
  /** @type {?} */
14
12
  ActivityOutletContext.prototype.activityClass;
15
13
  /** @type {?} */
16
14
  ActivityOutletContext.prototype.activityData;
17
- /** @type {?} */
18
- ActivityOutletContext.prototype.onDone;
19
- /** @type {?} */
20
- ActivityOutletContext.prototype.onCancel;
15
+ /**
16
+ * @param {?} component
17
+ * @return {?}
18
+ */
19
+ ActivityOutletContext.prototype.componentReady = function (component) { };
21
20
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktb3V0bGV0LWNvbnRleHQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFLQSwyQ0FNQzs7O0lBTEMsbURBQXVDOztJQUN2Qyw4Q0FBZ0Q7O0lBQ2hELDZDQUFnQjs7SUFDaEIsdUNBQTRCOztJQUM1Qix5Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9hY3Rpdml0eSc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPiB7XG4gIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0LFxuICBhY3Rpdml0eUNsYXNzOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PixcbiAgYWN0aXZpdHlEYXRhOiBELFxuICBvbkRvbmU6IChyZXN1bHQ6IFIpID0+IHZvaWQsXG4gIG9uQ2FuY2VsOiAoZXJyb3I6IEUpID0+IHZvaWQsXG59XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktb3V0bGV0LWNvbnRleHQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vY29tcG9uZW50cy9hY3Rpdml0eS1vdXRsZXQvYWN0aXZpdHktb3V0bGV0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFJQSwyQ0FJQzs7O0lBSEMsOENBQWdEOztJQUNoRCw2Q0FBZ0I7Ozs7O0lBQ2hCLDBFQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdGFibGUgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4uLy4uL2FjdGl2aXR5JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5T3V0bGV0Q29udGV4dDxELCBSLCBFPiBleHRlbmRzIEFjdGl2aXR5LkNhbGxiYWNrczxSLCBFPiB7XG4gIGFjdGl2aXR5Q2xhc3M6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LFxuICBhY3Rpdml0eURhdGE6IEQsXG4gIGNvbXBvbmVudFJlYWR5Pyhjb21wb25lbnQ6QWN0aXZpdHk8RCxSLEU+KTtcbn1cbiJdfQ==