speechrecorderng 3.10.13 → 3.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/fesm2022/speechrecorderng.mjs +204 -201
- package/fesm2022/speechrecorderng.mjs.map +1 -1
- package/lib/audio/ui/audio_canvas_layer_comp.d.ts +2 -2
- package/lib/spr.module.version.d.ts +1 -1
- package/lib/ui/canvas_layer_comp.d.ts +1 -1
- package/lib/ui/responsive_component.d.ts +1 -1
- package/package.json +13 -15
- package/esm2022/lib/action/action.mjs +0 -73
- package/esm2022/lib/audio/array_audio_buffer.mjs +0 -164
- package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +0 -86
- package/esm2022/lib/audio/array_audio_buffer_random_access_stream.mjs +0 -16
- package/esm2022/lib/audio/audio_data_holder.mjs +0 -264
- package/esm2022/lib/audio/audio_display.mjs +0 -118
- package/esm2022/lib/audio/audio_player.mjs +0 -238
- package/esm2022/lib/audio/capture/capture.mjs +0 -855
- package/esm2022/lib/audio/context.mjs +0 -79
- package/esm2022/lib/audio/dsp/level_measure.mjs +0 -517
- package/esm2022/lib/audio/format.mjs +0 -20
- package/esm2022/lib/audio/impl/wavformat.mjs +0 -7
- package/esm2022/lib/audio/impl/wavreader.mjs +0 -144
- package/esm2022/lib/audio/impl/wavwriter.mjs +0 -191
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +0 -508
- package/esm2022/lib/audio/io/stream.mjs +0 -59
- package/esm2022/lib/audio/net_audio_buffer.mjs +0 -293
- package/esm2022/lib/audio/persistor.mjs +0 -81
- package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +0 -126
- package/esm2022/lib/audio/playback/audio_source_node.mjs +0 -18
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +0 -167
- package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +0 -167
- package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +0 -218
- package/esm2022/lib/audio/playback/player.mjs +0 -402
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +0 -347
- package/esm2022/lib/audio/ui/audio_display_control.mjs +0 -150
- package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +0 -146
- package/esm2022/lib/audio/ui/audiosignal.mjs +0 -533
- package/esm2022/lib/audio/ui/common.mjs +0 -19
- package/esm2022/lib/audio/ui/container.mjs +0 -414
- package/esm2022/lib/audio/ui/livelevel.mjs +0 -361
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +0 -11
- package/esm2022/lib/audio/ui/sonagram.mjs +0 -900
- package/esm2022/lib/db/inddb.mjs +0 -120
- package/esm2022/lib/dsp/utils.mjs +0 -48
- package/esm2022/lib/environment/environment.defaults.mjs +0 -9
- package/esm2022/lib/io/BinaryReader.mjs +0 -93
- package/esm2022/lib/io/BinaryWriter.mjs +0 -80
- package/esm2022/lib/io/stream.mjs +0 -259
- package/esm2022/lib/math/2d/geometry.mjs +0 -28
- package/esm2022/lib/math/complex.mjs +0 -58
- package/esm2022/lib/math/dft.mjs +0 -196
- package/esm2022/lib/media/utils.mjs +0 -14
- package/esm2022/lib/net/uploader.mjs +0 -367
- package/esm2022/lib/recorder_component.mjs +0 -65
- package/esm2022/lib/speechrecorder/project/project.mjs +0 -54
- package/esm2022/lib/speechrecorder/project/project.service.mjs +0 -64
- package/esm2022/lib/speechrecorder/recording.mjs +0 -124
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +0 -221
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +0 -1014
- package/esm2022/lib/speechrecorder/script/script.mjs +0 -114
- package/esm2022/lib/speechrecorder/script/script.service.mjs +0 -47
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +0 -1179
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +0 -676
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +0 -416
- package/esm2022/lib/speechrecorder/session/item.mjs +0 -30
- package/esm2022/lib/speechrecorder/session/progress.mjs +0 -135
- package/esm2022/lib/speechrecorder/session/prompting.mjs +0 -639
- package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +0 -88
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +0 -195
- package/esm2022/lib/speechrecorder/session/recording_list.mjs +0 -188
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +0 -128
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +0 -114
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +0 -146
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +0 -424
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +0 -68
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +0 -288
- package/esm2022/lib/speechrecorder/session/session.mjs +0 -2
- package/esm2022/lib/speechrecorder/session/session.service.mjs +0 -69
- package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +0 -46
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +0 -1385
- package/esm2022/lib/speechrecorder/session/warning_bar.mjs +0 -33
- package/esm2022/lib/speechrecorder/spruploader.mjs +0 -22
- package/esm2022/lib/speechrecorder/startstopsignal/startstopsignal.mjs +0 -2
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +0 -57
- package/esm2022/lib/speechrecorderng.component.mjs +0 -392
- package/esm2022/lib/speechrecorderng.module.mjs +0 -97
- package/esm2022/lib/spr.config.mjs +0 -27
- package/esm2022/lib/spr.module.version.mjs +0 -2
- package/esm2022/lib/ui/canvas_layer_comp.mjs +0 -38
- package/esm2022/lib/ui/intersection-observer.directive.mjs +0 -32
- package/esm2022/lib/ui/message_dialog.mjs +0 -51
- package/esm2022/lib/ui/recordingitem_display.mjs +0 -253
- package/esm2022/lib/ui/responsive_component.mjs +0 -24
- package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +0 -23
- package/esm2022/lib/utils/ua-parser.mjs +0 -190
- package/esm2022/lib/utils/utils.mjs +0 -132
- package/esm2022/lib/utils/wake_lock.mjs +0 -114
- package/esm2022/lib/utils/wake_lock_media.mjs +0 -2
- package/esm2022/public-api.mjs +0 -35
- package/esm2022/speechrecorderng.mjs +0 -5
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { SpeechrecorderngComponent } from "./speechrecorderng.component";
|
|
3
|
-
import { SimpleTrafficLight } from "./speechrecorder/startstopsignal/ui/simpletrafficlight";
|
|
4
|
-
import { CommonModule } from "@angular/common";
|
|
5
|
-
import { Progress } from "./speechrecorder/session/progress";
|
|
6
|
-
import { PromptContainer, Prompter, Prompting, PromptingContainer, Recinstructions, } from "./speechrecorder/session/prompting";
|
|
7
|
-
import { SessionManager } from "./speechrecorder/session/sessionmanager";
|
|
8
|
-
import { WarningBar } from "./speechrecorder/session/warning_bar";
|
|
9
|
-
import { ScrollIntoViewDirective } from "./utils/scrollIntoViewToBottom";
|
|
10
|
-
import { MatButtonModule } from "@angular/material/button";
|
|
11
|
-
import { MatDialogModule } from "@angular/material/dialog";
|
|
12
|
-
import { MatIconModule } from "@angular/material/icon";
|
|
13
|
-
import { MatProgressBarModule } from "@angular/material/progress-bar";
|
|
14
|
-
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
|
|
15
|
-
import { MatTooltipModule } from "@angular/material/tooltip";
|
|
16
|
-
import { provideHttpClient, withInterceptorsFromDi } from "@angular/common/http";
|
|
17
|
-
import { SessionService } from "./speechrecorder/session/session.service";
|
|
18
|
-
import { ScriptService } from "./speechrecorder/script/script.service";
|
|
19
|
-
import { RouterModule } from "@angular/router";
|
|
20
|
-
import { SPEECHRECORDER_CONFIG } from "./spr.config";
|
|
21
|
-
import { SpeechRecorderUploader } from "./speechrecorder/spruploader";
|
|
22
|
-
import { ProjectService } from "./speechrecorder/project/project.service";
|
|
23
|
-
import { ControlPanel, ProgressDisplay, ReadyStateIndicator, StatusDisplay, TransportPanel, UploadStatus, WakeLockIndicator } from "./speechrecorder/session/controlpanel";
|
|
24
|
-
//import {FlexLayoutModule} from "@angular/flex-layout";
|
|
25
|
-
import { SessionFinishedDialog } from "./speechrecorder/session/session_finished_dialog";
|
|
26
|
-
import { MessageDialog } from "./ui/message_dialog";
|
|
27
|
-
import { RecordingItemControls, RecordingItemDisplay } from "./ui/recordingitem_display";
|
|
28
|
-
import { RecordingService } from "./speechrecorder/recordings/recordings.service";
|
|
29
|
-
import { ScrollPaneHorizontal } from "./audio/ui/scroll_pane_horizontal";
|
|
30
|
-
import { AudioClipUIContainer } from "./audio/ui/container";
|
|
31
|
-
import { AudioSignal } from "./audio/ui/audiosignal";
|
|
32
|
-
import { Sonagram } from "./audio/ui/sonagram";
|
|
33
|
-
import { AudioDisplayPlayer } from "./audio/audio_player";
|
|
34
|
-
import { AudioDisplay } from "./audio/audio_display";
|
|
35
|
-
import { AudioDisplayControl } from "./audio/ui/audio_display_control";
|
|
36
|
-
import { LevelBar } from "./audio/ui/livelevel";
|
|
37
|
-
import { AudioDisplayScrollPane } from "./audio/ui/audio_display_scroll_pane";
|
|
38
|
-
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
39
|
-
import { MatCardModule } from "@angular/material/card";
|
|
40
|
-
import { MatDividerModule } from "@angular/material/divider";
|
|
41
|
-
import { MatGridListModule } from "@angular/material/grid-list";
|
|
42
|
-
import { RecordingFileUI } from "./speechrecorder/session/recordingfile/recording-file-u-i.component";
|
|
43
|
-
import { RecordingFileService } from "./speechrecorder/session/recordingfile/recordingfile-service";
|
|
44
|
-
import { RecordingFileViewComponent } from "./speechrecorder/session/recordingfile/recording-file-view.component";
|
|
45
|
-
import { MatTableModule } from "@angular/material/table";
|
|
46
|
-
import { RecordingFileNaviComponent } from './speechrecorder/session/recordingfile/recording-file-navi.component';
|
|
47
|
-
import { RecordingFileMetaComponent } from "./speechrecorder/session/recordingfile/recording-file-meta.component";
|
|
48
|
-
import { MatSelectModule } from "@angular/material/select";
|
|
49
|
-
import { MatInputModule } from "@angular/material/input";
|
|
50
|
-
import { MatSnackBarModule } from "@angular/material/snack-bar";
|
|
51
|
-
import { AudioRecorder, AudioRecorderComponent } from "./speechrecorder/session/audiorecorder";
|
|
52
|
-
import { RecordingList } from "./speechrecorder/session/recording_list";
|
|
53
|
-
import { RecorderCombiPane } from "./speechrecorder/session/recorder_combi_pane";
|
|
54
|
-
import { MatMenuModule } from "@angular/material/menu";
|
|
55
|
-
import { IntersectionObserverDirective } from "./ui/intersection-observer.directive";
|
|
56
|
-
import * as i0 from "@angular/core";
|
|
57
|
-
import * as i1 from "@angular/router";
|
|
58
|
-
export const SPR_ROUTES = [
|
|
59
|
-
{ path: 'spr/session/:id', component: SpeechrecorderngComponent },
|
|
60
|
-
{ path: 'recorder/session/:id', component: AudioRecorderComponent },
|
|
61
|
-
{ path: 'recorder', component: AudioRecorderComponent },
|
|
62
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile/_view/:recordingFileId', component: RecordingFileViewComponent },
|
|
63
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile/_edit/:recordingFileId', component: RecordingFileUI },
|
|
64
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile/_view', component: RecordingFileViewComponent },
|
|
65
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile/_edit', component: RecordingFileUI },
|
|
66
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile/:recordingFileId', component: RecordingFileUI },
|
|
67
|
-
{ path: 'spr/db/project/:project/session/:sessionId/recordingfile', component: RecordingFileUI },
|
|
68
|
-
{ path: 'spr/db/recordingfile/_view/:recordingFileId', component: RecordingFileViewComponent },
|
|
69
|
-
{ path: 'spr/db/recordingfile/_edit/:recordingFileId', component: RecordingFileUI },
|
|
70
|
-
{ path: 'spr/db/recordingfile/_view/', component: RecordingFileViewComponent },
|
|
71
|
-
{ path: 'spr/db/recordingfile/_view', component: RecordingFileViewComponent },
|
|
72
|
-
{ path: 'spr/db/recordingfile/_edit', component: RecordingFileUI },
|
|
73
|
-
{ path: 'spr/db/recordingfile/:recordingFileId', component: RecordingFileUI },
|
|
74
|
-
{ path: 'spr/db/recordingfile', component: RecordingFileUI },
|
|
75
|
-
{ path: 'spr', component: SpeechrecorderngComponent }
|
|
76
|
-
];
|
|
77
|
-
export class SpeechrecorderngModule {
|
|
78
|
-
static forRoot(config) {
|
|
79
|
-
return {
|
|
80
|
-
ngModule: SpeechrecorderngModule,
|
|
81
|
-
providers: [
|
|
82
|
-
{ provide: SPEECHRECORDER_CONFIG, useValue: config }
|
|
83
|
-
]
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechrecorderngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
87
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: SpeechrecorderngModule, declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
88
|
-
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder], imports: [i1.RouterModule, CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder] }); }
|
|
89
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechrecorderngModule, providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule] }); }
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechrecorderngModule, decorators: [{
|
|
92
|
-
type: NgModule,
|
|
93
|
-
args: [{ declarations: [AudioSignal, Sonagram, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, Progress, SimpleTrafficLight, Recinstructions, Prompter, PromptContainer, PromptingContainer, Prompting, StatusDisplay,
|
|
94
|
-
ProgressDisplay, RecordingItemDisplay, RecordingItemControls, UploadStatus, TransportPanel, WakeLockIndicator, ReadyStateIndicator, ControlPanel, WarningBar, AudioRecorder, SessionManager, MessageDialog, SessionFinishedDialog, SpeechrecorderngComponent, AudioRecorderComponent, RecordingFileViewComponent, RecordingFileUI, ScrollIntoViewDirective, RecordingFileNaviComponent, RecordingFileMetaComponent, RecordingList, RecorderCombiPane, AudioRecorder],
|
|
95
|
-
exports: [MessageDialog, SpeechrecorderngComponent, ScrollPaneHorizontal, AudioClipUIContainer, AudioDisplayScrollPane, AudioDisplay, AudioDisplayPlayer, AudioDisplayControl, LevelBar, AudioRecorder], imports: [RouterModule.forChild(SPR_ROUTES), CommonModule, MatIconModule, MatButtonModule, MatDialogModule, MatProgressBarModule, MatProgressSpinnerModule, MatTooltipModule, MatCheckboxModule, MatCardModule, MatDividerModule, MatGridListModule, MatTableModule, MatInputModule, MatSelectModule, MatSnackBarModule, MatMenuModule, IntersectionObserverDirective], providers: [SessionService, ProjectService, ScriptService, RecordingService, RecordingFileService, SpeechRecorderUploader, provideHttpClient(withInterceptorsFromDi())] }]
|
|
96
|
-
}] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNocmVjb3JkZXJuZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXJuZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFFMUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZUFBZSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxHQUMxRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFF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QUUsMEJBQTBCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsQ0FBQztvQkFDeGMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSw2QkFBNkIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3BlZWNocmVjb3JkZXJuZ0NvbXBvbmVudH0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXJuZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtTaW1wbGVUcmFmZmljTGlnaHR9IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3N0YXJ0c3RvcHNpZ25hbC91aS9zaW1wbGV0cmFmZmljbGlnaHRcIjtcclxuXHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7UHJvZ3Jlc3N9IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vcHJvZ3Jlc3NcIjtcclxuaW1wb3J0IHtcclxuICBQcm9tcHRDb250YWluZXIsIFByb21wdGVyLCBQcm9tcHRpbmcsIFByb21wdGluZ0NvbnRhaW5lciwgUmVjaW5zdHJ1Y3Rpb25zLFxyXG59IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vcHJvbXB0aW5nXCI7XHJcbmltcG9ydCB7U2Vzc2lvbk1hbmFnZXJ9IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vc2Vzc2lvbm1hbmFnZXJcIjtcclxuaW1wb3J0IHtXYXJuaW5nQmFyfSBmcm9tIFwiLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3dhcm5pbmdfYmFyXCI7XHJcbmltcG9ydCB7U2Nyb2xsSW50b1ZpZXdEaXJlY3RpdmV9IGZyb20gXCIuL3V0aWxzL3Njcm9sbEludG9WaWV3VG9Cb3R0b21cIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcbmltcG9ydCB7IHByb3ZpZGVIdHRwQ2xpZW50LCB3aXRoSW50ZXJjZXB0b3JzRnJvbURpIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vc2Vzc2lvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U2NyaXB0U2VydmljZX0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc2NyaXB0L3NjcmlwdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Um91dGVyTW9kdWxlLCBSb3V0ZXN9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtTcGVlY2hSZWNvcmRlckNvbmZpZywgU1BFRUNIUkVDT1JERVJfQ09ORklHfSBmcm9tIFwiLi9zcHIuY29uZmlnXCI7XHJcbmltcG9ydCB7U3BlZWNoUmVjb3JkZXJVcGxvYWRlcn0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc3BydXBsb2FkZXJcIjtcclxuaW1wb3J0IHtQcm9qZWN0U2VydmljZX0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvcHJvamVjdC9wcm9qZWN0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBDb250cm9sUGFuZWwsXHJcbiAgUHJvZ3Jlc3NEaXNwbGF5LFxyXG4gIFJlYWR5U3RhdGVJbmRpY2F0b3IsXHJcbiAgU3RhdHVzRGlzcGxheSxcclxuICBUcmFuc3BvcnRQYW5lbCxcclxuICBVcGxvYWRTdGF0dXMsIFdha2VMb2NrSW5kaWNhdG9yXHJcbn0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9jb250cm9scGFuZWxcIjtcclxuLy9pbXBvcnQge0ZsZXhMYXlvdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mbGV4LWxheW91dFwiO1xyXG5pbXBvcnQge1Nlc3Npb25GaW5pc2hlZERpYWxvZ30gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9zZXNzaW9uX2ZpbmlzaGVkX2RpYWxvZ1wiO1xyXG5pbXBvcnQge01lc3NhZ2VEaWFsb2d9IGZyb20gXCIuL3VpL21lc3NhZ2VfZGlhbG9nXCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nSXRlbUNvbnRyb2xzLCBSZWNvcmRpbmdJdGVtRGlzcGxheX0gZnJvbSBcIi4vdWkvcmVjb3JkaW5naXRlbV9kaXNwbGF5XCI7XHJcbmltcG9ydCB7UmVjb3JkaW5nU2VydmljZX0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvcmVjb3JkaW5ncy9yZWNvcmRpbmdzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTY3JvbGxQYW5lSG9yaXpvbnRhbH0gZnJvbSBcIi4vYXVkaW8vdWkvc2Nyb2xsX3BhbmVfaG9yaXpvbnRhbFwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcFVJQ29udGFpbmVyfSBmcm9tIFwiLi9hdWRpby91aS9jb250YWluZXJcIjtcclxuaW1wb3J0IHtBdWRpb1NpZ25hbH0gZnJvbSBcIi4vYXVkaW8vdWkvYXVkaW9zaWduYWxcIjtcclxuaW1wb3J0IHtTb25hZ3JhbX0gZnJvbSBcIi4vYXVkaW8vdWkvc29uYWdyYW1cIjtcclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlQbGF5ZXJ9IGZyb20gXCIuL2F1ZGlvL2F1ZGlvX3BsYXllclwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheX0gZnJvbSBcIi4vYXVkaW8vYXVkaW9fZGlzcGxheVwiO1xyXG5pbXBvcnQge0F1ZGlvRGlzcGxheUNvbnRyb2x9IGZyb20gXCIuL2F1ZGlvL3VpL2F1ZGlvX2Rpc3BsYXlfY29udHJvbFwiO1xyXG5pbXBvcnQge0xldmVsQmFyfSBmcm9tIFwiLi9hdWRpby91aS9saXZlbGV2ZWxcIjtcclxuaW1wb3J0IHtBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lfSBmcm9tIFwiLi9hdWRpby91aS9hdWRpb19kaXNwbGF5X3Njcm9sbF9wYW5lXCI7XHJcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQge01hdENhcmRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jYXJkXCI7XHJcbmltcG9ydCB7TWF0RGl2aWRlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRHcmlkTGlzdE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdFwiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVVSX0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZy1maWxlLXUtaS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdGaWxlU2VydmljZX0gZnJvbSBcIi4vc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdmaWxlL3JlY29yZGluZ2ZpbGUtc2VydmljZVwiO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50fSBmcm9tIFwiLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ2ZpbGUvcmVjb3JkaW5nLWZpbGUtdmlldy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRUYWJsZU1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7IFJlY29yZGluZ0ZpbGVOYXZpQ29tcG9uZW50IH0gZnJvbSAnLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ2ZpbGUvcmVjb3JkaW5nLWZpbGUtbmF2aS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1JlY29yZGluZ0ZpbGVNZXRhQ29tcG9uZW50fSBmcm9tIFwiLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ2ZpbGUvcmVjb3JkaW5nLWZpbGUtbWV0YS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7TWF0U25hY2tCYXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcclxuaW1wb3J0IHtBdWRpb1JlY29yZGVyLCBBdWRpb1JlY29yZGVyQ29tcG9uZW50fSBmcm9tIFwiLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL2F1ZGlvcmVjb3JkZXJcIjtcclxuaW1wb3J0IHtSZWNvcmRpbmdMaXN0fSBmcm9tIFwiLi9zcGVlY2hyZWNvcmRlci9zZXNzaW9uL3JlY29yZGluZ19saXN0XCI7XHJcbmltcG9ydCB7UmVjb3JkZXJDb21iaVBhbmV9IGZyb20gXCIuL3NwZWVjaHJlY29yZGVyL3Nlc3Npb24vcmVjb3JkZXJfY29tYmlfcGFuZVwiO1xyXG5pbXBvcnQge01hdE1lbnVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEaXJlY3RpdmV9IGZyb20gXCIuL3VpL2ludGVyc2VjdGlvbi1vYnNlcnZlci5kaXJlY3RpdmVcIjtcclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBTUFJfUk9VVEVTOiBSb3V0ZXMgPSBbXHJcbiAgeyBwYXRoOiAnc3ByL3Nlc3Npb24vOmlkJywgICAgICBjb21wb25lbnQ6IFNwZWVjaHJlY29yZGVybmdDb21wb25lbnQgfSxcclxuICB7IHBhdGg6ICdyZWNvcmRlci9zZXNzaW9uLzppZCcsICAgICAgY29tcG9uZW50OiBBdWRpb1JlY29yZGVyQ29tcG9uZW50fSxcclxuICB7IHBhdGg6ICdyZWNvcmRlcicsICAgICAgY29tcG9uZW50OiBBdWRpb1JlY29yZGVyQ29tcG9uZW50fSxcclxuICB7IHBhdGg6ICdzcHIvZGIvcHJvamVjdC86cHJvamVjdC9zZXNzaW9uLzpzZXNzaW9uSWQvcmVjb3JkaW5nZmlsZS9fdmlldy86cmVjb3JkaW5nRmlsZUlkJywgICAgICBjb21wb25lbnQ6IFJlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50IH0sXHJcbiAgeyBwYXRoOiAnc3ByL2RiL3Byb2plY3QvOnByb2plY3Qvc2Vzc2lvbi86c2Vzc2lvbklkL3JlY29yZGluZ2ZpbGUvX2VkaXQvOnJlY29yZGluZ0ZpbGVJZCcsICAgICAgY29tcG9uZW50OiBSZWNvcmRpbmdGaWxlVUkgfSxcclxuICB7IHBhdGg6ICdzcHIvZGIvcHJvamVjdC86cHJvamVjdC9zZXNzaW9uLzpzZXNzaW9uSWQvcmVjb3JkaW5nZmlsZS9fdmlldycsICAgICAgY29tcG9uZW50OiBSZWNvcmRpbmdGaWxlVmlld0NvbXBvbmVudCB9LFxyXG4gIHsgcGF0aDogJ3Nwci9kYi9wcm9qZWN0Lzpwcm9qZWN0L3Nlc3Npb24vOnNlc3Npb25JZC9yZWNvcmRpbmdmaWxlL19lZGl0JywgICAgICBjb21wb25lbnQ6IFJlY29yZGluZ0ZpbGVVSSB9LFxyXG4gIHsgcGF0aDogJ3Nwci9kYi9wcm9qZWN0Lzpwcm9qZWN0L3Nlc3Npb24vOnNlc3Npb25JZC9yZWNvcmRpbmdmaWxlLzpyZWNvcmRpbmdGaWxlSWQnLCAgICAgIGNvbXBvbmVudDogUmVjb3JkaW5nRmlsZVVJIH0sXHJcbiAgeyBwYXRoOiAnc3ByL2RiL3Byb2plY3QvOnByb2plY3Qvc2Vzc2lvbi86c2Vzc2lvbklkL3JlY29yZGluZ2ZpbGUnLCAgICAgIGNvbXBvbmVudDogUmVjb3JkaW5nRmlsZVVJIH0sXHJcbiAgeyBwYXRoOiAnc3ByL2RiL3JlY29yZGluZ2ZpbGUvX3ZpZXcvOnJlY29yZGluZ0ZpbGVJZCcsICAgICAgY29tcG9uZW50OiBSZWNvcmRpbmdGaWxlVmlld0NvbXBvbmVudCB9LFxyXG4gIHsgcGF0aDogJ3Nwci9kYi9yZWNvcmRpbmdmaWxlL19lZGl0LzpyZWNvcmRpbmdGaWxlSWQnLCAgICAgIGNvbXBvbmVudDogUmVjb3JkaW5nRmlsZVVJIH0sXHJcbiAgeyBwYXRoOiAnc3ByL2RiL3JlY29yZGluZ2ZpbGUvX3ZpZXcvJywgICAgICBjb21wb25lbnQ6IFJlY29yZGluZ0ZpbGVWaWV3Q29tcG9uZW50IH0sXHJcbiAgeyBwYXRoOiAnc3ByL2RiL3JlY29yZGluZ2ZpbGUvX3ZpZXcnLCAgICAgIGNvbXBvbmVudDogUmVjb3JkaW5nRmlsZVZpZXdDb21wb25lbnQgfSxcclxuICB7IHBhdGg6ICdzcHIvZGIvcmVjb3JkaW5nZmlsZS9fZWRpdCcsICAgICAgY29tcG9uZW50OiBSZWNvcmRpbmdGaWxlVUkgfSxcclxuICB7IHBhdGg6ICdzcHIvZGIvcmVjb3JkaW5nZmlsZS86cmVjb3JkaW5nRmlsZUlkJywgICAgICBjb21wb25lbnQ6IFJlY29yZGluZ0ZpbGVVSSB9LFxyXG4gIHsgcGF0aDogJ3Nwci9kYi9yZWNvcmRpbmdmaWxlJywgICAgICBjb21wb25lbnQ6IFJlY29yZGluZ0ZpbGVVSSB9LFxyXG4gIHsgcGF0aDogJ3NwcicsICAgICAgY29tcG9uZW50OiBTcGVlY2hyZWNvcmRlcm5nQ29tcG9uZW50IH1cclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7IGRlY2xhcmF0aW9uczogW0F1ZGlvU2lnbmFsLCBTb25hZ3JhbSwgU2Nyb2xsUGFuZUhvcml6b250YWwsIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLCBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLCBBdWRpb0Rpc3BsYXksIEF1ZGlvRGlzcGxheVBsYXllciwgQXVkaW9EaXNwbGF5Q29udHJvbCwgTGV2ZWxCYXIsIFByb2dyZXNzLCBTaW1wbGVUcmFmZmljTGlnaHQsIFJlY2luc3RydWN0aW9ucywgUHJvbXB0ZXIsIFByb21wdENvbnRhaW5lciwgUHJvbXB0aW5nQ29udGFpbmVyLCBQcm9tcHRpbmcsIFN0YXR1c0Rpc3BsYXksXHJcbiAgICAgICAgUHJvZ3Jlc3NEaXNwbGF5LCBSZWNvcmRpbmdJdGVtRGlzcGxheSwgUmVjb3JkaW5nSXRlbUNvbnRyb2xzLCBVcGxvYWRTdGF0dXMsIFRyYW5zcG9ydFBhbmVsLCBXYWtlTG9ja0luZGljYXRvciwgUmVhZHlTdGF0ZUluZGljYXRvciwgQ29udHJvbFBhbmVsLCBXYXJuaW5nQmFyLCBBdWRpb1JlY29yZGVyLCBTZXNzaW9uTWFuYWdlciwgTWVzc2FnZURpYWxvZywgU2Vzc2lvbkZpbmlzaGVkRGlhbG9nLCBTcGVlY2hyZWNvcmRlcm5nQ29tcG9uZW50LCBBdWRpb1JlY29yZGVyQ29tcG9uZW50LCBSZWNvcmRpbmdGaWxlVmlld0NvbXBvbmVudCwgUmVjb3JkaW5nRmlsZVVJLCBTY3JvbGxJbnRvVmlld0RpcmVjdGl2ZSwgUmVjb3JkaW5nRmlsZU5hdmlDb21wb25lbnQsIFJlY29yZGluZ0ZpbGVNZXRhQ29tcG9uZW50LCBSZWNvcmRpbmdMaXN0LCBSZWNvcmRlckNvbWJpUGFuZSwgQXVkaW9SZWNvcmRlcl0sXHJcbiAgICBleHBvcnRzOiBbTWVzc2FnZURpYWxvZywgU3BlZWNocmVjb3JkZXJuZ0NvbXBvbmVudCwgU2Nyb2xsUGFuZUhvcml6b250YWwsIEF1ZGlvQ2xpcFVJQ29udGFpbmVyLCBBdWRpb0Rpc3BsYXlTY3JvbGxQYW5lLCBBdWRpb0Rpc3BsYXksIEF1ZGlvRGlzcGxheVBsYXllciwgQXVkaW9EaXNwbGF5Q29udHJvbCwgTGV2ZWxCYXIsIEF1ZGlvUmVjb3JkZXJdLCBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKFNQUl9ST1VURVMpLCBDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBNYXRQcm9ncmVzc0Jhck1vZHVsZSwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgTWF0R3JpZExpc3RNb2R1bGUsIE1hdFRhYmxlTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLCBNYXRTbmFja0Jhck1vZHVsZSwgTWF0TWVudU1vZHVsZSwgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEaXJlY3RpdmVdLCBwcm92aWRlcnM6IFtTZXNzaW9uU2VydmljZSwgUHJvamVjdFNlcnZpY2UsIFNjcmlwdFNlcnZpY2UsIFJlY29yZGluZ1NlcnZpY2UsIFJlY29yZGluZ0ZpbGVTZXJ2aWNlLCBTcGVlY2hSZWNvcmRlclVwbG9hZGVyLCBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzRnJvbURpKCkpXSB9KVxyXG5leHBvcnQgY2xhc3MgU3BlZWNocmVjb3JkZXJuZ01vZHVsZXtcclxuXHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBTcGVlY2hSZWNvcmRlckNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U3BlZWNocmVjb3JkZXJuZ01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFNwZWVjaHJlY29yZGVybmdNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtwcm92aWRlOiBTUEVFQ0hSRUNPUkRFUl9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Injectable, InjectionToken } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export const SPEECHRECORDER_CONFIG = new InjectionToken('speechrecorder.config');
|
|
4
|
-
export var ApiType;
|
|
5
|
-
(function (ApiType) {
|
|
6
|
-
ApiType[ApiType["NORMAL"] = 0] = "NORMAL";
|
|
7
|
-
ApiType[ApiType["FILES"] = 1] = "FILES";
|
|
8
|
-
})(ApiType || (ApiType = {}));
|
|
9
|
-
export class SpeechRecorderConfig {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.apiEndPoint = null;
|
|
12
|
-
this.apiType = null;
|
|
13
|
-
this.apiVersion = 1;
|
|
14
|
-
this.withCredentials = false;
|
|
15
|
-
this.enableDownloadRecordings = false;
|
|
16
|
-
this.enableUploadRecordings = true;
|
|
17
|
-
this.apiEndPoint = null;
|
|
18
|
-
this.apiType = null;
|
|
19
|
-
this.withCredentials = false;
|
|
20
|
-
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechRecorderConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechRecorderConfig }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SpeechRecorderConfig, decorators: [{
|
|
25
|
-
type: Injectable
|
|
26
|
-
}], ctorParameters: () => [] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcHIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUV6RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsdUJBQXVCLENBQUMsQ0FBQztBQUd2RyxNQUFNLENBQU4sSUFBWSxPQUVYO0FBRkQsV0FBWSxPQUFPO0lBQ2pCLHlDQUFNLENBQUE7SUFBQyx1Q0FBSyxDQUFBO0FBQ2QsQ0FBQyxFQUZXLE9BQU8sS0FBUCxPQUFPLFFBRWxCO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtJQU8vQjtRQU5BLGdCQUFXLEdBQWlCLElBQUksQ0FBQztRQUNqQyxZQUFPLEdBQWtCLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQVMsQ0FBQyxDQUFDO1FBQ3JCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLDZCQUF3QixHQUFXLEtBQUssQ0FBQztRQUN6QywyQkFBc0IsR0FBVyxJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBQyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQzsrR0FYVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgU1BFRUNIUkVDT1JERVJfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFNwZWVjaFJlY29yZGVyQ29uZmlnPignc3BlZWNocmVjb3JkZXIuY29uZmlnJyk7XHJcblxyXG5cclxuZXhwb3J0IGVudW0gQXBpVHlwZSB7XHJcbiAgTk9STUFMLEZJTEVTXHJcbn1cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU3BlZWNoUmVjb3JkZXJDb25maWd7XHJcbiAgYXBpRW5kUG9pbnQ/OiBzdHJpbmcgfCBudWxsPW51bGw7XHJcbiAgYXBpVHlwZT86IEFwaVR5cGUgfCBudWxsPW51bGw7XHJcbiAgYXBpVmVyc2lvbjogbnVtYmVyPTE7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbj1mYWxzZTtcclxuICBlbmFibGVEb3dubG9hZFJlY29yZGluZ3M/OiBib29sZWFuPWZhbHNlO1xyXG4gIGVuYWJsZVVwbG9hZFJlY29yZGluZ3M/OiBib29sZWFuPXRydWU7XHJcbiAgY29uc3RydWN0b3IoKXtcclxuICAgIHRoaXMuYXBpRW5kUG9pbnQ9bnVsbDtcclxuICAgIHRoaXMuYXBpVHlwZT1udWxsO1xyXG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHM9ZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const VERSION = '3.10.13';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByLm1vZHVsZS52ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3Nwci5tb2R1bGUudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT049JzMuMTAuMTMnIl19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Position } from "../math/2d/geometry";
|
|
2
|
-
import { Directive } from "@angular/core";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class CanvasLayerComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.bounds = null;
|
|
7
|
-
// TODO make clear that first element is background canvas
|
|
8
|
-
this.canvasLayers = new Array();
|
|
9
|
-
}
|
|
10
|
-
toXViewPortPixelPosition(virtualX) {
|
|
11
|
-
let pixelPos = virtualX;
|
|
12
|
-
if (this.bounds) {
|
|
13
|
-
pixelPos = Math.round(virtualX - this.bounds.position.left);
|
|
14
|
-
}
|
|
15
|
-
return pixelPos;
|
|
16
|
-
}
|
|
17
|
-
toXVirtualPixelPosition(viewPortX) {
|
|
18
|
-
let pixelPos = viewPortX;
|
|
19
|
-
if (this.bounds) {
|
|
20
|
-
pixelPos = Math.round(viewPortX + this.bounds.position.left);
|
|
21
|
-
}
|
|
22
|
-
return pixelPos;
|
|
23
|
-
}
|
|
24
|
-
toViewPortPosition(virtualPos) {
|
|
25
|
-
if (this.bounds) {
|
|
26
|
-
return new Position(virtualPos.left - this.bounds.position.left, virtualPos.top - this.bounds.position.top);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return virtualPos;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CanvasLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
33
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: CanvasLayerComponent, ngImport: i0 }); }
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CanvasLayerComponent, decorators: [{
|
|
36
|
-
type: Directive
|
|
37
|
-
}], ctorParameters: () => [] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzX2xheWVyX2NvbXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdWkvY2FudmFzX2xheWVyX2NvbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUcxQyxNQUFNLE9BQWdCLG9CQUFvQjtJQU14QztRQUpVLFdBQU0sR0FBZ0IsSUFBSSxDQUFDO1FBTW5DLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFDLElBQUksS0FBSyxFQUFxQixDQUFDO0lBQ25ELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxRQUFlO1FBQ3RDLElBQUksUUFBUSxHQUFDLFFBQVEsQ0FBQztRQUNwQixJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztZQUNaLFFBQVEsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQWdCO1FBQ3RDLElBQUksUUFBUSxHQUFDLFNBQVMsQ0FBQztRQUN2QixJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQztZQUNkLFFBQVEsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLFVBQW1CO1FBRXBDLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ2QsT0FBTyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBQyxVQUFVLENBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7YUFBSSxDQUFDO1lBQ0osT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7K0dBbkNtQixvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEekMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UG9zaXRpb24sRGltZW5zaW9uLCBSZWN0YW5nbGV9IGZyb20gXCIuLi9tYXRoLzJkL2dlb21ldHJ5XCI7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhbnZhc0xheWVyQ29tcG9uZW50e1xyXG5cclxuICBwcm90ZWN0ZWQgYm91bmRzOlJlY3RhbmdsZXxudWxsPW51bGw7XHJcbiAgcHJvdGVjdGVkIHZpcnR1YWxEaW1lbnNpb24hOkRpbWVuc2lvbjtcclxuICBwcm90ZWN0ZWQgY2FudmFzTGF5ZXJzOkFycmF5PEhUTUxDYW52YXNFbGVtZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoKXtcclxuXHJcbiAgICAvLyBUT0RPIG1ha2UgY2xlYXIgdGhhdCBmaXJzdCBlbGVtZW50IGlzIGJhY2tncm91bmQgY2FudmFzXHJcbiAgICB0aGlzLmNhbnZhc0xheWVycz1uZXcgQXJyYXk8SFRNTENhbnZhc0VsZW1lbnQ+KCk7XHJcbiAgfVxyXG5cclxuICB0b1hWaWV3UG9ydFBpeGVsUG9zaXRpb24odmlydHVhbFg6bnVtYmVyKXtcclxuICAgIGxldCBwaXhlbFBvcz12aXJ0dWFsWDtcclxuICAgICAgaWYodGhpcy5ib3VuZHMpe1xyXG4gICAgICAgICAgcGl4ZWxQb3M9TWF0aC5yb3VuZCh2aXJ0dWFsWC10aGlzLmJvdW5kcy5wb3NpdGlvbi5sZWZ0KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcGl4ZWxQb3M7XHJcbiAgfVxyXG5cclxuICB0b1hWaXJ0dWFsUGl4ZWxQb3NpdGlvbih2aWV3UG9ydFg6bnVtYmVyKXtcclxuICAgIGxldCBwaXhlbFBvcz12aWV3UG9ydFg7XHJcbiAgICBpZih0aGlzLmJvdW5kcyl7XHJcbiAgICAgIHBpeGVsUG9zPU1hdGgucm91bmQodmlld1BvcnRYK3RoaXMuYm91bmRzLnBvc2l0aW9uLmxlZnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBpeGVsUG9zO1xyXG4gIH1cclxuXHJcbiAgdG9WaWV3UG9ydFBvc2l0aW9uKHZpcnR1YWxQb3M6UG9zaXRpb24pOlBvc2l0aW9ue1xyXG5cclxuICAgIGlmKHRoaXMuYm91bmRzKXtcclxuICAgICAgcmV0dXJuIG5ldyBQb3NpdGlvbih2aXJ0dWFsUG9zLmxlZnQtdGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCx2aXJ0dWFsUG9zLnRvcC10aGlzLmJvdW5kcy5wb3NpdGlvbi50b3ApO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHJldHVybiB2aXJ0dWFsUG9zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class IntersectionObserverDirective {
|
|
4
|
-
//private intersectionObserver:IntersectionObserver|null=null;
|
|
5
|
-
constructor(elRef) {
|
|
6
|
-
this.elRef = elRef;
|
|
7
|
-
const ne = this.elRef.nativeElement;
|
|
8
|
-
//ne.style.backgroundColor = 'yellow';
|
|
9
|
-
}
|
|
10
|
-
set updateObservation(elIntersection) {
|
|
11
|
-
//console.debug("visi: "+elIntersection.selected);
|
|
12
|
-
if (elIntersection.observe) {
|
|
13
|
-
//this.elRef.nativeElement.scrollIntoView(false);
|
|
14
|
-
elIntersection.observer.observe(this.elRef.nativeElement);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
elIntersection.observer.unobserve(this.elRef.nativeElement);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IntersectionObserverDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: IntersectionObserverDirective, isStandalone: true, selector: "[updateObservation]", inputs: { updateObservation: "updateObservation" }, ngImport: i0 }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: IntersectionObserverDirective, decorators: [{
|
|
24
|
-
type: Directive,
|
|
25
|
-
args: [{
|
|
26
|
-
selector: '[updateObservation]',
|
|
27
|
-
standalone: true,
|
|
28
|
-
}]
|
|
29
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { updateObservation: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi91aS9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQVczRCxNQUFNLE9BQU8sNkJBQTZCO0lBRXhDLDhEQUE4RDtJQUM5RCxZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ25DLE1BQU0sRUFBRSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2xDLHNDQUFzQztJQUV4QyxDQUFDO0lBRUQsSUFDSSxpQkFBaUIsQ0FBQyxjQUFrQztRQUN0RCxrREFBa0Q7UUFDbEQsSUFBRyxjQUFjLENBQUMsT0FBTyxFQUFDLENBQUM7WUFDekIsaURBQWlEO1lBQ2pELGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFJLENBQUM7WUFDSixjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDOytHQWxCVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0VBV0ssaUJBQWlCO3NCQURwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudEludGVyc2VjdGlvbntcclxuICAgIG9ic2VydmVyOkludGVyc2VjdGlvbk9ic2VydmVyLFxyXG4gICAgb2JzZXJ2ZTpib29sZWFuXHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3VwZGF0ZU9ic2VydmF0aW9uXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEludGVyc2VjdGlvbk9ic2VydmVyRGlyZWN0aXZlIHtcclxuXHJcbiAgLy9wcml2YXRlIGludGVyc2VjdGlvbk9ic2VydmVyOkludGVyc2VjdGlvbk9ic2VydmVyfG51bGw9bnVsbDtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBjb25zdCBuZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAvL25lLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd5ZWxsb3cnO1xyXG5cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHVwZGF0ZU9ic2VydmF0aW9uKGVsSW50ZXJzZWN0aW9uOkVsZW1lbnRJbnRlcnNlY3Rpb24pe1xyXG4gICAgLy9jb25zb2xlLmRlYnVnKFwidmlzaTogXCIrZWxJbnRlcnNlY3Rpb24uc2VsZWN0ZWQpO1xyXG4gICAgaWYoZWxJbnRlcnNlY3Rpb24ub2JzZXJ2ZSl7XHJcbiAgICAgIC8vdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTtcclxuICAgICAgZWxJbnRlcnNlY3Rpb24ub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGVsSW50ZXJzZWN0aW9uLm9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from "@angular/core";
|
|
2
|
-
import { MAT_DIALOG_DATA } from "@angular/material/dialog";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/material/dialog";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@angular/material/icon";
|
|
7
|
-
import * as i4 from "@angular/material/button";
|
|
8
|
-
export class MessageDialog {
|
|
9
|
-
constructor(dialogRef, data) {
|
|
10
|
-
this.dialogRef = dialogRef;
|
|
11
|
-
this.data = data;
|
|
12
|
-
}
|
|
13
|
-
closeDialog() {
|
|
14
|
-
this.dialogRef.close();
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MessageDialog, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MessageDialog, selector: "msg-dialog", ngImport: i0, template: `<h1 mat-dialog-title><mat-icon *ngIf="data.type==='error'" [style.color]="'red'">error</mat-icon>
|
|
18
|
-
<mat-icon *ngIf="data.type==='warning'" [style.color]="'yellow'">warning</mat-icon>{{data.title}}</h1>
|
|
19
|
-
<div mat-dialog-content>
|
|
20
|
-
|
|
21
|
-
<p>{{data.msg}}</p>
|
|
22
|
-
<p>{{data.advice}}</p>
|
|
23
|
-
|
|
24
|
-
</div>
|
|
25
|
-
<div mat-dialog-actions>
|
|
26
|
-
<button mat-button (click)="closeDialog()">OK</button>
|
|
27
|
-
</div>
|
|
28
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MessageDialog, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{
|
|
33
|
-
selector: 'msg-dialog',
|
|
34
|
-
template: `<h1 mat-dialog-title><mat-icon *ngIf="data.type==='error'" [style.color]="'red'">error</mat-icon>
|
|
35
|
-
<mat-icon *ngIf="data.type==='warning'" [style.color]="'yellow'">warning</mat-icon>{{data.title}}</h1>
|
|
36
|
-
<div mat-dialog-content>
|
|
37
|
-
|
|
38
|
-
<p>{{data.msg}}</p>
|
|
39
|
-
<p>{{data.advice}}</p>
|
|
40
|
-
|
|
41
|
-
</div>
|
|
42
|
-
<div mat-dialog-actions>
|
|
43
|
-
<button mat-button (click)="closeDialog()">OK</button>
|
|
44
|
-
</div>
|
|
45
|
-
`
|
|
46
|
-
}]
|
|
47
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
48
|
-
type: Inject,
|
|
49
|
-
args: [MAT_DIALOG_DATA]
|
|
50
|
-
}] }] });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZV9kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvdWkvbWVzc2FnZV9kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBaUJ6RSxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUNTLFNBQXNDLEVBQ2IsSUFBUztRQURsQyxjQUFTLEdBQVQsU0FBUyxDQUE2QjtRQUNiLFNBQUksR0FBSixJQUFJLENBQUs7SUFBSSxDQUFDO0lBRWhELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBUlUsYUFBYSw4Q0FJZCxlQUFlO21HQUpkLGFBQWEsa0RBYmQ7Ozs7Ozs7Ozs7O0dBV1Q7OzRGQUVVLGFBQWE7a0JBZnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7R0FXVDtpQkFDRjs7MEJBS0ksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21zZy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlOiBgPGgxIG1hdC1kaWFsb2ctdGl0bGU+PG1hdC1pY29uICpuZ0lmPVwiZGF0YS50eXBlPT09J2Vycm9yJ1wiIFtzdHlsZS5jb2xvcl09XCIncmVkJ1wiPmVycm9yPC9tYXQtaWNvbj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImRhdGEudHlwZT09PSd3YXJuaW5nJ1wiIFtzdHlsZS5jb2xvcl09XCIneWVsbG93J1wiPndhcm5pbmc8L21hdC1pY29uPnt7ZGF0YS50aXRsZX19PC9oMT5cclxuICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgICA8cD57e2RhdGEubXNnfX08L3A+XHJcbiAgICA8cD57e2RhdGEuYWR2aWNlfX08L3A+XHJcblxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+T0s8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlRGlhbG9ne1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxNZXNzYWdlRGlhbG9nPixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7IH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
|
|
2
|
-
import { LevelBar } from "../audio/ui/livelevel";
|
|
3
|
-
import { ResponsiveComponent } from "./responsive_component";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/cdk/layout";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@angular/material/icon";
|
|
8
|
-
import * as i4 from "@angular/material/tooltip";
|
|
9
|
-
import * as i5 from "../audio/ui/livelevel";
|
|
10
|
-
export const MIN_DB_LEVEL = -40.0;
|
|
11
|
-
export const DEFAULT_WARN_DB_LEVEL = -2;
|
|
12
|
-
export class RecordingItemControls extends ResponsiveComponent {
|
|
13
|
-
set agc(agc) {
|
|
14
|
-
this._agc = agc;
|
|
15
|
-
if (this._agc === undefined || this._agc === null) {
|
|
16
|
-
this.agcString = 'n/a';
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
if (this._agc === true) {
|
|
20
|
-
this.agcString = 'On';
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.agcString = 'Off';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
constructor(bpo, ref, changeDetectorRef) {
|
|
28
|
-
super(bpo);
|
|
29
|
-
this.bpo = bpo;
|
|
30
|
-
this.ref = ref;
|
|
31
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
32
|
-
this.ce = null;
|
|
33
|
-
this.audioSignalCollapsed = true;
|
|
34
|
-
this.enableDownload = false;
|
|
35
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
36
|
-
this._displayLevelInfos = null;
|
|
37
|
-
this._agc = undefined;
|
|
38
|
-
this.agcString = 'n/a';
|
|
39
|
-
this.onShowRecordingDetails = new EventEmitter();
|
|
40
|
-
this.onDownloadRecording = new EventEmitter();
|
|
41
|
-
this.disableAudioDetails = true;
|
|
42
|
-
this.audioLoaded = false;
|
|
43
|
-
this.playStartEnabled = false;
|
|
44
|
-
this.playStopEnabled = false;
|
|
45
|
-
this.updateTimerId = null;
|
|
46
|
-
this.destroyed = false;
|
|
47
|
-
this.warnDbLevel = DEFAULT_WARN_DB_LEVEL;
|
|
48
|
-
}
|
|
49
|
-
ngOnDestroy() {
|
|
50
|
-
this.destroyed = true;
|
|
51
|
-
}
|
|
52
|
-
showRecordingDetails() {
|
|
53
|
-
this.onShowRecordingDetails.emit();
|
|
54
|
-
}
|
|
55
|
-
downloadRecording() {
|
|
56
|
-
this.onDownloadRecording.emit();
|
|
57
|
-
}
|
|
58
|
-
ngAfterViewInit() {
|
|
59
|
-
this.ce = this.ref.nativeElement;
|
|
60
|
-
}
|
|
61
|
-
set displayLevelInfos(levelInfos) {
|
|
62
|
-
this._displayLevelInfos = levelInfos;
|
|
63
|
-
}
|
|
64
|
-
error() {
|
|
65
|
-
// this.status = 'ERROR';
|
|
66
|
-
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RecordingItemControls, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: { audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", peakDbLvl: "peakDbLvl", agc: "agc", disableAudioDetails: "disableAudioDetails", audioLoaded: "audioLoaded", playStartAction: "playStartAction", playStopAction: "playStopAction", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, usesInheritance: true, ngImport: i0, template: `
|
|
69
|
-
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
70
|
-
[disabled]="playStartAction?playStartAction.disabled:true"
|
|
71
|
-
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
72
|
-
<mat-icon>play_arrow</mat-icon>
|
|
73
|
-
</button>
|
|
74
|
-
<button matTooltip="Stop playback" (click)="playStopAction?.perform()"
|
|
75
|
-
[disabled]="playStopAction?.disabled"
|
|
76
|
-
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
77
|
-
<mat-icon>stop</mat-icon>
|
|
78
|
-
</button>
|
|
79
|
-
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
80
|
-
(click)="showRecordingDetails()">
|
|
81
|
-
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
82
|
-
</button>
|
|
83
|
-
<button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
|
|
84
|
-
(click)="downloadRecording()">
|
|
85
|
-
<mat-icon>file_download</mat-icon>
|
|
86
|
-
</button>
|
|
87
|
-
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
88
|
-
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
89
|
-
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
90
|
-
`, isInline: true, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }] }); }
|
|
91
|
-
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RecordingItemControls, decorators: [{
|
|
93
|
-
type: Component,
|
|
94
|
-
args: [{ selector: 'spr-recordingitemcontrols', template: `
|
|
95
|
-
<button matTooltip="Start playback" (click)="playStartAction?.perform()"
|
|
96
|
-
[disabled]="playStartAction?playStartAction.disabled:true"
|
|
97
|
-
[style.color]="playStartAction?.disabled ? 'grey' : 'green'">
|
|
98
|
-
<mat-icon>play_arrow</mat-icon>
|
|
99
|
-
</button>
|
|
100
|
-
<button matTooltip="Stop playback" (click)="playStopAction?.perform()"
|
|
101
|
-
[disabled]="playStopAction?.disabled"
|
|
102
|
-
[style.color]="playStopAction?.disabled ? 'grey' : 'yellow'">
|
|
103
|
-
<mat-icon>stop</mat-icon>
|
|
104
|
-
</button>
|
|
105
|
-
<button *ngIf="!screenXs" matTooltip="Toggle detailed audio display" [disabled]="disableAudioDetails || !audioLoaded"
|
|
106
|
-
(click)="showRecordingDetails()">
|
|
107
|
-
<mat-icon>{{(audioSignalCollapsed) ? "expand_less" : "expand_more"}}</mat-icon>
|
|
108
|
-
</button>
|
|
109
|
-
<button matTooltip="Download current recording" *ngIf="enableDownload" [disabled]="disableAudioDetails || !audioLoaded"
|
|
110
|
-
(click)="downloadRecording()">
|
|
111
|
-
<mat-icon>file_download</mat-icon>
|
|
112
|
-
</button>
|
|
113
|
-
<div style="min-width: 14ch;padding:2px"><table style="border-style: none"><tr><td>Peak:</td><td><span matTooltip="Peak level"
|
|
114
|
-
[style.color]="(peakDbLvl > warnDbLevel)?'red':'black'">{{peakDbLvl | number:'1.1-1'}} dB </span></td></tr>
|
|
115
|
-
<tr *ngIf="_agc"><td>AGC:</td><td><span matTooltip="Auto gain control">{{agcString}}</span></td></tr></table></div>
|
|
116
|
-
`, styles: [":host{flex:0;width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;height:100%;display:flex;flex-direction:row;flex-wrap:nowrap}\n", "span{flex:0;font-weight:700;display:inline-block;white-space:nowrap;box-sizing:border-box}\n", "button{touch-action:manipulation}\n"] }]
|
|
117
|
-
}], ctorParameters: () => [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { audioSignalCollapsed: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], enableDownload: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], peakDbLvl: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], agc: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], onShowRecordingDetails: [{
|
|
126
|
-
type: Output
|
|
127
|
-
}], onDownloadRecording: [{
|
|
128
|
-
type: Output
|
|
129
|
-
}], disableAudioDetails: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], audioLoaded: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}], playStartAction: [{
|
|
134
|
-
type: Input
|
|
135
|
-
}], playStopAction: [{
|
|
136
|
-
type: Input
|
|
137
|
-
}], displayLevelInfos: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}] } });
|
|
140
|
-
export class RecordingItemDisplay extends ResponsiveComponent {
|
|
141
|
-
set agc(agc) {
|
|
142
|
-
this._agc = agc;
|
|
143
|
-
}
|
|
144
|
-
constructor(bpo, ref, changeDetectorRef) {
|
|
145
|
-
super(bpo);
|
|
146
|
-
this.bpo = bpo;
|
|
147
|
-
this.ref = ref;
|
|
148
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
149
|
-
this.ce = null;
|
|
150
|
-
this.streamingMode = false;
|
|
151
|
-
this.audioSignalCollapsed = true;
|
|
152
|
-
this.enableDownload = false;
|
|
153
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
154
|
-
this._displayLevelInfos = null;
|
|
155
|
-
this._agc = undefined;
|
|
156
|
-
this.agcString = 'n/a';
|
|
157
|
-
this.onShowRecordingDetails = new EventEmitter();
|
|
158
|
-
this.onDownloadRecording = new EventEmitter();
|
|
159
|
-
this.playStartEnabled = false;
|
|
160
|
-
this.playStopEnabled = false;
|
|
161
|
-
this.updateTimerId = null;
|
|
162
|
-
this.destroyed = false;
|
|
163
|
-
this.warnDbLevel = DEFAULT_WARN_DB_LEVEL;
|
|
164
|
-
}
|
|
165
|
-
ngOnDestroy() {
|
|
166
|
-
this.destroyed = true;
|
|
167
|
-
}
|
|
168
|
-
set displayAudioBuffer(displayAudioBuffer) {
|
|
169
|
-
this._displayAudioBuffer = displayAudioBuffer;
|
|
170
|
-
}
|
|
171
|
-
get displayAudioBuffer() {
|
|
172
|
-
return this._displayAudioBuffer;
|
|
173
|
-
}
|
|
174
|
-
showRecordingDetails() {
|
|
175
|
-
this.onShowRecordingDetails.emit();
|
|
176
|
-
}
|
|
177
|
-
downloadRecording() {
|
|
178
|
-
this.onDownloadRecording.emit();
|
|
179
|
-
}
|
|
180
|
-
ngAfterViewInit() {
|
|
181
|
-
this.ce = this.ref.nativeElement;
|
|
182
|
-
//this.controlAudioPlayer.listener=this;
|
|
183
|
-
}
|
|
184
|
-
set displayLevelInfos(levelInfos) {
|
|
185
|
-
this._displayLevelInfos = levelInfos;
|
|
186
|
-
}
|
|
187
|
-
set channelCount(channelCount) {
|
|
188
|
-
this.reset();
|
|
189
|
-
this.liveLevel.channelCount = channelCount;
|
|
190
|
-
}
|
|
191
|
-
set playFramePosition(playFramePosition) {
|
|
192
|
-
this.liveLevel.playFramePosition = playFramePosition;
|
|
193
|
-
}
|
|
194
|
-
update(levelInfo, peakLevelInfo) {
|
|
195
|
-
let peakDBVal = levelInfo.powerLevelDB();
|
|
196
|
-
if (this.peakDbLvl < peakDBVal) {
|
|
197
|
-
this.peakDbLvl = peakDBVal;
|
|
198
|
-
// the event comes from outside an Angular zone
|
|
199
|
-
this.changeDetectorRef.detectChanges();
|
|
200
|
-
}
|
|
201
|
-
this.liveLevel.update(levelInfo);
|
|
202
|
-
}
|
|
203
|
-
error() {
|
|
204
|
-
// this.status = 'ERROR';
|
|
205
|
-
}
|
|
206
|
-
streamFinished() {
|
|
207
|
-
this.liveLevel.streamFinished();
|
|
208
|
-
}
|
|
209
|
-
reset() {
|
|
210
|
-
this.peakDbLvl = MIN_DB_LEVEL;
|
|
211
|
-
this.changeDetectorRef.detectChanges();
|
|
212
|
-
}
|
|
213
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RecordingItemDisplay, deps: [{ token: i1.BreakpointObserver }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
214
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: RecordingItemDisplay, selector: "spr-recordingitemdisplay", inputs: { streamingMode: "streamingMode", audioSignalCollapsed: "audioSignalCollapsed", enableDownload: "enableDownload", agc: "agc", playStartAction: "playStartAction", playStopAction: "playStopAction", displayAudioBuffer: "displayAudioBuffer", displayLevelInfos: "displayLevelInfos" }, outputs: { onShowRecordingDetails: "onShowRecordingDetails", onDownloadRecording: "onDownloadRecording" }, viewQueries: [{ propertyName: "liveLevel", first: true, predicate: LevelBar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
215
|
-
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
216
|
-
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
217
|
-
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
218
|
-
</div>
|
|
219
|
-
`, isInline: true, styles: ["div{width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"], dependencies: [{ kind: "component", type: i5.LevelBar, selector: "audio-levelbar", inputs: ["streamingMode", "displayLevelInfos", "state"] }, { kind: "component", type: RecordingItemControls, selector: "spr-recordingitemcontrols", inputs: ["audioSignalCollapsed", "enableDownload", "peakDbLvl", "agc", "disableAudioDetails", "audioLoaded", "playStartAction", "playStopAction", "displayLevelInfos"], outputs: ["onShowRecordingDetails", "onDownloadRecording"] }] }); }
|
|
220
|
-
}
|
|
221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RecordingItemDisplay, decorators: [{
|
|
222
|
-
type: Component,
|
|
223
|
-
args: [{ selector: 'spr-recordingitemdisplay', template: `
|
|
224
|
-
<div [class]="{audioStatusDisplay:!screenXs,audioStatusDisplayXs:screenXs}">
|
|
225
|
-
<audio-levelbar style="flex:1 0 1%" [streamingMode]="streamingMode" [displayLevelInfos]="_displayLevelInfos"></audio-levelbar>
|
|
226
|
-
<spr-recordingitemcontrols style="flex:0 0 0px" [audioLoaded]="displayAudioBuffer!==null" [playStartAction]="playStartAction" [playStopAction]="playStopAction" [peakDbLvl]="peakDbLvl" [agc]="_agc" (onShowRecordingDetails)="onShowRecordingDetails.emit()"></spr-recordingitemcontrols>
|
|
227
|
-
</div>
|
|
228
|
-
`, styles: ["div{width:100%;background:#a9a9a9;padding:4px;box-sizing:border-box;flex-wrap:nowrap}\n", "audio-levelbar{box-sizing:border-box}\n", ".audioStatusDisplay{display:flex;flex-direction:row;height:100px;min-height:100px}\n", ".audioStatusDisplayXs{display:flex;flex-direction:column;height:125px;min-height:125px}\n"] }]
|
|
229
|
-
}], ctorParameters: () => [{ type: i1.BreakpointObserver }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { liveLevel: [{
|
|
230
|
-
type: ViewChild,
|
|
231
|
-
args: [LevelBar, { static: true }]
|
|
232
|
-
}], streamingMode: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], audioSignalCollapsed: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], enableDownload: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], agc: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], onShowRecordingDetails: [{
|
|
241
|
-
type: Output
|
|
242
|
-
}], onDownloadRecording: [{
|
|
243
|
-
type: Output
|
|
244
|
-
}], playStartAction: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], playStopAction: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], displayAudioBuffer: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], displayLevelInfos: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}] } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5naXRlbV9kaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3VpL3JlY29yZGluZ2l0ZW1fZGlzcGxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ2dCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFDaEYsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQUkzRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFrRHhDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBbUI7SUFjNUQsSUFBYSxHQUFHLENBQUMsR0FBMEI7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBQyxHQUFHLENBQUM7UUFDZCxJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUcsSUFBSSxFQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxLQUFLLENBQUM7UUFDdkIsQ0FBQzthQUFJLENBQUM7WUFDSixJQUFHLElBQUksQ0FBQyxJQUFJLEtBQUcsSUFBSSxFQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDO1lBQ3RCLENBQUM7aUJBQUksQ0FBQztnQkFDSixJQUFJLENBQUMsU0FBUyxHQUFDLEtBQUssQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFrQkQsWUFBc0IsR0FBc0IsRUFBUyxHQUFlLEVBQVUsaUJBQW9DO1FBQ2hILEtBQUss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QUFjO3NCQUF0QixLQUFLO2dCQW1CRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBdUJGLGlCQUFpQjtzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHtMZXZlbEluZm8sIExldmVsSW5mb3MsIExldmVsTGlzdGVuZXJ9IGZyb20gXCIuLi9hdWRpby9kc3AvbGV2ZWxfbWVhc3VyZVwiO1xyXG5pbXBvcnQge0xldmVsQmFyfSBmcm9tIFwiLi4vYXVkaW8vdWkvbGl2ZWxldmVsXCI7XHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Jlc3BvbnNpdmVDb21wb25lbnR9IGZyb20gXCIuL3Jlc3BvbnNpdmVfY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QnJlYWtwb2ludE9ic2VydmVyfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2xheW91dFwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBNSU5fREJfTEVWRUwgPSAtNDAuMDtcclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0FSTl9EQl9MRVZFTCA9IC0yO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcHItcmVjb3JkaW5naXRlbWNvbnRyb2xzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxidXR0b24gbWF0VG9vbHRpcD1cIlN0YXJ0IHBsYXliYWNrXCIgKGNsaWNrKT1cInBsYXlTdGFydEFjdGlvbj8ucGVyZm9ybSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwbGF5U3RhcnRBY3Rpb24/cGxheVN0YXJ0QWN0aW9uLmRpc2FibGVkOnRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInBsYXlTdGFydEFjdGlvbj8uZGlzYWJsZWQgPyAnZ3JleScgOiAnZ3JlZW4nXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5wbGF5X2Fycm93PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJTdG9wIHBsYXliYWNrXCIgKGNsaWNrKT1cInBsYXlTdG9wQWN0aW9uPy5wZXJmb3JtKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBsYXlTdG9wQWN0aW9uPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwicGxheVN0b3BBY3Rpb24/LmRpc2FibGVkID8gJ2dyZXknIDogJ3llbGxvdydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnN0b3A8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhc2NyZWVuWHNcIiBtYXRUb29sdGlwPVwiVG9nZ2xlIGRldGFpbGVkIGF1ZGlvIGRpc3BsYXlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUF1ZGlvRGV0YWlscyB8fCAhYXVkaW9Mb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dSZWNvcmRpbmdEZXRhaWxzKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnt7KGF1ZGlvU2lnbmFsQ29sbGFwc2VkKSA/IFwiZXhwYW5kX2xlc3NcIiA6IFwiZXhwYW5kX21vcmVcIn19PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdFRvb2x0aXA9XCJEb3dubG9hZCBjdXJyZW50IHJlY29yZGluZ1wiICpuZ0lmPVwiZW5hYmxlRG93bmxvYWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUF1ZGlvRGV0YWlscyB8fCAhYXVkaW9Mb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkUmVjb3JkaW5nKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmZpbGVfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDE0Y2g7cGFkZGluZzoycHhcIj48dGFibGUgc3R5bGU9XCJib3JkZXItc3R5bGU6IG5vbmVcIj48dHI+PHRkPlBlYWs6PC90ZD48dGQ+PHNwYW4gbWF0VG9vbHRpcD1cIlBlYWsgbGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiKHBlYWtEYkx2bCA+IHdhcm5EYkxldmVsKT8ncmVkJzonYmxhY2snXCI+e3twZWFrRGJMdmwgfCBudW1iZXI6JzEuMS0xJ319IGRCIDwvc3Bhbj48L3RkPjwvdHI+XHJcbiAgICAgICAgICA8dHIgKm5nSWY9XCJfYWdjXCI+PHRkPkFHQzo8L3RkPjx0ZD48c3BhbiBtYXRUb29sdGlwPVwiQXV0byBnYWluIGNvbnRyb2xcIj57e2FnY1N0cmluZ319PC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PlxyXG4gICAgYCxcclxuICBzdHlsZXM6IFtgOmhvc3Qge1xyXG4gICAgICAgIGZsZXg6IDA7IC8qIG9ubHkgcmVxdWlyZWQgdmVydGljYWwgc3BhY2UgKi9cclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBkYXJrZ3JheTtcclxuICAgICAgICBwYWRkaW5nOiA0cHg7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7IC8qIGZsZXggY29udGFpbmVyOiBsZWZ0IGxldmVsIGJhciwgcmlnaHQgZGVjaW1hbCBwZWFrIGxldmVsIHZhbHVlICovXHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgLyogd3JhcCBjb3VsZCBjb21wbGV0ZWx5IGRlc3Ryb3kgdGhlIGxheW91dCAqL1xyXG4gICAgfWAsIGBzcGFuIHtcclxuICAgICAgICBmbGV4OiAwO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9YCxgXHJcbiAgICAgYnV0dG9uIHtcclxuICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xyXG4gICAgIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0l0ZW1Db250cm9scyBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBjZTogSFRNTERpdkVsZW1lbnR8bnVsbD1udWxsO1xyXG4gIEBJbnB1dCgpIGF1ZGlvU2lnbmFsQ29sbGFwc2VkOiBib29sZWFuPXRydWU7XHJcbiAgcHJpdmF0ZSBfZGlzcGxheUF1ZGlvQnVmZmVyOiBBdWRpb0J1ZmZlciB8IG51bGx8dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGVuYWJsZURvd25sb2FkOiBib29sZWFuPWZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwZWFrRGJMdmwgPSBNSU5fREJfTEVWRUw7XHJcblxyXG4gIF9kaXNwbGF5TGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGw9bnVsbDtcclxuXHJcbiAgX2FnYzpib29sZWFufG51bGx8dW5kZWZpbmVkPXVuZGVmaW5lZDtcclxuICBhZ2NTdHJpbmc9J24vYSc7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBhZ2MoYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQpe1xyXG4gICAgdGhpcy5fYWdjPWFnYztcclxuICAgIGlmKHRoaXMuX2FnYz09PXVuZGVmaW5lZCB8fCB0aGlzLl9hZ2M9PT1udWxsKXtcclxuICAgICAgdGhpcy5hZ2NTdHJpbmc9J24vYSc7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYodGhpcy5fYWdjPT09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5hZ2NTdHJpbmc9J09uJztcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hZ2NTdHJpbmc9J09mZic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvblNob3dSZWNvcmRpbmdEZXRhaWxzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uRG93bmxvYWRSZWNvcmRpbmc6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZUF1ZGlvRGV0YWlscz10cnVlO1xyXG4gIEBJbnB1dCgpIGF1ZGlvTG9hZGVkPWZhbHNlO1xyXG4gIC8vQElucHV0KCkgY29udHJvbEF1ZGlvUGxheWVyOiBBdWRpb1BsYXllcjtcclxuICBASW5wdXQoKSBwbGF5U3RhcnRBY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBwbGF5U3RvcEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gIHBsYXlTdGFydEVuYWJsZWQgPSBmYWxzZTtcclxuICBwbGF5U3RvcEVuYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHVwZGF0ZVRpbWVySWQ6IG51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gIHdhcm5EYkxldmVsID0gREVGQVVMVF9XQVJOX0RCX0xFVkVMO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYnBvOkJyZWFrcG9pbnRPYnNlcnZlcixwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKGJwbyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNob3dSZWNvcmRpbmdEZXRhaWxzKCkge1xyXG4gICAgdGhpcy5vblNob3dSZWNvcmRpbmdEZXRhaWxzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkUmVjb3JkaW5nKCkge1xyXG4gICAgdGhpcy5vbkRvd25sb2FkUmVjb3JkaW5nLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgIHRoaXMuX2Rpc3BsYXlMZXZlbEluZm9zID0gbGV2ZWxJbmZvcztcclxuICB9XHJcblxyXG4gIGVycm9yKCkge1xyXG4gICAgLy8gdGhpcy5zdGF0dXMgPSAnRVJST1InO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc3ByLXJlY29yZGluZ2l0ZW1kaXNwbGF5JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgW2NsYXNzXT1cInthdWRpb1N0YXR1c0Rpc3BsYXk6IXNjcmVlblhzLGF1ZGlvU3RhdHVzRGlzcGxheVhzOnNjcmVlblhzfVwiPlxyXG4gICAgICAgIDxhdWRpby1sZXZlbGJhciBzdHlsZT1cImZsZXg6MSAwIDElXCIgW3N0cmVhbWluZ01vZGVdPVwic3RyZWFtaW5nTW9kZVwiIFtkaXNwbGF5TGV2ZWxJbmZvc109XCJfZGlzcGxheUxldmVsSW5mb3NcIj48L2F1ZGlvLWxldmVsYmFyPlxyXG4gICAgICAgIDxzcHItcmVjb3JkaW5naXRlbWNvbnRyb2xzIHN0eWxlPVwiZmxleDowIDAgMHB4XCIgW2F1ZGlvTG9hZGVkXT1cImRpc3BsYXlBdWRpb0J1ZmZlciE9PW51bGxcIiBbcGxheVN0YXJ0QWN0aW9uXT1cInBsYXlTdGFydEFjdGlvblwiIFtwbGF5U3RvcEFjdGlvbl09XCJwbGF5U3RvcEFjdGlvblwiIFtwZWFrRGJMdmxdPVwicGVha0RiTHZsXCIgW2FnY109XCJfYWdjXCIgKG9uU2hvd1JlY29yZGluZ0RldGFpbHMpPVwib25TaG93UmVjb3JkaW5nRGV0YWlscy5lbWl0KClcIj48L3Nwci1yZWNvcmRpbmdpdGVtY29udHJvbHM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW2BkaXYge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQ6IGRhcmtncmF5O1xyXG4gICAgICAgIHBhZGRpbmc6IDRweDtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwOyAvKiB3cmFwIGNvdWxkIGNvbXBsZXRlbHkgZGVzdHJveSB0aGUgbGF5b3V0ICovXHJcbiAgICB9YCwgYGF1ZGlvLWxldmVsYmFyIHtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgfWAsYC5hdWRpb1N0YXR1c0Rpc3BsYXl7XHJcbiAgICBkaXNwbGF5OmZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgaGVpZ2h0OjEwMHB4O1xyXG4gICAgbWluLWhlaWdodDogMTAwcHg7XHJcbiAgfWAsYC5hdWRpb1N0YXR1c0Rpc3BsYXlYc3tcclxuICAgIGRpc3BsYXk6ZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBoZWlnaHQ6MTI1cHg7XHJcbiAgICBtaW4taGVpZ2h0OiAxMjVweDtcclxuICB9YF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdJdGVtRGlzcGxheSBleHRlbmRzIFJlc3BvbnNpdmVDb21wb25lbnQgaW1wbGVtZW50cyBMZXZlbExpc3RlbmVyLCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIGNlOiBIVE1MRGl2RWxlbWVudHxudWxsPW51bGw7XHJcbiAgICBAVmlld0NoaWxkKExldmVsQmFyLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaXZlTGV2ZWwhOiBMZXZlbEJhcjtcclxuICAgIEBJbnB1dCgpIHN0cmVhbWluZ01vZGU6IGJvb2xlYW49ZmFsc2U7XHJcbiAgICBASW5wdXQoKSBhdWRpb1NpZ25hbENvbGxhcHNlZDogYm9vbGVhbj10cnVlO1xyXG4gICAgcHJpdmF0ZSBfZGlzcGxheUF1ZGlvQnVmZmVyOiBBdWRpb0J1ZmZlciB8IG51bGx8dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgZW5hYmxlRG93bmxvYWQ6IGJvb2xlYW49ZmFsc2U7XHJcblxyXG4gICAgcGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG5cclxuICAgIF9kaXNwbGF5TGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGw9bnVsbDtcclxuXHJcbiAgICBfYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQ9dW5kZWZpbmVkO1xyXG4gICAgYWdjU3RyaW5nPSduL2EnO1xyXG5cclxuICAgIEBJbnB1dCgpIHNldCBhZ2MoYWdjOmJvb2xlYW58bnVsbHx1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLl9hZ2M9YWdjO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSBvblNob3dSZWNvcmRpbmdEZXRhaWxzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Eb3dubG9hZFJlY29yZGluZzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8vQElucHV0KCkgY29udHJvbEF1ZGlvUGxheWVyOiBBdWRpb1BsYXllcjtcclxuICAgIEBJbnB1dCgpIHBsYXlTdGFydEFjdGlvbjpBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgcGxheVN0b3BBY3Rpb246QWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICAgIHBsYXlTdGFydEVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHBsYXlTdG9wRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcklkOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XHJcblxyXG4gICAgd2FybkRiTGV2ZWwgPSBERUZBVUxUX1dBUk5fREJfTEVWRUw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJwbzpCcmVha3BvaW50T2JzZXJ2ZXIscHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgc3VwZXIoYnBvKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzcGxheUF1ZGlvQnVmZmVyKGRpc3BsYXlBdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5QXVkaW9CdWZmZXIgPSBkaXNwbGF5QXVkaW9CdWZmZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRpc3BsYXlBdWRpb0J1ZmZlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUF1ZGlvQnVmZmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dSZWNvcmRpbmdEZXRhaWxzKCkge1xyXG4gICAgICAgIHRoaXMub25TaG93UmVjb3JkaW5nRGV0YWlscy5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRSZWNvcmRpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5vbkRvd25sb2FkUmVjb3JkaW5nLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jZSA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgLy90aGlzLmNvbnRyb2xBdWRpb1BsYXllci5saXN0ZW5lcj10aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzcGxheUxldmVsSW5mb3MobGV2ZWxJbmZvczogTGV2ZWxJbmZvcyB8IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5TGV2ZWxJbmZvcyA9IGxldmVsSW5mb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGNoYW5uZWxDb3VudChjaGFubmVsQ291bnQ6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmxpdmVMZXZlbC5jaGFubmVsQ291bnQgPSBjaGFubmVsQ291bnQ7XHJcbiAgICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxpdmVMZXZlbC5wbGF5RnJhbWVQb3NpdGlvbj1wbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gICAgdXBkYXRlKGxldmVsSW5mbzogTGV2ZWxJbmZvLCBwZWFrTGV2ZWxJbmZvOiBMZXZlbEluZm8pIHtcclxuICAgICAgICBsZXQgcGVha0RCVmFsID0gbGV2ZWxJbmZvLnBvd2VyTGV2ZWxEQigpO1xyXG4gICAgICAgIGlmICh0aGlzLnBlYWtEYkx2bCA8IHBlYWtEQlZhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBlYWtEYkx2bCA9IHBlYWtEQlZhbDtcclxuICAgICAgICAgICAgLy8gdGhlIGV2ZW50IGNvbWVzIGZyb20gb3V0c2lkZSBhbiBBbmd1bGFyIHpvbmVcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGl2ZUxldmVsLnVwZGF0ZShsZXZlbEluZm8pO1xyXG4gICAgfVxyXG5cclxuICAgIGVycm9yKCkge1xyXG4gICAgICAgIC8vIHRoaXMuc3RhdHVzID0gJ0VSUk9SJztcclxuICAgIH1cclxuXHJcbiAgICBzdHJlYW1GaW5pc2hlZCgpIHtcclxuICAgICAgICB0aGlzLmxpdmVMZXZlbC5zdHJlYW1GaW5pc2hlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIHRoaXMucGVha0RiTHZsID0gTUlOX0RCX0xFVkVMO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIl19
|