@coolon/angular-ui-powerups 0.0.66 → 0.0.68
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.
- package/bundles/coolon-angular-ui-powerups.umd.js +2207 -1737
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +24 -22
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +24 -22
- package/esm2015/index.js +2 -2
- package/esm2015/lib/angular-ui-powerups.module.js +6 -3
- package/esm2015/lib/components/index.js +2 -1
- package/esm2015/lib/components/noop/noop.component.js +19 -0
- package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm2015/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +19 -0
- package/esm2015/lib/interaction/guards/interaction-guard.service.js +85 -0
- package/esm2015/lib/interaction/index.js +3 -2
- package/esm2015/lib/interaction/interaction.module.js +8 -3
- package/esm2015/lib/interaction/services/dialog-interaction.service.js +30 -5
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +5 -5
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +60 -66
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
- package/esm2015/lib/place/index.js +9 -8
- package/esm2015/lib/place/navigation-session.js +147 -0
- package/esm2015/lib/place/place-component.js +18 -14
- package/esm2015/lib/place/place-definition.js +197 -5
- package/esm2015/lib/place/place-history.js +3 -2
- package/esm2015/lib/place/place-router.js +186 -89
- package/esm2015/lib/place/route/formatter.js +63 -0
- package/esm2015/lib/place/route/guards/leave-place.guard.js +193 -0
- package/esm2015/lib/place/route/guards/place-route.guard.js +243 -0
- package/esm2015/lib/place/route/parameter-decorators.js +35 -18
- package/esm2015/lib/place/route/parameter-definition.class.js +123 -67
- package/esm2015/lib/place/route/parameter-sanitiser.js +4 -3
- package/esm2015/lib/place/route/parameter-snapshot.js +11 -388
- package/esm2015/lib/place/route/visit-sanitiser.js +88 -0
- package/esm2015/lib/place/visit.js +107 -8
- package/esm2015/public_api.js +4 -4
- package/esm5/coolon-angular-ui-powerups.js +24 -22
- package/esm5/index.js +2 -2
- package/esm5/lib/angular-ui-powerups.module.js +6 -3
- package/esm5/lib/components/index.js +2 -1
- package/esm5/lib/components/noop/noop.component.js +21 -0
- package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -2
- package/esm5/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +21 -0
- package/esm5/lib/interaction/guards/interaction-guard.service.js +94 -0
- package/esm5/lib/interaction/index.js +3 -2
- package/esm5/lib/interaction/interaction.module.js +8 -3
- package/esm5/lib/interaction/services/dialog-interaction.service.js +28 -5
- package/esm5/lib/place/components/abstract-place-navigation.component.js +5 -5
- package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +70 -82
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +2 -2
- package/esm5/lib/place/index.js +9 -8
- package/esm5/lib/place/navigation-session.js +193 -0
- package/esm5/lib/place/place-component.js +19 -15
- package/esm5/lib/place/place-definition.js +253 -5
- package/esm5/lib/place/place-history.js +7 -3
- package/esm5/lib/place/place-router.js +242 -107
- package/esm5/lib/place/route/formatter.js +96 -0
- package/esm5/lib/place/route/guards/leave-place.guard.js +152 -0
- package/esm5/lib/place/route/guards/place-route.guard.js +273 -0
- package/esm5/lib/place/route/parameter-decorators.js +35 -18
- package/esm5/lib/place/route/parameter-definition.class.js +179 -76
- package/esm5/lib/place/route/parameter-sanitiser.js +4 -3
- package/esm5/lib/place/route/parameter-snapshot.js +11 -480
- package/esm5/lib/place/route/visit-sanitiser.js +99 -0
- package/esm5/lib/place/visit.js +160 -8
- package/esm5/public_api.js +4 -4
- package/fesm2015/coolon-angular-ui-powerups.js +1493 -1124
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +2166 -1700
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/noop/noop.component.d.ts +3 -0
- package/lib/interaction/components/interaction-outlet/interaction-outlet.component.d.ts +3 -0
- package/lib/interaction/guards/interaction-guard.service.d.ts +13 -0
- package/lib/interaction/index.d.ts +2 -1
- package/lib/interaction/services/dialog-interaction.service.d.ts +5 -1
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +12 -12
- package/lib/place/index.d.ts +5 -4
- package/lib/place/navigation-session.d.ts +26 -0
- package/lib/place/place-component.d.ts +3 -3
- package/lib/place/place-definition.d.ts +30 -3
- package/lib/place/place-history.d.ts +3 -3
- package/lib/place/place-router.d.ts +26 -19
- package/lib/place/route/{parameter-type.d.ts → formatter.d.ts} +5 -5
- package/lib/place/{guards → route/guards}/leave-place.guard.d.ts +4 -3
- package/lib/place/route/guards/place-route.guard.d.ts +27 -0
- package/lib/place/route/parameter-decorators.d.ts +14 -6
- package/lib/place/route/parameter-definition.class.d.ts +21 -17
- package/lib/place/route/parameter-sanitiser.d.ts +3 -2
- package/lib/place/route/parameter-snapshot.d.ts +4 -26
- package/lib/place/route/visit-sanitiser.d.ts +12 -0
- package/lib/place/visit.d.ts +24 -3
- package/package.json +1 -1
- package/schematics/place-routes/place-class-scanner.d.ts +2 -2
- package/schematics/place-routes/place-class-scanner.js +7 -7
- package/schematics/place-routes/place-class-scanner.js.map +1 -1
- package/schematics/place-routes/place-def.d.ts +3 -2
- package/schematics/place-routes/place-def.js +21 -12
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/place-destinations.ts.template +5 -3
- package/schematics/place-routes/templates/place-routes.ts.template +10 -1
- package/schematics/place-routes/templates/place-visits.ts.template +21 -0
- package/esm2015/lib/interaction/guards/close-interaction.guard.js +0 -62
- package/esm2015/lib/place/guards/leave-place.guard.js +0 -159
- package/esm2015/lib/place/guards/place-route.guard.js +0 -74
- package/esm2015/lib/place/route/parameter-type.js +0 -61
- package/esm2015/lib/place/route/route-parameter-value.js +0 -230
- package/esm5/lib/interaction/guards/close-interaction.guard.js +0 -66
- package/esm5/lib/place/guards/leave-place.guard.js +0 -117
- package/esm5/lib/place/guards/place-route.guard.js +0 -78
- package/esm5/lib/place/route/parameter-type.js +0 -94
- package/esm5/lib/place/route/route-parameter-value.js +0 -316
- package/lib/interaction/guards/close-interaction.guard.d.ts +0 -12
- package/lib/place/guards/place-route.guard.d.ts +0 -10
- package/lib/place/route/route-parameter-value.d.ts +0 -42
|
@@ -12,11 +12,15 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
12
12
|
this.router = router;
|
|
13
13
|
this._history = new Map();
|
|
14
14
|
}
|
|
15
|
+
// @Trace()
|
|
16
|
+
// @Trace()
|
|
15
17
|
/**
|
|
16
18
|
* @param {?} state
|
|
17
19
|
* @return {?}
|
|
18
20
|
*/
|
|
19
|
-
PlaceHistory.prototype.add =
|
|
21
|
+
PlaceHistory.prototype.add =
|
|
22
|
+
// @Trace()
|
|
23
|
+
/**
|
|
20
24
|
* @param {?} state
|
|
21
25
|
* @return {?}
|
|
22
26
|
*/
|
|
@@ -25,7 +29,7 @@ var PlaceHistory = /** @class */ (function () {
|
|
|
25
29
|
var history = this.getHistory(state.placeDefinition);
|
|
26
30
|
/** @type {?} */
|
|
27
31
|
var previousState = _.last(history);
|
|
28
|
-
if (!previousState || state.
|
|
32
|
+
if (!previousState || state.hasChangedFrom(previousState)) {
|
|
29
33
|
history.unshift(state); // LIFO
|
|
30
34
|
this.setHistory(state.placeDefinition, history.slice(0, 3)); // limit our history to 4 visits
|
|
31
35
|
}
|
|
@@ -87,4 +91,4 @@ if (false) {
|
|
|
87
91
|
*/
|
|
88
92
|
PlaceHistory.prototype.router;
|
|
89
93
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UtaGlzdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9wbGFjZS1oaXN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7OztBQUl2QjtJQU9FLHNCQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUZuQyxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFHdkQsQ0FBQztJQUVELFdBQVc7Ozs7OztJQUNYLDBCQUFHOzs7Ozs7SUFBSCxVQUFJLEtBQVk7O1lBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQzs7WUFDaEQsYUFBYSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN6RCxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTztZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztTQUM5RjtJQUNILENBQUM7Ozs7O0lBRUQsaUNBQVU7Ozs7SUFBVixVQUFXLFFBQXlCOztZQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzs7Ozs7O0lBRU8saUNBQVU7Ozs7OztJQUFsQixVQUFtQixRQUF5QixFQUFFLE9BQWdCO1FBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOztnQkEvQkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFSUSxNQUFNOzs7dUJBRGY7Q0FvREMsQUE3Q0QsSUE2Q0M7U0ExQ1ksWUFBWTs7Ozs7O0lBRXZCLGdDQUF1RDs7Ozs7SUFFM0MsOEJBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYWNlIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5pbXBvcnQgeyBWaXNpdCB9IGZyb20gJy4vdmlzaXQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbGFjZUhpc3Rvcnkge1xuXG4gIHByaXZhdGUgX2hpc3RvcnkgPSBuZXcgTWFwPFBsYWNlRGVmaW5pdGlvbiwgVmlzaXRbXT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyKSB7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhZGQoc3RhdGU6IFZpc2l0KSB7XG4gICAgY29uc3QgaGlzdG9yeSA9IHRoaXMuZ2V0SGlzdG9yeShzdGF0ZS5wbGFjZURlZmluaXRpb24pO1xuICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBfLmxhc3QoaGlzdG9yeSk7XG4gICAgaWYgKCFwcmV2aW91c1N0YXRlIHx8IHN0YXRlLmhhc0NoYW5nZWRGcm9tKHByZXZpb3VzU3RhdGUpKSB7XG4gICAgICBoaXN0b3J5LnVuc2hpZnQoc3RhdGUpOyAvLyBMSUZPXG4gICAgICB0aGlzLnNldEhpc3Rvcnkoc3RhdGUucGxhY2VEZWZpbml0aW9uLCBoaXN0b3J5LnNsaWNlKDAsIDMpKTsgLy8gbGltaXQgb3VyIGhpc3RvcnkgdG8gNCB2aXNpdHNcbiAgICB9XG4gIH1cblxuICBnZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdFtdIHtcbiAgICBsZXQgaGlzdG9yeSA9IHRoaXMuX2hpc3RvcnkuZ2V0KHBsYWNlRGVmKTtcbiAgICBpZiAoIWhpc3RvcnkpIHtcbiAgICAgIGhpc3RvcnkgPSBbXTtcbiAgICAgIHRoaXMuc2V0SGlzdG9yeShwbGFjZURlZiwgaGlzdG9yeSk7XG4gICAgfVxuICAgIHJldHVybiBoaXN0b3J5O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRIaXN0b3J5KHBsYWNlRGVmOiBQbGFjZURlZmluaXRpb24sIGhpc3Rvcnk6IFZpc2l0W10pIHtcbiAgICB0aGlzLl9oaXN0b3J5LnNldChwbGFjZURlZiwgaGlzdG9yeSk7XG4gIH1cblxuLy8gcHJldmlvdXNWaXNpdCgpOiBWaXNpdCB7XG4gIC8vICAgcmV0dXJuIF8ubGFzdCh0aGlzLl9oaXN0b3J5KTtcbiAgLy8gfVxuICAvL1xuICAvLyB3aXRoUHJldmlvdXNWaXNpdDxSPihjYWxsYmFjazoocHJldmlvdXNWaXNpdDpWaXNpdCk9PlIsIGRlZmF1bHRWYWx1ZTpSID0gbnVsbCk6UntcbiAgLy8gICBjb25zdCB2aXNpdCA9IHRoaXMucHJldmlvdXNWaXNpdCgpO1xuICAvLyAgIHJldHVybiB2aXNpdCA/IGNhbGxiYWNrKHZpc2l0KSA6IGRlZmF1bHRWYWx1ZTtcbiAgLy8gfVxuICAvL1xuICAvLyBwcmV2aW91c1Zpc2l0VG8ocGxhY2U6IFBsYWNlKTogVmlzaXQge1xuICAvLyAgIHJldHVybiBuZXcgVmlzaXRIaXN0b3J5LlF1ZXJ5KHRoaXMuX2hpc3RvcnkpLnRvKHBsYWNlKS5sYXN0KCk7XG4gIC8vIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBWaXNpdEhpc3Rvcnkge1xuXG4gIC8vIGV4cG9ydCBjbGFzcyBRdWVyeSB7XG4gIC8vICAgcHJpdmF0ZSBfaGlzdG9yeTogVmlzaXQuU3RhdGVbXTtcbiAgLy8gICBwcml2YXRlIF9wbGFjZXM6IFBsYWNlW107XG4gIC8vICAgcHJpdmF0ZSBfcHJlZGljYXRlOiAodmlzaXQ6IGFueSkgPT4gYm9vbGVhbjtcbiAgLy8gICBwcml2YXRlIF9saW1pdDogbnVtYmVyO1xuICAvL1xuICAvLyAgIGNvbnN0cnVjdG9yKGhpc3RvcnksIGxpbWl0ID0gaGlzdG9yeS5sZW5ndGgpIHtcbiAgLy8gICAgIHRoaXMuX2hpc3RvcnkgPSBoaXN0b3J5O1xuICAvLyAgICAgdGhpcy5fcGxhY2VzID0gW107XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSAodmlzaXQgPT4gdHJ1ZSk7XG4gIC8vICAgICB0aGlzLl9saW1pdCA9IGxpbWl0O1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICB0byguLi5wbGFjZXM6UGxhY2VbXSk6dGhpcyB7XG4gIC8vICAgICB0aGlzLl9wbGFjZXMgPSBwbGFjZXM7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgd2l0aChwYXJhbWV0ZXJzOiB7IFtwYXJhbWV0ZXI6IHN0cmluZ106IGFueSB9KTogdGhpcyB7XG4gIC8vICAgICB0aGlzLm1hdGNoaW5nKHN0YXRlID0+IHtcbiAgLy8gICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaFZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xuICAvLyAgICAgICAgIGNvbnN0IHZpc2l0VmFsdWUgPSBzdGF0ZS5nZXQoa2V5KTtcbiAgLy8gICAgICAgICBjb25zdCBtYXRjaGVkID0gbWF0Y2hWYWx1ZSA9PT0gJyonID8gIV8uaXNOaWwodmlzaXRWYWx1ZSkgOiB2aXNpdFZhbHVlID09IG1hdGNoVmFsdWU7XG4gIC8vICAgICAgICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGBtYXRjaGVkPSR7bWF0Y2hlZH1gLCBwYXJhbWV0ZXJzLCB2aXNpdFZhbHVlKTtcbiAgLy8gICAgICAgICByZXR1cm4gYWNjICYmIG1hdGNoZWQ7XG4gIC8vICAgICAgIH0sIHRydWUpO1xuICAvLyAgICAgfSk7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbGFzdCgpOiBWaXNpdC5TdGF0ZSB7XG4gIC8vICAgICByZXR1cm4gXy5maW5kTGFzdCh0aGlzLl9oaXN0b3J5LCB2aXNpdCA9PiB0aGlzLl9tYXRjaGVzKHZpc2l0KSlcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgLy8gQHRyYWNlXG4gIC8vICAgYWxsVGhhdE1hdGNoKCk6IFZpc2l0LlN0YXRlW10ge1xuICAvLyAgICAgcmV0dXJuIF8uZmlsdGVyKHRoaXMuX2hpc3RvcnksIHZpc2l0ID0+IHRoaXMuX21hdGNoZXModmlzaXQpKS5zbGljZSgtdGhpcy5fbGltaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICAvLyBAdHJhY2VcbiAgLy8gICBtb3N0UmVjZW50VmFsdWVPZjxUPWFueT4ocGFyYW06IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUID0gbnVsbCk6IFQge1xuICAvLyAgICAgY29uc3QgbGFzdFN0YXRlV2l0aFBhcmFtID0gXy5maW5kTGFzdCh0aGlzLmFsbFRoYXRNYXRjaCgpLCBzdGF0ZSA9PiAhXy5pc05pbChzdGF0ZS5nZXQocGFyYW0pKSk7XG4gIC8vICAgICByZXR1cm4gXy5pc05pbChsYXN0U3RhdGVXaXRoUGFyYW0pID8gZGVmYXVsdFZhbHVlIDogbGFzdFN0YXRlV2l0aFBhcmFtLmdldChwYXJhbSk7XG4gIC8vICAgfVxuICAvL1xuICAvLyAgIGxpbWl0KGxpbWl0OiBudW1iZXIpOiB0aGlzIHtcbiAgLy8gICAgIHRoaXMuX2xpbWl0ID0gbGltaXQ7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgbWF0Y2hpbmcocHJlZGljYXRlOiAodmlzaXQ6IFZpc2l0LlN0YXRlKSA9PiBib29sZWFuKTogdGhpcyB7XG4gIC8vICAgICB0aGlzLl9wcmVkaWNhdGUgPSBwcmVkaWNhdGU7XG4gIC8vICAgICByZXR1cm4gdGhpcztcbiAgLy8gICB9XG4gIC8vXG4gIC8vICAgX21hdGNoZXModmlzaXQ6IFZpc2l0LlN0YXRlKSB7XG4gIC8vICAgICByZXR1cm4gdGhpcy5faXNQbGFjZU1hdGNoKHZpc2l0KSAmJiB0aGlzLl9wcmVkaWNhdGUodmlzaXQpO1xuICAvLyAgIH1cbiAgLy9cbiAgLy8gICBfaXNQbGFjZU1hdGNoKHZpc2l0OiBWaXNpdC5TdGF0ZSkge1xuICAvLyAgICAgcmV0dXJuIHRoaXMuX3BsYWNlcy5sZW5ndGggPCAxIHx8IHRoaXMuX3BsYWNlcy5pbmNsdWRlcyh2aXNpdC5wbGFjZSlcbiAgLy8gICB9XG4gIC8vXG4gIC8vIH1cblxufVxuIl19
|
|
@@ -2,151 +2,278 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
5
6
|
import { Location } from '@angular/common';
|
|
6
7
|
import { Injectable } from '@angular/core';
|
|
7
|
-
import { NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
|
|
8
|
-
import { MutableValueModel } from '@coolon/pectin';
|
|
8
|
+
import { ActivatedRoute, NavigationEnd, NavigationError, NavigationStart, Router } from '@angular/router';
|
|
9
|
+
import { Dsl, GarbageCollector, MutableListModel, MutableValueModel, Trace } from '@coolon/pectin';
|
|
9
10
|
import _ from 'lodash';
|
|
11
|
+
import { NavigationSession } from './navigation-session';
|
|
12
|
+
import { PlaceHistory } from './place-history';
|
|
13
|
+
import { Visit } from './visit';
|
|
10
14
|
import * as i0 from "@angular/core";
|
|
11
15
|
import * as i1 from "@angular/router";
|
|
12
16
|
import * as i2 from "@angular/common";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* @return {?}
|
|
27
|
-
*/
|
|
28
|
-
function (placeComponent) {
|
|
29
|
-
return this._alreadyAccepted.includes(placeComponent);
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* @param {?} component
|
|
33
|
-
* @return {?}
|
|
34
|
-
*/
|
|
35
|
-
NavigationSession.prototype.rememberAcceptanceOf = /**
|
|
36
|
-
* @param {?} component
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
function (component) {
|
|
40
|
-
this._alreadyAccepted.push(component);
|
|
41
|
-
};
|
|
42
|
-
return NavigationSession;
|
|
43
|
-
}());
|
|
44
|
-
if (false) {
|
|
45
|
-
/**
|
|
46
|
-
* @type {?}
|
|
47
|
-
* @private
|
|
48
|
-
*/
|
|
49
|
-
NavigationSession.prototype._alreadyAccepted;
|
|
50
|
-
/** @type {?} */
|
|
51
|
-
NavigationSession.prototype.isPopState;
|
|
52
|
-
/** @type {?} */
|
|
53
|
-
NavigationSession.prototype.initialUrl;
|
|
54
|
-
}
|
|
55
|
-
var PlaceRouter = /** @class */ (function () {
|
|
56
|
-
function PlaceRouter(router, angularLocation) {
|
|
57
|
-
var _this = this;
|
|
58
|
-
this.router = router;
|
|
59
|
-
this._navigationSession = new MutableValueModel();
|
|
17
|
+
import * as i3 from "./place-history";
|
|
18
|
+
var PlaceRouter = /** @class */ (function (_super) {
|
|
19
|
+
tslib_1.__extends(PlaceRouter, _super);
|
|
20
|
+
function PlaceRouter(router, angularLocation, placeHistory) {
|
|
21
|
+
var _this = _super.call(this) || this;
|
|
22
|
+
_this.router = router;
|
|
23
|
+
_this.angularLocation = angularLocation;
|
|
24
|
+
_this.placeHistory = placeHistory;
|
|
25
|
+
_this.firstRoute = true;
|
|
26
|
+
_this._navigationSessionModel = new MutableValueModel();
|
|
27
|
+
_this._activeVisits = new MutableListModel();
|
|
28
|
+
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;
|
|
29
|
+
_this.activeVisitIndex = chain(_this._activeVisits).indexBy('placeDefinition');
|
|
60
30
|
angularLocation.onUrlChange((/**
|
|
61
31
|
* @param {?} url
|
|
62
32
|
* @return {?}
|
|
63
33
|
*/
|
|
64
34
|
function (url) {
|
|
65
|
-
console.log("
|
|
35
|
+
console.log("location.onUrlChange -> " + url);
|
|
66
36
|
}));
|
|
67
|
-
this.
|
|
37
|
+
// TODO: make setup the callbacks in during module initiation to make this testable.
|
|
38
|
+
_this.router.events.subscribe((/**
|
|
68
39
|
* @param {?} event
|
|
69
40
|
* @return {?}
|
|
70
41
|
*/
|
|
71
42
|
function (event) {
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
// NavigationStart -> .... ->
|
|
75
|
-
// NavigationStart -> .... ->
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
console.log('navigation ended');
|
|
81
|
-
_this._navigationSession.value = null;
|
|
43
|
+
// Routing event sequence
|
|
44
|
+
// ======================
|
|
45
|
+
// NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session
|
|
46
|
+
// NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.
|
|
47
|
+
// NavigationStart -> .... -> NavigationError --> navigation canceled, end session.
|
|
48
|
+
// =======================
|
|
49
|
+
if (event instanceof NavigationStart) {
|
|
50
|
+
_this.onAngularRouterStarted(event);
|
|
82
51
|
}
|
|
83
|
-
if (event instanceof NavigationError) {
|
|
84
|
-
|
|
85
|
-
_this._navigationSession.value = null;
|
|
52
|
+
if (event instanceof NavigationEnd || event instanceof NavigationError) {
|
|
53
|
+
_this.onAngularRouterFinished();
|
|
86
54
|
}
|
|
87
55
|
}));
|
|
56
|
+
_this.navigationSessionActive = chain(_this.navigationSessionModel).isNotNil();
|
|
57
|
+
_this.navigationSessionActive.subscribe((/**
|
|
58
|
+
* @param {?} active
|
|
59
|
+
* @return {?}
|
|
60
|
+
*/
|
|
61
|
+
function (active) {
|
|
62
|
+
console.log('navigationSessionActive', active);
|
|
63
|
+
}));
|
|
64
|
+
return _this;
|
|
65
|
+
// const txo = new TransactionObserver().onEvent(e => console.log(e.toString()));
|
|
66
|
+
// txo.observe('this.navigationSessionModel', this.navigationSessionModel);
|
|
88
67
|
}
|
|
89
68
|
Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
|
|
90
69
|
get: /**
|
|
91
70
|
* @return {?}
|
|
92
71
|
*/
|
|
93
72
|
function () {
|
|
94
|
-
return this.
|
|
73
|
+
return this._navigationSessionModel.value;
|
|
74
|
+
},
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: true
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(PlaceRouter.prototype, "navigationSessionModel", {
|
|
79
|
+
get: /**
|
|
80
|
+
* @return {?}
|
|
81
|
+
*/
|
|
82
|
+
function () {
|
|
83
|
+
return this._navigationSessionModel.readonly;
|
|
84
|
+
},
|
|
85
|
+
enumerable: true,
|
|
86
|
+
configurable: true
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(PlaceRouter.prototype, "activeVisits", {
|
|
89
|
+
get: /**
|
|
90
|
+
* @return {?}
|
|
91
|
+
*/
|
|
92
|
+
function () {
|
|
93
|
+
return this._activeVisits.readonly;
|
|
95
94
|
},
|
|
96
95
|
enumerable: true,
|
|
97
96
|
configurable: true
|
|
98
97
|
});
|
|
98
|
+
/**
|
|
99
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
100
|
+
* @param visit
|
|
101
|
+
*/
|
|
102
|
+
// @Trace()
|
|
103
|
+
/**
|
|
104
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
105
|
+
* @param {?} visit
|
|
106
|
+
* @return {?}
|
|
107
|
+
*/
|
|
108
|
+
// @Trace()
|
|
109
|
+
PlaceRouter.prototype.navigate = /**
|
|
110
|
+
* placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));
|
|
111
|
+
* @param {?} visit
|
|
112
|
+
* @return {?}
|
|
113
|
+
*/
|
|
114
|
+
// @Trace()
|
|
115
|
+
function (visit) {
|
|
116
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
117
|
+
return tslib_1.__generator(this, function (_a) {
|
|
118
|
+
this.doNavigation(visit);
|
|
119
|
+
return [2 /*return*/];
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
};
|
|
99
123
|
/**
|
|
100
124
|
* @param {?} activatedRoute
|
|
101
125
|
* @param {?} previous
|
|
102
126
|
* @param {?} next
|
|
103
127
|
* @return {?}
|
|
104
128
|
*/
|
|
105
|
-
PlaceRouter.prototype.
|
|
129
|
+
PlaceRouter.prototype.pushVisitChangesToRoute = /**
|
|
106
130
|
* @param {?} activatedRoute
|
|
107
131
|
* @param {?} previous
|
|
108
132
|
* @param {?} next
|
|
109
133
|
* @return {?}
|
|
110
134
|
*/
|
|
111
135
|
function (activatedRoute, previous, next) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
136
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
137
|
+
var _this = this;
|
|
138
|
+
return tslib_1.__generator(this, function (_a) {
|
|
139
|
+
// FIXME: no route id -> route id duplicates route parameters
|
|
140
|
+
if (next.hasRoutingChangedFrom(previous)) {
|
|
141
|
+
return [2 /*return*/, this.doNavigation(next, (/**
|
|
142
|
+
* @param {?} router
|
|
143
|
+
* @return {?}
|
|
144
|
+
*/
|
|
145
|
+
function (router) {
|
|
146
|
+
/** @type {?} */
|
|
147
|
+
var relativePath = !!previous.placeDefinition.hasRouteId() ? '..' : '.';
|
|
148
|
+
/** @type {?} */
|
|
149
|
+
var def = next.placeDefinition;
|
|
150
|
+
/** @type {?} */
|
|
151
|
+
var params = next.hasRouteId() ?
|
|
152
|
+
[def.getFormattedRouteId(next), def.getFormattedRouteParameters(next)] :
|
|
153
|
+
[def.getFormattedRouteParameters(next)];
|
|
154
|
+
/** @type {?} */
|
|
155
|
+
var commands = [relativePath].concat(params, _this.getChildPath(activatedRoute.snapshot));
|
|
156
|
+
console.log('### Redirect', commands);
|
|
157
|
+
return router.navigate(commands, {
|
|
158
|
+
relativeTo: activatedRoute
|
|
159
|
+
});
|
|
160
|
+
}))];
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
this.placeHistory.add(next);
|
|
164
|
+
}
|
|
165
|
+
return [2 /*return*/];
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* @param {?} visit
|
|
171
|
+
* @param {?=} customNavigation
|
|
172
|
+
* @return {?}
|
|
173
|
+
*/
|
|
174
|
+
PlaceRouter.prototype.doNavigation = /**
|
|
175
|
+
* @param {?} visit
|
|
176
|
+
* @param {?=} customNavigation
|
|
177
|
+
* @return {?}
|
|
178
|
+
*/
|
|
179
|
+
function (visit, customNavigation) {
|
|
180
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
181
|
+
var def, parameterCommands, commands;
|
|
182
|
+
return tslib_1.__generator(this, function (_a) {
|
|
183
|
+
switch (_a.label) {
|
|
184
|
+
case 0:
|
|
185
|
+
this._navigationSessionModel.value = NavigationSession.createInternal(visit);
|
|
186
|
+
_a.label = 1;
|
|
187
|
+
case 1:
|
|
188
|
+
_a.trys.push([1, , 6, 7]);
|
|
189
|
+
if (!customNavigation) return [3 /*break*/, 3];
|
|
190
|
+
return [4 /*yield*/, customNavigation(this.router)];
|
|
191
|
+
case 2:
|
|
192
|
+
_a.sent();
|
|
193
|
+
return [3 /*break*/, 5];
|
|
194
|
+
case 3:
|
|
195
|
+
def = visit.placeDefinition;
|
|
196
|
+
parameterCommands = visit.hasRouteId() ?
|
|
197
|
+
[def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :
|
|
198
|
+
[def.getFormattedRouteParameters(visit)];
|
|
199
|
+
commands = [def.path].concat(parameterCommands);
|
|
200
|
+
console.log('_doNavigation', visit, commands);
|
|
201
|
+
return [4 /*yield*/, this.router.navigate(commands)];
|
|
202
|
+
case 4:
|
|
203
|
+
_a.sent();
|
|
204
|
+
_a.label = 5;
|
|
205
|
+
case 5: return [3 /*break*/, 7];
|
|
206
|
+
case 6:
|
|
207
|
+
if (this.navigationSession && !this.router.getCurrentNavigation()) {
|
|
208
|
+
this.onAngularRouterFinished();
|
|
209
|
+
}
|
|
210
|
+
return [7 /*endfinally*/];
|
|
211
|
+
case 7: return [2 /*return*/];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
116
214
|
});
|
|
117
215
|
};
|
|
118
216
|
// @Trace()
|
|
119
217
|
// @Trace()
|
|
120
218
|
/**
|
|
121
|
-
* @
|
|
122
|
-
* @param {?}
|
|
219
|
+
* @private
|
|
220
|
+
* @param {?} event
|
|
123
221
|
* @return {?}
|
|
124
222
|
*/
|
|
125
|
-
PlaceRouter.prototype.
|
|
223
|
+
PlaceRouter.prototype.onAngularRouterStarted =
|
|
126
224
|
// @Trace()
|
|
127
225
|
/**
|
|
128
|
-
* @
|
|
129
|
-
* @param {?}
|
|
226
|
+
* @private
|
|
227
|
+
* @param {?} event
|
|
130
228
|
* @return {?}
|
|
131
229
|
*/
|
|
132
|
-
function (
|
|
133
|
-
|
|
134
|
-
|
|
230
|
+
function (event) {
|
|
231
|
+
if (!this.navigationSession) { // We been activated by an external route rather than placeRouter.go(visit)
|
|
232
|
+
console.log('navigation started', { firstTime: this.firstRoute });
|
|
233
|
+
/** @type {?} */
|
|
234
|
+
var session = NavigationSession.createExternal(this.firstRoute);
|
|
235
|
+
if (event.navigationTrigger === 'popstate') {
|
|
236
|
+
session.setPopstateReturn(this.router.routerState.snapshot.url);
|
|
237
|
+
}
|
|
238
|
+
this._navigationSessionModel.value = session;
|
|
239
|
+
}
|
|
240
|
+
this.firstRoute = false;
|
|
241
|
+
};
|
|
242
|
+
// @Trace()
|
|
243
|
+
// @Trace()
|
|
244
|
+
/**
|
|
245
|
+
* @private
|
|
246
|
+
* @return {?}
|
|
247
|
+
*/
|
|
248
|
+
PlaceRouter.prototype.onAngularRouterFinished =
|
|
249
|
+
// @Trace()
|
|
250
|
+
/**
|
|
251
|
+
* @private
|
|
252
|
+
* @return {?}
|
|
253
|
+
*/
|
|
254
|
+
function () {
|
|
255
|
+
var _this = this;
|
|
135
256
|
/** @type {?} */
|
|
136
|
-
var
|
|
257
|
+
var session = this._navigationSessionModel.value;
|
|
258
|
+
// Update visits before we end the navigation session. This allows the place out let to
|
|
259
|
+
// gate ignore changes that occur while the visit is active
|
|
137
260
|
/** @type {?} */
|
|
138
|
-
var
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
261
|
+
var visits = session.getVisits();
|
|
262
|
+
visits.forEach((/**
|
|
263
|
+
* @param {?} v
|
|
264
|
+
* @return {?}
|
|
265
|
+
*/
|
|
266
|
+
function (v) {
|
|
267
|
+
_this.placeHistory.add(v);
|
|
268
|
+
}));
|
|
269
|
+
this._activeVisits.value = visits;
|
|
270
|
+
this._navigationSessionModel.value = null;
|
|
142
271
|
};
|
|
143
272
|
/**
|
|
144
|
-
* @protected
|
|
145
273
|
* @param {?} activatedRoute
|
|
146
274
|
* @return {?}
|
|
147
275
|
*/
|
|
148
276
|
PlaceRouter.prototype.getChildPath = /**
|
|
149
|
-
* @protected
|
|
150
277
|
* @param {?} activatedRoute
|
|
151
278
|
* @return {?}
|
|
152
279
|
*/
|
|
@@ -157,23 +284,6 @@ var PlaceRouter = /** @class */ (function () {
|
|
|
157
284
|
*/
|
|
158
285
|
function (child) { return child.url; })));
|
|
159
286
|
};
|
|
160
|
-
/**
|
|
161
|
-
* @protected
|
|
162
|
-
* @param {?} parameters
|
|
163
|
-
* @return {?}
|
|
164
|
-
*/
|
|
165
|
-
PlaceRouter.prototype.createRouteParameters = /**
|
|
166
|
-
* @protected
|
|
167
|
-
* @param {?} parameters
|
|
168
|
-
* @return {?}
|
|
169
|
-
*/
|
|
170
|
-
function (parameters) {
|
|
171
|
-
/** @type {?} */
|
|
172
|
-
var routeId = parameters.getFormattedRouteId();
|
|
173
|
-
return routeId ?
|
|
174
|
-
[routeId, parameters.getFormattedParameters()] :
|
|
175
|
-
[parameters.getFormattedParameters()];
|
|
176
|
-
};
|
|
177
287
|
PlaceRouter.decorators = [
|
|
178
288
|
{ type: Injectable, args: [{
|
|
179
289
|
providedIn: 'root'
|
|
@@ -182,22 +292,47 @@ var PlaceRouter = /** @class */ (function () {
|
|
|
182
292
|
/** @nocollapse */
|
|
183
293
|
PlaceRouter.ctorParameters = function () { return [
|
|
184
294
|
{ type: Router },
|
|
185
|
-
{ type: Location }
|
|
295
|
+
{ type: Location },
|
|
296
|
+
{ type: PlaceHistory }
|
|
186
297
|
]; };
|
|
187
|
-
/** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.Location)); }, token: PlaceRouter, providedIn: "root" });
|
|
298
|
+
/** @nocollapse */ PlaceRouter.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.Location), i0.ɵɵinject(i3.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
|
|
299
|
+
tslib_1.__decorate([
|
|
300
|
+
Trace(),
|
|
301
|
+
tslib_1.__metadata("design:type", Function),
|
|
302
|
+
tslib_1.__metadata("design:paramtypes", [ActivatedRoute, Visit, Visit]),
|
|
303
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
304
|
+
], PlaceRouter.prototype, "pushVisitChangesToRoute", null);
|
|
188
305
|
return PlaceRouter;
|
|
189
|
-
}());
|
|
306
|
+
}(GarbageCollector));
|
|
190
307
|
export { PlaceRouter };
|
|
191
308
|
if (false) {
|
|
192
309
|
/**
|
|
193
310
|
* @type {?}
|
|
194
311
|
* @private
|
|
195
312
|
*/
|
|
196
|
-
PlaceRouter.prototype.
|
|
313
|
+
PlaceRouter.prototype.firstRoute;
|
|
314
|
+
/**
|
|
315
|
+
* @type {?}
|
|
316
|
+
* @private
|
|
317
|
+
*/
|
|
318
|
+
PlaceRouter.prototype._navigationSessionModel;
|
|
319
|
+
/**
|
|
320
|
+
* @type {?}
|
|
321
|
+
* @private
|
|
322
|
+
*/
|
|
323
|
+
PlaceRouter.prototype._activeVisits;
|
|
324
|
+
/** @type {?} */
|
|
325
|
+
PlaceRouter.prototype.navigationSessionActive;
|
|
326
|
+
/** @type {?} */
|
|
327
|
+
PlaceRouter.prototype.activeVisitIndex;
|
|
197
328
|
/**
|
|
198
329
|
* @type {?}
|
|
199
330
|
* @private
|
|
200
331
|
*/
|
|
201
332
|
PlaceRouter.prototype.router;
|
|
333
|
+
/** @type {?} */
|
|
334
|
+
PlaceRouter.prototype.angularLocation;
|
|
335
|
+
/** @type {?} */
|
|
336
|
+
PlaceRouter.prototype.placeHistory;
|
|
202
337
|
}
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUdMLGFBQWEsRUFDYixlQUFlLEVBQ2YsZUFBZSxFQUNmLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7OztBQUl2QjtJQUdFLDJCQUFxQixVQUFtQixFQUFXLFVBQWtCO1FBQWhELGVBQVUsR0FBVixVQUFVLENBQVM7UUFBVyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRjdELHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFHOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFVBQVUsWUFBQSxFQUFFLFVBQVUsWUFBQSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs7OztJQUVELDJDQUFlOzs7O0lBQWYsVUFBZ0IsY0FBOEI7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Ozs7O0lBRUQsZ0RBQW9COzs7O0lBQXBCLFVBQXFCLFNBQXlCO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNILHdCQUFDO0FBQUQsQ0FBQyxBQWRELElBY0M7Ozs7OztJQWJDLDZDQUFnRDs7SUFFcEMsdUNBQTRCOztJQUFFLHVDQUEyQjs7QUFjdkU7SUFPRSxxQkFBNkIsTUFB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S0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLEdBQUcsRUFBVCxDQUFTLEVBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Ozs7OztJQUVTLDJDQUFxQjs7Ozs7SUFBL0IsVUFBZ0MsVUFBNkI7O1lBQ3JELE9BQU8sR0FBRyxVQUFVLENBQUMsbUJBQW1CLEVBQUU7UUFDaEQsT0FBTyxPQUFPLENBQUMsQ0FBQztZQUNkLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Z0JBNURGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBM0JDLE1BQU07Z0JBUkMsUUFBUTs7O3NCQUFqQjtDQStGQyxBQTlERCxJQThEQztTQTNEWSxXQUFXOzs7Ozs7SUFFdEIseUNBQWlGOzs7OztJQUVyRSw2QkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgVXJsVHJlZVxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTXV0YWJsZVZhbHVlTW9kZWwgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYXJhbWV0ZXJTbmFwc2hvdCB9IGZyb20gJy4vcm91dGUvcGFyYW1ldGVyLXNuYXBzaG90JztcblxuY2xhc3MgTmF2aWdhdGlvblNlc3Npb24ge1xuICBwcml2YXRlIF9hbHJlYWR5QWNjZXB0ZWQ6IFBsYWNlQ29tcG9uZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBpc1BvcFN0YXRlOiBib29sZWFuLCByZWFkb25seSBpbml0aWFsVXJsOiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZygnTmF2aWdhdGlvblNlc3Npb24nLCB7IGlzUG9wU3RhdGUsIGluaXRpYWxVcmwgfSk7XG4gIH1cblxuICBhbHJlYWR5QWNjZXB0ZWQocGxhY2VDb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FscmVhZHlBY2NlcHRlZC5pbmNsdWRlcyhwbGFjZUNvbXBvbmVudCk7XG4gIH1cblxuICByZW1lbWJlckFjY2VwdGFuY2VPZihjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fYWxyZWFkeUFjY2VwdGVkLnB1c2goY29tcG9uZW50KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlUm91dGVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0aW9uU2Vzc2lvbiA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxOYXZpZ2F0aW9uU2Vzc2lvbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLCBhbmd1bGFyTG9jYXRpb246IExvY2F0aW9uKSB7XG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgIyMjICR7dXJsfWApO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coYCR7ZXZlbnQuY29uc3RydWN0b3IubmFtZX1gLCBsb2NhdGlvbi5wYXRobmFtZSwgYW5ndWxhckxvY2F0aW9uLmdldFN0YXRlKCkpO1xuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCA9PT0gcmVkaXJlY3QgKHNvIGRvbid0IGFzayBhZ2FpbilcbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgPT09IG5hdmlnYXRlZCAoc28gYXNrIG5leHQgdGltZSlcbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciA9PT0gY2FuY2VsZWQgKGd1YXJkIGNhbmNlbGxlZCBzbyBhc2sgbmV4dCB0aW1lKVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0ICYmICF0aGlzLm5hdmlnYXRpb25TZXNzaW9uKSB7XG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uLnZhbHVlID0gbmV3IE5hdmlnYXRpb25TZXNzaW9uKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnLCB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBlbmRlZCcpO1xuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbi52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb24gZXJyb3JlZCcpO1xuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbi52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb24oKTogTmF2aWdhdGlvblNlc3Npb24ge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbi52YWx1ZTtcbiAgfVxuXG4gIHB1c2hQYXJhbWV0ZXJDaGFuZ2VzVG9Sb3V0ZShhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByZXZpb3VzOiBQYXJhbWV0ZXJTbmFwc2hvdCwgbmV4dDogUGFyYW1ldGVyU25hcHNob3QpIHtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSAhIXByZXZpb3VzLmhhc1JvdXRlSWQoKSA/ICcuLicgOiAnLic7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlbGF0aXZlUGF0aF0uY29uY2F0KHRoaXMuY3JlYXRlUm91dGVQYXJhbWV0ZXJzKG5leHQpLCB0aGlzLmdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdCkpLCB7XG4gICAgICByZWxhdGl2ZVRvOiBhY3RpdmF0ZWRSb3V0ZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgZ2V0UmVkaXJlY3RVcmxUcmVlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzYW5pdGlzZWQ6IFBhcmFtZXRlclNuYXBzaG90KTogVXJsVHJlZSB7XG4gICAgY29uc3QgdXJsU2VnbWVudHMgPSBhY3RpdmF0ZWRSb3V0ZS51cmw7XG4gICAgY29uc3Qgd2VIYXZlQVJvdXRlSWQgPSBzYW5pdGlzZWQuaGFzUm91dGVJZCgpICYmIHNhbml0aXNlZC5nZXRGb3JtYXR0ZWRSb3V0ZUlkKCk7XG4gICAgY29uc3QgY29tbWFuZHMgPSAod2VIYXZlQVJvdXRlSWQpID9cbiAgICAgIFt1cmxTZWdtZW50c1swXS5wYXRoLCBzYW5pdGlzZWQuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpLCBzYW5pdGlzZWQuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXSA6XG4gICAgICBbdXJsU2VnbWVudHNbMF0ucGF0aCwgc2FuaXRpc2VkLmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV07XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoY29tbWFuZHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGFueVtdIHtcbiAgICByZXR1cm4gXy5mbGF0dGVuKGFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC51cmwpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVSb3V0ZVBhcmFtZXRlcnMocGFyYW1ldGVyczogUGFyYW1ldGVyU25hcHNob3QpOiBhbnlbXSB7XG4gICAgY29uc3Qgcm91dGVJZCA9IHBhcmFtZXRlcnMuZ2V0Rm9ybWF0dGVkUm91dGVJZCgpO1xuICAgIHJldHVybiByb3V0ZUlkID9cbiAgICAgIFtyb3V0ZUlkLCBwYXJhbWV0ZXJzLmdldEZvcm1hdHRlZFBhcmFtZXRlcnMoKV0gOlxuICAgICAgW3BhcmFtZXRlcnMuZ2V0Rm9ybWF0dGVkUGFyYW1ldGVycygpXTtcbiAgfVxuXG59XG4iXX0=
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxjQUFjLEVBRWQsYUFBYSxFQUNiLGVBQWUsRUFDZixlQUFlLEVBQ2YsTUFBTSxFQUNQLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLEdBQUcsRUFDSCxnQkFBZ0IsRUFHaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixLQUFLLEVBRU4sTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBR2hDO0lBR2lDLHVDQUFnQjtJQVUvQyxxQkFBNkIsTUFBYyxFQUFXLGVBQXlCLEVBQVcsWUFBMEI7UUFBcEgsWUFDRSxpQkFBTyxTQThCUjtRQS9CNEIsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLHFCQUFlLEdBQWYsZUFBZSxDQUFVO1FBQVcsa0JBQVksR0FBWixZQUFZLENBQWM7UUFSNUcsZ0JBQVUsR0FBRyxJQUFJLENBQUM7UUFFVCw2QkFBdUIsR0FBRyxJQUFJLGlCQUFpQixFQUFxQixDQUFDO1FBQ3JFLG1CQUFhLEdBQUcsSUFBSSxnQkFBZ0IsRUFBUyxDQUFDO1FBT3ZELElBQUEsMkJBQWtGLEVBQWhGLGdCQUFLLEVBQUUsb0JBQU8sRUFBRSxrQkFBTSxFQUFF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LENBQUMsdUJBQXVCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUM1QyxDQUFDOzs7OztJQUVELGtDQUFZOzs7O0lBQVosVUFBYSxjQUFzQztRQUNqRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsR0FBRyxFQUFULENBQVMsRUFBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7Z0JBMUlGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBckJDLE1BQU07Z0JBUkMsUUFBUTtnQkF1QlIsWUFBWTs7O0lBd0VuQjtRQURDLEtBQUssRUFBRTs7aURBQ3NDLGNBQWMsRUFBWSxLQUFLLEVBQVEsS0FBSzs7OERBa0J6RjtzQkFqSEg7Q0FzS0MsQUEzSUQsQ0FHaUMsZ0JBQWdCLEdBd0loRDtTQXhJWSxXQUFXOzs7Ozs7SUFFdEIsaUNBQTBCOzs7OztJQUUxQiw4Q0FBc0Y7Ozs7O0lBQ3RGLG9DQUErRDs7SUFFL0QsOENBQXlEOztJQUN6RCx1Q0FBc0U7Ozs7O0lBRTFELDZCQUErQjs7SUFBRSxzQ0FBa0M7O0lBQUUsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGUsXG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIE5hdmlnYXRpb25FbmQsXG4gIE5hdmlnYXRpb25FcnJvcixcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBSb3V0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgSGFzT25lSW5kZXhDaGFpbixcbiAgTGlzdE1vZGVsLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgVHJhY2UsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXNzaW9uIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXNlc3Npb24nO1xuaW1wb3J0IHsgUGxhY2VIaXN0b3J5IH0gZnJvbSAnLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi92aXNpdCc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIGZpcnN0Um91dGUgPSB0cnVlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25TZXNzaW9uTW9kZWwgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0cyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPFZpc2l0PigpO1xuXG4gIHJlYWRvbmx5IG5hdmlnYXRpb25TZXNzaW9uQWN0aXZlOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICByZWFkb25seSBhY3RpdmVWaXNpdEluZGV4OiBIYXNPbmVJbmRleENoYWluPCdwbGFjZURlZmluaXRpb24nLCBWaXNpdD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciwgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbiwgcmVhZG9ubHkgcGxhY2VIaXN0b3J5OiBQbGFjZUhpc3RvcnkpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5hY3RpdmVWaXNpdEluZGV4ID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzKS5pbmRleEJ5KCdwbGFjZURlZmluaXRpb24nKTtcblxuICAgIGFuZ3VsYXJMb2NhdGlvbi5vblVybENoYW5nZSh1cmwgPT4ge1xuICAgICAgY29uc29sZS5sb2coYGxvY2F0aW9uLm9uVXJsQ2hhbmdlIC0+ICR7dXJsfWApO1xuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogbWFrZSBzZXR1cCB0aGUgY2FsbGJhY2tzIGluIGR1cmluZyBtb2R1bGUgaW5pdGlhdGlvbiB0byBtYWtlIHRoaXMgdGVzdGFibGUuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGNhbmNlbGVkLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5vbkFuZ3VsYXJSb3V0ZXJGaW5pc2hlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbkFjdGl2ZSA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb25Nb2RlbCkuaXNOb3ROaWwoKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uQWN0aXZlLnN1YnNjcmliZShhY3RpdmUgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb25TZXNzaW9uQWN0aXZlJywgYWN0aXZlKTtcbiAgICB9KTtcbiAgICAvLyBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcigpLm9uRXZlbnQoZSA9PiBjb25zb2xlLmxvZyhlLnRvU3RyaW5nKCkpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsJywgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsKTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbigpOiBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb25Nb2RlbCgpOiBWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgYWN0aXZlVmlzaXRzKCk6IExpc3RNb2RlbDxWaXNpdD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVWaXNpdHMucmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogIHBsYWNlUm91dGVyLm5hdmlnYXRlKHBsYWNlRGVzdGluYXRpb25zLnNvbWVQbGFjZS5jcmVhdGVWaXNpdChyb3V0ZUlkLCAuLi52aXNpdFBhcmFtcykpO1xuICAgKiBAcGFyYW0gdmlzaXRcbiAgICovXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIG5hdmlnYXRlKHZpc2l0OiBWaXNpdCkge1xuICAgIHRoaXMuZG9OYXZpZ2F0aW9uKHZpc2l0KTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIGFzeW5jIHB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJldmlvdXM6IFZpc2l0LCBuZXh0OiBWaXNpdCkge1xuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gISFwcmV2aW91cy5wbGFjZURlZmluaXRpb24uaGFzUm91dGVJZCgpID8gJy4uJyA6ICcuJztcbiAgICAgICAgY29uc3QgZGVmID0gbmV4dC5wbGFjZURlZmluaXRpb247XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5leHQuaGFzUm91dGVJZCgpID9cbiAgICAgICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlSWQobmV4dCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnMobmV4dCldIDpcbiAgICAgICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyhuZXh0KV07XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gW3JlbGF0aXZlUGF0aF0uY29uY2F0KHBhcmFtcywgdGhpcy5nZXRDaGlsZFBhdGgoYWN0aXZhdGVkUm91dGUuc25hcHNob3QpKTtcbiAgICAgICAgY29uc29sZS5sb2coJyMjIyBSZWRpcmVjdCcsIGNvbW1hbmRzKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xuICAgICAgICAgIHJlbGF0aXZlVG86IGFjdGl2YXRlZFJvdXRlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZChuZXh0KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0LCBjdXN0b21OYXZpZ2F0aW9uPzogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gTmF2aWdhdGlvblNlc3Npb24uY3JlYXRlSW50ZXJuYWwodmlzaXQpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoY3VzdG9tTmF2aWdhdGlvbikge1xuICAgICAgICBhd2FpdCBjdXN0b21OYXZpZ2F0aW9uKHRoaXMucm91dGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyQ29tbWFuZHMgPSB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXSA6XG4gICAgICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXTtcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSBbZGVmLnBhdGhdLmNvbmNhdChwYXJhbWV0ZXJDb21tYW5kcyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdfZG9OYXZpZ2F0aW9uJywgdmlzaXQsIGNvbW1hbmRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMpO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiAmJiAhdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgICB0aGlzLm9uQW5ndWxhclJvdXRlckZpbmlzaGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJpdmF0ZSBvbkFuZ3VsYXJSb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBpZiAoIXRoaXMubmF2aWdhdGlvblNlc3Npb24pIHsgLy8gV2UgYmVlbiBhY3RpdmF0ZWQgYnkgYW4gZXh0ZXJuYWwgcm91dGUgcmF0aGVyIHRoYW4gcGxhY2VSb3V0ZXIuZ28odmlzaXQpXG4gICAgICBjb25zb2xlLmxvZygnbmF2aWdhdGlvbiBzdGFydGVkJywgeyBmaXJzdFRpbWU6IHRoaXMuZmlyc3RSb3V0ZSB9KTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSBOYXZpZ2F0aW9uU2Vzc2lvbi5jcmVhdGVFeHRlcm5hbCh0aGlzLmZpcnN0Um91dGUpO1xuICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSB7XG4gICAgICAgIHNlc3Npb24uc2V0UG9wc3RhdGVSZXR1cm4odGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWUgPSBzZXNzaW9uO1xuICAgIH1cbiAgICB0aGlzLmZpcnN0Um91dGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByaXZhdGUgb25Bbmd1bGFyUm91dGVyRmluaXNoZWQoKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX25hdmlnYXRpb25TZXNzaW9uTW9kZWwudmFsdWU7XG4gICAgLy8gVXBkYXRlIHZpc2l0cyBiZWZvcmUgd2UgZW5kIHRoZSBuYXZpZ2F0aW9uIHNlc3Npb24uICBUaGlzIGFsbG93cyB0aGUgcGxhY2Ugb3V0IGxldCB0b1xuICAgIC8vIGdhdGUgaWdub3JlIGNoYW5nZXMgdGhhdCBvY2N1ciB3aGlsZSB0aGUgdmlzaXQgaXMgYWN0aXZlXG4gICAgY29uc3QgdmlzaXRzID0gc2Vzc2lvbi5nZXRWaXNpdHMoKTtcbiAgICB2aXNpdHMuZm9yRWFjaCh2ID0+IHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5LmFkZCh2KTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3RpdmVWaXNpdHMudmFsdWUgPSB2aXNpdHM7XG5cbiAgICB0aGlzLl9uYXZpZ2F0aW9uU2Vzc2lvbk1vZGVsLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGdldENoaWxkUGF0aChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGFueVtdIHtcbiAgICByZXR1cm4gXy5mbGF0dGVuKGFjdGl2YXRlZFJvdXRlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZC51cmwpKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
// WARNING: interface has both a type and a value, skipping emit
|
|
7
|
+
export var Formatter;
|
|
8
|
+
(function (Formatter) {
|
|
9
|
+
var StringType = /** @class */ (function () {
|
|
10
|
+
function StringType() {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @param {?} value
|
|
14
|
+
* @return {?}
|
|
15
|
+
*/
|
|
16
|
+
StringType.prototype.format = /**
|
|
17
|
+
* @param {?} value
|
|
18
|
+
* @return {?}
|
|
19
|
+
*/
|
|
20
|
+
function (value) {
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* @param {?} value
|
|
25
|
+
* @return {?}
|
|
26
|
+
*/
|
|
27
|
+
StringType.prototype.parse = /**
|
|
28
|
+
* @param {?} value
|
|
29
|
+
* @return {?}
|
|
30
|
+
*/
|
|
31
|
+
function (value) {
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
return StringType;
|
|
35
|
+
}());
|
|
36
|
+
var NumberType = /** @class */ (function () {
|
|
37
|
+
function NumberType() {
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @param {?} value
|
|
41
|
+
* @return {?}
|
|
42
|
+
*/
|
|
43
|
+
NumberType.prototype.format = /**
|
|
44
|
+
* @param {?} value
|
|
45
|
+
* @return {?}
|
|
46
|
+
*/
|
|
47
|
+
function (value) {
|
|
48
|
+
return _.isNumber(value) && !_.isNaN(value) ? "" + value : null;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @param {?} value
|
|
52
|
+
* @return {?}
|
|
53
|
+
*/
|
|
54
|
+
NumberType.prototype.parse = /**
|
|
55
|
+
* @param {?} value
|
|
56
|
+
* @return {?}
|
|
57
|
+
*/
|
|
58
|
+
function (value) {
|
|
59
|
+
/** @type {?} */
|
|
60
|
+
var parsed = Number.parseFloat(value);
|
|
61
|
+
return _.isNaN(parsed) ? null : parsed;
|
|
62
|
+
};
|
|
63
|
+
return NumberType;
|
|
64
|
+
}());
|
|
65
|
+
var BooleanType = /** @class */ (function () {
|
|
66
|
+
function BooleanType() {
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param {?} value
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
BooleanType.prototype.format = /**
|
|
73
|
+
* @param {?} value
|
|
74
|
+
* @return {?}
|
|
75
|
+
*/
|
|
76
|
+
function (value) {
|
|
77
|
+
return value ? 'true' : 'false';
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* @param {?} value
|
|
81
|
+
* @return {?}
|
|
82
|
+
*/
|
|
83
|
+
BooleanType.prototype.parse = /**
|
|
84
|
+
* @param {?} value
|
|
85
|
+
* @return {?}
|
|
86
|
+
*/
|
|
87
|
+
function (value) {
|
|
88
|
+
return value === 'true';
|
|
89
|
+
};
|
|
90
|
+
return BooleanType;
|
|
91
|
+
}());
|
|
92
|
+
Formatter.STRING = new StringType();
|
|
93
|
+
Formatter.NUMBER = new NumberType();
|
|
94
|
+
Formatter.BOOLEAN = new BooleanType();
|
|
95
|
+
})(Formatter || (Formatter = {}));
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3JvdXRlL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQVF2QixNQUFNLEtBQVcsU0FBUyxDQW9DekI7QUFwQ0QsV0FBaUIsU0FBUztJQUV4QjtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQywyQkFBTTs7OztRQUFOLFVBQU8sS0FBYTtZQUNsQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7Ozs7O1FBRUQsMEJBQUs7Ozs7UUFBTCxVQUFNLEtBQWE7WUFDakIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0gsaUJBQUM7SUFBRCxDQUFDLEFBUkQsSUFRQztJQUVEO1FBQUE7UUFTQSxDQUFDOzs7OztRQVJDLDJCQUFNOzs7O1FBQU4sVUFBTyxLQUFhO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsS0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEUsQ0FBQzs7Ozs7UUFFRCwwQkFBSzs7OztRQUFMLFVBQU0sS0FBYTs7Z0JBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekMsQ0FBQztRQUNILGlCQUFDO0lBQUQsQ0FBQyxBQVRELElBU0M7SUFFRDtRQUFBO1FBUUEsQ0FBQzs7Ozs7UUFQQyw0QkFBTTs7OztRQUFOLFVBQU8sS0FBYztZQUNuQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEMsQ0FBQzs7Ozs7UUFFRCwyQkFBSzs7OztRQUFMLFVBQU0sS0FBYTtZQUNqQixPQUFPLEtBQUssS0FBSyxNQUFNLENBQUM7UUFDMUIsQ0FBQztRQUNILGtCQUFDO0lBQUQsQ0FBQyxBQVJELElBUUM7SUFFWSxnQkFBTSxHQUFHLElBQUksVUFBVSxFQUFFO0lBQ3pCLGdCQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7SUFDekIsaUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRTtBQUMxQyxDQUFDLEVBcENnQixTQUFTLEtBQVQsU0FBUyxRQW9DekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdHRlcjxUPiB7XG4gIGZvcm1hdCh2YWx1ZTogVCk6IHN0cmluZztcblxuICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogVDtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBGb3JtYXR0ZXIge1xuXG4gIGNsYXNzIFN0cmluZ1R5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8c3RyaW5nPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIE51bWJlclR5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8bnVtYmVyPiB7XG4gICAgZm9ybWF0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIF8uaXNOdW1iZXIodmFsdWUpICYmICFfLmlzTmFOKHZhbHVlKSA/IGAke3ZhbHVlfWAgOiBudWxsO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgcmV0dXJuIF8uaXNOYU4ocGFyc2VkKSA/IG51bGwgOiBwYXJzZWQ7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgQm9vbGVhblR5cGUgaW1wbGVtZW50cyBGb3JtYXR0ZXI8Ym9vbGVhbj4ge1xuICAgIGZvcm1hdCh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjb25zdCBTVFJJTkcgPSBuZXcgU3RyaW5nVHlwZSgpO1xuICBleHBvcnQgY29uc3QgTlVNQkVSID0gbmV3IE51bWJlclR5cGUoKTtcbiAgZXhwb3J0IGNvbnN0IEJPT0xFQU4gPSBuZXcgQm9vbGVhblR5cGUoKTtcbn1cbiJdfQ==
|