@coolon/angular-ui-powerups 0.0.90 → 0.0.92

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 (42) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +432 -364
  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 +7 -7
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +8 -8
  8. package/esm2015/lib/directives/command.directive.js +28 -5
  9. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +2 -7
  10. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -8
  11. package/esm2015/lib/interaction/interaction-context.js +70 -14
  12. package/esm2015/lib/interaction/services/dialog-interaction.service.js +11 -19
  13. package/esm2015/lib/place/navigation-session.js +171 -39
  14. package/esm2015/lib/place/place-component.js +4 -19
  15. package/esm2015/lib/place/place-router.js +72 -31
  16. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +2 -2
  17. package/esm2015/lib/place/route/guards/leave-place.guard.js +7 -177
  18. package/esm5/coolon-angular-ui-powerups.js +8 -8
  19. package/esm5/lib/directives/command.directive.js +32 -5
  20. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +2 -11
  21. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +3 -12
  22. package/esm5/lib/interaction/interaction-context.js +89 -27
  23. package/esm5/lib/interaction/services/dialog-interaction.service.js +11 -22
  24. package/esm5/lib/place/navigation-session.js +214 -54
  25. package/esm5/lib/place/place-component.js +4 -35
  26. package/esm5/lib/place/place-router.js +82 -37
  27. package/esm5/lib/place/route/guards/enter-place-guard.service.js +2 -2
  28. package/esm5/lib/place/route/guards/leave-place.guard.js +7 -176
  29. package/fesm2015/coolon-angular-ui-powerups.js +350 -299
  30. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  31. package/fesm5/coolon-angular-ui-powerups.js +427 -359
  32. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  33. package/lib/directives/command.directive.d.ts +2 -0
  34. package/lib/interaction/components/activity-container/activity-container.component.d.ts +1 -2
  35. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +3 -4
  36. package/lib/interaction/interaction-context.d.ts +6 -3
  37. package/lib/interaction/services/dialog-interaction.service.d.ts +3 -5
  38. package/lib/place/navigation-session.d.ts +26 -9
  39. package/lib/place/place-component.d.ts +4 -9
  40. package/lib/place/place-router.d.ts +8 -3
  41. package/lib/place/route/guards/leave-place.guard.d.ts +2 -10
  42. package/package.json +1 -1
@@ -3,7 +3,7 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
- import { GarbageCollector } from '@coolon/pectin';
6
+ import { Deferred, DelegatingListModel, Dsl, GarbageCollector } from '@coolon/pectin';
7
7
  import * as _ from 'lodash';
8
8
  /**
9
9
  * @abstract
@@ -14,51 +14,107 @@ var /**
14
14
  InteractionContext = /** @class */ (function (_super) {
15
15
  tslib_1.__extends(InteractionContext, _super);
16
16
  function InteractionContext() {
17
- return _super.call(this) || this;
18
- }
19
- Object.defineProperty(InteractionContext.prototype, "currentActivity", {
17
+ var _this = _super.call(this) || this;
20
18
  /**
21
- * Returns the activity that is currently active.
19
+ * Returns the current list of activities that are in progress.
22
20
  * This model is only updated in the next tick after the view has been updated.
23
21
  */
22
+ _this._activityListDelegate = new DelegatingListModel();
23
+ 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;
24
+ when.listOf(_this.activityList).becomesPopulated((/**
25
+ * @param {?} activities
26
+ * @return {?}
27
+ */
28
+ function (activities) {
29
+ if (_this.deferredGetCurrentActivity) {
30
+ _this.deferredGetCurrentActivity.resolve(_.last(activities));
31
+ _this.deferredGetCurrentActivity = null;
32
+ }
33
+ }));
34
+ return _this;
35
+ }
36
+ /**
37
+ * @protected
38
+ * @param {?} activityList
39
+ * @return {?}
40
+ */
41
+ InteractionContext.prototype.setActivityList = /**
42
+ * @protected
43
+ * @param {?} activityList
44
+ * @return {?}
45
+ */
46
+ function (activityList) {
47
+ this._activityListDelegate.setDelegate(activityList);
48
+ };
49
+ Object.defineProperty(InteractionContext.prototype, "activityList", {
24
50
  get: /**
25
- * Returns the activity that is currently active.
26
- * This model is only updated in the next tick after the view has been updated.
27
51
  * @return {?}
28
52
  */
29
53
  function () {
30
- return _.last(this.activityList.value);
54
+ return this._activityListDelegate.readonly;
31
55
  },
32
56
  enumerable: true,
33
57
  configurable: true
34
58
  });
35
59
  /**
36
- * @param {?} confirm
60
+ * Returns the activity that is currently active.
61
+ * This model is only updated in the next tick after the view has been updated.
62
+ */
63
+ /**
64
+ * Returns the activity that is currently active.
65
+ * This model is only updated in the next tick after the view has been updated.
37
66
  * @return {?}
38
67
  */
39
- InteractionContext.prototype.confirm = /**
40
- * @param {?} confirm
68
+ InteractionContext.prototype.getCurrentActivity = /**
69
+ * Returns the activity that is currently active.
70
+ * This model is only updated in the next tick after the view has been updated.
41
71
  * @return {?}
42
72
  */
43
- function (confirm) {
73
+ function () {
44
74
  return tslib_1.__awaiter(this, void 0, void 0, function () {
45
- var _a;
46
- return tslib_1.__generator(this, function (_b) {
47
- switch (_b.label) {
48
- case 0:
49
- _b.trys.push([0, 2, , 3]);
50
- return [4 /*yield*/, this.confirmOrReject(confirm)];
51
- case 1:
52
- _b.sent();
53
- return [2 /*return*/, true];
54
- case 2:
55
- _a = _b.sent();
56
- return [2 /*return*/, false];
57
- case 3: return [2 /*return*/];
75
+ return tslib_1.__generator(this, function (_a) {
76
+ if (!this.isActive()) {
77
+ return [2 /*return*/, Promise.reject('no activity in progress')];
78
+ }
79
+ else {
80
+ if (this.deferredGetCurrentActivity) {
81
+ // we're already waiting then just return the same promise
82
+ return [2 /*return*/, this.deferredGetCurrentActivity.promise];
83
+ }
84
+ else {
85
+ if (this.activityList.length < 1) {
86
+ this.deferredGetCurrentActivity = Deferred.defer();
87
+ return [2 /*return*/, this.deferredGetCurrentActivity.promise];
88
+ }
89
+ else {
90
+ return [2 /*return*/, _.last(this.activityList.value)];
91
+ }
92
+ }
58
93
  }
94
+ return [2 /*return*/];
59
95
  });
60
96
  });
61
97
  };
98
+ /**
99
+ * @param {?} confirm
100
+ * @return {?}
101
+ */
102
+ InteractionContext.prototype.confirm = /**
103
+ * @param {?} confirm
104
+ * @return {?}
105
+ */
106
+ function (confirm) {
107
+ // Important: we have to implement confirmOrReject as the main entry point
108
+ // as the canDeactivation guards need to be able to cancel an interaction
109
+ // without caring about returning a value.
110
+ return this.confirmOrReject(confirm).then((/**
111
+ * @return {?}
112
+ */
113
+ function () { return true; })).catch((/**
114
+ * @return {?}
115
+ */
116
+ function () { return false; }));
117
+ };
62
118
  return InteractionContext;
63
119
  }(GarbageCollector));
64
120
  /**
@@ -70,8 +126,14 @@ if (false) {
70
126
  * Returns the current list of activities that are in progress.
71
127
  * This model is only updated in the next tick after the view has been updated.
72
128
  * @type {?}
129
+ * @private
130
+ */
131
+ InteractionContext.prototype._activityListDelegate;
132
+ /**
133
+ * @type {?}
134
+ * @private
73
135
  */
74
- InteractionContext.prototype.activityList;
136
+ InteractionContext.prototype.deferredGetCurrentActivity;
75
137
  /**
76
138
  * Returns true if an activity is currently running.
77
139
  * @abstract
@@ -109,4 +171,4 @@ if (false) {
109
171
  */
110
172
  InteractionContext.prototype.alert = function (alert) { };
111
173
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFpQixnQkFBZ0IsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUkvRixPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7OztBQUU1Qjs7OztJQUFpRCw4Q0FBZ0I7SUFRL0Q7ZUFDRSxpQkFBTztJQUNULENBQUM7SUFNRCxzQkFBSSwrQ0FBZTtRQUpuQjs7O1dBR0c7Ozs7OztRQUNIO1lBQ0UsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQzs7O09BQUE7Ozs7O0lBV0ssb0NBQU87Ozs7SUFBYixVQUFjLE9BQWdCOzs7Ozs7O3dCQUUxQixxQkFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFBOzt3QkFBbkMsU0FBbUMsQ0FBQzt3QkFDcEMsc0JBQU8sSUFBSSxFQUFDOzs7d0JBRVosc0JBQU8sS0FBSyxFQUFDOzs7OztLQUVoQjtJQVlILHlCQUFDO0FBQUQsQ0FBQyxBQWhERCxDQUFpRCxnQkFBZ0IsR0FnRGhFOzs7Ozs7Ozs7OztJQTFDQywwQ0FBOEQ7Ozs7OztJQWlCOUQsd0RBQTZCOzs7Ozs7OztJQUU3QiwrRUFBc0c7Ozs7OztJQUV0RyxzRUFBMEQ7Ozs7Ozs7Ozs7SUFpQjFELHNGQUFzSDs7Ozs7O0lBRXRILDBEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdGFibGUsIEdhcmJhZ2VDb2xsZWN0b3IsIExpc3RNb2RlbCwgVHJhY2UsIFZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gJy4vYWN0aXZpdHknO1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICcuL2FsZXJ0JztcbmltcG9ydCB7IENvbmZpcm0gfSBmcm9tICcuL2NvbmZpcm0nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW50ZXJhY3Rpb25Db250ZXh0IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgbGlzdCBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIGluIHByb2dyZXNzLlxuICAgKiBUaGlzIG1vZGVsIGlzIG9ubHkgdXBkYXRlZCBpbiB0aGUgbmV4dCB0aWNrIGFmdGVyIHRoZSB2aWV3IGhhcyBiZWVuIHVwZGF0ZWQuXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBhY3Rpdml0eUxpc3Q6IExpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFjdGl2aXR5IHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogVGhpcyBtb2RlbCBpcyBvbmx5IHVwZGF0ZWQgaW4gdGhlIG5leHQgdGljayBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiB1cGRhdGVkLlxuICAgKi9cbiAgZ2V0IGN1cnJlbnRBY3Rpdml0eSgpOiBBY3Rpdml0eTxhbnksIGFueT4ge1xuICAgIHJldHVybiBfLmxhc3QodGhpcy5hY3Rpdml0eUxpc3QudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhbiBhY3Rpdml0eSBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICovXG4gIGFic3RyYWN0IGlzQWN0aXZlKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3Qgc3RhcnRBY3Rpdml0eTxELCBSLCBFPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj47XG5cbiAgYWJzdHJhY3QgY29uZmlybU9yUmVqZWN0KGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFzeW5jIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpcm1PclJlamVjdChjb25maXJtKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVzZW50cyB0aGUgY29uZmlybWF0aW9uIHRvIHRoZSB1c2VyIGFuZCBydW5zIHRoZSBhY3Rpdml0eSBvbmx5IGlmIHRoZSB1c2VyIGNvbmZpcm1zLlxuICAgKiBAcGFyYW0gY29uZmlybTpDb25maXJtIHRoZSBjb25maXJtYXRpb24gdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGFjdGl2aXR5VHlwZSB0aGUgYWN0aXZpdHkgdG8gcnVuIGlmIGNvbmZpcm1lZC5cbiAgICogQHBhcmFtIGRhdGEgdGhlIGFjdGl2aXR5IGRhdGEuXG4gICAqL1xuICBhYnN0cmFjdCBjb25maXJtVGhlbjxELCBSLCBFPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj47XG5cbiAgYWJzdHJhY3QgYWxlcnQoYWxlcnQ6IEFsZXJ0KTogUHJvbWlzZTx2b2lkPjtcblxufVxuXG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24tY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFpQixRQUFRLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFLNUI7Ozs7SUFBaUQsOENBQWdCO0lBVS9EO1FBQUEsWUFDRSxpQkFBTyxTQVFSOzs7OztRQWJnQiwyQkFBcUIsR0FBRyxJQUFJLG1CQUFtQixFQUFzQixDQUFDO1FBTS9FLElBQUEsMkJBQWtGLEVBQWhGLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxrQkFBTSxFQUFFLGNBQUksRUFBRSxnQkFBSyxFQUFFLG9CQUFPLEVBQUUsc0JBQWtDO1FBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLGdCQUFnQjs7OztRQUFDLFVBQUMsVUFBVTtZQUN6RCxJQUFJLEtBQUksQ0FBQywwQkFBMEIsRUFBRTtnQkFDbkMsS0FBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELEtBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7YUFDeEM7UUFDSCxDQUFDLEVBQUMsQ0FBQzs7SUFDTCxDQUFDOzs7Ozs7SUFFUyw0Q0FBZTs7Ozs7SUFBekIsVUFBMEIsWUFBMkM7UUFDbkUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsc0JBQUksNENBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7UUFDN0MsQ0FBQzs7O09BQUE7SUFHRDs7O09BR0c7Ozs7OztJQUNHLCtDQUFrQjs7Ozs7SUFBeEI7OztnQkFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNwQixzQkFBTyxPQUFPLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQUM7aUJBQ2xEO3FCQUFNO29CQUNMLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO3dCQUNuQywwREFBMEQ7d0JBQzFELHNCQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLEVBQUM7cUJBQ2hEO3lCQUFNO3dCQUNMLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNoQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDOzRCQUNuRCxzQkFBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFDO3lCQUNoRDs2QkFBTTs0QkFDTCxzQkFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUM7eUJBQ3hDO3FCQUNGO2lCQUNGOzs7O0tBQ0Y7Ozs7O0lBU0Qsb0NBQU87Ozs7SUFBUCxVQUFRLE9BQWdCO1FBQ3RCLDBFQUEwRTtRQUMxRSx5RUFBeUU7UUFDekUsMENBQTBDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJOzs7UUFBQyxjQUFNLE9BQUEsSUFBSSxFQUFKLENBQUksRUFBQyxDQUFDLEtBQUs7OztRQUFDLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxFQUFDLENBQUM7SUFDM0UsQ0FBQztJQWNILHlCQUFDO0FBQUQsQ0FBQyxBQTlFRCxDQUFpRCxnQkFBZ0IsR0E4RWhFOzs7Ozs7Ozs7Ozs7SUF4RUMsbURBQXVGOzs7OztJQUV2Rix3REFBc0U7Ozs7OztJQStDdEUsd0RBQTZCOzs7Ozs7OztJQUU3QiwrRUFBc0c7Ozs7OztJQVN0RyxzRUFBZ0U7Ozs7Ozs7Ozs7SUFRaEUsc0ZBQXNIOzs7Ozs7SUFFdEgsMERBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0YWJsZSwgRGVmZXJyZWQsIERlbGVnYXRpbmdMaXN0TW9kZWwsIERzbCwgR2FyYmFnZUNvbGxlY3RvciwgTGlzdE1vZGVsIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tICcuL2FjdGl2aXR5JztcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgeyBDb25maXJtIH0gZnJvbSAnLi9jb25maXJtJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEludGVyYWN0aW9uQ29udGV4dCBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGxpc3Qgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSBpbiBwcm9ncmVzcy5cbiAgICogVGhpcyBtb2RlbCBpcyBvbmx5IHVwZGF0ZWQgaW4gdGhlIG5leHQgdGljayBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiB1cGRhdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZpdHlMaXN0RGVsZWdhdGUgPSBuZXcgRGVsZWdhdGluZ0xpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+KCk7XG5cbiAgcHJpdmF0ZSBkZWZlcnJlZEdldEN1cnJlbnRBY3Rpdml0eTogRGVmZXJyZWQ8QWN0aXZpdHk8YW55LCBhbnksIGFueT4+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgd2hlbi5saXN0T2YodGhpcy5hY3Rpdml0eUxpc3QpLmJlY29tZXNQb3B1bGF0ZWQoKGFjdGl2aXRpZXMpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlZmVycmVkR2V0Q3VycmVudEFjdGl2aXR5KSB7XG4gICAgICAgIHRoaXMuZGVmZXJyZWRHZXRDdXJyZW50QWN0aXZpdHkucmVzb2x2ZShfLmxhc3QoYWN0aXZpdGllcykpO1xuICAgICAgICB0aGlzLmRlZmVycmVkR2V0Q3VycmVudEFjdGl2aXR5ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRBY3Rpdml0eUxpc3QoYWN0aXZpdHlMaXN0OiBMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+Pikge1xuICAgIHRoaXMuX2FjdGl2aXR5TGlzdERlbGVnYXRlLnNldERlbGVnYXRlKGFjdGl2aXR5TGlzdCk7XG4gIH1cblxuICBnZXQgYWN0aXZpdHlMaXN0KCk6IExpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueSwgYW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpdml0eUxpc3REZWxlZ2F0ZS5yZWFkb25seTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFjdGl2aXR5IHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZS5cbiAgICogVGhpcyBtb2RlbCBpcyBvbmx5IHVwZGF0ZWQgaW4gdGhlIG5leHQgdGljayBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiB1cGRhdGVkLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q3VycmVudEFjdGl2aXR5KCk6IFByb21pc2U8QWN0aXZpdHk8YW55LCBhbnk+PiB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnbm8gYWN0aXZpdHkgaW4gcHJvZ3Jlc3MnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZGVmZXJyZWRHZXRDdXJyZW50QWN0aXZpdHkpIHtcbiAgICAgICAgLy8gd2UncmUgYWxyZWFkeSB3YWl0aW5nIHRoZW4ganVzdCByZXR1cm4gdGhlIHNhbWUgcHJvbWlzZVxuICAgICAgICByZXR1cm4gdGhpcy5kZWZlcnJlZEdldEN1cnJlbnRBY3Rpdml0eS5wcm9taXNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlMaXN0Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICB0aGlzLmRlZmVycmVkR2V0Q3VycmVudEFjdGl2aXR5ID0gRGVmZXJyZWQuZGVmZXIoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWZlcnJlZEdldEN1cnJlbnRBY3Rpdml0eS5wcm9taXNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBfLmxhc3QodGhpcy5hY3Rpdml0eUxpc3QudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhbiBhY3Rpdml0eSBpcyBjdXJyZW50bHkgcnVubmluZy5cbiAgICovXG4gIGFic3RyYWN0IGlzQWN0aXZlKCk6IGJvb2xlYW47XG5cbiAgYWJzdHJhY3Qgc3RhcnRBY3Rpdml0eTxELCBSLCBFPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj47XG5cbiAgY29uZmlybShjb25maXJtOiBDb25maXJtKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gSW1wb3J0YW50OiB3ZSBoYXZlIHRvIGltcGxlbWVudCBjb25maXJtT3JSZWplY3QgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRcbiAgICAvLyBhcyB0aGUgY2FuRGVhY3RpdmF0aW9uIGd1YXJkcyBuZWVkIHRvIGJlIGFibGUgdG8gY2FuY2VsIGFuIGludGVyYWN0aW9uXG4gICAgLy8gd2l0aG91dCBjYXJpbmcgYWJvdXQgcmV0dXJuaW5nIGEgdmFsdWUuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlybU9yUmVqZWN0KGNvbmZpcm0pLnRoZW4oKCkgPT4gdHJ1ZSkuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICB9XG5cbiAgYWJzdHJhY3QgYXN5bmMgY29uZmlybU9yUmVqZWN0KGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBQcmVzZW50cyB0aGUgY29uZmlybWF0aW9uIHRvIHRoZSB1c2VyIGFuZCBydW5zIHRoZSBhY3Rpdml0eSBvbmx5IGlmIHRoZSB1c2VyIGNvbmZpcm1zLlxuICAgKiBAcGFyYW0gY29uZmlybTpDb25maXJtIHRoZSBjb25maXJtYXRpb24gdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIGFjdGl2aXR5VHlwZSB0aGUgYWN0aXZpdHkgdG8gcnVuIGlmIGNvbmZpcm1lZC5cbiAgICogQHBhcmFtIGRhdGEgdGhlIGFjdGl2aXR5IGRhdGEuXG4gICAqL1xuICBhYnN0cmFjdCBjb25maXJtVGhlbjxELCBSLCBFPihjb25maXJtOiBDb25maXJtLCBhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj47XG5cbiAgYWJzdHJhY3QgYWxlcnQoYWxlcnQ6IEFsZXJ0KTogUHJvbWlzZTx2b2lkPjtcblxufVxuXG4iXX0=
@@ -8,7 +8,7 @@ import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
8
8
  import { MatDialog } from '@angular/material';
9
9
  import { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';
10
10
  import { Router } from '@angular/router';
11
- import { DelegatingListModel, Dsl, lang, ValueModel } from '@coolon/pectin';
11
+ import { lang, MutableValueModel, ValueModel } from '@coolon/pectin';
12
12
  import { assert } from '@coolon/typescript-utilities';
13
13
  import { ActivityContainerComponent } from '../components/activity-container/activity-container.component';
14
14
  import { AlertDialogComponent } from '../components/alert-dialog/alert-dialog.component';
@@ -82,11 +82,9 @@ var DialogInteractionService = /** @class */ (function (_super) {
82
82
  _this.router = router;
83
83
  _this.dialogServiceDefaults = dialogServiceDefaults;
84
84
  _this.matDialogDefaultConfig = matDialogDefaultConfig;
85
- _this._activityList = new DelegatingListModel();
86
85
  _this.startingGuard = new Guard();
86
+ _this._inActivityPromise = new MutableValueModel(false);
87
87
  assert.notNil(dialogService);
88
- 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;
89
- _this.active = chain(_this._activityList).isNotEmpty();
90
88
  return _this;
91
89
  }
92
90
  /**
@@ -96,23 +94,14 @@ var DialogInteractionService = /** @class */ (function (_super) {
96
94
  * @return {?}
97
95
  */
98
96
  function () {
99
- return this.active.value;
97
+ return this._inActivityPromise.value;
100
98
  };
101
- /**
102
- * @return {?}
103
- */
104
- DialogInteractionService.prototype.cancelActivity = /**
105
- * @return {?}
106
- */
107
- function () {
108
- this.currentActivity.cancel(null);
109
- };
110
- Object.defineProperty(DialogInteractionService.prototype, "activityList", {
99
+ Object.defineProperty(DialogInteractionService.prototype, "active", {
111
100
  get: /**
112
101
  * @return {?}
113
102
  */
114
103
  function () {
115
- return this._activityList.readonly;
104
+ return this._inActivityPromise.readonly;
116
105
  },
117
106
  enumerable: true,
118
107
  configurable: true
@@ -163,6 +152,7 @@ var DialogInteractionService = /** @class */ (function (_super) {
163
152
  */
164
153
  function () {
165
154
  console.log('###### STARTING');
155
+ _this._inActivityPromise.value = true;
166
156
  // this.currentActivityId = uuid.v1();
167
157
  // this.location.go(this.router.routerState.snapshot.url, "aup");
168
158
  /** @type {?} */
@@ -221,6 +211,7 @@ var DialogInteractionService = /** @class */ (function (_super) {
221
211
  * @return {?}
222
212
  */
223
213
  function () {
214
+ _this._inActivityPromise.value = false;
224
215
  console.log('###### FINISHED');
225
216
  // this.currentActivityId = null;
226
217
  self.safelyUpdateActivityListDelegate(null);
@@ -246,7 +237,7 @@ var DialogInteractionService = /** @class */ (function (_super) {
246
237
  setTimeout((/**
247
238
  * @return {?}
248
239
  */
249
- function () { return _this._activityList.setDelegate(delegate); }));
240
+ function () { return _this.setActivityList(delegate); }));
250
241
  };
251
242
  /**
252
243
  * @param {?} alert
@@ -314,14 +305,12 @@ if (false) {
314
305
  * @type {?}
315
306
  * @private
316
307
  */
317
- DialogInteractionService.prototype._activityList;
308
+ DialogInteractionService.prototype.startingGuard;
318
309
  /**
319
310
  * @type {?}
320
311
  * @private
321
312
  */
322
- DialogInteractionService.prototype.startingGuard;
323
- /** @type {?} */
324
- DialogInteractionService.prototype.active;
313
+ DialogInteractionService.prototype._inActivityPromise;
325
314
  /**
326
315
  * @type {?}
327
316
  * @private
@@ -336,4 +325,4 @@ if (false) {
336
325
  /** @type {?} */
337
326
  DialogInteractionService.prototype.matDialogDefaultConfig;
338
327
  }
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vc2VydmljZXMvZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUdMLG1CQUFtQixFQUNuQixHQUFHLEVBQ0gsSUFBSSxFQUVKLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUMzRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRTVELE1BQU0sS0FBTyxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FBdUIscUNBQXFDLENBQUM7QUFFbEk7SUFBb0IsaUNBQW1CO0lBRXJDO2VBQ0Usa0JBQU0sRUFBRSxZ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QUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7Z0JBcEhGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBbkRRLFNBQVM7Z0JBRlQsUUFBUTtnQkFJUixNQUFNO2dCQURzQixlQUFlLHVCQTREckMsUUFBUSxZQUFJLE1BQU0sU0FBQyxtQ0FBbUM7Z0JBNURoQyxlQUFlLHVCQTZEckMsUUFBUSxZQUFJLE1BQU0sU0FBQywwQkFBMEI7OzttQ0FoRTVEO0NBd0tDLEFBckhELENBRzhDLGtCQUFrQixHQWtIL0Q7U0FsSFksd0JBQXdCOzs7Ozs7SUFFbkMsaURBQStFOzs7OztJQUMvRSxpREFBb0M7O0lBQ3BDLDBDQUF3Qzs7Ozs7SUFFNUIsaURBQXlDOztJQUN6Qyw0Q0FBMkI7O0lBQzNCLDBDQUF1Qjs7SUFDdkIseURBQTZHOztJQUM3RywwREFBcUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RFRkFVTFRfT1BUSU9OUywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBDb25zdHJ1Y3RhYmxlLFxuICBEZWxlZ2F0aW5nTGlzdE1vZGVsLFxuICBEc2wsXG4gIGxhbmcsXG4gIExpc3RNb2RlbCxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHknO1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICcuLi9hbGVydCc7XG5pbXBvcnQgeyBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb25maXJtLXRoZW4tZGlhbG9nL2NvbmZpcm0tdGhlbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtIH0gZnJvbSAnLi4vY29uZmlybSc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcblxuZXhwb3J0IGNvbnN0IERJQUxPR19JTlRFUkFDVElPTl9TRVJWSUNFX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPE1hdERpYWxvZ0NvbmZpZzxhbnk+PignRElBTE9HX0lOVEVSQUNUSU9OX1NFUlZJQ0VfREVGQVVMVFMnKTtcblxuY2xhc3MgR3VhcmQgZXh0ZW5kcyBWYWx1ZU1vZGVsPGJvb2xlYW4+IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7IGluaXRpYWxWYWx1ZTogZmFsc2UgfSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUucmVhZCgpO1xuICB9XG5cbiAgd2hpbGVUcnVlPFI+KGZ1bjogKCkgPT4gUik6IFIge1xuICAgIHRoaXMuc3RhcnRUcmFuc2FjdGlvbigpLmNvbW1pdCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXJ0VHJhbnNhY3Rpb24oKS5jb21taXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHJ1bklmRmFsc2U8Uj4oZnVuOiAoKSA9PiBSLCBkZWZhdWx0VmFsdWU6IFIgPSBudWxsKTogUiB7XG4gICAgcmV0dXJuICF0aGlzLnZhbHVlID8gZnVuKCkgOiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dJbnRlcmFjdGlvblNlcnZpY2UgZXh0ZW5kcyBJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2aXR5TGlzdCA9IG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPEFjdGl2aXR5PGFueSwgYW55Pj4oKTtcbiAgcHJpdmF0ZSBzdGFydGluZ0d1YXJkID0gbmV3IEd1YXJkKCk7XG4gIHJlYWRvbmx5IGFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2U6IE1hdERpYWxvZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLFxuICAgICAgICAgICAgICByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChESUFMT0dfSU5URVJBQ1RJT05fU0VSVklDRV9ERUZBVUxUUykgcmVhZG9ubHkgZGlhbG9nU2VydmljZURlZmF1bHRzOiBNYXREaWFsb2dDb25maWc8YW55PixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfRElBTE9HX0RFRkFVTFRfT1BUSU9OUykgcmVhZG9ubHkgbWF0RGlhbG9nRGVmYXVsdENvbmZpZzogTWF0RGlhbG9nQ29uZmlnPGFueT5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBhc3NlcnQubm90TmlsKGRpYWxvZ1NlcnZpY2UpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmUgPSBjaGFpbih0aGlzLl9hY3Rpdml0eUxpc3QpLmlzTm90RW1wdHkoKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZS52YWx1ZTtcbiAgfVxuXG4gIGNhbmNlbEFjdGl2aXR5KCkge1xuICAgIHRoaXMuY3VycmVudEFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgfVxuXG4gIGdldCBhY3Rpdml0eUxpc3QoKTogTGlzdE1vZGVsPEFjdGl2aXR5PGFueSwgYW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpdml0eUxpc3QucmVhZG9ubHk7XG4gIH1cblxuICBzdGFydEFjdGl2aXR5PEQsIFIsIEU+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE/OiBEKTogUHJvbWlzZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0QWN0aXZpdHkoYWN0aXZpdHlUeXBlLCBkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXJ0QWN0aXZpdHk8RCwgUiwgRT4oYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PiwgZGF0YTogRCwgZGlzYWJsZUNsb3NlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGBBY3Rpdml0eSBhbHJlYWR5IGluIHByb2dyZXNzOiAke3RoaXMuYWN0aXZpdHlMaXN0LnZhbHVlLm1hcChhID0+IGEuY29uc3RydWN0b3IubmFtZSkuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRpbmdHdWFyZC53aGlsZVRydWUoKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJyMjIyMjIyAgU1RBUlRJTkcnKTtcbiAgICAgIC8vIHRoaXMuY3VycmVudEFjdGl2aXR5SWQgPSB1dWlkLnYxKCk7XG4gICAgICAvLyB0aGlzLmxvY2F0aW9uLmdvKHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCwgXCJhdXBcIik7XG5cbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgY29uc3QgY29uZmlnOiBNYXREaWFsb2dDb25maWcgPSB7XG4gICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgIC4uLnRoaXMubWF0RGlhbG9nRGVmYXVsdENvbmZpZyxcbiAgICAgICAgLi4udGhpcy5kaWFsb2dTZXJ2aWNlRGVmYXVsdHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRpc2FibGVDbG9zZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiAnZGlhbG9nLWludGVyYWN0aW9uLXNlcnZpY2UnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBtYXREaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudCwgY29uZmlnKSBhcyBNYXREaWFsb2dSZWY8QWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ8RCwgUiwgRT4+O1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZpdHlDb250YWluZXIgPSBtYXREaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgIHNlbGYuc2FmZWx5VXBkYXRlQWN0aXZpdHlMaXN0RGVsZWdhdGUoYWN0aXZpdHlDb250YWluZXIuYWN0aXZpdHlMaXN0KTtcblxuICAgICAgICBhY3Rpdml0eUNvbnRhaW5lci5pbml0aWFsQWN0aXZpdHlPdXRsZXRDb250ZXh0ID0ge1xuICAgICAgICAgIGFjdGl2aXR5Q2xhc3M6IGFjdGl2aXR5VHlwZSxcbiAgICAgICAgICBhY3Rpdml0eURhdGE6IGRhdGEsXG4gICAgICAgICAgb25Eb25lKHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgbWF0RGlhbG9nUmVmLmNsb3NlKHRydWUpOyAvLyByZXR1cm4gdHJ1ZSB0byBsZXQgdGhlIGFmdGVyIGNsb3NlIGxpc3RlbmVyIGtub3cgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGl0LlxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DYW5jZWwoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICBtYXREaWFsb2dSZWYuY2xvc2UodHJ1ZSk7IC8vIHJldHVybiB0cnVlIHRvIGxldCB0aGUgYWZ0ZXIgY2xvc2UgbGlzdGVuZXIga25vdyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgaXQuXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIGNoZWNrIGlmIG91ciBvbkRvbmUvb25DYW5jZWwgbWV0aG9kcyBhYm92ZSB3ZSBjYWxsZWQgb3IgaWYgd2Ugd2VyZVxuICAgICAgICAvLyBjbG9zZWQgYnkgdGhlIHVzZXIgY2xpY2tpbmcgdGhlIGJhY2tkcm9wLiAgSWYgdGhlIGxhdGVyIHRoZW4gd2UgbmVlZCB0byByZWplY3RcbiAgICAgICAgLy8gb3VyIHByb21pc2UuXG4gICAgICAgIG1hdERpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShwcm9taXNlQWxyZWFkeUZpbmlzaGVkID0+IHtcbiAgICAgICAgICBpZiAoIXByb21pc2VBbHJlYWR5RmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJlamVjdCgnYXV0by1jbG9zZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtYXREaWFsb2dSZWYudXBkYXRlU2l6ZSgpO1xuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyMgIEZJTklTSEVEJyk7XG4gICAgICAgIC8vIHRoaXMuY3VycmVudEFjdGl2aXR5SWQgPSBudWxsO1xuICAgICAgICBzZWxmLnNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0ZWggZGVsZWdhdGUgb24gdGhlIG5leHQgdGljayB0byBhdm9pZCBtb2RpZnlpbmcgc3RhdGUgZHVyaW5nIHRoZSBjdXJyZW50IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAqIEBwYXJhbSBkZWxlZ2F0ZVxuICAgKi9cbiAgc2FmZWx5VXBkYXRlQWN0aXZpdHlMaXN0RGVsZWdhdGUoZGVsZWdhdGU6IExpc3RNb2RlbDxBY3Rpdml0eTxhbnksIGFueT4+KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9hY3Rpdml0eUxpc3Quc2V0RGVsZWdhdGUoZGVsZWdhdGUpKTtcbiAgfVxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRPRE86IFRlc3QgZGlzYWJsZUNsb3NlID09PSBmYWxzZVxuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KEFsZXJ0RGlhbG9nQ29tcG9uZW50LCBhbGVydCwgZmFsc2UpO1xuICB9XG5cbiAgY29uZmlybU9yUmVqZWN0KGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eShDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIGNvbmZpcm0sIHRydWUpO1xuICB9XG5cbiAgY29uZmlybVRoZW48RCwgUiwgRT4oY29uZmlybTogQ29uZmlybSwgYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PiwgZGF0YT86IEQpOiBQcm9taXNlPFI+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eTxDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudC5EYXRhPEQsIFIsIEU+LCBSLCBFPihDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgY29uZmlybSxcbiAgICAgIGFjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0sIHRydWUpO1xuICB9XG59XG4iXX0=
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvaW50ZXJhY3Rpb24vc2VydmljZXMvZGlhbG9nLWludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUtMLElBQUksRUFFSixpQkFBaUIsRUFDakIsVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3RELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFFNUQsTUFBTSxLQUFPLG1DQUFtQyxHQUFHLElBQUksY0FBYyxDQUF1QixxQ0FBcUMsQ0FBQztBQUVsSTtJQUFvQixpQ0FBbUI7SUFFckM7ZUFDRSxrQkFBTSxFQUFFLFlBQVksRUFBRSxL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aEMsZUFBZSx1QkE2RHJDLFFBQVEsWUFBSSxNQUFNLFNBQUMsMEJBQTBCOzs7bUNBaEU1RDtDQW9LQyxBQWhIRCxDQUc4QyxrQkFBa0IsR0E2Ry9EO1NBN0dZLHdCQUF3Qjs7Ozs7O0lBRW5DLGlEQUFvQzs7Ozs7SUFDcEMsc0RBQTRFOzs7OztJQUVoRSxpREFBeUM7O0lBQ3pDLDRDQUEyQjs7SUFDM0IsMENBQXVCOztJQUN2Qix5REFBNkc7O0lBQzdHLDBEQUFxRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREVGQVVMVF9PUFRJT05TLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIENvbnN0cnVjdGFibGUsXG4gIERlbGVnYXRpbmdMaXN0TW9kZWwsXG4gIERzbCxcbiAgbGFuZyxcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbFxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSAnLi4vYWN0aXZpdHknO1xuaW1wb3J0IHsgQWxlcnQgfSBmcm9tICcuLi9hbGVydCc7XG5pbXBvcnQgeyBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZy9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1UaGVuRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb25maXJtLXRoZW4tZGlhbG9nL2NvbmZpcm0tdGhlbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtIH0gZnJvbSAnLi4vY29uZmlybSc7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcblxuZXhwb3J0IGNvbnN0IERJQUxPR19JTlRFUkFDVElPTl9TRVJWSUNFX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPE1hdERpYWxvZ0NvbmZpZzxhbnk+PignRElBTE9HX0lOVEVSQUNUSU9OX1NFUlZJQ0VfREVGQVVMVFMnKTtcblxuY2xhc3MgR3VhcmQgZXh0ZW5kcyBWYWx1ZU1vZGVsPGJvb2xlYW4+IHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7IGluaXRpYWxWYWx1ZTogZmFsc2UgfSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUucmVhZCgpO1xuICB9XG5cbiAgd2hpbGVUcnVlPFI+KGZ1bjogKCkgPT4gUik6IFIge1xuICAgIHRoaXMuc3RhcnRUcmFuc2FjdGlvbigpLmNvbW1pdCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnN0YXJ0VHJhbnNhY3Rpb24oKS5jb21taXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHJ1bklmRmFsc2U8Uj4oZnVuOiAoKSA9PiBSLCBkZWZhdWx0VmFsdWU6IFIgPSBudWxsKTogUiB7XG4gICAgcmV0dXJuICF0aGlzLnZhbHVlID8gZnVuKCkgOiBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dJbnRlcmFjdGlvblNlcnZpY2UgZXh0ZW5kcyBJbnRlcmFjdGlvbkNvbnRleHQge1xuXG4gIHByaXZhdGUgc3RhcnRpbmdHdWFyZCA9IG5ldyBHdWFyZCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbkFjdGl2aXR5UHJvbWlzZSA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBNYXREaWFsb2csXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRElBTE9HX0lOVEVSQUNUSU9OX1NFUlZJQ0VfREVGQVVMVFMpIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2VEZWZhdWx0czogTWF0RGlhbG9nQ29uZmlnPGFueT4sXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMpIHJlYWRvbmx5IG1hdERpYWxvZ0RlZmF1bHRDb25maWc6IE1hdERpYWxvZ0NvbmZpZzxhbnk+XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgYXNzZXJ0Lm5vdE5pbChkaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbkFjdGl2aXR5UHJvbWlzZS52YWx1ZTtcbiAgfVxuXG4gIGdldCBhY3RpdmUoKTogVmFsdWVNb2RlbDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2luQWN0aXZpdHlQcm9taXNlLnJlYWRvbmx5O1xuICB9XG5cbiAgc3RhcnRBY3Rpdml0eTxELCBSLCBFPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RCwgUiwgRT4+LCBkYXRhPzogRCk6IFByb21pc2U8Uj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KGFjdGl2aXR5VHlwZSwgZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIF9zdGFydEFjdGl2aXR5PEQsIFIsIEU+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxELCBSLCBFPj4sIGRhdGE6IEQsIGRpc2FibGVDbG9zZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSgpKSB7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShgQWN0aXZpdHkgYWxyZWFkeSBpbiBwcm9ncmVzczogJHt0aGlzLmFjdGl2aXR5TGlzdC52YWx1ZS5tYXAoYSA9PiBhLmNvbnN0cnVjdG9yLm5hbWUpLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXJ0aW5nR3VhcmQud2hpbGVUcnVlKCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCcjIyMjIyMgIFNUQVJUSU5HJyk7XG4gICAgICB0aGlzLl9pbkFjdGl2aXR5UHJvbWlzZS52YWx1ZSA9IHRydWU7XG4gICAgICAvLyB0aGlzLmN1cnJlbnRBY3Rpdml0eUlkID0gdXVpZC52MSgpO1xuICAgICAgLy8gdGhpcy5sb2NhdGlvbi5nbyh0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwsIFwiYXVwXCIpO1xuXG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIGNvbnN0IGNvbmZpZzogTWF0RGlhbG9nQ29uZmlnID0ge1xuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgICAuLi50aGlzLm1hdERpYWxvZ0RlZmF1bHRDb25maWcsXG4gICAgICAgIC4uLnRoaXMuZGlhbG9nU2VydmljZURlZmF1bHRzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBkaXNhYmxlQ2xvc2UsXG4gICAgICAgICAgcGFuZWxDbGFzczogJ2RpYWxvZy1pbnRlcmFjdGlvbi1zZXJ2aWNlJ1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbWF0RGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQsIGNvbmZpZykgYXMgTWF0RGlhbG9nUmVmPEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50PEQsIFIsIEU+PjtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2aXR5Q29udGFpbmVyID0gbWF0RGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICBzZWxmLnNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKGFjdGl2aXR5Q29udGFpbmVyLmFjdGl2aXR5TGlzdCk7XG5cbiAgICAgICAgYWN0aXZpdHlDb250YWluZXIuaW5pdGlhbEFjdGl2aXR5T3V0bGV0Q29udGV4dCA9IHtcbiAgICAgICAgICBhY3Rpdml0eUNsYXNzOiBhY3Rpdml0eVR5cGUsXG4gICAgICAgICAgYWN0aXZpdHlEYXRhOiBkYXRhLFxuICAgICAgICAgIG9uRG9uZShyZXN1bHQpIHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIG1hdERpYWxvZ1JlZi5jbG9zZSh0cnVlKTsgLy8gcmV0dXJuIHRydWUgdG8gbGV0IHRoZSBhZnRlciBjbG9zZSBsaXN0ZW5lciBrbm93IHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCBpdC5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2FuY2VsKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgbWF0RGlhbG9nUmVmLmNsb3NlKHRydWUpOyAvLyByZXR1cm4gdHJ1ZSB0byBsZXQgdGhlIGFmdGVyIGNsb3NlIGxpc3RlbmVyIGtub3cgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGl0LlxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBpZiBvdXIgb25Eb25lL29uQ2FuY2VsIG1ldGhvZHMgYWJvdmUgd2UgY2FsbGVkIG9yIGlmIHdlIHdlcmVcbiAgICAgICAgLy8gY2xvc2VkIGJ5IHRoZSB1c2VyIGNsaWNraW5nIHRoZSBiYWNrZHJvcC4gIElmIHRoZSBsYXRlciB0aGVuIHdlIG5lZWQgdG8gcmVqZWN0XG4gICAgICAgIC8vIG91ciBwcm9taXNlLlxuICAgICAgICBtYXREaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocHJvbWlzZUFscmVhZHlGaW5pc2hlZCA9PiB7XG4gICAgICAgICAgaWYgKCFwcm9taXNlQWxyZWFkeUZpbmlzaGVkKSB7XG4gICAgICAgICAgICByZWplY3QoJ2F1dG8tY2xvc2VkJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbWF0RGlhbG9nUmVmLnVwZGF0ZVNpemUoKTtcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9pbkFjdGl2aXR5UHJvbWlzZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmxvZygnIyMjIyMjICBGSU5JU0hFRCcpO1xuICAgICAgICAvLyB0aGlzLmN1cnJlbnRBY3Rpdml0eUlkID0gbnVsbDtcbiAgICAgICAgc2VsZi5zYWZlbHlVcGRhdGVBY3Rpdml0eUxpc3REZWxlZ2F0ZShudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGVoIGRlbGVnYXRlIG9uIHRoZSBuZXh0IHRpY2sgdG8gYXZvaWQgbW9kaWZ5aW5nIHN0YXRlIGR1cmluZyB0aGUgY3VycmVudCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgKiBAcGFyYW0gZGVsZWdhdGVcbiAgICovXG4gIHNhZmVseVVwZGF0ZUFjdGl2aXR5TGlzdERlbGVnYXRlKGRlbGVnYXRlOiBMaXN0TW9kZWw8QWN0aXZpdHk8YW55LCBhbnk+Pikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRBY3Rpdml0eUxpc3QoZGVsZWdhdGUpKTtcbiAgfVxuXG4gIGFsZXJ0KGFsZXJ0OiBBbGVydCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRPRE86IFRlc3QgZGlzYWJsZUNsb3NlID09PSBmYWxzZVxuICAgIHJldHVybiB0aGlzLl9zdGFydEFjdGl2aXR5KEFsZXJ0RGlhbG9nQ29tcG9uZW50LCBhbGVydCwgZmFsc2UpO1xuICB9XG5cbiAgY29uZmlybU9yUmVqZWN0KGNvbmZpcm06IENvbmZpcm0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eShDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIGNvbmZpcm0sIHRydWUpO1xuICB9XG5cbiAgY29uZmlybVRoZW48RCwgUiwgRT4oY29uZmlybTogQ29uZmlybSwgYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQsIFIsIEU+PiwgZGF0YT86IEQpOiBQcm9taXNlPFI+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRBY3Rpdml0eTxDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudC5EYXRhPEQsIFIsIEU+LCBSLCBFPihDb25maXJtVGhlbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgY29uZmlybSxcbiAgICAgIGFjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0sIHRydWUpO1xuICB9XG59XG4iXX0=