@tilde-nlp/ngx-translate 4.0.22 → 4.0.24
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/esm2022/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.mjs +2 -2
- package/esm2022/lib/modules/tld-common/services/tld-translate-system-management.service.mjs +2 -2
- package/esm2022/lib/modules/tld-document/services/api-v2/file-api-v2.service.mjs +2 -2
- package/esm2022/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +2 -2
- package/esm2022/lib/modules/tld-text/services/tld-translate-text.service.mjs +2 -2
- package/esm2022/lib/tld-translate.component.mjs +9 -6
- package/fesm2022/tilde-nlp-ngx-translate.mjs +15 -12
- package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/lib/tld-translate.component.d.ts +3 -1
- package/package.json +1 -1
- package/src/assets/webcomponent/tld-translate.js +1 -1
- package/tilde-nlp-ngx-translate-4.0.24.tgz +0 -0
- package/tilde-nlp-ngx-translate-4.0.22.tgz +0 -0
|
@@ -23,11 +23,11 @@ export class SourceAndTargetWrapperComponent {
|
|
|
23
23
|
this.clearButton?.clearButton.focus();
|
|
24
24
|
}
|
|
25
25
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SourceAndTargetWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: { clearSourceVisible: "clearSourceVisible", clearSourceTooltip: "clearSourceTooltip", clearDisabled: "clearDisabled", textToSpeechSourceSettings: "textToSpeechSourceSettings" }, outputs: { onSourceClear: "onSourceClear" }, viewQueries: [{ propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" class=\"source-target-wrapper\" fxLayout.lt-md=\"column\">\r\n <div class=\"source-wrapper\" [ngClass.gt-sm]=\"'tld-default-border-right'\" [ngClass.lt-md]=\"'tld-default-border-bottom'\"\r\n fxFlex fxLayout=\"column\">\r\n <div fxLayout=\"column\" class=\"source-wrapper-action-buttons\">\r\n <tld-close-button [tooltip]=\"clearSourceTooltip\" #clearButton (tldClick)=\"clearSource()\"\r\n *ngIf=\"clearSourceVisible\" [disabled]=\"clearDisabled\"></tld-close-button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechSourceSettings\" [settings]=\"textToSpeechSourceSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div class=\"source-container\" fxFlex>\r\n <ng-content select=\"[sourceMain]\"></ng-content>\r\n </div>\r\n <div class=\"source-action-wrapper\">\r\n <ng-content select=\"[sourceActions]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"target-wrapper\" fxLayout=\"column\" fxFlex=\"50\">\r\n <div class=\"target-container\" fxFlex cdkScrollable>\r\n <ng-content select=\"[targetMain]\"></ng-content>\r\n </div>\r\n <div class=\"target-action-wrapper\">\r\n <ng-content select=\"[targetActions]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".source-wrapper{position:relative}.source-wrapper .source-wrapper-action-buttons{position:absolute;top:0;right:0;z-index:2}.target-container,.source-container{flex:1 1 0!important}.source-container-wrapper,.target-container-wrapper,.source-target-wrapper{height:100%}.source-container,.target-container{overflow-y:auto}.target-wrapper{background:#fff;position:relative}:host{height:100%;max-height:100%}:host.empty-target .target-wrapper{background:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i3.TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }] });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: { clearSourceVisible: "clearSourceVisible", clearSourceTooltip: "clearSourceTooltip", clearDisabled: "clearDisabled", textToSpeechSourceSettings: "textToSpeechSourceSettings" }, outputs: { onSourceClear: "onSourceClear" }, viewQueries: [{ propertyName: "clearButton", first: true, predicate: ["clearButton"], descendants: true }], ngImport: i0, template: "<div fxLayout=\"row\" class=\"source-target-wrapper\" fxLayout.lt-md=\"column\">\r\n <div class=\"source-wrapper\" [ngClass.gt-sm]=\"'tld-default-border-right'\" [ngClass.lt-md]=\"'tld-default-border-bottom'\"\r\n fxFlex fxLayout=\"column\">\r\n <div fxLayout=\"column\" class=\"source-wrapper-action-buttons\">\r\n <tld-close-button [tooltip]=\"clearSourceTooltip\" #clearButton (tldClick)=\"clearSource()\"\r\n *ngIf=\"clearSourceVisible\" [disabled]=\"clearDisabled\"></tld-close-button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechSourceSettings\" [settings]=\"textToSpeechSourceSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div class=\"source-container\" fxFlex>\r\n <ng-content select=\"[sourceMain]\"></ng-content>\r\n </div>\r\n <div class=\"source-action-wrapper\">\r\n <ng-content select=\"[sourceActions]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"target-wrapper\" fxLayout=\"column\" fxFlex=\"50\">\r\n <div class=\"target-container\" fxFlex cdkScrollable>\r\n <ng-content select=\"[targetMain]\"></ng-content>\r\n </div>\r\n <div class=\"target-action-wrapper\">\r\n <ng-content select=\"[targetActions]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["tld-close-button{margin:.2em}.source-wrapper{position:relative}.source-wrapper .source-wrapper-action-buttons{position:absolute;top:0;right:0;z-index:2}.target-container,.source-container{flex:1 1 0!important}.source-container-wrapper,.target-container-wrapper,.source-target-wrapper{height:100%}.source-container,.target-container{overflow-y:auto}.target-wrapper{background:#fff;position:relative}:host{height:100%;max-height:100%}:host.empty-target .target-wrapper{background:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i3.TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }] });
|
|
27
27
|
}
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SourceAndTargetWrapperComponent, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
|
-
args: [{ selector: 'tld-source-and-target-wrapper', template: "<div fxLayout=\"row\" class=\"source-target-wrapper\" fxLayout.lt-md=\"column\">\r\n <div class=\"source-wrapper\" [ngClass.gt-sm]=\"'tld-default-border-right'\" [ngClass.lt-md]=\"'tld-default-border-bottom'\"\r\n fxFlex fxLayout=\"column\">\r\n <div fxLayout=\"column\" class=\"source-wrapper-action-buttons\">\r\n <tld-close-button [tooltip]=\"clearSourceTooltip\" #clearButton (tldClick)=\"clearSource()\"\r\n *ngIf=\"clearSourceVisible\" [disabled]=\"clearDisabled\"></tld-close-button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechSourceSettings\" [settings]=\"textToSpeechSourceSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div class=\"source-container\" fxFlex>\r\n <ng-content select=\"[sourceMain]\"></ng-content>\r\n </div>\r\n <div class=\"source-action-wrapper\">\r\n <ng-content select=\"[sourceActions]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"target-wrapper\" fxLayout=\"column\" fxFlex=\"50\">\r\n <div class=\"target-container\" fxFlex cdkScrollable>\r\n <ng-content select=\"[targetMain]\"></ng-content>\r\n </div>\r\n <div class=\"target-action-wrapper\">\r\n <ng-content select=\"[targetActions]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".source-wrapper{position:relative}.source-wrapper .source-wrapper-action-buttons{position:absolute;top:0;right:0;z-index:2}.target-container,.source-container{flex:1 1 0!important}.source-container-wrapper,.target-container-wrapper,.source-target-wrapper{height:100%}.source-container,.target-container{overflow-y:auto}.target-wrapper{background:#fff;position:relative}:host{height:100%;max-height:100%}:host.empty-target .target-wrapper{background:#fff}\n"] }]
|
|
30
|
+
args: [{ selector: 'tld-source-and-target-wrapper', template: "<div fxLayout=\"row\" class=\"source-target-wrapper\" fxLayout.lt-md=\"column\">\r\n <div class=\"source-wrapper\" [ngClass.gt-sm]=\"'tld-default-border-right'\" [ngClass.lt-md]=\"'tld-default-border-bottom'\"\r\n fxFlex fxLayout=\"column\">\r\n <div fxLayout=\"column\" class=\"source-wrapper-action-buttons\">\r\n <tld-close-button [tooltip]=\"clearSourceTooltip\" #clearButton (tldClick)=\"clearSource()\"\r\n *ngIf=\"clearSourceVisible\" [disabled]=\"clearDisabled\"></tld-close-button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechSourceSettings\" [settings]=\"textToSpeechSourceSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div class=\"source-container\" fxFlex>\r\n <ng-content select=\"[sourceMain]\"></ng-content>\r\n </div>\r\n <div class=\"source-action-wrapper\">\r\n <ng-content select=\"[sourceActions]\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"target-wrapper\" fxLayout=\"column\" fxFlex=\"50\">\r\n <div class=\"target-container\" fxFlex cdkScrollable>\r\n <ng-content select=\"[targetMain]\"></ng-content>\r\n </div>\r\n <div class=\"target-action-wrapper\">\r\n <ng-content select=\"[targetActions]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["tld-close-button{margin:.2em}.source-wrapper{position:relative}.source-wrapper .source-wrapper-action-buttons{position:absolute;top:0;right:0;z-index:2}.target-container,.source-container{flex:1 1 0!important}.source-container-wrapper,.target-container-wrapper,.source-target-wrapper{height:100%}.source-container,.target-container{overflow-y:auto}.target-wrapper{background:#fff;position:relative}:host{height:100%;max-height:100%}:host.empty-target .target-wrapper{background:#fff}\n"] }]
|
|
31
31
|
}], ctorParameters: function () { return []; }, propDecorators: { clearButton: [{
|
|
32
32
|
type: ViewChild,
|
|
33
33
|
args: ["clearButton"]
|
|
@@ -116,7 +116,7 @@ export class TldTranslateSystemManagementService {
|
|
|
116
116
|
this.loadedSystemsSubject.next(res);
|
|
117
117
|
}
|
|
118
118
|
if (!this.systemExists(defaultSystemLanguageId, this.systems)) {
|
|
119
|
-
defaultSystemLanguageId = this.systems[0]
|
|
119
|
+
defaultSystemLanguageId = this.systems[0]?.languageId;
|
|
120
120
|
for (const system of this.systems) {
|
|
121
121
|
const vendor = system.vendor;
|
|
122
122
|
if (vendor === this.defaultVendor) {
|
|
@@ -320,4 +320,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
320
320
|
type: Inject,
|
|
321
321
|
args: [TRANSLATION_API_VERSION_TOKEN]
|
|
322
322
|
}] }]; } });
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxVQUFVLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUsxRSxNQUFNLE9BQU8sbUNBQW1DO0lBMkMzQjtJQUNBO0lBQ0E7SUFDdUM7SUE3QzFELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUN2QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksQ0FBVTtJQUN0QixnQkFBZ0IsQ0FBVztJQUUzQiwwQkFBMEIsR0FBRyx1Q0FBdUMsQ0FBQztJQUU3RCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBRXZELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUs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SSxDQUFDLHNCQUFzQixFQUFFO1lBQzdDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBaldVLG1DQUFtQyxvSEE4Q3BDLDZCQUE2Qjs0R0E5QzVCLG1DQUFtQyxjQUZsQyxNQUFNOzs0RkFFUCxtQ0FBbUM7a0JBSC9DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkErQ0ksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBEb21haW4sIFNvcnRIZWxwZXIsIFN5c3RlbSwgU3lzdGVtU2VydmljZSwgVmVuZG9yLCBMYW5nTGlzdEl0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25BcGlWZXJzaW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XHJcbiAgbm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICBzeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIHdpZGdldEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgc3lzTGlzdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFN5c3RlbVtdPigxKTtcclxuICBhY3RpdmVEb21haW4hOiBEb21haW47XHJcbiAgY2FuU3dhcExhbmd1YWdlcyE6IGJvb2xlYW47XHJcblxyXG4gIGRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5ID0gJ1RMRF9UUkFOU0xBVEUuRVJST1JfTk9fU1lTVEVNU19MT0FERUQnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZFN5c3RlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3lzdGVtW10+KCk7XHJcblxyXG4gIGdldCBhY3RpdmVWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmVuZG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0RG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW0hOiBTeXN0ZW07XHJcbiAgcHJpdmF0ZSBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG4gIHByaXZhdGUgdmVuZG9yczogVmVuZG9yW10gPSBbXTtcclxuICBwcml2YXRlIHNvdXJjZUxhbmd1YWdlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdGFyZ2V0TGFuZ3VhZ2UhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5nTGlzdDogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuICBwcml2YXRlIHRhcmdldExhbmdMaXN0OiBMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICAvLyNyZWdpb24gUmVjZW50IHN5c3RlbSB2YXJpYWJsZXNcclxuICAvLyBQb3NzaWJseSBmcm9tIGNvbmZpZ1xyXG4gIGdldCByZWNlbnRTeXN0ZW1zTWF4Q291bnQoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLm1heFJlY2VudFN5c3RlbUNvdW50IGFzIG51bWJlcjsgfVxyXG4gIHByaXZhdGUgcmVjZW50U3lzdGVtczogU3lzdGVtW10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWNlbnRTeXN0ZW1LZXkgPSBcInJlY2VudFN5c3RlbXNcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGl2ZURhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVEYXRhPig8YW55Pm51bGwpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFzdFVzZWRTeXN0ZW1LZXk6IHN0cmluZyA9IFwibGFzdFVzZWRTeXN0ZW1cIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0OiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIEBJbmplY3QoVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgYXBpVmVyc2lvblxyXG4gICkgeyB9XHJcblxyXG4gIGdldFN5c3RlbXMoKTogU3lzdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtcztcclxuICB9XHJcblxyXG4gIGNoYW5nZUxhbmd1YWdlKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3lzdGVtSWQgPSB0aGlzLmZpbmRDb3JyZWN0U3lzdGVtKHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgIHRoaXMuY2hhbmdlU3lzdGVtKHN5c3RlbUlkKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTeXN0ZW1PYmooKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCkge1xyXG4gICAgaWYgKCF0aGlzLnNvdXJjZUxhbmd1YWdlIHx8ICF0aGlzLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgICBjb25zdCBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICBpZiAoIShzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiYgc3lzdGVtLnRhcmdldExhbmd1YWdlID09PSB0aGlzLnRhcmdldExhbmd1YWdlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRvbWFpbjogRG9tYWluID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIHRpdGxlOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZ1xyXG4gICAgICB9O1xyXG4gICAgICBkb21haW5zLnB1c2goZG9tYWluKTtcclxuICAgICAgY29uc3QgdmVuZG9yOiBWZW5kb3IgPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgdGl0bGU6IHN5c3RlbS52ZW5kb3JcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF2ZW5kb3JzLmluY2x1ZGVzKHZlbmRvcikpIHtcclxuICAgICAgICB2ZW5kb3JzLnB1c2godmVuZG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRvbWFpbi5sYW5ndWFnZUlkID09PSB0aGlzLmFjdGl2ZVN5c3RlbS5sYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEb21haW4gPSBkb21haW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvbWFpbnMgPSBkb21haW5zO1xyXG4gICAgdGhpcy52ZW5kb3JzID0gdmVuZG9ycztcclxuICB9XHJcblxyXG5cclxuICBnZXRMYXN0VXNlZFN5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubGFzdFVzZWRTeXN0ZW1LZXkpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFVuaXF1ZUxhbmd1YWdlcyhsaXN0OiBMYW5nTGlzdEl0ZW1bXSk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghbGlzdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgbGlzdC5mb3JFYWNoKChsYW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhbmdUaXRsZSA9IGxhbmcubGFuZztcclxuICAgICAgY29uc3QgaXggPSB0aXRsZXMuaW5kZXhPZihsYW5nVGl0bGUgYXMgc3RyaW5nKTtcclxuICAgICAgaWYgKGl4ID09IC0xKSB7XHJcbiAgICAgICAgdGl0bGVzLnB1c2gobGFuZ1RpdGxlIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aXRsZXM7XHJcbiAgfVxyXG5cclxuICBpbml0KGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1MaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogU3lzdGVtW10pID0+IHtcclxuICAgICAgICB0aGlzLnN5c3RlbXMgPSByZXM7XHJcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3lzdGVtRXhpc3RzKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkLCB0aGlzLnN5c3RlbXMpKSB7XHJcbiAgICAgICAgICBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9IHRoaXMuc3lzdGVtc1swXS5sYW5ndWFnZUlkO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlbmRvciA9IHN5c3RlbS52ZW5kb3I7XHJcbiAgICAgICAgICAgIGlmICh2ZW5kb3IgPT09IHRoaXMuZGVmYXVsdFZlbmRvcikge1xyXG4gICAgICAgICAgICAgIGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkID0gc3lzdGVtLmxhbmd1YWdlSWQ7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlUmVjZW50U3lzdGVtQXJyYXkoKTtcclxuICAgICAgICB0aGlzLnNvdXJjZUxhbmdMaXN0ID0gdGhpcy5jcmVhdGVMYW5nTGlzdCh0aGlzLnN5c3RlbXMpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlU3lzdGVtKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkKTtcclxuICAgICAgICB0aGlzLndpZGdldEluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN5c0xpc3QubmV4dCh0aGlzLnN5c3RlbXMpO1xyXG4gICAgICAgIHRoaXMubm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubm9TeXN0ZW1zRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWxlcnQuZXJyb3IodGhpcy5kZWZhdWx0RXJyb3JUcmFuc2xhdGlvbktleSwgZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2FkZWRTeXN0ZW1zKCk6IE9ic2VydmFibGU8U3lzdGVtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRlZFN5c3RlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TGFzdFVzZWRTeXN0ZW0oc3lzdGVtSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubGFzdFVzZWRTeXN0ZW1LZXksIHN5c3RlbUlkKTtcclxuICB9XHJcblxyXG4gIHN3YXBTeXN0ZW1MYW5ndWFnZXMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMudGFyZ2V0TGFuZ3VhZ2UsIHRoaXMuc291cmNlTGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3lzdGVtKGxhbmd1YWdlSWQ6IHN0cmluZywgcmV0cmFuc2xhdGUgPSB0cnVlKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVTeXN0ZW0/Lmxhbmd1YWdlSWQgPT09IGxhbmd1YWdlSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZWxlY3RlZFN5c3RlbSE6IFN5c3RlbTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgaWYgKHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgc2VsZWN0ZWRTeXN0ZW0gPSBzeXN0ZW07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudGFyZ2V0TGFuZ0xpc3QgPSB0aGlzLmNyZWF0ZUxhbmdMaXN0KHRoaXMuc3lzdGVtcywgc2VsZWN0ZWRTeXN0ZW0uc291cmNlTGFuZ3VhZ2UpO1xyXG4gICAgdGhpcy50YXJnZXRMYW5ndWFnZSA9IHNlbGVjdGVkU3lzdGVtLnRhcmdldExhbmd1YWdlO1xyXG4gICAgdGhpcy5zb3VyY2VMYW5ndWFnZSA9IHNlbGVjdGVkU3lzdGVtLnNvdXJjZUxhbmd1YWdlO1xyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgIHRoaXMuZ2V0QWN0aXZlVmVuZG9yc0FuZERvbWFpbnMoKTtcclxuXHJcbiAgICB0aGlzLm9uQWN0aXZlU3lzdGVtQ2hhbmdlKHJldHJhbnNsYXRlKTtcclxuXHJcbiAgICB0aGlzLnNldExhc3RVc2VkU3lzdGVtKHNlbGVjdGVkU3lzdGVtLmxhbmd1YWdlSWQpO1xyXG4gIH1cclxuXHJcbiAgc3lzdGVtRXhpc3RzKGxhbmd1YWdlSWQ6IHN0cmluZywgc3lzdGVtTGlzdDogU3lzdGVtW10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHN5c3RlbXMgPSBzeXN0ZW1MaXN0ID8/IHRoaXMuc3lzdGVtcztcclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHN5c3RlbXMpIHtcclxuICAgICAgaWYgKHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc1Rlcm1pbm9sb2d5U3VwcG9ydGVkKHN5c3RlbTogU3lzdGVtKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc3lzdGVtLmluY2x1ZGVzVGVybWlub2xvZ3kgYXMgYm9vbGVhbjtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvdXJjZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc291cmNlTGFuZ3VhZ2VDb2RlID09PSB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZSwgdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2Uoc291cmNlTGFuZ3VhZ2VDb2RlLCB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNoYW5nZVRhcmdldExhbmd1YWdlKHRhcmdldExhbmd1YWdlQ29kZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGFyZ2V0TGFuZ3VhZ2VDb2RlID09PSB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuYWN0aXZlU3lzdGVtLnRhcmdldExhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZUNvZGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlTGFuZ3VhZ2UodGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlQ29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVJlY2VudFN5c3RlbUFycmF5KCkge1xyXG4gICAgbGV0IHN5c3RlbUlkQXJyYXk6IHN0cmluZ1tdO1xyXG4gICAgY29uc3QgcmVjZW50U3lzdGVtQXJyYXk6IFN5c3RlbVtdID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBzeXN0ZW1JZEFycmF5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnJlY2VudFN5c3RlbUtleSkgPz8gXCJbXVwiKTtcclxuICAgIH1cclxuICAgIGNhdGNoIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3lzdGVtSWRBcnJheS5mb3JFYWNoKChsYW5ndWFnZUlkKSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nU3lzdGVtID0gdGhpcy5zeXN0ZW1zLmZpbmQoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKTtcclxuICAgICAgaWYgKGV4aXN0aW5nU3lzdGVtICYmICF0aGlzLnJlY2VudFN5c3RlbXMuaW5jbHVkZXMoZXhpc3RpbmdTeXN0ZW0pKSB7XHJcbiAgICAgICAgcmVjZW50U3lzdGVtQXJyYXkucHVzaChleGlzdGluZ1N5c3RlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLnJlY2VudFN5c3RlbXMgPSByZWNlbnRTeXN0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkVG9SZWNlbnRTeXN0ZW1BcnJheShzeXN0ZW06IFN5c3RlbSkge1xyXG4gICAgY29uc3QgZXhpc3RpbmdTeXN0ZW0gPSB0aGlzLnJlY2VudFN5c3RlbXMuZmluZChleGlzdGluZyA9PiBleGlzdGluZy5sYW5ndWFnZUlkID09PSBzeXN0ZW0ubGFuZ3VhZ2VJZCk7XHJcbiAgICAvLyBpZiBzeXN0ZW0gYWxyZWFkeSBpbiBsaXN0LCBwdXQgaXQgdG8gZmlyc3QgcG9zaXRpb24uIElmIGl4IDAsIG5vIGFjdGlvbiByZXF1aXJlZCBzaW5jZSBsYXRlc3Qgc3lzdGVtIGlzIGFscmVhZHkgZmlyc3QuXHJcbiAgICBpZiAoZXhpc3RpbmdTeXN0ZW0pIHtcclxuICAgICAgY29uc3Qgc3lzdGVtSXhJblJlY2VudExpc3QgPSB0aGlzLnJlY2VudFN5c3RlbXMuaW5kZXhPZihleGlzdGluZ1N5c3RlbSk7XHJcbiAgICAgIGlmIChzeXN0ZW1JeEluUmVjZW50TGlzdCA+IDApIHtcclxuICAgICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKHN5c3RlbUl4SW5SZWNlbnRMaXN0LCAxKTtcclxuICAgICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKDAsIDAsIHN5c3RlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBpZiBsaXN0IHRvbyBsb25nLCByZW1vdmUgbGFzdCAob2xkZXN0IGVsZW1lbnQpXHJcbiAgICAgIHdoaWxlICh0aGlzLnJlY2VudFN5c3RlbXMubGVuZ3RoID49IHRoaXMucmVjZW50U3lzdGVtc01heENvdW50KSB7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnBvcCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlY2VudFN5c3RlbXMuc3BsaWNlKDAsIDAsIHN5c3RlbSk7XHJcbiAgICB9XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnJlY2VudFN5c3RlbUtleSwgSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNlbnRTeXN0ZW1zLm1hcChzeXN0ZW0gPT4gc3lzdGVtLmxhbmd1YWdlSWQpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhblN3YXBTeXN0ZW1MYW5ndWFnZXMoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgbGFuZ1N3YXBBY3RpdmUgPSBmYWxzZTtcclxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB0aGlzLnN5c3RlbXMpIHtcclxuICAgICAgY29uc3Qgc3lzdGVtID0gZWxlbWVudDtcclxuICAgICAgaWYgKHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PSB0aGlzLnRhcmdldExhbmd1YWdlICYmIHN5c3RlbS50YXJnZXRMYW5ndWFnZSA9PSB0aGlzLnNvdXJjZUxhbmd1YWdlKSB7XHJcbiAgICAgICAgbGFuZ1N3YXBBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhblN3YXBMYW5ndWFnZXMgPSBsYW5nU3dhcEFjdGl2ZTtcclxuICAgIHJldHVybiBsYW5nU3dhcEFjdGl2ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTGFuZ0xpc3Qoc3lzdGVtczogU3lzdGVtW10sIHNyY0xhbmdDb2RlPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBsYW5nTGlzdEl0ZW1BcnJheTogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuICAgIHN5c3RlbXMuZm9yRWFjaCgoc3lzdGVtKSA9PiB7XHJcbiAgICAgIGlmICghc3JjTGFuZ0NvZGUgfHwgc3JjTGFuZ0NvZGUgPT09IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICAgIGxhbmdMaXN0SXRlbUFycmF5LnB1c2goXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGRvbWFpbjogc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgIGxhbmc6IHNyY0xhbmdDb2RlID8gc3lzdGVtLnRhcmdldExhbmd1YWdlIDogc3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICAgICAgdmVuZG9yOiBzeXN0ZW0udmVuZG9yXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiBsYW5nTGlzdEl0ZW1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvcnJlY3RTeXN0ZW0oc291cmNlTGFuZ3VhZ2U6IHN0cmluZywgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzeXN0ZW1zID0gdGhpcy5zeXN0ZW1zO1xyXG5cclxuICAgIGNvbnN0IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIgPSBzeXN0ZW1zLmZpbHRlcihzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSAmJiB0YXJnZXRMYW5ndWFnZSA9PT0gc3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuICAgIC8vIElkZWFsbHkgdGhpcyBjYXNlIHNob3VsZCBub3QgaGFwcGVuLCBidXQgaXQgaXMgcG9zc2libGUuXHJcbiAgICBpZiAoc3lzdGVtc0Zvckxhbmd1YWdlUGFpci5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtcy5maW5kKHN5c3RlbSA9PiBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IHNvdXJjZUxhbmd1YWdlKT8ubGFuZ3VhZ2VJZCBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciA9IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIuZmlsdGVyKHN5c3RlbSA9PiAoc3lzdGVtLnZlbmRvciB8fCB0aGlzLmRlZmF1bHRWZW5kb3IpID09PSB0aGlzLmRlZmF1bHRWZW5kb3IpO1xyXG4gICAgaWYgKHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvci5sZW5ndGggPT09IDApIHtcclxuICAgICAgc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yID0gc3lzdGVtc0Zvckxhbmd1YWdlUGFpcjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluID0gc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yLmZpbHRlcihzeXN0ZW0gPT4gdGhpcy5kZWZhdWx0RG9tYWlucy5pbmNsdWRlcyhzeXN0ZW0uZG9tYWluIGFzIHN0cmluZykpO1xyXG4gICAgaWYgKHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluID0gc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yO1xyXG4gICAgfVxyXG4gICAgU29ydEhlbHBlci5zb3J0QnlBcnJheShzeXN0ZW1zV2l0aERlZmF1bHREb21haW4sIHRoaXMuZGVmYXVsdERvbWFpbnMsIFwiZG9tYWluXCIpO1xyXG5cclxuXHJcbiAgICAvLyBWMiBkb2VzIG5vdCBwcm92aWRlIGFueSBpbmZvIGFib3V0IHN0YXR1c2VzXHJcbiAgICBpZiAodGhpcy5hcGlWZXJzaW9uID09PSBUcmFuc2xhdGlvbkFwaVZlcnNpb24uVjEpIHtcclxuICAgICAgY29uc3QgcHJlZmVycmVkU3RhdHVzZXMgPSBbJ3J1bm5pbmcnLCAncXVldWluZ3RyYW5zbCcsICdzdGFuZGJ5J107XHJcbiAgICAgIFNvcnRIZWxwZXIuc29ydEJ5QXJyYXkoc3lzdGVtc1dpdGhEZWZhdWx0VmVuZG9yLCBwcmVmZXJyZWRTdGF0dXNlcywgXCJzdGF0dXNcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpblswXS5sYW5ndWFnZUlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkFjdGl2ZVN5c3RlbUNoYW5nZShyZXRyYW5zbGF0ZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHN5c3RlbTogU3lzdGVtID0gdGhpcy5hY3RpdmVTeXN0ZW07XHJcbiAgICB0aGlzLmFkZFRvUmVjZW50U3lzdGVtQXJyYXkoc3lzdGVtKTtcclxuICAgIGNvbnN0IHZlbmRvciA9IHRoaXMuYWN0aXZlU3lzdGVtLnZlbmRvcjtcclxuICAgIHRoaXMuYWN0aXZlLm5leHQoe1xyXG4gICAgICBzb3VyY2VMYW5nOiB7XHJcbiAgICAgICAgbGFuZzogdGhpcy5zb3VyY2VMYW5ndWFnZSxcclxuICAgICAgICBkb21haW46IHN5c3RlbS5kb21haW4gYXMgc3RyaW5nLFxyXG4gICAgICAgIHZlbmRvcjogdmVuZG9yLFxyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICB9LFxyXG4gICAgICBzb3VyY2VMYW5nTGlzdDogdGhpcy5zb3VyY2VMYW5nTGlzdCxcclxuICAgICAgc3lzdGVtSWQ6IHN5c3RlbS5pZCxcclxuICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgIHRhcmdldExhbmc6IHtcclxuICAgICAgICBkb21haW46IHN5c3RlbS5kb21haW4gYXMgc3RyaW5nLFxyXG4gICAgICAgIHZlbmRvcjogdmVuZG9yLFxyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIGxhbmc6IHRoaXMudGFyZ2V0TGFuZ3VhZ2VcclxuICAgICAgfSxcclxuICAgICAgdGFyZ2V0TGFuZ0xpc3Q6IHRoaXMudGFyZ2V0TGFuZ0xpc3QsXHJcbiAgICAgIHZlbmRvcnM6IHRoaXMudmVuZG9ycyxcclxuICAgICAgZG9tYWluczogeyBhY3RpdmU6IHRoaXMuYWN0aXZlRG9tYWluLCBkb21haW5zOiB0aGlzLmRvbWFpbnMgfSxcclxuICAgICAgc3dhcExhbmdBY3RpdmU6IHRoaXMuY2FuU3dhcFN5c3RlbUxhbmd1YWdlcygpLFxyXG4gICAgICBzeXN0ZW06IHN5c3RlbSxcclxuICAgICAgcmV0cmFuc2xhdGU6IHJldHJhbnNsYXRlLFxyXG4gICAgICByZWNlbnRTeXN0ZW1zOiB0aGlzLnJlY2VudFN5c3RlbXNcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1zeXN0ZW0tbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLWNvbW1vbi9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXN5c3RlbS1tYW5hZ2VtZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxVQUFVLEVBQStDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEksT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUsxRSxNQUFNLE9BQU8sbUNBQW1DO0lBMkMzQjtJQUNBO0lBQ0E7SUFDdUM7SUE3QzFELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIsT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUN2QixpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxHQUFHLElBQUksYUFBYSxDQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksQ0FBVTtJQUN0QixnQkFBZ0IsQ0FBVztJQUUzQiwwQkFBMEIsR0FBRyx1Q0FBdUMsQ0FBQztJQUU3RCxvQkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBRXZELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUs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SSxDQUFDLHNCQUFzQixFQUFFO1lBQzdDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBaldVLG1DQUFtQyxvSEE4Q3BDLDZCQUE2Qjs0R0E5QzVCLG1DQUFtQyxjQUZsQyxNQUFNOzs0RkFFUCxtQ0FBbUM7a0JBSC9DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkErQ0ksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZlRGF0YSwgQWxlcnRTZXJ2aWNlLCBEb21haW4sIFNvcnRIZWxwZXIsIFN5c3RlbSwgU3lzdGVtU2VydmljZSwgVmVuZG9yLCBMYW5nTGlzdEl0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25BcGlWZXJzaW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vdGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFRSQU5TTEFUSU9OX0FQSV9WRVJTSU9OX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVTeXN0ZW1NYW5hZ2VtZW50U2VydmljZSB7XHJcbiAgbm9TeXN0ZW1zRXJyb3IgPSBmYWxzZTtcclxuICBzeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIHdpZGdldEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgc3lzTGlzdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFN5c3RlbVtdPigxKTtcclxuICBhY3RpdmVEb21haW4hOiBEb21haW47XHJcbiAgY2FuU3dhcExhbmd1YWdlcyE6IGJvb2xlYW47XHJcblxyXG4gIGRlZmF1bHRFcnJvclRyYW5zbGF0aW9uS2V5ID0gJ1RMRF9UUkFOU0xBVEUuRVJST1JfTk9fU1lTVEVNU19MT0FERUQnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZFN5c3RlbXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8U3lzdGVtW10+KCk7XHJcblxyXG4gIGdldCBhY3RpdmVWZW5kb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVTeXN0ZW0udmVuZG9yIHx8IHRoaXMuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0VmVuZG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNvcmVDb25maWcuZGVmYXVsdFZlbmRvcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0RG9tYWlucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW0hOiBTeXN0ZW07XHJcbiAgcHJpdmF0ZSBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG4gIHByaXZhdGUgdmVuZG9yczogVmVuZG9yW10gPSBbXTtcclxuICBwcml2YXRlIHNvdXJjZUxhbmd1YWdlITogc3RyaW5nO1xyXG4gIHByaXZhdGUgdGFyZ2V0TGFuZ3VhZ2UhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzb3VyY2VMYW5nTGlzdDogTGFuZ0xpc3RJdGVtW10gPSBbXTtcclxuICBwcml2YXRlIHRhcmdldExhbmdMaXN0OiBMYW5nTGlzdEl0ZW1bXSA9IFtdO1xyXG5cclxuICAvLyNyZWdpb24gUmVjZW50IHN5c3RlbSB2YXJpYWJsZXNcclxuICAvLyBQb3NzaWJseSBmcm9tIGNvbmZpZ1xyXG4gIGdldCByZWNlbnRTeXN0ZW1zTWF4Q291bnQoKSB7IHJldHVybiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLm1heFJlY2VudFN5c3RlbUNvdW50IGFzIG51bWJlcjsgfVxyXG4gIHByaXZhdGUgcmVjZW50U3lzdGVtczogU3lzdGVtW10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZWNlbnRTeXN0ZW1LZXkgPSBcInJlY2VudFN5c3RlbXNcIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZTogQmVoYXZpb3JTdWJqZWN0PEFjdGl2ZURhdGE+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBY3RpdmVEYXRhPig8YW55Pm51bGwpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGFzdFVzZWRTeXN0ZW1LZXk6IHN0cmluZyA9IFwibGFzdFVzZWRTeXN0ZW1cIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0OiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIEBJbmplY3QoVFJBTlNMQVRJT05fQVBJX1ZFUlNJT05fVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgYXBpVmVyc2lvblxyXG4gICkgeyB9XHJcblxyXG4gIGdldFN5c3RlbXMoKTogU3lzdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3lzdGVtcztcclxuICB9XHJcblxyXG4gIGNoYW5nZUxhbmd1YWdlKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3lzdGVtSWQgPSB0aGlzLmZpbmRDb3JyZWN0U3lzdGVtKHNvdXJjZSwgdGFyZ2V0KTtcclxuICAgIHRoaXMuY2hhbmdlU3lzdGVtKHN5c3RlbUlkKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVTeXN0ZW1PYmooKTogU3lzdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZVN5c3RlbTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCkge1xyXG4gICAgaWYgKCF0aGlzLnNvdXJjZUxhbmd1YWdlIHx8ICF0aGlzLnRhcmdldExhbmd1YWdlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHZlbmRvcnM6IFZlbmRvcltdID0gW107XHJcbiAgICBjb25zdCBkb21haW5zOiBEb21haW5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICBpZiAoIShzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IHRoaXMuc291cmNlTGFuZ3VhZ2UgJiYgc3lzdGVtLnRhcmdldExhbmd1YWdlID09PSB0aGlzLnRhcmdldExhbmd1YWdlKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRvbWFpbjogRG9tYWluID0ge1xyXG4gICAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICAgIHRpdGxlOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZ1xyXG4gICAgICB9O1xyXG4gICAgICBkb21haW5zLnB1c2goZG9tYWluKTtcclxuICAgICAgY29uc3QgdmVuZG9yOiBWZW5kb3IgPSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgdGl0bGU6IHN5c3RlbS52ZW5kb3JcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF2ZW5kb3JzLmluY2x1ZGVzKHZlbmRvcikpIHtcclxuICAgICAgICB2ZW5kb3JzLnB1c2godmVuZG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGRvbWFpbi5sYW5ndWFnZUlkID09PSB0aGlzLmFjdGl2ZVN5c3RlbS5sYW5ndWFnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEb21haW4gPSBkb21haW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRvbWFpbnMgPSBkb21haW5zO1xyXG4gICAgdGhpcy52ZW5kb3JzID0gdmVuZG9ycztcclxuICB9XHJcblxyXG5cclxuICBnZXRMYXN0VXNlZFN5c3RlbSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubGFzdFVzZWRTeXN0ZW1LZXkpIGFzIHN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFVuaXF1ZUxhbmd1YWdlcyhsaXN0OiBMYW5nTGlzdEl0ZW1bXSk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghbGlzdCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aXRsZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgbGlzdC5mb3JFYWNoKChsYW5nKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhbmdUaXRsZSA9IGxhbmcubGFuZztcclxuICAgICAgY29uc3QgaXggPSB0aXRsZXMuaW5kZXhPZihsYW5nVGl0bGUgYXMgc3RyaW5nKTtcclxuICAgICAgaWYgKGl4ID09IC0xKSB7XHJcbiAgICAgICAgdGl0bGVzLnB1c2gobGFuZ1RpdGxlIGFzIHN0cmluZyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aXRsZXM7XHJcbiAgfVxyXG5cclxuICBpbml0KGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1MaXN0KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogU3lzdGVtW10pID0+IHtcclxuICAgICAgICB0aGlzLnN5c3RlbXMgPSByZXM7XHJcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc3lzdGVtRXhpc3RzKGRlZmF1bHRTeXN0ZW1MYW5ndWFnZUlkLCB0aGlzLnN5c3RlbXMpKSB7XHJcbiAgICAgICAgICBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9IHRoaXMuc3lzdGVtc1swXT8ubGFuZ3VhZ2VJZDtcclxuICAgICAgICAgIGZvciAoY29uc3Qgc3lzdGVtIG9mIHRoaXMuc3lzdGVtcykge1xyXG4gICAgICAgICAgICBjb25zdCB2ZW5kb3IgPSBzeXN0ZW0udmVuZG9yO1xyXG4gICAgICAgICAgICBpZiAodmVuZG9yID09PSB0aGlzLmRlZmF1bHRWZW5kb3IpIHtcclxuICAgICAgICAgICAgICBkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCA9IHN5c3RlbS5sYW5ndWFnZUlkO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZVJlY2VudFN5c3RlbUFycmF5KCk7XHJcbiAgICAgICAgdGhpcy5zb3VyY2VMYW5nTGlzdCA9IHRoaXMuY3JlYXRlTGFuZ0xpc3QodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLmNoYW5nZVN5c3RlbShkZWZhdWx0U3lzdGVtTGFuZ3VhZ2VJZCk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zeXNMaXN0Lm5leHQodGhpcy5zeXN0ZW1zKTtcclxuICAgICAgICB0aGlzLm5vU3lzdGVtc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm5vU3lzdGVtc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmFsZXJ0LmVycm9yKHRoaXMuZGVmYXVsdEVycm9yVHJhbnNsYXRpb25LZXksIGVycm9yKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9hZGVkU3lzdGVtcygpOiBPYnNlcnZhYmxlPFN5c3RlbVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2FkZWRTeXN0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldExhc3RVc2VkU3lzdGVtKHN5c3RlbUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxhc3RVc2VkU3lzdGVtS2V5LCBzeXN0ZW1JZCk7XHJcbiAgfVxyXG5cclxuICBzd2FwU3lzdGVtTGFuZ3VhZ2VzKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLnRhcmdldExhbmd1YWdlLCB0aGlzLnNvdXJjZUxhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVN5c3RlbShsYW5ndWFnZUlkOiBzdHJpbmcsIHJldHJhbnNsYXRlID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlU3lzdGVtPy5sYW5ndWFnZUlkID09PSBsYW5ndWFnZUlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc2VsZWN0ZWRTeXN0ZW0hOiBTeXN0ZW07XHJcblxyXG4gICAgZm9yIChjb25zdCBzeXN0ZW0gb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGlmIChzeXN0ZW0ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCkge1xyXG4gICAgICAgIHNlbGVjdGVkU3lzdGVtID0gc3lzdGVtO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhcmdldExhbmdMaXN0ID0gdGhpcy5jcmVhdGVMYW5nTGlzdCh0aGlzLnN5c3RlbXMsIHNlbGVjdGVkU3lzdGVtLnNvdXJjZUxhbmd1YWdlKTtcclxuICAgIHRoaXMudGFyZ2V0TGFuZ3VhZ2UgPSBzZWxlY3RlZFN5c3RlbS50YXJnZXRMYW5ndWFnZTtcclxuICAgIHRoaXMuc291cmNlTGFuZ3VhZ2UgPSBzZWxlY3RlZFN5c3RlbS5zb3VyY2VMYW5ndWFnZTtcclxuICAgIHRoaXMuYWN0aXZlU3lzdGVtID0gc2VsZWN0ZWRTeXN0ZW07XHJcbiAgICB0aGlzLmdldEFjdGl2ZVZlbmRvcnNBbmREb21haW5zKCk7XHJcblxyXG4gICAgdGhpcy5vbkFjdGl2ZVN5c3RlbUNoYW5nZShyZXRyYW5zbGF0ZSk7XHJcblxyXG4gICAgdGhpcy5zZXRMYXN0VXNlZFN5c3RlbShzZWxlY3RlZFN5c3RlbS5sYW5ndWFnZUlkKTtcclxuICB9XHJcblxyXG4gIHN5c3RlbUV4aXN0cyhsYW5ndWFnZUlkOiBzdHJpbmcsIHN5c3RlbUxpc3Q6IFN5c3RlbVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzeXN0ZW1zID0gc3lzdGVtTGlzdCA/PyB0aGlzLnN5c3RlbXM7XHJcbiAgICBmb3IgKGNvbnN0IHN5c3RlbSBvZiBzeXN0ZW1zKSB7XHJcbiAgICAgIGlmIChzeXN0ZW0ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNUZXJtaW5vbG9neVN1cHBvcnRlZChzeXN0ZW06IFN5c3RlbSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHN5c3RlbS5pbmNsdWRlc1Rlcm1pbm9sb2d5IGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTb3VyY2VMYW5ndWFnZShzb3VyY2VMYW5ndWFnZUNvZGU6IHN0cmluZykge1xyXG4gICAgaWYgKHNvdXJjZUxhbmd1YWdlQ29kZSA9PT0gdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZShzb3VyY2VMYW5ndWFnZUNvZGUsIHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHNvdXJjZUxhbmd1YWdlQ29kZSwgdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VUYXJnZXRMYW5ndWFnZSh0YXJnZXRMYW5ndWFnZUNvZGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRhcmdldExhbmd1YWdlQ29kZSA9PT0gdGhpcy5hY3RpdmVTeXN0ZW0uc291cmNlTGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VMYW5ndWFnZSh0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSwgdGFyZ2V0TGFuZ3VhZ2VDb2RlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZUNvZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVSZWNlbnRTeXN0ZW1BcnJheSgpIHtcclxuICAgIGxldCBzeXN0ZW1JZEFycmF5OiBzdHJpbmdbXTtcclxuICAgIGNvbnN0IHJlY2VudFN5c3RlbUFycmF5OiBTeXN0ZW1bXSA9IFtdO1xyXG4gICAgdHJ5IHtcclxuICAgICAgc3lzdGVtSWRBcnJheSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXkpID8/IFwiW11cIik7XHJcbiAgICB9XHJcbiAgICBjYXRjaCB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN5c3RlbUlkQXJyYXkuZm9yRWFjaCgobGFuZ3VhZ2VJZCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdGluZ1N5c3RlbSA9IHRoaXMuc3lzdGVtcy5maW5kKHN5c3RlbSA9PiBzeXN0ZW0ubGFuZ3VhZ2VJZCA9PT0gbGFuZ3VhZ2VJZCk7XHJcbiAgICAgIGlmIChleGlzdGluZ1N5c3RlbSAmJiAhdGhpcy5yZWNlbnRTeXN0ZW1zLmluY2x1ZGVzKGV4aXN0aW5nU3lzdGVtKSkge1xyXG4gICAgICAgIHJlY2VudFN5c3RlbUFycmF5LnB1c2goZXhpc3RpbmdTeXN0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy5yZWNlbnRTeXN0ZW1zID0gcmVjZW50U3lzdGVtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvUmVjZW50U3lzdGVtQXJyYXkoc3lzdGVtOiBTeXN0ZW0pIHtcclxuICAgIGNvbnN0IGV4aXN0aW5nU3lzdGVtID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmZpbmQoZXhpc3RpbmcgPT4gZXhpc3RpbmcubGFuZ3VhZ2VJZCA9PT0gc3lzdGVtLmxhbmd1YWdlSWQpO1xyXG4gICAgLy8gaWYgc3lzdGVtIGFscmVhZHkgaW4gbGlzdCwgcHV0IGl0IHRvIGZpcnN0IHBvc2l0aW9uLiBJZiBpeCAwLCBubyBhY3Rpb24gcmVxdWlyZWQgc2luY2UgbGF0ZXN0IHN5c3RlbSBpcyBhbHJlYWR5IGZpcnN0LlxyXG4gICAgaWYgKGV4aXN0aW5nU3lzdGVtKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbUl4SW5SZWNlbnRMaXN0ID0gdGhpcy5yZWNlbnRTeXN0ZW1zLmluZGV4T2YoZXhpc3RpbmdTeXN0ZW0pO1xyXG4gICAgICBpZiAoc3lzdGVtSXhJblJlY2VudExpc3QgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZShzeXN0ZW1JeEluUmVjZW50TGlzdCwgMSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gaWYgbGlzdCB0b28gbG9uZywgcmVtb3ZlIGxhc3QgKG9sZGVzdCBlbGVtZW50KVxyXG4gICAgICB3aGlsZSAodGhpcy5yZWNlbnRTeXN0ZW1zLmxlbmd0aCA+PSB0aGlzLnJlY2VudFN5c3RlbXNNYXhDb3VudCkge1xyXG4gICAgICAgIHRoaXMucmVjZW50U3lzdGVtcy5wb3AoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yZWNlbnRTeXN0ZW1zLnNwbGljZSgwLCAwLCBzeXN0ZW0pO1xyXG4gICAgfVxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZWNlbnRTeXN0ZW1LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50U3lzdGVtcy5tYXAoc3lzdGVtID0+IHN5c3RlbS5sYW5ndWFnZUlkKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5Td2FwU3lzdGVtTGFuZ3VhZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGxhbmdTd2FwQWN0aXZlID0gZmFsc2U7XHJcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5zeXN0ZW1zKSB7XHJcbiAgICAgIGNvbnN0IHN5c3RlbSA9IGVsZW1lbnQ7XHJcbiAgICAgIGlmIChzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT0gdGhpcy50YXJnZXRMYW5ndWFnZSAmJiBzeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT0gdGhpcy5zb3VyY2VMYW5ndWFnZSkge1xyXG4gICAgICAgIGxhbmdTd2FwQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jYW5Td2FwTGFuZ3VhZ2VzID0gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgICByZXR1cm4gbGFuZ1N3YXBBY3RpdmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhbmdMaXN0KHN5c3RlbXM6IFN5c3RlbVtdLCBzcmNMYW5nQ29kZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgbGFuZ0xpc3RJdGVtQXJyYXk6IExhbmdMaXN0SXRlbVtdID0gW107XHJcbiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4ge1xyXG4gICAgICBpZiAoIXNyY0xhbmdDb2RlIHx8IHNyY0xhbmdDb2RlID09PSBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UpIHtcclxuICAgICAgICBsYW5nTGlzdEl0ZW1BcnJheS5wdXNoKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBkb21haW46IHN5c3RlbS5kb21haW4gYXMgc3RyaW5nLFxyXG4gICAgICAgICAgICBsYW5nOiBzcmNMYW5nQ29kZSA/IHN5c3RlbS50YXJnZXRMYW5ndWFnZSA6IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSxcclxuICAgICAgICAgICAgbGFuZ3VhZ2VJZDogc3lzdGVtLmxhbmd1YWdlSWQsXHJcbiAgICAgICAgICAgIHZlbmRvcjogc3lzdGVtLnZlbmRvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICByZXR1cm4gbGFuZ0xpc3RJdGVtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDb3JyZWN0U3lzdGVtKHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsIHRhcmdldExhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3lzdGVtcyA9IHRoaXMuc3lzdGVtcztcclxuXHJcbiAgICBjb25zdCBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyID0gc3lzdGVtcy5maWx0ZXIoc3lzdGVtID0+IHN5c3RlbS5zb3VyY2VMYW5ndWFnZSA9PT0gc291cmNlTGFuZ3VhZ2UgJiYgdGFyZ2V0TGFuZ3VhZ2UgPT09IHN5c3RlbS50YXJnZXRMYW5ndWFnZSk7XHJcbiAgICAvLyBJZGVhbGx5IHRoaXMgY2FzZSBzaG91bGQgbm90IGhhcHBlbiwgYnV0IGl0IGlzIHBvc3NpYmxlLlxyXG4gICAgaWYgKHN5c3RlbXNGb3JMYW5ndWFnZVBhaXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnN5c3RlbXMuZmluZChzeXN0ZW0gPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBzb3VyY2VMYW5ndWFnZSk/Lmxhbmd1YWdlSWQgYXMgc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IgPSBzeXN0ZW1zRm9yTGFuZ3VhZ2VQYWlyLmZpbHRlcihzeXN0ZW0gPT4gKHN5c3RlbS52ZW5kb3IgfHwgdGhpcy5kZWZhdWx0VmVuZG9yKSA9PT0gdGhpcy5kZWZhdWx0VmVuZG9yKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHRWZW5kb3IubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciA9IHN5c3RlbXNGb3JMYW5ndWFnZVBhaXI7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvci5maWx0ZXIoc3lzdGVtID0+IHRoaXMuZGVmYXVsdERvbWFpbnMuaW5jbHVkZXMoc3lzdGVtLmRvbWFpbiBhcyBzdHJpbmcpKTtcclxuICAgIGlmIChzeXN0ZW1zV2l0aERlZmF1bHREb21haW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHN5c3RlbXNXaXRoRGVmYXVsdERvbWFpbiA9IHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvcjtcclxuICAgIH1cclxuICAgIFNvcnRIZWxwZXIuc29ydEJ5QXJyYXkoc3lzdGVtc1dpdGhEZWZhdWx0RG9tYWluLCB0aGlzLmRlZmF1bHREb21haW5zLCBcImRvbWFpblwiKTtcclxuXHJcblxyXG4gICAgLy8gVjIgZG9lcyBub3QgcHJvdmlkZSBhbnkgaW5mbyBhYm91dCBzdGF0dXNlc1xyXG4gICAgaWYgKHRoaXMuYXBpVmVyc2lvbiA9PT0gVHJhbnNsYXRpb25BcGlWZXJzaW9uLlYxKSB7XHJcbiAgICAgIGNvbnN0IHByZWZlcnJlZFN0YXR1c2VzID0gWydydW5uaW5nJywgJ3F1ZXVpbmd0cmFuc2wnLCAnc3RhbmRieSddO1xyXG4gICAgICBTb3J0SGVscGVyLnNvcnRCeUFycmF5KHN5c3RlbXNXaXRoRGVmYXVsdFZlbmRvciwgcHJlZmVycmVkU3RhdHVzZXMsIFwic3RhdHVzXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzeXN0ZW1zV2l0aERlZmF1bHREb21haW5bMF0ubGFuZ3VhZ2VJZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25BY3RpdmVTeXN0ZW1DaGFuZ2UocmV0cmFuc2xhdGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCBzeXN0ZW06IFN5c3RlbSA9IHRoaXMuYWN0aXZlU3lzdGVtO1xyXG4gICAgdGhpcy5hZGRUb1JlY2VudFN5c3RlbUFycmF5KHN5c3RlbSk7XHJcbiAgICBjb25zdCB2ZW5kb3IgPSB0aGlzLmFjdGl2ZVN5c3RlbS52ZW5kb3I7XHJcbiAgICB0aGlzLmFjdGl2ZS5uZXh0KHtcclxuICAgICAgc291cmNlTGFuZzoge1xyXG4gICAgICAgIGxhbmc6IHRoaXMuc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgICAgZG9tYWluOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZyxcclxuICAgICAgICB2ZW5kb3I6IHZlbmRvcixcclxuICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgfSxcclxuICAgICAgc291cmNlTGFuZ0xpc3Q6IHRoaXMuc291cmNlTGFuZ0xpc3QsXHJcbiAgICAgIHN5c3RlbUlkOiBzeXN0ZW0uaWQsXHJcbiAgICAgIGxhbmd1YWdlSWQ6IHN5c3RlbS5sYW5ndWFnZUlkLFxyXG4gICAgICB0YXJnZXRMYW5nOiB7XHJcbiAgICAgICAgZG9tYWluOiBzeXN0ZW0uZG9tYWluIGFzIHN0cmluZyxcclxuICAgICAgICB2ZW5kb3I6IHZlbmRvcixcclxuICAgICAgICBsYW5ndWFnZUlkOiBzeXN0ZW0ubGFuZ3VhZ2VJZCxcclxuICAgICAgICBsYW5nOiB0aGlzLnRhcmdldExhbmd1YWdlXHJcbiAgICAgIH0sXHJcbiAgICAgIHRhcmdldExhbmdMaXN0OiB0aGlzLnRhcmdldExhbmdMaXN0LFxyXG4gICAgICB2ZW5kb3JzOiB0aGlzLnZlbmRvcnMsXHJcbiAgICAgIGRvbWFpbnM6IHsgYWN0aXZlOiB0aGlzLmFjdGl2ZURvbWFpbiwgZG9tYWluczogdGhpcy5kb21haW5zIH0sXHJcbiAgICAgIHN3YXBMYW5nQWN0aXZlOiB0aGlzLmNhblN3YXBTeXN0ZW1MYW5ndWFnZXMoKSxcclxuICAgICAgc3lzdGVtOiBzeXN0ZW0sXHJcbiAgICAgIHJldHJhbnNsYXRlOiByZXRyYW5zbGF0ZSxcclxuICAgICAgcmVjZW50U3lzdGVtczogdGhpcy5yZWNlbnRTeXN0ZW1zXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -35,7 +35,7 @@ export class FileApiV2Service {
|
|
|
35
35
|
formData.append("fileName", properties.file.originalFileName);
|
|
36
36
|
formData.append("srcLang", properties.system.sourceLanguage);
|
|
37
37
|
formData.append("trgLang", properties.system.targetLanguage);
|
|
38
|
-
if (this.terminologyService.engines[this.systemManagementService.getActiveSystemObj().id]
|
|
38
|
+
if (this.terminologyService.engines[this.systemManagementService.getActiveSystemObj().id]?.selected) {
|
|
39
39
|
formData.append("termCollections", this.terminologyService.engines[this.systemManagementService.getActiveSystemObj().id].selected.mtCollection?.id);
|
|
40
40
|
}
|
|
41
41
|
if (properties.system.domain) {
|
|
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
96
96
|
providedIn: 'root'
|
|
97
97
|
}]
|
|
98
98
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TldTranslateConfigService }, { type: i3.TerminologyService }, { type: i2.TldTranslateSystemManagementService }]; } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hcGktdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC9zZXJ2aWNlcy9hcGktdjIvZmlsZS1hcGktdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBS2hHLE1BQU0sT0FBTyxnQkFBZ0I7SUFNRTtJQUNWO0lBQ0E7SUFDQTtJQVBuQixJQUFZLEdBQUc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUE2QixJQUFnQixFQUMxQixNQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsdUJBQTREO1FBSGxELFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXFDO0lBQzNFLENBQUM7SUFHTCx5QkFBeUIsQ0FBQyxVQUE0QztRQUNwRSxVQUFVLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsVUFBK0I7UUFDdEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlC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QUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRWhHLE1BQU0sV0FBVyxHQUFzQztnQkFDckQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQzNFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUF3QjtnQkFDdkUsdUJBQXVCLEVBQUUsT0FBTyxLQUFLLFNBQVM7Z0JBQzlDLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQUU7YUFDNUIsQ0FBQztZQUVGLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsV0FBVyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUE2QixDQUFDO2FBQzNHO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7d0dBL0ZVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWxlVHJhbnNsYXRpb25TdWJzdGF0dXMsIElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlQXBpU2VydmljZSwgSUZpbGVNZXRhLCBJR2V0RmlsZVN0YXR1c1BhcmFtcywgSUdldEZpbGVUcmFuc2xhdGlvblN0YXR1c1Jlc3BvbnNlLCBJUmVtb3ZlRmlsZVBhcmFtcywgSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIElTdGFydEZpbGVUcmFuc2xhdGlvblBhcmFtcywgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsIFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGlvbkZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRlLWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN0YXR1c3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRpb24tc3RhdHVzcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVWMkNhdGVnb3J5IH0gZnJvbSAnLi9tb2RlbHMvZmlsZS1jYXRlZ29yeS12Mi5tb2RlbCc7XHJcbmltcG9ydCB7IElGaWxlVHJhbnNsYXRpb25TdGF0dXNWMlJlc3BvbnNlIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS10cmFuc2xhdGlvbi1zdGF0dXMtdjItcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBBdXRoSGVhZGVyc0hlbHBlciwgQ29udmVyc2lvbkhlbHBlciwgVGVybWlub2xvZ3lTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVBcGlWMlNlcnZpY2UgaW1wbGVtZW50cyBJRmlsZUFwaVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGdldCB1cmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYXBpVjJDb25maWcuZmlsZVRyYW5zbGF0aW9uVXJsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlcm1pbm9sb2d5U2VydmljZTogVGVybWlub2xvZ3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1NYW5hZ2VtZW50U2VydmljZTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuXHJcbiAgdHJhbnNsYXRlZERvY3VtZW50UHJldmlldyhwcm9wZXJ0aWVzOiBJVHJhbnNsYXRlZERvY3VtZW50UHJldmlld1BhcmFtcykge1xyXG4gICAgcHJvcGVydGllcztcclxuICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZChwcm9wZXJ0aWVzOiBJRG93bmxvYWRGaWxlUGFyYW1zKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gQXV0aEhlYWRlcnNIZWxwZXIuZ2V0QXBpVjJBdXRoSGVhZGVycyh0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmNsaWVudElkLCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJsfS8ke3Byb3BlcnRpZXMuaWR9LyR7cHJvcGVydGllcy5maWxlTWV0YS5pZH1gLCB7IHJlc3BvbnNlVHlwZTogXCJibG9iXCIsIGhlYWRlcnMgfSk7XHJcbiAgfVxyXG5cclxuICBzdGFydFRyYW5zbGF0aW9uKHByb3BlcnRpZXM6IElTdGFydEZpbGVUcmFuc2xhdGlvblBhcmFtcyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgcHJvcGVydGllcy5maWxlLmZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZU5hbWVcIiwgcHJvcGVydGllcy5maWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwic3JjTGFuZ1wiLCBwcm9wZXJ0aWVzLnN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJ0cmdMYW5nXCIsIHByb3BlcnRpZXMuc3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAodGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuZW5naW5lc1t0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkXS5zZWxlY3RlZCkge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJ0ZXJtQ29sbGVjdGlvbnNcIiwgdGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuZW5naW5lc1t0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkXS5zZWxlY3RlZC5tdENvbGxlY3Rpb24/LmlkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvcGVydGllcy5zeXN0ZW0uZG9tYWluKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImRvbWFpblwiLCBwcm9wZXJ0aWVzLnN5c3RlbS5kb21haW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGhlYWRlcnMgPSBBdXRoSGVhZGVyc0hlbHBlci5nZXRBcGlWMkF1dGhIZWFkZXJzKHRoaXMuY29uZmlnLmNvcmVDb25maWcuY2xpZW50SWQsIHRoaXMuY29uZmlnLmNvcmVDb25maWcuYXBwSWQpO1xyXG5cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SUZpbGVUcmFuc2xhdGlvblN0YXR1c1YyUmVzcG9uc2U+KHRoaXMudXJsLCBmb3JtRGF0YSwgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5pZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUocHJvcGVydGllczogSVJlbW92ZUZpbGVQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHByb3BlcnRpZXMuZmlsZS50cmFuc2xhdGlvblN0YXJ0ZWRPblNlcnZlcikge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gQXV0aEhlYWRlcnNIZWxwZXIuZ2V0QXBpVjJBdXRoSGVhZGVycyh0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmNsaWVudElkLCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy51cmx9LyR7cHJvcGVydGllcy5maWxlLmlkfWAsIHsgaGVhZGVycyB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZigpO1xyXG4gIH1cclxuXHJcbiAgc291cmNlRmlsZVByZXZpZXcoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSk6IE9ic2VydmFibGU8SVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUub3JpZ2luYWxFeHRlbnNpb24udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IHNvdXJjZVByZXZpZXcgPSBgPGRpdiBpZD1cImRvY1ByZXZpZXdDb250ZW50XCIgY2xhc3M9XCJuby1wcmV2aWV3IHR5cGUtJHtleHRlbnNpb259XCI+PGRpdiBjbGFzcz1cInR5cGVcIj4ke2V4dGVuc2lvbi50b1VwcGVyQ2FzZSgpfTwvZGl2PjwvZGl2PmA7XHJcbiAgICByZXR1cm4gb2Yoe1xyXG4gICAgICBpc0ZpbGVQcmV2aWV3TG9hZGVkOiB0cnVlLFxyXG4gICAgICBzb3VyY2VQcmV2aWV3SGFzSHRtbDogZmFsc2UsXHJcbiAgICAgIHRtcE5hbWU6IGZpbGUub3JpZ2luYWxGaWxlTmFtZSxcclxuICAgICAgbmFtZTogZmlsZS5vcmlnaW5hbEZpbGVOYW1lLFxyXG4gICAgICBzb3VyY2VQcmV2aWV3OiBzb3VyY2VQcmV2aWV3XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzKHByb3BlcnRpZXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zKTogT2JzZXJ2YWJsZTxJR2V0RmlsZVRyYW5zbGF0aW9uU3RhdHVzUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBBdXRoSGVhZGVyc0hlbHBlci5nZXRBcGlWMkF1dGhIZWFkZXJzKHRoaXMuY29uZmlnLmNvcmVDb25maWcuY2xpZW50SWQsIHRoaXMuY29uZmlnLmNvcmVDb25maWcuYXBwSWQpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElGaWxlVHJhbnNsYXRpb25TdGF0dXNWMlJlc3BvbnNlPihgJHt0aGlzLnVybH0vJHtwcm9wZXJ0aWVzLmZpbGUuaWR9YCwgeyBoZWFkZXJzIH0pLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zdCBleHRlbnNpb25zOiBJRmlsZU1ldGFbXSA9IFtdO1xyXG4gICAgICAgIHJlc3BvbnNlLmZpbGVzLmZvckVhY2goKGZpbGUpID0+IHtcclxuICAgICAgICAgIGlmIChmaWxlLmNhdGVnb3J5ID09PSBGaWxlVjJDYXRlZ29yeS5UUkFOU0xBVEVEKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7cHJvcGVydGllcy5maWxlLm9yaWdpbmFsRmlsZU5hbWUuc2xpY2UoMCwgcHJvcGVydGllcy5maWxlLm9yaWdpbmFsRmlsZU5hbWUubGFzdEluZGV4T2YoXCIuXCIpKX0ke2ZpbGUuZXh0ZW5zaW9ufWA7XHJcbiAgICAgICAgICAgIGV4dGVuc2lvbnMucHVzaCh7IGV4dGVuc2lvbjogZmlsZS5leHRlbnNpb24sIGZpbGVOYW1lOiBmaWxlTmFtZSwgaWQ6IGZpbGUuaWQgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBjb25zdCBzcmNGaWxlID0gcmVzcG9uc2UuZmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5jYXRlZ29yeSA9PT0gRmlsZVYyQ2F0ZWdvcnkuU09VUkNFQ09OVkVSVEVEKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmV0dXJuVmFsdWU6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSA9IHtcclxuICAgICAgICAgIG5hbWU6IHJlc3BvbnNlLmZpbGVOYW1lLFxyXG4gICAgICAgICAgcHJvZ3Jlc3M6IE1hdGguZmxvb3IocmVzcG9uc2UudHJhbnNsYXRlZFNlZ21lbnRzIC8gcmVzcG9uc2Uuc2VnbWVudHMgKiAxMDApLFxyXG4gICAgICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiByZXNwb25zZS5zdGF0dXMudG9VcHBlckNhc2UoKSBhcyBUcmFuc2xhdGlvblN0YXR1c3MsXHJcbiAgICAgICAgICBzb3VyY2VEb3dubG9hZEF2YWlsYWJsZTogc3JjRmlsZSAhPT0gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgZXh0ZW5zaW9uczogZXh0ZW5zaW9ucyxcclxuICAgICAgICAgIHNvdXJjZUZpbGVOYW1lOiBzcmNGaWxlPy5pZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdWJzdGF0dXMpIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlLnN1YnN0YXR1cyA9IENvbnZlcnNpb25IZWxwZXIucGFzY2FsQ2FzZVRvRW51bShyZXNwb25zZS5zdWJzdGF0dXMpIGFzIEZpbGVUcmFuc2xhdGlvblN1YnN0YXR1cztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hcGktdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC9zZXJ2aWNlcy9hcGktdjIvZmlsZS1hcGktdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQXNCLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBS2hHLE1BQU0sT0FBTyxnQkFBZ0I7SUFNRTtJQUNWO0lBQ0E7SUFDQTtJQVBuQixJQUFZLEdBQUc7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO0lBQ3BELENBQUM7SUFFRCxZQUE2QixJQUFnQixFQUMxQixNQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsdUJBQTREO1FBSGxELFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFDakMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXFDO0lBQzNFLENBQUM7SUFHTCx5QkFBeUIsQ0FBQyxVQUE0QztRQUNwRSxVQUFVLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsVUFBK0I7UUFDdEMsTUFBTSxPQUFPLEdBQUcsaUJBQWlC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QUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRjtZQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRWhHLE1BQU0sV0FBVyxHQUFzQztnQkFDckQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQzNFLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUF3QjtnQkFDdkUsdUJBQXVCLEVBQUUsT0FBTyxLQUFLLFNBQVM7Z0JBQzlDLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQUU7YUFDNUIsQ0FBQztZQUVGLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsV0FBVyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUE2QixDQUFDO2FBQzNHO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7d0dBL0ZVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBGaWxlVHJhbnNsYXRpb25TdWJzdGF0dXMsIElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlQXBpU2VydmljZSwgSUZpbGVNZXRhLCBJR2V0RmlsZVN0YXR1c1BhcmFtcywgSUdldEZpbGVUcmFuc2xhdGlvblN0YXR1c1Jlc3BvbnNlLCBJUmVtb3ZlRmlsZVBhcmFtcywgSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIElTdGFydEZpbGVUcmFuc2xhdGlvblBhcmFtcywgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsIFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGlvbkZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRlLWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblN0YXR1c3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvdHJhbnNsYXRpb24tc3RhdHVzcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVWMkNhdGVnb3J5IH0gZnJvbSAnLi9tb2RlbHMvZmlsZS1jYXRlZ29yeS12Mi5tb2RlbCc7XHJcbmltcG9ydCB7IElGaWxlVHJhbnNsYXRpb25TdGF0dXNWMlJlc3BvbnNlIH0gZnJvbSAnLi9tb2RlbHMvZmlsZS10cmFuc2xhdGlvbi1zdGF0dXMtdjItcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBBdXRoSGVhZGVyc0hlbHBlciwgQ29udmVyc2lvbkhlbHBlciwgVGVybWlub2xvZ3lTZXJ2aWNlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVBcGlWMlNlcnZpY2UgaW1wbGVtZW50cyBJRmlsZUFwaVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGdldCB1cmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYXBpVjJDb25maWcuZmlsZVRyYW5zbGF0aW9uVXJsO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlcm1pbm9sb2d5U2VydmljZTogVGVybWlub2xvZ3lTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1NYW5hZ2VtZW50U2VydmljZTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuXHJcbiAgdHJhbnNsYXRlZERvY3VtZW50UHJldmlldyhwcm9wZXJ0aWVzOiBJVHJhbnNsYXRlZERvY3VtZW50UHJldmlld1BhcmFtcykge1xyXG4gICAgcHJvcGVydGllcztcclxuICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZChwcm9wZXJ0aWVzOiBJRG93bmxvYWRGaWxlUGFyYW1zKSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gQXV0aEhlYWRlcnNIZWxwZXIuZ2V0QXBpVjJBdXRoSGVhZGVycyh0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmNsaWVudElkLCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudXJsfS8ke3Byb3BlcnRpZXMuaWR9LyR7cHJvcGVydGllcy5maWxlTWV0YS5pZH1gLCB7IHJlc3BvbnNlVHlwZTogXCJibG9iXCIsIGhlYWRlcnMgfSk7XHJcbiAgfVxyXG5cclxuICBzdGFydFRyYW5zbGF0aW9uKHByb3BlcnRpZXM6IElTdGFydEZpbGVUcmFuc2xhdGlvblBhcmFtcyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgcHJvcGVydGllcy5maWxlLmZpbGUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZU5hbWVcIiwgcHJvcGVydGllcy5maWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwic3JjTGFuZ1wiLCBwcm9wZXJ0aWVzLnN5c3RlbS5zb3VyY2VMYW5ndWFnZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJ0cmdMYW5nXCIsIHByb3BlcnRpZXMuc3lzdGVtLnRhcmdldExhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAodGhpcy50ZXJtaW5vbG9neVNlcnZpY2UuZW5naW5lc1t0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLmlkXT8uc2VsZWN0ZWQpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKFwidGVybUNvbGxlY3Rpb25zXCIsIHRoaXMudGVybWlub2xvZ3lTZXJ2aWNlLmVuZ2luZXNbdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5nZXRBY3RpdmVTeXN0ZW1PYmooKS5pZF0uc2VsZWN0ZWQubXRDb2xsZWN0aW9uPy5pZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHByb3BlcnRpZXMuc3lzdGVtLmRvbWFpbikge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJkb21haW5cIiwgcHJvcGVydGllcy5zeXN0ZW0uZG9tYWluKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBoZWFkZXJzID0gQXV0aEhlYWRlcnNIZWxwZXIuZ2V0QXBpVjJBdXRoSGVhZGVycyh0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmNsaWVudElkLCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PElGaWxlVHJhbnNsYXRpb25TdGF0dXNWMlJlc3BvbnNlPih0aGlzLnVybCwgZm9ybURhdGEsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuaWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKHByb3BlcnRpZXM6IElSZW1vdmVGaWxlUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChwcm9wZXJ0aWVzLmZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIpIHtcclxuICAgICAgY29uc3QgaGVhZGVycyA9IEF1dGhIZWFkZXJzSGVscGVyLmdldEFwaVYyQXV0aEhlYWRlcnModGhpcy5jb25maWcuY29yZUNvbmZpZy5jbGllbnRJZCwgdGhpcy5jb25maWcuY29yZUNvbmZpZy5hcHBJZCk7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMudXJsfS8ke3Byb3BlcnRpZXMuZmlsZS5pZH1gLCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2YoKTtcclxuICB9XHJcblxyXG4gIHNvdXJjZUZpbGVQcmV2aWV3KGZpbGU6IElUcmFuc2xhdGlvbkZpbGUpOiBPYnNlcnZhYmxlPElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm9yaWdpbmFsRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBzb3VyY2VQcmV2aWV3ID0gYDxkaXYgaWQ9XCJkb2NQcmV2aWV3Q29udGVudFwiIGNsYXNzPVwibm8tcHJldmlldyB0eXBlLSR7ZXh0ZW5zaW9ufVwiPjxkaXYgY2xhc3M9XCJ0eXBlXCI+JHtleHRlbnNpb24udG9VcHBlckNhc2UoKX08L2Rpdj48L2Rpdj5gO1xyXG4gICAgcmV0dXJuIG9mKHtcclxuICAgICAgaXNGaWxlUHJldmlld0xvYWRlZDogdHJ1ZSxcclxuICAgICAgc291cmNlUHJldmlld0hhc0h0bWw6IGZhbHNlLFxyXG4gICAgICB0bXBOYW1lOiBmaWxlLm9yaWdpbmFsRmlsZU5hbWUsXHJcbiAgICAgIG5hbWU6IGZpbGUub3JpZ2luYWxGaWxlTmFtZSxcclxuICAgICAgc291cmNlUHJldmlldzogc291cmNlUHJldmlld1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFN0YXR1cyhwcm9wZXJ0aWVzOiBJR2V0RmlsZVN0YXR1c1BhcmFtcyk6IE9ic2VydmFibGU8SUdldEZpbGVUcmFuc2xhdGlvblN0YXR1c1Jlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gQXV0aEhlYWRlcnNIZWxwZXIuZ2V0QXBpVjJBdXRoSGVhZGVycyh0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmNsaWVudElkLCB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcElkKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJRmlsZVRyYW5zbGF0aW9uU3RhdHVzVjJSZXNwb25zZT4oYCR7dGhpcy51cmx9LyR7cHJvcGVydGllcy5maWxlLmlkfWAsIHsgaGVhZGVycyB9KS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uczogSUZpbGVNZXRhW10gPSBbXTtcclxuICAgICAgICByZXNwb25zZS5maWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmlsZS5jYXRlZ29yeSA9PT0gRmlsZVYyQ2F0ZWdvcnkuVFJBTlNMQVRFRCkge1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke3Byb3BlcnRpZXMuZmlsZS5vcmlnaW5hbEZpbGVOYW1lLnNsaWNlKDAsIHByb3BlcnRpZXMuZmlsZS5vcmlnaW5hbEZpbGVOYW1lLmxhc3RJbmRleE9mKFwiLlwiKSl9JHtmaWxlLmV4dGVuc2lvbn1gO1xyXG4gICAgICAgICAgICBleHRlbnNpb25zLnB1c2goeyBleHRlbnNpb246IGZpbGUuZXh0ZW5zaW9uLCBmaWxlTmFtZTogZmlsZU5hbWUsIGlkOiBmaWxlLmlkIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc3Qgc3JjRmlsZSA9IHJlc3BvbnNlLmZpbGVzLmZpbmQoKGZpbGUpID0+IGZpbGUuY2F0ZWdvcnkgPT09IEZpbGVWMkNhdGVnb3J5LlNPVVJDRUNPTlZFUlRFRCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJldHVyblZhbHVlOiBJR2V0RmlsZVRyYW5zbGF0aW9uU3RhdHVzUmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICBuYW1lOiByZXNwb25zZS5maWxlTmFtZSxcclxuICAgICAgICAgIHByb2dyZXNzOiBNYXRoLmZsb29yKHJlc3BvbnNlLnRyYW5zbGF0ZWRTZWdtZW50cyAvIHJlc3BvbnNlLnNlZ21lbnRzICogMTAwKSxcclxuICAgICAgICAgIHRyYW5zbGF0aW9uU3RhdHVzczogcmVzcG9uc2Uuc3RhdHVzLnRvVXBwZXJDYXNlKCkgYXMgVHJhbnNsYXRpb25TdGF0dXNzLFxyXG4gICAgICAgICAgc291cmNlRG93bmxvYWRBdmFpbGFibGU6IHNyY0ZpbGUgIT09IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGV4dGVuc2lvbnM6IGV4dGVuc2lvbnMsXHJcbiAgICAgICAgICBzb3VyY2VGaWxlTmFtZTogc3JjRmlsZT8uaWRcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3Vic3RhdHVzKSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZS5zdWJzdGF0dXMgPSBDb252ZXJzaW9uSGVscGVyLnBhc2NhbENhc2VUb0VudW0ocmVzcG9uc2Uuc3Vic3RhdHVzKSBhcyBGaWxlVHJhbnNsYXRpb25TdWJzdGF0dXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2022/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs
CHANGED
|
@@ -279,11 +279,11 @@ export class TldTranslateTextComponent {
|
|
|
279
279
|
});
|
|
280
280
|
}
|
|
281
281
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateTextComponent, deps: [{ token: i1.TldTranslateTextService }, { token: i2.Clipboard }, { token: i3.AlertService }, { token: i4.TldTranslateConfigService }, { token: i5.TldScrollService }, { token: i4.TldTranslateSystemManagementService }, { token: i6.AudioRecordService }, { token: i6.TldVoiceInputService }, { token: i7.TldTranslateFileService }, { token: i8.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component });
|
|
282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TldTranslateTextComponent, selector: "tld-translate-text", inputs: { filePreviewProgress: "filePreviewProgress" }, outputs: { onFileChange: "onFileChange" }, viewQueries: [{ propertyName: "sourceComponent", first: true, predicate: ["sourceComponent"], descendants: true }, { propertyName: "dictateComponent", first: true, predicate: ["dictate"], descendants: true }], ngImport: i0, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <tld-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span> </span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\"\r\n [innerHTML]=\"'FILE_UPLOAD.LIMITS' | translate: {maxSizeMB: maxSizeMB, visibleExtensions: visibleExtensions}\"></span>\r\n </div>\r\n </span>\r\n </tld-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"!hasDictionary; else dictionaryTargetBlock\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dictionaryTargetBlock>\r\n <div fxFlex fxLayout=\"column\" class=\"dictionary-wrapper\">\r\n <tld-dictionary fxFlex *ngFor=\"let dictionary of dictionaryEntry\" [dictionary]=\"dictionary\">\r\n </tld-dictionary>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:0;right:0}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}@media (max-width: 768px){.translated-source{padding:1em!important}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: ["clearSourceVisible", "clearSourceTooltip", "clearDisabled", "textToSpeechSourceSettings"], outputs: ["onSourceClear"] }, { kind: "component", type: i11.TldDictateComponent, selector: "tld-dictate", inputs: ["configuration", "language"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i3.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: i12.TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i3.FileUploadComponent, selector: "tld-file-upload", inputs: ["accept", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "uploadIconName", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i15.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i15.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i16.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i17.TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: i18.TldTranslateSuggestComponent, selector: "tld-translate-suggest", inputs: ["target", "source", "dictionary", "systemId", "options", "selectedSentence"] }, { kind: "component", type: i19.TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: i20.HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "correctionsEnabled", "highlight", "gramCheck", "selectSentence"], outputs: ["onReplace"] }, { kind: "component", type: i21.ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i22.TranslatePipe, name: "translate" }] });
|
|
282
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TldTranslateTextComponent, selector: "tld-translate-text", inputs: { filePreviewProgress: "filePreviewProgress" }, outputs: { onFileChange: "onFileChange" }, viewQueries: [{ propertyName: "sourceComponent", first: true, predicate: ["sourceComponent"], descendants: true }, { propertyName: "dictateComponent", first: true, predicate: ["dictate"], descendants: true }], ngImport: i0, template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <tld-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span> </span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\"\r\n [innerHTML]=\"'FILE_UPLOAD.LIMITS' | translate: {maxSizeMB: maxSizeMB, visibleExtensions: visibleExtensions}\"></span>\r\n </div>\r\n </span>\r\n </tld-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"!hasDictionary; else dictionaryTargetBlock\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dictionaryTargetBlock>\r\n <div fxFlex fxLayout=\"column\" class=\"dictionary-wrapper\">\r\n <tld-dictionary fxFlex *ngFor=\"let dictionary of dictionaryEntry\" [dictionary]=\"dictionary\">\r\n </tld-dictionary>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:.2em;right:.2em}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}@media (max-width: 768px){.translated-source{padding:1em!important}}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.SourceAndTargetWrapperComponent, selector: "tld-source-and-target-wrapper", inputs: ["clearSourceVisible", "clearSourceTooltip", "clearDisabled", "textToSpeechSourceSettings"], outputs: ["onSourceClear"] }, { kind: "component", type: i11.TldDictateComponent, selector: "tld-dictate", inputs: ["configuration", "language"], outputs: ["result", "partialResult", "isDictating", "onError"] }, { kind: "component", type: i3.OpenExtensionDialogComponent, selector: "lib-open-extension-dialog", inputs: ["extensions"] }, { kind: "component", type: i12.TextToSpeechComponent, selector: "tld-text-to-speech", inputs: ["settings"] }, { kind: "component", type: i3.FileUploadComponent, selector: "tld-file-upload", inputs: ["accept", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "uploadIconName", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i13.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i14.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i14.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i15.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i15.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i16.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i17.TldTranslateSourceComponent, selector: "tld-translate-source", inputs: ["textareaDisabled", "sourceParagraphs"] }, { kind: "component", type: i18.TldTranslateSuggestComponent, selector: "tld-translate-suggest", inputs: ["target", "source", "dictionary", "systemId", "options", "selectedSentence"] }, { kind: "component", type: i19.TldDictionaryComponent, selector: "tld-dictionary", inputs: ["dictionary"] }, { kind: "component", type: i20.HighlightTreeComponent, selector: "tld-highlight-tree", inputs: ["tree", "isSource", "correctionsEnabled", "highlight", "gramCheck", "selectSentence"], outputs: ["onReplace"] }, { kind: "component", type: i21.ProgressIndicatorComponent, selector: "progress-indicator", outputs: ["onClose"] }, { kind: "pipe", type: i22.TranslatePipe, name: "translate" }] });
|
|
283
283
|
}
|
|
284
284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TldTranslateTextComponent, decorators: [{
|
|
285
285
|
type: Component,
|
|
286
|
-
args: [{ selector: 'tld-translate-text', template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <tld-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span> </span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\"\r\n [innerHTML]=\"'FILE_UPLOAD.LIMITS' | translate: {maxSizeMB: maxSizeMB, visibleExtensions: visibleExtensions}\"></span>\r\n </div>\r\n </span>\r\n </tld-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"!hasDictionary; else dictionaryTargetBlock\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dictionaryTargetBlock>\r\n <div fxFlex fxLayout=\"column\" class=\"dictionary-wrapper\">\r\n <tld-dictionary fxFlex *ngFor=\"let dictionary of dictionaryEntry\" [dictionary]=\"dictionary\">\r\n </tld-dictionary>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top
|
|
286
|
+
args: [{ selector: 'tld-translate-text', template: "<!-- NOTE. tld-source-and-target-wrapper uses multiple content projections, so might seem confusing first, but elements are displayed at their places based on tld-source-and-target-wrapper component\r\nhttps://angular.io/guide/content-projection#multi-slot-content-projection\r\n-->\r\n<tld-source-and-target-wrapper [textToSpeechSourceSettings]=\"textToSpeechSourceSettings\"\r\n [clearSourceVisible]=\"source?.length>0\" (onSourceClear)=\"clearSource()\"\r\n [clearDisabled]=\"textareaDisabled\" [clearSourceTooltip]=\"'TLD_TRANSLATE.CLEAR_SOURCE_TOOLTIP'\"\r\n [ngClass]=\"{'highlight-active': highlight, 'gramcheck-active': gramCheck, 'empty-target': isEmptyTarget}\">\r\n <div sourceMain class=\"source-main\" fxLayout=\"column\">\r\n <tld-translate-source [textareaDisabled]=\"textareaDisabled\" #sourceComponent fxFlex\r\n [sourceParagraphs]=\"sourceParagraphs\"></tld-translate-source>\r\n </div>\r\n <ng-container sourceActions *ngIf=\"!hideSourceActions\">\r\n <div fxLayoutAlign=\"start center\" class=\"basic-padding\" fxLayoutGap=\"1em\">\r\n <ng-container *ngIf=\"audioInputVisible\">\r\n <tld-dictate #dictate [configuration]=\"dictateConfig\" [ngClass]=\"{'full-width' : !fileUpload}\"\r\n (isDictating)=\"dictateStartStop($event)\" (result)=\"dictateResult($event)\"\r\n (partialResult)=\"dictatePartialResult($event)\" (onError)=\"dictateError($event)\" [language]=\"sourceLanguage\">\r\n </tld-dictate>\r\n </ng-container>\r\n <div *ngIf=\"fileUpload\" class=\"file-upload-wrapper\">\r\n <tld-file-upload (fileChange)=\"fileChange($event)\" [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [uploadIconName]=\"uploadIconName\"\r\n [extendedAcceptList]=\"extendedFileTypes\" [multiple]=\"multipleFiles\" (errorEvent)=\"fileUploadError($event)\"\r\n [filePreviewProgress]=\"filePreviewProgress\" [disabled]=\"fileUploadDisabled\">\r\n <span class=\"upload-file-text\">\r\n <div fxLayout=\"row\">\r\n <span class=\"info text-l-semi-bold\">\r\n <span [innerHTML]=\"'FILE_UPLOAD.UPLOAD' | translate\" class=\"accent-color\"></span>\r\n <span> </span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.DRAG_AND_DROP' | translate\" fxHide.lt-sm></span>\r\n <span [innerHTML]=\"'FILE_UPLOAD.'+ (multipleFiles? 'FILES' : 'FILE') | translate\"\r\n [ngClass.lt-sm]=\"'accent-color'\"></span>\r\n </span>\r\n </div>\r\n <div fxLayout=\"row\">\r\n <span class=\"file-upload-extensions text-m\"\r\n [innerHTML]=\"'FILE_UPLOAD.LIMITS' | translate: {maxSizeMB: maxSizeMB, visibleExtensions: visibleExtensions}\"></span>\r\n </div>\r\n </span>\r\n </tld-file-upload>\r\n <lib-open-extension-dialog *ngIf=\"showExtensionPopup\" [extensions]=\"allowedTypesWithoutDots\">\r\n </lib-open-extension-dialog>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div targetMain class=\"target-main\">\r\n <ng-container *ngIf=\"!hasDictionary; else dictionaryTargetBlock\">\r\n <ng-container *ngIf=\"isEmptyTarget; else translatedTextBlock\">\r\n <p *ngIf=\"showTargetPlaceholder\" class=\"description-text target-empty\"\r\n [innerHtml]=\"'TLD_TRANSLATE.TARGET_DESCRIPTION' | translate\">\r\n </p>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container targetActions>\r\n <div class=\"tld-translate-target-footer basic-padding\" *ngIf=\"showSuggestions || showProgressIndicator\">\r\n <tld-translate-suggest *ngIf=\"showSuggestions\" [systemId]=\"systemId\" [target]=\"targetParagraphs\"\r\n [source]=\"sourceParagraphs\">\r\n </tld-translate-suggest>\r\n <progress-indicator (onClose)=\"closeProgressIndicator()\" *ngIf=\"showProgressIndicator\"></progress-indicator>\r\n </div>\r\n </ng-container>\r\n</tld-source-and-target-wrapper>\r\n\r\n\r\n<!-- templates used for else blocks in target container -->\r\n<ng-template #translatedTextBlock>\r\n <div class=\"translated-source\" [class.selectable-sentence]=\"showSuggestions\">\r\n <ng-container *ngIf=\"!urlToTranslate\">\r\n <div class=\"target-wrapper-action-buttons\">\r\n <button *ngIf=\"firstParagraphTranslated\" mat-icon-button class=\"tld-copy-translation\" (click)=\"copy()\"\r\n matTooltip=\"{{'TOOLTIPS.COPY' | translate}}\" [attr.aria-describedby]=\"copyMessageId\"\r\n (keydown.Tab)=\"switchFocusFromCopy($event)\" [attr.Id]=\"copyButtonId\">\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.COPY' | translate\">\r\n content_copy\r\n </span>\r\n </button>\r\n <button *ngIf=\"firstParagraphTranslated || translationError\" mat-icon-button class=\"tld-refresh-translation\" (click)=\"refresh()\"\r\n matTooltip=\"{{'TOOLTIPS.REFRESH' | translate}}\"\r\n >\r\n <span class=\"material-icons\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.REFRESH' | translate\">\r\n refresh\r\n </span>\r\n </button>\r\n <tld-text-to-speech *ngIf=\"textToSpeechTargetSettings && firstParagraphTranslated\" [settings]=\"textToSpeechTargetSettings\">\r\n </tld-text-to-speech>\r\n </div>\r\n <div *ngFor=\"let paragraph of targetParagraphs\">\r\n <tld-highlight-tree [highlight]=\"highlight\" [tree]=\"paragraph\" [selectSentence]=\"showSuggestions\">\r\n </tld-highlight-tree>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"urlToTranslate\" class=\"target-url-container\">\r\n <a [attr.href]=\"translateUrlRedirect\" target=\"_blank\" fxLayoutAlign=\"start center\" class=\"go-to-webtranslate\">\r\n {{urlToTranslate}}\r\n <span class=\"material-icons\" color=\"accent\" aria-hidden=\"false\" [attr.aria-label]=\"'ARIA_LABELS.OPEN_IN_NEW'\">\r\n open_in_new\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #dictionaryTargetBlock>\r\n <div fxFlex fxLayout=\"column\" class=\"dictionary-wrapper\">\r\n <tld-dictionary fxFlex *ngFor=\"let dictionary of dictionaryEntry\" [dictionary]=\"dictionary\">\r\n </tld-dictionary>\r\n </div>\r\n</ng-template>\r\n", styles: [".go-to-webtranslate{word-break:break-all;display:inline}.basic-padding,.target-empty,.target-translated-text{padding:1em}.source-container{border-right:1px solid #cbd2d9;padding:0;overflow:auto}.target-description{margin-top:0}.target-container{position:relative}.translated-source{overflow-y:auto;overflow-x:hidden;flex:1 1 0!important;padding:1em 2em!important}.translated-source.selectable-sentence{cursor:pointer}::ng-deep .target-highlight .tld-highlight-container{padding:1em}.target-wrapper-action-buttons{position:absolute;top:.2em;right:.2em}.target-wrapper-action-buttons .tld-copy-translation,.target-wrapper-action-buttons .tld-refresh-translation,.target-wrapper-action-buttons tld-text-to-speech{display:block}.target-empty,.target-translated-text{margin:0}tld-dictionary{overflow-y:auto;flex:1 1 0!important}.source-main,.target-main{height:100%}.upload-file-text{display:inline-block;text-align:left}.file-upload-wrapper{width:100%}.file-upload-wrapper .file-upload-extensions{font-weight:400}@media (max-width: 768px){.translated-source{padding:1em!important}}\n"] }]
|
|
287
287
|
}], ctorParameters: function () { return [{ type: i1.TldTranslateTextService }, { type: i2.Clipboard }, { type: i3.AlertService }, { type: i4.TldTranslateConfigService }, { type: i5.TldScrollService }, { type: i4.TldTranslateSystemManagementService }, { type: i6.AudioRecordService }, { type: i6.TldVoiceInputService }, { type: i7.TldTranslateFileService }, { type: i8.BreakpointObserver }]; }, propDecorators: { sourceComponent: [{
|
|
288
288
|
type: ViewChild,
|
|
289
289
|
args: ["sourceComponent"]
|