@tilde-nlp/ngx-common 6.0.44 → 6.0.46

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.
@@ -5,60 +5,94 @@ import { ERROR_CODES } from '../../../constants';
5
5
  import { PlausibleHelper } from '../../../plausible';
6
6
  import { LLMActions } from '../../models/llm-actions.enum';
7
7
  import { LLMWritingStyle } from '../../models/llm-writing-style.enum';
8
+ import { LLMUseCase } from '@tilde-nlp/ngx-services';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@tilde-nlp/ngx-services";
10
11
  import * as i2 from "../../services/llm-helper.service";
11
12
  import * as i3 from "@angular/common";
12
13
  import * as i4 from "@angular/material/button";
13
14
  import * as i5 from "@angular/material/dialog";
14
- import * as i6 from "@angular/material/form-field";
15
- import * as i7 from "@angular/material/select";
16
- import * as i8 from "@angular/material/core";
17
- import * as i9 from "../../../notification-message/notification-message.component";
18
- import * as i10 from "@angular/material/tooltip";
19
- import * as i11 from "@angular/material/progress-spinner";
20
- import * as i12 from "../../shared/llm-textarea/llm-textarea.component";
21
- import * as i13 from "@ngx-translate/core";
15
+ import * as i6 from "@angular/forms";
16
+ import * as i7 from "@angular/material/form-field";
17
+ import * as i8 from "@angular/material/select";
18
+ import * as i9 from "@angular/material/core";
19
+ import * as i10 from "../../../notification-message/notification-message.component";
20
+ import * as i11 from "@angular/material/tooltip";
21
+ import * as i12 from "@angular/material/progress-spinner";
22
+ import * as i13 from "../../shared/llm-textarea/llm-textarea.component";
23
+ import * as i14 from "@ngx-translate/core";
22
24
  const _c0 = a0 => ({ style: a0 });
23
25
  const _c1 = (a0, a1) => ({ limit: a0, subscriptionUrl: a1 });
24
26
  function LLMTextareaWithActionsComponent_lib_tld_notification_message_7_Template(rf, ctx) { if (rf & 1) {
25
27
  const _r2 = i0.ɵɵgetCurrentView();
26
- i0.ɵɵelementStart(0, "lib-tld-notification-message", 14);
28
+ i0.ɵɵelementStart(0, "lib-tld-notification-message", 15);
27
29
  i0.ɵɵlistener("closeClicked", function LLMTextareaWithActionsComponent_lib_tld_notification_message_7_Template_lib_tld_notification_message_closeClicked_0_listener() { const message_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.closeMessage(message_r3)); });
28
30
  i0.ɵɵelementEnd();
29
31
  } if (rf & 2) {
30
32
  const message_r3 = ctx.$implicit;
31
33
  i0.ɵɵproperty("message", message_r3);
32
34
  } }
33
- function LLMTextareaWithActionsComponent_ng_container_8_mat_option_6_Template(rf, ctx) { if (rf & 1) {
34
- i0.ɵɵelementStart(0, "mat-option", 20);
35
+ function LLMTextareaWithActionsComponent_mat_form_field_8_mat_option_5_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelementStart(0, "mat-option", 19);
35
37
  i0.ɵɵtext(1);
36
38
  i0.ɵɵpipe(2, "uppercase");
37
39
  i0.ɵɵpipe(3, "translate");
38
40
  i0.ɵɵelementEnd();
39
41
  } if (rf & 2) {
40
- const style_r6 = ctx.$implicit;
41
- i0.ɵɵproperty("value", style_r6);
42
+ const useCase_r6 = ctx.$implicit;
43
+ i0.ɵɵproperty("value", useCase_r6);
42
44
  i0.ɵɵadvance();
43
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "LLM.REPHRASE_MODAL.WRITING_STYLES." + i0.ɵɵpipeBind1(2, 2, style_r6)), " ");
45
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "LLM.USE_CASES.USE_CASE." + i0.ɵɵpipeBind1(2, 2, useCase_r6)), " ");
44
46
  } }
45
- function LLMTextareaWithActionsComponent_ng_container_8_Template(rf, ctx) { if (rf & 1) {
47
+ function LLMTextareaWithActionsComponent_mat_form_field_8_Template(rf, ctx) { if (rf & 1) {
46
48
  const _r5 = i0.ɵɵgetCurrentView();
49
+ i0.ɵɵelementStart(0, "mat-form-field", 16)(1, "mat-label");
50
+ i0.ɵɵtext(2);
51
+ i0.ɵɵpipe(3, "translate");
52
+ i0.ɵɵelementEnd();
53
+ i0.ɵɵelementStart(4, "mat-select", 17);
54
+ i0.ɵɵtwoWayListener("ngModelChange", function LLMTextareaWithActionsComponent_mat_form_field_8_Template_mat_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r3.selectedUseCase, $event) || (ctx_r3.selectedUseCase = $event); return i0.ɵɵresetView($event); });
55
+ i0.ɵɵtemplate(5, LLMTextareaWithActionsComponent_mat_form_field_8_mat_option_5_Template, 4, 6, "mat-option", 18);
56
+ i0.ɵɵelementEnd()();
57
+ } if (rf & 2) {
58
+ const ctx_r3 = i0.ɵɵnextContext();
59
+ i0.ɵɵadvance(2);
60
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "LLM.USE_CASES_LABEL"));
61
+ i0.ɵɵadvance(2);
62
+ i0.ɵɵproperty("disabled", ctx_r3.isLoading);
63
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r3.selectedUseCase);
64
+ i0.ɵɵadvance();
65
+ i0.ɵɵproperty("ngForOf", ctx_r3.useCases);
66
+ } }
67
+ function LLMTextareaWithActionsComponent_ng_container_9_mat_option_6_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "mat-option", 19);
69
+ i0.ɵɵtext(1);
70
+ i0.ɵɵpipe(2, "uppercase");
71
+ i0.ɵɵpipe(3, "translate");
72
+ i0.ɵɵelementEnd();
73
+ } if (rf & 2) {
74
+ const style_r8 = ctx.$implicit;
75
+ i0.ɵɵproperty("value", style_r8);
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, "LLM.REPHRASE_MODAL.WRITING_STYLES." + i0.ɵɵpipeBind1(2, 2, style_r8)), " ");
78
+ } }
79
+ function LLMTextareaWithActionsComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {
80
+ const _r7 = i0.ɵɵgetCurrentView();
47
81
  i0.ɵɵelementContainerStart(0);
48
- i0.ɵɵelementStart(1, "mat-form-field", 15)(2, "mat-label");
82
+ i0.ɵɵelementStart(1, "mat-form-field", 16)(2, "mat-label");
49
83
  i0.ɵɵtext(3);
50
84
  i0.ɵɵpipe(4, "translate");
51
85
  i0.ɵɵelementEnd();
52
- i0.ɵɵelementStart(5, "mat-select", 16);
53
- i0.ɵɵlistener("selectionChange", function LLMTextareaWithActionsComponent_ng_container_8_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.checkRephrasedTextSaves($event)); });
54
- i0.ɵɵtemplate(6, LLMTextareaWithActionsComponent_ng_container_8_mat_option_6_Template, 4, 6, "mat-option", 17);
86
+ i0.ɵɵelementStart(5, "mat-select", 20);
87
+ i0.ɵɵlistener("selectionChange", function LLMTextareaWithActionsComponent_ng_container_9_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.checkRephrasedTextSaves($event)); });
88
+ i0.ɵɵtemplate(6, LLMTextareaWithActionsComponent_ng_container_9_mat_option_6_Template, 4, 6, "mat-option", 18);
55
89
  i0.ɵɵelementEnd()();
56
- i0.ɵɵelementStart(7, "p", 18);
90
+ i0.ɵɵelementStart(7, "p", 21);
57
91
  i0.ɵɵtext(8);
58
92
  i0.ɵɵpipe(9, "uppercase");
59
93
  i0.ɵɵpipe(10, "translate");
60
94
  i0.ɵɵpipe(11, "translate");
61
- i0.ɵɵelementStart(12, "span", 19);
95
+ i0.ɵɵelementStart(12, "span", 22);
62
96
  i0.ɵɵpipe(13, "uppercase");
63
97
  i0.ɵɵpipe(14, "translate");
64
98
  i0.ɵɵtext(15, " info ");
@@ -77,17 +111,17 @@ function LLMTextareaWithActionsComponent_ng_container_8_Template(rf, ctx) { if (
77
111
  i0.ɵɵadvance(4);
78
112
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(14, 17, "LLM.REPHRASE_MODAL.WRITING_STYLES.TOOLTIP_" + i0.ɵɵpipeBind1(13, 15, ctx_r3.selectedWritingStyle)));
79
113
  } }
80
- function LLMTextareaWithActionsComponent_div_11_Template(rf, ctx) { if (rf & 1) {
81
- i0.ɵɵelement(0, "div", 21);
114
+ function LLMTextareaWithActionsComponent_div_12_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelement(0, "div", 23);
82
116
  i0.ɵɵpipe(1, "translate");
83
117
  } if (rf & 2) {
84
118
  const ctx_r3 = i0.ɵɵnextContext();
85
119
  i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(1, 1, ctx_r3.localizationKey + "LIMIT", i0.ɵɵpureFunction2(4, _c1, ctx_r3.quotaLeft, ctx_r3.subscriptionUrl)), i0.ɵɵsanitizeHtml);
86
120
  } }
87
- function LLMTextareaWithActionsComponent_button_13_Template(rf, ctx) { if (rf & 1) {
88
- const _r7 = i0.ɵɵgetCurrentView();
89
- i0.ɵɵelementStart(0, "button", 22);
90
- i0.ɵɵlistener("click", function LLMTextareaWithActionsComponent_button_13_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.cancel()); });
121
+ function LLMTextareaWithActionsComponent_button_14_Template(rf, ctx) { if (rf & 1) {
122
+ const _r9 = i0.ɵɵgetCurrentView();
123
+ i0.ɵɵelementStart(0, "button", 24);
124
+ i0.ɵɵlistener("click", function LLMTextareaWithActionsComponent_button_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.cancel()); });
91
125
  i0.ɵɵtext(1);
92
126
  i0.ɵɵpipe(2, "translate");
93
127
  i0.ɵɵelementEnd();
@@ -96,8 +130,8 @@ function LLMTextareaWithActionsComponent_button_13_Template(rf, ctx) { if (rf &
96
130
  i0.ɵɵadvance();
97
131
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r3.localizationKey + "CANCEL"), " ");
98
132
  } }
99
- function LLMTextareaWithActionsComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "button", 23);
133
+ function LLMTextareaWithActionsComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
134
+ i0.ɵɵelementStart(0, "button", 25);
101
135
  i0.ɵɵtext(1);
102
136
  i0.ɵɵpipe(2, "translate");
103
137
  i0.ɵɵelementEnd();
@@ -107,7 +141,7 @@ function LLMTextareaWithActionsComponent_ng_template_14_Template(rf, ctx) { if (
107
141
  i0.ɵɵadvance();
108
142
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, ctx_r3.localizationKey + "CLOSE"), " ");
109
143
  } }
110
- function LLMTextareaWithActionsComponent_span_17_Template(rf, ctx) { if (rf & 1) {
144
+ function LLMTextareaWithActionsComponent_span_18_Template(rf, ctx) { if (rf & 1) {
111
145
  i0.ɵɵelementStart(0, "span");
112
146
  i0.ɵɵtext(1);
113
147
  i0.ɵɵpipe(2, "translate");
@@ -117,19 +151,20 @@ function LLMTextareaWithActionsComponent_span_17_Template(rf, ctx) { if (rf & 1)
117
151
  i0.ɵɵadvance();
118
152
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, !ctx_r3.isSummarized ? "LLM.SUMMARY_MODAL.ACTION" : "LLM.SUMMARY_MODAL.REGENERATE"), " ");
119
153
  } }
120
- function LLMTextareaWithActionsComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
154
+ function LLMTextareaWithActionsComponent_ng_template_19_Template(rf, ctx) { if (rf & 1) {
121
155
  i0.ɵɵtext(0);
122
156
  i0.ɵɵpipe(1, "translate");
123
157
  } if (rf & 2) {
124
158
  const ctx_r3 = i0.ɵɵnextContext();
125
159
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r3.localizationKey + "ACTION"), " ");
126
160
  } }
127
- function LLMTextareaWithActionsComponent_mat_spinner_20_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelement(0, "mat-spinner", 24);
161
+ function LLMTextareaWithActionsComponent_mat_spinner_21_Template(rf, ctx) { if (rf & 1) {
162
+ i0.ɵɵelement(0, "mat-spinner", 26);
129
163
  } if (rf & 2) {
130
164
  i0.ɵɵproperty("diameter", 20);
131
165
  } }
132
166
  export class LLMTextareaWithActionsComponent {
167
+ get showUseCase() { return this.data.showUseCase; }
133
168
  get isDisabled() {
134
169
  return this.isLoading || !this.initialText || this.quotaLeft < 1;
135
170
  }
@@ -140,13 +175,18 @@ export class LLMTextareaWithActionsComponent {
140
175
  this.selectedWritingStyle = LLMWritingStyle.GENERAL;
141
176
  this.editedText = '';
142
177
  this.manuallyEditedText = '';
178
+ this.selectedUseCase = LLMUseCase.General;
143
179
  this.savedRephrasings = [];
144
180
  this.llmActions = LLMActions;
145
181
  this.writingStyles = Object.values(LLMWritingStyle);
182
+ this.useCases = Object.values(LLMUseCase);
146
183
  this.messages = [];
147
184
  }
148
185
  ngOnInit() {
149
186
  this.setInitialText();
187
+ if (this.data.defaultUseCase) {
188
+ this.selectedUseCase = this.data.defaultUseCase;
189
+ }
150
190
  }
151
191
  closeMessage(msg) {
152
192
  const index = this.messages?.findIndex((message) => JSON.stringify(message) === JSON.stringify(msg));
@@ -249,8 +289,8 @@ export class LLMTextareaWithActionsComponent {
249
289
  text = text.substring(0, this.maxCharLength);
250
290
  }
251
291
  const method = this.llmActionType === LLMActions.REPHRASE
252
- ? this.llmService.rephrase({ text: text, language: this.data.language, style: this.selectedWritingStyle })
253
- : this.llmService.summarize({ text: text, language: this.data.language });
292
+ ? this.llmService.rephrase({ text: text, language: this.data.language, style: this.selectedWritingStyle, useCase: LLMUseCase.General })
293
+ : this.llmService.summarize({ text: text, language: this.data.language, useCase: this.selectedUseCase });
254
294
  return method
255
295
  .pipe(finalize(() => (this.isLoading = false)))
256
296
  .subscribe(this.getRequestCallback());
@@ -281,7 +321,7 @@ export class LLMTextareaWithActionsComponent {
281
321
  };
282
322
  }
283
323
  static { this.ɵfac = function LLMTextareaWithActionsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LLMTextareaWithActionsComponent)(i0.ɵɵdirectiveInject(i1.LLMService), i0.ɵɵdirectiveInject(i2.LLMHelperService), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); }; }
284
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LLMTextareaWithActionsComponent, selectors: [["lib-llm-textarea-with-actions"]], decls: 21, vars: 22, consts: [["closeButton", ""], ["rephraseAction", ""], ["mat-dialog-title", ""], ["mat-dialog-content", ""], [3, "message", "closeClicked", 4, "ngFor", "ngForOf"], [4, "ngIf"], [3, "textEditEvent", "copyEvent", "dislikeEvent", "text", "disabled", "actionButtonsDisabled"], ["mat-dialog-actions", "", 1, "llm-actions-wrapper"], [3, "innerHTML", 4, "ngIf"], [1, "llm-actions"], ["mat-button", "", "color", "accent", 3, "click", 4, "ngIf", "ngIfElse"], ["mat-flat-button", "", "color", "accent", 3, "click", "disabled"], [4, "ngIf", "ngIfElse"], ["color", "accent", 3, "diameter", 4, "ngIf"], [3, "closeClicked", "message"], ["color", "accent", "appearance", "outline", 1, "w-full", "llm-writing-style-select"], [3, "selectionChange", "disabled", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "llm-writing-style", "text-m-semi-bold"], ["matTooltipClass", "multiline-tooltip", "matTooltipPosition", "above", 1, "material-icons-outlined", "info-icon", 3, "matTooltip"], [3, "value"], [3, "innerHTML"], ["mat-button", "", "color", "accent", 3, "click"], ["mat-button", "", "color", "accent", 3, "mat-dialog-close"], ["color", "accent", 3, "diameter"]], template: function LLMTextareaWithActionsComponent_Template(rf, ctx) { if (rf & 1) {
324
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LLMTextareaWithActionsComponent, selectors: [["lib-llm-textarea-with-actions"]], decls: 22, vars: 23, consts: [["closeButton", ""], ["rephraseAction", ""], ["mat-dialog-title", ""], ["mat-dialog-content", ""], [3, "message", "closeClicked", 4, "ngFor", "ngForOf"], ["color", "accent", "class", "w-full llm-writing-style-select", "appearance", "outline", 4, "ngIf"], [4, "ngIf"], [3, "textEditEvent", "copyEvent", "dislikeEvent", "text", "disabled", "actionButtonsDisabled"], ["mat-dialog-actions", "", 1, "llm-actions-wrapper"], [3, "innerHTML", 4, "ngIf"], [1, "llm-actions"], ["mat-button", "", "color", "accent", 3, "click", 4, "ngIf", "ngIfElse"], ["mat-flat-button", "", "color", "accent", 3, "click", "disabled"], [4, "ngIf", "ngIfElse"], ["color", "accent", 3, "diameter", 4, "ngIf"], [3, "closeClicked", "message"], ["color", "accent", "appearance", "outline", 1, "w-full", "llm-writing-style-select"], [3, "ngModelChange", "disabled", "ngModel"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [3, "selectionChange", "disabled", "value"], [1, "llm-writing-style", "text-m-semi-bold"], ["matTooltipClass", "multiline-tooltip", "matTooltipPosition", "above", 1, "material-icons-outlined", "info-icon", 3, "matTooltip"], [3, "innerHTML"], ["mat-button", "", "color", "accent", 3, "click"], ["mat-button", "", "color", "accent", 3, "mat-dialog-close"], ["color", "accent", 3, "diameter"]], template: function LLMTextareaWithActionsComponent_Template(rf, ctx) { if (rf & 1) {
285
325
  const _r1 = i0.ɵɵgetCurrentView();
286
326
  i0.ɵɵelementStart(0, "h1", 2);
287
327
  i0.ɵɵtext(1);
@@ -291,28 +331,30 @@ export class LLMTextareaWithActionsComponent {
291
331
  i0.ɵɵtext(5);
292
332
  i0.ɵɵpipe(6, "translate");
293
333
  i0.ɵɵelementEnd();
294
- i0.ɵɵtemplate(7, LLMTextareaWithActionsComponent_lib_tld_notification_message_7_Template, 1, 1, "lib-tld-notification-message", 4)(8, LLMTextareaWithActionsComponent_ng_container_8_Template, 16, 21, "ng-container", 5);
295
- i0.ɵɵelementStart(9, "lib-llm-textarea", 6);
296
- i0.ɵɵlistener("textEditEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_textEditEvent_9_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.textEditEvent($event)); })("copyEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_copyEvent_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.copyPlausibleEvent()); })("dislikeEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_dislikeEvent_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.dislikePlausibleEvent()); });
334
+ i0.ɵɵtemplate(7, LLMTextareaWithActionsComponent_lib_tld_notification_message_7_Template, 1, 1, "lib-tld-notification-message", 4)(8, LLMTextareaWithActionsComponent_mat_form_field_8_Template, 6, 6, "mat-form-field", 5)(9, LLMTextareaWithActionsComponent_ng_container_9_Template, 16, 21, "ng-container", 6);
335
+ i0.ɵɵelementStart(10, "lib-llm-textarea", 7);
336
+ i0.ɵɵlistener("textEditEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_textEditEvent_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.textEditEvent($event)); })("copyEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_copyEvent_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.copyPlausibleEvent()); })("dislikeEvent", function LLMTextareaWithActionsComponent_Template_lib_llm_textarea_dislikeEvent_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.dislikePlausibleEvent()); });
297
337
  i0.ɵɵelementEnd()();
298
- i0.ɵɵelementStart(10, "div", 7);
299
- i0.ɵɵtemplate(11, LLMTextareaWithActionsComponent_div_11_Template, 2, 7, "div", 8);
300
- i0.ɵɵelementStart(12, "div", 9);
301
- i0.ɵɵtemplate(13, LLMTextareaWithActionsComponent_button_13_Template, 3, 3, "button", 10)(14, LLMTextareaWithActionsComponent_ng_template_14_Template, 3, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
302
- i0.ɵɵelementStart(16, "button", 11);
303
- i0.ɵɵlistener("click", function LLMTextareaWithActionsComponent_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.getEditedText()); });
304
- i0.ɵɵtemplate(17, LLMTextareaWithActionsComponent_span_17_Template, 3, 3, "span", 12)(18, LLMTextareaWithActionsComponent_ng_template_18_Template, 2, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(20, LLMTextareaWithActionsComponent_mat_spinner_20_Template, 1, 1, "mat-spinner", 13);
338
+ i0.ɵɵelementStart(11, "div", 8);
339
+ i0.ɵɵtemplate(12, LLMTextareaWithActionsComponent_div_12_Template, 2, 7, "div", 9);
340
+ i0.ɵɵelementStart(13, "div", 10);
341
+ i0.ɵɵtemplate(14, LLMTextareaWithActionsComponent_button_14_Template, 3, 3, "button", 11)(15, LLMTextareaWithActionsComponent_ng_template_15_Template, 3, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
342
+ i0.ɵɵelementStart(17, "button", 12);
343
+ i0.ɵɵlistener("click", function LLMTextareaWithActionsComponent_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.getEditedText()); });
344
+ i0.ɵɵtemplate(18, LLMTextareaWithActionsComponent_span_18_Template, 3, 3, "span", 13)(19, LLMTextareaWithActionsComponent_ng_template_19_Template, 2, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(21, LLMTextareaWithActionsComponent_mat_spinner_21_Template, 1, 1, "mat-spinner", 14);
305
345
  i0.ɵɵelementEnd()()();
306
346
  } if (rf & 2) {
307
- const closeButton_r8 = i0.ɵɵreference(15);
308
- const rephraseAction_r9 = i0.ɵɵreference(19);
347
+ const closeButton_r10 = i0.ɵɵreference(16);
348
+ const rephraseAction_r11 = i0.ɵɵreference(20);
309
349
  i0.ɵɵadvance();
310
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 18, ctx.localizationKey + "TITLE"));
350
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 19, ctx.localizationKey + "TITLE"));
311
351
  i0.ɵɵadvance(4);
312
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 20, ctx.localizationKey + "DESCRIPTION"));
352
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 21, ctx.localizationKey + "DESCRIPTION"));
313
353
  i0.ɵɵadvance(2);
314
354
  i0.ɵɵproperty("ngForOf", ctx.messages);
315
355
  i0.ɵɵadvance();
356
+ i0.ɵɵproperty("ngIf", ctx.showUseCase);
357
+ i0.ɵɵadvance();
316
358
  i0.ɵɵproperty("ngIf", ctx.llmActionType === ctx.llmActions.REPHRASE);
317
359
  i0.ɵɵadvance();
318
360
  i0.ɵɵclassProp("rephrase", ctx.llmActionType === ctx.llmActions.REPHRASE);
@@ -322,21 +364,21 @@ export class LLMTextareaWithActionsComponent {
322
364
  i0.ɵɵadvance();
323
365
  i0.ɵɵclassProp("w-full", !ctx.remainingQuotaMessageVisible);
324
366
  i0.ɵɵadvance();
325
- i0.ɵɵproperty("ngIf", ctx.isLoading)("ngIfElse", closeButton_r8);
367
+ i0.ɵɵproperty("ngIf", ctx.isLoading)("ngIfElse", closeButton_r10);
326
368
  i0.ɵɵadvance(3);
327
369
  i0.ɵɵproperty("disabled", ctx.isDisabled);
328
370
  i0.ɵɵadvance();
329
- i0.ɵɵproperty("ngIf", ctx.llmActionType === ctx.llmActions.SUMMARY)("ngIfElse", rephraseAction_r9);
371
+ i0.ɵɵproperty("ngIf", ctx.llmActionType === ctx.llmActions.SUMMARY)("ngIfElse", rephraseAction_r11);
330
372
  i0.ɵɵadvance(3);
331
373
  i0.ɵɵproperty("ngIf", ctx.isLoading);
332
- } }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatButton, i5.MatDialogClose, i5.MatDialogTitle, i5.MatDialogActions, i5.MatDialogContent, i6.MatFormField, i6.MatLabel, i7.MatSelect, i8.MatOption, i9.NotificationMessageComponent, i10.MatTooltip, i11.MatProgressSpinner, i12.LLMTextareaComponent, i3.UpperCasePipe, i13.TranslatePipe], styles: [".info-icon[_ngcontent-%COMP%]{font-size:1rem;margin-left:5px}[_nghost-%COMP%] .message-body{margin:0 2.25rem 0 0!important;font-size:14px}[_nghost-%COMP%] .notification-message-container{margin:0 0 16px;padding:.9em 1em!important;align-items:center!important}[_nghost-%COMP%] .text-container{margin-right:0!important}[_nghost-%COMP%] tld-close-button{top:1px!important} .multiline-tooltip{white-space:pre;min-width:fit-content} .multiline-tooltip .mdc-tooltip__surface{max-width:none!important}[_nghost-%COMP%] .llm-textarea{min-height:240px!important}[_nghost-%COMP%] .rephrase .llm-textarea{min-height:100px!important}[_nghost-%COMP%] .desktop .llm-textarea{min-height:460px!important}[_nghost-%COMP%] .rephrase .desktop .llm-textarea{min-height:330px!important}.llm-writing-style-select[_ngcontent-%COMP%]{margin-top:1.25rem}.llm-writing-style[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:.25rem}.llm-actions-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin:0 1rem .5rem}.llm-actions[_ngcontent-%COMP%]{display:flex;justify-content:end}.w-full[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] .mdc-button__label{display:flex!important;align-items:center!important}mat-spinner[_ngcontent-%COMP%]{margin-left:.5rem}"] }); }
374
+ } }, dependencies: [i3.NgForOf, i3.NgIf, i4.MatButton, i5.MatDialogClose, i5.MatDialogTitle, i5.MatDialogActions, i5.MatDialogContent, i6.NgControlStatus, i6.NgModel, i7.MatFormField, i7.MatLabel, i8.MatSelect, i9.MatOption, i10.NotificationMessageComponent, i11.MatTooltip, i12.MatProgressSpinner, i13.LLMTextareaComponent, i3.UpperCasePipe, i14.TranslatePipe], styles: [".info-icon[_ngcontent-%COMP%]{font-size:1rem;margin-left:5px}[_nghost-%COMP%] .message-body{margin:0 2.25rem 0 0!important;font-size:14px}[_nghost-%COMP%] .notification-message-container{margin:0 0 16px;padding:.9em 1em!important;align-items:center!important}[_nghost-%COMP%] .text-container{margin-right:0!important}[_nghost-%COMP%] tld-close-button{top:1px!important} .multiline-tooltip{white-space:pre;min-width:fit-content} .multiline-tooltip .mdc-tooltip__surface{max-width:none!important}[_nghost-%COMP%] .llm-textarea{min-height:240px!important}[_nghost-%COMP%] .rephrase .llm-textarea{min-height:100px!important}[_nghost-%COMP%] .desktop .llm-textarea{min-height:460px!important}[_nghost-%COMP%] .rephrase .desktop .llm-textarea{min-height:330px!important}.llm-writing-style-select[_ngcontent-%COMP%]{margin-top:1.25rem}.llm-writing-style[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:.25rem}.llm-actions-wrapper[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin:0 1rem .5rem}.llm-actions[_ngcontent-%COMP%]{display:flex;justify-content:end}.w-full[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] .mdc-button__label{display:flex!important;align-items:center!important}mat-spinner[_ngcontent-%COMP%]{margin-left:.5rem}"] }); }
333
375
  }
334
376
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LLMTextareaWithActionsComponent, [{
335
377
  type: Component,
336
- args: [{ selector: 'lib-llm-textarea-with-actions', template: "<h1 mat-dialog-title>{{ localizationKey + \"TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p>{{ localizationKey + \"DESCRIPTION\" | translate }}</p>\r\n\r\n <lib-tld-notification-message *ngFor=\"let message of messages\" [message]=\"message\" (closeClicked)=\"closeMessage(message)\"></lib-tld-notification-message>\r\n\r\n <ng-container *ngIf=\"llmActionType === llmActions.REPHRASE\">\r\n <mat-form-field color=\"accent\" class=\"w-full llm-writing-style-select\" appearance=\"outline\">\r\n <mat-label>{{ 'LLM.REPHRASE_MODAL.WRITING_STYLES.TITLE' | translate }}</mat-label>\r\n <mat-select [disabled]=\"isLoading\" (selectionChange)=\"checkRephrasedTextSaves($event)\" [value]=\"selectedWritingStyle\">\r\n <mat-option *ngFor=\"let style of writingStyles\" [value]=\"style\">\r\n {{ 'LLM.REPHRASE_MODAL.WRITING_STYLES.' + (style | uppercase) | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n \r\n <p class=\"llm-writing-style text-m-semi-bold\">{{\r\n \"LLM.REPHRASE_MODAL.WRITING_STYLES.SPECIFIC_STYLE\" | translate : \r\n { style: 'LLM.REPHRASE_MODAL.WRITING_STYLES.' + (selectedWritingStyle | uppercase) | translate } \r\n }}\r\n <span\r\n class=\"material-icons-outlined info-icon\"\r\n matTooltipClass=\"multiline-tooltip\"\r\n matTooltipPosition=\"above\" \r\n [matTooltip]=\"'LLM.REPHRASE_MODAL.WRITING_STYLES.TOOLTIP_' + (selectedWritingStyle | uppercase) | translate\" \r\n >\r\n info\r\n </span>\r\n </p>\r\n </ng-container>\r\n\r\n <lib-llm-textarea [class.rephrase]=\"llmActionType === llmActions.REPHRASE\" [text]=\"editedText !== '' ? editedText : initialText\" [disabled]=\"isLoading || !quotaLeft\" [actionButtonsDisabled]=\"!isEdited\" (textEditEvent)=\"textEditEvent($event)\" (copyEvent)=\"copyPlausibleEvent()\" (dislikeEvent)=\"dislikePlausibleEvent()\"></lib-llm-textarea>\r\n</div>\r\n<div class=\"llm-actions-wrapper\" mat-dialog-actions>\r\n <div *ngIf=\"remainingQuotaMessageVisible\" [innerHTML]=\"localizationKey + 'LIMIT' | translate: { limit: quotaLeft, subscriptionUrl: subscriptionUrl }\"></div>\r\n\r\n <div [class.w-full]=\"!remainingQuotaMessageVisible\" class=\"llm-actions\">\r\n <button *ngIf=\"isLoading; else closeButton\" mat-button color=\"accent\" (click)=\"cancel()\">\r\n {{ localizationKey + \"CANCEL\" | translate }}\r\n </button>\r\n\r\n <ng-template #closeButton>\r\n <button mat-button color=\"accent\" [mat-dialog-close]=\"null\">\r\n {{ localizationKey + \"CLOSE\" | translate }}\r\n </button>\r\n </ng-template>\r\n \r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"getEditedText()\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <span *ngIf=\"llmActionType === llmActions.SUMMARY; else rephraseAction\">\r\n {{\r\n (!isSummarized\r\n ? \"LLM.SUMMARY_MODAL.ACTION\"\r\n : \"LLM.SUMMARY_MODAL.REGENERATE\"\r\n ) | translate\r\n }}\r\n </span>\r\n\r\n <ng-template #rephraseAction>\r\n {{ localizationKey + \"ACTION\" | translate }}\r\n </ng-template>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\" color=\"accent\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".info-icon{font-size:1rem;margin-left:5px}:host ::ng-deep .message-body{margin:0 2.25rem 0 0!important;font-size:14px}:host ::ng-deep .notification-message-container{margin:0 0 16px;padding:.9em 1em!important;align-items:center!important}:host ::ng-deep .text-container{margin-right:0!important}:host ::ng-deep tld-close-button{top:1px!important}::ng-deep .multiline-tooltip{white-space:pre;min-width:fit-content}::ng-deep .multiline-tooltip .mdc-tooltip__surface{max-width:none!important}:host ::ng-deep .llm-textarea{min-height:240px!important}:host ::ng-deep .rephrase .llm-textarea{min-height:100px!important}:host ::ng-deep .desktop .llm-textarea{min-height:460px!important}:host ::ng-deep .rephrase .desktop .llm-textarea{min-height:330px!important}.llm-writing-style-select{margin-top:1.25rem}.llm-writing-style{display:flex;align-items:center;margin-bottom:.25rem}.llm-actions-wrapper{display:flex;justify-content:space-between;margin:0 1rem .5rem}.llm-actions{display:flex;justify-content:end}.w-full{width:100%}:host ::ng-deep .mdc-button__label{display:flex!important;align-items:center!important}mat-spinner{margin-left:.5rem}\n"] }]
378
+ args: [{ selector: 'lib-llm-textarea-with-actions', template: "<h1 mat-dialog-title>{{ localizationKey + \"TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p>{{ localizationKey + \"DESCRIPTION\" | translate }}</p>\r\n\r\n <lib-tld-notification-message *ngFor=\"let message of messages\" [message]=\"message\" (closeClicked)=\"closeMessage(message)\"></lib-tld-notification-message>\r\n\r\n <mat-form-field *ngIf=\"showUseCase\" color=\"accent\" class=\"w-full llm-writing-style-select\" appearance=\"outline\">\r\n <mat-label>{{ 'LLM.USE_CASES_LABEL' | translate }}</mat-label>\r\n <mat-select [disabled]=\"isLoading\" [(ngModel)]=\"selectedUseCase\">\r\n <mat-option *ngFor=\"let useCase of useCases\" [value]=\"useCase\">\r\n {{ 'LLM.USE_CASES.USE_CASE.' + (useCase | uppercase) | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <ng-container *ngIf=\"llmActionType === llmActions.REPHRASE\">\r\n <mat-form-field color=\"accent\" class=\"w-full llm-writing-style-select\" appearance=\"outline\">\r\n <mat-label>{{ 'LLM.REPHRASE_MODAL.WRITING_STYLES.TITLE' | translate }}</mat-label>\r\n <mat-select [disabled]=\"isLoading\" (selectionChange)=\"checkRephrasedTextSaves($event)\" [value]=\"selectedWritingStyle\">\r\n <mat-option *ngFor=\"let style of writingStyles\" [value]=\"style\">\r\n {{ 'LLM.REPHRASE_MODAL.WRITING_STYLES.' + (style | uppercase) | translate }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n\r\n <p class=\"llm-writing-style text-m-semi-bold\">{{\r\n \"LLM.REPHRASE_MODAL.WRITING_STYLES.SPECIFIC_STYLE\" | translate :\r\n { style: 'LLM.REPHRASE_MODAL.WRITING_STYLES.' + (selectedWritingStyle | uppercase) | translate }\r\n }}\r\n <span\r\n class=\"material-icons-outlined info-icon\"\r\n matTooltipClass=\"multiline-tooltip\"\r\n matTooltipPosition=\"above\"\r\n [matTooltip]=\"'LLM.REPHRASE_MODAL.WRITING_STYLES.TOOLTIP_' + (selectedWritingStyle | uppercase) | translate\"\r\n >\r\n info\r\n </span>\r\n </p>\r\n </ng-container>\r\n\r\n <lib-llm-textarea [class.rephrase]=\"llmActionType === llmActions.REPHRASE\" [text]=\"editedText !== '' ? editedText : initialText\" [disabled]=\"isLoading || !quotaLeft\" [actionButtonsDisabled]=\"!isEdited\" (textEditEvent)=\"textEditEvent($event)\" (copyEvent)=\"copyPlausibleEvent()\" (dislikeEvent)=\"dislikePlausibleEvent()\"></lib-llm-textarea>\r\n</div>\r\n<div class=\"llm-actions-wrapper\" mat-dialog-actions>\r\n <div *ngIf=\"remainingQuotaMessageVisible\" [innerHTML]=\"localizationKey + 'LIMIT' | translate: { limit: quotaLeft, subscriptionUrl: subscriptionUrl }\"></div>\r\n\r\n <div [class.w-full]=\"!remainingQuotaMessageVisible\" class=\"llm-actions\">\r\n <button *ngIf=\"isLoading; else closeButton\" mat-button color=\"accent\" (click)=\"cancel()\">\r\n {{ localizationKey + \"CANCEL\" | translate }}\r\n </button>\r\n\r\n <ng-template #closeButton>\r\n <button mat-button color=\"accent\" [mat-dialog-close]=\"null\">\r\n {{ localizationKey + \"CLOSE\" | translate }}\r\n </button>\r\n </ng-template>\r\n\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"getEditedText()\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <span *ngIf=\"llmActionType === llmActions.SUMMARY; else rephraseAction\">\r\n {{\r\n (!isSummarized\r\n ? \"LLM.SUMMARY_MODAL.ACTION\"\r\n : \"LLM.SUMMARY_MODAL.REGENERATE\"\r\n ) | translate\r\n }}\r\n </span>\r\n\r\n <ng-template #rephraseAction>\r\n {{ localizationKey + \"ACTION\" | translate }}\r\n </ng-template>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\" color=\"accent\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".info-icon{font-size:1rem;margin-left:5px}:host ::ng-deep .message-body{margin:0 2.25rem 0 0!important;font-size:14px}:host ::ng-deep .notification-message-container{margin:0 0 16px;padding:.9em 1em!important;align-items:center!important}:host ::ng-deep .text-container{margin-right:0!important}:host ::ng-deep tld-close-button{top:1px!important}::ng-deep .multiline-tooltip{white-space:pre;min-width:fit-content}::ng-deep .multiline-tooltip .mdc-tooltip__surface{max-width:none!important}:host ::ng-deep .llm-textarea{min-height:240px!important}:host ::ng-deep .rephrase .llm-textarea{min-height:100px!important}:host ::ng-deep .desktop .llm-textarea{min-height:460px!important}:host ::ng-deep .rephrase .desktop .llm-textarea{min-height:330px!important}.llm-writing-style-select{margin-top:1.25rem}.llm-writing-style{display:flex;align-items:center;margin-bottom:.25rem}.llm-actions-wrapper{display:flex;justify-content:space-between;margin:0 1rem .5rem}.llm-actions{display:flex;justify-content:end}.w-full{width:100%}:host ::ng-deep .mdc-button__label{display:flex!important;align-items:center!important}mat-spinner{margin-left:.5rem}\n"] }]
337
379
  }], () => [{ type: i1.LLMService }, { type: i2.LLMHelperService }, { type: undefined, decorators: [{
338
380
  type: Inject,
339
381
  args: [MAT_DIALOG_DATA]
340
382
  }] }], null); })();
341
383
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LLMTextareaWithActionsComponent, { className: "LLMTextareaWithActionsComponent", filePath: "lib\\llm\\components\\llm-textarea-with-actions\\llm-textarea-with-actions.component.ts", lineNumber: 20 }); })();
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbGxtL2NvbXBvbmVudHMvbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy9sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vY29tcG9uZW50cy9sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zL2xsbS10ZXh0YXJlYS13aXRoLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ05wRSx3REFBMEg7SUFBdkMscVJBQWdCLCtCQUFxQixLQUFDO0lBQUMsaUJBQStCOzs7SUFBMUYsb0NBQW1COzs7SUFNNUUsc0NBQWdFO0lBQzlELFlBQ0Y7OztJQUFBLGlCQUFhOzs7SUFGbUMsZ0NBQWU7SUFDN0QsY0FDRjtJQURFLDRIQUNGOzs7O0lBTk4sNkJBQTREO0lBRXhELEFBREYsMENBQTRGLGdCQUMvRTtJQUFBLFlBQTJEOztJQUFBLGlC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LGNBQTJDO1lBQTNDLDBFQUEyQztZQUUzRCxlQUFpRDtZQUFqRCxnRkFBaUQ7WUFFRixlQUFXO1lBQVgsc0NBQVc7WUFFOUMsY0FBMkM7WUFBM0Msb0VBQTJDO1lBeUJ4QyxjQUF3RDtZQUF4RCx5RUFBd0Q7WUFBNEYsQUFBckMsQUFBdEQsK0VBQXFELDZDQUFxQyx3Q0FBb0M7WUFHbk0sZUFBa0M7WUFBbEMsdURBQWtDO1lBRW5DLGNBQThDO1lBQTlDLDJEQUE4QztZQUN4QyxjQUFpQjtZQUFBLEFBQWpCLG9DQUFpQiw0QkFBZ0I7WUFjeEMsZUFBdUI7WUFBdkIseUNBQXVCO1lBRWhCLGNBQTRDO1lBQUEsQUFBNUMsbUVBQTRDLCtCQUFtQjtZQVl4RCxlQUFlO1lBQWYsb0NBQWU7OztpRkQ5Q3RCLCtCQUErQjtjQUwzQyxTQUFTOzJCQUNFLCtCQUErQjs7c0JBNEN0QyxNQUFNO3VCQUFDLGVBQWU7O2tGQXhDZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVSUk9SX0NPREVTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL25vdGlmaWNhdGlvbi1tZXNzYWdlJztcclxuaW1wb3J0IHsgUGxhdXNpYmxlSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vcGxhdXNpYmxlJztcclxuaW1wb3J0IHsgTExNQWN0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0tYWN0aW9ucy5lbnVtJztcclxuaW1wb3J0IHsgTExNRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IExMTVdyaXRpbmdTdHlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0td3JpdGluZy1zdHlsZS5lbnVtJztcclxuaW1wb3J0IHsgTExNSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xsbS1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExMTVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMTE1UZXh0YXJlYVdpdGhBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmchOiBib29sZWFuO1xyXG4gIGlzU3VtbWFyaXplZCE6IGJvb2xlYW47XHJcbiAgaXNFZGl0ZWQhOiBib29sZWFuO1xyXG4gIHJlbWFpbmluZ1F1b3RhTWVzc2FnZVZpc2libGUhOiBib29sZWFuO1xyXG4gIHF1b3RhTGVmdCE6IG51bWJlcjtcclxuICBtYXhDaGFyTGVuZ3RoITogbnVtYmVyO1xyXG4gIHN1YnNjcmlwdGlvblVybCE6IHN0cmluZztcclxuICBwcmV2aW91c1dyaXRpbmdTdHlsZSE6IExMTVdyaXRpbmdTdHlsZTtcclxuICBzZWxlY3RlZFdyaXRpbmdTdHlsZSA9IExMTVdyaXRpbmdTdHlsZS5HRU5FUkFMO1xyXG5cclxuICByZWFjaGVkUXVvdGFNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuICBleGNlZWRlZExpbWl0TWVzc2FnZSE6IE5vdGlmaWNhdGlvbk1lc3NhZ2U7XHJcbiAgcmVxdWVzdFRpbWVvdXRNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuICBkZWZhdWx0RXJyb3JNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuXHJcbiAgc3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBpbml0aWFsVGV4dCE6IHN0cmluZztcclxuICBlZGl0ZWRUZXh0ID0gJyc7XHJcbiAgbWFudWFsbHlFZGl0ZWRUZXh0ID0gJyc7XHJcblxyXG4gIGxvY2FsaXphdGlvbktleSE6IHN0cmluZztcclxuXHJcbiAgbGxtQWN0aW9uVHlwZSE6IExMTUFjdGlvbnM7XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSZXBocmFzaW5nczogeyBzdHlsZTogTExNV3JpdGluZ1N0eWxlLCB0ZXh0OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gIHJlYWRvbmx5IGxsbUFjdGlvbnMgPSBMTE1BY3Rpb25zO1xyXG4gIHJlYWRvbmx5IHdyaXRpbmdTdHlsZXMgPSBPYmplY3QudmFsdWVzKExMTVdyaXRpbmdTdHlsZSk7XHJcblxyXG4gIHJlYWRvbmx5IG1lc3NhZ2VzOiBOb3RpZmljYXRpb25NZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgZ2V0IGlzRGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgfHwgIXRoaXMuaW5pdGlhbFRleHQgfHwgdGhpcy5xdW90YUxlZnQgPCAxO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxsbVNlcnZpY2U6IExMTVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxsbUhlbHBlclNlcnZpY2U6IExMTUhlbHBlclNlcnZpY2UsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBMTE1EYXRhXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxUZXh0KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2xvc2VNZXNzYWdlKG1zZzogTm90aWZpY2F0aW9uTWVzc2FnZSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm1lc3NhZ2VzPy5maW5kSW5kZXgoKG1lc3NhZ2UpID0+IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpID09PSBKU09OLnN0cmluZ2lmeShtc2cpKTtcclxuXHJcbiAgICBpZiAoaW5kZXggfHwgaW5kZXggPT09IDApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tSZXBocmFzZWRUZXh0U2F2ZXMoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkV3JpdGluZ1N0eWxlKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNXcml0aW5nU3R5bGUgPSB0aGlzLnNlbGVjdGVkV3JpdGluZ1N0eWxlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkV3JpdGluZ1N0eWxlID0gZXZlbnQudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRXcml0aW5nU3R5bGVTYXZlID0gdGhpcy5zYXZlZFJlcGhyYXNpbmdzLmZpbmQoKHJlcGhyYXNpbmcpID0+IHJlcGhyYXNpbmcuc3R5bGUgPT09IHRoaXMuc2VsZWN0ZWRXcml0aW5nU3R5bGUpO1xyXG4gICAgY29uc3QgcHJldmlvdXNXcml0aW5nU3R5bGVTYXZlID0gdGhpcy5zYXZlZFJlcGhyYXNpbmdzLmZpbmQoKHNhdmUpID0+IHNhdmUuc3R5bGUgPT09IHRoaXMucHJldmlvdXNXcml0aW5nU3R5bGUpO1xyXG5cclxuICAgIGlmIChwcmV2aW91c1dyaXRpbmdTdHlsZVNhdmUpIHtcclxuICAgICAgcHJldmlvdXNXcml0aW5nU3R5bGVTYXZlLnRleHQgPSB0aGlzLmVkaXRlZFRleHQgIT09ICcnID8gdGhpcy5lZGl0ZWRUZXh0IDogdGhpcy5pbml0aWFsVGV4dDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2ZWRSZXBocmFzaW5ncy5wdXNoKHsgc3R5bGU6IHRoaXMucHJldmlvdXNXcml0aW5nU3R5bGUsIHRleHQ6IHRoaXMuZWRpdGVkVGV4dCAhPT0gJycgPyB0aGlzLmVkaXRlZFRleHQgOiB0aGlzLmluaXRpYWxUZXh0IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdGVkVGV4dCA9IHNlbGVjdGVkV3JpdGluZ1N0eWxlU2F2ZT8udGV4dCA/PyB0aGlzLmluaXRpYWxUZXh0O1xyXG4gICAgdGhpcy5tYW51YWxseUVkaXRlZFRleHQgPSAnJztcclxuXHJcbiAgICB0aGlzLmNoZWNrVGV4dExpbWl0KCk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0ZWRUZXh0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmxsbUFjdGlvblR5cGUgPT09IExMTUFjdGlvbnMuUkVQSFJBU0UpIHtcclxuICAgICAgdGhpcy53cml0aW5nU3R5bGVQbGF1c2libGVFdmVudCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdW1tYXJ5UGxhdXNpYmxlRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0UmVxdWVzdCgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHRleHRFZGl0RXZlbnQodGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm1hbnVhbGx5RWRpdGVkVGV4dCA9IHRleHQ7XHJcbiAgICB0aGlzLmluaXRpYWxUZXh0ID0gdGV4dDtcclxuICAgIHRoaXMuZWRpdGVkVGV4dCA9ICcnO1xyXG5cclxuICAgIHRoaXMuY2hlY2tUZXh0TGltaXQoKTtcclxuICB9XHJcblxyXG4gIGNvcHlQbGF1c2libGVFdmVudCgpOiB2b2lkIHtcclxuICAgIFBsYXVzaWJsZUhlbHBlci5jdXN0b21FdmVudCh0aGlzLmxsbUFjdGlvblR5cGUudG9Mb3dlckNhc2UoKSwgeyBhY3Rpb246ICdjb3B5JyB9KTtcclxuICB9XHJcblxyXG4gIGRpc2xpa2VQbGF1c2libGVFdmVudCgpOiB2b2lkIHtcclxuICAgIFBsYXVzaWJsZUhlbHBlci5jdXN0b21FdmVudCh0aGlzLmxsbUFjdGlvblR5cGUudG9Mb3dlckNhc2UoKSwgeyBhY3Rpb246ICdkaXNsaWtlJyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdGlhbFRleHQoKSB7XHJcbiAgICB0aGlzLmRhdGEudGV4dC5zdWJzY3JpYmUoKHRleHQpID0+IHtcclxuICAgICAgdGhpcy5pbml0aWFsVGV4dCA9IHRleHQ7XHJcbiAgICAgIHRoaXMubGxtQWN0aW9uVHlwZSA9IHRoaXMuZGF0YS5hY3Rpb247XHJcbiAgICAgIHRoaXMubG9jYWxpemF0aW9uS2V5ID0gYExMTS4ke3RoaXMubGxtQWN0aW9uVHlwZX1fTU9EQUwuYFxyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvblVybCA9IHRoaXMubGxtSGVscGVyU2VydmljZS5sbG1Db25maWd1cmF0aW9uLnN1YnNjcmlwdGlvblVybDtcclxuICAgICAgdGhpcy5tYXhDaGFyTGVuZ3RoID0gdGhpcy5sbG1IZWxwZXJTZXJ2aWNlLmxsbUNvbmZpZ3VyYXRpb24ubWF4Q2hhckxlbmd0aDtcclxuXHJcbiAgICAgIHRoaXMucmVmcmVzaFF1b3RhKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RleHRMaW1pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5tYXhDaGFyTGVuZ3RoO1xyXG4gICAgY29uc3QgdGV4dHMgPSBbdGhpcy5pbml0aWFsVGV4dCwgdGhpcy5tYW51YWxseUVkaXRlZFRleHQsIHRoaXMuZWRpdGVkVGV4dF07XHJcbiAgICBjb25zdCBsb25nZXN0VGV4dCA9IHRoaXMuZWRpdGVkVGV4dCAmJiAhdGhpcy5tYW51YWxseUVkaXRlZFRleHQgPyB0aGlzLmVkaXRlZFRleHQgOiB0ZXh0cy5yZWR1Y2UoKGEsIGIpID0+IGEubGVuZ3RoID4gYi5sZW5ndGggPyBhIDogYik7XHJcblxyXG4gICAgaWYgKGxvbmdlc3RUZXh0Lmxlbmd0aCA+IGxpbWl0KSB7XHJcbiAgICAgIGlmICh0aGlzLmV4Y2VlZGVkTGltaXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1lc3NhZ2UodGhpcy5leGNlZWRlZExpbWl0TWVzc2FnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZXhjZWVkZWRMaW1pdE1lc3NhZ2UgPSB0aGlzLmxsbUhlbHBlclNlcnZpY2UuZ2V0RXhjZWVkZWRMaW1pdE1lc3NhZ2UobG9uZ2VzdFRleHQubGVuZ3RoKTtcclxuICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHRoaXMuZXhjZWVkZWRMaW1pdE1lc3NhZ2UpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlTWVzc2FnZSh0aGlzLmV4Y2VlZGVkTGltaXRNZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgd3JpdGluZ1N0eWxlUGxhdXNpYmxlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBQbGF1c2libGVIZWxwZXIuY3VzdG9tRXZlbnQodGhpcy5sbG1BY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCksIHsgd3JpdGluZ1N0eWxlOiB0aGlzLnNlbGVjdGVkV3JpdGluZ1N0eWxlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdW1tYXJ5UGxhdXNpYmxlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBQbGF1c2libGVIZWxwZXIuY3VzdG9tRXZlbnQodGhpcy5sbG1BY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCksIHsgYWN0aW9uOiAnc3VtbWFyeScgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hRdW90YShkZWNyZWFzZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMubGxtSGVscGVyU2VydmljZS5nZXRSZW1haW5pbmdRdW90YShkZWNyZWFzZSkuc3Vic2NyaWJlKChyZW1haW5pbmdRdW90YSkgPT4ge1xyXG4gICAgICB0aGlzLnF1b3RhTGVmdCA9IHJlbWFpbmluZ1F1b3RhO1xyXG4gICAgICB0aGlzLnNldFF1b3RhTWVzc2FnZSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UXVvdGFNZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVvdGFMZWZ0IDw9IHRoaXMubGxtSGVscGVyU2VydmljZS50cmlhbFJlcXVlc3RDb3VudCkge1xyXG4gICAgICB0aGlzLnJlbWFpbmluZ1F1b3RhTWVzc2FnZVZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnF1b3RhTGVmdCA8IDEpIHtcclxuICAgICAgdGhpcy5yZWFjaGVkUXVvdGFNZXNzYWdlID0gdGhpcy5sbG1IZWxwZXJTZXJ2aWNlLmdldFJlYWNoZWRRdW90YU1lc3NhZ2UoKTtcclxuICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHRoaXMucmVhY2hlZFF1b3RhTWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFJlcXVlc3QoKTogU3Vic2NyaXB0aW9uIHtcclxuICAgIGxldCB0ZXh0ID1cclxuICAgICAgdGhpcy5tYW51YWxseUVkaXRlZFRleHQgIT09ICcnXHJcbiAgICAgICAgPyB0aGlzLm1hbnVhbGx5RWRpdGVkVGV4dFxyXG4gICAgICAgIDogdGhpcy5pbml0aWFsVGV4dDtcclxuXHJcbiAgICBpZiAodGV4dC5sZW5ndGggPiB0aGlzLm1heENoYXJMZW5ndGgpIHtcclxuICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRoaXMubWF4Q2hhckxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWV0aG9kID1cclxuICAgICAgdGhpcy5sbG1BY3Rpb25UeXBlID09PSBMTE1BY3Rpb25zLlJFUEhSQVNFXHJcbiAgICAgICAgPyB0aGlzLmxsbVNlcnZpY2UucmVwaHJhc2UoeyB0ZXh0OiB0ZXh0LCBsYW5ndWFnZTogdGhpcy5kYXRhLmxhbmd1YWdlLCBzdHlsZTogdGhpcy5zZWxlY3RlZFdyaXRpbmdTdHlsZSB9KVxyXG4gICAgICAgIDogdGhpcy5sbG1TZXJ2aWNlLnN1bW1hcml6ZSh7IHRleHQ6IHRleHQsIGxhbmd1YWdlOiB0aGlzLmRhdGEubGFuZ3VhZ2UgfSk7XHJcblxyXG4gICAgcmV0dXJuIG1ldGhvZFxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpKVxyXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuZ2V0UmVxdWVzdENhbGxiYWNrKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZXF1ZXN0Q2FsbGJhY2soKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmxsbUFjdGlvblR5cGUgPT09IHRoaXMubGxtQWN0aW9ucy5TVU1NQVJZKSB7XHJcbiAgICAgICAgICB0aGlzLmlzU3VtbWFyaXplZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVkaXRlZFRleHQgPSByZXNwb25zZTtcclxuICAgICAgICB0aGlzLm1hbnVhbGx5RWRpdGVkVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdEVycm9yTWVzc2FnZSA9IHRoaXMubGxtSGVscGVyU2VydmljZS5nZXREZWZhdWx0RXJyb3JNZXNzYWdlKCk7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1lc3NhZ2UodGhpcy5kZWZhdWx0RXJyb3JNZXNzYWdlKTtcclxuICAgICAgICB0aGlzLmNsb3NlTWVzc2FnZSh0aGlzLnJlcXVlc3RUaW1lb3V0TWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoUXVvdGEodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5jaGVja1RleHRMaW1pdCgpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IEVSUk9SX0NPREVTLlRJTUVPVVQpIHtcclxuICAgICAgICAgIHRoaXMucmVxdWVzdFRpbWVvdXRNZXNzYWdlID0gdGhpcy5sbG1IZWxwZXJTZXJ2aWNlLmdldFJlcXVlc3RUaW1lb3V0TWVzc2FnZSh0aGlzLmxsbUFjdGlvblR5cGUpO1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlcy5wdXNoKHRoaXMucmVxdWVzdFRpbWVvdXRNZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh0aGlzLmRlZmF1bHRFcnJvck1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7IGxvY2FsaXphdGlvbktleSArIFwiVElUTEVcIiB8IHRyYW5zbGF0ZSB9fTwvaDE+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIDxwPnt7IGxvY2FsaXphdGlvbktleSArIFwiREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuXHJcbiAgPGxpYi10bGQtbm90aWZpY2F0aW9uLW1lc3NhZ2UgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXNcIiBbbWVzc2FnZV09XCJtZXNzYWdlXCIgKGNsb3NlQ2xpY2tlZCk9XCJjbG9zZU1lc3NhZ2UobWVzc2FnZSlcIj48L2xpYi10bGQtbm90aWZpY2F0aW9uLW1lc3NhZ2U+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsbG1BY3Rpb25UeXBlID09PSBsbG1BY3Rpb25zLlJFUEhSQVNFXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cInctZnVsbCBsbG0td3JpdGluZy1zdHlsZS1zZWxlY3RcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7ICdMTE0uUkVQSFJBU0VfTU9EQUwuV1JJVElOR19TVFlMRVMuVElUTEUnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrUmVwaHJhc2VkVGV4dFNhdmVzKCRldmVudClcIiBbdmFsdWVdPVwic2VsZWN0ZWRXcml0aW5nU3R5bGVcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3R5bGUgb2Ygd3JpdGluZ1N0eWxlc1wiIFt2YWx1ZV09XCJzdHlsZVwiPlxyXG4gICAgICAgICAge3sgJ0xMTS5SRVBIUkFTRV9NT0RBTC5XUklUSU5HX1NUWUxFUy4nICsgKHN0eWxlIHwgdXBwZXJjYXNlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICBcclxuICAgIDxwIGNsYXNzPVwibGxtLXdyaXRpbmctc3R5bGUgdGV4dC1tLXNlbWktYm9sZFwiPnt7XHJcbiAgICAgICAgXCJMTE0uUkVQSFJBU0VfTU9EQUwuV1JJVElOR19TVFlMRVMuU1BFQ0lGSUNfU1RZTEVcIiB8IHRyYW5zbGF0ZSA6IFxyXG4gICAgICAgIHsgc3R5bGU6ICdMTE0uUkVQSFJBU0VfTU9EQUwuV1JJVElOR19TVFlMRVMuJyArIChzZWxlY3RlZFdyaXRpbmdTdHlsZSB8IHVwcGVyY2FzZSkgfCB0cmFuc2xhdGUgfSBcclxuICAgICAgfX1cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkIGluZm8taWNvblwiXHJcbiAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwibXVsdGlsaW5lLXRvb2x0aXBcIlxyXG4gICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0xMTS5SRVBIUkFTRV9NT0RBTC5XUklUSU5HX1NUWUxFUy5UT09MVElQXycgKyAoc2VsZWN0ZWRXcml0aW5nU3R5bGUgfCB1cHBlcmNhc2UpIHwgdHJhbnNsYXRlXCIgXHJcbiAgICAgID5cclxuICAgICAgICBpbmZvXHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvcD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGxpYi1sbG0tdGV4dGFyZWEgW2NsYXNzLnJlcGhyYXNlXT1cImxsbUFjdGlvblR5cGUgPT09IGxsbUFjdGlvbnMuUkVQSFJBU0VcIiBbdGV4dF09XCJlZGl0ZWRUZXh0ICE9PSAnJyA/IGVkaXRlZFRleHQgOiBpbml0aWFsVGV4dFwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcgfHwgIXF1b3RhTGVmdFwiIFthY3Rpb25CdXR0b25zRGlzYWJsZWRdPVwiIWlzRWRpdGVkXCIgKHRleHRFZGl0RXZlbnQpPVwidGV4dEVkaXRFdmVudCgkZXZlbnQpXCIgKGNvcHlFdmVudCk9XCJjb3B5UGxhdXNpYmxlRXZlbnQoKVwiIChkaXNsaWtlRXZlbnQpPVwiZGlzbGlrZVBsYXVzaWJsZUV2ZW50KClcIj48L2xpYi1sbG0tdGV4dGFyZWE+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwibGxtLWFjdGlvbnMtd3JhcHBlclwiIG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8ZGl2ICpuZ0lmPVwicmVtYWluaW5nUXVvdGFNZXNzYWdlVmlzaWJsZVwiIFtpbm5lckhUTUxdPVwibG9jYWxpemF0aW9uS2V5ICsgJ0xJTUlUJyB8IHRyYW5zbGF0ZTogeyBsaW1pdDogcXVvdGFMZWZ0LCBzdWJzY3JpcHRpb25Vcmw6IHN1YnNjcmlwdGlvblVybCB9XCI+PC9kaXY+XHJcblxyXG4gIDxkaXYgW2NsYXNzLnctZnVsbF09XCIhcmVtYWluaW5nUXVvdGFNZXNzYWdlVmlzaWJsZVwiIGNsYXNzPVwibGxtLWFjdGlvbnNcIj5cclxuICAgIDxidXR0b24gKm5nSWY9XCJpc0xvYWRpbmc7IGVsc2UgY2xvc2VCdXR0b25cIiBtYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XHJcbiAgICAgIHt7IGxvY2FsaXphdGlvbktleSArIFwiQ0FOQ0VMXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VCdXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cclxuICAgICAgICB7eyBsb2NhbGl6YXRpb25LZXkgKyBcIkNMT1NFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICBjb2xvcj1cImFjY2VudFwiXHJcbiAgICAgIChjbGljayk9XCJnZXRFZGl0ZWRUZXh0KClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwibGxtQWN0aW9uVHlwZSA9PT0gbGxtQWN0aW9ucy5TVU1NQVJZOyBlbHNlIHJlcGhyYXNlQWN0aW9uXCI+XHJcbiAgICAgICAge3tcclxuICAgICAgICAgICghaXNTdW1tYXJpemVkXHJcbiAgICAgICAgICAgID8gXCJMTE0uU1VNTUFSWV9NT0RBTC5BQ1RJT05cIlxyXG4gICAgICAgICAgICA6IFwiTExNLlNVTU1BUllfTU9EQUwuUkVHRU5FUkFURVwiXHJcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX1cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNyZXBocmFzZUFjdGlvbj5cclxuICAgICAgICB7eyBsb2NhbGl6YXRpb25LZXkgKyBcIkFDVElPTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIyMFwiIGNvbG9yPVwiYWNjZW50XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbGxtL2NvbXBvbmVudHMvbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy9sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vY29tcG9uZW50cy9sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zL2xsbS10ZXh0YXJlYS13aXRoLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDUi9ELHdEQUEwSDtJQUF2QyxxUkFBZ0IsK0JBQXFCLEtBQUM7SUFBQyxpQkFBK0I7OztJQUExRixvQ0FBbUI7OztJQUs5RSxzQ0FBK0Q7SUFDN0QsWUFDRjs7O0lBQUEsaUJBQWE7OztJQUZnQyxrQ0FBaUI7SUFDNUQsY0FDRjtJQURFLG1IQUNGOzs7O0lBSkYsQUFERiww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LEFBQWpCLG9DQUFpQiw2QkFBZ0I7WUFjeEMsZUFBdUI7WUFBdkIseUNBQXVCO1lBRWhCLGNBQTRDO1lBQUEsQUFBNUMsbUVBQTRDLGdDQUFtQjtZQVl4RCxlQUFlO1lBQWYsb0NBQWU7OztpRkR4RHRCLCtCQUErQjtjQUwzQyxTQUFTOzJCQUNFLCtCQUErQjs7c0JBOEN0QyxNQUFNO3VCQUFDLGVBQWU7O2tGQTFDZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVSUk9SX0NPREVTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL25vdGlmaWNhdGlvbi1tZXNzYWdlJztcclxuaW1wb3J0IHsgUGxhdXNpYmxlSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vcGxhdXNpYmxlJztcclxuaW1wb3J0IHsgTExNQWN0aW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0tYWN0aW9ucy5lbnVtJztcclxuaW1wb3J0IHsgTExNRGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IExMTVdyaXRpbmdTdHlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9sbG0td3JpdGluZy1zdHlsZS5lbnVtJztcclxuaW1wb3J0IHsgTExNSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xsbS1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExMTVNlcnZpY2UsIExMTVVzZUNhc2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMTE1UZXh0YXJlYVdpdGhBY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmchOiBib29sZWFuO1xyXG4gIGlzU3VtbWFyaXplZCE6IGJvb2xlYW47XHJcbiAgaXNFZGl0ZWQhOiBib29sZWFuO1xyXG4gIHJlbWFpbmluZ1F1b3RhTWVzc2FnZVZpc2libGUhOiBib29sZWFuO1xyXG4gIHF1b3RhTGVmdCE6IG51bWJlcjtcclxuICBtYXhDaGFyTGVuZ3RoITogbnVtYmVyO1xyXG4gIHN1YnNjcmlwdGlvblVybCE6IHN0cmluZztcclxuICBwcmV2aW91c1dyaXRpbmdTdHlsZSE6IExMTVdyaXRpbmdTdHlsZTtcclxuICBzZWxlY3RlZFdyaXRpbmdTdHlsZSA9IExMTVdyaXRpbmdTdHlsZS5HRU5FUkFMO1xyXG5cclxuICByZWFjaGVkUXVvdGFNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuICBleGNlZWRlZExpbWl0TWVzc2FnZSE6IE5vdGlmaWNhdGlvbk1lc3NhZ2U7XHJcbiAgcmVxdWVzdFRpbWVvdXRNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuICBkZWZhdWx0RXJyb3JNZXNzYWdlITogTm90aWZpY2F0aW9uTWVzc2FnZTtcclxuXHJcbiAgc3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBpbml0aWFsVGV4dCE6IHN0cmluZztcclxuICBlZGl0ZWRUZXh0ID0gJyc7XHJcbiAgbWFudWFsbHlFZGl0ZWRUZXh0ID0gJyc7XHJcblxyXG4gIGxvY2FsaXphdGlvbktleSE6IHN0cmluZztcclxuICBsbG1BY3Rpb25UeXBlITogTExNQWN0aW9ucztcclxuICBzZWxlY3RlZFVzZUNhc2U6IExMTVVzZUNhc2UgPSBMTE1Vc2VDYXNlLkdlbmVyYWw7XHJcblxyXG4gIHByaXZhdGUgc2F2ZWRSZXBocmFzaW5nczogeyBzdHlsZTogTExNV3JpdGluZ1N0eWxlLCB0ZXh0OiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gIHJlYWRvbmx5IGxsbUFjdGlvbnMgPSBMTE1BY3Rpb25zO1xyXG4gIHJlYWRvbmx5IHdyaXRpbmdTdHlsZXMgPSBPYmplY3QudmFsdWVzKExMTVdyaXRpbmdTdHlsZSk7XHJcbiAgcmVhZG9ubHkgdXNlQ2FzZXMgPSBPYmplY3QudmFsdWVzKExMTVVzZUNhc2UpO1xyXG5cclxuICByZWFkb25seSBtZXNzYWdlczogTm90aWZpY2F0aW9uTWVzc2FnZVtdID0gW107XHJcbiAgZ2V0IHNob3dVc2VDYXNlKCkgeyByZXR1cm4gdGhpcy5kYXRhLnNob3dVc2VDYXNlOyB9XHJcblxyXG4gIGdldCBpc0Rpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNMb2FkaW5nIHx8ICF0aGlzLmluaXRpYWxUZXh0IHx8IHRoaXMucXVvdGFMZWZ0IDwgMTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsbG1TZXJ2aWNlOiBMTE1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsbG1IZWxwZXJTZXJ2aWNlOiBMTE1IZWxwZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogTExNRGF0YVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRJbml0aWFsVGV4dCgpO1xyXG5cclxuICAgIGlmKHRoaXMuZGF0YS5kZWZhdWx0VXNlQ2FzZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlQ2FzZSA9IHRoaXMuZGF0YS5kZWZhdWx0VXNlQ2FzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlTWVzc2FnZShtc2c6IE5vdGlmaWNhdGlvbk1lc3NhZ2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tZXNzYWdlcz8uZmluZEluZGV4KChtZXNzYWdlKSA9PiBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA9PT0gSlNPTi5zdHJpbmdpZnkobXNnKSk7XHJcblxyXG4gICAgaWYgKGluZGV4IHx8IGluZGV4ID09PSAwKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrUmVwaHJhc2VkVGV4dFNhdmVzKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC52YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZFdyaXRpbmdTdHlsZSkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzV3JpdGluZ1N0eWxlID0gdGhpcy5zZWxlY3RlZFdyaXRpbmdTdHlsZTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFdyaXRpbmdTdHlsZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkV3JpdGluZ1N0eWxlU2F2ZSA9IHRoaXMuc2F2ZWRSZXBocmFzaW5ncy5maW5kKChyZXBocmFzaW5nKSA9PiByZXBocmFzaW5nLnN0eWxlID09PSB0aGlzLnNlbGVjdGVkV3JpdGluZ1N0eWxlKTtcclxuICAgIGNvbnN0IHByZXZpb3VzV3JpdGluZ1N0eWxlU2F2ZSA9IHRoaXMuc2F2ZWRSZXBocmFzaW5ncy5maW5kKChzYXZlKSA9PiBzYXZlLnN0eWxlID09PSB0aGlzLnByZXZpb3VzV3JpdGluZ1N0eWxlKTtcclxuXHJcbiAgICBpZiAocHJldmlvdXNXcml0aW5nU3R5bGVTYXZlKSB7XHJcbiAgICAgIHByZXZpb3VzV3JpdGluZ1N0eWxlU2F2ZS50ZXh0ID0gdGhpcy5lZGl0ZWRUZXh0ICE9PSAnJyA/IHRoaXMuZWRpdGVkVGV4dCA6IHRoaXMuaW5pdGlhbFRleHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmVkUmVwaHJhc2luZ3MucHVzaCh7IHN0eWxlOiB0aGlzLnByZXZpb3VzV3JpdGluZ1N0eWxlLCB0ZXh0OiB0aGlzLmVkaXRlZFRleHQgIT09ICcnID8gdGhpcy5lZGl0ZWRUZXh0IDogdGhpcy5pbml0aWFsVGV4dCB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRlZFRleHQgPSBzZWxlY3RlZFdyaXRpbmdTdHlsZVNhdmU/LnRleHQgPz8gdGhpcy5pbml0aWFsVGV4dDtcclxuICAgIHRoaXMubWFudWFsbHlFZGl0ZWRUZXh0ID0gJyc7XHJcblxyXG4gICAgdGhpcy5jaGVja1RleHRMaW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdGVkVGV4dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5sbG1BY3Rpb25UeXBlID09PSBMTE1BY3Rpb25zLlJFUEhSQVNFKSB7XHJcbiAgICAgIHRoaXMud3JpdGluZ1N0eWxlUGxhdXNpYmxlRXZlbnQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3VtbWFyeVBsYXVzaWJsZUV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmdldFJlcXVlc3QoKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICB0ZXh0RWRpdEV2ZW50KHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5tYW51YWxseUVkaXRlZFRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5pbml0aWFsVGV4dCA9IHRleHQ7XHJcbiAgICB0aGlzLmVkaXRlZFRleHQgPSAnJztcclxuXHJcbiAgICB0aGlzLmNoZWNrVGV4dExpbWl0KCk7XHJcbiAgfVxyXG5cclxuICBjb3B5UGxhdXNpYmxlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBQbGF1c2libGVIZWxwZXIuY3VzdG9tRXZlbnQodGhpcy5sbG1BY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCksIHsgYWN0aW9uOiAnY29weScgfSk7XHJcbiAgfVxyXG5cclxuICBkaXNsaWtlUGxhdXNpYmxlRXZlbnQoKTogdm9pZCB7XHJcbiAgICBQbGF1c2libGVIZWxwZXIuY3VzdG9tRXZlbnQodGhpcy5sbG1BY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCksIHsgYWN0aW9uOiAnZGlzbGlrZScgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxUZXh0KCkge1xyXG4gICAgdGhpcy5kYXRhLnRleHQuc3Vic2NyaWJlKCh0ZXh0KSA9PiB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbFRleHQgPSB0ZXh0O1xyXG4gICAgICB0aGlzLmxsbUFjdGlvblR5cGUgPSB0aGlzLmRhdGEuYWN0aW9uO1xyXG4gICAgICB0aGlzLmxvY2FsaXphdGlvbktleSA9IGBMTE0uJHt0aGlzLmxsbUFjdGlvblR5cGV9X01PREFMLmBcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25VcmwgPSB0aGlzLmxsbUhlbHBlclNlcnZpY2UubGxtQ29uZmlndXJhdGlvbi5zdWJzY3JpcHRpb25Vcmw7XHJcbiAgICAgIHRoaXMubWF4Q2hhckxlbmd0aCA9IHRoaXMubGxtSGVscGVyU2VydmljZS5sbG1Db25maWd1cmF0aW9uLm1heENoYXJMZW5ndGg7XHJcblxyXG4gICAgICB0aGlzLnJlZnJlc2hRdW90YSgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUZXh0TGltaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsaW1pdCA9IHRoaXMubWF4Q2hhckxlbmd0aDtcclxuICAgIGNvbnN0IHRleHRzID0gW3RoaXMuaW5pdGlhbFRleHQsIHRoaXMubWFudWFsbHlFZGl0ZWRUZXh0LCB0aGlzLmVkaXRlZFRleHRdO1xyXG4gICAgY29uc3QgbG9uZ2VzdFRleHQgPSB0aGlzLmVkaXRlZFRleHQgJiYgIXRoaXMubWFudWFsbHlFZGl0ZWRUZXh0ID8gdGhpcy5lZGl0ZWRUZXh0IDogdGV4dHMucmVkdWNlKChhLCBiKSA9PiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gYSA6IGIpO1xyXG5cclxuICAgIGlmIChsb25nZXN0VGV4dC5sZW5ndGggPiBsaW1pdCkge1xyXG4gICAgICBpZiAodGhpcy5leGNlZWRlZExpbWl0TWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNZXNzYWdlKHRoaXMuZXhjZWVkZWRMaW1pdE1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmV4Y2VlZGVkTGltaXRNZXNzYWdlID0gdGhpcy5sbG1IZWxwZXJTZXJ2aWNlLmdldEV4Y2VlZGVkTGltaXRNZXNzYWdlKGxvbmdlc3RUZXh0Lmxlbmd0aCk7XHJcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh0aGlzLmV4Y2VlZGVkTGltaXRNZXNzYWdlKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbG9zZU1lc3NhZ2UodGhpcy5leGNlZWRlZExpbWl0TWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdyaXRpbmdTdHlsZVBsYXVzaWJsZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgUGxhdXNpYmxlSGVscGVyLmN1c3RvbUV2ZW50KHRoaXMubGxtQWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpLCB7IHdyaXRpbmdTdHlsZTogdGhpcy5zZWxlY3RlZFdyaXRpbmdTdHlsZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3VtbWFyeVBsYXVzaWJsZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgUGxhdXNpYmxlSGVscGVyLmN1c3RvbUV2ZW50KHRoaXMubGxtQWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpLCB7IGFjdGlvbjogJ3N1bW1hcnknIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoUXVvdGEoZGVjcmVhc2U/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmxsbUhlbHBlclNlcnZpY2UuZ2V0UmVtYWluaW5nUXVvdGEoZGVjcmVhc2UpLnN1YnNjcmliZSgocmVtYWluaW5nUXVvdGEpID0+IHtcclxuICAgICAgdGhpcy5xdW90YUxlZnQgPSByZW1haW5pbmdRdW90YTtcclxuICAgICAgdGhpcy5zZXRRdW90YU1lc3NhZ2UoKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFF1b3RhTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1b3RhTGVmdCA8PSB0aGlzLmxsbUhlbHBlclNlcnZpY2UudHJpYWxSZXF1ZXN0Q291bnQpIHtcclxuICAgICAgdGhpcy5yZW1haW5pbmdRdW90YU1lc3NhZ2VWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5xdW90YUxlZnQgPCAxKSB7XHJcbiAgICAgIHRoaXMucmVhY2hlZFF1b3RhTWVzc2FnZSA9IHRoaXMubGxtSGVscGVyU2VydmljZS5nZXRSZWFjaGVkUXVvdGFNZXNzYWdlKCk7XHJcbiAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh0aGlzLnJlYWNoZWRRdW90YU1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZXF1ZXN0KCk6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICBsZXQgdGV4dCA9XHJcbiAgICAgIHRoaXMubWFudWFsbHlFZGl0ZWRUZXh0ICE9PSAnJ1xyXG4gICAgICAgID8gdGhpcy5tYW51YWxseUVkaXRlZFRleHRcclxuICAgICAgICA6IHRoaXMuaW5pdGlhbFRleHQ7XHJcblxyXG4gICAgaWYgKHRleHQubGVuZ3RoID4gdGhpcy5tYXhDaGFyTGVuZ3RoKSB7XHJcbiAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZygwLCB0aGlzLm1heENoYXJMZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1ldGhvZCA9XHJcbiAgICAgIHRoaXMubGxtQWN0aW9uVHlwZSA9PT0gTExNQWN0aW9ucy5SRVBIUkFTRVxyXG4gICAgICAgID8gdGhpcy5sbG1TZXJ2aWNlLnJlcGhyYXNlKHsgdGV4dDogdGV4dCwgbGFuZ3VhZ2U6IHRoaXMuZGF0YS5sYW5ndWFnZSwgc3R5bGU6IHRoaXMuc2VsZWN0ZWRXcml0aW5nU3R5bGUsIHVzZUNhc2U6IExMTVVzZUNhc2UuR2VuZXJhbCB9KVxyXG4gICAgICAgIDogdGhpcy5sbG1TZXJ2aWNlLnN1bW1hcml6ZSh7IHRleHQ6IHRleHQsIGxhbmd1YWdlOiB0aGlzLmRhdGEubGFuZ3VhZ2UsIHVzZUNhc2U6IHRoaXMuc2VsZWN0ZWRVc2VDYXNlIH0pO1xyXG5cclxuICAgIHJldHVybiBtZXRob2RcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpKSlcclxuICAgICAgLnN1YnNjcmliZSh0aGlzLmdldFJlcXVlc3RDYWxsYmFjaygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmVxdWVzdENhbGxiYWNrKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5sbG1BY3Rpb25UeXBlID09PSB0aGlzLmxsbUFjdGlvbnMuU1VNTUFSWSkge1xyXG4gICAgICAgICAgdGhpcy5pc1N1bW1hcml6ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lZGl0ZWRUZXh0ID0gcmVzcG9uc2U7XHJcbiAgICAgICAgdGhpcy5tYW51YWxseUVkaXRlZFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmRlZmF1bHRFcnJvck1lc3NhZ2UgPSB0aGlzLmxsbUhlbHBlclNlcnZpY2UuZ2V0RGVmYXVsdEVycm9yTWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuY2xvc2VNZXNzYWdlKHRoaXMuZGVmYXVsdEVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1lc3NhZ2UodGhpcy5yZXF1ZXN0VGltZW91dE1lc3NhZ2UpO1xyXG4gICAgICAgIHRoaXMuaXNFZGl0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFF1b3RhKHRydWUpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tUZXh0TGltaXQoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSBFUlJPUl9DT0RFUy5USU1FT1VUKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RUaW1lb3V0TWVzc2FnZSA9IHRoaXMubGxtSGVscGVyU2VydmljZS5nZXRSZXF1ZXN0VGltZW91dE1lc3NhZ2UodGhpcy5sbG1BY3Rpb25UeXBlKTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZXMucHVzaCh0aGlzLnJlcXVlc3RUaW1lb3V0TWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2godGhpcy5kZWZhdWx0RXJyb3JNZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8aDEgbWF0LWRpYWxvZy10aXRsZT57eyBsb2NhbGl6YXRpb25LZXkgKyBcIlRJVExFXCIgfCB0cmFuc2xhdGUgfX08L2gxPlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICA8cD57eyBsb2NhbGl6YXRpb25LZXkgKyBcIkRFU0NSSVBUSU9OXCIgfCB0cmFuc2xhdGUgfX08L3A+XHJcblxyXG4gIDxsaWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzXCIgW21lc3NhZ2VdPVwibWVzc2FnZVwiIChjbG9zZUNsaWNrZWQpPVwiY2xvc2VNZXNzYWdlKG1lc3NhZ2UpXCI+PC9saWItdGxkLW5vdGlmaWNhdGlvbi1tZXNzYWdlPlxyXG5cclxuICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJzaG93VXNlQ2FzZVwiIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJ3LWZ1bGwgbGxtLXdyaXRpbmctc3R5bGUtc2VsZWN0XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgIDxtYXQtbGFiZWw+e3sgJ0xMTS5VU0VfQ0FTRVNfTEFCRUwnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXNlbGVjdCBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFVzZUNhc2VcIj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHVzZUNhc2Ugb2YgdXNlQ2FzZXNcIiBbdmFsdWVdPVwidXNlQ2FzZVwiPlxyXG4gICAgICAgIHt7ICdMTE0uVVNFX0NBU0VTLlVTRV9DQVNFLicgKyAodXNlQ2FzZSB8IHVwcGVyY2FzZSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsbG1BY3Rpb25UeXBlID09PSBsbG1BY3Rpb25zLlJFUEhSQVNFXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY29sb3I9XCJhY2NlbnRcIiBjbGFzcz1cInctZnVsbCBsbG0td3JpdGluZy1zdHlsZS1zZWxlY3RcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7ICdMTE0uUkVQSFJBU0VfTU9EQUwuV1JJVElOR19TVFlMRVMuVElUTEUnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrUmVwaHJhc2VkVGV4dFNhdmVzKCRldmVudClcIiBbdmFsdWVdPVwic2VsZWN0ZWRXcml0aW5nU3R5bGVcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3R5bGUgb2Ygd3JpdGluZ1N0eWxlc1wiIFt2YWx1ZV09XCJzdHlsZVwiPlxyXG4gICAgICAgICAge3sgJ0xMTS5SRVBIUkFTRV9NT0RBTC5XUklUSU5HX1NUWUxFUy4nICsgKHN0eWxlIHwgdXBwZXJjYXNlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgPHAgY2xhc3M9XCJsbG0td3JpdGluZy1zdHlsZSB0ZXh0LW0tc2VtaS1ib2xkXCI+e3tcclxuICAgICAgICBcIkxMTS5SRVBIUkFTRV9NT0RBTC5XUklUSU5HX1NUWUxFUy5TUEVDSUZJQ19TVFlMRVwiIHwgdHJhbnNsYXRlIDpcclxuICAgICAgICB7IHN0eWxlOiAnTExNLlJFUEhSQVNFX01PREFMLldSSVRJTkdfU1RZTEVTLicgKyAoc2VsZWN0ZWRXcml0aW5nU3R5bGUgfCB1cHBlcmNhc2UpIHwgdHJhbnNsYXRlIH1cclxuICAgICAgfX1cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkIGluZm8taWNvblwiXHJcbiAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwibXVsdGlsaW5lLXRvb2x0aXBcIlxyXG4gICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInTExNLlJFUEhSQVNFX01PREFMLldSSVRJTkdfU1RZTEVTLlRPT0xUSVBfJyArIChzZWxlY3RlZFdyaXRpbmdTdHlsZSB8IHVwcGVyY2FzZSkgfCB0cmFuc2xhdGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgaW5mb1xyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L3A+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxsaWItbGxtLXRleHRhcmVhIFtjbGFzcy5yZXBocmFzZV09XCJsbG1BY3Rpb25UeXBlID09PSBsbG1BY3Rpb25zLlJFUEhSQVNFXCIgW3RleHRdPVwiZWRpdGVkVGV4dCAhPT0gJycgPyBlZGl0ZWRUZXh0IDogaW5pdGlhbFRleHRcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nIHx8ICFxdW90YUxlZnRcIiBbYWN0aW9uQnV0dG9uc0Rpc2FibGVkXT1cIiFpc0VkaXRlZFwiICh0ZXh0RWRpdEV2ZW50KT1cInRleHRFZGl0RXZlbnQoJGV2ZW50KVwiIChjb3B5RXZlbnQpPVwiY29weVBsYXVzaWJsZUV2ZW50KClcIiAoZGlzbGlrZUV2ZW50KT1cImRpc2xpa2VQbGF1c2libGVFdmVudCgpXCI+PC9saWItbGxtLXRleHRhcmVhPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImxsbS1hY3Rpb25zLXdyYXBwZXJcIiBtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGRpdiAqbmdJZj1cInJlbWFpbmluZ1F1b3RhTWVzc2FnZVZpc2libGVcIiBbaW5uZXJIVE1MXT1cImxvY2FsaXphdGlvbktleSArICdMSU1JVCcgfCB0cmFuc2xhdGU6IHsgbGltaXQ6IHF1b3RhTGVmdCwgc3Vic2NyaXB0aW9uVXJsOiBzdWJzY3JpcHRpb25VcmwgfVwiPjwvZGl2PlxyXG5cclxuICA8ZGl2IFtjbGFzcy53LWZ1bGxdPVwiIXJlbWFpbmluZ1F1b3RhTWVzc2FnZVZpc2libGVcIiBjbGFzcz1cImxsbS1hY3Rpb25zXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwiaXNMb2FkaW5nOyBlbHNlIGNsb3NlQnV0dG9uXCIgbWF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxyXG4gICAgICB7eyBsb2NhbGl6YXRpb25LZXkgKyBcIkNBTkNFTFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI2Nsb3NlQnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XHJcbiAgICAgICAge3sgbG9jYWxpemF0aW9uS2V5ICsgXCJDTE9TRVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICBjb2xvcj1cImFjY2VudFwiXHJcbiAgICAgIChjbGljayk9XCJnZXRFZGl0ZWRUZXh0KClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwibGxtQWN0aW9uVHlwZSA9PT0gbGxtQWN0aW9ucy5TVU1NQVJZOyBlbHNlIHJlcGhyYXNlQWN0aW9uXCI+XHJcbiAgICAgICAge3tcclxuICAgICAgICAgICghaXNTdW1tYXJpemVkXHJcbiAgICAgICAgICAgID8gXCJMTE0uU1VNTUFSWV9NT0RBTC5BQ1RJT05cIlxyXG4gICAgICAgICAgICA6IFwiTExNLlNVTU1BUllfTU9EQUwuUkVHRU5FUkFURVwiXHJcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgfX1cclxuICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNyZXBocmFzZUFjdGlvbj5cclxuICAgICAgICB7eyBsb2NhbGl6YXRpb25LZXkgKyBcIkFDVElPTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIyMFwiIGNvbG9yPVwiYWNjZW50XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -22,6 +22,7 @@ export class LLMComponent {
22
22
  this.dialog = dialog;
23
23
  this.iconService = iconService;
24
24
  this.languageService = languageService;
25
+ this.showUseCase = false;
25
26
  this.llmAction = LLMActions;
26
27
  this.iconService.registerIcons(icons);
27
28
  }
@@ -33,19 +34,21 @@ export class LLMComponent {
33
34
  else {
34
35
  textObservable = this.text;
35
36
  }
37
+ const data = {
38
+ text: textObservable,
39
+ language: this.language,
40
+ action: action,
41
+ showUseCase: this.showUseCase,
42
+ };
36
43
  this.dialog.open(LLMTextareaWithActionsComponent, {
37
44
  panelClass: 'responsive-dialog',
38
45
  maxWidth: '800px',
39
46
  width: '100%',
40
- data: {
41
- text: textObservable,
42
- language: this.language,
43
- action: action
44
- }
47
+ data
45
48
  });
46
49
  }
47
50
  static { this.ɵfac = function LLMComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LLMComponent)(i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(i2.IconService), i0.ɵɵdirectiveInject(i2.LanguageTranslateService)); }; }
48
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LLMComponent, selectors: [["lib-llm"]], inputs: { text: "text", language: "language", isMenuDisabled: "isMenuDisabled", rephrasableLanguagesCodeList: "rephrasableLanguagesCodeList" }, decls: 15, vars: 21, consts: [["menu", "matMenu"], ["mat-icon-button", "", 3, "disabled", "matTooltip", "matMenuTriggerFor"], ["svgIcon", "llm_menu"], [3, "matTooltipPosition", "matTooltip"], ["mat-menu-item", "", 3, "click", "disabled"]], template: function LLMComponent_Template(rf, ctx) { if (rf & 1) {
51
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LLMComponent, selectors: [["lib-llm"]], inputs: { text: "text", language: "language", isMenuDisabled: "isMenuDisabled", rephrasableLanguagesCodeList: "rephrasableLanguagesCodeList", showUseCase: "showUseCase" }, decls: 15, vars: 21, consts: [["menu", "matMenu"], ["mat-icon-button", "", 3, "disabled", "matTooltip", "matMenuTriggerFor"], ["svgIcon", "llm_menu"], [3, "matTooltipPosition", "matTooltip"], ["mat-menu-item", "", 3, "click", "disabled"]], template: function LLMComponent_Template(rf, ctx) { if (rf & 1) {
49
52
  const _r1 = i0.ɵɵgetCurrentView();
50
53
  i0.ɵɵelementStart(0, "button", 1);
51
54
  i0.ɵɵpipe(1, "translate");
@@ -93,6 +96,8 @@ export class LLMComponent {
93
96
  type: Input
94
97
  }], rephrasableLanguagesCodeList: [{
95
98
  type: Input
99
+ }], showUseCase: [{
100
+ type: Input
96
101
  }] }); })();
97
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LLMComponent, { className: "LLMComponent", filePath: "lib\\llm\\llm.component.ts", lineNumber: 14 }); })();
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vbGxtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vbGxtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUM3SCxPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFPdEMsTUFBTSxPQUFPLFlBQVk7SUFRdkIsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvSyxDQUFDO0lBRUQsWUFDUyxNQUFpQixFQUNQLFdBQXdCLEVBQ3hCLGVBQXlDO1FBRm5ELFdBQU0sR0FBTixNQUFNLENBQVc7UUFDUCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFibkQsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQWU5QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLElBQUksY0FBa0MsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEQsY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFO1lBQ2hELFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsTUFBTSxFQUFFLE1BQU07YUFDZjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7NkdBekNVLFlBQVk7b0VBQVosWUFBWTs7WUNiekIsaUNBS0M7O1lBQ0MsOEJBQXdDO1lBQzFDLGlCQUFTO1lBR1AsQUFERix5Q0FBMEIsYUFDdUc7O1lBQzdILGlDQUlDO1lBREMsK0hBQVMsdUNBQStCLEtBQUM7WUFFekMsWUFDRjs7WUFDRixBQURFLGlCQUFTLEVBQ0w7WUFFTiwrQkFBeUk7O1lBQ3ZJLGtDQUlDO1lBREMsZ0lBQVMsd0NBQWdDLEtBQUM7WUFFMUMsYUFDRjs7WUFFSixBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNHOzs7WUF6QlQsQUFGQSxBQURBLDZDQUEyQix5REFDa0IsOEJBRW5CO1lBTXJCLGVBQTZCO1lBQUMsQUFBOUIsMkNBQTZCLHlHQUE0RjtZQUcxSCxlQUFnQztZQUFoQyxrREFBZ0M7WUFHaEMsY0FDRjtZQURFLHFFQUNGO1lBR0csZUFBNkI7WUFBQyxBQUE5QiwyQ0FBNkIsb0hBQXNHO1lBR3BJLGVBQXlDO1lBQXpDLDJEQUF5QztZQUd6QyxjQUNGO1lBREUsdUVBQ0Y7OztpRkRkUyxZQUFZO2NBTHhCLFNBQVM7MkJBQ0UsU0FBUzsyR0FLVixJQUFJO2tCQUFaLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLDRCQUE0QjtrQkFBcEMsS0FBSzs7a0ZBSkssWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTExNQWN0aW9ucyB9IGZyb20gJy4vbW9kZWxzL2xsbS1hY3Rpb25zLmVudW0nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJY29uU2VydmljZSwgTGFuZ3VhZ2VUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBMTE1UZXh0YXJlYVdpdGhBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xsbS10ZXh0YXJlYS13aXRoLWFjdGlvbnMvbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBpY29ucyBmcm9tICcuL2ljb25zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWxsbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xsbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGxtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMTE1Db21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBsYW5ndWFnZSE6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc01lbnVEaXNhYmxlZCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcmVwaHJhc2FibGVMYW5ndWFnZXNDb2RlTGlzdDogc3RyaW5nW10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHJlYWRvbmx5IGxsbUFjdGlvbiA9IExMTUFjdGlvbnM7XHJcblxyXG4gIGdldCBpc1RleHRTdW1tYXJpemFibGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVGFyZ2V0TGFuZ3VhZ2VSZXBocmFzYWJsZSgpIHtcclxuICAgIHJldHVybiAhdGhpcy5yZXBocmFzYWJsZUxhbmd1YWdlc0NvZGVMaXN0IHx8ICh0aGlzLmxhbmd1YWdlICYmIHRoaXMucmVwaHJhc2FibGVMYW5ndWFnZXNDb2RlTGlzdC5pbmNsdWRlcyh0aGlzLmxhbmd1YWdlU2VydmljZS5yZW1vdmVSZWdpb25Gcm9tTGFuZ3VhZ2VDb2RlKHRoaXMubGFuZ3VhZ2UpKSk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlVHJhbnNsYXRlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3Rlckljb25zKGljb25zKTtcclxuICB9XHJcblxyXG4gIG9wZW5MTE1Nb2RhbChhY3Rpb246IExMTUFjdGlvbnMpOiB2b2lkIHtcclxuICAgIGxldCB0ZXh0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gICAgaWYgKCF0aGlzLnRleHQgfHwgdHlwZW9mIHRoaXMudGV4dCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICB0ZXh0T2JzZXJ2YWJsZSA9IG9mKHRoaXMudGV4dCA/PyBcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRleHRPYnNlcnZhYmxlID0gdGhpcy50ZXh0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2cub3BlbihMTE1UZXh0YXJlYVdpdGhBY3Rpb25zQ29tcG9uZW50LCB7XHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdyZXNwb25zaXZlLWRpYWxvZycsXHJcbiAgICAgIG1heFdpZHRoOiAnODAwcHgnLFxyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGV4dDogdGV4dE9ic2VydmFibGUsXHJcbiAgICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZ3VhZ2UsXHJcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b25cclxuICBbZGlzYWJsZWRdPVwiaXNNZW51RGlzYWJsZWRcIlxyXG4gIFttYXRUb29sdGlwXT1cIidMTE0uTUVOVV9UT09MVElQJyB8IHRyYW5zbGF0ZVwiXHJcbiAgbWF0LWljb24tYnV0dG9uXHJcbiAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxyXG4+XHJcbiAgPG1hdC1pY29uIHN2Z0ljb249XCJsbG1fbWVudVwiPjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG5cclxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gIDxkaXYgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIiBbbWF0VG9vbHRpcF09XCIhaXNUZXh0U3VtbWFyaXphYmxlID8gKCdMTE0uTUVOVV9TVU1NQVJZX0RJU0FCTEVEX1RPT0xUSVAnIHwgdHJhbnNsYXRlKSA6ICcnXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgW2Rpc2FibGVkXT1cIiFpc1RleHRTdW1tYXJpemFibGVcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkxMTU1vZGFsKGxsbUFjdGlvbi5TVU1NQVJZKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IFwiTExNLlNVTU1BUllcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIiBbbWF0VG9vbHRpcF09XCIhaXNUYXJnZXRMYW5ndWFnZVJlcGhyYXNhYmxlID8gKCdMTE0uTUVOVV9SRVBIUkFTRV9ESVNBQkxFRF9UT09MVElQJyB8IHRyYW5zbGF0ZSkgOiAnJ1wiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNUYXJnZXRMYW5ndWFnZVJlcGhyYXNhYmxlXCJcclxuICAgICAgKGNsaWNrKT1cIm9wZW5MTE1Nb2RhbChsbG1BY3Rpb24uUkVQSFJBU0UpXCJcclxuICAgID5cclxuICAgICAge3sgXCJMTE0uUkVQSFJBU0VcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
102
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LLMComponent, { className: "LLMComponent", filePath: "lib\\llm\\llm.component.ts", lineNumber: 15 }); })();
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vbGxtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9sbG0vbGxtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUM3SCxPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFRdEMsTUFBTSxPQUFPLFlBQVk7SUFTdkIsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvSyxDQUFDO0lBRUQsWUFDUyxNQUFpQixFQUNQLFdBQXdCLEVBQ3hCLGVBQXlDO1FBRm5ELFdBQU0sR0FBTixNQUFNLENBQVc7UUFDUCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFmbkQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQWU5QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLElBQUksY0FBa0MsQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEQsY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFZO1lBQ3BCLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUztZQUN4QixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztTQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUU7WUFDaEQsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixRQUFRLEVBQUUsT0FBTztZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDOzZHQTdDVSxZQUFZO29FQUFaLFlBQVk7O1lDZHpCLGlDQUtDOztZQUNDLDhCQUF3QztZQUMxQyxpQkFBUztZQUdQLEFBREYseUNBQTBCLGFBQ3VHOztZQUM3SCxpQ0FJQztZQURDLCtIQUFTLHVDQUErQixLQUFDO1lBRXpDLFlBQ0Y7O1lBQ0YsQUFERSxpQkFBUyxFQUNMO1lBRU4sK0JBQXlJOztZQUN2SSxrQ0FJQztZQURDLGdJQUFTLHdDQUFnQyxLQUFDO1lBRTFDLGFBQ0Y7O1lBRUosQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRzs7O1lBekJULEFBRkEsQUFEQSw2Q0FBMkIseURBQ2tCLDhCQUVuQjtZQU1yQixlQUE2QjtZQUFDLEFBQTlCLDJDQUE2Qix5R0FBNEY7WUFHMUgsZUFBZ0M7WUFBaEMsa0RBQWdDO1lBR2hDLGNBQ0Y7WUFERSxxRUFDRjtZQUdHLGVBQTZCO1lBQUMsQUFBOUIsMkNBQTZCLG9IQUFzRztZQUdwSSxlQUF5QztZQUF6QywyREFBeUM7WUFHekMsY0FDRjtZQURFLHVFQUNGOzs7aUZEYlMsWUFBWTtjQUx4QixTQUFTOzJCQUNFLFNBQVM7MkdBS1YsSUFBSTtrQkFBWixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyw0QkFBNEI7a0JBQXBDLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLOztrRkFMSyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMTE1BY3Rpb25zIH0gZnJvbSAnLi9tb2RlbHMvbGxtLWFjdGlvbnMuZW51bSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEljb25TZXJ2aWNlLCBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IExMTVRleHRhcmVhV2l0aEFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGxtLXRleHRhcmVhLXdpdGgtYWN0aW9ucy9sbG0tdGV4dGFyZWEtd2l0aC1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIGljb25zIGZyb20gJy4vaWNvbnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMTE1EYXRhIH0gZnJvbSAnLi9tb2RlbHMvbGxtLWRhdGEubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbGxtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGxtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sbG0uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExMTUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGlzTWVudURpc2FibGVkITogYm9vbGVhbjtcclxuICBASW5wdXQoKSByZXBocmFzYWJsZUxhbmd1YWdlc0NvZGVMaXN0OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBzaG93VXNlQ2FzZSA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBsbG1BY3Rpb24gPSBMTE1BY3Rpb25zO1xyXG5cclxuICBnZXQgaXNUZXh0U3VtbWFyaXphYmxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGV4dDtcclxuICB9XHJcblxyXG4gIGdldCBpc1RhcmdldExhbmd1YWdlUmVwaHJhc2FibGUoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMucmVwaHJhc2FibGVMYW5ndWFnZXNDb2RlTGlzdCB8fCAodGhpcy5sYW5ndWFnZSAmJiB0aGlzLnJlcGhyYXNhYmxlTGFuZ3VhZ2VzQ29kZUxpc3QuaW5jbHVkZXModGhpcy5sYW5ndWFnZVNlcnZpY2UucmVtb3ZlUmVnaW9uRnJvbUxhbmd1YWdlQ29kZSh0aGlzLmxhbmd1YWdlKSkpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJJY29ucyhpY29ucyk7XHJcbiAgfVxyXG5cclxuICBvcGVuTExNTW9kYWwoYWN0aW9uOiBMTE1BY3Rpb25zKTogdm9pZCB7XHJcbiAgICBsZXQgdGV4dE9ic2VydmFibGU6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIGlmICghdGhpcy50ZXh0IHx8IHR5cGVvZiB0aGlzLnRleHQgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgdGV4dE9ic2VydmFibGUgPSBvZih0aGlzLnRleHQgPz8gXCJcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0ZXh0T2JzZXJ2YWJsZSA9IHRoaXMudGV4dDtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGE6IExMTURhdGEgPSB7XHJcbiAgICAgIHRleHQ6IHRleHRPYnNlcnZhYmxlLFxyXG4gICAgICBsYW5ndWFnZTogdGhpcy5sYW5ndWFnZSEsXHJcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxyXG4gICAgICBzaG93VXNlQ2FzZTogdGhpcy5zaG93VXNlQ2FzZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2cub3BlbihMTE1UZXh0YXJlYVdpdGhBY3Rpb25zQ29tcG9uZW50LCB7XHJcbiAgICAgIHBhbmVsQ2xhc3M6ICdyZXNwb25zaXZlLWRpYWxvZycsXHJcbiAgICAgIG1heFdpZHRoOiAnODAwcHgnLFxyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBkYXRhXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIFtkaXNhYmxlZF09XCJpc01lbnVEaXNhYmxlZFwiXHJcbiAgW21hdFRvb2x0aXBdPVwiJ0xMTS5NRU5VX1RPT0xUSVAnIHwgdHJhbnNsYXRlXCJcclxuICBtYXQtaWNvbi1idXR0b25cclxuICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXHJcbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImxsbV9tZW51XCI+PC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcblxyXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiIFttYXRUb29sdGlwXT1cIiFpc1RleHRTdW1tYXJpemFibGUgPyAoJ0xMTS5NRU5VX1NVTU1BUllfRElTQUJMRURfVE9PTFRJUCcgfCB0cmFuc2xhdGUpIDogJydcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzVGV4dFN1bW1hcml6YWJsZVwiXHJcbiAgICAgIChjbGljayk9XCJvcGVuTExNTW9kYWwobGxtQWN0aW9uLlNVTU1BUlkpXCJcclxuICAgID5cclxuICAgICAge3sgXCJMTE0uU1VNTUFSWVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiIFttYXRUb29sdGlwXT1cIiFpc1RhcmdldExhbmd1YWdlUmVwaHJhc2FibGUgPyAoJ0xMTS5NRU5VX1JFUEhSQVNFX0RJU0FCTEVEX1RPT0xUSVAnIHwgdHJhbnNsYXRlKSA6ICcnXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgW2Rpc2FibGVkXT1cIiFpc1RhcmdldExhbmd1YWdlUmVwaHJhc2FibGVcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkxMTU1vZGFsKGxsbUFjdGlvbi5SRVBIUkFTRSlcIlxyXG4gICAgPlxyXG4gICAgICB7eyBcIkxMTS5SRVBIUkFTRVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbGxtL21vZGVscy9sbG0tZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IExMTUFjdGlvbnMgfSBmcm9tIFwiLi9sbG0tYWN0aW9ucy5lbnVtXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExMTURhdGEge1xyXG4gIHRleHQ6IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIGFjdGlvbjogTExNQWN0aW9ucztcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbGxtL21vZGVscy9sbG0tZGF0YS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IExMTUFjdGlvbnMgfSBmcm9tIFwiLi9sbG0tYWN0aW9ucy5lbnVtXCI7XHJcbmltcG9ydCB7IExMTVVzZUNhc2UgfSBmcm9tIFwiQHRpbGRlLW5scC9uZ3gtc2VydmljZXNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTExNRGF0YSB7XHJcbiAgdGV4dDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG4gIGxhbmd1YWdlOiBzdHJpbmc7XHJcbiAgYWN0aW9uOiBMTE1BY3Rpb25zO1xyXG4gIHNob3dVc2VDYXNlPzogYm9vbGVhbjtcclxuICBkZWZhdWx0VXNlQ2FzZT86IExMTVVzZUNhc2U7XHJcbn1cclxuIl19