phoenix-ui-components 2.8.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +11 -3
  2. package/dist/README.md +11 -3
  3. package/dist/components/loader/loader.component.d.ts +4 -0
  4. package/dist/components/phoenix-menu/index.d.ts +1 -1
  5. package/dist/components/phoenix-menu/{pheonix-menu-item → phoenix-menu-item}/phoenix-menu-item.component.d.ts +0 -0
  6. package/dist/components/phoenix-ui.module.d.ts +60 -58
  7. package/dist/components/ui-menu/cycle-events/cycle-events.component.d.ts +16 -0
  8. package/dist/components/ui-menu/experiment-info/experiment-info.component.d.ts +4 -3
  9. package/dist/components/ui-menu/index.d.ts +2 -0
  10. package/dist/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.d.ts +2 -2
  11. package/dist/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.d.ts +6 -0
  12. package/dist/components/ui-menu/ui-menu.component.d.ts +0 -1
  13. package/dist/esm2020/components/embed-menu/embed-menu.component.mjs +3 -3
  14. package/dist/esm2020/components/embed-menu/experiment-link/experiment-link.component.mjs +3 -3
  15. package/dist/esm2020/components/file-explorer/file-explorer.component.mjs +3 -3
  16. package/dist/esm2020/components/loader/loader.component.mjs +15 -8
  17. package/dist/esm2020/components/nav/nav.component.mjs +3 -3
  18. package/dist/esm2020/components/phoenix-menu/config/config-slider/config-slider.component.mjs +3 -3
  19. package/dist/esm2020/components/phoenix-menu/index.mjs +2 -2
  20. package/dist/esm2020/components/phoenix-menu/phoenix-menu-item/phoenix-menu-item.component.mjs +36 -0
  21. package/dist/esm2020/components/phoenix-menu/phoenix-menu.component.mjs +4 -4
  22. package/dist/esm2020/components/phoenix-ui.module.mjs +33 -9
  23. package/dist/esm2020/components/ring-loader/ring-loader.component.mjs +3 -3
  24. package/dist/esm2020/components/ui-menu/animate-camera/animate-camera.component.mjs +7 -8
  25. package/dist/esm2020/components/ui-menu/animate-event/animate-event.component.mjs +3 -3
  26. package/dist/esm2020/components/ui-menu/ar-toggle/ar-toggle.component.mjs +3 -3
  27. package/dist/esm2020/components/ui-menu/auto-rotate/auto-rotate.component.mjs +3 -3
  28. package/dist/esm2020/components/ui-menu/collections-info/collections-info-overlay/collections-info-overlay.component.mjs +3 -3
  29. package/dist/esm2020/components/ui-menu/collections-info/collections-info.component.mjs +3 -3
  30. package/dist/esm2020/components/ui-menu/cycle-events/cycle-events.component.mjs +36 -0
  31. package/dist/esm2020/components/ui-menu/dark-theme/dark-theme.component.mjs +3 -3
  32. package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer-dialog/event-data-explorer-dialog.component.mjs +3 -3
  33. package/dist/esm2020/components/ui-menu/event-data-explorer/event-data-explorer.component.mjs +3 -3
  34. package/dist/esm2020/components/ui-menu/event-selector/event-selector.component.mjs +3 -3
  35. package/dist/esm2020/components/ui-menu/experiment-info/experiment-info.component.mjs +9 -7
  36. package/dist/esm2020/components/ui-menu/index.mjs +3 -1
  37. package/dist/esm2020/components/ui-menu/info-panel/info-panel-overlay/info-panel-overlay.component.mjs +3 -3
  38. package/dist/esm2020/components/ui-menu/info-panel/info-panel.component.mjs +3 -3
  39. package/dist/esm2020/components/ui-menu/io-options/io-options-dialog/io-options-dialog.component.mjs +43 -53
  40. package/dist/esm2020/components/ui-menu/io-options/io-options.component.mjs +3 -3
  41. package/dist/esm2020/components/ui-menu/main-view-toggle/main-view-toggle.component.mjs +3 -3
  42. package/dist/esm2020/components/ui-menu/menu-toggle/menu-toggle.component.mjs +3 -3
  43. package/dist/esm2020/components/ui-menu/object-clipping/object-clipping.component.mjs +5 -5
  44. package/dist/esm2020/components/ui-menu/object-selection/object-selection-overlay/object-selection-overlay.component.mjs +3 -3
  45. package/dist/esm2020/components/ui-menu/object-selection/object-selection.component.mjs +3 -3
  46. package/dist/esm2020/components/ui-menu/overlay/overlay.component.mjs +3 -3
  47. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view-window/overlay-view-window.component.mjs +3 -3
  48. package/dist/esm2020/components/ui-menu/overlay-view/overlay-view.component.mjs +3 -3
  49. package/dist/esm2020/components/ui-menu/performance-toggle/performance-toggle.component.mjs +3 -3
  50. package/dist/esm2020/components/ui-menu/share-link/share-link-dialog/share-link-dialog.component.mjs +3 -3
  51. package/dist/esm2020/components/ui-menu/share-link/share-link.component.mjs +3 -3
  52. package/dist/esm2020/components/ui-menu/ss-mode/ss-mode.component.mjs +4 -4
  53. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu-item/tree-menu-item.component.mjs +3 -3
  54. package/dist/esm2020/components/ui-menu/tree-menu/tree-menu.component.mjs +3 -3
  55. package/dist/esm2020/components/ui-menu/ui-menu-wrapper/ui-menu-wrapper.component.mjs +16 -0
  56. package/dist/esm2020/components/ui-menu/ui-menu.component.mjs +25 -27
  57. package/dist/esm2020/components/ui-menu/view-options/view-options.component.mjs +3 -3
  58. package/dist/esm2020/components/ui-menu/vr-toggle/vr-toggle.component.mjs +3 -3
  59. package/dist/esm2020/components/ui-menu/zoom-controls/zoom-controls.component.mjs +3 -3
  60. package/dist/esm2020/services/error-message-service.mjs +32 -0
  61. package/dist/esm2020/services/event-display.service.mjs +3 -3
  62. package/dist/esm2020/services/extras/attribute.pipe.mjs +3 -3
  63. package/dist/esm2020/services/global-error-handler.mjs +29 -0
  64. package/dist/fesm2015/phoenix-ui-components.mjs +321 -201
  65. package/dist/fesm2015/phoenix-ui-components.mjs.map +1 -1
  66. package/dist/fesm2020/phoenix-ui-components.mjs +320 -204
  67. package/dist/fesm2020/phoenix-ui-components.mjs.map +1 -1
  68. package/dist/services/error-message-service.d.ts +17 -0
  69. package/dist/services/global-error-handler.d.ts +20 -0
  70. package/package.json +6 -6
  71. package/dist/esm2020/components/phoenix-menu/pheonix-menu-item/phoenix-menu-item.component.mjs +0 -36
@@ -52,9 +52,9 @@ export class ZoomControlsComponent {
52
52
  clearTimeout(this.zoomTimeout);
53
53
  }
54
54
  }
55
- ZoomControlsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ZoomControlsComponent, deps: [{ token: i1.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
56
- ZoomControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: ZoomControlsComponent, selector: "app-zoom-controls", ngImport: i0, template: "<div class=\"d-flex\">\n <app-menu-toggle\n tooltip=\"Zoom out (hold)\"\n icon=\"zoom-out\"\n [active]=\"false\"\n (click)=\"zoomOut(true); clearZoom()\"\n (touchstart)=\"zoomOut(true)\"\n (mousedown)=\"zoomOut($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n tooltip=\"Zoom in (hold)\"\n icon=\"zoom-in\"\n [active]=\"false\"\n (click)=\"zoomIn(true); clearZoom()\"\n (touchstart)=\"zoomIn(true)\"\n (mousedown)=\"zoomIn($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n</div>\n", styles: [""], components: [{ type: i2.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }] });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ZoomControlsComponent, decorators: [{
55
+ ZoomControlsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ZoomControlsComponent, deps: [{ token: i1.EventDisplayService }], target: i0.ɵɵFactoryTarget.Component });
56
+ ZoomControlsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: ZoomControlsComponent, selector: "app-zoom-controls", ngImport: i0, template: "<div class=\"d-flex\">\n <app-menu-toggle\n tooltip=\"Zoom out (hold)\"\n icon=\"zoom-out\"\n [active]=\"false\"\n (click)=\"zoomOut(true); clearZoom()\"\n (touchstart)=\"zoomOut(true)\"\n (mousedown)=\"zoomOut($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n tooltip=\"Zoom in (hold)\"\n icon=\"zoom-in\"\n [active]=\"false\"\n (click)=\"zoomIn(true); clearZoom()\"\n (touchstart)=\"zoomIn(true)\"\n (mousedown)=\"zoomIn($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n</div>\n", styles: [""], components: [{ type: i2.MenuToggleComponent, selector: "app-menu-toggle", inputs: ["icon", "active", "tooltip", "disabled"] }] });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ZoomControlsComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'app-zoom-controls', template: "<div class=\"d-flex\">\n <app-menu-toggle\n tooltip=\"Zoom out (hold)\"\n icon=\"zoom-out\"\n [active]=\"false\"\n (click)=\"zoomOut(true); clearZoom()\"\n (touchstart)=\"zoomOut(true)\"\n (mousedown)=\"zoomOut($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n <app-menu-toggle\n tooltip=\"Zoom in (hold)\"\n icon=\"zoom-in\"\n [active]=\"false\"\n (click)=\"zoomIn(true); clearZoom()\"\n (touchstart)=\"zoomIn(true)\"\n (mousedown)=\"zoomIn($event.button === 0)\"\n (mouseup)=\"clearZoom()\"\n (mouseleave)=\"clearZoom()\"\n (touchend)=\"clearZoom()\"\n (touchcancel)=\"clearZoom()\"\n (touchmove)=\"clearZoom()\"\n >\n </app-menu-toggle>\n</div>\n", styles: [""] }]
60
60
  }], ctorParameters: function () { return [{ type: i1.EventDisplayService }]; } });
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ActiveVariable } from 'phoenix-event-display';
3
+ import * as i0 from "@angular/core";
4
+ export class ErrorMessageService {
5
+ constructor() {
6
+ /** A variable that stores the latest error thrown. */
7
+ this.error = new ActiveVariable();
8
+ }
9
+ /**
10
+ * Subscribe to when an error occurs.
11
+ * @param callback A function called when an error occurs.
12
+ */
13
+ subscribeToError(callback) {
14
+ this.error.onUpdate(callback);
15
+ }
16
+ /**
17
+ * Set the current error.
18
+ * @param error The error that has occurred.
19
+ */
20
+ setError(error) {
21
+ this.error.update(error);
22
+ }
23
+ }
24
+ ErrorMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ErrorMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ ErrorMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ErrorMessageService, providedIn: 'root' });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: ErrorMessageService, decorators: [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root',
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWVzc2FnZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NlcnZpY2VzL2Vycm9yLW1lc3NhZ2Utc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLG1CQUFtQjtJQUhoQztRQUlFLHNEQUFzRDtRQUM5QyxVQUFLLEdBQUcsSUFBSSxjQUFjLEVBQVMsQ0FBQztLQWlCN0M7SUFmQzs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxRQUFnQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7Z0hBbEJVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2ZVZhcmlhYmxlIH0gZnJvbSAncGhvZW5peC1ldmVudC1kaXNwbGF5JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVycm9yTWVzc2FnZVNlcnZpY2Uge1xuICAvKiogQSB2YXJpYWJsZSB0aGF0IHN0b3JlcyB0aGUgbGF0ZXN0IGVycm9yIHRocm93bi4gKi9cbiAgcHJpdmF0ZSBlcnJvciA9IG5ldyBBY3RpdmVWYXJpYWJsZTxFcnJvcj4oKTtcblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHdoZW4gYW4gZXJyb3Igb2NjdXJzLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgQSBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMuXG4gICAqL1xuICBzdWJzY3JpYmVUb0Vycm9yKGNhbGxiYWNrOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5lcnJvci5vblVwZGF0ZShjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IGVycm9yLlxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIHRoYXQgaGFzIG9jY3VycmVkLlxuICAgKi9cbiAgc2V0RXJyb3IoZXJyb3I6IEVycm9yKSB7XG4gICAgdGhpcy5lcnJvci51cGRhdGUoZXJyb3IpO1xuICB9XG59XG4iXX0=
@@ -12,9 +12,9 @@ export class EventDisplayService extends EventDisplay {
12
12
  super();
13
13
  }
14
14
  }
15
- EventDisplayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EventDisplayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
- EventDisplayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EventDisplayService, providedIn: 'root' });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EventDisplayService, decorators: [{
15
+ EventDisplayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EventDisplayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16
+ EventDisplayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EventDisplayService, providedIn: 'root' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: EventDisplayService, decorators: [{
18
18
  type: Injectable,
19
19
  args: [{
20
20
  providedIn: 'root',
@@ -22,9 +22,9 @@ export class AttributePipe {
22
22
  return transformedValue;
23
23
  }
24
24
  }
25
- AttributePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: AttributePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
26
- AttributePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: AttributePipe, name: "attributePipe" });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: AttributePipe, decorators: [{
25
+ AttributePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AttributePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
26
+ AttributePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AttributePipe, name: "attributePipe" });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AttributePipe, decorators: [{
28
28
  type: Pipe,
29
29
  args: [{
30
30
  name: 'attributePipe',
@@ -0,0 +1,29 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ErrorMessageService } from './error-message-service';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Global handler for handling app/module wide errors.
6
+ */
7
+ export class GlobalErrorHandler {
8
+ /**
9
+ * Instantiate the global error handler.
10
+ * @param injector Injector for getting the error message service.
11
+ */
12
+ constructor(injector) {
13
+ this.injector = injector;
14
+ }
15
+ /**
16
+ * A handler for handling the global error that occurs in the app.
17
+ * @param error The error that occurred.
18
+ */
19
+ handleError(error) {
20
+ console.error('ERROR IN PHOENIX APP', '\n', error);
21
+ this.injector.get(ErrorMessageService).setError(error);
22
+ }
23
+ }
24
+ GlobalErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: GlobalErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
25
+ GlobalErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: GlobalErrorHandler });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: GlobalErrorHandler, decorators: [{
27
+ type: Injectable
28
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc2VydmljZXMvZ2xvYmFsLWVycm9yLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTlEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7O09BR0c7SUFDSCxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUUxQzs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBWTtRQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDOzsrR0FkVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vZXJyb3ItbWVzc2FnZS1zZXJ2aWNlJztcblxuLyoqXG4gKiBHbG9iYWwgaGFuZGxlciBmb3IgaGFuZGxpbmcgYXBwL21vZHVsZSB3aWRlIGVycm9ycy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdsb2JhbEVycm9ySGFuZGxlciBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZSB0aGUgZ2xvYmFsIGVycm9yIGhhbmRsZXIuXG4gICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgZ2V0dGluZyB0aGUgZXJyb3IgbWVzc2FnZSBzZXJ2aWNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgLyoqXG4gICAqIEEgaGFuZGxlciBmb3IgaGFuZGxpbmcgdGhlIGdsb2JhbCBlcnJvciB0aGF0IG9jY3VycyBpbiB0aGUgYXBwLlxuICAgKiBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuXG4gICAqL1xuICBoYW5kbGVFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFUlJPUiBJTiBQSE9FTklYIEFQUCcsICdcXG4nLCBlcnJvcik7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoRXJyb3JNZXNzYWdlU2VydmljZSkuc2V0RXJyb3IoZXJyb3IpO1xuICB9XG59XG4iXX0=