@sinequa/assistant 3.8.4 → 3.8.5-rc1

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 (38) hide show
  1. package/chat/styles/assistant.scss +102 -102
  2. package/chat/styles/references.scss +22 -22
  3. package/chat/websocket-chat.service.d.ts +4 -2
  4. package/esm2020/chat/charts/chart/chart.component.mjs +3 -3
  5. package/esm2020/chat/chat-message/chat-message.component.mjs +3 -3
  6. package/esm2020/chat/chat-reference/chat-reference.component.mjs +3 -3
  7. package/esm2020/chat/chat-settings-v3/chat-settings-v3.component.mjs +3 -3
  8. package/esm2020/chat/chat.component.mjs +3 -3
  9. package/esm2020/chat/chat.service.mjs +1 -1
  10. package/esm2020/chat/debug-message/debug-message.component.mjs +3 -3
  11. package/esm2020/chat/documents-upload/document-list/document-list.component.mjs +3 -3
  12. package/esm2020/chat/documents-upload/document-overview/document-overview.component.mjs +3 -3
  13. package/esm2020/chat/documents-upload/document-upload/document-upload.component.mjs +3 -3
  14. package/esm2020/chat/documents-upload/documents-upload.model.mjs +1 -1
  15. package/esm2020/chat/documents-upload/documents-upload.service.mjs +1 -1
  16. package/esm2020/chat/format-icon/format-icon.component.mjs +1 -1
  17. package/esm2020/chat/format-icon/icons.mjs +1 -1
  18. package/esm2020/chat/initials-avatar/initials-avatar.component.mjs +3 -3
  19. package/esm2020/chat/instance-manager.service.mjs +1 -1
  20. package/esm2020/chat/messages/de.mjs +1 -1
  21. package/esm2020/chat/messages/en.mjs +1 -1
  22. package/esm2020/chat/messages/fr.mjs +1 -1
  23. package/esm2020/chat/messages/index.mjs +1 -1
  24. package/esm2020/chat/prompt.component.mjs +23 -23
  25. package/esm2020/chat/public-api.mjs +1 -1
  26. package/esm2020/chat/rest-chat.service.mjs +1 -1
  27. package/esm2020/chat/saved-chats/saved-chats.component.mjs +3 -3
  28. package/esm2020/chat/token-progress-bar/token-progress-bar.component.mjs +3 -3
  29. package/esm2020/chat/types.mjs +1 -1
  30. package/esm2020/chat/websocket-chat.service.mjs +41 -70
  31. package/esm2020/public-api.mjs +1 -1
  32. package/fesm2015/sinequa-assistant-chat.mjs +85 -114
  33. package/fesm2015/sinequa-assistant-chat.mjs.map +1 -1
  34. package/fesm2015/sinequa-assistant.mjs.map +1 -1
  35. package/fesm2020/sinequa-assistant-chat.mjs +85 -114
  36. package/fesm2020/sinequa-assistant-chat.mjs.map +1 -1
  37. package/fesm2020/sinequa-assistant.mjs.map +1 -1
  38. package/package.json +1 -1
@@ -1,102 +1,102 @@
1
- /****************************************************
2
- variables
3
- ****************************************************/
4
- $sm: 576px;
5
- $md: 768px;
6
- $lg: 992px;
7
- $xl: 1200px;
8
- $xxl: 1400px;
9
-
10
- $size-0: var(--ast-size-0, 0rem);
11
- $size-1: var(--ast-size-1, 0.25rem);
12
- $size-2: var(--ast-size-2, 0.5rem);
13
- $size-3: var(--ast-size-3, 0.75rem);
14
- $size-4: var(--ast-size-4, 1rem);
15
- $size-5: var(--ast-size-5, 1.25rem);
16
- $size-6: var(--ast-size-6, 1.5rem);
17
-
18
- $fw-bold: var(--font-weight-bold, 500);
19
- $container-width: var(--container-width, 800px);
20
-
21
- /****************************************************
22
- colors
23
- ****************************************************/
24
- $ast-primary-bg: var(--ast-primary-bg, #f2f8fe);
25
- $ast-primary-color: var(--ast-primary-color, #005DA7);
26
- $ast-secondary-bg: var(--ast-secondary-bg, #FFF8F1);
27
- $ast-secondary-color: var(--ast-secondary-color, #FF732E);
28
- $ast-error-bg: var(--ast-error-bg, rgba(249, 58, 55, 0.2));
29
- $ast-error-color: var(--ast-error-color, rgba(249, 58, 55, 0.7));
30
- $ast-warning-bg: var(--ast-warning-bg, #fff1b8);
31
- $ast-warning-color: var(--ast-warning-color, #fed86f);
32
- $ast-saved-chat-hover-background: var(--ast-saved-chat-hover-background, #FFF8F1);
33
- $ast-uploaded-doc-hover-background: var(--ast-uploaded-doc-hover-background, #f2f8fe);
34
- $ast-input-bg: var(--ast-input-bg, #F8F8F8);
35
- $ast-input-color: var(--ast-input-color, #B0B0B0);
36
- $ast-muted-color: var(--ast-muted-color, rgba(33, 37, 41, 0.75));
37
- $ast-action-buttons-color: var(--ast-action-buttons-color, #212529);
38
- $ast-action-buttons-hover-color: var(--ast-action-buttons-hover-color, var(--ast-primary-color, #005DA7));
39
- $ast-report-bg: var(--ast-report-bg, white);
40
-
41
- /****************************************************
42
- classes
43
- ****************************************************/
44
-
45
- .ast-primary {
46
- color: $ast-primary-color;
47
- background-color: $ast-primary-bg;
48
- }
49
-
50
- .ast-primary-hover {
51
- background-color: $ast-primary-bg;
52
-
53
- &:hover {
54
- color: $ast-primary-color;
55
- }
56
- }
57
-
58
- .ast-secondary {
59
- color: $ast-secondary-color;
60
- background-color: $ast-secondary-bg;
61
- }
62
-
63
- .ast-error {
64
- background-color: $ast-error-bg;
65
- color: var(--ast-action-buttons-color, inherit);
66
-
67
- &:hover {
68
- color: $ast-error-color;
69
- }
70
- }
71
-
72
- .ast-btn {
73
- border: 0;
74
- text-align: left;
75
- padding-top: 0.5rem;
76
- padding-bottom: 0.5rem;
77
- display: flex;
78
- align-items: center;
79
- }
80
-
81
- .dark {
82
- --ast-primary-bg: #0d0701;
83
- --ast-primary-color: #008cd1;
84
- --ast-secondary-bg: #00070e;
85
- --ast-secondary-color: #ffa258;
86
- --ast-input-bg: #070707;
87
- --ast-input-color: rgba(222, 218, 218, 0.75);
88
- --ast-muted-color: rgba(222, 218, 218, 0.75);
89
- --ast-saved-chat-hover-background: #262421;
90
- --ast-uploaded-doc-hover-background: #262421;
91
- --ast-message-table-border-color: #333333;
92
- --ast-message-table-tr-bg: #070707;
93
- --ast-message-table-tr-border-color: #222222;
94
- --ast-reference-icon-color: white;
95
- --ast-reference-icon-active-color: black;
96
- --ast-reference-passages-color: white;
97
- --ast-reference-expanded-hover-bg: #262421;
98
- --ast-message-reference-color: black;
99
- --ast-action-buttons-color: white;
100
- --ast-action-buttons-hover-color: #6dbee6;
101
- --ast-report-bg: #070707;
102
- }
1
+ /****************************************************
2
+ variables
3
+ ****************************************************/
4
+ $sm: 576px;
5
+ $md: 768px;
6
+ $lg: 992px;
7
+ $xl: 1200px;
8
+ $xxl: 1400px;
9
+
10
+ $size-0: var(--ast-size-0, 0rem);
11
+ $size-1: var(--ast-size-1, 0.25rem);
12
+ $size-2: var(--ast-size-2, 0.5rem);
13
+ $size-3: var(--ast-size-3, 0.75rem);
14
+ $size-4: var(--ast-size-4, 1rem);
15
+ $size-5: var(--ast-size-5, 1.25rem);
16
+ $size-6: var(--ast-size-6, 1.5rem);
17
+
18
+ $fw-bold: var(--font-weight-bold, 500);
19
+ $container-width: var(--container-width, 800px);
20
+
21
+ /****************************************************
22
+ colors
23
+ ****************************************************/
24
+ $ast-primary-bg: var(--ast-primary-bg, #f2f8fe);
25
+ $ast-primary-color: var(--ast-primary-color, #005DA7);
26
+ $ast-secondary-bg: var(--ast-secondary-bg, #FFF8F1);
27
+ $ast-secondary-color: var(--ast-secondary-color, #FF732E);
28
+ $ast-error-bg: var(--ast-error-bg, rgba(249, 58, 55, 0.2));
29
+ $ast-error-color: var(--ast-error-color, rgba(249, 58, 55, 0.7));
30
+ $ast-warning-bg: var(--ast-warning-bg, #fff1b8);
31
+ $ast-warning-color: var(--ast-warning-color, #fed86f);
32
+ $ast-saved-chat-hover-background: var(--ast-saved-chat-hover-background, #FFF8F1);
33
+ $ast-uploaded-doc-hover-background: var(--ast-uploaded-doc-hover-background, #f2f8fe);
34
+ $ast-input-bg: var(--ast-input-bg, #F8F8F8);
35
+ $ast-input-color: var(--ast-input-color, #B0B0B0);
36
+ $ast-muted-color: var(--ast-muted-color, rgba(33, 37, 41, 0.75));
37
+ $ast-action-buttons-color: var(--ast-action-buttons-color, #212529);
38
+ $ast-action-buttons-hover-color: var(--ast-action-buttons-hover-color, var(--ast-primary-color, #005DA7));
39
+ $ast-report-bg: var(--ast-report-bg, white);
40
+
41
+ /****************************************************
42
+ classes
43
+ ****************************************************/
44
+
45
+ .ast-primary {
46
+ color: $ast-primary-color;
47
+ background-color: $ast-primary-bg;
48
+ }
49
+
50
+ .ast-primary-hover {
51
+ background-color: $ast-primary-bg;
52
+
53
+ &:hover {
54
+ color: $ast-primary-color;
55
+ }
56
+ }
57
+
58
+ .ast-secondary {
59
+ color: $ast-secondary-color;
60
+ background-color: $ast-secondary-bg;
61
+ }
62
+
63
+ .ast-error {
64
+ background-color: $ast-error-bg;
65
+ color: var(--ast-action-buttons-color, inherit);
66
+
67
+ &:hover {
68
+ color: $ast-error-color;
69
+ }
70
+ }
71
+
72
+ .ast-btn {
73
+ border: 0;
74
+ text-align: left;
75
+ padding-top: 0.5rem;
76
+ padding-bottom: 0.5rem;
77
+ display: flex;
78
+ align-items: center;
79
+ }
80
+
81
+ .dark {
82
+ --ast-primary-bg: #0d0701;
83
+ --ast-primary-color: #008cd1;
84
+ --ast-secondary-bg: #00070e;
85
+ --ast-secondary-color: #ffa258;
86
+ --ast-input-bg: #070707;
87
+ --ast-input-color: rgba(222, 218, 218, 0.75);
88
+ --ast-muted-color: rgba(222, 218, 218, 0.75);
89
+ --ast-saved-chat-hover-background: #262421;
90
+ --ast-uploaded-doc-hover-background: #262421;
91
+ --ast-message-table-border-color: #333333;
92
+ --ast-message-table-tr-bg: #070707;
93
+ --ast-message-table-tr-border-color: #222222;
94
+ --ast-reference-icon-color: white;
95
+ --ast-reference-icon-active-color: black;
96
+ --ast-reference-passages-color: white;
97
+ --ast-reference-expanded-hover-bg: #262421;
98
+ --ast-message-reference-color: black;
99
+ --ast-action-buttons-color: white;
100
+ --ast-action-buttons-hover-color: #6dbee6;
101
+ --ast-report-bg: #070707;
102
+ }
@@ -1,23 +1,23 @@
1
- :host ::ng-deep { // required so it is applied for the tooltip
2
- .reference,
3
- .message-content .reference,
4
- .attachment .reference {
5
- position: relative;
6
- bottom: var(--ast-reference-bottom, 0.3em);
7
- font-weight: var(--ast-reference-font-weight, bold);
8
- padding: var(--ast-reference-padding, 0 0.2em);
9
- margin: var(--ast-reference-margin, 0 0.1em);
10
- border-radius: var(--ast-reference-border-radius, 0.2em);
11
- background-color: var(--ast-reference-background-color, lightblue);
12
- color: var(--ast-reference-color, black);
13
- }
14
-
15
- .reference,
16
- .message-content .reference {
17
- font-size: var(--ast-reference-message-font-size, 0.7em);
18
- }
19
-
20
- .attachment .reference {
21
- font-size: var(--ast-reference-attachment-font-size, 13px);
22
- }
1
+ :host ::ng-deep { // required so it is applied for the tooltip
2
+ .reference,
3
+ .message-content .reference,
4
+ .attachment .reference {
5
+ position: relative;
6
+ bottom: var(--ast-reference-bottom, 0.3em);
7
+ font-weight: var(--ast-reference-font-weight, bold);
8
+ padding: var(--ast-reference-padding, 0 0.2em);
9
+ margin: var(--ast-reference-margin, 0 0.1em);
10
+ border-radius: var(--ast-reference-border-radius, 0.2em);
11
+ background-color: var(--ast-reference-background-color, lightblue);
12
+ color: var(--ast-reference-color, black);
13
+ }
14
+
15
+ .reference,
16
+ .message-content .reference {
17
+ font-size: var(--ast-reference-message-font-size, 0.7em);
18
+ }
19
+
20
+ .attachment .reference {
21
+ font-size: var(--ast-reference-attachment-font-size, 13px);
22
+ }
23
23
  }
@@ -2,7 +2,7 @@ import { HubConnection } from "@microsoft/signalr";
2
2
  import { Observable } from "rxjs";
3
3
  import { Query } from "@sinequa/core/app-utils";
4
4
  import { AuthenticationService } from "@sinequa/core/login";
5
- import { ConnectionOptions, SignalRWebService } from "@sinequa/core/web-services";
5
+ import { ConnectionOptions, JsonMethodPluginService, SignalRWebService } from "@sinequa/core/web-services";
6
6
  import { ChatService } from "./chat.service";
7
7
  import { ChatMessage, ChatResponse, GllmFunction, GllmModelDescription, MessageHandler, SavedChat, SavedChatHistory } from "./types";
8
8
  import * as i0 from "@angular/core";
@@ -17,6 +17,8 @@ export declare class WebSocketChatService extends ChatService {
17
17
  private _debugMessages;
18
18
  signalRService: SignalRWebService;
19
19
  authenticationService: AuthenticationService;
20
+ jsonMethodWebService: JsonMethodPluginService;
21
+ private readonly restUrl;
20
22
  constructor();
21
23
  /**
22
24
  * Initialize the assistant process.
@@ -37,8 +39,8 @@ export declare class WebSocketChatService extends ChatService {
37
39
  fetch(messages: ChatMessage[], query: Query): Observable<ChatResponse>;
38
40
  stopGeneration(): Observable<boolean>;
39
41
  listSavedChat(): void;
40
- getSavedChat(id: string): Observable<SavedChatHistory | undefined>;
41
42
  addSavedChat(messages: ChatMessage[]): Observable<SavedChat>;
43
+ getSavedChat(id: string): Observable<SavedChatHistory | undefined>;
42
44
  updateSavedChat(id: string, name?: string, messages?: ChatMessage[]): Observable<SavedChat>;
43
45
  deleteSavedChat(ids: string[]): Observable<number>;
44
46
  /**
@@ -30,11 +30,11 @@ export class ChartComponent {
30
30
  }
31
31
  }
32
32
  ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ChartComponent, isStandalone: true, selector: "sq-assistant-chart", inputs: { rawChartData: "rawChartData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-container\">\n <canvas id=\"chart-canvas\">{{ chart }}</canvas>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
33
+ ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ChartComponent, isStandalone: true, selector: "sq-assistant-chart", inputs: { rawChartData: "rawChartData" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-container\">\r\n <canvas id=\"chart-canvas\">{{ chart }}</canvas>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChartComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'sq-assistant-chart', standalone: true, imports: [CommonModule], template: "<div class=\"chart-container\">\n <canvas id=\"chart-canvas\">{{ chart }}</canvas>\n</div>\n" }]
36
+ args: [{ selector: 'sq-assistant-chart', standalone: true, imports: [CommonModule], template: "<div class=\"chart-container\">\r\n <canvas id=\"chart-canvas\">{{ chart }}</canvas>\r\n</div>\r\n" }]
37
37
  }], ctorParameters: function () { return []; }, propDecorators: { rawChartData: [{
38
38
  type: Input
39
39
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhcnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXJ0cy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBOztBQUUvQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFTakMsTUFBTSxPQUFPLGNBQWM7SUFNekIsZ0JBQWdCLENBQUM7SUFFakIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlELElBQUcsYUFBYSxFQUFDO1lBQ2YsSUFBRztnQkFDRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQVcsQ0FBQztnQkFDdEgsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFFckQ7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFGO1NBRUY7YUFDSTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7OzJHQW5DVSxjQUFjOytGQUFkLGNBQWMsNklDYjNCLGlHQUdBLHlERE1ZLFlBQVk7MkZBSVgsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzBFQUtkLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkNoYW5nZXMsIENvbXBvbmVudCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFydCwgcmVnaXN0ZXJhYmxlcyB9IGZyb20gJ2NoYXJ0LmpzJ1xuXG5DaGFydC5yZWdpc3RlciguLi5yZWdpc3RlcmFibGVzKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtYXNzaXN0YW50LWNoYXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHJhd0NoYXJ0RGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjaGFydDogQ2hhcnQ7XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydyYXdDaGFydERhdGEnXSkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lcik7XG4gICAgICB0aGlzLmRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZUNoYXJ0KCksIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ2hhcnQoKSB7XG4gICAgQ2hhcnQuZ2V0Q2hhcnQoJ2NoYXJ0LWNhbnZhcycpPy5kZXN0cm95KCk7XG5cbiAgICBjb25zdCBjYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0LWNhbnZhcycpO1xuXG4gICAgaWYoY2FudmFzRWxlbWVudCl7XG4gICAgICB0cnl7XG4gICAgICAgIGxldCBjaGFydElucHV0ID0gdGhpcy5yYXdDaGFydERhdGEubWF0Y2goLzxjaGFydGpzPih7W1xcc1xcU10qPyk8XFwvY2hhcnRqcz4vKT8uWzFdPy50cmltKCkucmVwbGFjZSgvJy9nLCAnXCInKSBhcyBzdHJpbmc7XG4gICAgICAgIGxldCBjaGFydENvbmZpZyA9IEpTT04ucGFyc2UoY2hhcnRJbnB1dCk7ICBcbiAgIFxuICAgICAgICB0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0KCdjaGFydC1jYW52YXMnLCBjaGFydENvbmZpZyk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgY2hhcnQgY29uZmlndXJhdGlvbiwgY2hlY2sgdGhlIGFzc2lzdGFudCBjb25maWd1cmF0aW9uOiAnLCBlcnJvcik7XG4gICAgICB9XG5cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDaGFydCBDYW52YXMgaXMgbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtY29udGFpbmVyXCI+XG4gICAgPGNhbnZhcyBpZD1cImNoYXJ0LWNhbnZhc1wiPnt7IGNoYXJ0IH19PC9jYW52YXM+XG48L2Rpdj5cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhcnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2NoYXJ0cy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBOztBQUUvQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFTakMsTUFBTSxPQUFPLGNBQWM7SUFNekIsZ0JBQWdCLENBQUM7SUFFakIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlELElBQUcsYUFBYSxFQUFDO1lBQ2YsSUFBRztnQkFDRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQVcsQ0FBQztnQkFDdEgsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFekMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7YUFFckQ7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGtFQUFrRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFGO1NBRUY7YUFDSTtZQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7OzJHQW5DVSxjQUFjOytGQUFkLGNBQWMsNklDYjNCLHVHQUdBLHlERE1ZLFlBQVk7MkZBSVgsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzBFQUtkLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkNoYW5nZXMsIENvbXBvbmVudCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhcnQsIHJlZ2lzdGVyYWJsZXMgfSBmcm9tICdjaGFydC5qcydcclxuXHJcbkNoYXJ0LnJlZ2lzdGVyKC4uLnJlZ2lzdGVyYWJsZXMpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcS1hc3Npc3RhbnQtY2hhcnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByYXdDaGFydERhdGE6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNoYXJ0OiBDaGFydDtcclxuICBwcml2YXRlIGRlYm91bmNlVGltZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3Jhd0NoYXJ0RGF0YSddKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlYm91bmNlVGltZXIpO1xyXG4gICAgICB0aGlzLmRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZUNoYXJ0KCksIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVDaGFydCgpIHtcclxuICAgIENoYXJ0LmdldENoYXJ0KCdjaGFydC1jYW52YXMnKT8uZGVzdHJveSgpO1xyXG5cclxuICAgIGNvbnN0IGNhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hhcnQtY2FudmFzJyk7XHJcblxyXG4gICAgaWYoY2FudmFzRWxlbWVudCl7XHJcbiAgICAgIHRyeXtcclxuICAgICAgICBsZXQgY2hhcnRJbnB1dCA9IHRoaXMucmF3Q2hhcnREYXRhLm1hdGNoKC88Y2hhcnRqcz4oe1tcXHNcXFNdKj8pPFxcL2NoYXJ0anM+Lyk/LlsxXT8udHJpbSgpLnJlcGxhY2UoLycvZywgJ1wiJykgYXMgc3RyaW5nO1xyXG4gICAgICAgIGxldCBjaGFydENvbmZpZyA9IEpTT04ucGFyc2UoY2hhcnRJbnB1dCk7ICBcclxuICAgXHJcbiAgICAgICAgdGhpcy5jaGFydCA9IG5ldyBDaGFydCgnY2hhcnQtY2FudmFzJywgY2hhcnRDb25maWcpO1xyXG5cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnZhbGlkIGNoYXJ0IGNvbmZpZ3VyYXRpb24sIGNoZWNrIHRoZSBhc3Npc3RhbnQgY29uZmlndXJhdGlvbjogJywgZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NoYXJ0IENhbnZhcyBpcyBub3QgZm91bmQnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgPGNhbnZhcyBpZD1cImNoYXJ0LWNhbnZhc1wiPnt7IGNoYXJ0IH19PC9jYW52YXM+XHJcbjwvZGl2PlxyXG4iXX0=