@hahnpro/ai-sdk 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i1$3 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, inject, isDevMode, NgModule, Directive, DestroyRef, Input, ViewChild, Component, Pipe, Inject, InjectionToken, ViewContainerRef, Injector, importProvidersFrom } from '@angular/core';
|
|
4
|
+
import { Injectable, inject, isDevMode, NgModule, Directive, DestroyRef, Input, ViewChild, Component, Pipe, Inject, InjectionToken, ViewContainerRef, Injector, ViewEncapsulation, importProvidersFrom } from '@angular/core';
|
|
5
5
|
import * as i2$1 from '@angular/material/button';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import * as i3
|
|
7
|
+
import * as i3 from '@angular/material/dialog';
|
|
8
8
|
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
|
|
9
9
|
import * as i2$2 from '@angular/material/icon';
|
|
10
10
|
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
-
import * as i3$
|
|
11
|
+
import * as i3$1 from '@angular/material/progress-spinner';
|
|
12
12
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
13
13
|
import * as i4 from '@jsverse/transloco';
|
|
14
14
|
import { TranslocoModule, DefaultTranspiler, TRANSLOCO_TRANSPILER, TRANSLOCO_LOADER, provideTransloco, TranslocoService } from '@jsverse/transloco';
|
|
15
|
-
import * as i3$
|
|
15
|
+
import * as i3$2 from '@angular/platform-browser';
|
|
16
16
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i5 from '@angular/material/input';
|
|
18
18
|
import { MatInputModule } from '@angular/material/input';
|
|
19
19
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
20
|
-
import * as
|
|
20
|
+
import * as i2 from '@angular/forms';
|
|
21
21
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
22
22
|
import * as i1$1 from 'ngx-logger';
|
|
23
23
|
import { NGXLogger, LoggerModule, NgxLoggerLevel } from 'ngx-logger';
|
|
@@ -29,10 +29,9 @@ import * as i1 from '@angular/cdk/layout';
|
|
|
29
29
|
import { Breakpoints } from '@angular/cdk/layout';
|
|
30
30
|
import { CdkTextareaAutosize, TextFieldModule } from '@angular/cdk/text-field';
|
|
31
31
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
32
|
-
import * as
|
|
32
|
+
import * as i6 from '@angular/material/tooltip';
|
|
33
33
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
34
|
-
import
|
|
35
|
-
import * as i1$3 from '@angular/cdk/accordion';
|
|
34
|
+
import * as i1$4 from '@angular/cdk/accordion';
|
|
36
35
|
import { CdkAccordionModule } from '@angular/cdk/accordion';
|
|
37
36
|
import { Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
38
37
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
@@ -41,7 +40,7 @@ import { MarkdownModule, provideMarkdown, MARKED_OPTIONS } from 'ngx-markdown';
|
|
|
41
40
|
import prettyBytes from 'pretty-bytes';
|
|
42
41
|
import { formatDistanceToNow } from 'date-fns';
|
|
43
42
|
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
44
|
-
import * as i5 from 'ngx-extended-pdf-viewer';
|
|
43
|
+
import * as i5$1 from 'ngx-extended-pdf-viewer';
|
|
45
44
|
import { pdfDefaultOptions, NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';
|
|
46
45
|
import { HttpClient as HttpClient$1, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
47
46
|
|
|
@@ -115,10 +114,10 @@ class ApiService {
|
|
|
115
114
|
return [];
|
|
116
115
|
}
|
|
117
116
|
}
|
|
118
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
119
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
117
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
118
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, providedIn: 'root' });
|
|
120
119
|
}
|
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ApiService, decorators: [{
|
|
122
121
|
type: Injectable,
|
|
123
122
|
args: [{ providedIn: 'root' }]
|
|
124
123
|
}] });
|
|
@@ -282,10 +281,10 @@ class OwnerResolverService {
|
|
|
282
281
|
console.error(error);
|
|
283
282
|
}
|
|
284
283
|
}
|
|
285
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
286
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
284
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
285
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, providedIn: 'root' });
|
|
287
286
|
}
|
|
288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: OwnerResolverService, decorators: [{
|
|
289
288
|
type: Injectable,
|
|
290
289
|
args: [{ providedIn: 'root' }]
|
|
291
290
|
}] });
|
|
@@ -474,10 +473,10 @@ class ContextService {
|
|
|
474
473
|
return null;
|
|
475
474
|
}
|
|
476
475
|
}
|
|
477
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
478
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
476
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
477
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService });
|
|
479
478
|
}
|
|
480
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
479
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextService, decorators: [{
|
|
481
480
|
type: Injectable
|
|
482
481
|
}] });
|
|
483
482
|
|
|
@@ -1689,17 +1688,17 @@ class AiTranslocoLoader {
|
|
|
1689
1688
|
getTranslation(lang) {
|
|
1690
1689
|
return of(translations[lang] || {});
|
|
1691
1690
|
}
|
|
1692
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1693
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1691
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1692
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, providedIn: 'root' });
|
|
1694
1693
|
}
|
|
1695
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoLoader, decorators: [{
|
|
1696
1695
|
type: Injectable,
|
|
1697
1696
|
args: [{ providedIn: 'root' }]
|
|
1698
1697
|
}] });
|
|
1699
1698
|
class AiTranslocoModule {
|
|
1700
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1701
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
1702
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
1699
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1700
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, imports: [TranslocoModule], exports: [TranslocoModule] });
|
|
1701
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, providers: [
|
|
1703
1702
|
{ provide: TRANSLOCO_TRANSPILER, useClass: DefaultTranspiler },
|
|
1704
1703
|
{ provide: TRANSLOCO_LOADER, useClass: AiTranslocoLoader },
|
|
1705
1704
|
provideTransloco({
|
|
@@ -1713,7 +1712,7 @@ class AiTranslocoModule {
|
|
|
1713
1712
|
}),
|
|
1714
1713
|
], imports: [TranslocoModule, TranslocoModule] });
|
|
1715
1714
|
}
|
|
1716
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1715
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiTranslocoModule, decorators: [{
|
|
1717
1716
|
type: NgModule,
|
|
1718
1717
|
args: [{
|
|
1719
1718
|
imports: [TranslocoModule],
|
|
@@ -1772,10 +1771,10 @@ class ChatScrollDirective {
|
|
|
1772
1771
|
this.zone.runOutsideAngular(() => (this.el.nativeElement.scrollTop = this.el.nativeElement.scrollHeight));
|
|
1773
1772
|
}
|
|
1774
1773
|
}
|
|
1775
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1776
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
1774
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatScrollDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
1775
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: ChatScrollDirective, isStandalone: true, selector: "[aiChatScroll]", ngImport: i0 });
|
|
1777
1776
|
}
|
|
1778
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1777
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatScrollDirective, decorators: [{
|
|
1779
1778
|
type: Directive,
|
|
1780
1779
|
args: [{
|
|
1781
1780
|
selector: '[aiChatScroll]',
|
|
@@ -1837,10 +1836,10 @@ class WebsocketService {
|
|
|
1837
1836
|
}
|
|
1838
1837
|
return this.eventObservables$[eventName];
|
|
1839
1838
|
}
|
|
1840
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1841
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
1839
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService, deps: [{ token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1840
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService });
|
|
1842
1841
|
}
|
|
1843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1842
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: WebsocketService, decorators: [{
|
|
1844
1843
|
type: Injectable
|
|
1845
1844
|
}], ctorParameters: () => [{ type: ApiService }] });
|
|
1846
1845
|
|
|
@@ -2371,10 +2370,10 @@ class ChatService {
|
|
|
2371
2370
|
this._messages.push(newMessage || message); // add message
|
|
2372
2371
|
}
|
|
2373
2372
|
}
|
|
2374
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2375
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
2373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2374
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService });
|
|
2376
2375
|
}
|
|
2377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ChatService, decorators: [{
|
|
2378
2377
|
type: Injectable
|
|
2379
2378
|
}], ctorParameters: () => [] });
|
|
2380
2379
|
var WebSocketMessageType;
|
|
@@ -2396,135 +2395,20 @@ var WebSocketMessageType;
|
|
|
2396
2395
|
WebSocketMessageType["ERROR_EVENT"] = "errorEvent";
|
|
2397
2396
|
})(WebSocketMessageType || (WebSocketMessageType = {}));
|
|
2398
2397
|
|
|
2399
|
-
class VoiceRecognitionService {
|
|
2400
|
-
_isListening = false;
|
|
2401
|
-
recognizer = null;
|
|
2402
|
-
tokenExpiration = 0;
|
|
2403
|
-
_preResult$ = new Subject();
|
|
2404
|
-
_result$ = new Subject();
|
|
2405
|
-
audioConfig = AudioConfig.fromDefaultMicrophoneInput();
|
|
2406
|
-
apiService = inject(ApiService);
|
|
2407
|
-
logger = inject(NGXLogger);
|
|
2408
|
-
get isInitialized() {
|
|
2409
|
-
return !!this.recognizer;
|
|
2410
|
-
}
|
|
2411
|
-
get isListening() {
|
|
2412
|
-
return this._isListening;
|
|
2413
|
-
}
|
|
2414
|
-
get isTokenExpired() {
|
|
2415
|
-
const currentTime = Math.floor(Date.now() / 1000);
|
|
2416
|
-
const bufferTime = 180; // 3 min
|
|
2417
|
-
return currentTime + bufferTime >= this.tokenExpiration;
|
|
2418
|
-
}
|
|
2419
|
-
get preResult$() {
|
|
2420
|
-
return this._preResult$.asObservable();
|
|
2421
|
-
}
|
|
2422
|
-
get result$() {
|
|
2423
|
-
return this._result$.asObservable();
|
|
2424
|
-
}
|
|
2425
|
-
async start(language) {
|
|
2426
|
-
if (!this.isInitialized || this.isTokenExpired) {
|
|
2427
|
-
await this.init(language).catch((err) => this.logger.error(err));
|
|
2428
|
-
}
|
|
2429
|
-
this.recognizer?.startContinuousRecognitionAsync(() => { }, (err) => this.logger.error(err));
|
|
2430
|
-
}
|
|
2431
|
-
async stop() {
|
|
2432
|
-
this.recognizer?.stopContinuousRecognitionAsync(() => (this._isListening = false), (err) => {
|
|
2433
|
-
this.logger.error(err);
|
|
2434
|
-
this._isListening = false;
|
|
2435
|
-
this.recognizer?.close();
|
|
2436
|
-
this.recognizer = null;
|
|
2437
|
-
});
|
|
2438
|
-
}
|
|
2439
|
-
async toggle(language) {
|
|
2440
|
-
if (this.isListening) {
|
|
2441
|
-
await this.stop();
|
|
2442
|
-
}
|
|
2443
|
-
else {
|
|
2444
|
-
await this.start(language);
|
|
2445
|
-
}
|
|
2446
|
-
}
|
|
2447
|
-
parseJwtToken(token) {
|
|
2448
|
-
try {
|
|
2449
|
-
const base64Url = token.split('.')[1];
|
|
2450
|
-
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
2451
|
-
const jsonPayload = atob(base64);
|
|
2452
|
-
const payload = JSON.parse(jsonPayload);
|
|
2453
|
-
return payload.exp || 0;
|
|
2454
|
-
}
|
|
2455
|
-
catch (error) {
|
|
2456
|
-
this.logger.error('Error parsing JWT token:', error);
|
|
2457
|
-
return 0;
|
|
2458
|
-
}
|
|
2459
|
-
}
|
|
2460
|
-
async init(language = 'de-DE') {
|
|
2461
|
-
const { token, region } = await this.apiService.getSpeechToken();
|
|
2462
|
-
this.tokenExpiration = this.parseJwtToken(token);
|
|
2463
|
-
const speechConfig = SpeechConfig.fromAuthorizationToken(token, region);
|
|
2464
|
-
speechConfig.speechRecognitionLanguage = language;
|
|
2465
|
-
this.recognizer = new SpeechRecognizer(speechConfig, this.audioConfig);
|
|
2466
|
-
this.recognizer.recognized = (_sender, event) => {
|
|
2467
|
-
if (event.result.text) {
|
|
2468
|
-
this._result$.next(event.result.text);
|
|
2469
|
-
}
|
|
2470
|
-
};
|
|
2471
|
-
this.recognizer.recognizing = (_sender, event) => {
|
|
2472
|
-
if (event.result.text) {
|
|
2473
|
-
this._preResult$.next(event.result.text);
|
|
2474
|
-
}
|
|
2475
|
-
};
|
|
2476
|
-
this.recognizer.sessionStarted = (_sender, _event) => {
|
|
2477
|
-
this._isListening = true;
|
|
2478
|
-
};
|
|
2479
|
-
this.recognizer.sessionStopped = (_sender, _event) => {
|
|
2480
|
-
this._isListening = false;
|
|
2481
|
-
};
|
|
2482
|
-
this.recognizer.canceled = (_sender, event) => {
|
|
2483
|
-
this.logger.debug(event.errorDetails);
|
|
2484
|
-
this.logger.debug(event.reason);
|
|
2485
|
-
this._isListening = false;
|
|
2486
|
-
};
|
|
2487
|
-
}
|
|
2488
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2489
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, providedIn: 'root' });
|
|
2490
|
-
}
|
|
2491
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: VoiceRecognitionService, decorators: [{
|
|
2492
|
-
type: Injectable,
|
|
2493
|
-
args: [{ providedIn: 'root' }]
|
|
2494
|
-
}] });
|
|
2495
|
-
|
|
2496
2398
|
class MessageInputComponent {
|
|
2497
2399
|
messageInput;
|
|
2498
2400
|
startConversation = '';
|
|
2499
2401
|
chatService = inject(ChatService);
|
|
2500
|
-
voiceRecognitionService = inject(VoiceRecognitionService);
|
|
2501
2402
|
isMobileView;
|
|
2502
2403
|
message;
|
|
2503
2404
|
tmpMessage;
|
|
2504
2405
|
destroyRef = inject(DestroyRef);
|
|
2505
|
-
translocoService = inject(TranslocoService);
|
|
2506
|
-
lang;
|
|
2507
2406
|
constructor(breakpointObserver) {
|
|
2508
2407
|
breakpointObserver
|
|
2509
2408
|
.observe([Breakpoints.XSmall, Breakpoints.Small])
|
|
2510
2409
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2511
2410
|
.subscribe((result) => (this.isMobileView = result.matches));
|
|
2512
2411
|
}
|
|
2513
|
-
ngOnInit() {
|
|
2514
|
-
this.lang = this.translocoService.getActiveLang();
|
|
2515
|
-
this.translocoService.langChanges$
|
|
2516
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
2517
|
-
.subscribe((l) => (this.lang = l));
|
|
2518
|
-
this.voiceRecognitionService.preResult$.subscribe((result) => {
|
|
2519
|
-
const msg = (this.tmpMessage || '') + ' ' + result;
|
|
2520
|
-
this.message = msg.trim();
|
|
2521
|
-
});
|
|
2522
|
-
this.voiceRecognitionService.result$.subscribe((result) => {
|
|
2523
|
-
const msg = (this.tmpMessage || '') + ' ' + result;
|
|
2524
|
-
this.message = msg.trim();
|
|
2525
|
-
this.tmpMessage = this.message;
|
|
2526
|
-
});
|
|
2527
|
-
}
|
|
2528
2412
|
sendMessage() {
|
|
2529
2413
|
this.message = this.message.trim();
|
|
2530
2414
|
if (!this.message) {
|
|
@@ -2537,18 +2421,10 @@ class MessageInputComponent {
|
|
|
2537
2421
|
this.messageInput.nativeElement.focus();
|
|
2538
2422
|
}
|
|
2539
2423
|
}
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
const lang = this.lang === 'de' ? 'de-DE' : 'en-US';
|
|
2543
|
-
this.voiceRecognitionService.toggle(lang);
|
|
2544
|
-
}
|
|
2545
|
-
stopVoice() {
|
|
2546
|
-
this.voiceRecognitionService.stop();
|
|
2547
|
-
}
|
|
2548
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
2549
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: MessageInputComponent, isStandalone: true, selector: "ai-message-input", inputs: { startConversation: "startConversation" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["messageInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.use_microphone')\"\n matTooltipPosition=\"above\"\n (click)=\"toggleVoice()\"\n >\n <mat-icon\n class=\"icon-md\"\n [ngClass]=\"{ 'text-red-600': voiceRecognitionService.isListening }\"\n [svgIcon]=\"voiceRecognitionService.isListening ? 'mic_record' : 'mic'\"\n ></mat-icon>\n </button>\n @if (!voiceRecognitionService.isListening) {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.send_message')\"\n matTooltipPosition=\"above\"\n (click)=\"sendMessage()\"\n >\n <mat-icon svgIcon=\"send\" class=\"icon-md\"></mat-icon>\n </button>\n } @else {\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.stop_recording')\"\n matTooltipPosition=\"above\"\n (click)=\"stopVoice()\"\n >\n <mat-icon svgIcon=\"record_stop\" class=\"icon-md\"></mat-icon>\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
|
|
2424
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
2425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: MessageInputComponent, isStandalone: true, selector: "ai-message-input", inputs: { startConversation: "startConversation" }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["messageInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.send_message')\"\n matTooltipPosition=\"above\"\n (click)=\"sendMessage()\"\n >\n <mat-icon svgIcon=\"send\" class=\"icon-md\"></mat-icon>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] });
|
|
2550
2426
|
}
|
|
2551
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageInputComponent, decorators: [{
|
|
2552
2428
|
type: Component,
|
|
2553
2429
|
args: [{ imports: [
|
|
2554
2430
|
CdkTextareaAutosize,
|
|
@@ -2563,7 +2439,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
2563
2439
|
MatTooltipModule,
|
|
2564
2440
|
TextFieldModule,
|
|
2565
2441
|
TranslocoModule,
|
|
2566
|
-
], selector: 'ai-message-input', template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.
|
|
2442
|
+
], selector: 'ai-message-input', template: "<div\n class=\"mx-auto flex w-full items-end justify-center bg-zinc-50 py-2 pl-4 pr-2 md:gap-x-2 md:rounded-2xl md:py-4 md:pr-4 lg:max-w-screen-md xl:max-w-screen-lg dark:border dark:border-zinc-600/30 dark:bg-black\"\n *transloco=\"let t\"\n>\n <textarea\n class=\"w-full md:text-lg md:font-semibold\"\n matInput\n cdkAutosizeMaxRows=\"10\"\n cdkTextareaAutosize\n [cdkAutosizeMinRows]=\"isMobileView ? 2 : 4\"\n [placeholder]=\"t('message')\"\n [(ngModel)]=\"message\"\n (keydown.enter)=\"sendMessage() || $event.preventDefault()\"\n spellcheck=\"false\"\n #autosize=\"cdkTextareaAutosize\"\n #messageInput\n ></textarea>\n <div class=\"flex md:flex-col md:gap-2\">\n <button\n mat-icon-button\n [matTooltip]=\"t('ai.send_message')\"\n matTooltipPosition=\"above\"\n (click)=\"sendMessage()\"\n >\n <mat-icon svgIcon=\"send\" class=\"icon-md\"></mat-icon>\n </button>\n </div>\n</div>\n" }]
|
|
2567
2443
|
}], ctorParameters: () => [{ type: i1.BreakpointObserver }], propDecorators: { messageInput: [{
|
|
2568
2444
|
type: ViewChild,
|
|
2569
2445
|
args: ['messageInput']
|
|
@@ -2581,10 +2457,10 @@ class BytesPipe {
|
|
|
2581
2457
|
}
|
|
2582
2458
|
return prettyBytes(input);
|
|
2583
2459
|
}
|
|
2584
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2585
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
2460
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2461
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, isStandalone: false, name: "bytes" });
|
|
2586
2462
|
}
|
|
2587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BytesPipe, decorators: [{
|
|
2588
2464
|
type: Pipe,
|
|
2589
2465
|
args: [{
|
|
2590
2466
|
name: 'bytes',
|
|
@@ -2621,10 +2497,10 @@ class ColorLevelPipe {
|
|
|
2621
2497
|
}
|
|
2622
2498
|
return color;
|
|
2623
2499
|
}
|
|
2624
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2625
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
2500
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, deps: [{ token: i1$1.NGXLogger }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2501
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, isStandalone: false, name: "colorLevel" });
|
|
2626
2502
|
}
|
|
2627
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2503
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ColorLevelPipe, decorators: [{
|
|
2628
2504
|
type: Pipe,
|
|
2629
2505
|
args: [{
|
|
2630
2506
|
name: 'colorLevel',
|
|
@@ -2636,10 +2512,10 @@ class DateAgoPipe {
|
|
|
2636
2512
|
transform(value) {
|
|
2637
2513
|
return formatDistanceToNow(value);
|
|
2638
2514
|
}
|
|
2639
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2640
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
2515
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2516
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, isStandalone: false, name: "dateAgo", pure: false });
|
|
2641
2517
|
}
|
|
2642
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DateAgoPipe, decorators: [{
|
|
2643
2519
|
type: Pipe,
|
|
2644
2520
|
args: [{
|
|
2645
2521
|
name: 'dateAgo',
|
|
@@ -2649,11 +2525,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
2649
2525
|
}] });
|
|
2650
2526
|
|
|
2651
2527
|
class UiPipesModule {
|
|
2652
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2653
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
2654
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
2528
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2529
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, declarations: [BytesPipe, ColorLevelPipe, DateAgoPipe], imports: [CommonModule], exports: [BytesPipe, ColorLevelPipe, DateAgoPipe] });
|
|
2530
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, imports: [CommonModule] });
|
|
2655
2531
|
}
|
|
2656
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2532
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: UiPipesModule, decorators: [{
|
|
2657
2533
|
type: NgModule,
|
|
2658
2534
|
args: [{
|
|
2659
2535
|
imports: [CommonModule],
|
|
@@ -2829,10 +2705,10 @@ class PreviewComponent {
|
|
|
2829
2705
|
this.isLoading = false;
|
|
2830
2706
|
});
|
|
2831
2707
|
}
|
|
2832
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2833
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2708
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
2709
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: PreviewComponent, isStandalone: true, selector: "ai-content-preview", ngImport: i0, template: "<ng-container>\n <div mat-dialog-title class=\"relative\">\n <div class=\"truncate pr-10\">{{ content.filename }}</div>\n <button\n mat-icon-button\n matDialogClose\n class=\"small absolute right-4 top-4 bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div mat-dialog-content class=\"flex grow flex-col\">\n @if (markdown) {\n <div class=\"w-full overflow-y-auto rounded-xl bg-white p-4\">\n <markdown class=\"markdown-body\" [data]=\"markdown\"></markdown>\n </div>\n } @else if (content.mimetype === 'application/pdf') {\n <div class=\"mx-auto w-[50rem] sm:h-[65vh]\">\n <ngx-extended-pdf-viewer\n [authorization]=\"token\"\n [src]=\"pdfSrc\"\n [disableHistory]=\"true\"\n [showBorders]=\"false\"\n [showDownloadButton]=\"false\"\n [showDrawEditor]=\"false\"\n [showEditor]=\"false\"\n [showHighlightEditor]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"false\"\n [showRotateButton]=\"false\"\n [showSecondaryToolbarButton]=\"false\"\n [showSidebarButton]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [useBrowserLocale]=\"true\"\n [zoom]=\"auto\"\n [page]=\"pageNumber\"\n ></ngx-extended-pdf-viewer>\n </div>\n } @else if (previewUrl) {\n <div\n class=\"group relative w-full overflow-hidden rounded-2xl border border-zinc-300/40 bg-zinc-300/30 p-4 dark:border-zinc-700/40 dark:bg-zinc-700/30\"\n >\n <div class=\"w-full overflow-hidden rounded-lg\">\n <img class=\"w-full\" [src]=\"previewUrl\" alt=\"\" />\n </div>\n </div>\n }\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i5$1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] });
|
|
2834
2710
|
}
|
|
2835
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewComponent, decorators: [{
|
|
2836
2712
|
type: Component,
|
|
2837
2713
|
args: [{ imports: [
|
|
2838
2714
|
CommonModule,
|
|
@@ -2917,10 +2793,10 @@ class ContextOverlayComponent {
|
|
|
2917
2793
|
return false;
|
|
2918
2794
|
}
|
|
2919
2795
|
}
|
|
2920
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2921
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2796
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextOverlayComponent, deps: [{ token: OVERLAY_RESOURCE_ID }, { token: OVERLAY_RESOURCE_TYPE }, { token: OVERLAY_PAGE_NUMBER }], target: i0.ɵɵFactoryTarget.Component });
|
|
2797
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ContextOverlayComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"relative min-w-48 max-w-md rounded-2xl border border-zinc-400/50 bg-zinc-100/60 p-4 shadow-md backdrop-blur-md dark:border-zinc-600/50 dark:bg-zinc-800/60\"\n *transloco=\"let t\"\n>\n @if (resource) {\n @if (pageNumber) {\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n <div class=\"flex items-center gap-x-1 text-lg\">\n <span>{{ t('ai.source') }}:</span>\n <button\n class=\"text-blue-700 underline hover:text-blue-500 dark:text-blue-100 dark:hover:text-blue-400\"\n (click)=\"previewContent(pageNumber)\"\n >\n {{ t('page') }} {{ pageNumber }}\n </button>\n <span>{{ t('ai.of_document') }}</span>\n </div>\n <div class=\"mx-2 h-0.5 bg-zinc-200 dark:bg-zinc-700\"></div>\n <div class=\"flex items-center gap-x-3\">\n <mat-icon [svgIcon]=\"iconForMimeType()\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ resource?.filename }}\n </div>\n </div>\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ asset.name }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div\n class=\"flex w-full flex-col items-center justify-center gap-x-3 pb-4 sm:flex-row sm:justify-start\"\n >\n <div\n class=\"flex rounded-xl border border-zinc-300/50 bg-zinc-300/40 p-2 dark:border-zinc-700/50 dark:bg-zinc-700/30\"\n >\n <mat-icon class=\"icon-md\" [svgIcon]=\"iconForMimeType()\"></mat-icon>\n </div>\n <div class=\"w-full overflow-hidden\">\n <div class=\"flex w-full flex-col items-center pr-8 sm:items-start\">\n <div\n class=\"w-full truncate text-md font-semibold text-zinc-950 dark:text-zinc-50\"\n >\n {{ resource?.name || resource?.filename }}\n </div>\n <div\n class=\"flex flex-col gap-x-2 text-sm text-zinc-900/70 sm:flex-row sm:items-center dark:text-zinc-100/70\"\n >\n <span>{{ t(labelForType()) }}</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex w-full flex-col gap-y-2 px-2\">\n @if (resource?.owner?.name) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"shield_person\" class=\"icon-sm\"></mat-icon>\n <div>\n {{ t('owner.managed_by') }} <b>{{ resource.owner.name }}</b>\n </div>\n </div>\n }\n @if (asset) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"asset\" class=\"icon-sm\"></mat-icon>\n <div>{{ asset.name }} ({{ asset.type$name }})</div>\n </div>\n }\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"history\" class=\"icon-sm\"></mat-icon>\n <div class=\"flex flex-col gap-x-2 sm:flex-row sm:items-center\">\n @if (\n resource?.updatedAt && resource?.updatedAt !== resource?.createdAt\n ) {\n <span>\n {{ t('last_updated') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.updatedAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.updatedAt | dateAgo }}\n </span>\n </span>\n } @else {\n <span>\n {{ t('created') }}\n <span\n class=\"select-none\"\n matTooltip=\"{{ resource?.createdAt | date: 'medium' }}\"\n matTooltipClass=\"text-sm\"\n >\n {{ resource?.createdAt | dateAgo }}\n </span>\n </span>\n }\n </div>\n </div>\n @if (resource?.description) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"slide_text\" class=\"icon-sm\"></mat-icon>\n <div class=\"line-clamp-3\">{{ resource?.description }}</div>\n </div>\n }\n @if (resource?.size) {\n <div class=\"flex items-center gap-x-3\">\n <mat-icon svgIcon=\"drive\" class=\"icon-sm\"></mat-icon>\n <div>{{ resource?.size | bytes }}</div>\n </div>\n }\n @if (isPreviewSupported()) {\n <div class=\"w-full px-4 pt-4\">\n <button\n mat-raised-button\n color=\"primary\"\n class=\"w-full\"\n (click)=\"previewContent()\"\n >\n {{ t('show_preview') }}\n </button>\n </div>\n }\n </div>\n }\n } @else if (status?.isLoading) {\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n } @else {\n <div class=\"flex flex-col gap-y-1 px-2 py-1\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', { item: t(resourceType) })\n }}</span>\n <span class=\"text-xs\">{{ resourceId }}</span>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.DatePipe, name: "date" }, { kind: "ngmodule", type: ClipboardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: DateAgoPipe, name: "dateAgo" }] });
|
|
2922
2798
|
}
|
|
2923
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ContextOverlayComponent, decorators: [{
|
|
2924
2800
|
type: Component,
|
|
2925
2801
|
args: [{ imports: [
|
|
2926
2802
|
CommonModule,
|
|
@@ -2986,10 +2862,10 @@ class MessageContextComponent {
|
|
|
2986
2862
|
this.overlayRef.attach(portal);
|
|
2987
2863
|
this.overlayRef.backdropClick().subscribe(() => this.overlayRef?.detach());
|
|
2988
2864
|
}
|
|
2989
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2990
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: MessageContextComponent, isStandalone: true, selector: "ai-message-context", inputs: { isLastMessage: "isLastMessage", message: "message" }, ngImport: i0, template: "<cdk-accordion *transloco=\"let t\">\n <cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [expanded]=\"isLastMessage\"\n >\n <div\n class=\"flex min-w-80 max-w-full flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\"\n >\n @if (message?.parsedContent?.references?.length) {\n <div\n class=\"flex cursor-pointer items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\"\n (click)=\"accordionItem.toggle()\"\n (keyup.enter)=\"accordionItem.toggle()\"\n tabindex=\"0\"\n >\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-bold\">{{ t('ai.context') }}</span>\n </div>\n @if (accordionItem.expanded) {\n <div class=\"flex flex-nowrap gap-x-3 overflow-x-auto px-5 pb-3\">\n @for (\n ref of message?.parsedContent?.references;\n track ref.reference_id\n ) {\n @if (contextService.getContext(ref.id); as resource) {\n @if (\n ref.resourceType === 'asset' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (resource.type$name) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{\n resource.type$name\n }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (ref.resourceType === 'content') {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon\n [svgIcon]=\"iconForMimeType(resource.mimetype)\"\n ></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.filename\n }}</span>\n @if (\n contextService.assetForContent(resource.id);\n as asset\n ) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (\n ref.resourceType === 'event' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"calendar_clock\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (contextService.assetForEvent(resource); as asset) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n } @else if (contextService.status.get(ref.id)?.isLoading) {\n <div\n class=\"flex rounded-2xl border border-zinc-400/40 bg-zinc-400/20 px-2 py-1 dark:border-black/50 dark:bg-black/20\"\n >\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n </div>\n } @else {\n <div\n class=\"min-w-40 rounded-2xl border border-zinc-400/40 bg-zinc-400/20 dark:border-black/50 dark:bg-black/20\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-red-300 bg-red-100 text-red-700 dark:border-red-900 dark:bg-red-950/80 dark:text-red-400\"\n >\n <mat-icon svgIcon=\"error_circle\"></mat-icon>\n </div>\n <div class=\"flex h-full flex-col pr-4\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', {\n item: t(ref.resourceType),\n })\n }}</span>\n <span class=\"text-xs\">{{ ref.id }}</span>\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n </cdk-accordion-item>\n</cdk-accordion>\n", styles: ["@keyframes flash{0%,to{background:transparent}50%{background:#06b6d44d}}.animate-highlight{animation:flash .75s linear;animation-fill-mode:backwards;animation-iteration-count:2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "directive", type: i1$3.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }, { kind: "directive", type: i1$3.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
|
|
2865
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2866
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: MessageContextComponent, isStandalone: true, selector: "ai-message-context", inputs: { isLastMessage: "isLastMessage", message: "message" }, ngImport: i0, template: "<cdk-accordion *transloco=\"let t\">\n <cdk-accordion-item\n #accordionItem=\"cdkAccordionItem\"\n [expanded]=\"isLastMessage\"\n >\n <div\n class=\"flex min-w-80 max-w-full flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\"\n >\n @if (message?.parsedContent?.references?.length) {\n <div\n class=\"flex cursor-pointer items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\"\n (click)=\"accordionItem.toggle()\"\n (keyup.enter)=\"accordionItem.toggle()\"\n tabindex=\"0\"\n >\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-bold\">{{ t('ai.context') }}</span>\n </div>\n @if (accordionItem.expanded) {\n <div class=\"flex flex-nowrap gap-x-3 overflow-x-auto px-5 pb-3\">\n @for (\n ref of message?.parsedContent?.references;\n track ref.reference_id\n ) {\n @if (contextService.getContext(ref.id); as resource) {\n @if (\n ref.resourceType === 'asset' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (resource.type$name) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{\n resource.type$name\n }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (ref.resourceType === 'content') {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon\n [svgIcon]=\"iconForMimeType(resource.mimetype)\"\n ></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.filename\n }}</span>\n @if (\n contextService.assetForContent(resource.id);\n as asset\n ) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (\n ref.resourceType === 'event' &&\n contextService.getContext(ref.id)\n ) {\n <div\n class=\"min-w-40 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"openOverlay($event, ref.id, ref.resourceType)\"\n (keyup.enter)=\"\n openOverlay($event, ref.id, ref.resourceType)\n \"\n tabindex=\"0\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n [class.animate-highlight]=\"\n resource.id === chatService.highlightContext\n \"\n (animationend)=\"chatService.highlightContext = ''\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\"\n >\n <mat-icon svgIcon=\"calendar_clock\"></mat-icon>\n </div>\n <div\n class=\"flex h-full grow flex-col overflow-hidden pr-4\"\n >\n <span class=\"truncate text-md font-semibold\">{{\n resource.name\n }}</span>\n @if (contextService.assetForEvent(resource); as asset) {\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ asset.name }}</span>\n <span>\u00B7</span>\n <span class=\"truncate\">{{ asset.type$name }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n } @else if (contextService.status.get(ref.id)?.isLoading) {\n <div\n class=\"flex rounded-2xl border border-zinc-400/40 bg-zinc-400/20 px-2 py-1 dark:border-black/50 dark:bg-black/20\"\n >\n <div class=\"flex h-10 w-10 items-center justify-center\">\n <mat-spinner strokeWidth=\"1\" diameter=\"18\"></mat-spinner>\n </div>\n </div>\n } @else {\n <div\n class=\"min-w-40 rounded-2xl border border-zinc-400/40 bg-zinc-400/20 dark:border-black/50 dark:bg-black/20\"\n >\n <div\n class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\"\n >\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-red-300 bg-red-100 text-red-700 dark:border-red-900 dark:bg-red-950/80 dark:text-red-400\"\n >\n <mat-icon svgIcon=\"error_circle\"></mat-icon>\n </div>\n <div class=\"flex h-full flex-col pr-4\">\n <span class=\"text-md font-semibold\">{{\n t('toast_error_load_item', {\n item: t(ref.resourceType),\n })\n }}</span>\n <span class=\"text-xs\">{{ ref.id }}</span>\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n }\n </div>\n </cdk-accordion-item>\n</cdk-accordion>\n", styles: ["@keyframes flash{0%,to{background:transparent}50%{background:#06b6d44d}}.animate-highlight{animation:flash .75s linear;animation-fill-mode:backwards;animation-iteration-count:2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "directive", type: i1$4.CdkAccordion, selector: "cdk-accordion, [cdkAccordion]", inputs: ["multi"], exportAs: ["cdkAccordion"] }, { kind: "directive", type: i1$4.CdkAccordionItem, selector: "cdk-accordion-item, [cdkAccordionItem]", inputs: ["expanded", "disabled"], outputs: ["closed", "opened", "destroyed", "expandedChange"], exportAs: ["cdkAccordionItem"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
|
|
2991
2867
|
}
|
|
2992
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2868
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MessageContextComponent, decorators: [{
|
|
2993
2869
|
type: Component,
|
|
2994
2870
|
args: [{ imports: [
|
|
2995
2871
|
CommonModule,
|
|
@@ -3105,10 +2981,10 @@ class ThreadComponent {
|
|
|
3105
2981
|
selectChoice(selection, toolMessage) {
|
|
3106
2982
|
this.chatService.selectChoice(selection, toolMessage);
|
|
3107
2983
|
}
|
|
3108
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3109
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
2984
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThreadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2985
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.6", type: ThreadComponent, isStandalone: true, selector: "ai-thread", ngImport: i0, template: "<div class=\"relative flex h-full w-full flex-col gap-1 px-6 py-4\" *transloco=\"let t\">\n @if (chatService.isLoading) {\n <div class=\"absolute inset-0 z-100 flex items-center justify-center backdrop-blur-lg\">\n <mat-spinner diameter=\"28\"></mat-spinner>\n </div>\n }\n @for (item of chatService.messages; track item.id; let idx = $index) {\n @if (item.role === 'assistant' && item.parsedContent) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <markdown class=\"markdown-body\" [data]=\"getMarkdownContent(item)\" (click)=\"interceptClick($event)\"></markdown>\n @if (item.parsedContent.references?.length) {\n <ai-message-context [message]=\"item\" [isLastMessage]=\"idx === chatService.messages.length - 1\" class=\"mt-2\"></ai-message-context>\n }\n </div>\n } @else if (item.role === 'assistant' && item.status === 'failed' && getFailReason(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col gap-y-2 self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex items-center gap-x-2 rounded-2xl bg-red-400/10 px-4 py-2 dark:bg-red-600/10\">\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-600/80 icon-sm dark:text-red-400/80\"></mat-icon>\n <span>{{ getFailReason(item) }}</span>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'action' && item.status && getToolStatus(item)) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-1 text-lg md:text-xl\">\n <div\n class=\"flex w-fit items-center gap-x-2 rounded-2xl bg-zinc-300/20 px-4 py-1 text-md text-zinc-800/90 dark:bg-black/70 dark:text-zinc-100/90\"\n >\n @if (item.status === 'completed') {\n <mat-icon svgIcon=\"checkmark_circle\" class=\"text-green-500/80 icon-sm dark:text-green-400/80\"></mat-icon>\n } @else if (item.status === 'failed') {\n <mat-icon svgIcon=\"dismiss_circle\" class=\"text-red-500/80 icon-sm dark:text-red-400/80\"></mat-icon>\n } @else if (item.status === 'pending') {\n <mat-icon svgIcon=\"hourglass_quarter\" class=\"text-zinc-700/60 icon-sm dark:text-zinc-300/40\"></mat-icon>\n } @else if (item.status === 'processing') {\n <mat-spinner diameter=\"16\"></mat-spinner>\n }\n <i>{{ getToolStatus(item) }}</i>\n </div>\n </div>\n } @else if (item.role === 'tool' && item.toolType === 'choice' && item.status === 'processing' && item.args?.choices) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center px-2 py-2 text-lg md:text-xl\">\n <div class=\"flex flex-col rounded-2xl bg-zinc-300/40 pt-3 dark:bg-zinc-700/30\">\n @if (item.args.message) {\n <div class=\"flex items-center gap-x-3 px-5 pb-3 text-lg text-zinc-800 dark:text-zinc-300\">\n <mat-icon svgIcon=\"layer_diagonal_sparkle\"></mat-icon>\n <span class=\"font-semibold\">{{ item.args.message }}</span>\n </div>\n }\n <div class=\"flex flex-wrap gap-x-3 gap-y-2 overflow-x-auto px-5 pb-3\">\n @for (choice of item.args.choices; track choice.id) {\n <div\n class=\"min-w-48 max-w-80 cursor-pointer rounded-2xl border border-zinc-400/40 bg-zinc-400/20 hover:bg-zinc-400/30 dark:border-black/50 dark:bg-black/20\"\n (click)=\"selectChoice(choice, item)\"\n (keyup.enter)=\"selectChoice(choice, item)\"\n tabindex=\"0\"\n >\n <div class=\"flex grow items-center gap-x-2 rounded-2xl px-2 py-1\">\n <div class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border border-zinc-400/30\">\n <mat-icon svgIcon=\"asset\"></mat-icon>\n </div>\n <div class=\"flex h-full grow flex-col overflow-hidden pr-4\">\n <span class=\"truncate text-md font-semibold\">{{ choice.name }}</span>\n <div class=\"flex items-center gap-x-2 text-xs\">\n <span class=\"truncate\">{{ choice.typeName }}</span>\n @if (choice.location) {\n <span class=\"truncate\">{{ choice.location }}</span>\n }\n @if (choice.factory) {\n <span class=\"truncate\">{{ choice.factory }}</span>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n } @else if (item.role === 'user' && !item.hidden) {\n <div class=\"flex max-w-[90%] flex-col self-end py-4 md:max-w-[80%]\">\n <div class=\"rounded-2xl bg-zinc-300/30 px-6 py-4 text-md md:text-lg dark:bg-black/20\">\n <markdown class=\"markdown-body\" [data]=\"item.content\"></markdown>\n </div>\n </div>\n }\n }\n\n @if (chatService.isProcessing) {\n <div class=\"flex w-full max-w-[85%] flex-col self-center rounded-2xl text-lg md:text-xl\">\n <div class=\"flex flex-col gap-y-2 px-2 py-4\">\n <div class=\"pulse-loader flex items-center gap-x-1 text-zinc-700/50 dark:text-zinc-300/30\"> <div></div><div></div><div></div> </div>\n </div>\n </div>\n }\n</div>\n", styles: [".pulse-loader>div{background-color:currentColor;width:8px;height:8px;border-radius:100%;animation:pulse 1s ease infinite}.pulse-loader>div:nth-child(2){animation-delay:.1s!important}.pulse-loader>div:nth-child(3){animation-delay:.2s!important}@keyframes pulse{0%,60%,to{opacity:1;transform:scale(1)}30%{opacity:.1;transform:scale(.01)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CdkAccordionModule }, { kind: "ngmodule", type: MarkdownModule }, { kind: "component", type: i1$2.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: MessageContextComponent, selector: "ai-message-context", inputs: ["isLastMessage", "message"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: UiPipesModule }] });
|
|
3110
2986
|
}
|
|
3111
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2987
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ThreadComponent, decorators: [{
|
|
3112
2988
|
type: Component,
|
|
3113
2989
|
args: [{ imports: [
|
|
3114
2990
|
CommonModule,
|
|
@@ -3369,10 +3245,10 @@ class AiChatDialogComponent {
|
|
|
3369
3245
|
close(message) {
|
|
3370
3246
|
this.matDialogRef.close(message);
|
|
3371
3247
|
}
|
|
3372
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3373
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: AiChatDialogComponent, isStandalone: true, selector: "ng-component", providers: [ChatService, ContextService, WebsocketService], ngImport: i0, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AiTranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: ChatScrollDirective, selector: "[aiChatScroll]" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LoggerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: MessageInputComponent, selector: "ai-message-input", inputs: ["startConversation"] }, { kind: "component", type: ThreadComponent, selector: "ai-thread" }] });
|
|
3248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiChatDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i3.MatDialogRef }, { token: i2$2.MatIconRegistry }, { token: i3$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
3249
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: AiChatDialogComponent, isStandalone: true, selector: "ng-component", providers: [ChatService, ContextService, WebsocketService], ngImport: i0, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n", styles: ["*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{inset:0!important}.right-4{right:1rem!important}.top-4{top:1rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mt-2{margin-top:.5rem!important}.line-clamp-3{display:-webkit-box!important;overflow:hidden!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important}.flex{display:flex!important}.contents{display:contents!important}.hidden{display:none!important}.h-0\\.5{height:.125rem!important}.h-10{height:2.5rem!important}.h-full{height:100%!important}.w-10{width:2.5rem!important}.w-\\[50rem\\]{width:50rem!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.min-w-40{min-width:10rem!important}.min-w-48{min-width:12rem!important}.min-w-80{min-width:20rem!important}.max-w-80{max-width:20rem!important}.max-w-\\[85\\%\\]{max-width:85%!important}.max-w-\\[90\\%\\]{max-width:90%!important}.max-w-full{max-width:100%!important}.max-w-md{max-width:28rem!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-pointer{cursor:pointer!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.gap-1{gap:.25rem!important}.gap-x-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.gap-x-3{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.gap-y-1{row-gap:.25rem!important}.gap-y-2{row-gap:.5rem!important}.self-end{align-self:flex-end!important}.self-center{align-self:center!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.rounded-2xl{border-radius:1rem!important}.rounded-lg{border-radius:.5rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity,1))!important}.border-zinc-300\\/40{border-color:#d4d4d866!important}.border-zinc-300\\/50{border-color:#d4d4d880!important}.border-zinc-400\\/30{border-color:#a1a1aa4d!important}.border-zinc-400\\/40{border-color:#a1a1aa66!important}.border-zinc-400\\/50{border-color:#a1a1aa80!important}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity,1))!important}.bg-blue-600,.bg-gray-600{--tw-bg-opacity:1!important}.bg-gray-600{background-color:rgb(75 85 99/var(--tw-bg-opacity,1))!important}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity,1))!important}.bg-green-600,.bg-red-100{--tw-bg-opacity:1!important}.bg-red-100{background-color:rgb(254 226 226/var(--tw-bg-opacity,1))!important}.bg-red-400\\/10{background-color:#f872721a!important}.bg-red-600{background-color:rgb(220 38 38/var(--tw-bg-opacity,1))!important}.bg-red-600,.bg-white{--tw-bg-opacity:1!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.bg-yellow-600{--tw-bg-opacity:1!important;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))!important}.bg-zinc-100\\/60{background-color:#f4f4f599!important}.bg-zinc-200{--tw-bg-opacity:1!important;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))!important}.bg-zinc-300\\/20{background-color:#d4d4d833!important}.bg-zinc-300\\/30{background-color:#d4d4d84d!important}.bg-zinc-300\\/40{background-color:#d4d4d866!important}.bg-zinc-400\\/20{background-color:#a1a1aa33!important}.bg-zinc-50{--tw-bg-opacity:1!important;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))!important}.p-2{padding:.5rem!important}.p-4{padding:1rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-4{padding-bottom:1rem!important;padding-top:1rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:.75rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.pr-10{padding-right:2.5rem!important}.pr-2{padding-right:.5rem!important}.pr-4{padding-right:1rem!important}.pr-8{padding-right:2rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-semibold{font-weight:600!important}.lowercase{text-transform:lowercase!important}.text-amber-600{--tw-text-opacity:1!important;color:rgb(217 119 6/var(--tw-text-opacity,1))!important}.text-blue-600{--tw-text-opacity:1!important;color:rgb(37 99 235/var(--tw-text-opacity,1))!important}.text-blue-700{--tw-text-opacity:1!important;color:rgb(29 78 216/var(--tw-text-opacity,1))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity,1))!important}.text-green-500\\/80{color:#22c55ecc!important}.text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity,1))!important}.text-red-500\\/80{color:#ef4444cc!important}.text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity,1))!important}.text-red-600\\/80{color:#dc2626cc!important}.text-red-700{--tw-text-opacity:1!important;color:rgb(185 28 28/var(--tw-text-opacity,1))!important}.text-zinc-500{--tw-text-opacity:1!important;color:rgb(113 113 122/var(--tw-text-opacity,1))!important}.text-zinc-700\\/50{color:#3f3f4680!important}.text-zinc-700\\/60{color:#3f3f4699!important}.text-zinc-800{--tw-text-opacity:1!important;color:rgb(39 39 42/var(--tw-text-opacity,1))!important}.text-zinc-800\\/90{color:#27272ae6!important}.text-zinc-900\\/70{color:#18181bb3!important}.text-zinc-950{--tw-text-opacity:1!important;color:rgb(9 9 11/var(--tw-text-opacity,1))!important}.underline{text-decoration-line:underline!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)!important}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important;backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)!important}:root{--black:#000;--white:#fff;--white-rgb:255,255,255;--blue-slate-950-rgb:2,6,23;--blue-slate-900-rgb:15,23,42;--blue-slate-800-rgb:30,41,59;--blue-slate-700-rgb:51,65,85;--blue-slate-400-rgb:148,163,184;--blue-slate-300-rgb:203,213,225;--blue-slate-100-rgb:241,245,249;--blue-slate-050-rgb:248,250,252;--gray-800-rgb:31,41,55;--gray-700-rgb:55,65,81;--gray-600-rgb:75,85,99;--gray-200-rgb:229,231,235;--zinc-950-rgb:9,9,11;--zinc-900-rgb:24,24,27;--zinc-800-rgb:39,39,42;--zinc-700-rgb:63,63,70;--zinc-600-rgb:82,82,91;--zinc-500-rgb:113,113,122;--zinc-400-rgb:161,161,170;--zinc-300-rgb:212,212,216;--zinc-200-rgb:228,228,231;--zinc-100-rgb:244,244,245;--zinc-050-rgb:250,250,250;--red-700-rgb:185,28,28;--red-600-rgb:220,38,38;--red-500-rgb:239,68,68;--red-400-rgb:248,113,113;--red-300-rgb:252,165,165;--blue-gray-900-10:rgba(15,23,42,.1);--blue-gray-900-20:rgba(15,23,42,.2);--blue-gray-900:#0f172a;--blue-gray-800:#1e293b;--blue-gray-800-rgb:30,41,59;--blue-gray-700:#334155;--blue-gray-600:#475569;--blue-gray-500:#64748b;--blue-gray-400:#94a3b8;--blue-gray-300:#cbd5e1;--blue-gray-200:#e2e8f0;--blue-gray-100:#f1f5f9;--blue-gray-50:#f8fafc;--blue-gray-light-2:#141b2e;--blue-gray-light-4:#182032;--blue-gray-light-8:#21293b;--blue-gray-light-8-rgb:33,41,59;--blue-gray-light-16:#333b4b;--blue-gray-light-32:#575e6c;--blue-gray-light-64:#a0a5ae;--blue-gray-light-100:#f1f5f9;--blue-gray-dark-2:#e8ecf1;--blue-gray-dark-4:#e8ecf1;--blue-gray-dark-8:#dfe3e8;--blue-gray-dark-16:#cdd1d8;--blue-gray-dark-32:#a9aeb7;--blue-gray-dark-64:#606775;--blue-gray-dark-100:#0f172a;--blue-700:#1d4ed8;--blue-50:#eff6ff;--green-500:#10b981;--green-50:#ecfdf5;--yellow-50:#fffbeb;--yellow-500:#d97706;--red-700:#b91c1c;--red-50:#fef2f2;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--teal-500:#14b8a6;--teal-600:#0d9488;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--hp-light-blue:#13cae6;--hp-gradient-light:#3f8efe;--hp-gradient-highlight:#3ffbda;--hp-gradient-dark:#2b64ff;--font-family:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-chip-container-height:30px;--mdc-chip-container-shape-radius:12px;--mdc-fab-container-shape:12px;--mdc-icon-button-icon-size:24px;--mdc-icon-button-state-layer-size:40px;--mdc-icon-button-icon-color:currentColor;--mdc-linear-progress-active-indicator-color:#020617;--mdc-linear-progress-active-indicator-height:10px;--mdc-linear-progress-track-color:#f4f4f5;--mdc-linear-progress-track-height:10px;--mdc-linear-progress-track-shape:10px;--mdc-plain-tooltip-container-shape:8px;--mdc-protected-button-container-shape:9999px;--mdc-protected-button-keep-touch-target:false;--mat-protected-button-horizontal-padding:24px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-dialog-actions-padding:16px;--mat-dialog-actions-alignment:normal;--mdc-dialog-container-shape:16px;--mdc-dialog-supporting-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-outlined-button-container-height:40px;--mdc-outlined-button-container-shape:9999px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:24px;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-text-button-container-height:40px;--mdc-text-button-container-shape:9999px;--mat-text-button-horizontal-padding:24px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mdc-text-button-keep-touch-target:false;--mat-text-button-with-icon-horizontal-padding:8px;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-menu-container-shape:16px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px;--mat-stepper-container-color:transparent;--mdc-switch-track-height:28px;--mat-switch-track-outline-color:#52525b;--mat-switch-label-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mat-switch-label-text-color:#09090b;--mat-switch-label-text-tracking:0;--mat-switch-label-text-weight:600;--mdc-switch-unselected-handle-color:#52525b;--mdc-switch-unselected-track-color:#d4d4d8;--mdc-switch-unselected-focus-track-color:#cbd5e1;--mdc-switch-unselected-hover-track-color:#cbd5e1;--mdc-switch-unselected-pressed-track-color:#cbd5e1;--mdc-switch-selected-track-color:#1e293b;--mdc-switch-selected-focus-track-color:#334155;--mdc-switch-selected-hover-track-color:#334155;--mdc-switch-selected-pressed-track-color:#334155;--mat-switch-selected-track-outline-color:#020617;--mdc-switch-selected-handle-color:#cbd5e1;--mdc-switch-selected-focus-handle-color:#3ffbda;--mdc-switch-selected-hover-handle-color:#3ffbda;--mdc-switch-selected-pressed-handle-color:#3ffbda;--mdc-switch-selected-focus-state-layer-color:#3ffbda;--mdc-switch-selected-hover-state-layer-color:#3ffbda;--mdc-switch-selected-pressed-state-layer-color:#3ffbda;--mdc-switch-unselected-focus-state-layer-color:#020617;--mdc-switch-unselected-hover-state-layer-color:#020617;--mdc-switch-unselected-pressed-state-layer-color:#020617;--mdc-switch-selected-icon-color:#020617;--mat-switch-with-icon-handle-size:22px;--hot-toast-border-radius:16px;--hot-toast-padding:14px 20px;--hot-toast-info-icon-background-color:#1d4ed8;--hot-toast-checkmark-icon-background-color:#10b981;--hot-toast-warning-icon-background-color:#d97706;--hot-toast-error-icon-background-color:#b91c1c;--color-primary:#020617;--color-primary-inverted:#f8fafc;--color-on-primary:#f8fafc;--color-danger:#fca5a5;--color-on-danger:#dc2626;--menu_container-color:#020617;--menu_text-color:#f8fafc;--color-surface:#fff;--color-on-surface:#1e293b;--color-on-surface-lighter:#64748b;--color-base:#f1f5f9;--color-base-900:#f1f5f9;--color-base-800:#e2e8f0;--color-base-700:#cbd5e1;--color-base-600:#94a3b8;--color-base-500:#64748b;--color-base-400:#475569;--color-base-300:#334155;--color-base-200:#1e293b;--color-base-100:#0f172a;--color-border-around-base:#e2e8f0;--color-alternate:#f1f5f9;--color-alternate-lighter:#f8fafc;--color-active:#e2e8f0;--color-active-lighter:#f1f5f9;--color-on-active:#0f172a;--color-interactive:#cbd5e1;--color-on-interactive:#0f172a;--color-disabled:#fff;--color-highlight:#3f8efe;--color-highlight-hover:#06b6d4;--color-hint:#606775;--color-info:#eff6ff;--color-on-info:#1d4ed8;--color-success:#ecfdf5;--color-on-success:#10b981;--color-warning:#fffbeb;--color-on-warning:#d97706;--color-error:#fef2f2;--color-on-error:#b91c1c;--color-bg-primary:#fff;--color-bg-secondary:rgba(239,254,252,.3);--color-hover:#e2e8f0;--card_background-color:#fff;--card_background-color-rgb:255,255,255;--dialog_background-color:#fff;--query-sender_background-color:#f5f5ef;--query-sender_text-color:#000;--sidebar_text-color:#fff;--sidebar_border-color:#1e293b;--sidebar-title_font-size:1.7rem;--sidebar-title-letter-spacing:-1px;--sidebar-button_background-color:transparent;--sidebar-button_text-color:#94a3b8;--sidebar-button_font-weight:500;--sidebar-button_active_text-color:#f8fafc;--radio_background-color:#e2e8f0;--radio_border-color:#334155;--radio_active_background-color:#cbd5e1;--radio_active_border-color:#0f172a;--mdc-radio-selected-icon-color:#0f172a;--mdc-radio-selected-pressed-icon-color:#3f8efe;--mdc-radio-selected-hover-icon-color:#06b6d4;--mdc-radio-unselected-icon-color:#0f172a;--mdc-radio-unselected-pressed-icon-color:#3f8efe;--mdc-radio-unselected-hover-icon-color:#06b6d4;--checkbox_background-color:#f1f5f9;--mdc-checkbox-state-layer-size:36px;--mdc-checkbox-selected-icon-color:#0f172a;--mdc-checkbox-selected-hover-icon-color:#0f172a;--mdc-checkbox-selected-pressed-icon-color:#0f172a;--mdc-checkbox-selected-focus-icon-color:#0f172a;--mdc-checkbox-unselected-icon-color:#475569;--mdc-checkbox-unselected-hover-icon-color:#0f172a;--mdc-checkbox-unselected-pressed-icon-color:#0f172a;--mdc-checkbox-unselected-focus-icon-color:#0f172a;--mdc-checkbox-selected-checkmark-color:#f1f5f9;--mat-mdc-button-persistent-ripple-color:#0f172a;--mat-mdc-button-ripple-color:rgba(15,23,42,.2);--toggle-bar_color:#cbd5e1;--toggle-bar_active_color:#94a3b8;--toggle-bar-thumb_color:#64748b;--toggle-bar-thumb_active_color:#0f172a;--toggle-button_text-color:#000;--toggle-button_background-color:#f8fafc;--toggle-button_hover_background-color:#e2e8f0;--toggle-button_checked_text-color:#fff;--toggle-button_checked_background-color:#10b981;--tag_background-color:#e2e8f0;--tag_text-color:#475569;--tag_border-color:#e2e8f0;--tag_hover_background-color:#475569;--tag_hover_text-color:#e2e8f0;--tag_hover_border-color:#475569;--tag_disabled_background-color:#f8fafc;--tag_disabled_text-color:#cbd5e1;--tag_disabled_border-color:#f8fafc;--tag_system_background-color:#a5f3fc;--tag_border-radius:.75rem;--input_text-color:#1e293b;--input_border-color:#cbd5e1;--input_placeholder-color:#64748b;--input_xfix-color:#64748b;--input_caret-color:#1e293b;--input_border-radius:.5rem;--input_active_border-color:#334155;--form-field-label_text-color:#f1f5f9;--form-field-required_color:#b91c1c;--color-button-primary:#475569;--color-button-primary-text:#fff;--color-button-secondary:#cbd5e1;--color-button-secondary-text:#0f172a;--color-disabled-button:hsla(0,0%,100%,.5);--color-text-primary:#0f172a;--color-text-secondary:#0f172a;--color-text-accent:red;--color-text-disabled:#606775;--color-text-disabled-button:#606775;--color-text-hint:#606775;--color-dividers:#cbd5e1;--color-icons:#0f172a;--light-primary-text:#fff;--dark-primary-text:#000;--primary-color:#fff;--primary-lighter-color:#b3b6e8;--primary-darker-color:#010798;--text-primary-color:#0f172a;--text-primary-lighter-color:#000;--text-primary-darker-color:#fff;--accent-color:#475569;--accent-lighter-color:#94a3b8;--accent-darker-color:#1e293b;--text-accent-color:#fff;--text-accent-lighter-color:#000;--text-accent-darker-color:#fff;--white-color:#fff;--text-white-color:#000;--success-color:#6ee7b7;--text-success-color:#000;--warn-color:#be123c;--warn-lighter-color:#fef2f2;--warn-darker-color:#b91c1c;--text-warn-color:#fff;--text-warn-lighter-color:#000;--text-warn-darker-color:#fff;--text-primary:#0f172a;--form-filed-bg:#fff;--fab-button-bg:#fff;--fab-button-text:#0f172a;--fab-button-disabled-bg:hsla(0,0%,100%,.6);--fab-button-disabled-text:rgba(0,0,0,.3);--button-text-color:#0f172a;--button-bg-color:#cbd5e1;--button-hover-color:#94a3b8;--mdc-filled-button-label-text-color:#0f172a;--mdc-filled-button-container-color:#cbd5e1;--mdc-protected-button-label-text-color:#0f172a;--mdc-protected-button-container-color:#cbd5e1}html{--hp-dark-blue:#131d56;--hp-light-blue:#13cae6;--hp-gradient-light:63,142,254;--hp-gradient-highlight:63,251,218;--hp-gradient-dark:43,100,255;--hp-color-text-highlight:19,202,230;--hpc-highlight-color-light:6 182 212;--hpc-highlight-color-dark:19 202 230;--hpc-highlight-color:6 182 212;--mdc-chip-elevated-container-color:#e2e8f0;--mdc-plain-tooltip-container-color:#020617;--mdc-plain-tooltip-supporting-text-color:#fff;--mat-menu-container-color:hsla(0,0%,100%,.5);--mat-select-panel-background-color:hsla(0,0%,100%,.4);--mat-paginator-container-background-color:#fafafa;--mat-paginator-container-border-color:#f4f4f5;--mat-paginator-container-border-top-color:#e4e4e7;--mat-sidenav-container-divider-color:#e2e8f0;--mat-stepper-line-color:#f1f5f9;--sidebar_background-color:#020617;--sidebar-submenu_hover_background-color:hsla(240,4%,46%,.7);--scrollbar-thumb-color:rgba(2,6,23,.25);--scrollbar-track-color:rgba(2,6,23,.1)}input,textarea{background:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:#d4d4d8}input::placeholder,textarea::placeholder{color:#d4d4d8}.dark input::-moz-placeholder,.dark textarea::-moz-placeholder{color:#52525b}.dark input::placeholder,.dark textarea::placeholder{color:#52525b}input::-moz-placeholder,textarea::-moz-placeholder{color:#606775}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#606775}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#606775}input:-webkit-autofill,input:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}input:-webkit-autofill:active,input:-webkit-autofill:focus,textarea:-webkit-autofill:active,textarea:-webkit-autofill:focus{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}[data-autocompleted]{background-color:transparent!important}input:focus,textarea:focus{box-shadow:none!important;outline:none!important}.mdc-elevation--z4{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}.mat-mdc-raised-button.mat-primary{background-color:#020617!important;color:#f8fafc!important;font-weight:600!important;line-height:1.375!important;padding-left:1rem!important;padding-right:1rem!important}.dark .mat-mdc-raised-button.mat-primary{background-color:#e4e4e7!important;color:#020617!important}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.05}.mat-mdc-outlined-button.mat-primary{background:linear-gradient(to bottom right,#3ffbdae6,#2b64ffe6)!important;border:none!important;color:#fff!important;font-weight:600!important}.mat-mdc-outlined-button.mat-primary:hover{background:linear-gradient(to bottom right,#3ffbda,#2b64ff)!important}.mat-mdc-outlined-button:not([disabled=true]){border-color:#27272a!important}.dark .mat-mdc-outlined-button:not([disabled=true]){border-color:#d4d4d8!important}.mat-mdc-outlined-button[disabled=true]{border-color:#e5e7eb!important}.dark .mat-mdc-outlined-button[disabled=true]{border-color:#4b5563!important}.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-raised-button:not(.mat-primary,.mat-accent),.mat-mdc-raised-button:not(.mat-primary,.mat-accent):hover,.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent),.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent):hover{background-color:#cbd5e1!important;color:#0f172a!important}.mat-mdc-raised-button.mat-white:not([disabled]),.mat-mdc-unelevated-button.mat-white:not([disabled]){background-color:#fff!important;color:#000!important}.mat-mdc-raised-button.mat-success:not([disabled]),.mat-mdc-unelevated-button.mat-success:not([disabled]){background-color:#6ee7b7!important;color:#000!important}.mat-mdc-raised-button.mat-accent:not([disabled]),.mat-mdc-unelevated-button.mat-accent:not([disabled]){background-color:#475569!important;color:#fff!important}.mat-mdc-raised-button.mat-warn:not([disabled]),.mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#ef4444!important;color:#fef2f2!important}.mat-mdc-raised-button.mat-warn:not([disabled]):hover,.mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#dc2626!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]),.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#b91c1ccc!important;color:#ef4444!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]):hover,.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#b91c1c!important}.mat-mdc-raised-button.mat-info:not([disabled]),.mat-mdc-unelevated-button.mat-info:not([disabled]){background-color:#3b82f6!important;color:#fff!important}.mdc-button--raised{padding-left:1.5rem!important;padding-right:1.5rem!important}.mat-mdc-dialog-container .mdc-dialog__content{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{letter-spacing:inherit!important;line-height:inherit!important}.mat-mdc-dialog-title:before{display:none!important}.mat-mdc-tooltip .mdc-tooltip__surface{font-size:.875rem!important;padding:.5rem .75rem!important}.mat-expansion-panel{background-color:#fff!important;border-radius:.375rem!important;box-shadow:none!important;padding:.25rem!important}.mat-expansion-panel .mat-expansion-panel-header{background-color:#f8fafc!important;border:1px solid #f1f5f9!important;border-radius:.375rem!important;transition:padding .2s ease-in-out}.mat-expansion-panel .mat-expansion-panel-header:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded{background-color:#fff!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header .mat-content{justify-content:space-between}.mat-expansion-panel .mat-expansion-panel-header-description,.mat-expansion-panel .mat-expansion-panel-header-title{flex-basis:auto!important;margin:0!important}.mat-expansion-panel .mat-expansion-panel-header-description{flex-grow:0!important}.mat-expansion-panel .mat-expansion-panel-content{border-bottom:1px solid #f1f5f9!important;border-bottom-left-radius:.375rem!important;border-bottom-right-radius:.375rem!important;border-left:1px solid #f1f5f9!important;border-right:1px solid #f1f5f9!important}.mat-expansion-panel .mat-expansion-panel-content,.mat-expansion-panel .mat-expansion-panel-header{font-size:.875rem}.mat-expansion-panel .mat-expansion-panel-header-title,.mat-expansion-panel .mat-panel-title{font-size:1rem;font-weight:600}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{margin-right:1.75rem}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{background-color:#d4d4d8!important;border-radius:9999px!important;display:inline-block!important;height:1.5rem!important;padding:3px;width:1.5rem!important;fill:currentColor!important;color:#18181b!important}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator:after{border:none;content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='3.5'><path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z' /></svg>\");height:100%;padding:0;transform:rotate(0);width:100%}.mat-accordion .mat-expansion-panel .mat-expansion-panel-body{color:#0f172a!important;line-height:1.625!important;padding:1rem!important}.mat-tree{background-color:#fff!important;border-radius:.5rem!important;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a!important}.mat-tree .mat-tree-node{color:#0f172a;padding:.25rem}.mat-mdc-button,.mat-mdc-fab,.mat-mdc-icon-button,.mat-mdc-raised-button,.mat-mdc-unelevated-button{height:40px;line-height:1!important;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-small,.mat-mdc-fab.hpc-mat-button-small,.mat-mdc-icon-button.hpc-mat-button-small,.mat-mdc-raised-button.hpc-mat-button-small,.mat-mdc-unelevated-button.hpc-mat-button-small{height:32px;max-height:32px;min-height:32px}.mat-mdc-button.hpc-mat-button-medium,.mat-mdc-fab.hpc-mat-button-medium,.mat-mdc-icon-button.hpc-mat-button-medium,.mat-mdc-raised-button.hpc-mat-button-medium,.mat-mdc-unelevated-button.hpc-mat-button-medium{height:40px;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-large,.mat-mdc-fab.hpc-mat-button-large,.mat-mdc-icon-button.hpc-mat-button-large,.mat-mdc-raised-button.hpc-mat-button-large,.mat-mdc-unelevated-button.hpc-mat-button-large{height:48px;max-height:48px;min-height:48px;width:48px}.mat-mdc-button[disabled=true] .mat-icon,.mat-mdc-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-fab[disabled=true] .mat-icon,.mat-mdc-fab[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-icon-button[disabled=true] .mat-icon,.mat-mdc-icon-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-raised-button[disabled=true] .mat-icon,.mat-mdc-raised-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-unelevated-button[disabled=true] .mat-icon,.mat-mdc-unelevated-button[disabled=true] .mat-mdc-paginator-icon{opacity:.38!important}.mat-mdc-icon-button{border-radius:1rem!important}.mat-mdc-icon-button .mat-icon{color:#020617e6}.mat-mdc-icon-button.small{border-radius:.75rem!important;height:32px;max-height:32px;min-height:32px;padding:6px;width:32px}.mat-mdc-icon-button.small .mat-icon{font-size:20px;height:20px;line-height:20px;min-height:20px;min-width:20px;width:20px}.mat-mdc-icon-button.small .mat-icon svg{height:20px;width:20px}.mat-mdc-icon-button.large{height:44px;max-height:44px;min-height:44px;width:44px}.mat-mdc-icon-button.large .mat-icon{font-size:28px;height:28px;line-height:28px;min-height:28px;min-width:28px;width:28px}.mat-mdc-icon-button.large .mat-icon svg{height:28px;width:28px}.mat-mdc-icon-button.inverted .mat-icon{color:#f8fafccc}.mat-mdc-icon-button:hover{background-color:#02061726}.mat-mdc-icon-button:hover .mat-icon{color:#020617}.mat-mdc-icon-button:hover.danger{background-color:#fca6a633}.mat-mdc-icon-button:hover.danger .mat-icon{color:#dc2626}.mat-mdc-icon-button:hover.inverted{background-color:#f8fafc33}.mat-mdc-icon-button:hover.inverted .mat-icon{color:#f8fafc}.mat-mdc-button .mat-ripple-element{background-color:#0f172a1a!important}.mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#0206170d!important}.dark .mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#fafafa26!important}.mat-mdc-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon{margin-left:0!important}mat-icon,mat-icon.mat-primary{color:#18181b}.dark mat-icon,.dark mat-icon.mat-primary{color:#fafafa}.mdc-linear-progress__buffer-bar{background-color:#d4d4d8b3!important}.dark .mdc-linear-progress__buffer-bar{background-color:#52525bb3!important}.mdc-linear-progress__bar-inner{border-color:#3f8efe!important}.mat-mdc-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-fab .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-icon-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-raised-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-unelevated-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle{stroke:currentColor!important;animation-duration:6s}.mat-mdc-fab .mat-icon,.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-fab .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element{background-color:#0000001a!important}.mat-mdc-button:not([disabled=true]).mat-primary .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-primary .mat-icon{color:#020617!important}.mat-mdc-button:not([disabled=true]).mat-accent .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-accent .mat-icon{color:#475569!important}.mat-mdc-button:not([disabled=true]).mat-warn .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-warn .mat-icon{color:#fffbeb!important}.mdc-button .mdc-button__label{font-weight:600;white-space:nowrap}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:#fff!important;border-radius:0!important;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;padding:24px}@media (min-width:640px){.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:1.5rem!important;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}}.dark .mat-mdc-dialog-container .mdc-dialog__surface{background-color:#000!important;border:1px solid #3f3f46!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{color:#1e293b!important}.mat-icon{align-items:center;-webkit-appearance:none!important;display:inline-flex!important;font-size:24px;height:24px;justify-content:center;line-height:24px;width:24px}.mat-mdc-input-element::-moz-placeholder{color:#d4d4d8!important}.mat-mdc-input-element::placeholder{color:#d4d4d8!important;transition:none!important}.dark .mat-mdc-input-element::-moz-placeholder{color:#52525b!important}.dark .mat-mdc-input-element::placeholder{color:#52525b!important}.mat-mdc-input-element::-moz-placeholder{color:#606775!important;-moz-transition:none!important;transition:none!important}.mat-mdc-input-element::placeholder,.mat-mdc-select .mat-mdc-select-placeholder{color:#64748b}html{--color-prettylights-syntax-comment:#57606a;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#1f2328;--color-fg-muted:#656d76;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-success-fg:#1a7f37;--color-success-emphasis:#1f883d;--color-attention-fg:#9a6700;--color-attention-emphasis:#9a6700;--color-attention-subtle:#fff8c5;--color-danger-fg:#d1242f;--color-danger-emphasis:#cf222e;--color-done-fg:#8250df;--color-done-emphasis:#8250df}.markdown-body{color:var(--color-fg-default)}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{background-color:currentColor;content:\" \";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');width:16px}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold,600)}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:after,.markdown-body hr:before{content:\"\";display:table}.markdown-body hr:after{clear:both}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}.markdown-body [role=button]:focus-visible,.markdown-body a:focus-visible,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h2{border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}.markdown-body h2,.markdown-body h3{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h4,.markdown-body h5{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h5{font-size:.875em}.markdown-body h6{color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0;word-wrap:normal}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .mr-2{margin-right:var(--base-size-8,8px)!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{list-style-type:none;padding:0}.markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}.markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}.markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}.markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}.markdown-body div>ol:not([type]),.markdown-body ol[type=\"1\"]{list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table td,.markdown-body table th{border:1px solid var(--color-border-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{background-color:transparent;max-width:none;vertical-align:text-top}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid var(--color-border-default);display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:var(--color-canvas-subtle);border-radius:6px;color:var(--color-fg-default);font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code,.markdown-body pre tt{display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}.markdown-body [data-footnote-ref]:before{content:\"[\"}.markdown-body [data-footnote-ref]:after{content:\"]\"}.markdown-body .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;content:\"\";inset:-8px -8px -8px -24px;pointer-events:none;position:absolute}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-smw,.markdown-body .pl-v{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}.markdown-body .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}.markdown-body .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}.markdown-body .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}.markdown-body .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}.markdown-body .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}.markdown-body .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}.markdown-body .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}.markdown-body .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}.markdown-body .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}.markdown-body g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}.markdown-body g-emoji img{height:1em;width:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal,400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{display:block;height:24px;overflow:visible;width:auto;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.hover\\:bg-zinc-100:hover{--tw-bg-opacity:1!important;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))!important}.hover\\:bg-zinc-400\\/30:hover{background-color:#a1a1aa4d!important}.hover\\:text-blue-500:hover{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity,1))!important}.hover\\:text-zinc-900:hover{--tw-text-opacity:1!important;color:rgb(24 24 27/var(--tw-text-opacity,1))!important}@media (min-width:640px){.sm\\:h-\\[65vh\\]{height:65vh!important}.sm\\:flex-row{flex-direction:row!important}.sm\\:items-start{align-items:flex-start!important}.sm\\:items-center{align-items:center!important}.sm\\:justify-start{justify-content:flex-start!important}}@media (min-width:768px){.md\\:max-w-\\[80\\%\\]{max-width:80%!important}.md\\:flex-col{flex-direction:column!important}.md\\:gap-2{gap:.5rem!important}.md\\:gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.md\\:rounded-2xl{border-radius:1rem!important}.md\\:py-4{padding-bottom:1rem!important;padding-top:1rem!important}.md\\:pr-4{padding-right:1rem!important}.md\\:text-lg{font-size:1.125rem!important}.md\\:text-lg,.md\\:text-xl{line-height:1.75rem!important}.md\\:text-xl{font-size:1.25rem!important}.md\\:font-semibold{font-weight:600!important}}@media (min-width:1024px){.lg\\:max-w-screen-md{max-width:768px!important}}@media (min-width:1280px){.xl\\:max-w-screen-lg{max-width:1024px!important}}.dark\\:border:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-width:1px!important}.dark\\:border-black\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#00000080!important}.dark\\:border-red-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-border-opacity:1!important;border-color:rgb(127 29 29/var(--tw-border-opacity,1))!important}.dark\\:border-zinc-600\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b4d!important}.dark\\:border-zinc-600\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b80!important}.dark\\:border-zinc-700\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4666!important}.dark\\:border-zinc-700\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4680!important}.dark\\:bg-black:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))!important}.dark\\:bg-black\\/20:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#0003!important}.dark\\:bg-black\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#000000b3!important}.dark\\:bg-red-600\\/10:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#dc26261a!important}.dark\\:bg-red-950\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#450a0acc!important}.dark\\:bg-zinc-700:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))!important}.dark\\:bg-zinc-700\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#3f3f464d!important}.dark\\:bg-zinc-800\\/60:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#27272a99!important}.dark\\:bg-zinc-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))!important}.dark\\:text-blue-100:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(219 234 254/var(--tw-text-opacity,1))!important}.dark\\:text-green-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#4ade80cc!important}.dark\\:text-red-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(248 113 113/var(--tw-text-opacity,1))!important}.dark\\:text-red-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f87272cc!important}.dark\\:text-zinc-100\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5b3!important}.dark\\:text-zinc-100\\/90:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5e6!important}.dark\\:text-zinc-300:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(212 212 216/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-300\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d84d!important}.dark\\:text-zinc-300\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d866!important}.dark\\:text-zinc-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(161 161 170/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:bg-zinc-800:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))!important}.dark\\:hover\\:text-blue-400:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(96 165 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:text-zinc-50:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}\n/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/\n"], dependencies: [{ kind: "ngmodule", type: AiTranslocoModule }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: ChatScrollDirective, selector: "[aiChatScroll]" }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: LoggerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: MessageInputComponent, selector: "ai-message-input", inputs: ["startConversation"] }, { kind: "component", type: ThreadComponent, selector: "ai-thread" }], encapsulation: i0.ViewEncapsulation.None });
|
|
3374
3250
|
}
|
|
3375
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiChatDialogComponent, decorators: [{
|
|
3376
3252
|
type: Component,
|
|
3377
3253
|
args: [{ imports: [
|
|
3378
3254
|
AiTranslocoModule,
|
|
@@ -3389,22 +3265,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
3389
3265
|
MatProgressSpinnerModule,
|
|
3390
3266
|
MessageInputComponent,
|
|
3391
3267
|
ThreadComponent,
|
|
3392
|
-
], providers: [ChatService, ContextService, WebsocketService], template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n" }]
|
|
3268
|
+
], providers: [ChatService, ContextService, WebsocketService], encapsulation: ViewEncapsulation.None, template: "<div class=\"flex h-full w-full flex-col\" *transloco=\"let t\">\n <div class=\"flex justify-end pb-2\">\n <button\n mat-icon-button\n (click)=\"close()\"\n class=\"small bg-zinc-50 text-zinc-500 hover:bg-zinc-100 hover:text-zinc-900 dark:bg-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-zinc-50\"\n >\n <mat-icon svgIcon=\"dismiss\"></mat-icon>\n </button>\n </div>\n <div\n class=\"flex h-full w-full flex-col items-center overflow-y-auto\"\n aiChatScroll\n >\n <ai-thread class=\"flex h-full w-full\"></ai-thread>\n </div>\n <ai-message-input class=\"w-full\"></ai-message-input>\n</div>\n", styles: ["*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{inset:0!important}.right-4{right:1rem!important}.top-4{top:1rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.mt-2{margin-top:.5rem!important}.line-clamp-3{display:-webkit-box!important;overflow:hidden!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important}.flex{display:flex!important}.contents{display:contents!important}.hidden{display:none!important}.h-0\\.5{height:.125rem!important}.h-10{height:2.5rem!important}.h-full{height:100%!important}.w-10{width:2.5rem!important}.w-\\[50rem\\]{width:50rem!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.min-w-40{min-width:10rem!important}.min-w-48{min-width:12rem!important}.min-w-80{min-width:20rem!important}.max-w-80{max-width:20rem!important}.max-w-\\[85\\%\\]{max-width:85%!important}.max-w-\\[90\\%\\]{max-width:90%!important}.max-w-full{max-width:100%!important}.max-w-md{max-width:28rem!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.cursor-pointer{cursor:pointer!important}.select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.items-end{align-items:flex-end!important}.items-center{align-items:center!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.gap-1{gap:.25rem!important}.gap-x-1{-moz-column-gap:.25rem!important;column-gap:.25rem!important}.gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.gap-x-3{-moz-column-gap:.75rem!important;column-gap:.75rem!important}.gap-y-1{row-gap:.25rem!important}.gap-y-2{row-gap:.5rem!important}.self-end{align-self:flex-end!important}.self-center{align-self:center!important}.overflow-hidden{overflow:hidden!important}.overflow-x-auto{overflow-x:auto!important}.overflow-y-auto{overflow-y:auto!important}.truncate{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.rounded-2xl{border-radius:1rem!important}.rounded-lg{border-radius:.5rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity,1))!important}.border-zinc-300\\/40{border-color:#d4d4d866!important}.border-zinc-300\\/50{border-color:#d4d4d880!important}.border-zinc-400\\/30{border-color:#a1a1aa4d!important}.border-zinc-400\\/40{border-color:#a1a1aa66!important}.border-zinc-400\\/50{border-color:#a1a1aa80!important}.bg-blue-600{background-color:rgb(37 99 235/var(--tw-bg-opacity,1))!important}.bg-blue-600,.bg-gray-600{--tw-bg-opacity:1!important}.bg-gray-600{background-color:rgb(75 85 99/var(--tw-bg-opacity,1))!important}.bg-green-600{background-color:rgb(22 163 74/var(--tw-bg-opacity,1))!important}.bg-green-600,.bg-red-100{--tw-bg-opacity:1!important}.bg-red-100{background-color:rgb(254 226 226/var(--tw-bg-opacity,1))!important}.bg-red-400\\/10{background-color:#f872721a!important}.bg-red-600{background-color:rgb(220 38 38/var(--tw-bg-opacity,1))!important}.bg-red-600,.bg-white{--tw-bg-opacity:1!important}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.bg-yellow-600{--tw-bg-opacity:1!important;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))!important}.bg-zinc-100\\/60{background-color:#f4f4f599!important}.bg-zinc-200{--tw-bg-opacity:1!important;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))!important}.bg-zinc-300\\/20{background-color:#d4d4d833!important}.bg-zinc-300\\/30{background-color:#d4d4d84d!important}.bg-zinc-300\\/40{background-color:#d4d4d866!important}.bg-zinc-400\\/20{background-color:#a1a1aa33!important}.bg-zinc-50{--tw-bg-opacity:1!important;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))!important}.p-2{padding:.5rem!important}.p-4{padding:1rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.py-4{padding-bottom:1rem!important;padding-top:1rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:.75rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.pr-10{padding-right:2.5rem!important}.pr-2{padding-right:.5rem!important}.pr-4{padding-right:1rem!important}.pr-8{padding-right:2rem!important}.pt-3{padding-top:.75rem!important}.pt-4{padding-top:1rem!important}.text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-semibold{font-weight:600!important}.lowercase{text-transform:lowercase!important}.text-amber-600{--tw-text-opacity:1!important;color:rgb(217 119 6/var(--tw-text-opacity,1))!important}.text-blue-600{--tw-text-opacity:1!important;color:rgb(37 99 235/var(--tw-text-opacity,1))!important}.text-blue-700{--tw-text-opacity:1!important;color:rgb(29 78 216/var(--tw-text-opacity,1))!important}.text-gray-600{--tw-text-opacity:1!important;color:rgb(75 85 99/var(--tw-text-opacity,1))!important}.text-green-500\\/80{color:#22c55ecc!important}.text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity,1))!important}.text-red-500\\/80{color:#ef4444cc!important}.text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity,1))!important}.text-red-600\\/80{color:#dc2626cc!important}.text-red-700{--tw-text-opacity:1!important;color:rgb(185 28 28/var(--tw-text-opacity,1))!important}.text-zinc-500{--tw-text-opacity:1!important;color:rgb(113 113 122/var(--tw-text-opacity,1))!important}.text-zinc-700\\/50{color:#3f3f4680!important}.text-zinc-700\\/60{color:#3f3f4699!important}.text-zinc-800{--tw-text-opacity:1!important;color:rgb(39 39 42/var(--tw-text-opacity,1))!important}.text-zinc-800\\/90{color:#27272ae6!important}.text-zinc-900\\/70{color:#18181bb3!important}.text-zinc-950{--tw-text-opacity:1!important;color:rgb(9 9 11/var(--tw-text-opacity,1))!important}.underline{text-decoration-line:underline!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)!important}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important;backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)!important}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)!important}:root{--black:#000;--white:#fff;--white-rgb:255,255,255;--blue-slate-950-rgb:2,6,23;--blue-slate-900-rgb:15,23,42;--blue-slate-800-rgb:30,41,59;--blue-slate-700-rgb:51,65,85;--blue-slate-400-rgb:148,163,184;--blue-slate-300-rgb:203,213,225;--blue-slate-100-rgb:241,245,249;--blue-slate-050-rgb:248,250,252;--gray-800-rgb:31,41,55;--gray-700-rgb:55,65,81;--gray-600-rgb:75,85,99;--gray-200-rgb:229,231,235;--zinc-950-rgb:9,9,11;--zinc-900-rgb:24,24,27;--zinc-800-rgb:39,39,42;--zinc-700-rgb:63,63,70;--zinc-600-rgb:82,82,91;--zinc-500-rgb:113,113,122;--zinc-400-rgb:161,161,170;--zinc-300-rgb:212,212,216;--zinc-200-rgb:228,228,231;--zinc-100-rgb:244,244,245;--zinc-050-rgb:250,250,250;--red-700-rgb:185,28,28;--red-600-rgb:220,38,38;--red-500-rgb:239,68,68;--red-400-rgb:248,113,113;--red-300-rgb:252,165,165;--blue-gray-900-10:rgba(15,23,42,.1);--blue-gray-900-20:rgba(15,23,42,.2);--blue-gray-900:#0f172a;--blue-gray-800:#1e293b;--blue-gray-800-rgb:30,41,59;--blue-gray-700:#334155;--blue-gray-600:#475569;--blue-gray-500:#64748b;--blue-gray-400:#94a3b8;--blue-gray-300:#cbd5e1;--blue-gray-200:#e2e8f0;--blue-gray-100:#f1f5f9;--blue-gray-50:#f8fafc;--blue-gray-light-2:#141b2e;--blue-gray-light-4:#182032;--blue-gray-light-8:#21293b;--blue-gray-light-8-rgb:33,41,59;--blue-gray-light-16:#333b4b;--blue-gray-light-32:#575e6c;--blue-gray-light-64:#a0a5ae;--blue-gray-light-100:#f1f5f9;--blue-gray-dark-2:#e8ecf1;--blue-gray-dark-4:#e8ecf1;--blue-gray-dark-8:#dfe3e8;--blue-gray-dark-16:#cdd1d8;--blue-gray-dark-32:#a9aeb7;--blue-gray-dark-64:#606775;--blue-gray-dark-100:#0f172a;--blue-700:#1d4ed8;--blue-50:#eff6ff;--green-500:#10b981;--green-50:#ecfdf5;--yellow-50:#fffbeb;--yellow-500:#d97706;--red-700:#b91c1c;--red-50:#fef2f2;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--teal-500:#14b8a6;--teal-600:#0d9488;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--hp-light-blue:#13cae6;--hp-gradient-light:#3f8efe;--hp-gradient-highlight:#3ffbda;--hp-gradient-dark:#2b64ff;--font-family:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-chip-container-height:30px;--mdc-chip-container-shape-radius:12px;--mdc-fab-container-shape:12px;--mdc-icon-button-icon-size:24px;--mdc-icon-button-state-layer-size:40px;--mdc-icon-button-icon-color:currentColor;--mdc-linear-progress-active-indicator-color:#020617;--mdc-linear-progress-active-indicator-height:10px;--mdc-linear-progress-track-color:#f4f4f5;--mdc-linear-progress-track-height:10px;--mdc-linear-progress-track-shape:10px;--mdc-plain-tooltip-container-shape:8px;--mdc-protected-button-container-shape:9999px;--mdc-protected-button-keep-touch-target:false;--mat-protected-button-horizontal-padding:24px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-dialog-actions-padding:16px;--mat-dialog-actions-alignment:normal;--mdc-dialog-container-shape:16px;--mdc-dialog-supporting-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mdc-outlined-button-container-height:40px;--mdc-outlined-button-container-shape:9999px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:24px;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-text-button-container-height:40px;--mdc-text-button-container-shape:9999px;--mat-text-button-horizontal-padding:24px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mdc-text-button-keep-touch-target:false;--mat-text-button-with-icon-horizontal-padding:8px;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-menu-container-shape:16px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px;--mat-stepper-container-color:transparent;--mdc-switch-track-height:28px;--mat-switch-track-outline-color:#52525b;--mat-switch-label-text-font:Lato,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Open Sans,Helvetica Neue,Helvetica,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mat-switch-label-text-color:#09090b;--mat-switch-label-text-tracking:0;--mat-switch-label-text-weight:600;--mdc-switch-unselected-handle-color:#52525b;--mdc-switch-unselected-track-color:#d4d4d8;--mdc-switch-unselected-focus-track-color:#cbd5e1;--mdc-switch-unselected-hover-track-color:#cbd5e1;--mdc-switch-unselected-pressed-track-color:#cbd5e1;--mdc-switch-selected-track-color:#1e293b;--mdc-switch-selected-focus-track-color:#334155;--mdc-switch-selected-hover-track-color:#334155;--mdc-switch-selected-pressed-track-color:#334155;--mat-switch-selected-track-outline-color:#020617;--mdc-switch-selected-handle-color:#cbd5e1;--mdc-switch-selected-focus-handle-color:#3ffbda;--mdc-switch-selected-hover-handle-color:#3ffbda;--mdc-switch-selected-pressed-handle-color:#3ffbda;--mdc-switch-selected-focus-state-layer-color:#3ffbda;--mdc-switch-selected-hover-state-layer-color:#3ffbda;--mdc-switch-selected-pressed-state-layer-color:#3ffbda;--mdc-switch-unselected-focus-state-layer-color:#020617;--mdc-switch-unselected-hover-state-layer-color:#020617;--mdc-switch-unselected-pressed-state-layer-color:#020617;--mdc-switch-selected-icon-color:#020617;--mat-switch-with-icon-handle-size:22px;--hot-toast-border-radius:16px;--hot-toast-padding:14px 20px;--hot-toast-info-icon-background-color:#1d4ed8;--hot-toast-checkmark-icon-background-color:#10b981;--hot-toast-warning-icon-background-color:#d97706;--hot-toast-error-icon-background-color:#b91c1c;--color-primary:#020617;--color-primary-inverted:#f8fafc;--color-on-primary:#f8fafc;--color-danger:#fca5a5;--color-on-danger:#dc2626;--menu_container-color:#020617;--menu_text-color:#f8fafc;--color-surface:#fff;--color-on-surface:#1e293b;--color-on-surface-lighter:#64748b;--color-base:#f1f5f9;--color-base-900:#f1f5f9;--color-base-800:#e2e8f0;--color-base-700:#cbd5e1;--color-base-600:#94a3b8;--color-base-500:#64748b;--color-base-400:#475569;--color-base-300:#334155;--color-base-200:#1e293b;--color-base-100:#0f172a;--color-border-around-base:#e2e8f0;--color-alternate:#f1f5f9;--color-alternate-lighter:#f8fafc;--color-active:#e2e8f0;--color-active-lighter:#f1f5f9;--color-on-active:#0f172a;--color-interactive:#cbd5e1;--color-on-interactive:#0f172a;--color-disabled:#fff;--color-highlight:#3f8efe;--color-highlight-hover:#06b6d4;--color-hint:#606775;--color-info:#eff6ff;--color-on-info:#1d4ed8;--color-success:#ecfdf5;--color-on-success:#10b981;--color-warning:#fffbeb;--color-on-warning:#d97706;--color-error:#fef2f2;--color-on-error:#b91c1c;--color-bg-primary:#fff;--color-bg-secondary:rgba(239,254,252,.3);--color-hover:#e2e8f0;--card_background-color:#fff;--card_background-color-rgb:255,255,255;--dialog_background-color:#fff;--query-sender_background-color:#f5f5ef;--query-sender_text-color:#000;--sidebar_text-color:#fff;--sidebar_border-color:#1e293b;--sidebar-title_font-size:1.7rem;--sidebar-title-letter-spacing:-1px;--sidebar-button_background-color:transparent;--sidebar-button_text-color:#94a3b8;--sidebar-button_font-weight:500;--sidebar-button_active_text-color:#f8fafc;--radio_background-color:#e2e8f0;--radio_border-color:#334155;--radio_active_background-color:#cbd5e1;--radio_active_border-color:#0f172a;--mdc-radio-selected-icon-color:#0f172a;--mdc-radio-selected-pressed-icon-color:#3f8efe;--mdc-radio-selected-hover-icon-color:#06b6d4;--mdc-radio-unselected-icon-color:#0f172a;--mdc-radio-unselected-pressed-icon-color:#3f8efe;--mdc-radio-unselected-hover-icon-color:#06b6d4;--checkbox_background-color:#f1f5f9;--mdc-checkbox-state-layer-size:36px;--mdc-checkbox-selected-icon-color:#0f172a;--mdc-checkbox-selected-hover-icon-color:#0f172a;--mdc-checkbox-selected-pressed-icon-color:#0f172a;--mdc-checkbox-selected-focus-icon-color:#0f172a;--mdc-checkbox-unselected-icon-color:#475569;--mdc-checkbox-unselected-hover-icon-color:#0f172a;--mdc-checkbox-unselected-pressed-icon-color:#0f172a;--mdc-checkbox-unselected-focus-icon-color:#0f172a;--mdc-checkbox-selected-checkmark-color:#f1f5f9;--mat-mdc-button-persistent-ripple-color:#0f172a;--mat-mdc-button-ripple-color:rgba(15,23,42,.2);--toggle-bar_color:#cbd5e1;--toggle-bar_active_color:#94a3b8;--toggle-bar-thumb_color:#64748b;--toggle-bar-thumb_active_color:#0f172a;--toggle-button_text-color:#000;--toggle-button_background-color:#f8fafc;--toggle-button_hover_background-color:#e2e8f0;--toggle-button_checked_text-color:#fff;--toggle-button_checked_background-color:#10b981;--tag_background-color:#e2e8f0;--tag_text-color:#475569;--tag_border-color:#e2e8f0;--tag_hover_background-color:#475569;--tag_hover_text-color:#e2e8f0;--tag_hover_border-color:#475569;--tag_disabled_background-color:#f8fafc;--tag_disabled_text-color:#cbd5e1;--tag_disabled_border-color:#f8fafc;--tag_system_background-color:#a5f3fc;--tag_border-radius:.75rem;--input_text-color:#1e293b;--input_border-color:#cbd5e1;--input_placeholder-color:#64748b;--input_xfix-color:#64748b;--input_caret-color:#1e293b;--input_border-radius:.5rem;--input_active_border-color:#334155;--form-field-label_text-color:#f1f5f9;--form-field-required_color:#b91c1c;--color-button-primary:#475569;--color-button-primary-text:#fff;--color-button-secondary:#cbd5e1;--color-button-secondary-text:#0f172a;--color-disabled-button:hsla(0,0%,100%,.5);--color-text-primary:#0f172a;--color-text-secondary:#0f172a;--color-text-accent:red;--color-text-disabled:#606775;--color-text-disabled-button:#606775;--color-text-hint:#606775;--color-dividers:#cbd5e1;--color-icons:#0f172a;--light-primary-text:#fff;--dark-primary-text:#000;--primary-color:#fff;--primary-lighter-color:#b3b6e8;--primary-darker-color:#010798;--text-primary-color:#0f172a;--text-primary-lighter-color:#000;--text-primary-darker-color:#fff;--accent-color:#475569;--accent-lighter-color:#94a3b8;--accent-darker-color:#1e293b;--text-accent-color:#fff;--text-accent-lighter-color:#000;--text-accent-darker-color:#fff;--white-color:#fff;--text-white-color:#000;--success-color:#6ee7b7;--text-success-color:#000;--warn-color:#be123c;--warn-lighter-color:#fef2f2;--warn-darker-color:#b91c1c;--text-warn-color:#fff;--text-warn-lighter-color:#000;--text-warn-darker-color:#fff;--text-primary:#0f172a;--form-filed-bg:#fff;--fab-button-bg:#fff;--fab-button-text:#0f172a;--fab-button-disabled-bg:hsla(0,0%,100%,.6);--fab-button-disabled-text:rgba(0,0,0,.3);--button-text-color:#0f172a;--button-bg-color:#cbd5e1;--button-hover-color:#94a3b8;--mdc-filled-button-label-text-color:#0f172a;--mdc-filled-button-container-color:#cbd5e1;--mdc-protected-button-label-text-color:#0f172a;--mdc-protected-button-container-color:#cbd5e1}html{--hp-dark-blue:#131d56;--hp-light-blue:#13cae6;--hp-gradient-light:63,142,254;--hp-gradient-highlight:63,251,218;--hp-gradient-dark:43,100,255;--hp-color-text-highlight:19,202,230;--hpc-highlight-color-light:6 182 212;--hpc-highlight-color-dark:19 202 230;--hpc-highlight-color:6 182 212;--mdc-chip-elevated-container-color:#e2e8f0;--mdc-plain-tooltip-container-color:#020617;--mdc-plain-tooltip-supporting-text-color:#fff;--mat-menu-container-color:hsla(0,0%,100%,.5);--mat-select-panel-background-color:hsla(0,0%,100%,.4);--mat-paginator-container-background-color:#fafafa;--mat-paginator-container-border-color:#f4f4f5;--mat-paginator-container-border-top-color:#e4e4e7;--mat-sidenav-container-divider-color:#e2e8f0;--mat-stepper-line-color:#f1f5f9;--sidebar_background-color:#020617;--sidebar-submenu_hover_background-color:hsla(240,4%,46%,.7);--scrollbar-thumb-color:rgba(2,6,23,.25);--scrollbar-track-color:rgba(2,6,23,.1)}input,textarea{background:transparent}input::-moz-placeholder,textarea::-moz-placeholder{color:#d4d4d8}input::placeholder,textarea::placeholder{color:#d4d4d8}.dark input::-moz-placeholder,.dark textarea::-moz-placeholder{color:#52525b}.dark input::placeholder,.dark textarea::placeholder{color:#52525b}input::-moz-placeholder,textarea::-moz-placeholder{color:#606775}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#606775}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#606775}input:-webkit-autofill,input:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:hover{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}input:-webkit-autofill:active,input:-webkit-autofill:focus,textarea:-webkit-autofill:active,textarea:-webkit-autofill:focus{-webkit-transition:background-color 600000s 0s,color 600000s 0s!important;transition:background-color 600000s 0s,color 600000s 0s!important}[data-autocompleted]{background-color:transparent!important}input:focus,textarea:focus{box-shadow:none!important;outline:none!important}.mdc-elevation--z4{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}.mat-mdc-raised-button.mat-primary{background-color:#020617!important;color:#f8fafc!important;font-weight:600!important;line-height:1.375!important;padding-left:1rem!important;padding-right:1rem!important}.dark .mat-mdc-raised-button.mat-primary{background-color:#e4e4e7!important;color:#020617!important}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.05}.mat-mdc-outlined-button.mat-primary{background:linear-gradient(to bottom right,#3ffbdae6,#2b64ffe6)!important;border:none!important;color:#fff!important;font-weight:600!important}.mat-mdc-outlined-button.mat-primary:hover{background:linear-gradient(to bottom right,#3ffbda,#2b64ff)!important}.mat-mdc-outlined-button:not([disabled=true]){border-color:#27272a!important}.dark .mat-mdc-outlined-button:not([disabled=true]){border-color:#d4d4d8!important}.mat-mdc-outlined-button[disabled=true]{border-color:#e5e7eb!important}.dark .mat-mdc-outlined-button[disabled=true]{border-color:#4b5563!important}.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-raised-button:not(.mat-primary,.mat-accent),.mat-mdc-raised-button:not(.mat-primary,.mat-accent):hover,.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent),.mat-mdc-unelevated-button:not(.mat-primary,.mat-accent):hover{background-color:#cbd5e1!important;color:#0f172a!important}.mat-mdc-raised-button.mat-white:not([disabled]),.mat-mdc-unelevated-button.mat-white:not([disabled]){background-color:#fff!important;color:#000!important}.mat-mdc-raised-button.mat-success:not([disabled]),.mat-mdc-unelevated-button.mat-success:not([disabled]){background-color:#6ee7b7!important;color:#000!important}.mat-mdc-raised-button.mat-accent:not([disabled]),.mat-mdc-unelevated-button.mat-accent:not([disabled]){background-color:#475569!important;color:#fff!important}.mat-mdc-raised-button.mat-warn:not([disabled]),.mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#ef4444!important;color:#fef2f2!important}.mat-mdc-raised-button.mat-warn:not([disabled]):hover,.mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#dc2626!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]),.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]){background-color:#b91c1ccc!important;color:#ef4444!important}.dark .mat-mdc-raised-button.mat-warn:not([disabled]):hover,.dark .mat-mdc-unelevated-button.mat-warn:not([disabled]):hover{background-color:#b91c1c!important}.mat-mdc-raised-button.mat-info:not([disabled]),.mat-mdc-unelevated-button.mat-info:not([disabled]){background-color:#3b82f6!important;color:#fff!important}.mdc-button--raised{padding-left:1.5rem!important;padding-right:1.5rem!important}.mat-mdc-dialog-container .mdc-dialog__content{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{letter-spacing:inherit!important;line-height:inherit!important}.mat-mdc-dialog-title:before{display:none!important}.mat-mdc-tooltip .mdc-tooltip__surface{font-size:.875rem!important;padding:.5rem .75rem!important}.mat-expansion-panel{background-color:#fff!important;border-radius:.375rem!important;box-shadow:none!important;padding:.25rem!important}.mat-expansion-panel .mat-expansion-panel-header{background-color:#f8fafc!important;border:1px solid #f1f5f9!important;border-radius:.375rem!important;transition:padding .2s ease-in-out}.mat-expansion-panel .mat-expansion-panel-header:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded{background-color:#fff!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.mat-expansion-panel .mat-expansion-panel-header.mat-expanded:hover{background-color:#e2e8f0!important}.mat-expansion-panel .mat-expansion-panel-header .mat-content{justify-content:space-between}.mat-expansion-panel .mat-expansion-panel-header-description,.mat-expansion-panel .mat-expansion-panel-header-title{flex-basis:auto!important;margin:0!important}.mat-expansion-panel .mat-expansion-panel-header-description{flex-grow:0!important}.mat-expansion-panel .mat-expansion-panel-content{border-bottom:1px solid #f1f5f9!important;border-bottom-left-radius:.375rem!important;border-bottom-right-radius:.375rem!important;border-left:1px solid #f1f5f9!important;border-right:1px solid #f1f5f9!important}.mat-expansion-panel .mat-expansion-panel-content,.mat-expansion-panel .mat-expansion-panel-header{font-size:.875rem}.mat-expansion-panel .mat-expansion-panel-header-title,.mat-expansion-panel .mat-panel-title{font-size:1rem;font-weight:600}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{margin-right:1.75rem}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator{background-color:#d4d4d8!important;border-radius:9999px!important;display:inline-block!important;height:1.5rem!important;padding:3px;width:1.5rem!important;fill:currentColor!important;color:#18181b!important}.mat-accordion .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-indicator:after{border:none;content:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='3.5'><path d='M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z' /></svg>\");height:100%;padding:0;transform:rotate(0);width:100%}.mat-accordion .mat-expansion-panel .mat-expansion-panel-body{color:#0f172a!important;line-height:1.625!important;padding:1rem!important}.mat-tree{background-color:#fff!important;border-radius:.5rem!important;box-shadow:0 1px 3px #0000001a,0 1px 2px -1px #0000001a!important}.mat-tree .mat-tree-node{color:#0f172a;padding:.25rem}.mat-mdc-button,.mat-mdc-fab,.mat-mdc-icon-button,.mat-mdc-raised-button,.mat-mdc-unelevated-button{height:40px;line-height:1!important;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-small,.mat-mdc-fab.hpc-mat-button-small,.mat-mdc-icon-button.hpc-mat-button-small,.mat-mdc-raised-button.hpc-mat-button-small,.mat-mdc-unelevated-button.hpc-mat-button-small{height:32px;max-height:32px;min-height:32px}.mat-mdc-button.hpc-mat-button-medium,.mat-mdc-fab.hpc-mat-button-medium,.mat-mdc-icon-button.hpc-mat-button-medium,.mat-mdc-raised-button.hpc-mat-button-medium,.mat-mdc-unelevated-button.hpc-mat-button-medium{height:40px;max-height:40px;min-height:40px}.mat-mdc-button.hpc-mat-button-large,.mat-mdc-fab.hpc-mat-button-large,.mat-mdc-icon-button.hpc-mat-button-large,.mat-mdc-raised-button.hpc-mat-button-large,.mat-mdc-unelevated-button.hpc-mat-button-large{height:48px;max-height:48px;min-height:48px;width:48px}.mat-mdc-button[disabled=true] .mat-icon,.mat-mdc-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-fab[disabled=true] .mat-icon,.mat-mdc-fab[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-icon-button[disabled=true] .mat-icon,.mat-mdc-icon-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-raised-button[disabled=true] .mat-icon,.mat-mdc-raised-button[disabled=true] .mat-mdc-paginator-icon,.mat-mdc-unelevated-button[disabled=true] .mat-icon,.mat-mdc-unelevated-button[disabled=true] .mat-mdc-paginator-icon{opacity:.38!important}.mat-mdc-icon-button{border-radius:1rem!important}.mat-mdc-icon-button .mat-icon{color:#020617e6}.mat-mdc-icon-button.small{border-radius:.75rem!important;height:32px;max-height:32px;min-height:32px;padding:6px;width:32px}.mat-mdc-icon-button.small .mat-icon{font-size:20px;height:20px;line-height:20px;min-height:20px;min-width:20px;width:20px}.mat-mdc-icon-button.small .mat-icon svg{height:20px;width:20px}.mat-mdc-icon-button.large{height:44px;max-height:44px;min-height:44px;width:44px}.mat-mdc-icon-button.large .mat-icon{font-size:28px;height:28px;line-height:28px;min-height:28px;min-width:28px;width:28px}.mat-mdc-icon-button.large .mat-icon svg{height:28px;width:28px}.mat-mdc-icon-button.inverted .mat-icon{color:#f8fafccc}.mat-mdc-icon-button:hover{background-color:#02061726}.mat-mdc-icon-button:hover .mat-icon{color:#020617}.mat-mdc-icon-button:hover.danger{background-color:#fca6a633}.mat-mdc-icon-button:hover.danger .mat-icon{color:#dc2626}.mat-mdc-icon-button:hover.inverted{background-color:#f8fafc33}.mat-mdc-icon-button:hover.inverted .mat-icon{color:#f8fafc}.mat-mdc-button .mat-ripple-element{background-color:#0f172a1a!important}.mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#0206170d!important}.dark .mat-mdc-button .mat-mdc-button-persistent-ripple:before{background-color:#fafafa26!important}.mat-mdc-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon{margin-left:0!important}mat-icon,mat-icon.mat-primary{color:#18181b}.dark mat-icon,.dark mat-icon.mat-primary{color:#fafafa}.mdc-linear-progress__buffer-bar{background-color:#d4d4d8b3!important}.dark .mdc-linear-progress__buffer-bar{background-color:#52525bb3!important}.mdc-linear-progress__bar-inner{border-color:#3f8efe!important}.mat-mdc-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-fab .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-icon-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-raised-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle,.mat-mdc-unelevated-button .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-container circle{stroke:currentColor!important;animation-duration:6s}.mat-mdc-fab .mat-icon,.mat-mdc-raised-button .mat-icon,.mat-mdc-unelevated-button .mat-icon{color:currentColor!important}.mat-mdc-fab .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element{background-color:#0000001a!important}.mat-mdc-button:not([disabled=true]).mat-primary .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-primary .mat-icon{color:#020617!important}.mat-mdc-button:not([disabled=true]).mat-accent .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-accent .mat-icon{color:#475569!important}.mat-mdc-button:not([disabled=true]).mat-warn .mat-icon,.mat-mdc-icon-button:not([disabled=true]).mat-warn .mat-icon{color:#fffbeb!important}.mdc-button .mdc-button__label{font-weight:600;white-space:nowrap}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:#fff!important;border-radius:0!important;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;padding:24px}@media (min-width:640px){.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:1.5rem!important;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important}}.dark .mat-mdc-dialog-container .mdc-dialog__surface{background-color:#000!important;border:1px solid #3f3f46!important}.mat-mdc-dialog-container .mdc-dialog__content,.mat-mdc-dialog-container .mdc-dialog__title{color:#1e293b!important}.mat-icon{align-items:center;-webkit-appearance:none!important;display:inline-flex!important;font-size:24px;height:24px;justify-content:center;line-height:24px;width:24px}.mat-mdc-input-element::-moz-placeholder{color:#d4d4d8!important}.mat-mdc-input-element::placeholder{color:#d4d4d8!important;transition:none!important}.dark .mat-mdc-input-element::-moz-placeholder{color:#52525b!important}.dark .mat-mdc-input-element::placeholder{color:#52525b!important}.mat-mdc-input-element::-moz-placeholder{color:#606775!important;-moz-transition:none!important;transition:none!important}.mat-mdc-input-element::placeholder,.mat-mdc-select .mat-mdc-select-placeholder{color:#64748b}html{--color-prettylights-syntax-comment:#57606a;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#1f2328;--color-fg-muted:#656d76;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-success-fg:#1a7f37;--color-success-emphasis:#1f883d;--color-attention-fg:#9a6700;--color-attention-emphasis:#9a6700;--color-attention-subtle:#fff8c5;--color-danger-fg:#d1242f;--color-danger-emphasis:#cf222e;--color-done-fg:#8250df;--color-done-emphasis:#8250df}.markdown-body{color:var(--color-fg-default)}.markdown-body .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.markdown-body h1:hover .anchor .octicon-link:before,.markdown-body h2:hover .anchor .octicon-link:before,.markdown-body h3:hover .anchor .octicon-link:before,.markdown-body h4:hover .anchor .octicon-link:before,.markdown-body h5:hover .anchor .octicon-link:before,.markdown-body h6:hover .anchor .octicon-link:before{background-color:currentColor;content:\" \";display:inline-block;height:16px;-webkit-mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');mask-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill-rule=\"evenodd\" d=\"M7.775 3.275a.75.75 0 0 0 1.06 1.06l1.25-1.25a2 2 0 1 1 2.83 2.83l-2.5 2.5a2 2 0 0 1-2.83 0 .75.75 0 0 0-1.06 1.06 3.5 3.5 0 0 0 4.95 0l2.5-2.5a3.5 3.5 0 0 0-4.95-4.95zm-4.69 9.64a2 2 0 0 1 0-2.83l2.5-2.5a2 2 0 0 1 2.83 0 .75.75 0 0 0 1.06-1.06 3.5 3.5 0 0 0-4.95 0l-2.5 2.5a3.5 3.5 0 0 0 4.95 4.95l1.25-1.25a.75.75 0 0 0-1.06-1.06l-1.25 1.25a2 2 0 0 1-2.83 0\"/></svg>');width:16px}.markdown-body details,.markdown-body figcaption,.markdown-body figure{display:block}.markdown-body summary{display:list-item}.markdown-body [hidden]{display:none!important}.markdown-body a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.markdown-body abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.markdown-body b,.markdown-body strong{font-weight:var(--base-text-weight-semibold,600)}.markdown-body dfn{font-style:italic}.markdown-body h1{border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:var(--base-text-weight-semibold,600);margin:.67em 0;padding-bottom:.3em}.markdown-body mark{background-color:var(--color-attention-subtle);color:var(--color-fg-default)}.markdown-body small{font-size:90%}.markdown-body sub,.markdown-body sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.markdown-body sub{bottom:-.25em}.markdown-body sup{top:-.5em}.markdown-body img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}.markdown-body code,.markdown-body kbd,.markdown-body pre,.markdown-body samp{font-family:monospace;font-size:1em}.markdown-body figure{margin:1em 40px}.markdown-body hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.markdown-body input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.markdown-body [type=button],.markdown-body [type=reset],.markdown-body [type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}.markdown-body [type=checkbox],.markdown-body [type=radio]{box-sizing:border-box;padding:0}.markdown-body [type=number]::-webkit-inner-spin-button,.markdown-body [type=number]::-webkit-outer-spin-button{height:auto}.markdown-body [type=search]::-webkit-search-cancel-button,.markdown-body [type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}.markdown-body ::-webkit-input-placeholder{color:inherit;opacity:.54}.markdown-body ::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}.markdown-body a:hover{text-decoration:underline}.markdown-body ::-moz-placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body ::placeholder{color:var(--color-fg-subtle);opacity:1}.markdown-body hr:after,.markdown-body hr:before{content:\"\";display:table}.markdown-body hr:after{clear:both}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-moz-max-content;width:max-content}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none!important}.markdown-body [role=button]:focus,.markdown-body a:focus,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=radio]:focus{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body [role=button]:focus:not(:focus-visible),.markdown-body a:focus:not(:focus-visible),.markdown-body input[type=checkbox]:focus:not(:focus-visible),.markdown-body input[type=radio]:focus:not(:focus-visible){outline:1px solid transparent}.markdown-body [role=button]:focus-visible,.markdown-body a:focus-visible,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus-visible{box-shadow:none;outline:2px solid var(--color-accent-fg);outline-offset:-2px}.markdown-body a:not([class]):focus,.markdown-body a:not([class]):focus-visible,.markdown-body input[type=checkbox]:focus,.markdown-body input[type=checkbox]:focus-visible,.markdown-body input[type=radio]:focus,.markdown-body input[type=radio]:focus-visible{outline-offset:0}.markdown-body kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:var(--base-text-weight-semibold,600);line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h2{border-bottom:1px solid var(--color-border-muted);font-size:1.5em;padding-bottom:.3em}.markdown-body h2,.markdown-body h3{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h4,.markdown-body h5{font-weight:var(--base-text-weight-semibold,600)}.markdown-body h5{font-size:.875em}.markdown-body h6{color:var(--color-fg-muted);font-size:.85em;font-weight:var(--base-text-weight-semibold,600)}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre,.markdown-body samp,.markdown-body tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0;word-wrap:normal}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .mr-2{margin-right:var(--base-size-8,8px)!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:var(--color-danger-fg)}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body details,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit;padding:0 .2em}.markdown-body summary h1,.markdown-body summary h2,.markdown-body summary h3,.markdown-body summary h4,.markdown-body summary h5,.markdown-body summary h6{display:inline-block}.markdown-body summary h1 .anchor,.markdown-body summary h2 .anchor,.markdown-body summary h3 .anchor,.markdown-body summary h4 .anchor,.markdown-body summary h5 .anchor,.markdown-body summary h6 .anchor{margin-left:-40px}.markdown-body summary h1,.markdown-body summary h2{border-bottom:0;padding-bottom:0}.markdown-body ol.no-list,.markdown-body ul.no-list{list-style-type:none;padding:0}.markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}.markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}.markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}.markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}.markdown-body div>ol:not([type]),.markdown-body ol[type=\"1\"]{list-style-type:decimal}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:var(--base-text-weight-semibold,600);margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table th{font-weight:var(--base-text-weight-semibold,600)}.markdown-body table td,.markdown-body table th{border:1px solid var(--color-border-default);padding:6px 13px}.markdown-body table td>:last-child{margin-bottom:0}.markdown-body table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.markdown-body table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.markdown-body table img{background-color:transparent}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{background-color:transparent;max-width:none;vertical-align:text-top}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid var(--color-border-default);display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em;white-space:break-spaces}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body samp{font-size:85%}.markdown-body pre code{font-size:100%}.markdown-body pre>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:var(--color-canvas-subtle);border-radius:6px;color:var(--color-fg-default);font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code,.markdown-body pre tt{display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal;background-color:transparent;border:0}.markdown-body .csv-data td,.markdown-body .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:var(--base-text-weight-semibold,600)}.markdown-body [data-footnote-ref]:before{content:\"[\"}.markdown-body [data-footnote-ref]:after{content:\"]\"}.markdown-body .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}.markdown-body .footnotes ol{padding-left:16px}.markdown-body .footnotes ol ul{display:inline-block;margin-top:16px;padding-left:16px}.markdown-body .footnotes li{position:relative}.markdown-body .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;content:\"\";inset:-8px -8px -8px -24px;pointer-events:none;position:absolute}.markdown-body .footnotes li:target{color:var(--color-fg-default)}.markdown-body .footnotes .data-footnote-backref g-emoji{font-family:monospace}.markdown-body .pl-c{color:var(--color-prettylights-syntax-comment)}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:var(--color-prettylights-syntax-constant)}.markdown-body .pl-e,.markdown-body .pl-en{color:var(--color-prettylights-syntax-entity)}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:var(--color-prettylights-syntax-storage-modifier-import)}.markdown-body .pl-ent{color:var(--color-prettylights-syntax-entity-tag)}.markdown-body .pl-k{color:var(--color-prettylights-syntax-keyword)}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:var(--color-prettylights-syntax-string)}.markdown-body .pl-smw,.markdown-body .pl-v{color:var(--color-prettylights-syntax-variable)}.markdown-body .pl-bu{color:var(--color-prettylights-syntax-brackethighlighter-unmatched)}.markdown-body .pl-ii{background-color:var(--color-prettylights-syntax-invalid-illegal-bg);color:var(--color-prettylights-syntax-invalid-illegal-text)}.markdown-body .pl-c2{background-color:var(--color-prettylights-syntax-carriage-return-bg);color:var(--color-prettylights-syntax-carriage-return-text)}.markdown-body .pl-sr .pl-cce{color:var(--color-prettylights-syntax-string-regexp);font-weight:700}.markdown-body .pl-ml{color:var(--color-prettylights-syntax-markup-list)}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:var(--color-prettylights-syntax-markup-heading);font-weight:700}.markdown-body .pl-mi{color:var(--color-prettylights-syntax-markup-italic);font-style:italic}.markdown-body .pl-mb{color:var(--color-prettylights-syntax-markup-bold);font-weight:700}.markdown-body .pl-md{background-color:var(--color-prettylights-syntax-markup-deleted-bg);color:var(--color-prettylights-syntax-markup-deleted-text)}.markdown-body .pl-mi1{background-color:var(--color-prettylights-syntax-markup-inserted-bg);color:var(--color-prettylights-syntax-markup-inserted-text)}.markdown-body .pl-mc{background-color:var(--color-prettylights-syntax-markup-changed-bg);color:var(--color-prettylights-syntax-markup-changed-text)}.markdown-body .pl-mi2{background-color:var(--color-prettylights-syntax-markup-ignored-bg);color:var(--color-prettylights-syntax-markup-ignored-text)}.markdown-body .pl-mdr{color:var(--color-prettylights-syntax-meta-diff-range);font-weight:700}.markdown-body .pl-ba{color:var(--color-prettylights-syntax-brackethighlighter-angle)}.markdown-body .pl-sg{color:var(--color-prettylights-syntax-sublimelinter-gutter-mark)}.markdown-body .pl-corl{color:var(--color-prettylights-syntax-constant-other-reference-link);text-decoration:underline}.markdown-body g-emoji{display:inline-block;font-family:Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1em;font-style:normal!important;font-weight:var(--base-text-weight-normal,400);line-height:1;min-width:1ch;vertical-align:-.075em}.markdown-body g-emoji img{height:1em;width:1em}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item label{font-weight:var(--base-text-weight-normal,400)}.markdown-body .task-list-item.enabled label{cursor:pointer}.markdown-body .task-list-item+.task-list-item{margin-top:4px}.markdown-body .task-list-item .handle{display:none}.markdown-body .task-list-item-checkbox{margin:0 .2em .25em -1.4em;vertical-align:middle}.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox{margin:0 -1.6em .25em .2em}.markdown-body .contains-task-list{position:relative}.markdown-body .contains-task-list:focus-within .task-list-item-convert-container,.markdown-body .contains-task-list:hover .task-list-item-convert-container{display:block;height:24px;overflow:visible;width:auto;clip:auto}.markdown-body ::-webkit-calendar-picker-indicator{filter:invert(50%)}.hover\\:bg-zinc-100:hover{--tw-bg-opacity:1!important;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))!important}.hover\\:bg-zinc-400\\/30:hover{background-color:#a1a1aa4d!important}.hover\\:text-blue-500:hover{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity,1))!important}.hover\\:text-zinc-900:hover{--tw-text-opacity:1!important;color:rgb(24 24 27/var(--tw-text-opacity,1))!important}@media (min-width:640px){.sm\\:h-\\[65vh\\]{height:65vh!important}.sm\\:flex-row{flex-direction:row!important}.sm\\:items-start{align-items:flex-start!important}.sm\\:items-center{align-items:center!important}.sm\\:justify-start{justify-content:flex-start!important}}@media (min-width:768px){.md\\:max-w-\\[80\\%\\]{max-width:80%!important}.md\\:flex-col{flex-direction:column!important}.md\\:gap-2{gap:.5rem!important}.md\\:gap-x-2{-moz-column-gap:.5rem!important;column-gap:.5rem!important}.md\\:rounded-2xl{border-radius:1rem!important}.md\\:py-4{padding-bottom:1rem!important;padding-top:1rem!important}.md\\:pr-4{padding-right:1rem!important}.md\\:text-lg{font-size:1.125rem!important}.md\\:text-lg,.md\\:text-xl{line-height:1.75rem!important}.md\\:text-xl{font-size:1.25rem!important}.md\\:font-semibold{font-weight:600!important}}@media (min-width:1024px){.lg\\:max-w-screen-md{max-width:768px!important}}@media (min-width:1280px){.xl\\:max-w-screen-lg{max-width:1024px!important}}.dark\\:border:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-width:1px!important}.dark\\:border-black\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#00000080!important}.dark\\:border-red-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-border-opacity:1!important;border-color:rgb(127 29 29/var(--tw-border-opacity,1))!important}.dark\\:border-zinc-600\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b4d!important}.dark\\:border-zinc-600\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#52525b80!important}.dark\\:border-zinc-700\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4666!important}.dark\\:border-zinc-700\\/50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){border-color:#3f3f4680!important}.dark\\:bg-black:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))!important}.dark\\:bg-black\\/20:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#0003!important}.dark\\:bg-black\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#000000b3!important}.dark\\:bg-red-600\\/10:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#dc26261a!important}.dark\\:bg-red-950\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#450a0acc!important}.dark\\:bg-zinc-700:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))!important}.dark\\:bg-zinc-700\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#3f3f464d!important}.dark\\:bg-zinc-800\\/60:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){background-color:#27272a99!important}.dark\\:bg-zinc-900:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))!important}.dark\\:text-blue-100:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(219 234 254/var(--tw-text-opacity,1))!important}.dark\\:text-green-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#4ade80cc!important}.dark\\:text-red-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(248 113 113/var(--tw-text-opacity,1))!important}.dark\\:text-red-400\\/80:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f87272cc!important}.dark\\:text-zinc-100\\/70:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5b3!important}.dark\\:text-zinc-100\\/90:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#f4f4f5e6!important}.dark\\:text-zinc-300:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(212 212 216/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-300\\/30:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d84d!important}.dark\\:text-zinc-300\\/40:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){color:#d4d4d866!important}.dark\\:text-zinc-400:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(161 161 170/var(--tw-text-opacity,1))!important}.dark\\:text-zinc-50:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:bg-zinc-800:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-bg-opacity:1!important;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))!important}.dark\\:hover\\:text-blue-400:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(96 165 250/var(--tw-text-opacity,1))!important}.dark\\:hover\\:text-zinc-50:hover:where([data-theme=hpc-dark],[data-theme=hpc-dark] *){--tw-text-opacity:1!important;color:rgb(250 250 250/var(--tw-text-opacity,1))!important}\n/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/\n"] }]
|
|
3393
3269
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3394
3270
|
type: Inject,
|
|
3395
3271
|
args: [MAT_DIALOG_DATA]
|
|
3396
|
-
}] }, { type: i3
|
|
3272
|
+
}] }, { type: i3.MatDialogRef }, { type: i2$2.MatIconRegistry }, { type: i3$2.DomSanitizer }] });
|
|
3397
3273
|
|
|
3398
3274
|
class AiModule {
|
|
3399
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
3400
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
3401
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
3275
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3276
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: AiModule, imports: [CommonModule, i1$1.LoggerModule], exports: [AiTranslocoModule] });
|
|
3277
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, providers: [ApiService, ChatService, ContextService, WebsocketService], imports: [CommonModule,
|
|
3402
3278
|
LoggerModule.forRoot({
|
|
3403
3279
|
level: NgxLoggerLevel.DEBUG,
|
|
3404
3280
|
disableConsoleLogging: false,
|
|
3405
3281
|
}), AiTranslocoModule] });
|
|
3406
3282
|
}
|
|
3407
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
3283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AiModule, decorators: [{
|
|
3408
3284
|
type: NgModule,
|
|
3409
3285
|
args: [{
|
|
3410
3286
|
imports: [
|