@tilde-nlp/ngx-common 5.0.11 → 5.0.12

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,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvdGV4dC10by1zcGVlY2gvbW9kZWxzL3ZvaWNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZvaWNlIHtcclxuICB2b2ljZTogc3RyaW5nO1xyXG4gIGFwaVZlcnNpb246IG51bWJlcjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvdGV4dC10by1zcGVlY2gvbW9kZWxzL3ZvaWNlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZvaWNlIHtcclxuICB2b2ljZTogc3RyaW5nO1xyXG4gIGFwaVZlcnNpb246IG51bWJlcjtcclxuICBhcGlVcmw6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -5,10 +5,9 @@ export class TTSApiService {
5
5
  #http = inject(HttpClient);
6
6
  play(text, voice) {
7
7
  if (voice.apiVersion === 1) {
8
- return this.#http.get(`https://services.tilde.com/service/tts?system=${voice.voice}&text=${text}`, { responseType: 'blob' });
8
+ return this.#http.get(`${voice.apiUrl}?system=${voice.voice}&text=${text}`, { responseType: 'blob' });
9
9
  }
10
- const headers = { 'skip-auth': 'true' };
11
- return this.#http.post(`https://runa.tilde.lv/client/say/?text=${text}&voice=${voice.voice}`, null, { headers, responseType: 'blob' });
10
+ return this.#http.post(`${voice.apiUrl}/?text=${text}&voice=${voice.voice}`, null, { responseType: 'blob' });
12
11
  }
13
12
  static { this.ɵfac = function TTSApiService_Factory(t) { return new (t || TTSApiService)(); }; }
14
13
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TTSApiService, factory: TTSApiService.ɵfac, providedIn: 'root' }); }
@@ -19,4 +18,4 @@ export class TTSApiService {
19
18
  providedIn: 'root',
20
19
  }]
21
20
  }], null, null); })();
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHRzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3NlcnZpY2VzL3R0cy1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT25ELE1BQU0sT0FBTyxhQUFhO0lBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQVk7UUFDN0IsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25CLGlEQUFpRCxLQUFLLENBQUMsS0FBSyxTQUFTLElBQUksRUFBRSxFQUMzRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxFQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNwQiwwQ0FBMEMsSUFBSSxVQUFVLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFDckUsSUFBSSxFQUNKLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDbEMsQ0FBQztJQUNKLENBQUM7OEVBbEJVLGFBQWE7dUVBQWIsYUFBYSxXQUFiLGFBQWEsbUJBRlosTUFBTTs7aUZBRVAsYUFBYTtjQUh6QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBWb2ljZSB9IGZyb20gJy4uL21vZGVscy92b2ljZS5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVFRTQXBpU2VydmljZSB7XHJcbiAgcmVhZG9ubHkgI2h0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcblxyXG4gIHBsYXkodGV4dDogc3RyaW5nLCB2b2ljZTogVm9pY2UpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAgIGlmICh2b2ljZS5hcGlWZXJzaW9uID09PSAxKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLiNodHRwLmdldChcclxuICAgICAgICBgaHR0cHM6Ly9zZXJ2aWNlcy50aWxkZS5jb20vc2VydmljZS90dHM/c3lzdGVtPSR7dm9pY2Uudm9pY2V9JnRleHQ9JHt0ZXh0fWAsXHJcbiAgICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGVhZGVycyA9IHsnc2tpcC1hdXRoJzogJ3RydWUnfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy4jaHR0cC5wb3N0KFxyXG4gICAgICBgaHR0cHM6Ly9ydW5hLnRpbGRlLmx2L2NsaWVudC9zYXkvP3RleHQ9JHt0ZXh0fSZ2b2ljZT0ke3ZvaWNlLnZvaWNlfWAsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIHsgaGVhZGVycywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHRzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3NlcnZpY2VzL3R0cy1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT25ELE1BQU0sT0FBTyxhQUFhO0lBQ2YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsSUFBWSxFQUFFLEtBQVk7UUFDN0IsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ25CLEdBQUcsS0FBSyxDQUFDLE1BQU0sV0FBVyxLQUFLLENBQUMsS0FBSyxTQUFTLElBQUksRUFBRSxFQUNwRCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNwQixHQUFHLEtBQUssQ0FBQyxNQUFNLFVBQVUsSUFBSSxVQUFVLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFDcEQsSUFBSSxFQUNKLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUN6QixDQUFDO0lBQ0osQ0FBQzs4RUFoQlUsYUFBYTt1RUFBYixhQUFhLFdBQWIsYUFBYSxtQkFGWixNQUFNOztpRkFFUCxhQUFhO2NBSHpCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZvaWNlIH0gZnJvbSAnLi4vbW9kZWxzL3ZvaWNlLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUVFNBcGlTZXJ2aWNlIHtcclxuICByZWFkb25seSAjaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgcGxheSh0ZXh0OiBzdHJpbmcsIHZvaWNlOiBWb2ljZSk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gICAgaWYgKHZvaWNlLmFwaVZlcnNpb24gPT09IDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI2h0dHAuZ2V0KFxyXG4gICAgICAgIGAke3ZvaWNlLmFwaVVybH0/c3lzdGVtPSR7dm9pY2Uudm9pY2V9JnRleHQ9JHt0ZXh0fWAsXHJcbiAgICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuI2h0dHAucG9zdChcclxuICAgICAgYCR7dm9pY2UuYXBpVXJsfS8/dGV4dD0ke3RleHR9JnZvaWNlPSR7dm9pY2Uudm9pY2V9YCxcclxuICAgICAgbnVsbCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -58,9 +58,6 @@ export class TextToSpeechComponent {
58
58
  }
59
59
  #TTSApiService;
60
60
  ngOnInit() {
61
- if (!this.voices?.length) {
62
- this.voices = JSON.parse(this.voicesJson).voices;
63
- }
64
61
  this.selected = this.voices[0];
65
62
  this.selectedVoice = this.selected.voice;
66
63
  }
@@ -107,7 +104,7 @@ export class TextToSpeechComponent {
107
104
  this.selectedVoice = this.selected.voice;
108
105
  }
109
106
  static { this.ɵfac = function TextToSpeechComponent_Factory(t) { return new (t || TextToSpeechComponent)(); }; }
110
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { maxCharLength: "maxCharLength", voicesJson: "voicesJson", voices: "voices" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 19, vars: 23, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "selectionChange", "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
107
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { maxCharLength: "maxCharLength", voices: "voices" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 19, vars: 23, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "selectionChange", "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
111
108
  i0.ɵɵelementStart(0, "div", 0)(1, "mat-form-field", 1)(2, "mat-label");
112
109
  i0.ɵɵtext(3);
113
110
  i0.ɵɵpipe(4, "translate");
@@ -177,10 +174,8 @@ export class TextToSpeechComponent {
177
174
  ], template: "<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{\"selectVoice\" | translate }}</mat-label>\r\n <mat-select (selectionChange)=\"changeSelectedVoice($event)\" [(value)]=\"selectedVoice\">\r\n <mat-option *ngFor=\"let voice of voices; let i = index\" [value]=\"voice.voice\">\r\n {{ 'voice' | translate: {nth: i + 1} }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"'placeholder' | translate\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? ('playDisabled' | translate) : ''\">\r\n <button [matTooltip]=\"(isPlaying ? 'stop' : 'play') | translate\" [disabled]=\"!text || isLoading\" (click)=\"togglePlay()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".text-to-speech-wrapper{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper mat-form-field{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper,.text-to-speech-textarea{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions{position:absolute;bottom:-25px}.text-to-speech-actions button{color:#fff;background-color:var(--accent)}.text-to-speech-actions button:disabled{background-color:var(--base-70)}.text-to-speech-characters{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow{right:30px}.mobile .text-overflow{right:15px}\n"] }]
178
175
  }], null, { maxCharLength: [{
179
176
  type: Input
180
- }], voicesJson: [{
181
- type: Input
182
177
  }], voices: [{
183
178
  type: Input
184
179
  }] }); })();
185
180
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextToSpeechComponent, { className: "TextToSpeechComponent", filePath: "lib\\text-to-speech\\text-to-speech.component.ts", lineNumber: 35 }); })();
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0lDUmhELHNDQUE4RTtJQUM1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QVksSUFBQztZQUVySCxBQURBLG1GQUE2Qiw0RUFDa0I7WUFJdkQsQUFERSxBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNGLEVBQ0Y7OztZQXpCRCx3Q0FBMEI7WUFFaEIsZUFBOEI7WUFBOUIsMERBQThCO1lBQ21CLGVBQXlCO1lBQXpCLCtDQUF5QjtZQUNyRCxjQUFXO1lBQVgsb0NBQVc7WUFPakMsZUFBa0I7WUFBbEIsd0NBQWtCO1lBQWlDLGtFQUF5QztZQUNqRyxlQUFtQztZQUFuQyxnREFBbUM7WUFDdEMsY0FDRjtZQURFLDhKQUNGO1lBSUssZUFBd0Q7WUFBeEQsb0ZBQXdEO1lBQ25ELGVBQXdEO1lBQUMsQUFBekQsb0ZBQXdELHdDQUFnQztZQUNuRixlQUFnQjtZQUFoQixxQ0FBZ0I7WUFDYixjQUFlO1lBQWYsb0NBQWU7NEJERmpDLFlBQVksdUJBRVosYUFBYTtZQUNiLE9BQU87WUFDUCxXQUFXLDJEQUNYLGtCQUFrQjtZQUNsQixnQkFBZ0IsaUJBQ2hCLGtCQUFrQixnQ0FDbEIsZUFBZSw4QkFDZixnQkFBZ0IsNEJBQ2hCLGVBQWU7O2lGQUtOLHFCQUFxQjtjQW5CakMsU0FBUzsyQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO29CQUNQLFlBQVk7b0JBQ1osU0FBUztvQkFDVCxhQUFhO29CQUNiLE9BQU87b0JBQ1AsV0FBVztvQkFDWCxrQkFBa0I7b0JBQ2xCLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsZUFBZTtpQkFDaEI7Z0JBS1EsYUFBYTtrQkFBckIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7O2tGQUhLLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b24sIE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFRUU0FwaVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3R0cy1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdENoYW5nZSwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IEZsZXhMYXlvdXRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgVm9pY2UgfSBmcm9tICcuL21vZGVscy92b2ljZS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZXh0LXRvLXNwZWVjaCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0SWNvbixcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdFNlbGVjdE1vZHVsZSxcclxuICAgIEZsZXhMYXlvdXRNb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRUb1NwZWVjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbWF4Q2hhckxlbmd0aDogbnVtYmVyID0gMTAwMDtcclxuICBASW5wdXQoKSB2b2ljZXNKc29uITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZvaWNlcyE6IFZvaWNlW107XHJcblxyXG4gIHRleHQhOiBzdHJpbmc7XHJcbiAgcHJldmlvdXNUZXh0ITogc3RyaW5nO1xyXG4gIHByZXZpb3VzVm9pY2UhOiBzdHJpbmc7XHJcbiAgYXVkaW8hOiBIVE1MQXVkaW9FbGVtZW50O1xyXG4gIGlzTG9hZGluZyE6IGJvb2xlYW47XHJcbiAgaXNQbGF5aW5nITogYm9vbGVhbjtcclxuICBcclxuICBzZWxlY3RlZCE6IFZvaWNlO1xyXG4gIHNlbGVjdGVkVm9pY2UhOiBzdHJpbmc7XHJcblxyXG4gIGdldCBoYXNPdmVyZmxvdygpIHtcclxuICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndGV4dGFyZWEnKSBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgcmV0dXJuIHRleHRhcmVhPy5jbGllbnRIZWlnaHQgPCB0ZXh0YXJlYT8uc2Nyb2xsSGVpZ2h0ID8gdHJ1ZSA6IGZhbHNlXHJcbiAgfVxyXG5cclxuICByZWFkb25seSAjVFRTQXBpU2VydmljZSA9IGluamVjdChUVFNBcGlTZXJ2aWNlKTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudm9pY2VzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52b2ljZXMgPSBKU09OLnBhcnNlKHRoaXMudm9pY2VzSnNvbikudm9pY2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnZvaWNlc1swXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWb2ljZSA9IHRoaXMuc2VsZWN0ZWQudm9pY2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQbGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhDaGFyTGVuZ3RoID8gdGhpcy50ZXh0LnN1YnN0cmluZygwLCB0aGlzLm1heENoYXJMZW5ndGgpIDogdGhpcy50ZXh0O1xyXG5cclxuICAgIGlmICgodGhpcy5hdWRpbyAmJiB0ZXh0ID09PSB0aGlzLnByZXZpb3VzVGV4dCkgJiYgKHRoaXMuc2VsZWN0ZWQudm9pY2UgPT09IHRoaXMucHJldmlvdXNWb2ljZSkpIHtcclxuICAgICAgdGhpcy5hdWRpby5wbGF5KCk7XHJcbiAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuI1RUU0FwaVNlcnZpY2VcclxuICAgICAgLnBsYXkodGV4dCwgdGhpcy5zZWxlY3RlZClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4geyB0aGlzLmlzTG9hZGluZyA9IGZhbHNlIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVm9pY2UgPSB0aGlzLnNlbGVjdGVkLnZvaWNlO1xyXG4gICAgICAgICAgY29uc3QgYXVkaW9VcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvID0gbmV3IEF1ZGlvKGF1ZGlvVXJsKTtcclxuICAgICAgICAgIHRoaXMuYXVkaW8ucGxheSgpO1xyXG5cclxuICAgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGlvLm9uZW5kZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYXVkaW9VcmwpO1xyXG4gICAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3AoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdWRpbykge1xyXG4gICAgICB0aGlzLmF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIHRoaXMuYXVkaW8uY3VycmVudFRpbWUgPSAwO1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU2VsZWN0ZWRWb2ljZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy52b2ljZXMuZmluZCgoaXRlbSkgPT4gaXRlbS52b2ljZSA9PT0gZXZlbnQudmFsdWUpIGFzIFZvaWNlOyAgXHJcbiAgICB0aGlzLnNlbGVjdGVkVm9pY2UgPSB0aGlzLnNlbGVjdGVkLnZvaWNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzLmx0LW1kXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC13cmFwcGVyXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgIDxtYXQtbGFiZWw+e3tcInNlbGVjdFZvaWNlXCIgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgIDxtYXQtc2VsZWN0IChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlU2VsZWN0ZWRWb2ljZSgkZXZlbnQpXCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRWb2ljZVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdm9pY2Ugb2Ygdm9pY2VzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZvaWNlLnZvaWNlXCI+XHJcbiAgICAgICAge3sgJ3ZvaWNlJyB8IHRyYW5zbGF0ZToge250aDogaSArIDF9IH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWEtd3JhcHBlclwiPlxyXG4gICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwidGV4dFwiIGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWFcIiBbcGxhY2Vob2xkZXJdPVwiJ3BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8ZGl2IFtjbGFzcy50ZXh0LW92ZXJmbG93XT1cImhhc092ZXJmbG93XCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1jaGFyYWN0ZXJzXCI+XHJcbiAgICAgIHt7dGV4dD8ubGVuZ3RoID8/IDB9fS97e21heENoYXJMZW5ndGh9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1hY3Rpb25zXCI+XHJcbiAgICA8ZGl2IFttYXRUb29sdGlwXT1cIiF0ZXh0ID8gKCdwbGF5RGlzYWJsZWQnIHwgdHJhbnNsYXRlKSA6ICcnXCI+XHJcbiAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiKGlzUGxheWluZyA/ICdzdG9wJyA6ICdwbGF5JykgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIXRleHQgfHwgaXNMb2FkaW5nXCIgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhaXNMb2FkaW5nXCI+IHt7IGlzUGxheWluZyA/ICdzdG9wJyA6ICd2b2x1bWVfdXAnIH19ICA8L21hdC1pY29uPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIyMFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10by1zcGVlY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXh0LXRvLXNwZWVjaC90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7O0lDUmhELHNDQUE4RTtJQUM1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Q3JELGNBQVc7WUFBWCxvQ0FBVztZQU9qQyxlQUFrQjtZQUFsQix3Q0FBa0I7WUFBaUMsa0VBQXlDO1lBQ2pHLGVBQW1DO1lBQW5DLGdEQUFtQztZQUN0QyxjQUNGO1lBREUsOEpBQ0Y7WUFJSyxlQUF3RDtZQUF4RCxvRkFBd0Q7WUFDbkQsZUFBd0Q7WUFBQyxBQUF6RCxvRkFBd0Qsd0NBQWdDO1lBQ25GLGVBQWdCO1lBQWhCLHFDQUFnQjtZQUNiLGNBQWU7WUFBZixvQ0FBZTs0QkRGakMsWUFBWSx1QkFFWixhQUFhO1lBQ2IsT0FBTztZQUNQLFdBQVcsMkRBQ1gsa0JBQWtCO1lBQ2xCLGdCQUFnQixpQkFDaEIsa0JBQWtCLGdDQUNsQixlQUFlLDhCQUNmLGdCQUFnQiw0QkFDaEIsZUFBZTs7aUZBS04scUJBQXFCO2NBbkJqQyxTQUFTOzJCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7b0JBQ1AsWUFBWTtvQkFDWixTQUFTO29CQUNULGFBQWE7b0JBQ2IsT0FBTztvQkFDUCxXQUFXO29CQUNYLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixrQkFBa0I7b0JBQ2xCLGVBQWU7b0JBQ2YsZ0JBQWdCO29CQUNoQixlQUFlO2lCQUNoQjtnQkFLUSxhQUFhO2tCQUFyQixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLOztrRkFGSyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uLCBNYXRJY29uQnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBUVFNBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90dHMtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RDaGFuZ2UsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFZvaWNlIH0gZnJvbSAnLi9tb2RlbHMvdm9pY2UubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGV4dC10by1zcGVlY2gnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uLFxyXG4gICAgTWF0SWNvbkJ1dHRvbixcclxuICAgIE1hdEljb24sXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzU3Bpbm5lcixcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC10by1zcGVlY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90ZXh0LXRvLXNwZWVjaC5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0VG9TcGVlY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG1heENoYXJMZW5ndGg6IG51bWJlciA9IDEwMDA7XHJcbiAgQElucHV0KCkgdm9pY2VzITogVm9pY2VbXTtcclxuXHJcbiAgdGV4dCE6IHN0cmluZztcclxuICBwcmV2aW91c1RleHQhOiBzdHJpbmc7XHJcbiAgcHJldmlvdXNWb2ljZSE6IHN0cmluZztcclxuICBhdWRpbyE6IEhUTUxBdWRpb0VsZW1lbnQ7XHJcbiAgaXNMb2FkaW5nITogYm9vbGVhbjtcclxuICBpc1BsYXlpbmchOiBib29sZWFuO1xyXG4gIFxyXG4gIHNlbGVjdGVkITogVm9pY2U7XHJcbiAgc2VsZWN0ZWRWb2ljZSE6IHN0cmluZztcclxuXHJcbiAgZ2V0IGhhc092ZXJmbG93KCkge1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0ZXh0YXJlYScpIGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gdGV4dGFyZWE/LmNsaWVudEhlaWdodCA8IHRleHRhcmVhPy5zY3JvbGxIZWlnaHQgPyB0cnVlIDogZmFsc2VcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5ICNUVFNBcGlTZXJ2aWNlID0gaW5qZWN0KFRUU0FwaVNlcnZpY2UpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnZvaWNlc1swXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWb2ljZSA9IHRoaXMuc2VsZWN0ZWQudm9pY2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVQbGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XHJcbiAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnRleHQubGVuZ3RoID4gdGhpcy5tYXhDaGFyTGVuZ3RoID8gdGhpcy50ZXh0LnN1YnN0cmluZygwLCB0aGlzLm1heENoYXJMZW5ndGgpIDogdGhpcy50ZXh0O1xyXG5cclxuICAgIGlmICgodGhpcy5hdWRpbyAmJiB0ZXh0ID09PSB0aGlzLnByZXZpb3VzVGV4dCkgJiYgKHRoaXMuc2VsZWN0ZWQudm9pY2UgPT09IHRoaXMucHJldmlvdXNWb2ljZSkpIHtcclxuICAgICAgdGhpcy5hdWRpby5wbGF5KCk7XHJcbiAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuI1RUU0FwaVNlcnZpY2VcclxuICAgICAgLnBsYXkodGV4dCwgdGhpcy5zZWxlY3RlZClcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4geyB0aGlzLmlzTG9hZGluZyA9IGZhbHNlIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVm9pY2UgPSB0aGlzLnNlbGVjdGVkLnZvaWNlO1xyXG4gICAgICAgICAgY29uc3QgYXVkaW9VcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHJlcyk7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvID0gbmV3IEF1ZGlvKGF1ZGlvVXJsKTtcclxuICAgICAgICAgIHRoaXMuYXVkaW8ucGxheSgpO1xyXG5cclxuICAgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmF1ZGlvLm9uZW5kZWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYXVkaW9VcmwpO1xyXG4gICAgICAgICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3AoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdWRpbykge1xyXG4gICAgICB0aGlzLmF1ZGlvLnBhdXNlKCk7XHJcbiAgICAgIHRoaXMuYXVkaW8uY3VycmVudFRpbWUgPSAwO1xyXG4gICAgICB0aGlzLmlzUGxheWluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlU2VsZWN0ZWRWb2ljZShldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy52b2ljZXMuZmluZCgoaXRlbSkgPT4gaXRlbS52b2ljZSA9PT0gZXZlbnQudmFsdWUpIGFzIFZvaWNlOyAgXHJcbiAgICB0aGlzLnNlbGVjdGVkVm9pY2UgPSB0aGlzLnNlbGVjdGVkLnZvaWNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzLmx0LW1kXT1cIidtb2JpbGUnXCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC13cmFwcGVyXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgIDxtYXQtbGFiZWw+e3tcInNlbGVjdFZvaWNlXCIgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cclxuICAgIDxtYXQtc2VsZWN0IChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlU2VsZWN0ZWRWb2ljZSgkZXZlbnQpXCIgWyh2YWx1ZSldPVwic2VsZWN0ZWRWb2ljZVwiPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdm9pY2Ugb2Ygdm9pY2VzOyBsZXQgaSA9IGluZGV4XCIgW3ZhbHVlXT1cInZvaWNlLnZvaWNlXCI+XHJcbiAgICAgICAge3sgJ3ZvaWNlJyB8IHRyYW5zbGF0ZToge250aDogaSArIDF9IH19XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWEtd3JhcHBlclwiPlxyXG4gICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwidGV4dFwiIGNsYXNzPVwidGV4dC10by1zcGVlY2gtdGV4dGFyZWFcIiBbcGxhY2Vob2xkZXJdPVwiJ3BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8ZGl2IFtjbGFzcy50ZXh0LW92ZXJmbG93XT1cImhhc092ZXJmbG93XCIgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1jaGFyYWN0ZXJzXCI+XHJcbiAgICAgIHt7dGV4dD8ubGVuZ3RoID8/IDB9fS97e21heENoYXJMZW5ndGh9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXRvLXNwZWVjaC1hY3Rpb25zXCI+XHJcbiAgICA8ZGl2IFttYXRUb29sdGlwXT1cIiF0ZXh0ID8gKCdwbGF5RGlzYWJsZWQnIHwgdHJhbnNsYXRlKSA6ICcnXCI+XHJcbiAgICAgIDxidXR0b24gW21hdFRvb2x0aXBdPVwiKGlzUGxheWluZyA/ICdzdG9wJyA6ICdwbGF5JykgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiIXRleHQgfHwgaXNMb2FkaW5nXCIgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiIG1hdC1pY29uLWJ1dHRvbj5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhaXNMb2FkaW5nXCI+IHt7IGlzUGxheWluZyA/ICdzdG9wJyA6ICd2b2x1bWVfdXAnIH19ICA8L21hdC1pY29uPlxyXG4gICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImlzTG9hZGluZ1wiIFtkaWFtZXRlcl09XCIyMFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -5879,10 +5879,9 @@ class TTSApiService {
5879
5879
  #http = inject(HttpClient);
5880
5880
  play(text, voice) {
5881
5881
  if (voice.apiVersion === 1) {
5882
- return this.#http.get(`https://services.tilde.com/service/tts?system=${voice.voice}&text=${text}`, { responseType: 'blob' });
5882
+ return this.#http.get(`${voice.apiUrl}?system=${voice.voice}&text=${text}`, { responseType: 'blob' });
5883
5883
  }
5884
- const headers = { 'skip-auth': 'true' };
5885
- return this.#http.post(`https://runa.tilde.lv/client/say/?text=${text}&voice=${voice.voice}`, null, { headers, responseType: 'blob' });
5884
+ return this.#http.post(`${voice.apiUrl}/?text=${text}&voice=${voice.voice}`, null, { responseType: 'blob' });
5886
5885
  }
5887
5886
  static { this.ɵfac = function TTSApiService_Factory(t) { return new (t || TTSApiService)(); }; }
5888
5887
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TTSApiService, factory: TTSApiService.ɵfac, providedIn: 'root' }); }
@@ -5932,9 +5931,6 @@ class TextToSpeechComponent {
5932
5931
  }
5933
5932
  #TTSApiService;
5934
5933
  ngOnInit() {
5935
- if (!this.voices?.length) {
5936
- this.voices = JSON.parse(this.voicesJson).voices;
5937
- }
5938
5934
  this.selected = this.voices[0];
5939
5935
  this.selectedVoice = this.selected.voice;
5940
5936
  }
@@ -5981,7 +5977,7 @@ class TextToSpeechComponent {
5981
5977
  this.selectedVoice = this.selected.voice;
5982
5978
  }
5983
5979
  static { this.ɵfac = function TextToSpeechComponent_Factory(t) { return new (t || TextToSpeechComponent)(); }; }
5984
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { maxCharLength: "maxCharLength", voicesJson: "voicesJson", voices: "voices" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 19, vars: 23, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "selectionChange", "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
5980
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextToSpeechComponent, selectors: [["lib-text-to-speech"]], inputs: { maxCharLength: "maxCharLength", voices: "voices" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 19, vars: 23, consts: [[1, "text-to-speech-wrapper", 3, "ngClass.lt-md"], ["appearance", "outline", "color", "accent"], [3, "selectionChange", "valueChange", "value"], [3, "value", 4, "ngFor", "ngForOf"], [1, "text-to-speech-textarea-wrapper"], [1, "text-to-speech-textarea", 3, "ngModelChange", "ngModel", "placeholder"], [1, "text-to-speech-characters"], [1, "text-to-speech-actions"], [3, "matTooltip"], ["mat-icon-button", "", 3, "click", "matTooltip", "disabled"], [4, "ngIf"], [3, "diameter", 4, "ngIf"], [3, "value"], [3, "diameter"]], template: function TextToSpeechComponent_Template(rf, ctx) { if (rf & 1) {
5985
5981
  i0.ɵɵelementStart(0, "div", 0)(1, "mat-form-field", 1)(2, "mat-label");
5986
5982
  i0.ɵɵtext(3);
5987
5983
  i0.ɵɵpipe(4, "translate");
@@ -6051,8 +6047,6 @@ class TextToSpeechComponent {
6051
6047
  ], template: "<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{\"selectVoice\" | translate }}</mat-label>\r\n <mat-select (selectionChange)=\"changeSelectedVoice($event)\" [(value)]=\"selectedVoice\">\r\n <mat-option *ngFor=\"let voice of voices; let i = index\" [value]=\"voice.voice\">\r\n {{ 'voice' | translate: {nth: i + 1} }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"'placeholder' | translate\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? ('playDisabled' | translate) : ''\">\r\n <button [matTooltip]=\"(isPlaying ? 'stop' : 'play') | translate\" [disabled]=\"!text || isLoading\" (click)=\"togglePlay()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".text-to-speech-wrapper{margin-top:5px;position:relative;display:flex;flex-direction:column;align-items:center}.text-to-speech-wrapper mat-form-field{max-width:900px!important;width:100%}.text-to-speech-textarea-wrapper,.text-to-speech-textarea{position:relative;width:100%;max-width:900px}.text-to-speech-textarea-wrapper{border:1px solid var(--base-70);padding:5px;border-radius:8px;box-shadow:0 0 16px #0000001a}.text-to-speech-textarea{margin:15px 0;padding:0 10px;min-height:120px;resize:none;outline:none;border:none}.text-to-speech-actions{position:absolute;bottom:-25px}.text-to-speech-actions button{color:#fff;background-color:var(--accent)}.text-to-speech-actions button:disabled{background-color:var(--base-70)}.text-to-speech-characters{position:absolute;right:10px;bottom:0;margin:5px;font-size:13px;color:var(--base-65)}.text-overflow{right:30px}.mobile .text-overflow{right:15px}\n"] }]
6052
6048
  }], null, { maxCharLength: [{
6053
6049
  type: Input
6054
- }], voicesJson: [{
6055
- type: Input
6056
6050
  }], voices: [{
6057
6051
  type: Input
6058
6052
  }] }); })();