@tilde-nlp/ngx-translate 7.0.2 → 7.0.4
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/factories/llm-service-configuration.factory.mjs +1 -4
- package/esm2022/lib/modules/tld-document/services/tld-translate-file.service.mjs +6 -4
- package/esm2022/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +3 -3
- package/esm2022/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +3 -3
- package/esm2022/lib/tld-translate.module.mjs +16 -8
- package/fesm2022/tilde-nlp-ngx-translate.mjs +25 -22
- package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/lib/modules/tld-document/services/tld-translate-file.service.d.ts +2 -1
- package/package.json +1 -1
- package/src/assets/webcomponent/styles.css +1 -1
- package/src/assets/webcomponent/tilde-translate-box.js +1 -1
- package/esm2022/lib/factories/quota-service-configuration.factory.mjs +0 -4
- package/lib/factories/quota-service-configuration.factory.d.ts +0 -3
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
export function llmServiceConfiguration(config) {
|
|
2
2
|
return {
|
|
3
|
-
serviceUrl: config.llmConfig.apiUrl,
|
|
4
3
|
subscriptionUrl: config.supscriptionConfig.pricingUrl,
|
|
5
4
|
supportEmail: config.coreConfig.supportEmail,
|
|
6
|
-
appId: config.coreConfig.appId,
|
|
7
|
-
xApiKey: config.coreConfig.xApiKey,
|
|
8
5
|
maxCharLength: config.llmConfig.maxCharLength,
|
|
9
6
|
useLocalQuota: config.llmConfig.useLocalQuota
|
|
10
7
|
};
|
|
11
8
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLXNlcnZpY2UtY29uZmlndXJhdGlvbi5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL2ZhY3Rvcmllcy9sbG0tc2VydmljZS1jb25maWd1cmF0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWlDO0lBQ3hFLE9BQU87UUFDTixlQUFlLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQVU7UUFDckQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWTtRQUM1QyxhQUFhLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1FBQzdDLGFBQWEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWE7S0FDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMTE1Db25maWd1cmF0aW9uIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxsbVNlcnZpY2VDb25maWd1cmF0aW9uKGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSk6IExMTUNvbmZpZ3VyYXRpb24ge1xyXG5cdHJldHVybiB7XHJcblx0XHRzdWJzY3JpcHRpb25Vcmw6IGNvbmZpZy5zdXBzY3JpcHRpb25Db25maWcucHJpY2luZ1VybCxcclxuXHRcdHN1cHBvcnRFbWFpbDogY29uZmlnLmNvcmVDb25maWcuc3VwcG9ydEVtYWlsLFxyXG5cdFx0bWF4Q2hhckxlbmd0aDogY29uZmlnLmxsbUNvbmZpZy5tYXhDaGFyTGVuZ3RoLFxyXG5cdFx0dXNlTG9jYWxRdW90YTogY29uZmlnLmxsbUNvbmZpZy51c2VMb2NhbFF1b3RhXHJcblx0fTtcclxufVxyXG4iXX0=
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ConversionHelper, FileExtensionHelper, FileExtensions, InlineMessageType
|
|
2
|
+
import { ConversionHelper, FileExtensionHelper, FileExtensions, InlineMessageType } from '@tilde-nlp/ngx-common';
|
|
3
3
|
import { saveAs } from 'file-saver';
|
|
4
4
|
import { Subject, of, throwError, timer } from 'rxjs';
|
|
5
5
|
import { catchError, mergeMap, retryWhen } from 'rxjs/operators';
|
|
6
6
|
import { ErrorCode } from '../../tld-common/models/errors/error-codes.enum';
|
|
7
7
|
import { TranslationStatuss } from '../models';
|
|
8
8
|
import { FileConversionTypes } from '../models/file-conversion-types.model';
|
|
9
|
+
import { QuotaType } from '@tilde-nlp/ngx-services';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "./api/file-api.service";
|
|
11
12
|
import * as i2 from "@tilde-nlp/ngx-common";
|
|
12
13
|
import * as i3 from "@angular/platform-browser";
|
|
13
14
|
import * as i4 from "../../tld-common/services";
|
|
15
|
+
import * as i5 from "@tilde-nlp/ngx-services";
|
|
14
16
|
export class TldTranslateFileService {
|
|
15
17
|
fileApi;
|
|
16
18
|
alerts;
|
|
@@ -400,7 +402,7 @@ export class TldTranslateFileService {
|
|
|
400
402
|
translationFile.messages.push(inlineMessage);
|
|
401
403
|
}
|
|
402
404
|
}
|
|
403
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileService, deps: [{ token: i1.FileApiService }, { token: i2.AlertService }, { token: i3.DomSanitizer }, { token: i4.TldTranslateConfigService }, { token: i4.TldTranslateSystemManagementService }, { token:
|
|
405
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileService, deps: [{ token: i1.FileApiService }, { token: i2.AlertService }, { token: i3.DomSanitizer }, { token: i4.TldTranslateConfigService }, { token: i4.TldTranslateSystemManagementService }, { token: i5.QuotaService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
404
406
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileService, providedIn: 'root' });
|
|
405
407
|
}
|
|
406
408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileService, decorators: [{
|
|
@@ -408,5 +410,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
408
410
|
args: [{
|
|
409
411
|
providedIn: 'root'
|
|
410
412
|
}]
|
|
411
|
-
}], ctorParameters: () => [{ type: i1.FileApiService }, { type: i2.AlertService }, { type: i3.DomSanitizer }, { type: i4.TldTranslateConfigService }, { type: i4.TldTranslateSystemManagementService }, { type:
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQWdCLFNBQVMsRUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQzVNLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7QUFPNUUsTUFBTSxPQUFPLHVCQUF1QjtJQXVDZjtJQUNBO0lBQ1Q7SUFDQTtJQUNTO0lBQ0E7SUExQ25CLGtCQUFrQixDQUFVO0lBQzVCLCtHQUErRztJQUMvRyxJQUFJLGVBQWUsS0FBYyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQzFFLGdCQUFnQixHQUF1QixFQUFFLENBQUM7SUFDMUMsU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUN6QixVQUFVLENB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QUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDdEYsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNqRixlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQzt1R0F0YlUsdUJBQXVCOzJHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEFjdGl2ZURhdGEsIEFsZXJ0U2VydmljZSwgQ29udmVyc2lvbkhlbHBlciwgRmlsZUV4dGVuc2lvbkhlbHBlciwgRmlsZUV4dGVuc2lvbnMsIEZpbGVVcGxvYWRFcnJvciwgSW5saW5lTWVzc2FnZSwgSW5saW5lTWVzc2FnZVR5cGUsIFF1b3RhU2VydmljZSwgUXVvdGFUeXBlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRsZFRyYW5zbGF0ZUZpbGVTZXJ2aWNlIHtcclxuXHJcbiAgdHJhbnNsYXRpb25TdGFydGVkOiBib29sZWFuO1xyXG4gIC8qKiBWYWx1ZSB0byBiZSBzZXQgdG8gdHJ1ZSB3aGlsZSBsb2FkaW5nIHNvdXJjZSBwcmV2aWV3LiBBdCB0aGF0IHRpbWUsIHRyYW5zbGF0ZSBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xyXG4gIGdldCBpc1VwbG9hZGluZ0ZpbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmZpbGVzVXBsb2FkaW5nLmxlbmd0aCA+IDA7IH07XHJcbiAgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdID0gW107XHJcbiAgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzQWRkZWQ6IG51bWJlcjtcclxuICBhbnlQZGZGaWxlTG9hZGVkOiBib29sZWFuO1xyXG4gIGFueUltYWdlRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICAvL2ZvciBtdWx0aXBsZSBmaWxlIGNvbXBvbmVudFxyXG4gIHRyYW5zbGF0ZWRDb3VudDogbnVtYmVyID0gMDtcclxuICBtdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgfHwgdGhpcy5pc1VwbG9hZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkZpbGVzVXBsb2FkZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBhY3RpdmVTeXN0ZW06IFN5c3RlbTtcclxuICAvLyBUT0RPLiBDb25maWd1cmFibGU/XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dCA9IDEwMDA7XHJcbiAgLy8gMCBpcyBuZXR3b3JrIGVycm9yLCBzaG91bGQgdHJ5IGFnYWluXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcmV0cnlFcnJvckNvZGVzID0gWzBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtFcnJvck1heFJldHJpZXMgPSAyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1c1RpbWVvdXRzID0ge307XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25DbGVhciA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbWFnZUV4dGVuc2lvbnMgPSBbXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gIHByaXZhdGUgZmlsZXNVcGxvYWRpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBub3RGb3VuZEVycm9yQ29kZSA9IFwiRV80MDRcIjtcclxuICBwcml2YXRlIG5vdEZvdW5kUmVtb3ZlRXJyb3JDb2RlID0gXCJFXzQwNF9SRU1PVkVcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclRyYW5zbGF0aW9uU3ViS2V5cyA9IFtcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX1NVQlNUQVRVUycsXHJcbiAgICAnRklMRV9VUExPQUQnLFxyXG4gICAgJ0ZJTEVfVFJBTlNMQVRJT05fTElNSVRTJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlQXBpOiBGaWxlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFN5c3RlbTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuRVhUUkFDVElOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5JTklUSUFMSVpJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5RVUVVSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuU0FWSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuVFJBTlNMQVRJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5XQUlUSU5HXSA9IDEwMDAwO1xyXG4gIH1cclxuXHJcbiAgLy8gY2xlYXJzIGFsbCBsb2FkZWQgZGF0YVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgZmlsZUFyciA9IHRoaXMudHJhbnNsYXRpb25GaWxlcztcclxuICAgIGZpbGVBcnIuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICBmaWxlLnRyYW5zbGF0aW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlKGZpbGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGVhclBhcmFtcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpbGVzVXBsb2FkZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkZpbGVzVXBsb2FkZWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoZmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgLy8gZmlsZS50cmFuc2xhdGluZyBuZWVkcyB0byBiZSBzZXQsIHNvIG5vIG90aGVyIGdldCBzdGF0dXMgcmVxdWVzdHMgYXJlIHNlbnQgdG8gc2VydmVyLlxyXG4gICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaXggPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChpeCA8IDApIHtcclxuICAgICAgdGhyb3cgXCJDYW4ndCByZW1vdmUgZmlsZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhcmFtczogSVJlbW92ZUZpbGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IGZpbGVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5maWxlQXBpLnJlbW92ZShwYXJhbXMpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZFJlbW92ZUVycm9yQ29kZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMuc3BsaWNlKGl4LCAxKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmhhc0FueUltYWdlT3JQZGYoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZG93bmxvYWQodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YTogSUZpbGVNZXRhKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRvd25sb2FkUGFyYW1zOiBJRG93bmxvYWRGaWxlUGFyYW1zID0ge1xyXG4gICAgICBpZDogdHJhbnNsYXRpb25GaWxlLmlkLFxyXG4gICAgICBmaWxlTWV0YTogZmlsZU1ldGFcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZG93bmxvYWQoZG93bmxvYWRQYXJhbXMpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgc2F2ZUFzKHJlc3BvbnNlLCBmaWxlTWV0YSA/IGZpbGVNZXRhLmZpbGVOYW1lIDogdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvciwgdHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVQcmV2aWV3KGZpbGU6IEZpbGUpOiBJVHJhbnNsYXRpb25GaWxlIHtcclxuICAgIGNvbnN0IGZpbGVzQWxsb3dlZCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA+PSBmaWxlc0FsbG93ZWQpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gXCJFUlJPUlMuXCIgKyAoZmlsZXNBbGxvd2VkID4gMSA/IFwiTUFYX05VTUJFUl9PRl9GSUxFU1wiIDogXCJJTkNSRUFTRV9NQVhfTlVNQkVSX09GX0ZJTEVTXCIpO1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihlcnJvckNvZGUsIG51bGwsIHsgbGluazogdGhpcy5jb25maWcuY29yZUNvbmZpZy5yZWdpc3RlckxpbmssIGxpbWl0OiBmaWxlc0FsbG93ZWQgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVOYW1lcy5pbmNsdWRlcyhmaWxlTmFtZSkpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoXCJFUlJPUlMuRklMRV9BTFJFQURZX0FEREVEXCIsIG51bGwsIHsgZmlsZU5hbWU6IGZpbGUubmFtZSB9KTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlc1VwbG9hZGluZy5wdXNoKGZpbGVOYW1lKTtcclxuICAgIGNvbnN0IHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSA9IHtcclxuICAgICAgb3JpZ2luYWxGaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIC8vIG5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICBvcmlnaW5hbEV4dGVuc2lvbjogRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lKSxcclxuICAgICAgdHJhbnNsYXRpb25TdGF0dXNzOiBUcmFuc2xhdGlvblN0YXR1c3MuVVBMT0FESU5HLFxyXG4gICAgICBmaWxlLFxyXG4gICAgICBtZXNzYWdlczogW11cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMucHVzaCh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5maWxlTmFtZXMucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCBpc0ltYWdlID0gdGhpcy5fc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zLmluY2x1ZGVzKEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbih0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZSkpO1xyXG4gICAgaWYgKGlzSW1hZ2UpIHtcclxuICAgICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXNQZGYgPSBcInBkZlwiID09PSBGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpO1xyXG4gICAgaWYgKGlzUGRmKSB7XHJcbiAgICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5maWxlVHlwZSA9IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlQXBpLnNvdXJjZUZpbGVQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLmlzRmlsZVByZXZpZXdMb2FkZWQpIHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BREVEO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZGVkKGZpbGVOYW1lKTtcclxuICAgICAgICB0aGlzLmZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uRmlsZVByZXZpZXdMb2FkKHJlc3AsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGU7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVCdXR0b25DbGljayhhY3RpdmU6IEFjdGl2ZURhdGEpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlLCBmaWxlKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzdGFydEZpbGVUcmFuc2xhdGlvbihhY3RpdmVTeXN0ZW06IEFjdGl2ZURhdGEsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHN0YXJ0IGZpbGUgdHJhbnNsYXRpb24hXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVN5c3RlbSA9IHRoaXMudGxkU3lzdGVtLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gcXVpdGUgd2VpcmQuIFJlc3BvbnNlIGNhbiBiZSBzdHJ1Y3R1cmUgd2l0aCBzdWNjZXNzIGFuZCBlcnJvciBwYXJhbXMgYW5kIGl0IGNhbiBhbHNvIGJlIHBsYWluIHN0cmluZyBpbiBzdWNjZXNzLlxyXG4gICAgY29uc3QgcGFyYW1zOiBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMgPSB7XHJcbiAgICAgIGZpbGU6IHRyYW5zbGF0aW9uRmlsZSxcclxuICAgICAgc3lzdGVtOiBhY3RpdmVTeXN0ZW0uc3lzdGVtXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLnN0YXJ0VHJhbnNsYXRpb24ocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAvLyB0aHJvdyBlcnJvcjtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIC8vIHNvbWV0aGluZyBnb25lIHdyb25nXHJcbiAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pZCA9IHJlc3BvbnNlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGFydGVkT25TZXJ2ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5jaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbGVVcGxvYWRFcnJvcihlcnJvcjogRmlsZVVwbG9hZEVycm9yKSB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGZpbGVOYW1lOiBlcnJvci5maWxlTmFtZSxcclxuICAgICAgbWF4U2l6ZU1COiBDb252ZXJzaW9uSGVscGVyLmJ5dGVzVG9NYih0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm1heFNpemUpLFxyXG4gICAgICBmb3JtYXRzOiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMuam9pbihcIiwgXCIpLFxyXG4gICAgICByZWdpc3Rlckxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rXHJcbiAgICB9XHJcbiAgICB0aGlzLmFsZXJ0cy5lcnJvcihgRVJST1JTLkZJTEVfVVBMT0FELiR7ZXJyb3IuY29kZX1gLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVja3MgYWxsIG5lY2Vzc2FyeSBwYXJhbXMgdGhhdCBhcmUgcmVzcG9uc2libGUgd2hldGVyIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgbmV3IHRyYW5zbGF0aW9uLlxyXG4gIHByaXZhdGUgY2FuU3RhcnRUcmFuc2xhdGlvbih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHJldHVybiB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSAmJiAhdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RyYW5zbGF0aW9uUHJvZ3Jlc3ModHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBjb25zdCBmaW5pc2hlZFN0YXR1cyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5DT01QTEVURUQ7XHJcbiAgICBjb25zdCBwYXJhbXM6IElHZXRGaWxlU3RhdHVzUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHNyY0xhbmc6IHRoaXMuYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICB0cmdMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5nZXRTdGF0dXMocGFyYW1zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyBJZiBuZXR3b3JrIGVycm9yLCBjaGVjayBhZ2FpbiBiZWNhdXNlIGZpbGUgaGFzIG5vdCBmYWlsZWQuXHJcbiAgICAgICAgLy8gdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHRlc3RlZCwgYmVjYXVzZSBjYW50IHJlcGVhdCBpdFxyXG4gICAgICAgIHJldHJ5V2hlbigob2JzZXJ2YWJsZXMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlcy5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoZXJyb3IsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoaSA8IHRoaXMuX25ldHdvcmtFcnJvck1heFJldHJpZXMgJiYgdGhpcy5fcmV0cnlFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lcih0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0KVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN5c3RlbUlkICYmIHJlc3BvbnNlLnN5c3RlbUlkICE9PSB0aGlzLmFjdGl2ZVN5c3RlbS5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRsZFN5c3RlbS5jaGFuZ2VTeXN0ZW0ocmVzcG9uc2Uuc3lzdGVtSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID0gcmVzcG9uc2UudHJhbnNsYXRpb25TdGF0dXNzO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlID0gcmVzcG9uc2Uuc291cmNlRG93bmxvYWRBdmFpbGFibGU7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUucHJvZ3Jlc3MgPSByZXNwb25zZS5wcm9ncmVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5hdmFpbGFibGVFeHRlbnNpb25zID0gcmVzcG9uc2UuZXh0ZW5zaW9ucztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VGaWxlTmFtZSA9IHJlc3BvbnNlLnNvdXJjZUZpbGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT0gVHJhbnNsYXRpb25TdGF0dXNzLkVSUk9SKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBJVGxkRXJyb3IgPSB7XHJcbiAgICAgICAgICAgICAgRXJyb3JDb2RlOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3Vic3RhdHVzID8/IEVycm9yQ29kZS5FX0ZBSUxFRF9JTl9UUkFOU0xBVElPTixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5maWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgICAgIC8vdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPT09IGZpbmlzaGVkU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgIC8vdHJhbnNsYXRpb25GaWxlLm5hbWUgPSByZXNwb25zZS5uYW1lO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuZG93bmxvYWRBdmFpbGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSB0aGlzLl9kZWZhdWx0U3RhdHVzQ2hlY2tUaW1lb3V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0cyAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhdHVzVGltZW91dHMgJiYgdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc10pIHtcclxuICAgICAgICAgICAgICB0aW1lb3V0ID0gdGhpcy5fc3RhdHVzVGltZW91dHNbdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzc107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25GaWxlUHJldmlld0xvYWQoZGF0YTogSVNvdXJjZUZpbGVQcmV2aWV3UmVzcG9uc2UsIHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmlzRmlsZVByZXZpZXdMb2FkZWQgPSBkYXRhLmlzRmlsZVByZXZpZXdMb2FkZWQ7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudG1wTmFtZSA9IGRhdGEudG1wTmFtZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VQcmV2aWV3SGFzSHRtbCA9IGRhdGEuc291cmNlUHJldmlld0hhc0h0bWw7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGRhdGEuc291cmNlUHJldmlldyk7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVByZXZpZXdQcm9ncmVzcyA9IGRhdGEucGVyY2VudERvbmU7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVkRG9jUHJldmlldyh0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIHNob3cgcHJldmlldyBmb3Igb3JpZ2luYWwgZXh0ZW5zaW9uIGlmIGV4aXN0cywgaWYgbm90LCB0aGVuIHByZXZpZXcgZm9yIGRvY3gsIGlmIG5vdCB0aGVuIHRyeSB3aXRoIG9yaWdpbmFsIGZpbGVuYW1lLlxyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucy5maW5kKGV4dCA9PiBleHQuZXh0ZW5zaW9uID09PSBGaWxlRXh0ZW5zaW9ucy5ET0NYKT8uZmlsZU5hbWVcclxuICAgICAgPz8gdHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWU7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3UGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgIHRyYW5zbGF0aW9uRG9jSWQ6IHRyYW5zbGF0aW9uRmlsZS5pZFxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS50cmFuc2xhdGVkRG9jdW1lbnRQcmV2aWV3KHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IHsgc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBzdHJpbmcsIHN0YXR1czogc3RyaW5nLCBwcmV2aWV3OiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5lcnJvcik7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnByZXZpZXcpIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHJlc3BvbnNlLnByZXZpZXcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGVkUHJldmlldyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlQXBpRXJyb3IodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBlcnJvcjogYW55KSB7XHJcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZVByZXZpZXdBbGVydHMoaXNQZGY6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGFsZXJ0UGFyYW1zID0ge1xyXG4gICAgICBhcHBOYW1lOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLmFwcE5hbWUsXHJcbiAgICAgIHByaWNpbmdVcmw6IHRoaXMuY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzKSB7XHJcbiAgICAgIGlmIChpc1BkZiAmJiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm9jclBhZ2VMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLlBERl9QQUdFX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0Q29uZmlnLnNob3dXb3JkTGltaXRXYXJuaW5nKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydHMud2FybmluZyhcIlRMRF9UUkFOU0xBVEUuRE9DX1dPUkRfQ05UX0xJTUlUX01TR1wiLCBhbGVydFBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25FcnJvcihlcnJvcjogYW55LCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICh0cmFuc2xhdGlvbkZpbGUpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmlzRG93bmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlcnJvckZvck1lc3NhZ2UgPSBlcnJvci5zdGF0dXMgPT09IDQwNCA/IHsgRXJyb3JDb2RlOiB0aGlzLm5vdEZvdW5kRXJyb3JDb2RlIH0gOiBlcnJvcjtcclxuICAgIHRoaXMub25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yRm9yTWVzc2FnZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVVcGxvYWRlZChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmaWxlSXggPSB0aGlzLmZpbGVzVXBsb2FkaW5nLmluZGV4T2YoZmlsZU5hbWUpO1xyXG4gICAgaWYgKGZpbGVJeCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcuc3BsaWNlKGZpbGVJeCwgMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fb25GaWxlc1VwbG9hZGVkLm5leHQobnVsbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQW55SW1hZ2VPclBkZigpIHtcclxuICAgIGxldCBhbnlJbWFnZSA9IGZhbHNlO1xyXG4gICAgbGV0IGFueVBkZiA9IGZhbHNlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYW5zbGF0aW9uRmlsZXMubGVuZ3RoICYmICEoYW55UGRmICYmIGFueUltYWdlKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXNbaV07XHJcbiAgICAgIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLklNQUdFKSB7XHJcbiAgICAgICAgYW55SW1hZ2UgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGZpbGUuZmlsZVR5cGUgPT09IEZpbGVDb252ZXJzaW9uVHlwZXMuUERGKSB7XHJcbiAgICAgICAgYW55UGRmID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gYW55SW1hZ2U7XHJcbiAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSBhbnlQZGY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyUGFyYW1zKCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGlvblN0YXJ0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHJhbnNsYXRpb25GaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5maWxlTmFtZXMgPSBbXTtcclxuICAgIHRoaXMudHJhbnNsYXRlZENvdW50ID0gMDtcclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcgPSBbXTtcclxuICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uRmlsZUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgaWYgKGVycm9yLmVycm9yPy5lcnJvcj8uY29kZSA9PSBFcnJvckNvZGUuRV80MjkwMDEpIHtcclxuICAgICAgdGhpcy5xdW90YVNlcnZpY2UuZ2V0UXVvdGFVc2FnZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbXNnID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoeyAuLi5lcnJvciwgRXJyb3JDb2RlOiBgRV8ke2Vycm9yLmVycm9yLmVycm9yLmNvZGV9YCB9LCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgICAgICBjb25zdCBmaWxlUXVvdGEgPSByZXMudXNhZ2UuZmluZCgocXVvdGEpID0+IFF1b3RhVHlwZS5UUkFOU0xBVElPTl9ET0NVTUVOVFMgPT09IHF1b3RhLnF1b3RhVHlwZSk7XHJcbiAgICAgICAgdGhpcy5hbGVydHMuZXJyb3IobXNnLmRlc2NyaXB0aW9uLCBtc2cudGl0bGUsIHsgcXVvdGFGaWxlTGltaXQ6IGZpbGVRdW90YS5xdW90YUxpbWl0LCBwcmljaW5nVXJsOiB0aGlzLmNvbmZpZy5zdXBzY3JpcHRpb25Db25maWcucHJpY2luZ1VybCB9KTtcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBcclxuXHJcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5hbGVydHMuZmluZEVycm9yVGl0bGVBbmRMb2NhbGl6YXRpb25LZXkoZXJyb3IsIHRoaXMuZXJyb3JUcmFuc2xhdGlvblN1YktleXMpO1xyXG4gICAgY29uc3Qgb3JpZ2luYWxGaWxlTmFtZSA9IHRyYW5zbGF0aW9uRmlsZS5vcmlnaW5hbEZpbGVOYW1lO1xyXG4gICAgY29uc3QgaW5saW5lTWVzc2FnZTogSW5saW5lTWVzc2FnZSA9IHtcclxuICAgICAgdGl0bGU6IG1lc3NhZ2UudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBtZXNzYWdlLmRlc2NyaXB0aW9uLFxyXG4gICAgICB0eXBlOiBJbmxpbmVNZXNzYWdlVHlwZS5FUlJPUixcclxuICAgICAgbG9jYWxpemF0aW9uUGFyYW1zOiB7IGZpbGVOYW1lOiBvcmlnaW5hbEZpbGVOYW1lLCAuLi50aGlzLmFsZXJ0cy5kZWZhdWx0UGFyYW1zIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlRmlsZVVwbG9hZEFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFsZXJ0cy5lcnJvcihtZXNzYWdlLmRlc2NyaXB0aW9uLCBtZXNzYWdlLnRpdGxlLCB7IGZpbGVOYW1lOiBvcmlnaW5hbEZpbGVOYW1lIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWVzc2FnZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGlubGluZU1lc3NhZ2UpO1xyXG4gICAgaWYgKCF0cmFuc2xhdGlvbkZpbGUubWVzc2FnZXMuc29tZShtc2cgPT4gSlNPTi5zdHJpbmdpZnkobXNnKSA9PT0gbWVzc2FnZVN0cmluZykpIHtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLm1lc3NhZ2VzLnB1c2goaW5saW5lTWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
413
|
+
}], ctorParameters: () => [{ type: i1.FileApiService }, { type: i2.AlertService }, { type: i3.DomSanitizer }, { type: i4.TldTranslateConfigService }, { type: i4.TldTranslateSystemManagementService }, { type: i5.QuotaService }] });
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtZG9jdW1lbnQvc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBa0MsaUJBQWlCLEVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuTCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBYyxPQUFPLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUc1RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBS2xFLE1BQU0sT0FBTyx1QkFBdUI7SUF1Q2Y7SUFDQTtJQUNUO0lBQ0E7SUFDUztJQUNBO0lBMUNuQixrQkFBa0IsQ0FBVTtJQUM1QiwrR0FBK0c7SUFDL0csSUFBSSxlQUFlLEtBQWMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUMxRSxnQkFBZ0IsR0FBdUIsRUFBRSxDQUFDO0lBQzFD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LEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDakYsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7dUdBdGJVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBBY3RpdmVEYXRhLCBBbGVydFNlcnZpY2UsIENvbnZlcnNpb25IZWxwZXIsIEZpbGVFeHRlbnNpb25IZWxwZXIsIEZpbGVFeHRlbnNpb25zLCBGaWxlVXBsb2FkRXJyb3IsIElubGluZU1lc3NhZ2UsIElubGluZU1lc3NhZ2VUeXBlLCBTeXN0ZW0gfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YsIHRocm93RXJyb3IsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1lcmdlTWFwLCByZXRyeVdoZW4gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElEb3dubG9hZEZpbGVQYXJhbXMsIElGaWxlTWV0YSwgSUdldEZpbGVTdGF0dXNQYXJhbXMsIElHZXRGaWxlVHJhbnNsYXRpb25TdGF0dXNSZXNwb25zZSwgSVJlbW92ZUZpbGVQYXJhbXMsIElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCBJU3RhcnRGaWxlVHJhbnNsYXRpb25QYXJhbXMsIElUbGRFcnJvciwgSVRyYW5zbGF0ZWREb2N1bWVudFByZXZpZXdQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TdGF0dXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmlsZUNvbnZlcnNpb25UeXBlcyB9IGZyb20gJy4uL21vZGVscy9maWxlLWNvbnZlcnNpb24tdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRpb25GaWxlIH0gZnJvbSAnLi4vbW9kZWxzL3RyYW5zbGF0ZS1maWxlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS9maWxlLWFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVvdGFTZXJ2aWNlLCBRdW90YVR5cGUgfSBmcm9tICdAdGlsZGUtbmxwL25neC1zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSB7XHJcblxyXG4gIHRyYW5zbGF0aW9uU3RhcnRlZDogYm9vbGVhbjtcclxuICAvKiogVmFsdWUgdG8gYmUgc2V0IHRvIHRydWUgd2hpbGUgbG9hZGluZyBzb3VyY2UgcHJldmlldy4gQXQgdGhhdCB0aW1lLCB0cmFuc2xhdGUgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZC4gKi9cclxuICBnZXQgaXNVcGxvYWRpbmdGaWxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5maWxlc1VwbG9hZGluZy5sZW5ndGggPiAwOyB9O1xyXG4gIHRyYW5zbGF0aW9uRmlsZXM6IElUcmFuc2xhdGlvbkZpbGVbXSA9IFtdO1xyXG4gIGZpbGVOYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBmaWxlc0FkZGVkOiBudW1iZXI7XHJcbiAgYW55UGRmRmlsZUxvYWRlZDogYm9vbGVhbjtcclxuICBhbnlJbWFnZUZpbGVMb2FkZWQ6IGJvb2xlYW47XHJcbiAgLy9mb3IgbXVsdGlwbGUgZmlsZSBjb21wb25lbnRcclxuICB0cmFuc2xhdGVkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgbXVsdGlwbGVGaWxlVXBsb2FkQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBkaXNhYmxlVHJhbnNsYXRlQnV0dG9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25TdGFydGVkIHx8IHRoaXMuaXNVcGxvYWRpbmdGaWxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25GaWxlc1VwbG9hZGVkID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIHByaXZhdGUgYWN0aXZlU3lzdGVtOiBTeXN0ZW07XHJcbiAgLy8gVE9ETy4gQ29uZmlndXJhYmxlP1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRTdGF0dXNDaGVja1RpbWVvdXQgPSAxMDAwO1xyXG4gIC8vIDAgaXMgbmV0d29yayBlcnJvciwgc2hvdWxkIHRyeSBhZ2FpblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JldHJ5RXJyb3JDb2RlcyA9IFswXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrRXJyb3JNYXhSZXRyaWVzID0gMjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0dXNUaW1lb3V0cyA9IHt9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ2xlYXIgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkSW1hZ2VFeHRlbnNpb25zID0gW1wicG5nXCIsIFwianBnXCIsIFwianBlZ1wiLCBcImJtcFwiXTtcclxuICBwcml2YXRlIGZpbGVzVXBsb2FkaW5nOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHByaXZhdGUgbm90Rm91bmRFcnJvckNvZGUgPSBcIkVfNDA0XCI7XHJcbiAgcHJpdmF0ZSBub3RGb3VuZFJlbW92ZUVycm9yQ29kZSA9IFwiRV80MDRfUkVNT1ZFXCI7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JUcmFuc2xhdGlvblN1YktleXMgPSBbXHJcbiAgICAnRklMRV9UUkFOU0xBVElPTl9TVUJTVEFUVVMnLFxyXG4gICAgJ0ZJTEVfVVBMT0FEJyxcclxuICAgICdGSUxFX1RSQU5TTEFUSU9OX0xJTUlUUydcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZUFwaTogRmlsZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0czogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgY29uZmlnOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0bGRTeXN0ZW06IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdW90YVNlcnZpY2U6IFF1b3RhU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLkVYVFJBQ1RJTkddID0gMTAwMDtcclxuICAgIHRoaXMuX3N0YXR1c1RpbWVvdXRzW1RyYW5zbGF0aW9uU3RhdHVzcy5FWFRSQUNUSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuSU5JVElBTElaSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuUVVFVUlOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLlNBVklOR10gPSAxMDAwO1xyXG4gICAgdGhpcy5fc3RhdHVzVGltZW91dHNbVHJhbnNsYXRpb25TdGF0dXNzLlRSQU5TTEFUSU5HXSA9IDEwMDA7XHJcbiAgICB0aGlzLl9zdGF0dXNUaW1lb3V0c1tUcmFuc2xhdGlvblN0YXR1c3MuV0FJVElOR10gPSAxMDAwMDtcclxuICB9XHJcblxyXG4gIC8vIGNsZWFycyBhbGwgbG9hZGVkIGRhdGFcclxuICBjbGVhcigpIHtcclxuICAgIGNvbnN0IGZpbGVBcnIgPSB0aGlzLnRyYW5zbGF0aW9uRmlsZXM7XHJcbiAgICBmaWxlQXJyLmZvckVhY2goKGZpbGUpID0+IHtcclxuICAgICAgZmlsZS50cmFuc2xhdGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbW92ZShmaWxlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2xlYXJQYXJhbXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkNsZWFyLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaWxlc1VwbG9hZGVkKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb25GaWxlc1VwbG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIC8vIGZpbGUudHJhbnNsYXRpbmcgbmVlZHMgdG8gYmUgc2V0LCBzbyBubyBvdGhlciBnZXQgc3RhdHVzIHJlcXVlc3RzIGFyZSBzZW50IHRvIHNlcnZlci5cclxuICAgIGZpbGUudHJhbnNsYXRpbmcgPSBmYWxzZTtcclxuICAgIGNvbnN0IGl4ID0gdGhpcy50cmFuc2xhdGlvbkZpbGVzLmluZGV4T2YoZmlsZSk7XHJcbiAgICBpZiAoaXggPCAwKSB7XHJcbiAgICAgIHRocm93IFwiQ2FuJ3QgcmVtb3ZlIGZpbGVcIjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJhbXM6IElSZW1vdmVGaWxlUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiBmaWxlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZmlsZUFwaS5yZW1vdmUocGFyYW1zKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0cy51bmhhbmRlbGVkRXJyb3IoeyBFcnJvckNvZGU6IHRoaXMubm90Rm91bmRSZW1vdmVFcnJvckNvZGUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZigpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuc3BsaWNlKGl4LCAxKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLnNwbGljZShpeCwgMSk7XHJcblxyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRpb25GaWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5oYXNBbnlJbWFnZU9yUGRmKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGRvd25sb2FkKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZmlsZU1ldGE6IElGaWxlTWV0YSkge1xyXG4gICAgaWYgKHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuaXNEb3dubG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkb3dubG9hZFBhcmFtczogSURvd25sb2FkRmlsZVBhcmFtcyA9IHtcclxuICAgICAgaWQ6IHRyYW5zbGF0aW9uRmlsZS5pZCxcclxuICAgICAgZmlsZU1ldGE6IGZpbGVNZXRhXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWxlQXBpLmRvd25sb2FkKGRvd25sb2FkUGFyYW1zKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHNhdmVBcyhyZXNwb25zZSwgZmlsZU1ldGEgPyBmaWxlTWV0YS5maWxlTmFtZSA6IHRyYW5zbGF0aW9uRmlsZS5vcmlnaW5hbEZpbGVOYW1lKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLm9uRXJyb3IoZXJyb3IsIHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRGaWxlUHJldmlldyhmaWxlOiBGaWxlKTogSVRyYW5zbGF0aW9uRmlsZSB7XHJcbiAgICBjb25zdCBmaWxlc0FsbG93ZWQgPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcblxyXG4gICAgaWYgKHRoaXMudHJhbnNsYXRpb25GaWxlcy5sZW5ndGggPj0gZmlsZXNBbGxvd2VkKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IFwiRVJST1JTLlwiICsgKGZpbGVzQWxsb3dlZCA+IDEgPyBcIk1BWF9OVU1CRVJfT0ZfRklMRVNcIiA6IFwiSU5DUkVBU0VfTUFYX05VTUJFUl9PRl9GSUxFU1wiKTtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IoZXJyb3JDb2RlLCBudWxsLCB7IGxpbms6IHRoaXMuY29uZmlnLmNvcmVDb25maWcucmVnaXN0ZXJMaW5rLCBsaW1pdDogZmlsZXNBbGxvd2VkIH0pO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWxlTmFtZXMuaW5jbHVkZXMoZmlsZU5hbWUpKSB7XHJcbiAgICAgIHRoaXMuYWxlcnRzLmVycm9yKFwiRVJST1JTLkZJTEVfQUxSRUFEWV9BRERFRFwiLCBudWxsLCB7IGZpbGVOYW1lOiBmaWxlLm5hbWUgfSk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZXNVcGxvYWRpbmcucHVzaChmaWxlTmFtZSk7XHJcbiAgICBjb25zdCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUgPSB7XHJcbiAgICAgIG9yaWdpbmFsRmlsZU5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAvLyBuYW1lOiBmaWxlTmFtZSxcclxuICAgICAgb3JpZ2luYWxFeHRlbnNpb246IEZpbGVFeHRlbnNpb25IZWxwZXIuZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZSksXHJcbiAgICAgIHRyYW5zbGF0aW9uU3RhdHVzczogVHJhbnNsYXRpb25TdGF0dXNzLlVQTE9BRElORyxcclxuICAgICAgZmlsZSxcclxuICAgICAgbWVzc2FnZXM6IFtdXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGlvbkZpbGVzLnB1c2godHJhbnNsYXRpb25GaWxlKTtcclxuICAgIHRoaXMuZmlsZU5hbWVzLnB1c2goZmlsZU5hbWUpO1xyXG4gICAgY29uc3QgaXNJbWFnZSA9IHRoaXMuX3N1cHBvcnRlZEltYWdlRXh0ZW5zaW9ucy5pbmNsdWRlcyhGaWxlRXh0ZW5zaW9uSGVscGVyLmdldEZpbGVFeHRlbnNpb24odHJhbnNsYXRpb25GaWxlLm9yaWdpbmFsRmlsZU5hbWUpKTtcclxuICAgIGlmIChpc0ltYWdlKSB7XHJcbiAgICAgIHRoaXMuYW55SW1hZ2VGaWxlTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLmZpbGVUeXBlID0gRmlsZUNvbnZlcnNpb25UeXBlcy5JTUFHRTtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzUGRmID0gXCJwZGZcIiA9PT0gRmlsZUV4dGVuc2lvbkhlbHBlci5nZXRGaWxlRXh0ZW5zaW9uKHRyYW5zbGF0aW9uRmlsZS5vcmlnaW5hbEZpbGVOYW1lKTtcclxuICAgIGlmIChpc1BkZikge1xyXG4gICAgICB0aGlzLmFueVBkZkZpbGVMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuZmlsZVR5cGUgPSBGaWxlQ29udmVyc2lvblR5cGVzLlBERjtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsZUFwaS5zb3VyY2VGaWxlUHJldmlldyh0cmFuc2xhdGlvbkZpbGUpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICBpZiAocmVzcC5pc0ZpbGVQcmV2aWV3TG9hZGVkKSB7XHJcbiAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IFRyYW5zbGF0aW9uU3RhdHVzcy5VUExPQURFRDtcclxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRlZChmaWxlTmFtZSk7XHJcbiAgICAgICAgdGhpcy5maWxlUHJldmlld0FsZXJ0cyhpc1BkZik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkZpbGVQcmV2aWV3TG9hZChyZXNwLCB0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgIHRoaXMuYWxlcnRzLnVuaGFuZGVsZWRFcnJvcihlcnJvcik7XHJcbiAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJhbnNsYXRpb25GaWxlO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNsYXRlQnV0dG9uQ2xpY2soYWN0aXZlOiBBY3RpdmVEYXRhKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uU3RhcnRlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICB0aGlzLnN0YXJ0RmlsZVRyYW5zbGF0aW9uKGFjdGl2ZSwgZmlsZSk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc3RhcnRGaWxlVHJhbnNsYXRpb24oYWN0aXZlU3lzdGVtOiBBY3RpdmVEYXRhLCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIGlmICghdGhpcy5jYW5TdGFydFRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uRmlsZSkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBzdGFydCBmaWxlIHRyYW5zbGF0aW9uIVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmVTeXN0ZW0gPSB0aGlzLnRsZFN5c3RlbS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXJ0ZWQgPSB0cnVlO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW5nID0gdHJ1ZTtcclxuICAgIC8vIHF1aXRlIHdlaXJkLiBSZXNwb25zZSBjYW4gYmUgc3RydWN0dXJlIHdpdGggc3VjY2VzcyBhbmQgZXJyb3IgcGFyYW1zIGFuZCBpdCBjYW4gYWxzbyBiZSBwbGFpbiBzdHJpbmcgaW4gc3VjY2Vzcy5cclxuICAgIGNvbnN0IHBhcmFtczogSVN0YXJ0RmlsZVRyYW5zbGF0aW9uUGFyYW1zID0ge1xyXG4gICAgICBmaWxlOiB0cmFuc2xhdGlvbkZpbGUsXHJcbiAgICAgIHN5c3RlbTogYWN0aXZlU3lzdGVtLnN5c3RlbVxyXG4gICAgfTtcclxuICAgIHRoaXMuZmlsZUFwaS5zdGFydFRyYW5zbGF0aW9uKHBhcmFtcykucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmZpbGVBcGlFcnJvcih0cmFuc2xhdGlvbkZpbGUsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgLy8gdGhyb3cgZXJyb3I7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgocmVzcG9uc2U6IHN0cmluZykgPT4ge1xyXG4gICAgICAvLyBzb21ldGhpbmcgZ29uZSB3cm9uZ1xyXG4gICAgICBpZiAoIXJlc3BvbnNlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0cmFuc2xhdGlvbkZpbGUuaWQgPSByZXNwb25zZTtcclxuICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhcnRlZE9uU2VydmVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBmaWxlVXBsb2FkRXJyb3IoZXJyb3I6IEZpbGVVcGxvYWRFcnJvcikge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBmaWxlTmFtZTogZXJyb3IuZmlsZU5hbWUsXHJcbiAgICAgIG1heFNpemVNQjogQ29udmVyc2lvbkhlbHBlci5ieXRlc1RvTWIodGhpcy5jb25maWcuZmlsZUNvbmZpZy5tYXhTaXplKSxcclxuICAgICAgZm9ybWF0czogdGhpcy5jb25maWcuZmlsZUNvbmZpZy5hbGxvd2VkRmlsZVR5cGVzLmpvaW4oXCIsIFwiKSxcclxuICAgICAgcmVnaXN0ZXJMaW5rOiB0aGlzLmNvbmZpZy5jb3JlQ29uZmlnLnJlZ2lzdGVyTGlua1xyXG4gICAgfVxyXG4gICAgdGhpcy5hbGVydHMuZXJyb3IoYEVSUk9SUy5GSUxFX1VQTE9BRC4ke2Vycm9yLmNvZGV9YCwgbnVsbCwgcGFyYW1zKTtcclxuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2tzIGFsbCBuZWNlc3NhcnkgcGFyYW1zIHRoYXQgYXJlIHJlc3BvbnNpYmxlIHdoZXRlciBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IG5ldyB0cmFuc2xhdGlvbi5cclxuICBwcml2YXRlIGNhblN0YXJ0VHJhbnNsYXRpb24odHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICByZXR1cm4gdHJhbnNsYXRpb25GaWxlLnRtcE5hbWUgJiYgIXRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUcmFuc2xhdGlvblByb2dyZXNzKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSkge1xyXG4gICAgY29uc3QgZmluaXNoZWRTdGF0dXMgPSBUcmFuc2xhdGlvblN0YXR1c3MuQ09NUExFVEVEO1xyXG4gICAgY29uc3QgcGFyYW1zOiBJR2V0RmlsZVN0YXR1c1BhcmFtcyA9IHtcclxuICAgICAgZmlsZTogdHJhbnNsYXRpb25GaWxlLFxyXG4gICAgICBzcmNMYW5nOiB0aGlzLmFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSxcclxuICAgICAgdHJnTGFuZzogdGhpcy5hY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2VcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkuZ2V0U3RhdHVzKHBhcmFtcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgLy8gSWYgbmV0d29yayBlcnJvciwgY2hlY2sgYWdhaW4gYmVjYXVzZSBmaWxlIGhhcyBub3QgZmFpbGVkLlxyXG4gICAgICAgIC8vIHRoaXMgY29kZSBuZWVkcyB0byBiZSB0ZXN0ZWQsIGJlY2F1c2UgY2FudCByZXBlYXQgaXRcclxuICAgICAgICByZXRyeVdoZW4oKG9ic2VydmFibGVzKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZXMucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoKGVycm9yLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGkgPCB0aGlzLl9uZXR3b3JrRXJyb3JNYXhSZXRyaWVzICYmIHRoaXMuX3JldHJ5RXJyb3JDb2Rlcy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGltZXIodGhpcy5fZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBJR2V0RmlsZVRyYW5zbGF0aW9uU3RhdHVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zeXN0ZW1JZCAmJiByZXNwb25zZS5zeXN0ZW1JZCAhPT0gdGhpcy5hY3RpdmVTeXN0ZW0uaWQpIHtcclxuICAgICAgICAgICAgdGhpcy50bGRTeXN0ZW0uY2hhbmdlU3lzdGVtKHJlc3BvbnNlLnN5c3RlbUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlU3lzdGVtID0gdGhpcy50bGRTeXN0ZW0uZ2V0QWN0aXZlU3lzdGVtT2JqKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyA9IHJlc3BvbnNlLnRyYW5zbGF0aW9uU3RhdHVzcztcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS5zb3VyY2VEb3dubG9hZEF2YWlsYWJsZSA9IHJlc3BvbnNlLnNvdXJjZURvd25sb2FkQXZhaWxhYmxlO1xyXG4gICAgICAgICAgdHJhbnNsYXRpb25GaWxlLnByb2dyZXNzID0gcmVzcG9uc2UucHJvZ3Jlc3M7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHJlc3BvbnNlLmV4dGVuc2lvbnM7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlRmlsZU5hbWUgPSByZXNwb25zZS5zb3VyY2VGaWxlTmFtZTtcclxuICAgICAgICAgIGlmICh0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID09IFRyYW5zbGF0aW9uU3RhdHVzcy5FUlJPUikge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJvcjogSVRsZEVycm9yID0ge1xyXG4gICAgICAgICAgICAgIEVycm9yQ29kZTpcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnN1YnN0YXR1cyA/PyBFcnJvckNvZGUuRV9GQUlMRURfSU5fVFJBTlNMQVRJT04sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZSwgZXJyb3IpO1xyXG4gICAgICAgICAgICAvL3Rocm93IGVycm9yO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzID09PSBmaW5pc2hlZFN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZWRDb3VudCArPSAxO1xyXG4gICAgICAgICAgICAvL3RyYW5zbGF0aW9uRmlsZS5uYW1lID0gcmVzcG9uc2UubmFtZTtcclxuICAgICAgICAgICAgdHJhbnNsYXRpb25GaWxlLmRvd25sb2FkQXZhaWxhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZWREb2NQcmV2aWV3KHRyYW5zbGF0aW9uRmlsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCB0aW1lb3V0ID0gdGhpcy5fZGVmYXVsdFN0YXR1c0NoZWNrVGltZW91dDtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHMgJiYgdGhpcy5jb25maWcuZmlsZUNvbmZpZy5maWxlRG93bmxvYWRUaW1lb3V0c1t0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpb25TdGF0dXNzXSkge1xyXG4gICAgICAgICAgICAgIHRpbWVvdXQgPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmZpbGVEb3dubG9hZFRpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YXR1c1RpbWVvdXRzICYmIHRoaXMuX3N0YXR1c1RpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdKSB7XHJcbiAgICAgICAgICAgICAgdGltZW91dCA9IHRoaXMuX3N0YXR1c1RpbWVvdXRzW3RyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3NdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVHJhbnNsYXRpb25Qcm9ncmVzcyh0cmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgICAgICAgICB9LCB0aW1lb3V0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPSBUcmFuc2xhdGlvblN0YXR1c3MuRVJST1I7XHJcbiAgICAgICAgICB0aGlzLm9uVHJhbnNsYXRpb25GaWxlRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRmlsZVByZXZpZXdMb2FkKGRhdGE6IElTb3VyY2VGaWxlUHJldmlld1Jlc3BvbnNlLCB0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUpIHtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS5pc0ZpbGVQcmV2aWV3TG9hZGVkID0gZGF0YS5pc0ZpbGVQcmV2aWV3TG9hZGVkO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnRtcE5hbWUgPSBkYXRhLnRtcE5hbWU7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUuc291cmNlUHJldmlld0hhc0h0bWwgPSBkYXRhLnNvdXJjZVByZXZpZXdIYXNIdG1sO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLnNvdXJjZVByZXZpZXcgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkYXRhLnNvdXJjZVByZXZpZXcpO1xyXG4gICAgdHJhbnNsYXRpb25GaWxlLmZpbGVQcmV2aWV3UHJvZ3Jlc3MgPSBkYXRhLnBlcmNlbnREb25lO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlZERvY1ByZXZpZXcodHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICAvLyBzaG93IHByZXZpZXcgZm9yIG9yaWdpbmFsIGV4dGVuc2lvbiBpZiBleGlzdHMsIGlmIG5vdCwgdGhlbiBwcmV2aWV3IGZvciBkb2N4LCBpZiBub3QgdGhlbiB0cnkgd2l0aCBvcmlnaW5hbCBmaWxlbmFtZS5cclxuICAgIGNvbnN0IGZpbGVOYW1lID0gdHJhbnNsYXRpb25GaWxlLmF2YWlsYWJsZUV4dGVuc2lvbnMuZmluZChleHQgPT4gZXh0LmV4dGVuc2lvbiA9PT0gRmlsZUV4dGVuc2lvbnMuRE9DWCk/LmZpbGVOYW1lXHJcbiAgICAgID8/IHRyYW5zbGF0aW9uRmlsZS5vcmlnaW5hbEZpbGVOYW1lO1xyXG4gICAgY29uc3QgcGFyYW1zOiBJVHJhbnNsYXRlZERvY3VtZW50UHJldmlld1BhcmFtcyA9IHtcclxuICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICB0cmFuc2xhdGlvbkRvY0lkOiB0cmFuc2xhdGlvbkZpbGUuaWRcclxuICAgIH07XHJcbiAgICB0aGlzLmZpbGVBcGkudHJhbnNsYXRlZERvY3VtZW50UHJldmlldyhwYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiB7IHN1Y2Nlc3M6IGJvb2xlYW4sIGVycm9yPzogc3RyaW5nLCBzdGF0dXM6IHN0cmluZywgcHJldmlldzogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UuZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy5hbGVydHMudW5oYW5kZWxlZEVycm9yKHJlc3BvbnNlLmVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXNwb25zZS5wcmV2aWV3KSB7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRlZFByZXZpZXcgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChyZXNwb25zZS5wcmV2aWV3KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRlZFByZXZpZXcgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsZUFwaUVycm9yKHRyYW5zbGF0aW9uRmlsZTogSVRyYW5zbGF0aW9uRmlsZSwgZXJyb3I6IGFueSkge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICB0cmFuc2xhdGlvbkZpbGUudHJhbnNsYXRpbmcgPSBmYWxzZTtcclxuICAgIHRyYW5zbGF0aW9uRmlsZS50cmFuc2xhdGlvblN0YXR1c3MgPSBUcmFuc2xhdGlvblN0YXR1c3MuRVJST1I7XHJcbiAgICB0aGlzLm9uVHJhbnNsYXRpb25GaWxlRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbGVQcmV2aWV3QWxlcnRzKGlzUGRmOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBhbGVydFBhcmFtcyA9IHtcclxuICAgICAgYXBwTmFtZTogdGhpcy5jb25maWcuY29yZUNvbmZpZy5hcHBOYW1lLFxyXG4gICAgICBwcmljaW5nVXJsOiB0aGlzLmNvbmZpZy5zdXBzY3JpcHRpb25Db25maWcucHJpY2luZ1VybFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5maWxlQ29uZmlnLnNob3dUcmFuc2xhdGlvbkxpbWl0cykge1xyXG4gICAgICBpZiAoaXNQZGYgJiYgdGhpcy5jb25maWcuZmlsZUNvbmZpZy5vY3JQYWdlTGltaXQpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0cy53YXJuaW5nKFwiVExEX1RSQU5TTEFURS5QREZfUEFHRV9MSU1JVF9NU0dcIiwgYWxlcnRQYXJhbXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWcudGV4dENvbmZpZy5zaG93V29yZExpbWl0V2FybmluZykge1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLndhcm5pbmcoXCJUTERfVFJBTlNMQVRFLkRPQ19XT1JEX0NOVF9MSU1JVF9NU0dcIiwgYWxlcnRQYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRXJyb3IoZXJyb3I6IGFueSwgdHJhbnNsYXRpb25GaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBpZiAodHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5pc0Rvd25sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXJyb3JGb3JNZXNzYWdlID0gZXJyb3Iuc3RhdHVzID09PSA0MDQgPyB7IEVycm9yQ29kZTogdGhpcy5ub3RGb3VuZEVycm9yQ29kZSB9IDogZXJyb3I7XHJcbiAgICB0aGlzLm9uVHJhbnNsYXRpb25GaWxlRXJyb3IodHJhbnNsYXRpb25GaWxlLCBlcnJvckZvck1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWxlVXBsb2FkZWQoZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgY29uc3QgZmlsZUl4ID0gdGhpcy5maWxlc1VwbG9hZGluZy5pbmRleE9mKGZpbGVOYW1lKTtcclxuICAgIGlmIChmaWxlSXggPj0gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzVXBsb2FkaW5nLnNwbGljZShmaWxlSXgsIDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsZXNVcGxvYWRpbmcubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuX29uRmlsZXNVcGxvYWRlZC5uZXh0KG51bGwpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FueUltYWdlT3JQZGYoKSB7XHJcbiAgICBsZXQgYW55SW1hZ2UgPSBmYWxzZTtcclxuICAgIGxldCBhbnlQZGYgPSBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCAmJiAhKGFueVBkZiAmJiBhbnlJbWFnZSk7IGkrKykge1xyXG4gICAgICBjb25zdCBmaWxlID0gdGhpcy50cmFuc2xhdGlvbkZpbGVzW2ldO1xyXG4gICAgICBpZiAoZmlsZS5maWxlVHlwZSA9PT0gRmlsZUNvbnZlcnNpb25UeXBlcy5JTUFHRSkge1xyXG4gICAgICAgIGFueUltYWdlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChmaWxlLmZpbGVUeXBlID09PSBGaWxlQ29udmVyc2lvblR5cGVzLlBERikge1xyXG4gICAgICAgIGFueVBkZiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFueUltYWdlRmlsZUxvYWRlZCA9IGFueUltYWdlO1xyXG4gICAgdGhpcy5hbnlQZGZGaWxlTG9hZGVkID0gYW55UGRmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclBhcmFtcygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb25TdGFydGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuYW55UGRmRmlsZUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hbnlJbWFnZUZpbGVMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZU5hbWVzID0gW107XHJcbiAgICB0aGlzLnRyYW5zbGF0ZWRDb3VudCA9IDA7XHJcbiAgICB0aGlzLmZpbGVzVXBsb2FkaW5nID0gW107XHJcbiAgICB0aGlzLl9vbkNsZWFyLm5leHQobnVsbClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25UcmFuc2xhdGlvbkZpbGVFcnJvcih0cmFuc2xhdGlvbkZpbGU6IElUcmFuc2xhdGlvbkZpbGUsIGVycm9yOiBhbnkpIHtcclxuICAgIGlmIChlcnJvci5lcnJvcj8uZXJyb3I/LmNvZGUgPT0gRXJyb3JDb2RlLkVfNDI5MDAxKSB7XHJcbiAgICAgIHRoaXMucXVvdGFTZXJ2aWNlLmdldFF1b3RhVXNhZ2UoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IHRoaXMuYWxlcnRzLmZpbmRFcnJvclRpdGxlQW5kTG9jYWxpemF0aW9uS2V5KHsgLi4uZXJyb3IsIEVycm9yQ29kZTogYEVfJHtlcnJvci5lcnJvci5lcnJvci5jb2RlfWAgfSwgdGhpcy5lcnJvclRyYW5zbGF0aW9uU3ViS2V5cyk7XHJcbiAgICAgICAgY29uc3QgZmlsZVF1b3RhID0gcmVzLnVzYWdlLmZpbmQoKHF1b3RhKSA9PiBRdW90YVR5cGUuVFJBTlNMQVRJT05fRE9DVU1FTlRTID09PSBxdW90YS5xdW90YVR5cGUpO1xyXG4gICAgICAgIHRoaXMuYWxlcnRzLmVycm9yKG1zZy5kZXNjcmlwdGlvbiwgbXNnLnRpdGxlLCB7IHF1b3RhRmlsZUxpbWl0OiBmaWxlUXVvdGEucXVvdGFMaW1pdCwgcHJpY2luZ1VybDogdGhpcy5jb25maWcuc3Vwc2NyaXB0aW9uQ29uZmlnLnByaWNpbmdVcmwgfSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gXHJcblxyXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuYWxlcnRzLmZpbmRFcnJvclRpdGxlQW5kTG9jYWxpemF0aW9uS2V5KGVycm9yLCB0aGlzLmVycm9yVHJhbnNsYXRpb25TdWJLZXlzKTtcclxuICAgIGNvbnN0IG9yaWdpbmFsRmlsZU5hbWUgPSB0cmFuc2xhdGlvbkZpbGUub3JpZ2luYWxGaWxlTmFtZTtcclxuICAgIGNvbnN0IGlubGluZU1lc3NhZ2U6IElubGluZU1lc3NhZ2UgPSB7XHJcbiAgICAgIHRpdGxlOiBtZXNzYWdlLnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbWVzc2FnZS5kZXNjcmlwdGlvbixcclxuICAgICAgdHlwZTogSW5saW5lTWVzc2FnZVR5cGUuRVJST1IsXHJcbiAgICAgIGxvY2FsaXphdGlvblBhcmFtczogeyBmaWxlTmFtZTogb3JpZ2luYWxGaWxlTmFtZSwgLi4udGhpcy5hbGVydHMuZGVmYXVsdFBhcmFtcyB9XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghdGhpcy5tdWx0aXBsZUZpbGVVcGxvYWRBY3RpdmUpIHtcclxuICAgICAgdGhpcy5hbGVydHMuZXJyb3IobWVzc2FnZS5kZXNjcmlwdGlvbiwgbWVzc2FnZS50aXRsZSwgeyBmaWxlTmFtZTogb3JpZ2luYWxGaWxlTmFtZSB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lc3NhZ2VTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShpbmxpbmVNZXNzYWdlKTtcclxuICAgIGlmICghdHJhbnNsYXRpb25GaWxlLm1lc3NhZ2VzLnNvbWUobXNnID0+IEpTT04uc3RyaW5naWZ5KG1zZykgPT09IG1lc3NhZ2VTdHJpbmcpKSB7XHJcbiAgICAgIHRyYW5zbGF0aW9uRmlsZS5tZXNzYWdlcy5wdXNoKGlubGluZU1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -114,12 +114,12 @@ export class TldTranslateFileMultipleComponent extends TldFileTranslateBaseCompo
|
|
|
114
114
|
this.showVendorNotification = this.config.fileConfig.progressIndicatorTitleVisibleForVendors.includes(vendor);
|
|
115
115
|
}
|
|
116
116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileMultipleComponent, deps: [{ token: i1.TldTranslateFileService }, { token: i2.TldTranslateConfigService }, { token: i3.MatDialog }, { token: i4.TldTranslateButtonService }, { token: i2.TldTranslateSystemManagementService }, { token: i5.AlertService }], target: i0.ɵɵFactoryTarget.Component });
|
|
117
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: TldTranslateFileMultipleComponent, selector: "tld-translate-file-multiple", inputs: { translationFiles: "translationFiles" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <tld-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (errorEvent)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </tld-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep tld-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { kind: "directive", type: i8.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: i8.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: i8.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: i8.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: i9.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: "component", type: i5.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i5.InlineMessageComponent, selector: "lib-inline-message", inputs: ["iconName", "message"] }, { kind: "component", type: i10.VendorDisclaimerComponent, selector: "vendor-disclaimer" }, { kind: "component", type: i5.FileUploadComponent, selector: "tld-file-upload", inputs: ["accept", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "uploadIconName", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: ["file", "disabled", "sourceDownload"], outputs: ["tldClick"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
|
|
117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: TldTranslateFileMultipleComponent, selector: "tld-translate-file-multiple", inputs: { translationFiles: "translationFiles" }, usesInheritance: true, ngImport: i0, template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <lib-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (errorEvent)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </lib-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.TldTranslateButtonComponent, selector: "tld-translate-button", inputs: ["disabled", "enablePulseAnimation"], outputs: ["clicked"] }, { kind: "directive", type: i8.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: i8.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: i8.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: i8.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: i9.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: "component", type: i5.CloseButtonComponent, selector: "tld-close-button", inputs: ["ariaCode", "disabled", "tooltip"], outputs: ["tldClick"] }, { kind: "component", type: i5.InlineMessageComponent, selector: "lib-inline-message", inputs: ["iconName", "message"] }, { kind: "component", type: i10.VendorDisclaimerComponent, selector: "vendor-disclaimer" }, { kind: "component", type: i5.FileUploadComponent, selector: "lib-file-upload", inputs: ["accept", "useCompactUpload", "maxSize", "multiple", "filePreviewProgress", "allowEmpty", "disabled", "dragZoneLabel", "uploadIconName", "uploadButtonLabel", "openExtensionPopupLabel", "extendedAcceptList"], outputs: ["fileChange", "errorEvent"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i12.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i13.TldTranslateFileDownloadButtonComponent, selector: "tld-translate-file-download-button", inputs: ["file", "disabled", "sourceDownload"], outputs: ["tldClick"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
|
|
118
118
|
}
|
|
119
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: TldTranslateFileMultipleComponent, decorators: [{
|
|
120
120
|
type: Component,
|
|
121
|
-
args: [{ selector: 'tld-translate-file-multiple', template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <
|
|
121
|
+
args: [{ selector: 'tld-translate-file-multiple', template: "<div class=\"tld-translate-file-container\" [ngClass.xs]=\"'tld-multiple-mobile'\" fxLayout=\"column\" fxFlex\r\n fxLayoutAlign=\"start center\">\r\n <div class=\"cdk-visually-hidden\" aria-live=\"polite\">\r\n {{'MULTIPLE_FILES.SCREEN_READER_ANNOUNCEMENT' | translate: {translated:translatedFilesCount , total: fileCount} }}\r\n </div>\r\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" fxFlex class=\"multiple-files-body\">\r\n <div *ngFor=\"let file of translationFiles\" class=\"file-row\" [ngClass.gt-sm]=\"'extra-width'\" fxLayout=\"row\"\r\n fxLayoutAlign=\"center center\" fxLayoutAlign.xs=\"flex-start center\">\r\n <div fxLayout=\"column\" fxFlex>\r\n <div fxLayout=\"row\" fxLayoutAlign.xs=\"space-between center\" fxLayoutAlign=\"space-between center\">\r\n <div class=\"file-name\">\r\n {{file.originalFileName}}\r\n </div>\r\n <div fxLayout=\"row\" class=\"file-actions\">\r\n <tld-translate-file-download-button (tldClick)=\"download(file, $event)\" *ngIf=\"file.downloadAvailable\"\r\n [sourceDownload]=\"true\" [disabled]=\"file.isDownloading\" [file]=\"file\">\r\n </tld-translate-file-download-button>\r\n <tld-close-button [tooltip]=\"'FILE_UPLOAD.CLEAR'\" (tldClick)=\"remove(file)\"></tld-close-button>\r\n </div>\r\n </div>\r\n <mat-progress-bar *ngIf=\"file.translationStatuss===translatingStatuss\" color=\"accent\" mode=\"determinate\"\r\n [value]=\"file.progress\"></mat-progress-bar>\r\n <div class=\"progress-message text-s\"\r\n *ngIf=\"(file.translationStatuss !== errorTranslatingStatuss) && (file.translationStatuss !== completedTranslatingStatuss) && (file.translationStatuss !== uploadedTranslatingStatuss)\">\r\n {{'MULTIPLE_FILES.STATUSS_' + file.translationStatuss | translate: {percent: file.progress} }}\r\n </div>\r\n <ng-container *ngIf=\"file.messages.length>0\">\r\n <lib-inline-message *ngFor=\"let message of file.messages\" [message]=\"message\"></lib-inline-message>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <lib-file-upload *ngIf=\"!translationStarted\" fxFlex class=\"tld-append-files\" (fileChange)=\"fileChange($event)\"\r\n [accept]=\"allowedFileTypes\" [maxSize]=\"maxFileUploadSize\" [multiple]=\"multipleFiles\"\r\n [disabled]=\"disableAppendFiles\" (errorEvent)=\"fileUploadError($event)\" [extendedAcceptList]=\"extendedFileTypes\">\r\n {{'MULTIPLE_FILES.APPEND' | translate}} ({{fileCount}}/{{maxFileCount}})\r\n </lib-file-upload>\r\n </div>\r\n <ng-container *ngIf=\"sourceDownloadPDF\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.PDF_DISCLAIMER', dialogParams: pdfConversion, buttonText: 'MULTIPLE_FILES.PDF_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"sourceDownloadImage\">\r\n <ng-container\r\n *ngTemplateOutlet=\"conversionMessage; context: { messageKey:'MULTIPLE_FILES.IMAGE_DISCLAIMER', dialogParams: imageConversion, buttonText: 'MULTIPLE_FILES.IMAGE_DISCLAIMER_LINK'}\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"showVendorNotification\">\r\n <vendor-disclaimer></vendor-disclaimer>\r\n </ng-container>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayout.xs=\"column\" fxLayuotGap.xs=\"1rem\" class=\"button-container\">\r\n <tld-translate-button [disabled]=\"disableTranslateButton\" (clicked)=\"translateButtonClick()\"\r\n *ngIf=\"!translationStarted\"></tld-translate-button>\r\n <button (click)=\"clearAll()\" mat-stroked-button color=\"accent\"\r\n class=\"cancel-button border-accent\">{{'MULTIPLE_FILES.CLEAR_ALL' | translate}}</button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #conversionMessage let-messageKey=\"messageKey\" let-dialogParams=\"dialogParams\" let-buttonText=\"buttonText\">\r\n\r\n <p class=\"conversion-disclaimer text-m\" [ngClass.gt-sm]=\"'conversion-info-margins-gt-sm'\">\r\n <span class=\"material-icons\">\r\n info\r\n </span>\r\n <span>\r\n {{messageKey | translate }}\r\n </span>\r\n <button class=\"conversion-message-action text-m-semi-bold\" (click)=\"conversionDialog(dialogParams)\">{{buttonText |\r\n translate}}</button>\r\n</ng-template>\r\n", styles: [".semi-bold,.text-s-semi-bold,.text-m-semi-bold,.text-l-semi-bold,.text-xl-semi-bold,.text-2-xl,.text-3-xl,.text-4-xl{font-weight:600}@media (min-width: 600px){.text-4-xl{font-size:2.75rem;line-height:3.375rem}}@media (min-width: 0) and (max-width: 599.9px){.text-4-xl{font-size:2rem;line-height:2.625rem}}.text-3-xl{font-size:2rem;line-height:2.625rem}.text-2-xl{font-size:1.5rem;line-height:2.125rem}.text-xl,.text-xl-semi-bold{font-size:1.25rem;line-height:2rem}.text-l,.cancel-button,.text-l-semi-bold{font-size:1rem;line-height:1.625rem}.text-m,.text-m-semi-bold{font-size:.875rem;line-height:1.4375rem}.text-s,.text-s-semi-bold{font-size:.75rem;line-height:1.25rem}.tld-translate-file-container{padding:3em;width:100%}.tld-translate-file-container .file-row{min-height:4rem;width:100%;padding:.5em 0;border-bottom:1px solid var(--base-70)}.tld-translate-file-container .file-row .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tld-translate-file-container .file-row lib-inline-message{margin-top:.5rem}.tld-translate-file-container .file-row .file-actions{margin-left:.5rem}.tld-append-files{font-size:1em;margin-top:1rem}:host ::ng-deep .tld-append-files .upload-button{justify-content:center!important;min-height:3.5rem!important}.conversion-disclaimer.conversion-info-margins-gt-sm{margin:.5em 20%}.conversion-disclaimer:not(.conversion-info-margins-gt-sm){text-align:center}tld-translate-button{margin:1em}.tld-multiple-mobile{padding:1rem}.tld-multiple-mobile tld-translate-button{margin:1rem 0 0;width:100%}.tld-multiple-mobile .file-row,.tld-multiple-mobile .multiple-files-body,.tld-multiple-mobile .cancel-button,.tld-multiple-mobile .button-container{width:100%}.multiple-files-body ::ng-deep lib-file-upload .file-upload .upload-button{text-align:center}.download-file{cursor:pointer}.material-icons{vertical-align:middle;color:var(--base-40)}.conversion-message-action{background:transparent;color:var(--accent);border:none;cursor:pointer}.extra-width{min-width:30rem}.progress-message{color:var(--base-40)}mat-progress-bar{margin:.375rem 0}.cancel-button{padding:.375rem 1.5rem}vendor-disclaimer{margin-bottom:1rem}\n"] }]
|
|
122
122
|
}], ctorParameters: () => [{ type: i1.TldTranslateFileService }, { type: i2.TldTranslateConfigService }, { type: i3.MatDialog }, { type: i4.TldTranslateButtonService }, { type: i2.TldTranslateSystemManagementService }, { type: i5.AlertService }], propDecorators: { translationFiles: [{
|
|
123
123
|
type: Input
|
|
124
124
|
}] } });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUvdGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUvdGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBaUMsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNdEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSw2QkFBNkI7SUFHN0Q7SUFDQTtJQUNBO0lBQ0E7SUFDRjtJQUNBO0lBTm5CLFlBQ3FCLFdBQW9DLEVBQ3BDLE1BQWlDLEVBQ2pDLE1BQWlCLEVBQ2pCLHNCQUFpRCxFQUNuRCx1QkFBNEQsRUFDNUQsWUFBMEI7UUFFM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFQaEIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUEyQjtRQUNuRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXFDO1FBQzVELGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRzdDLENBQUM7SUFDUSxnQkFBZ0IsQ0FBcUI7SUFFOUMsZ0JBQWdCLENBQVc7SUFDM0Isd0JBQXdCLENBQVc7SUFDbkMsaUJBQWlCLENBQVM7SUFDMUIsYUFBYSxDQUFVO0lBQ3ZCLGlCQUFpQixDQUFXO0lBQzVCLHNCQUFzQixDQUFVO0lBRXhCLDRCQUE0QixHQUFHLEtBQUssQ0FBQztJQUU3QyxJQUFJLHVCQUF1QjtRQUN6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGNBQWMsS0FBSywyQkFBMkIsQ0FBQztRQUUxSCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDckgsQ0FBQztRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDO0lBQzFJLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDakYsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRWxILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBc0IsRUFBRSxRQUFvQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEksQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUdELE1BQU0sQ0FBQyxJQUFzQjtRQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxLQUF3QixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELDJIQUEySDtJQUMzSCxvQkFBb0I7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztRQUN6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsdUNBQXVDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hILENBQUM7dUdBOUdVLGlDQUFpQzsyRkFBakMsaUNBQWlDLDRJQ2xCOUMsbzBJQXlFQTs7MkZEdkRhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSw2QkFBNkI7aVJBZ0I5QixnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBGaWxlVXBsb2FkRXJyb3IsIE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vY29tcG9uZW50cy90cmFuc2xhdGUtYnV0dG9uL3RsZC10cmFuc2xhdGUtYnV0dG9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRmlsZU1ldGEgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGlvbkZpbGUgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlLWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RsZC10cmFuc2xhdGUtZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkRmlsZVRyYW5zbGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi90bGQtZmlsZS10cmFuc2xhdGUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscy9hdXRvLWxhbmd1YWdlLWRldGVjdGlvbi1rZXkuY29uc3QnO1xyXG5pbXBvcnQgeyBGaWxlQ2F0ZWdvcnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkvbW9kZWxzL2ZpbGUtY2F0ZWdvcnkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RsZC10cmFuc2xhdGUtZmlsZS1tdWx0aXBsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVGaWxlTXVsdGlwbGVDb21wb25lbnQgZXh0ZW5kcyBUbGRGaWxlVHJhbnNsYXRlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVTZXJ2aWNlOiBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlQnV0dG9uU2VydmljZTogVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtTWFuYWdlbWVudFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhbG9nLCBjb25maWcsIGZpbGVTZXJ2aWNlKTtcclxuICB9XHJcbiAgQElucHV0KCkgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdO1xyXG5cclxuICBhbGxvd2VkRmlsZVR5cGVzOiBzdHJpbmdbXTtcclxuICBhbGxvd2VkRmlsZVR5cGVzQXV0aFVzZXI6IHN0cmluZ1tdO1xyXG4gIG1heEZpbGVVcGxvYWRTaXplOiBudW1iZXI7XHJcbiAgbXVsdGlwbGVGaWxlczogYm9vbGVhbjtcclxuICBleHRlbmRlZEZpbGVUeXBlczogc3RyaW5nW107XHJcbiAgc2hvd1ZlbmRvck5vdGlmaWNhdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBpc1NlbGVjdExhbmd1YWdlV2FybmluZ0FkZGVkID0gZmFsc2U7XHJcblxyXG4gIGdldCBpc0F1dG9Tb3VyY2VMYW5nRW5hYmxlZCgpIHtcclxuICAgIGNvbnN0IGlzU291cmNlTGFuZ0F1dG8gPSB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLnNvdXJjZUxhbmd1YWdlID09PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcblxyXG4gICAgaWYgKGlzU291cmNlTGFuZ0F1dG8pIHtcclxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RMYW5ndWFnZVdhcm5pbmdBZGRlZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzU2VsZWN0TGFuZ3VhZ2VXYXJuaW5nQWRkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKCdGSUxFX1VQTE9BRC5TRUxFQ1RfTEFOR1VBR0VfV0FSTklORycsIG51bGwsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc1NlbGVjdExhbmd1YWdlV2FybmluZ0FkZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UoTm90aWZpY2F0aW9uTWVzc2FnZVR5cGUuV0FSTklORywgJ0ZJTEVfVVBMT0FELlNFTEVDVF9MQU5HVUFHRV9XQVJOSU5HJywgbnVsbCwgdHJ1ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNTb3VyY2VMYW5nQXV0bztcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc2xhdGlvblN0YXJ0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS50cmFuc2xhdGlvblN0YXJ0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZUFwcGVuZEZpbGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2U/LnRyYW5zbGF0aW9uU3RhcnRlZCB8fCB0aGlzLmZpbGVTZXJ2aWNlLnRyYW5zbGF0aW9uRmlsZXM/Lmxlbmd0aCA+PSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uY29yZUNvbmZpZz8uaXNBdXRoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyYW5zbGF0ZWRGaWxlc0NvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2U/LnRyYW5zbGF0ZWRDb3VudCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heEZpbGVDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbGVDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uRmlsZXM/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS5kaXNhYmxlVHJhbnNsYXRlQnV0dG9uIHx8IHRoaXMuaXNBdXRvU291cmNlTGFuZ0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuYWxsb3dlZEZpbGVUeXBlcztcclxuICAgIHRoaXMuZXh0ZW5kZWRGaWxlVHlwZXMgPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmV4dGVuZGVkRmlsZVR5cGVzO1xyXG4gICAgdGhpcy5tYXhGaWxlVXBsb2FkU2l6ZSA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubWF4U2l6ZTtcclxuICAgIHRoaXMubXVsdGlwbGVGaWxlcyA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQgPiAxO1xyXG5cclxuICAgIHRoaXMuZmlsZVNlcnZpY2Uub25GaWxlc1VwbG9hZGVkKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLnRyYW5zbGF0ZUJ1dHRvblNlcnZpY2UucHVsc2VCdXR0b24oKTsgfSlcclxuXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZChmaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YT86IElGaWxlTWV0YSkge1xyXG4gICAgaWYgKCFmaWxlTWV0YSkge1xyXG4gICAgICBmaWxlTWV0YSA9IGZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucz8uZmluZCgoZmlsZSkgPT4gZmlsZS5jYXRlZ29yeSA9PT0gRmlsZUNhdGVnb3J5LlRSQU5TTEFURUQpID8/IGZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucz8uWzBdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlU2VydmljZS5kb3dubG9hZChmaWxlLCBmaWxlTWV0YSk7XHJcbiAgfVxyXG5cclxuICBmaWxlQ2hhbmdlKGZpbGVzOiBGaWxlW10pIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5maWxlU2VydmljZS5sb2FkRmlsZVByZXZpZXcoZmlsZXNbaV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZShmaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlU2VydmljZS5yZW1vdmUoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWxlVXBsb2FkRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgdGhpcy5maWxlU2VydmljZS5maWxlVXBsb2FkRXJyb3IoZXJyb3IgYXMgRmlsZVVwbG9hZEVycm9yKTtcclxuICB9XHJcblxyXG4gIC8vIG5vIG5lZWQgdG8gaGFuZGxlIHRyYW5zbGF0aW9uLCBzaW5jZSBpdCBpcyBoYXBwZW5pbmcgaW4gdHJhbnNsYXRlIGJ1dHRvbiBjb21wb25lbnQsIGJ1dCB0aGlzIG1ldGhvZCBpcyBmb3IgY3VzdG9tIGFjdGlvblxyXG4gIHRyYW5zbGF0ZUJ1dHRvbkNsaWNrKCkge1xyXG4gICAgY29uc3QgdmVuZG9yID0gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5hY3RpdmVWZW5kb3I7XHJcbiAgICB0aGlzLnNob3dWZW5kb3JOb3RpZmljYXRpb24gPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVGl0bGVWaXNpYmxlRm9yVmVuZG9ycy5pbmNsdWRlcyh2ZW5kb3IpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGxkLXRyYW5zbGF0ZS1maWxlLWNvbnRhaW5lclwiIFtuZ0NsYXNzLnhzXT1cIid0bGQtbXVsdGlwbGUtbW9iaWxlJ1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4XHJcbiAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XHJcbiAgICB7eydNVUxUSVBMRV9GSUxFUy5TQ1JFRU5fUkVBREVSX0FOTk9VTkNFTUVOVCcgfCB0cmFuc2xhdGU6IHt0cmFuc2xhdGVkOnRyYW5zbGF0ZWRGaWxlc0NvdW50ICwgdG90YWw6IGZpbGVDb3VudH0gfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIiBmeEZsZXggY2xhc3M9XCJtdWx0aXBsZS1maWxlcy1ib2R5XCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHRyYW5zbGF0aW9uRmlsZXNcIiBjbGFzcz1cImZpbGUtcm93XCIgW25nQ2xhc3MuZ3Qtc21dPVwiJ2V4dHJhLXdpZHRoJ1wiIGZ4TGF5b3V0PVwicm93XCJcclxuICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeExheW91dEFsaWduLnhzPVwiZmxleC1zdGFydCBjZW50ZXJcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbi54cz1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1uYW1lXCI+XHJcbiAgICAgICAgICAgIHt7ZmlsZS5vcmlnaW5hbEZpbGVOYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwiZmlsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDx0bGQtdHJhbnNsYXRlLWZpbGUtZG93bmxvYWQtYnV0dG9uICh0bGRDbGljayk9XCJkb3dubG9hZChmaWxlLCAkZXZlbnQpXCIgKm5nSWY9XCJmaWxlLmRvd25sb2FkQXZhaWxhYmxlXCJcclxuICAgICAgICAgICAgICBbc291cmNlRG93bmxvYWRdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJmaWxlLmlzRG93bmxvYWRpbmdcIiBbZmlsZV09XCJmaWxlXCI+XHJcbiAgICAgICAgICAgIDwvdGxkLXRyYW5zbGF0ZS1maWxlLWRvd25sb2FkLWJ1dHRvbj5cclxuICAgICAgICAgICAgPHRsZC1jbG9zZS1idXR0b24gW3Rvb2x0aXBdPVwiJ0ZJTEVfVVBMT0FELkNMRUFSJ1wiICh0bGRDbGljayk9XCJyZW1vdmUoZmlsZSlcIj48L3RsZC1jbG9zZS1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImZpbGUudHJhbnNsYXRpb25TdGF0dXNzPT09dHJhbnNsYXRpbmdTdGF0dXNzXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLW1lc3NhZ2UgdGV4dC1zXCJcclxuICAgICAgICAgICpuZ0lmPVwiKGZpbGUudHJhbnNsYXRpb25TdGF0dXNzICE9PSBlcnJvclRyYW5zbGF0aW5nU3RhdHVzcykgJiYgKGZpbGUudHJhbnNsYXRpb25TdGF0dXNzICE9PSBjb21wbGV0ZWRUcmFuc2xhdGluZ1N0YXR1c3MpICYmIChmaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyAhPT0gdXBsb2FkZWRUcmFuc2xhdGluZ1N0YXR1c3MpXCI+XHJcbiAgICAgICAgICB7eydNVUxUSVBMRV9GSUxFUy5TVEFUVVNTXycgKyBmaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyB8IHRyYW5zbGF0ZToge3BlcmNlbnQ6IGZpbGUucHJvZ3Jlc3N9IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUubWVzc2FnZXMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgIDxsaWItaW5saW5lLW1lc3NhZ2UgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZmlsZS5tZXNzYWdlc1wiIFttZXNzYWdlXT1cIm1lc3NhZ2VcIj48L2xpYi1pbmxpbmUtbWVzc2FnZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dGxkLWZpbGUtdXBsb2FkICpuZ0lmPVwiIXRyYW5zbGF0aW9uU3RhcnRlZFwiIGZ4RmxleCBjbGFzcz1cInRsZC1hcHBlbmQtZmlsZXNcIiAoZmlsZUNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIiBbbWF4U2l6ZV09XCJtYXhGaWxlVXBsb2FkU2l6ZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZUZpbGVzXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBcHBlbmRGaWxlc1wiIChlcnJvckV2ZW50KT1cImZpbGVVcGxvYWRFcnJvcigkZXZlbnQpXCIgW2V4dGVuZGVkQWNjZXB0TGlzdF09XCJleHRlbmRlZEZpbGVUeXBlc1wiPlxyXG4gICAgICB7eydNVUxUSVBMRV9GSUxFUy5BUFBFTkQnIHwgdHJhbnNsYXRlfX0gKHt7ZmlsZUNvdW50fX0ve3ttYXhGaWxlQ291bnR9fSlcclxuICAgIDwvdGxkLWZpbGUtdXBsb2FkPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3VyY2VEb3dubG9hZFBERlwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnZlcnNpb25NZXNzYWdlOyBjb250ZXh0OiB7IG1lc3NhZ2VLZXk6J01VTFRJUExFX0ZJTEVTLlBERl9ESVNDTEFJTUVSJywgZGlhbG9nUGFyYW1zOiBwZGZDb252ZXJzaW9uLCBidXR0b25UZXh0OiAnTVVMVElQTEVfRklMRVMuUERGX0RJU0NMQUlNRVJfTElOSyd9XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvdXJjZURvd25sb2FkSW1hZ2VcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb252ZXJzaW9uTWVzc2FnZTsgY29udGV4dDogeyBtZXNzYWdlS2V5OidNVUxUSVBMRV9GSUxFUy5JTUFHRV9ESVNDTEFJTUVSJywgZGlhbG9nUGFyYW1zOiBpbWFnZUNvbnZlcnNpb24sIGJ1dHRvblRleHQ6ICdNVUxUSVBMRV9GSUxFUy5JTUFHRV9ESVNDTEFJTUVSX0xJTksnfVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VmVuZG9yTm90aWZpY2F0aW9uXCI+XHJcbiAgICA8dmVuZG9yLWRpc2NsYWltZXI+PC92ZW5kb3ItZGlzY2xhaW1lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeExheW91dC54cz1cImNvbHVtblwiIGZ4TGF5dW90R2FwLnhzPVwiMXJlbVwiIGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgPHRsZC10cmFuc2xhdGUtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlVHJhbnNsYXRlQnV0dG9uXCIgKGNsaWNrZWQpPVwidHJhbnNsYXRlQnV0dG9uQ2xpY2soKVwiXHJcbiAgICAgICpuZ0lmPVwiIXRyYW5zbGF0aW9uU3RhcnRlZFwiPjwvdGxkLXRyYW5zbGF0ZS1idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhckFsbCgpXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uIGJvcmRlci1hY2NlbnRcIj57eydNVUxUSVBMRV9GSUxFUy5DTEVBUl9BTEwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnZlcnNpb25NZXNzYWdlIGxldC1tZXNzYWdlS2V5PVwibWVzc2FnZUtleVwiIGxldC1kaWFsb2dQYXJhbXM9XCJkaWFsb2dQYXJhbXNcIiBsZXQtYnV0dG9uVGV4dD1cImJ1dHRvblRleHRcIj5cclxuXHJcbiAgPHAgY2xhc3M9XCJjb252ZXJzaW9uLWRpc2NsYWltZXIgdGV4dC1tXCIgW25nQ2xhc3MuZ3Qtc21dPVwiJ2NvbnZlcnNpb24taW5mby1tYXJnaW5zLWd0LXNtJ1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPlxyXG4gICAgICBpbmZvXHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3Bhbj5cclxuICAgICAge3ttZXNzYWdlS2V5IHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY29udmVyc2lvbi1tZXNzYWdlLWFjdGlvbiB0ZXh0LW0tc2VtaS1ib2xkXCIgKGNsaWNrKT1cImNvbnZlcnNpb25EaWFsb2coZGlhbG9nUGFyYW1zKVwiPnt7YnV0dG9uVGV4dCB8XHJcbiAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUvdGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1kb2N1bWVudC90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUvdGxkLXRyYW5zbGF0ZS1maWxlLW11bHRpcGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBaUMsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNdEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSw2QkFBNkI7SUFHN0Q7SUFDQTtJQUNBO0lBQ0E7SUFDRjtJQUNBO0lBTm5CLFlBQ3FCLFdBQW9DLEVBQ3BDLE1BQWlDLEVBQ2pDLE1BQWlCLEVBQ2pCLHNCQUFpRCxFQUNuRCx1QkFBNEQsRUFDNUQsWUFBMEI7UUFFM0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFQaEIsZ0JBQVcs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SUFDN0QsQ0FBQztJQUVELDJIQUEySDtJQUMzSCxvQkFBb0I7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztRQUN6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsdUNBQXVDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hILENBQUM7dUdBOUdVLGlDQUFpQzsyRkFBakMsaUNBQWlDLDRJQ2xCOUMsbzBJQXlFQTs7MkZEdkRhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSw2QkFBNkI7aVJBZ0I5QixnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBGaWxlVXBsb2FkRXJyb3IsIE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vY29tcG9uZW50cy90cmFuc2xhdGUtYnV0dG9uL3RsZC10cmFuc2xhdGUtYnV0dG9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRmlsZU1ldGEgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IElUcmFuc2xhdGlvbkZpbGUgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlLWZpbGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RsZC10cmFuc2xhdGUtZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGxkRmlsZVRyYW5zbGF0ZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi90bGQtZmlsZS10cmFuc2xhdGUtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVkgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscy9hdXRvLWxhbmd1YWdlLWRldGVjdGlvbi1rZXkuY29uc3QnO1xyXG5pbXBvcnQgeyBGaWxlQ2F0ZWdvcnkgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGkvbW9kZWxzL2ZpbGUtY2F0ZWdvcnkubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90bGQtdHJhbnNsYXRlLWZpbGUtbXVsdGlwbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RsZC10cmFuc2xhdGUtZmlsZS1tdWx0aXBsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVGaWxlTXVsdGlwbGVDb21wb25lbnQgZXh0ZW5kcyBUbGRGaWxlVHJhbnNsYXRlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbGVTZXJ2aWNlOiBUbGRUcmFuc2xhdGVGaWxlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlQnV0dG9uU2VydmljZTogVGxkVHJhbnNsYXRlQnV0dG9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtTWFuYWdlbWVudFNlcnZpY2U6IFRsZFRyYW5zbGF0ZVN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhbG9nLCBjb25maWcsIGZpbGVTZXJ2aWNlKTtcclxuICB9XHJcbiAgQElucHV0KCkgdHJhbnNsYXRpb25GaWxlczogSVRyYW5zbGF0aW9uRmlsZVtdO1xyXG5cclxuICBhbGxvd2VkRmlsZVR5cGVzOiBzdHJpbmdbXTtcclxuICBhbGxvd2VkRmlsZVR5cGVzQXV0aFVzZXI6IHN0cmluZ1tdO1xyXG4gIG1heEZpbGVVcGxvYWRTaXplOiBudW1iZXI7XHJcbiAgbXVsdGlwbGVGaWxlczogYm9vbGVhbjtcclxuICBleHRlbmRlZEZpbGVUeXBlczogc3RyaW5nW107XHJcbiAgc2hvd1ZlbmRvck5vdGlmaWNhdGlvbjogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBpc1NlbGVjdExhbmd1YWdlV2FybmluZ0FkZGVkID0gZmFsc2U7XHJcblxyXG4gIGdldCBpc0F1dG9Tb3VyY2VMYW5nRW5hYmxlZCgpIHtcclxuICAgIGNvbnN0IGlzU291cmNlTGFuZ0F1dG8gPSB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpLnNvdXJjZUxhbmd1YWdlID09PSBBVVRPX0xBTkdVQUdFX0RFVEVDVElPTl9LRVk7XHJcblxyXG4gICAgaWYgKGlzU291cmNlTGFuZ0F1dG8pIHtcclxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RMYW5ndWFnZVdhcm5pbmdBZGRlZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzU2VsZWN0TGFuZ3VhZ2VXYXJuaW5nQWRkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKCdGSUxFX1VQTE9BRC5TRUxFQ1RfTEFOR1VBR0VfV0FSTklORycsIG51bGwsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc1NlbGVjdExhbmd1YWdlV2FybmluZ0FkZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmRlbGV0ZU1lc3NhZ2UoTm90aWZpY2F0aW9uTWVzc2FnZVR5cGUuV0FSTklORywgJ0ZJTEVfVVBMT0FELlNFTEVDVF9MQU5HVUFHRV9XQVJOSU5HJywgbnVsbCwgdHJ1ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNTb3VyY2VMYW5nQXV0bztcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc2xhdGlvblN0YXJ0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS50cmFuc2xhdGlvblN0YXJ0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZUFwcGVuZEZpbGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2U/LnRyYW5zbGF0aW9uU3RhcnRlZCB8fCB0aGlzLmZpbGVTZXJ2aWNlLnRyYW5zbGF0aW9uRmlsZXM/Lmxlbmd0aCA+PSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXV0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uY29yZUNvbmZpZz8uaXNBdXRoO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyYW5zbGF0ZWRGaWxlc0NvdW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2U/LnRyYW5zbGF0ZWRDb3VudCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heEZpbGVDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLm51bWJlck9mRmlsZXNBbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbGVDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uRmlsZXM/Lmxlbmd0aCB8fCAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVUcmFuc2xhdGVCdXR0b24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS5kaXNhYmxlVHJhbnNsYXRlQnV0dG9uIHx8IHRoaXMuaXNBdXRvU291cmNlTGFuZ0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcuYWxsb3dlZEZpbGVUeXBlcztcclxuICAgIHRoaXMuZXh0ZW5kZWRGaWxlVHlwZXMgPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLmV4dGVuZGVkRmlsZVR5cGVzO1xyXG4gICAgdGhpcy5tYXhGaWxlVXBsb2FkU2l6ZSA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubWF4U2l6ZTtcclxuICAgIHRoaXMubXVsdGlwbGVGaWxlcyA9IHRoaXMuY29uZmlnLmZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQgPiAxO1xyXG5cclxuICAgIHRoaXMuZmlsZVNlcnZpY2Uub25GaWxlc1VwbG9hZGVkKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLnRyYW5zbGF0ZUJ1dHRvblNlcnZpY2UucHVsc2VCdXR0b24oKTsgfSlcclxuXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZChmaWxlOiBJVHJhbnNsYXRpb25GaWxlLCBmaWxlTWV0YT86IElGaWxlTWV0YSkge1xyXG4gICAgaWYgKCFmaWxlTWV0YSkge1xyXG4gICAgICBmaWxlTWV0YSA9IGZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucz8uZmluZCgoZmlsZSkgPT4gZmlsZS5jYXRlZ29yeSA9PT0gRmlsZUNhdGVnb3J5LlRSQU5TTEFURUQpID8/IGZpbGUuYXZhaWxhYmxlRXh0ZW5zaW9ucz8uWzBdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWxlU2VydmljZS5kb3dubG9hZChmaWxlLCBmaWxlTWV0YSk7XHJcbiAgfVxyXG5cclxuICBmaWxlQ2hhbmdlKGZpbGVzOiBGaWxlW10pIHtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5maWxlU2VydmljZS5sb2FkRmlsZVByZXZpZXcoZmlsZXNbaV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZShmaWxlOiBJVHJhbnNsYXRpb25GaWxlKSB7XHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGlvbkZpbGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlU2VydmljZS5yZW1vdmUoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWxlVXBsb2FkRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgdGhpcy5maWxlU2VydmljZS5maWxlVXBsb2FkRXJyb3IoZXJyb3IgYXMgRmlsZVVwbG9hZEVycm9yKTtcclxuICB9XHJcblxyXG4gIC8vIG5vIG5lZWQgdG8gaGFuZGxlIHRyYW5zbGF0aW9uLCBzaW5jZSBpdCBpcyBoYXBwZW5pbmcgaW4gdHJhbnNsYXRlIGJ1dHRvbiBjb21wb25lbnQsIGJ1dCB0aGlzIG1ldGhvZCBpcyBmb3IgY3VzdG9tIGFjdGlvblxyXG4gIHRyYW5zbGF0ZUJ1dHRvbkNsaWNrKCkge1xyXG4gICAgY29uc3QgdmVuZG9yID0gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5hY3RpdmVWZW5kb3I7XHJcbiAgICB0aGlzLnNob3dWZW5kb3JOb3RpZmljYXRpb24gPSB0aGlzLmNvbmZpZy5maWxlQ29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVGl0bGVWaXNpYmxlRm9yVmVuZG9ycy5pbmNsdWRlcyh2ZW5kb3IpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGxkLXRyYW5zbGF0ZS1maWxlLWNvbnRhaW5lclwiIFtuZ0NsYXNzLnhzXT1cIid0bGQtbXVsdGlwbGUtbW9iaWxlJ1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGbGV4XHJcbiAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XHJcbiAgICB7eydNVUxUSVBMRV9GSUxFUy5TQ1JFRU5fUkVBREVSX0FOTk9VTkNFTUVOVCcgfCB0cmFuc2xhdGU6IHt0cmFuc2xhdGVkOnRyYW5zbGF0ZWRGaWxlc0NvdW50ICwgdG90YWw6IGZpbGVDb3VudH0gfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIiBmeEZsZXggY2xhc3M9XCJtdWx0aXBsZS1maWxlcy1ib2R5XCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWxlIG9mIHRyYW5zbGF0aW9uRmlsZXNcIiBjbGFzcz1cImZpbGUtcm93XCIgW25nQ2xhc3MuZ3Qtc21dPVwiJ2V4dHJhLXdpZHRoJ1wiIGZ4TGF5b3V0PVwicm93XCJcclxuICAgICAgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeExheW91dEFsaWduLnhzPVwiZmxleC1zdGFydCBjZW50ZXJcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleD5cclxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbi54cz1cInNwYWNlLWJldHdlZW4gY2VudGVyXCIgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1uYW1lXCI+XHJcbiAgICAgICAgICAgIHt7ZmlsZS5vcmlnaW5hbEZpbGVOYW1lfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwiZmlsZS1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDx0bGQtdHJhbnNsYXRlLWZpbGUtZG93bmxvYWQtYnV0dG9uICh0bGRDbGljayk9XCJkb3dubG9hZChmaWxlLCAkZXZlbnQpXCIgKm5nSWY9XCJmaWxlLmRvd25sb2FkQXZhaWxhYmxlXCJcclxuICAgICAgICAgICAgICBbc291cmNlRG93bmxvYWRdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJmaWxlLmlzRG93bmxvYWRpbmdcIiBbZmlsZV09XCJmaWxlXCI+XHJcbiAgICAgICAgICAgIDwvdGxkLXRyYW5zbGF0ZS1maWxlLWRvd25sb2FkLWJ1dHRvbj5cclxuICAgICAgICAgICAgPHRsZC1jbG9zZS1idXR0b24gW3Rvb2x0aXBdPVwiJ0ZJTEVfVVBMT0FELkNMRUFSJ1wiICh0bGRDbGljayk9XCJyZW1vdmUoZmlsZSlcIj48L3RsZC1jbG9zZS1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImZpbGUudHJhbnNsYXRpb25TdGF0dXNzPT09dHJhbnNsYXRpbmdTdGF0dXNzXCIgY29sb3I9XCJhY2NlbnRcIiBtb2RlPVwiZGV0ZXJtaW5hdGVcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLW1lc3NhZ2UgdGV4dC1zXCJcclxuICAgICAgICAgICpuZ0lmPVwiKGZpbGUudHJhbnNsYXRpb25TdGF0dXNzICE9PSBlcnJvclRyYW5zbGF0aW5nU3RhdHVzcykgJiYgKGZpbGUudHJhbnNsYXRpb25TdGF0dXNzICE9PSBjb21wbGV0ZWRUcmFuc2xhdGluZ1N0YXR1c3MpICYmIChmaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyAhPT0gdXBsb2FkZWRUcmFuc2xhdGluZ1N0YXR1c3MpXCI+XHJcbiAgICAgICAgICB7eydNVUxUSVBMRV9GSUxFUy5TVEFUVVNTXycgKyBmaWxlLnRyYW5zbGF0aW9uU3RhdHVzcyB8IHRyYW5zbGF0ZToge3BlcmNlbnQ6IGZpbGUucHJvZ3Jlc3N9IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGUubWVzc2FnZXMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgIDxsaWItaW5saW5lLW1lc3NhZ2UgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgZmlsZS5tZXNzYWdlc1wiIFttZXNzYWdlXT1cIm1lc3NhZ2VcIj48L2xpYi1pbmxpbmUtbWVzc2FnZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bGliLWZpbGUtdXBsb2FkICpuZ0lmPVwiIXRyYW5zbGF0aW9uU3RhcnRlZFwiIGZ4RmxleCBjbGFzcz1cInRsZC1hcHBlbmQtZmlsZXNcIiAoZmlsZUNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIiBbbWF4U2l6ZV09XCJtYXhGaWxlVXBsb2FkU2l6ZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZUZpbGVzXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVBcHBlbmRGaWxlc1wiIChlcnJvckV2ZW50KT1cImZpbGVVcGxvYWRFcnJvcigkZXZlbnQpXCIgW2V4dGVuZGVkQWNjZXB0TGlzdF09XCJleHRlbmRlZEZpbGVUeXBlc1wiPlxyXG4gICAgICB7eydNVUxUSVBMRV9GSUxFUy5BUFBFTkQnIHwgdHJhbnNsYXRlfX0gKHt7ZmlsZUNvdW50fX0ve3ttYXhGaWxlQ291bnR9fSlcclxuICAgIDwvbGliLWZpbGUtdXBsb2FkPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzb3VyY2VEb3dubG9hZFBERlwiPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnZlcnNpb25NZXNzYWdlOyBjb250ZXh0OiB7IG1lc3NhZ2VLZXk6J01VTFRJUExFX0ZJTEVTLlBERl9ESVNDTEFJTUVSJywgZGlhbG9nUGFyYW1zOiBwZGZDb252ZXJzaW9uLCBidXR0b25UZXh0OiAnTVVMVElQTEVfRklMRVMuUERGX0RJU0NMQUlNRVJfTElOSyd9XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNvdXJjZURvd25sb2FkSW1hZ2VcIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb252ZXJzaW9uTWVzc2FnZTsgY29udGV4dDogeyBtZXNzYWdlS2V5OidNVUxUSVBMRV9GSUxFUy5JTUFHRV9ESVNDTEFJTUVSJywgZGlhbG9nUGFyYW1zOiBpbWFnZUNvbnZlcnNpb24sIGJ1dHRvblRleHQ6ICdNVUxUSVBMRV9GSUxFUy5JTUFHRV9ESVNDTEFJTUVSX0xJTksnfVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VmVuZG9yTm90aWZpY2F0aW9uXCI+XHJcbiAgICA8dmVuZG9yLWRpc2NsYWltZXI+PC92ZW5kb3ItZGlzY2xhaW1lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBmeExheW91dC54cz1cImNvbHVtblwiIGZ4TGF5dW90R2FwLnhzPVwiMXJlbVwiIGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxyXG4gICAgPHRsZC10cmFuc2xhdGUtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlVHJhbnNsYXRlQnV0dG9uXCIgKGNsaWNrZWQpPVwidHJhbnNsYXRlQnV0dG9uQ2xpY2soKVwiXHJcbiAgICAgICpuZ0lmPVwiIXRyYW5zbGF0aW9uU3RhcnRlZFwiPjwvdGxkLXRyYW5zbGF0ZS1idXR0b24+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhckFsbCgpXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgY2xhc3M9XCJjYW5jZWwtYnV0dG9uIGJvcmRlci1hY2NlbnRcIj57eydNVUxUSVBMRV9GSUxFUy5DTEVBUl9BTEwnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnZlcnNpb25NZXNzYWdlIGxldC1tZXNzYWdlS2V5PVwibWVzc2FnZUtleVwiIGxldC1kaWFsb2dQYXJhbXM9XCJkaWFsb2dQYXJhbXNcIiBsZXQtYnV0dG9uVGV4dD1cImJ1dHRvblRleHRcIj5cclxuXHJcbiAgPHAgY2xhc3M9XCJjb252ZXJzaW9uLWRpc2NsYWltZXIgdGV4dC1tXCIgW25nQ2xhc3MuZ3Qtc21dPVwiJ2NvbnZlcnNpb24taW5mby1tYXJnaW5zLWd0LXNtJ1wiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPlxyXG4gICAgICBpbmZvXHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3Bhbj5cclxuICAgICAge3ttZXNzYWdlS2V5IHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY29udmVyc2lvbi1tZXNzYWdlLWFjdGlvbiB0ZXh0LW0tc2VtaS1ib2xkXCIgKGNsaWNrKT1cImNvbnZlcnNpb25EaWFsb2coZGlhbG9nUGFyYW1zKVwiPnt7YnV0dG9uVGV4dCB8XHJcbiAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|