@tilde-nlp/ngx-translate 5.0.97 → 5.0.98
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 +3 -2
- package/esm2022/lib/modules/tld-common/models/configs/tld-llm-config.model.mjs +1 -1
- package/esm2022/lib/modules/tld-common/services/tld-translate-config.service.mjs +2 -1
- package/esm2022/lib/modules/tld-text/services/tld-translate-text.service.mjs +3 -1
- package/fesm2022/tilde-nlp-ngx-translate.mjs +5 -1
- package/fesm2022/tilde-nlp-ngx-translate.mjs.map +1 -1
- package/lib/modules/tld-common/models/configs/tld-llm-config.model.d.ts +2 -0
- package/package.json +1 -1
- package/src/assets/webcomponent/tilde-translate-box.js +1 -1
|
@@ -5,7 +5,8 @@ export function llmServiceConfiguration(config) {
|
|
|
5
5
|
supportEmail: config.coreConfig.supportEmail,
|
|
6
6
|
appId: config.coreConfig.appId,
|
|
7
7
|
xApiKey: config.coreConfig.xApiKey,
|
|
8
|
-
maxCharLength: config.llmConfig.maxCharLength
|
|
8
|
+
maxCharLength: config.llmConfig.maxCharLength,
|
|
9
|
+
useLocalQuota: config.llmConfig.useLocalQuota
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLXNlcnZpY2UtY29uZmlndXJhdGlvbi5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL2ZhY3Rvcmllcy9sbG0tc2VydmljZS1jb25maWd1cmF0aW9uLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQWlDO0lBQ3hFLE9BQU87UUFDTixVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1FBQ25DLGVBQWUsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsVUFBVTtRQUNyRCxZQUFZLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZO1FBQzVDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUs7UUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNsQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1FBQzdDLGFBQWEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWE7S0FDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMTE1Db25maWd1cmF0aW9uIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3B1YmxpYy1hcGknO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxsbVNlcnZpY2VDb25maWd1cmF0aW9uKGNvbmZpZzogVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSk6IExMTUNvbmZpZ3VyYXRpb24ge1xyXG5cdHJldHVybiB7XHJcblx0XHRzZXJ2aWNlVXJsOiBjb25maWcubGxtQ29uZmlnLmFwaVVybCxcclxuXHRcdHN1YnNjcmlwdGlvblVybDogY29uZmlnLnN1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsLFxyXG5cdFx0c3VwcG9ydEVtYWlsOiBjb25maWcuY29yZUNvbmZpZy5zdXBwb3J0RW1haWwsXHJcblx0XHRhcHBJZDogY29uZmlnLmNvcmVDb25maWcuYXBwSWQsXHJcblx0XHR4QXBpS2V5OiBjb25maWcuY29yZUNvbmZpZy54QXBpS2V5LFxyXG5cdFx0bWF4Q2hhckxlbmd0aDogY29uZmlnLmxsbUNvbmZpZy5tYXhDaGFyTGVuZ3RoLFxyXG5cdFx0dXNlTG9jYWxRdW90YTogY29uZmlnLmxsbUNvbmZpZy51c2VMb2NhbFF1b3RhXHJcblx0fTtcclxufVxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWxsbS1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtY29tbW9uL21vZGVscy9jb25maWdzL3RsZC1sbG0tY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElUbGRMTE1Db25maWcge1xyXG5cdC8qKiBTZXQgdGhpcyB0byB0cnVlLCB0byBzaG93IGxsbSBtZW51IGJ1dHRvbiB3aGVuIHNyYyBsYW5ndWFnZSB3aW5kb3cgaXMgdHJhbnNsYXRlZC4gKi9cclxuXHRpc0VuYWJsZWQ/OiBib29sZWFuO1xyXG5cdC8qKiBMTE0gQVBJIHNlcnZpY2UgdXJsLiAqL1xyXG5cdGFwaVVybD86IHN0cmluZztcclxuXHQvKiogTWF4IGNoYXIgbGVuZ3RoLiAqL1xyXG5cdG1heENoYXJMZW5ndGg/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLWxsbS1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtY29tbW9uL21vZGVscy9jb25maWdzL3RsZC1sbG0tY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElUbGRMTE1Db25maWcge1xyXG5cdC8qKiBTZXQgdGhpcyB0byB0cnVlLCB0byBzaG93IGxsbSBtZW51IGJ1dHRvbiB3aGVuIHNyYyBsYW5ndWFnZSB3aW5kb3cgaXMgdHJhbnNsYXRlZC4gKi9cclxuXHRpc0VuYWJsZWQ/OiBib29sZWFuO1xyXG5cdC8qKiBMTE0gQVBJIHNlcnZpY2UgdXJsLiAqL1xyXG5cdGFwaVVybD86IHN0cmluZztcclxuXHQvKiogTWF4IGNoYXIgbGVuZ3RoLiAqL1xyXG5cdG1heENoYXJMZW5ndGg/OiBudW1iZXI7XHJcblx0LyoqIFNldCB0aGlzIHRvIHRydWUsIHRvIGF2b2lkIHF1b3RhIHNlcnZpY2UgcmVxdWVzdHMuICovXHJcblx0dXNlTG9jYWxRdW90YT86IGJvb2xlYW47XHJcbn1cclxuIl19
|
|
@@ -146,6 +146,7 @@ export class TldTranslateConfigService {
|
|
|
146
146
|
this._llmConfig.isEnabled = llm?.isEnabled ?? false;
|
|
147
147
|
this._llmConfig.apiUrl = llm?.apiUrl ?? 'https://translate.tilde.ai/api/language';
|
|
148
148
|
this._llmConfig.maxCharLength = llm?.maxCharLength ?? 5000;
|
|
149
|
+
this._llmConfig.useLocalQuota = llm?.useLocalQuota ?? false;
|
|
149
150
|
this._audioConfig.audioTextInput = audio?.audioTextInput ?? false;
|
|
150
151
|
// Not setting default url because there is no service provided by Tilde and this is not used by default in website project.
|
|
151
152
|
this._audioConfig.audioApiUrl = audio?.audioApiUrl;
|
|
@@ -199,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
199
200
|
type: Inject,
|
|
200
201
|
args: [TLD_TRANSLATE_CONFIG_TOKEN]
|
|
201
202
|
}] }]; } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1jb21tb24vc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFleEUsTUFBTSxPQUFPLHlCQUF5QjtJQUV5QztJQUE3RSxZQUE2RSxNQUEyQjtRQUEzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0RyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVcsR0FBNEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RSxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLFdBQVcsR0FBNEIsRUFBRSxDQUFDO0lBQ2xELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxHQUFrQixFQUFFLENBQUM7SUFDdkMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUNsRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixHQUErQixFQUFFLENBQUM7SUFDN0QsSUFBSSxrQkFB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QyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDekcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQztRQUVqRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ25FLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsWUFBWSxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7UUFFL0UsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxJQUFJLDRDQUE0QyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUV0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLFlBQVksRUFBRSxVQUFVLElBQUksNkNBQTZDLENBQUM7UUFDaEgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixHQUFHLFlBQVksRUFBRSxxQkFBcUIsSUFBSSxLQUFLLENBQUM7SUFDaEcsQ0FBQzt3R0FoTlUseUJBQXlCLGtCQUVKLDBCQUEwQjs0R0FGL0MseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdjLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUTERfVFJBTlNMQVRFX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uLy4uLy4uL2luamVjdGlvbi10b2tlbnMvdGxkLXRyYW5zbGF0ZS1jb25maWcudG9rZW4nO1xyXG5pbXBvcnQgeyBJVGxkVGV4dFRvU3BlZWNoQ29uZmlnLCBsYW5ndWFnZU1lbnVWZXJzaW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSVRsZEF1ZGlvQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLWF1ZGlvLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IElUbGRUZXJtQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLXRlcm0tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9jb25maWdzL3RsZC10cmFuc2xhdGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUNvcmVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLWNvcmUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUZpbGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLWZpbGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZVRleHRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLXRleHQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZVdlYnNpdGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLXdlYi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkUXVvdGFDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtcXVvdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkU3Vic2NyaXB0aW9uQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLXN1YnNjcmlwdGlvbi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkTExNQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLWxsbS1jb25maWcubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVExEX1RSQU5TTEFURV9DT05GSUdfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBJVGxkVHJhbnNsYXRlQ29uZmlnKSB7XHJcbiAgICB0aGlzLmluaXRDb25maWdzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb3JlQ29uZmlnOiBJVGxkVHJhbnNsYXRlQ29yZUNvbmZpZyA9IHsgYXBwSWQ6IG51bGwsIHhBcGlLZXk6IG51bGwgfTtcclxuICBnZXQgY29yZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb3JlQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGV4dENvbmZpZzogSVRsZFRyYW5zbGF0ZVRleHRDb25maWcgPSB7fTtcclxuICBnZXQgdGV4dENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0Q29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbGxtQ29uZmlnOiBJVGxkTExNQ29uZmlnID0ge307XHJcbiAgZ2V0IGxsbUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9sbG1Db25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWxlQ29uZmlnOiBJVGxkVHJhbnNsYXRlRmlsZUNvbmZpZyA9IHt9O1xyXG4gIGdldCBmaWxlQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVDb25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93ZWJ0cmFuc2xhdGVDb25maWc6IElUbGRUcmFuc2xhdGVXZWJzaXRlQ29uZmlnID0ge307XHJcbiAgZ2V0IHdlYnRyYW5zbGF0ZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90ZXJtQ29uZmlnOiBJVGxkVGVybUNvbmZpZyA9IHt9O1xyXG4gIGdldCB0ZXJtQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rlcm1Db25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hdWRpb0NvbmZpZzogSVRsZEF1ZGlvQ29uZmlnID0geyBhcHBJZDogbnVsbCwgYXBwU2VjcmV0OiBudWxsIH07XHJcbiAgZ2V0IGF1ZGlvQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcXVvdGFDb25maWc6IElUbGRRdW90YUNvbmZpZyA9IHt9O1xyXG4gIGdldCBxdW90YUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdW90YUNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1cHNjcmlwdGlvbkNvbmZpZzogSVRsZFN1YnNjcmlwdGlvbkNvbmZpZyA9IHsgcHJpY2luZ1VybDogbnVsbCB9O1xyXG4gIGdldCBzdXBzY3JpcHRpb25Db25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3Vwc2NyaXB0aW9uQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGV4dFRvU3BlZWNoQ29uZmlnOiBJVGxkVGV4dFRvU3BlZWNoQ29uZmlnID0ge307XHJcbiAgZ2V0IHRleHRUb1NwZWVjaENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0VG9TcGVlY2hDb25maWc7XHJcbiAgfVxyXG5cclxuICBpbml0Q29uZmlncyhjb25maWd1cmF0aW9uPzogSVRsZFRyYW5zbGF0ZUNvbmZpZykge1xyXG4gICAgY29uc3QgY29uZmlnID0gY29uZmlndXJhdGlvbiA/PyB0aGlzLmNvbmZpZyA/PyB7fTtcclxuXHJcbiAgICBjb25zdCBjb3JlID0gY29uZmlnPy5jb3JlO1xyXG4gICAgY29uc3QgZmlsZSA9IGNvbmZpZz8uZmlsZTtcclxuICAgIGNvbnN0IHRleHQgPSBjb25maWc/LnRleHQ7XHJcbiAgICBjb25zdCBsbG0gPSBjb25maWc/LmxsbTtcclxuICAgIGNvbnN0IGF1ZGlvID0gY29uZmlnPy5hdWRpbztcclxuICAgIGNvbnN0IHF1b3RhID0gY29uZmlnPy5xdW90YTtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbmZpZz8uc3Vic2NyaXB0aW9uO1xyXG4gICAgY29uc3Qgd2VidHJhbnNsYXRlID0gY29uZmlnPy53ZWJUcmFuc2xhdGU7XHJcbiAgICBjb25zdCB0ZXJtQ29uZmlnID0gY29uZmlnPy50ZXJtO1xyXG4gICAgY29uc3QgdGV4dFRvU3BlZWNoID0gY29uZmlnPy50ZXh0VG9TcGVlY2g7XHJcblxyXG4gICAgdGhpcy5fY29yZUNvbmZpZyA9IHsgYXBwSWQ6IGNvcmU/LmFwcElkLCB4QXBpS2V5OiBjb3JlPy54QXBpS2V5IH07XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmFwaUlzSW5UaGVTYW1lRG9tYWluID0gY29yZT8uYXBpSXNJblRoZVNhbWVEb21haW4gfHwgZmFsc2U7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmFwcE5hbWUgPSBjb3JlPy5hcHBOYW1lIHx8IFwiVGlsZGUgTVRcIjtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuaXNBdXRoID0gY29yZT8uaXNBdXRoIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5qd3RBdXRoID0gY29yZT8uand0QXV0aCB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcudHJhbnNsYXRlQXBwTmFtZSA9IGNvcmU/LnRyYW5zbGF0ZUFwcE5hbWUgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcucmVnaXN0ZXJMaW5rID0gY29yZT8ucmVnaXN0ZXJMaW5rIHx8IFwiaHR0cHM6Ly90aWxkZS5haS9tYWNoaW5lLXRyYW5zbGF0aW9uXCI7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLnN1cHBvcnRFbWFpbCA9IGNvcmU/LnN1cHBvcnRFbWFpbCB8fCBcIm10QHRpbGRlLmx2XCI7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmhpZGVMYW5nTWVudUxhYmVscyA9IGNvcmU/LmhpZGVMYW5nTWVudUxhYmVscyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd1ZlbmRvcnMgPSBjb3JlPy5zaG93VmVuZG9ycyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcudW5hdXRob3JpemVkUmVkaXJlY3RMaW5rID0gY29yZT8udW5hdXRob3JpemVkUmVkaXJlY3RMaW5rO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPSBjb3JlPy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPz8gMztcclxuICAgIHRoaXMuX2NvcmVDb25maWcudXBsb2FkSWNvbk5hbWUgPSBjb3JlPy51cGxvYWRJY29uTmFtZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuZGVidWcgPSBjb3JlPy5kZWJ1ZztcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lID0gY29yZT8uc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zaG93RG9tYWlucyA9IGNvcmU/LnNob3dEb21haW5zID8/IHRydWU7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmRlZmF1bHRWZW5kb3IgPSBjb3JlPy5kZWZhdWx0VmVuZG9yID8/IFwiVGlsZGVcIjtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuZGVmYXVsdFN5c3RlbUlkID0gY29yZT8uZGVmYXVsdFN5c3RlbUlkID8/ICdBVVRPJztcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd0RvbWFpblRpdGxlID0gY29yZT8uc2hvd0RvbWFpblRpdGxlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5kb21haW5TaWRlID0gY29yZT8uZG9tYWluU2lkZSA/PyBcInRyZ1wiO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zd2FwSWNvblBvc2l0aW9uID0gY29yZT8uc3dhcEljb25Qb3NpdGlvbiA/PyBcInNyY1wiO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5sYW5ndWFnZU1lbnVWZXJzaW9uID0gY29yZT8ubGFuZ3VhZ2VNZW51VmVyc2lvbiA/PyBsYW5ndWFnZU1lbnVWZXJzaW9uLlYyO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5tYXhSZWNlbnRTeXN0ZW1Db3VudCA9IGNvcmU/Lm1heFJlY2VudFN5c3RlbUNvdW50ID8/IDQ7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zID0gY29yZT8uZGVmYXVsdERvbWFpbnMgPz8gW1wiR0VOXCIsIFwiZ2VuZXJhbFwiXTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuY29udGFjdFN1cHBvcnQgPSBjb3JlPy5jb250YWN0U3VwcG9ydCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zdWJzY3JpcHRpb25TdXBwb3J0ID0gY29yZT8uc3Vic2NyaXB0aW9uU3VwcG9ydCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5pc1dlYkNvbXBvbmVudCA9IGNvcmU/LmlzV2ViQ29tcG9uZW50ID8/IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2UgPSBjb3JlPy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2UgPz8gJ2x2JztcclxuXHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMgPSBmaWxlPy5hbGxvd2VkRmlsZVR5cGVzIHx8IFtcIi5wZGZcIiwgXCIuZG9jeFwiLCBcIi5kb2NcIiwgXCIucHB0eFwiLCBcIi54bHN4XCIsIFwiLnR4dFwiLCBcIi5vZHRcIiwgXCIuaHRtbFwiLCBcIi5qc29uXCIsIFwiLnNydFwiLCBcIi5ydGZcIiwgXCIucGFnZXNcIiwgXCIuZG9jbVwiLCBcIi5vZHBcIiwgXCIub2RzXCIsIFwiLmh0bVwiLCBcIi54aHRtbFwiLCBcIi54aHRcIiwgXCIudG14XCIsIFwiLnhsZlwiLCBcIi54bGlmXCIsIFwiLnhsaWZmXCIsIFwiLnNkbHhsaWZmXCIsIFwiLnNkbHhsZlwiLCBcIi50dHhcIiwgXCIudGV4XCIsIFwiLnhtbFwiLCBcIi5zeHdcIiwgXCIuY3N2XCIsIFwiLmpwZ1wiLCBcIi5qcGVnXCIsIFwiLnBuZ1wiLCBcIi5ibXBcIl07XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLmV4dGVuZGVkRmlsZVR5cGVzID0gZmlsZT8uZXh0ZW5kZWRGaWxlVHlwZXNcclxuICAgICAgfHwgW1wiLmRvY1wiLCBcIi5kb2N4XCIsIFwiLnhsc3hcIiwgXCIucHB0eFwiLCBcIi5vZHRcIiwgXCIub2RwXCIsIFwiLm9kc1wiLCBcIi50eHRcIiwgXCIuaHRtbFwiLCBcIi5odG1cIixcclxuICAgICAgICBcIi54aHRtbFwiLCBcIi54aHRcIiwgXCIudG14XCIsIFwiLnhsZlwiLCBcIi54bGlmXCIsIFwiLnhsaWZmXCIsIFwiLnNkbHhsaWZmXCIsIFwiLnNkbHhsZlwiLCBcIi50dHhcIiwgXCIucnRmXCIsXHJcbiAgICAgICAgXCIucGFnZXNcIiwgXCIudGV4XCIsIFwiLnhtbFwiLCBcIi5qc29uXCIsIFwiLnN4d1wiLCBcIi5wZGZcIiwgXCIuY3N2XCIsIFwiLnR0bFwiLCBcIi5zcnRcIiwgXCIucG5nXCIsIFwiLmpwZ1wiLCBcIi5qcGVnXCIsIFwiLmJtcFwiXTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuZmlsZUFwaVVybCA9IGZpbGU/LmZpbGVBcGlVcmwgfHwgXCJodHRwczovL2xldHNtdC5ldS93cy9GaWxlcy9cIjtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHMgPSBmaWxlPy5maWxlRG93bmxvYWRUaW1lb3V0c1xyXG4gICAgICB8fCB7XHJcbiAgICAgIFwiaW5pdGlhbGl6aW5nXCI6IDEwMDAsXHJcbiAgICAgIFwiZXh0cmFjdGluZ1wiOiAxMDAwLFxyXG4gICAgICBcIndhaXRpbmdcIjogMTAwMDAsXHJcbiAgICAgIFwidHJhbnNsYXRpbmdcIjogMTAwMCxcclxuICAgICAgXCJzYXZpbmdcIjogMTAwMCxcclxuICAgICAgXCJjb21wbGV0ZWRcIjogMTAwMCxcclxuICAgICAgXCJlcnJvclwiOiAxMDAwLFxyXG4gICAgICBcInF1ZXVpbmdcIjogMTAwMFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLm1heFNpemUgPSBmaWxlPy5tYXhTaXplID09PSBudWxsID8gbnVsbCA6IChmaWxlPy5tYXhTaXplID8/ICh0aGlzLmNvcmVDb25maWcuaXNBdXRoID8gMzA3MjAwMDAgOiAxMDQ4NTc2MCkpO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5maWxlVXBsb2FkID0gZmlsZT8uZmlsZVVwbG9hZCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5vY3JQYWdlTGltaXQgPSBmaWxlPy5vY3JQYWdlTGltaXQgPz8gMTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuYWxsb3dQREZTb3VyY2VEb3dubG9hZCA9IGZpbGU/LmFsbG93UERGU291cmNlRG93bmxvYWQgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuYWxsb3dJbWFnZVNvdXJjZURvd25sb2FkID0gZmlsZT8uYWxsb3dJbWFnZVNvdXJjZURvd25sb2FkID8/IHRydWU7XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLnNvdXJjZURvd25sb2FkRXh0ZW5zaW9ucyA9IGZpbGU/LnNvdXJjZURvd25sb2FkRXh0ZW5zaW9ucyB8fCBbXCJwZGZcIiwgXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy50YXJnZXREb3dubG9hZEV4dGVuc2lvbk9yZGVyID0gZmlsZT8udGFyZ2V0RG93bmxvYWRFeHRlbnNpb25PcmRlcjtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQgPSBmaWxlPy5udW1iZXJPZkZpbGVzQWxsb3dlZCA+IDAgPyBmaWxlLm51bWJlck9mRmlsZXNBbGxvd2VkIDogMTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzID0gZmlsZT8uc2hvd1RyYW5zbGF0aW9uTGltaXRzID8/IHRydWU7XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLnVzZU11bHRpcGxlRmlsZVVwbG9hZCA9IGZpbGU/LnVzZU11bHRpcGxlRmlsZVVwbG9hZCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5wcm9ncmVzc0luZGljYXRvclRpdGxlVmlzaWJsZUZvclZlbmRvcnMgPSBmaWxlPy5wcm9ncmVzc0luZGljYXRvclRpdGxlVmlzaWJsZUZvclZlbmRvcnMgPz8gW1wiRVRyYW5zbGF0aW9uXCJdO1xyXG5cclxuICAgIHRoaXMuX3RleHRDb25maWcuZGljdGlvbmFyeVVybHMgPSBbLi4udGV4dD8uZGljdGlvbmFyeVVybHMgPz8gJycsIGAke3Rlcm1Db25maWc/LnRlcm1pbm9sb2d5UG9ydGFsVXJsID8/ICdodHRwczovL3Rlcm0udGlsZGUuY29tJ30vYXBpL3Rlcm1zZXJ2aWNlL2xvb2t1cC9yZXN1bHRgXTtcclxuICAgIFxyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5tYXhDaGFyTGVuZ3RoID0gdGV4dD8ubWF4Q2hhckxlbmd0aCA/PyA1MDAwO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy53ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeCA9IHRleHQ/LndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4IHx8IFwiL3dlYnRyYW5zbGF0ZT91cmw9XCI7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4ID0gdGV4dD8ud2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXggfHwgXCJcIjtcclxuICAgIHRoaXMuX3RleHRDb25maWcudXNlRGljdGlvbmFyeSA9IHRleHQ/LnVzZURpY3Rpb25hcnkgPz8gZmFsc2U7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dBdmFpbGFibGVFeHRlbnNpb25zID0gdGV4dD8uc2hvd0F2YWlsYWJsZUV4dGVuc2lvbnMgPT0gbnVsbCA/IHRydWUgOiB0ZXh0LnNob3dBdmFpbGFibGVFeHRlbnNpb25zO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5zaG93QXV0aEV4dGVuc2lvbnMgPSB0ZXh0Py5zaG93QXV0aEV4dGVuc2lvbnMgPT0gbnVsbCA/IHRydWUgOiB0ZXh0LnNob3dBdXRoRXh0ZW5zaW9ucztcclxuICAgIHRoaXMuX3RleHRDb25maWcuYXV0b0ZvY3VzcyA9IHRleHQ/LmF1dG9Gb2N1c3M7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dFeHRlbnNpb25zVW5hdXRoT25seSA9IHRleHQ/LnNob3dFeHRlbnNpb25zVW5hdXRoT25seTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuc2hvd1NlbnNpdGl2ZUluZm9Ub29sdGlwID0gdGV4dD8uc2hvd1NlbnNpdGl2ZUluZm9Ub29sdGlwO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5hbGxvd1dlYnNpdGVUcmFuc2xhdGlvbiA9IHRleHQ/LmFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dTdWdnZXN0aW9ucyA9IHRleHQ/LnNob3dTdWdnZXN0aW9ucyA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGUgPSB0ZXh0Py5hdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZSA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuaGlnaGxpZ2h0ID0gdGV4dD8uaGlnaGxpZ2h0ID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmNoZWNrU291cmNlR3JhbW1hciA9IHRleHQ/LmNoZWNrU291cmNlR3JhbW1hciA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuZ3JhbW1hckNoZWNrTGFuZ3VhZ2VzID0gdGV4dD8uZ3JhbW1hckNoZWNrTGFuZ3VhZ2VzID8/IFtdO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5zaG93VGFyZ2V0UGxhY2Vob2xkZXIgPSB0ZXh0Py5zaG93VGFyZ2V0UGxhY2Vob2xkZXI7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dFeHRlbnNpb25Qb3B1cCA9IHRleHQ/LnNob3dFeHRlbnNpb25Qb3B1cDtcclxuICAgIHRoaXMuX3RleHRDb25maWcudmlzaWJsZUV4dGVuc2lvbkNvdW50ID0gdGV4dD8udmlzaWJsZUV4dGVuc2lvbkNvdW50ID8/IDM7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmhpZGVTb3VyY2VBY3Rpb25zV2hlbkhhc1RleHRNb2JpbGUgPSB0ZXh0Py5oaWRlU291cmNlQWN0aW9uc1doZW5IYXNUZXh0TW9iaWxlID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dE1pbGlTZWNvbmRzID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMgPz8gMjAwMDtcclxuICAgIHRoaXMuX3RleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JUaXRsZVZpc2libGVGb3JWZW5kb3JzID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JUaXRsZVZpc2libGVGb3JWZW5kb3JzID8/IFtcIkVUcmFuc2xhdGlvblwiXTtcclxuICAgIHRoaXMuX3RleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JWaXNpYmxlID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JWaXNpYmxlID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dUcmFuc2xhdGVCdXR0b24gPSB0ZXh0Py5zaG93VHJhbnNsYXRlQnV0dG9uID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmRpc3BsYXlTaW5nbGVBdmFpbGFibGVEb21haW4gPSB0ZXh0Py5kaXNwbGF5U2luZ2xlQXZhaWxhYmxlRG9tYWluID8/IGZhbHNlO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5pc0F1dG9MYW5ndWFnZURldGVjdGlvbkVuYWJsZWQgPSB0ZXh0Py5pc0F1dG9MYW5ndWFnZURldGVjdGlvbkVuYWJsZWQgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuc2hvd1dvcmRMaW1pdFdhcm5pbmcgPSB0ZXh0Py5zaG93V29yZExpbWl0V2FybmluZyA/PyB0cnVlO1xyXG5cclxuICAgIHRoaXMuX2xsbUNvbmZpZy5pc0VuYWJsZWQgPSBsbG0/LmlzRW5hYmxlZCA/PyBmYWxzZTtcclxuICAgIHRoaXMuX2xsbUNvbmZpZy5hcGlVcmwgPSBsbG0/LmFwaVVybCA/PyAnaHR0cHM6Ly90cmFuc2xhdGUudGlsZGUuYWkvYXBpL2xhbmd1YWdlJztcclxuICAgIHRoaXMuX2xsbUNvbmZpZy5tYXhDaGFyTGVuZ3RoID0gbGxtPy5tYXhDaGFyTGVuZ3RoID8/IDUwMDA7XHJcblxyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuYXVkaW9UZXh0SW5wdXQgPSBhdWRpbz8uYXVkaW9UZXh0SW5wdXQgPz8gZmFsc2U7XHJcbiAgICAvLyBOb3Qgc2V0dGluZyBkZWZhdWx0IHVybCBiZWNhdXNlIHRoZXJlIGlzIG5vIHNlcnZpY2UgcHJvdmlkZWQgYnkgVGlsZGUgYW5kIHRoaXMgaXMgbm90IHVzZWQgYnkgZGVmYXVsdCBpbiB3ZWJzaXRlIHByb2plY3QuXHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5hdWRpb0FwaVVybCA9IGF1ZGlvPy5hdWRpb0FwaVVybDtcclxuICAgIHRoaXMuX2F1ZGlvQ29uZmlnLmF1ZGlvTWF4U2l6ZUJ5dGVzID0gYXVkaW8/LmF1ZGlvTWF4U2l6ZUJ5dGVzID8/IDEwMDAwMDAwO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuc291cmNlTGFuZ3VhZ2VzID0gYXVkaW8/LnNvdXJjZUxhbmd1YWdlcyA/PyBbXTtcclxuICAgIHRoaXMuX2F1ZGlvQ29uZmlnLmRhdGFVcGRhdGVUaW1lRnJhbWUgPSBhdWRpbz8uZGF0YVVwZGF0ZVRpbWVGcmFtZSA/PyA1MDAwO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcubWF4aW11bVJlY29yZFRpbWUgPSBhdWRpbz8ubWF4aW11bVJlY29yZFRpbWUgPz8gMzAwO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuZGljdGF0ZUFwaVVybCA9IGF1ZGlvPy5kaWN0YXRlQXBpVXJsID8/IFwicnVuYS50aWxkZS5sdlwiO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuYXBwSWQgPSBhdWRpbz8uYXBwSWQ7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5hcHBTZWNyZXQgPSBhdWRpbz8uYXBwU2VjcmV0O1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcucHVuY3R1YXRpb25NZXNzYWdlID0gYXVkaW8/LnB1bmN0dWF0aW9uTWVzc2FnZSA/PyB0cnVlO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uID0gYXVkaW8/LmRpc2FibGVBdXRvbWF0aWNUcmFuc2xhdGlvbiA/PyB0cnVlO1xyXG5cclxuICAgIHRoaXMuX3dlYnRyYW5zbGF0ZUNvbmZpZy5sb2dvTG9jYXRpb24gPSB3ZWJ0cmFuc2xhdGU/LmxvZ29Mb2NhdGlvbiB8fCAnYXNzZXRzL3dlYnRyYW5zbGF0ZS90aWxkZV9sb2dvLnBuZyc7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcudHJhbnNsYXRlUGFnZVBhdGggPSB3ZWJ0cmFuc2xhdGU/LnRyYW5zbGF0ZVBhZ2VQYXRoO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLmRlYnVnID0gd2VidHJhbnNsYXRlPy5kZWJ1ZyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX3dlYnRyYW5zbGF0ZUNvbmZpZy53ZWJMYW5nQXV0b2RldGVjdCA9IHdlYnRyYW5zbGF0ZT8ud2ViTGFuZ0F1dG9kZXRlY3QgfHwgdHJ1ZTtcclxuICAgIHRoaXMuX3dlYnRyYW5zbGF0ZUNvbmZpZy5hbGxvd1N1Z2dlc3Rpb25zID0gd2VidHJhbnNsYXRlPy5hbGxvd1N1Z2dlc3Rpb25zIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLmhpZGVQb3B1cCA9IHdlYnRyYW5zbGF0ZT8uaGlkZVBvcHVwIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLnNhbmRib3ggPSB3ZWJ0cmFuc2xhdGU/LnNhbmRib3ggPz8gXCJhbGxvdy1mb3JtcyBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luXCI7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcuYXBwSWQgPSB3ZWJ0cmFuc2xhdGU/LmFwcElkO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLmhlbHBVcmwgPSB3ZWJ0cmFuc2xhdGU/LmhlbHBVcmwgPz8gJ2h0dHBzOi8vaGVscC50aWxkZS5haS90aWxkZS1tdC9ndWlkZXMvd2ViLXRyYW5zbGF0aW9uL3RyYW5zbGF0ZSc7XHJcblxyXG4gICAgdGhpcy5fdGVybUNvbmZpZy5jYW5DcmVhdGVDb2xsZWN0aW9uID0gdGVybUNvbmZpZz8uY2FuQ3JlYXRlQ29sbGVjdGlvbjtcclxuICAgIHRoaXMuX3Rlcm1Db25maWcuaXNDb2xsZWN0aW9uc0FjdGl2YXRlZCA9IHRlcm1Db25maWc/LmlzQ29sbGVjdGlvbnNBY3RpdmF0ZWQ7XHJcbiAgICB0aGlzLl90ZXJtQ29uZmlnLnRlcm1pbm9sb2d5UG9ydGFsVXJsID0gdGVybUNvbmZpZz8udGVybWlub2xvZ3lQb3J0YWxVcmwgPz8gJ2h0dHBzOi8vdGVybS50aWxkZS5jb20nO1xyXG5cclxuICAgIC8vIHNlcGVyYXRlZCBiZWNhdXNlIGZvbGxvd2luZyB1cmxzIGhhdmUgbWV0aG9kIG5hbWVzIGFkZGVkXHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnVwZGF0ZVRyYW5zbGF0aW9uVXJsID0gdGV4dD8udXBkYXRlVHJhbnNsYXRpb25Vcmw7XHJcblxyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5hcGlCYXNlVXJsID0gY29yZT8uYXBpQmFzZVVybCA/PyBcImh0dHBzOi8vdHJhbnNsYXRlLnRpbGRlLmFpL2FwaVwiO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy50cmFuc2xhdGlvblVybCA9IHRleHQ/LnRyYW5zbGF0aW9uVXJsID8/IHRoaXMuY29yZUNvbmZpZy5hcGlCYXNlVXJsICsgXCIvdHJhbnNsYXRlL3RleHRcIjtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuZmlsZUFwaVVybCA9IGZpbGU/LmZpbGVBcGlVcmwgPz8gdGhpcy5jb3JlQ29uZmlnLmFwaUJhc2VVcmwgKyBcIi90cmFuc2xhdGUvZmlsZVwiO1xyXG5cclxuICAgIHRoaXMuX3RleHRUb1NwZWVjaENvbmZpZy5sYW5ndWFnZXMgPSB0ZXh0VG9TcGVlY2g/Lmxhbmd1YWdlcyA/PyB7fTtcclxuICAgIHRoaXMuX3RleHRUb1NwZWVjaENvbmZpZy5tYXhDaGFyc0luVGV4dCA9IHRleHRUb1NwZWVjaD8ubWF4Q2hhcnNJblRleHQgPz8gMzAwMDtcclxuXHJcbiAgICAvLyBPdmVycmlkZSB0aGVzZSB2YWx1ZXMgc2luY2UgdGhleSBhcmUgbm90IGltcGxlbWVudGVkIGluIGN1cnJlbnQgYXBpLlxyXG4gICAgdGhpcy50ZXh0Q29uZmlnLnNob3dTdWdnZXN0aW9ucyA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuX3F1b3RhQ29uZmlnLmFwaVVybCA9IHF1b3RhPy5hcGlVcmwgPz8gXCJodHRwczovL3RyYW5zbGF0ZS50aWxkZS5haS9hcGkvcXVvdGEvdXNhZ2VcIjtcclxuICAgIHRoaXMuX3F1b3RhQ29uZmlnLnhBcGlLZXkgPSBjb3JlPy54QXBpS2V5O1xyXG4gICAgdGhpcy5fcXVvdGFDb25maWcuYXBwSWQgPSBjb3JlPy5hcHBJZDtcclxuXHJcbiAgICB0aGlzLl9zdXBzY3JpcHRpb25Db25maWcucHJpY2luZ1VybCA9IHN1YnNjcmlwdGlvbj8ucHJpY2luZ1VybCA/PyBcImh0dHBzOi8vdGlsZGUuYWkvbWFjaGluZS10cmFuc2xhdGlvbi8jcHJpY2VcIjtcclxuICAgIHRoaXMuX3N1cHNjcmlwdGlvbkNvbmZpZy5oYXNBY3RpdmVTdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb24/Lmhhc0FjdGl2ZVN1YnNjcmlwdGlvbiA/PyBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RsZC10cmFuc2xhdGUvc3JjL2xpYi9tb2R1bGVzL3RsZC1jb21tb24vc2VydmljZXMvdGxkLXRyYW5zbGF0ZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEcsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFleEUsTUFBTSxPQUFPLHlCQUF5QjtJQUV5QztJQUE3RSxZQUE2RSxNQUEyQjtRQUEzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0RyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVcsR0FBNEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5RSxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLFdBQVcsR0FBNEIsRUFBRSxDQUFDO0lBQ2xELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxHQUFrQixFQUFFLENBQUM7SUFDdkMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUNsRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVPLG1CQUFtQixHQUErQixFQUFFLENBQUM7SUFDN0QsSUFBSSxrQkFB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LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUTERfVFJBTlNMQVRFX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uLy4uLy4uL2luamVjdGlvbi10b2tlbnMvdGxkLXRyYW5zbGF0ZS1jb25maWcudG9rZW4nO1xyXG5pbXBvcnQgeyBJVGxkVGV4dFRvU3BlZWNoQ29uZmlnLCBsYW5ndWFnZU1lbnVWZXJzaW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSVRsZEF1ZGlvQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLWF1ZGlvLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IElUbGRUZXJtQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLXRlcm0tY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9jb25maWdzL3RsZC10cmFuc2xhdGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUNvcmVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLWNvcmUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZUZpbGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLWZpbGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZVRleHRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLXRleHQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgSVRsZFRyYW5zbGF0ZVdlYnNpdGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtdHJhbnNsYXRlLXdlYi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkUXVvdGFDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlncy90bGQtcXVvdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkU3Vic2NyaXB0aW9uQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLXN1YnNjcmlwdGlvbi1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBJVGxkTExNQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZ3MvdGxkLWxsbS1jb25maWcubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVExEX1RSQU5TTEFURV9DT05GSUdfVE9LRU4pIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBJVGxkVHJhbnNsYXRlQ29uZmlnKSB7XHJcbiAgICB0aGlzLmluaXRDb25maWdzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb3JlQ29uZmlnOiBJVGxkVHJhbnNsYXRlQ29yZUNvbmZpZyA9IHsgYXBwSWQ6IG51bGwsIHhBcGlLZXk6IG51bGwgfTtcclxuICBnZXQgY29yZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb3JlQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGV4dENvbmZpZzogSVRsZFRyYW5zbGF0ZVRleHRDb25maWcgPSB7fTtcclxuICBnZXQgdGV4dENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0Q29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbGxtQ29uZmlnOiBJVGxkTExNQ29uZmlnID0ge307XHJcbiAgZ2V0IGxsbUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9sbG1Db25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWxlQ29uZmlnOiBJVGxkVHJhbnNsYXRlRmlsZUNvbmZpZyA9IHt9O1xyXG4gIGdldCBmaWxlQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVDb25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF93ZWJ0cmFuc2xhdGVDb25maWc6IElUbGRUcmFuc2xhdGVXZWJzaXRlQ29uZmlnID0ge307XHJcbiAgZ2V0IHdlYnRyYW5zbGF0ZUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90ZXJtQ29uZmlnOiBJVGxkVGVybUNvbmZpZyA9IHt9O1xyXG4gIGdldCB0ZXJtQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rlcm1Db25maWc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hdWRpb0NvbmZpZzogSVRsZEF1ZGlvQ29uZmlnID0geyBhcHBJZDogbnVsbCwgYXBwU2VjcmV0OiBudWxsIH07XHJcbiAgZ2V0IGF1ZGlvQ29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcXVvdGFDb25maWc6IElUbGRRdW90YUNvbmZpZyA9IHt9O1xyXG4gIGdldCBxdW90YUNvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9xdW90YUNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N1cHNjcmlwdGlvbkNvbmZpZzogSVRsZFN1YnNjcmlwdGlvbkNvbmZpZyA9IHsgcHJpY2luZ1VybDogbnVsbCB9O1xyXG4gIGdldCBzdXBzY3JpcHRpb25Db25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3Vwc2NyaXB0aW9uQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdGV4dFRvU3BlZWNoQ29uZmlnOiBJVGxkVGV4dFRvU3BlZWNoQ29uZmlnID0ge307XHJcbiAgZ2V0IHRleHRUb1NwZWVjaENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl90ZXh0VG9TcGVlY2hDb25maWc7XHJcbiAgfVxyXG5cclxuICBpbml0Q29uZmlncyhjb25maWd1cmF0aW9uPzogSVRsZFRyYW5zbGF0ZUNvbmZpZykge1xyXG4gICAgY29uc3QgY29uZmlnID0gY29uZmlndXJhdGlvbiA/PyB0aGlzLmNvbmZpZyA/PyB7fTtcclxuXHJcbiAgICBjb25zdCBjb3JlID0gY29uZmlnPy5jb3JlO1xyXG4gICAgY29uc3QgZmlsZSA9IGNvbmZpZz8uZmlsZTtcclxuICAgIGNvbnN0IHRleHQgPSBjb25maWc/LnRleHQ7XHJcbiAgICBjb25zdCBsbG0gPSBjb25maWc/LmxsbTtcclxuICAgIGNvbnN0IGF1ZGlvID0gY29uZmlnPy5hdWRpbztcclxuICAgIGNvbnN0IHF1b3RhID0gY29uZmlnPy5xdW90YTtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbmZpZz8uc3Vic2NyaXB0aW9uO1xyXG4gICAgY29uc3Qgd2VidHJhbnNsYXRlID0gY29uZmlnPy53ZWJUcmFuc2xhdGU7XHJcbiAgICBjb25zdCB0ZXJtQ29uZmlnID0gY29uZmlnPy50ZXJtO1xyXG4gICAgY29uc3QgdGV4dFRvU3BlZWNoID0gY29uZmlnPy50ZXh0VG9TcGVlY2g7XHJcblxyXG4gICAgdGhpcy5fY29yZUNvbmZpZyA9IHsgYXBwSWQ6IGNvcmU/LmFwcElkLCB4QXBpS2V5OiBjb3JlPy54QXBpS2V5IH07XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmFwaUlzSW5UaGVTYW1lRG9tYWluID0gY29yZT8uYXBpSXNJblRoZVNhbWVEb21haW4gfHwgZmFsc2U7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmFwcE5hbWUgPSBjb3JlPy5hcHBOYW1lIHx8IFwiVGlsZGUgTVRcIjtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuaXNBdXRoID0gY29yZT8uaXNBdXRoIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5qd3RBdXRoID0gY29yZT8uand0QXV0aCB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcudHJhbnNsYXRlQXBwTmFtZSA9IGNvcmU/LnRyYW5zbGF0ZUFwcE5hbWUgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcucmVnaXN0ZXJMaW5rID0gY29yZT8ucmVnaXN0ZXJMaW5rIHx8IFwiaHR0cHM6Ly90aWxkZS5haS9tYWNoaW5lLXRyYW5zbGF0aW9uXCI7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLnN1cHBvcnRFbWFpbCA9IGNvcmU/LnN1cHBvcnRFbWFpbCB8fCBcIm10QHRpbGRlLmx2XCI7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmhpZGVMYW5nTWVudUxhYmVscyA9IGNvcmU/LmhpZGVMYW5nTWVudUxhYmVscyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd1ZlbmRvcnMgPSBjb3JlPy5zaG93VmVuZG9ycyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcudW5hdXRob3JpemVkUmVkaXJlY3RMaW5rID0gY29yZT8udW5hdXRob3JpemVkUmVkaXJlY3RMaW5rO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPSBjb3JlPy5tYXhEaXNwbGF5ZWRMYW5ndWFnZXMgPz8gMztcclxuICAgIHRoaXMuX2NvcmVDb25maWcudXBsb2FkSWNvbk5hbWUgPSBjb3JlPy51cGxvYWRJY29uTmFtZTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuZGVidWcgPSBjb3JlPy5kZWJ1ZztcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lID0gY29yZT8uc2hvd0RvbWFpbnNXaXRoTGFuZ3VhZ2VOYW1lIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zaG93RG9tYWlucyA9IGNvcmU/LnNob3dEb21haW5zID8/IHRydWU7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmRlZmF1bHRWZW5kb3IgPSBjb3JlPy5kZWZhdWx0VmVuZG9yID8/IFwiVGlsZGVcIjtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuZGVmYXVsdFN5c3RlbUlkID0gY29yZT8uZGVmYXVsdFN5c3RlbUlkID8/ICdBVVRPJztcclxuICAgIHRoaXMuX2NvcmVDb25maWcuc2hvd0RvbWFpblRpdGxlID0gY29yZT8uc2hvd0RvbWFpblRpdGxlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5kb21haW5TaWRlID0gY29yZT8uZG9tYWluU2lkZSA/PyBcInRyZ1wiO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zd2FwSWNvblBvc2l0aW9uID0gY29yZT8uc3dhcEljb25Qb3NpdGlvbiA/PyBcInNyY1wiO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5sYW5ndWFnZU1lbnVWZXJzaW9uID0gY29yZT8ubGFuZ3VhZ2VNZW51VmVyc2lvbiA/PyBsYW5ndWFnZU1lbnVWZXJzaW9uLlYyO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5tYXhSZWNlbnRTeXN0ZW1Db3VudCA9IGNvcmU/Lm1heFJlY2VudFN5c3RlbUNvdW50ID8/IDQ7XHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmRlZmF1bHREb21haW5zID0gY29yZT8uZGVmYXVsdERvbWFpbnMgPz8gW1wiR0VOXCIsIFwiZ2VuZXJhbFwiXTtcclxuICAgIHRoaXMuX2NvcmVDb25maWcuY29udGFjdFN1cHBvcnQgPSBjb3JlPy5jb250YWN0U3VwcG9ydCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5zdWJzY3JpcHRpb25TdXBwb3J0ID0gY29yZT8uc3Vic2NyaXB0aW9uU3VwcG9ydCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5pc1dlYkNvbXBvbmVudCA9IGNvcmU/LmlzV2ViQ29tcG9uZW50ID8/IGZhbHNlO1xyXG4gICAgdGhpcy5fY29yZUNvbmZpZy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2UgPSBjb3JlPy5kZWZhdWx0VGFyZ2V0TGFuZ3VhZ2UgPz8gJ2x2JztcclxuXHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLmFsbG93ZWRGaWxlVHlwZXMgPSBmaWxlPy5hbGxvd2VkRmlsZVR5cGVzIHx8IFtcIi5wZGZcIiwgXCIuZG9jeFwiLCBcIi5kb2NcIiwgXCIucHB0eFwiLCBcIi54bHN4XCIsIFwiLnR4dFwiLCBcIi5vZHRcIiwgXCIuaHRtbFwiLCBcIi5qc29uXCIsIFwiLnNydFwiLCBcIi5ydGZcIiwgXCIucGFnZXNcIiwgXCIuZG9jbVwiLCBcIi5vZHBcIiwgXCIub2RzXCIsIFwiLmh0bVwiLCBcIi54aHRtbFwiLCBcIi54aHRcIiwgXCIudG14XCIsIFwiLnhsZlwiLCBcIi54bGlmXCIsIFwiLnhsaWZmXCIsIFwiLnNkbHhsaWZmXCIsIFwiLnNkbHhsZlwiLCBcIi50dHhcIiwgXCIudGV4XCIsIFwiLnhtbFwiLCBcIi5zeHdcIiwgXCIuY3N2XCIsIFwiLmpwZ1wiLCBcIi5qcGVnXCIsIFwiLnBuZ1wiLCBcIi5ibXBcIl07XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLmV4dGVuZGVkRmlsZVR5cGVzID0gZmlsZT8uZXh0ZW5kZWRGaWxlVHlwZXNcclxuICAgICAgfHwgW1wiLmRvY1wiLCBcIi5kb2N4XCIsIFwiLnhsc3hcIiwgXCIucHB0eFwiLCBcIi5vZHRcIiwgXCIub2RwXCIsIFwiLm9kc1wiLCBcIi50eHRcIiwgXCIuaHRtbFwiLCBcIi5odG1cIixcclxuICAgICAgICBcIi54aHRtbFwiLCBcIi54aHRcIiwgXCIudG14XCIsIFwiLnhsZlwiLCBcIi54bGlmXCIsIFwiLnhsaWZmXCIsIFwiLnNkbHhsaWZmXCIsIFwiLnNkbHhsZlwiLCBcIi50dHhcIiwgXCIucnRmXCIsXHJcbiAgICAgICAgXCIucGFnZXNcIiwgXCIudGV4XCIsIFwiLnhtbFwiLCBcIi5qc29uXCIsIFwiLnN4d1wiLCBcIi5wZGZcIiwgXCIuY3N2XCIsIFwiLnR0bFwiLCBcIi5zcnRcIiwgXCIucG5nXCIsIFwiLmpwZ1wiLCBcIi5qcGVnXCIsIFwiLmJtcFwiXTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuZmlsZUFwaVVybCA9IGZpbGU/LmZpbGVBcGlVcmwgfHwgXCJodHRwczovL2xldHNtdC5ldS93cy9GaWxlcy9cIjtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuZmlsZURvd25sb2FkVGltZW91dHMgPSBmaWxlPy5maWxlRG93bmxvYWRUaW1lb3V0c1xyXG4gICAgICB8fCB7XHJcbiAgICAgIFwiaW5pdGlhbGl6aW5nXCI6IDEwMDAsXHJcbiAgICAgIFwiZXh0cmFjdGluZ1wiOiAxMDAwLFxyXG4gICAgICBcIndhaXRpbmdcIjogMTAwMDAsXHJcbiAgICAgIFwidHJhbnNsYXRpbmdcIjogMTAwMCxcclxuICAgICAgXCJzYXZpbmdcIjogMTAwMCxcclxuICAgICAgXCJjb21wbGV0ZWRcIjogMTAwMCxcclxuICAgICAgXCJlcnJvclwiOiAxMDAwLFxyXG4gICAgICBcInF1ZXVpbmdcIjogMTAwMFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLm1heFNpemUgPSBmaWxlPy5tYXhTaXplID09PSBudWxsID8gbnVsbCA6IChmaWxlPy5tYXhTaXplID8/ICh0aGlzLmNvcmVDb25maWcuaXNBdXRoID8gMzA3MjAwMDAgOiAxMDQ4NTc2MCkpO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5maWxlVXBsb2FkID0gZmlsZT8uZmlsZVVwbG9hZCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5vY3JQYWdlTGltaXQgPSBmaWxlPy5vY3JQYWdlTGltaXQgPz8gMTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuYWxsb3dQREZTb3VyY2VEb3dubG9hZCA9IGZpbGU/LmFsbG93UERGU291cmNlRG93bmxvYWQgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuYWxsb3dJbWFnZVNvdXJjZURvd25sb2FkID0gZmlsZT8uYWxsb3dJbWFnZVNvdXJjZURvd25sb2FkID8/IHRydWU7XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLnNvdXJjZURvd25sb2FkRXh0ZW5zaW9ucyA9IGZpbGU/LnNvdXJjZURvd25sb2FkRXh0ZW5zaW9ucyB8fCBbXCJwZGZcIiwgXCJwbmdcIiwgXCJqcGdcIiwgXCJqcGVnXCIsIFwiYm1wXCJdO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy50YXJnZXREb3dubG9hZEV4dGVuc2lvbk9yZGVyID0gZmlsZT8udGFyZ2V0RG93bmxvYWRFeHRlbnNpb25PcmRlcjtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcubnVtYmVyT2ZGaWxlc0FsbG93ZWQgPSBmaWxlPy5udW1iZXJPZkZpbGVzQWxsb3dlZCA+IDAgPyBmaWxlLm51bWJlck9mRmlsZXNBbGxvd2VkIDogMTtcclxuICAgIHRoaXMuX2ZpbGVDb25maWcuc2hvd1RyYW5zbGF0aW9uTGltaXRzID0gZmlsZT8uc2hvd1RyYW5zbGF0aW9uTGltaXRzID8/IHRydWU7XHJcbiAgICB0aGlzLl9maWxlQ29uZmlnLnVzZU11bHRpcGxlRmlsZVVwbG9hZCA9IGZpbGU/LnVzZU11bHRpcGxlRmlsZVVwbG9hZCA/PyB0cnVlO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5wcm9ncmVzc0luZGljYXRvclRpdGxlVmlzaWJsZUZvclZlbmRvcnMgPSBmaWxlPy5wcm9ncmVzc0luZGljYXRvclRpdGxlVmlzaWJsZUZvclZlbmRvcnMgPz8gW1wiRVRyYW5zbGF0aW9uXCJdO1xyXG5cclxuICAgIHRoaXMuX3RleHRDb25maWcuZGljdGlvbmFyeVVybHMgPSBbLi4udGV4dD8uZGljdGlvbmFyeVVybHMgPz8gJycsIGAke3Rlcm1Db25maWc/LnRlcm1pbm9sb2d5UG9ydGFsVXJsID8/ICdodHRwczovL3Rlcm0udGlsZGUuY29tJ30vYXBpL3Rlcm1zZXJ2aWNlL2xvb2t1cC9yZXN1bHRgXTtcclxuICAgIFxyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5tYXhDaGFyTGVuZ3RoID0gdGV4dD8ubWF4Q2hhckxlbmd0aCA/PyA1MDAwO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy53ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeCA9IHRleHQ/LndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4IHx8IFwiL3dlYnRyYW5zbGF0ZT91cmw9XCI7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4ID0gdGV4dD8ud2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXggfHwgXCJcIjtcclxuICAgIHRoaXMuX3RleHRDb25maWcudXNlRGljdGlvbmFyeSA9IHRleHQ/LnVzZURpY3Rpb25hcnkgPz8gZmFsc2U7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dBdmFpbGFibGVFeHRlbnNpb25zID0gdGV4dD8uc2hvd0F2YWlsYWJsZUV4dGVuc2lvbnMgPT0gbnVsbCA/IHRydWUgOiB0ZXh0LnNob3dBdmFpbGFibGVFeHRlbnNpb25zO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5zaG93QXV0aEV4dGVuc2lvbnMgPSB0ZXh0Py5zaG93QXV0aEV4dGVuc2lvbnMgPT0gbnVsbCA/IHRydWUgOiB0ZXh0LnNob3dBdXRoRXh0ZW5zaW9ucztcclxuICAgIHRoaXMuX3RleHRDb25maWcuYXV0b0ZvY3VzcyA9IHRleHQ/LmF1dG9Gb2N1c3M7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dFeHRlbnNpb25zVW5hdXRoT25seSA9IHRleHQ/LnNob3dFeHRlbnNpb25zVW5hdXRoT25seTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuc2hvd1NlbnNpdGl2ZUluZm9Ub29sdGlwID0gdGV4dD8uc2hvd1NlbnNpdGl2ZUluZm9Ub29sdGlwO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5hbGxvd1dlYnNpdGVUcmFuc2xhdGlvbiA9IHRleHQ/LmFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dTdWdnZXN0aW9ucyA9IHRleHQ/LnNob3dTdWdnZXN0aW9ucyA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGUgPSB0ZXh0Py5hdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZSA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuaGlnaGxpZ2h0ID0gdGV4dD8uaGlnaGxpZ2h0ID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmNoZWNrU291cmNlR3JhbW1hciA9IHRleHQ/LmNoZWNrU291cmNlR3JhbW1hciA/PyBmYWxzZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuZ3JhbW1hckNoZWNrTGFuZ3VhZ2VzID0gdGV4dD8uZ3JhbW1hckNoZWNrTGFuZ3VhZ2VzID8/IFtdO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5zaG93VGFyZ2V0UGxhY2Vob2xkZXIgPSB0ZXh0Py5zaG93VGFyZ2V0UGxhY2Vob2xkZXI7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dFeHRlbnNpb25Qb3B1cCA9IHRleHQ/LnNob3dFeHRlbnNpb25Qb3B1cDtcclxuICAgIHRoaXMuX3RleHRDb25maWcudmlzaWJsZUV4dGVuc2lvbkNvdW50ID0gdGV4dD8udmlzaWJsZUV4dGVuc2lvbkNvdW50ID8/IDM7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmhpZGVTb3VyY2VBY3Rpb25zV2hlbkhhc1RleHRNb2JpbGUgPSB0ZXh0Py5oaWRlU291cmNlQWN0aW9uc1doZW5IYXNUZXh0TW9iaWxlID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dE1pbGlTZWNvbmRzID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMgPz8gMjAwMDtcclxuICAgIHRoaXMuX3RleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JUaXRsZVZpc2libGVGb3JWZW5kb3JzID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JUaXRsZVZpc2libGVGb3JWZW5kb3JzID8/IFtcIkVUcmFuc2xhdGlvblwiXTtcclxuICAgIHRoaXMuX3RleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JWaXNpYmxlID0gdGV4dD8ucHJvZ3Jlc3NJbmRpY2F0b3JWaXNpYmxlID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnNob3dUcmFuc2xhdGVCdXR0b24gPSB0ZXh0Py5zaG93VHJhbnNsYXRlQnV0dG9uID8/IHRydWU7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLmRpc3BsYXlTaW5nbGVBdmFpbGFibGVEb21haW4gPSB0ZXh0Py5kaXNwbGF5U2luZ2xlQXZhaWxhYmxlRG9tYWluID8/IGZhbHNlO1xyXG4gICAgdGhpcy5fdGV4dENvbmZpZy5pc0F1dG9MYW5ndWFnZURldGVjdGlvbkVuYWJsZWQgPSB0ZXh0Py5pc0F1dG9MYW5ndWFnZURldGVjdGlvbkVuYWJsZWQgPz8gdHJ1ZTtcclxuICAgIHRoaXMuX3RleHRDb25maWcuc2hvd1dvcmRMaW1pdFdhcm5pbmcgPSB0ZXh0Py5zaG93V29yZExpbWl0V2FybmluZyA/PyB0cnVlO1xyXG5cclxuICAgIHRoaXMuX2xsbUNvbmZpZy5pc0VuYWJsZWQgPSBsbG0/LmlzRW5hYmxlZCA/PyBmYWxzZTtcclxuICAgIHRoaXMuX2xsbUNvbmZpZy5hcGlVcmwgPSBsbG0/LmFwaVVybCA/PyAnaHR0cHM6Ly90cmFuc2xhdGUudGlsZGUuYWkvYXBpL2xhbmd1YWdlJztcclxuICAgIHRoaXMuX2xsbUNvbmZpZy5tYXhDaGFyTGVuZ3RoID0gbGxtPy5tYXhDaGFyTGVuZ3RoID8/IDUwMDA7XHJcbiAgICB0aGlzLl9sbG1Db25maWcudXNlTG9jYWxRdW90YSA9IGxsbT8udXNlTG9jYWxRdW90YSA/PyBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5hdWRpb1RleHRJbnB1dCA9IGF1ZGlvPy5hdWRpb1RleHRJbnB1dCA/PyBmYWxzZTtcclxuICAgIC8vIE5vdCBzZXR0aW5nIGRlZmF1bHQgdXJsIGJlY2F1c2UgdGhlcmUgaXMgbm8gc2VydmljZSBwcm92aWRlZCBieSBUaWxkZSBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBkZWZhdWx0IGluIHdlYnNpdGUgcHJvamVjdC5cclxuICAgIHRoaXMuX2F1ZGlvQ29uZmlnLmF1ZGlvQXBpVXJsID0gYXVkaW8/LmF1ZGlvQXBpVXJsO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuYXVkaW9NYXhTaXplQnl0ZXMgPSBhdWRpbz8uYXVkaW9NYXhTaXplQnl0ZXMgPz8gMTAwMDAwMDA7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5zb3VyY2VMYW5ndWFnZXMgPSBhdWRpbz8uc291cmNlTGFuZ3VhZ2VzID8/IFtdO1xyXG4gICAgdGhpcy5fYXVkaW9Db25maWcuZGF0YVVwZGF0ZVRpbWVGcmFtZSA9IGF1ZGlvPy5kYXRhVXBkYXRlVGltZUZyYW1lID8/IDUwMDA7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5tYXhpbXVtUmVjb3JkVGltZSA9IGF1ZGlvPy5tYXhpbXVtUmVjb3JkVGltZSA/PyAzMDA7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5kaWN0YXRlQXBpVXJsID0gYXVkaW8/LmRpY3RhdGVBcGlVcmwgPz8gXCJydW5hLnRpbGRlLmx2XCI7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5hcHBJZCA9IGF1ZGlvPy5hcHBJZDtcclxuICAgIHRoaXMuX2F1ZGlvQ29uZmlnLmFwcFNlY3JldCA9IGF1ZGlvPy5hcHBTZWNyZXQ7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5wdW5jdHVhdGlvbk1lc3NhZ2UgPSBhdWRpbz8ucHVuY3R1YXRpb25NZXNzYWdlID8/IHRydWU7XHJcbiAgICB0aGlzLl9hdWRpb0NvbmZpZy5kaXNhYmxlQXV0b21hdGljVHJhbnNsYXRpb24gPSBhdWRpbz8uZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uID8/IHRydWU7XHJcblxyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLmxvZ29Mb2NhdGlvbiA9IHdlYnRyYW5zbGF0ZT8ubG9nb0xvY2F0aW9uIHx8ICdhc3NldHMvd2VidHJhbnNsYXRlL3RpbGRlX2xvZ28ucG5nJztcclxuICAgIHRoaXMuX3dlYnRyYW5zbGF0ZUNvbmZpZy50cmFuc2xhdGVQYWdlUGF0aCA9IHdlYnRyYW5zbGF0ZT8udHJhbnNsYXRlUGFnZVBhdGg7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcuZGVidWcgPSB3ZWJ0cmFuc2xhdGU/LmRlYnVnIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLndlYkxhbmdBdXRvZGV0ZWN0ID0gd2VidHJhbnNsYXRlPy53ZWJMYW5nQXV0b2RldGVjdCB8fCB0cnVlO1xyXG4gICAgdGhpcy5fd2VidHJhbnNsYXRlQ29uZmlnLmFsbG93U3VnZ2VzdGlvbnMgPSB3ZWJ0cmFuc2xhdGU/LmFsbG93U3VnZ2VzdGlvbnMgfHwgZmFsc2U7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcuaGlkZVBvcHVwID0gd2VidHJhbnNsYXRlPy5oaWRlUG9wdXAgfHwgZmFsc2U7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcuc2FuZGJveCA9IHdlYnRyYW5zbGF0ZT8uc2FuZGJveCA/PyBcImFsbG93LWZvcm1zIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW5cIjtcclxuICAgIHRoaXMuX3dlYnRyYW5zbGF0ZUNvbmZpZy5hcHBJZCA9IHdlYnRyYW5zbGF0ZT8uYXBwSWQ7XHJcbiAgICB0aGlzLl93ZWJ0cmFuc2xhdGVDb25maWcuaGVscFVybCA9IHdlYnRyYW5zbGF0ZT8uaGVscFVybCA/PyAnaHR0cHM6Ly9oZWxwLnRpbGRlLmFpL3RpbGRlLW10L2d1aWRlcy93ZWItdHJhbnNsYXRpb24vdHJhbnNsYXRlJztcclxuXHJcbiAgICB0aGlzLl90ZXJtQ29uZmlnLmNhbkNyZWF0ZUNvbGxlY3Rpb24gPSB0ZXJtQ29uZmlnPy5jYW5DcmVhdGVDb2xsZWN0aW9uO1xyXG4gICAgdGhpcy5fdGVybUNvbmZpZy5pc0NvbGxlY3Rpb25zQWN0aXZhdGVkID0gdGVybUNvbmZpZz8uaXNDb2xsZWN0aW9uc0FjdGl2YXRlZDtcclxuICAgIHRoaXMuX3Rlcm1Db25maWcudGVybWlub2xvZ3lQb3J0YWxVcmwgPSB0ZXJtQ29uZmlnPy50ZXJtaW5vbG9neVBvcnRhbFVybCA/PyAnaHR0cHM6Ly90ZXJtLnRpbGRlLmNvbSc7XHJcblxyXG4gICAgLy8gc2VwZXJhdGVkIGJlY2F1c2UgZm9sbG93aW5nIHVybHMgaGF2ZSBtZXRob2QgbmFtZXMgYWRkZWRcclxuICAgIHRoaXMuX3RleHRDb25maWcudXBkYXRlVHJhbnNsYXRpb25VcmwgPSB0ZXh0Py51cGRhdGVUcmFuc2xhdGlvblVybDtcclxuXHJcbiAgICB0aGlzLl9jb3JlQ29uZmlnLmFwaUJhc2VVcmwgPSBjb3JlPy5hcGlCYXNlVXJsID8/IFwiaHR0cHM6Ly90cmFuc2xhdGUudGlsZGUuYWkvYXBpXCI7XHJcbiAgICB0aGlzLl90ZXh0Q29uZmlnLnRyYW5zbGF0aW9uVXJsID0gdGV4dD8udHJhbnNsYXRpb25VcmwgPz8gdGhpcy5jb3JlQ29uZmlnLmFwaUJhc2VVcmwgKyBcIi90cmFuc2xhdGUvdGV4dFwiO1xyXG4gICAgdGhpcy5fZmlsZUNvbmZpZy5maWxlQXBpVXJsID0gZmlsZT8uZmlsZUFwaVVybCA/PyB0aGlzLmNvcmVDb25maWcuYXBpQmFzZVVybCArIFwiL3RyYW5zbGF0ZS9maWxlXCI7XHJcblxyXG4gICAgdGhpcy5fdGV4dFRvU3BlZWNoQ29uZmlnLmxhbmd1YWdlcyA9IHRleHRUb1NwZWVjaD8ubGFuZ3VhZ2VzID8/IHt9O1xyXG4gICAgdGhpcy5fdGV4dFRvU3BlZWNoQ29uZmlnLm1heENoYXJzSW5UZXh0ID0gdGV4dFRvU3BlZWNoPy5tYXhDaGFyc0luVGV4dCA/PyAzMDAwO1xyXG5cclxuICAgIC8vIE92ZXJyaWRlIHRoZXNlIHZhbHVlcyBzaW5jZSB0aGV5IGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gY3VycmVudCBhcGkuXHJcbiAgICB0aGlzLnRleHRDb25maWcuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5fcXVvdGFDb25maWcuYXBpVXJsID0gcXVvdGE/LmFwaVVybCA/PyBcImh0dHBzOi8vdHJhbnNsYXRlLnRpbGRlLmFpL2FwaS9xdW90YS91c2FnZVwiO1xyXG4gICAgdGhpcy5fcXVvdGFDb25maWcueEFwaUtleSA9IGNvcmU/LnhBcGlLZXk7XHJcbiAgICB0aGlzLl9xdW90YUNvbmZpZy5hcHBJZCA9IGNvcmU/LmFwcElkO1xyXG5cclxuICAgIHRoaXMuX3N1cHNjcmlwdGlvbkNvbmZpZy5wcmljaW5nVXJsID0gc3Vic2NyaXB0aW9uPy5wcmljaW5nVXJsID8/IFwiaHR0cHM6Ly90aWxkZS5haS9tYWNoaW5lLXRyYW5zbGF0aW9uLyNwcmljZVwiO1xyXG4gICAgdGhpcy5fc3Vwc2NyaXB0aW9uQ29uZmlnLmhhc0FjdGl2ZVN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbj8uaGFzQWN0aXZlU3Vic2NyaXB0aW9uID8/IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -315,6 +315,8 @@ export class TldTranslateTextService {
|
|
|
315
315
|
system: this.activeData
|
|
316
316
|
};
|
|
317
317
|
if ((detectedLanguage === params.system.targetLanguage) && this.systemManagementService.systems.find((system) => system.sourceLanguage === detectedLanguage)) {
|
|
318
|
+
this.dictionaryEntry = [];
|
|
319
|
+
this.hasDictionary = false;
|
|
318
320
|
this.systemManagementService.showSameLanguages(detectedLanguage);
|
|
319
321
|
this._onClear.next(null);
|
|
320
322
|
return of(this.getEmptyTranslationResponse(paragraph, params));
|
|
@@ -548,4 +550,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
548
550
|
providedIn: 'root'
|
|
549
551
|
}]
|
|
550
552
|
}], ctorParameters: function () { return [{ type: i1.TldTranslateTextApiService }, { type: i2.TldTranslateSystemManagementService }, { type: i3.TldScrollService }, { type: i2.TldTranslateConfigService }, { type: i4.TranslateService }, { type: i2.TldHighlightService }, { type: i5.AlertService }, { type: i5.TerminologyService }, { type: i6.LanguageDetectionService }, { type: i5.LanguageTranslateService }]; } });
|
|
551
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBZ0IsVUFBVSxFQUE0Qix1QkFBdUIsRUFBc0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN4SSxPQUFPLEVBQWMsT0FBTyxFQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFJNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFNeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7Ozs7O0FBT3hHLE1BQU0sT0FBTyx1QkFBdUI7SUEySGY7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsSVgsV0FBVyxDQUFTO0lBQzVCLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8scUJBQXFCLENBQVM7SUFDdEMsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVPLGFBQWEsR0FBK0IsSUFBSSxPQUFPLEVBQUUs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RUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxlQUFlO2dCQUNyRixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLHFCQUFxQixDQUFDO2FBQ3ZGLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzt3R0F4bUJVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBIdG1sSGVscGVyLCBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2UsIE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLCBUZXJtaW5vbG9neVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1lcmdlTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRleHRUb1NwZWVjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvdGV4dC10by1zcGVlY2gvbW9kZWxzL3RleHQtdG8tc3BlZWNoLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgSVRyYW5zbGF0ZVBhcmFncmFwaFJlcXVlc3RQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkSGlnaGxpZ2h0U2VydmljZSwgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkU2Nyb2xsU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMvc2Nyb2xsL3RsZC1zY3JvbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvZGljdGlvbmFyeS5tb2RlbCc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRyZWVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC10cmVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBJSGlnaGxpZ2h0VHJlZSB9IGZyb20gJy4uL21vZGVscy9oaWdobGlnaHQtdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IElQYXJhZ3JhcGhJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC5tb2RlbCc7XHJcbmltcG9ydCB7IElSZXRyYW5zbGF0ZVBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9yZXRyYW5zbGF0ZS1wYXJhbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlLXBhcmFncmFwaC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGggfSBmcm9tICcuLi9tb2RlbHMvdW50cmFuc2xhdGVkLXBhcmFncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3RsZC10cmFuc2xhdGUtdGV4dC51dGlscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvdGxkLXRyYW5zbGF0ZS10ZXh0LWFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9tb2RlbHMvYXV0by1sYW5ndWFnZS1kZXRlY3Rpb24ta2V5LmNvbnN0JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VEZXRlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcy9sYW5ndWFnZS1kZXRlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNvdXJjZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvdXJjZS1jaGFuZ2UtZXZlbnQubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9zb3VyY2VUZXh0OiBzdHJpbmc7XHJcbiAgZ2V0IHNvdXJjZVRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlVGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NvdXJjZVRleHRIeXBvdGhlc2lzOiBzdHJpbmc7XHJcbiAgZ2V0IHNvdXJjZVRleHRIeXBvdGhlc2lzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZVRleHRIeXBvdGhlc2lzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc291cmNlQ2hhbmdlOiBTdWJqZWN0PFNvdXJjZUNoYW5nZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNoYW5nZS5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9zb3VyY2VTY3JvbGw6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZVNjcm9sbCgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVNjcm9sbC5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2xhdGVCdXR0b25DbGljazogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBnZXQgdHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7IHJldHVybiB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9oYXNEaWN0aW9uYXJ5OiBib29sZWFuO1xyXG4gIGdldCBoYXNEaWN0aW9uYXJ5KCkgeyByZXR1cm4gdGhpcy5faGFzRGljdGlvbmFyeTsgfVxyXG4gIHNldCBoYXNEaWN0aW9uYXJ5KHZhbCkge1xyXG4gICAgdGhpcy5faGFzRGljdGlvbmFyeSA9IHZhbDtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaWN0aW9uYXJ5RW50cnk6IERpY3Rpb25hcnlbXTtcclxuICBnZXQgZGljdGlvbmFyeUVudHJ5KCkgeyByZXR1cm4gdGhpcy5fZGljdGlvbmFyeUVudHJ5OyB9XHJcbiAgc2V0IGRpY3Rpb25hcnlFbnRyeSh2YWwpIHtcclxuICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IHZhbDtcclxuICAgIGlmICh0aGlzLmRpY3Rpb25hcnlFbnRyeSkge1xyXG4gICAgICB0aGlzLmhhc0RpY3Rpb25hcnkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdHJhbnNsYXRlZFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhcmdldFBhcmFncmFwaHMubWFwKGxpbmUgPT4gbGluZS5vcmlnaW5hbFRleHQpLmpvaW4oXCJcXG5cIilcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ2xlYXIgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIHByZXZpb3VzVGV4dCE6IHN0cmluZztcclxuICBwcmV2aW91c0RldGVjdGVkTGFuZyE6IHN0cmluZztcclxuXHJcbiAgdXJsVG9UcmFuc2xhdGU6IHN0cmluZztcclxuICBwYXJhZ3JhcGhzOiBJUGFyYWdyYXBoSW5mb1tdID0gW107XHJcbiAgc291cmNlUGFyYWdyYXBoczogSUhpZ2hsaWdodFRyZWVbXSA9IFtdO1xyXG4gIHRhcmdldFBhcmFncmFwaHM6IElIaWdobGlnaHRUcmVlW10gPSBbXTtcclxuXHJcbiAgaXNTeXN0ZW1XYWtpbmdVcCE6IGJvb2xlYW47XHJcbiAgdHJnTGFuZ0JlZm9yZURldGVjdCE6IHN0cmluZztcclxuICBpc1Vuc3VwcG9ydGVkTGFuZ1dhcm5pbmdWaXNpYmxlITogYm9vbGVhbjtcclxuXHJcbiAgLy8gU2V0IHRoaXMgb2JqZWN0IHdpdGggbmVjZXNzYXJ5IHZhbHVlcyB0byBkaXNwbGF5IFRUUyBjb21wb25lbnRcclxuICB0ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5nczogVGV4dFRvU3BlZWNoU2V0dGluZ3M7XHJcbiAgdGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3M6IFRleHRUb1NwZWVjaFNldHRpbmdzO1xyXG5cclxuICBwcml2YXRlIF9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQ6IGJvb2xlYW47XHJcbiAgZ2V0IGZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpY3Rpb25hcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHBhcmFncmFwaFRyYW5zbGF0aW9uc1N1YmplY3QgPSBuZXcgU3ViamVjdDxJVW50cmFuc2xhdGVkUGFyYWdyYXBoPigpO1xyXG4gIHByaXZhdGUgcGFyYWdyYXBoVHJhbnNsYXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlcjogU3ViamVjdDxTb3VyY2VDaGFuZ2VFdmVudD4gPSBuZXcgU3ViamVjdDxTb3VyY2VDaGFuZ2VFdmVudD4oKTtcclxuICBwcml2YXRlIGRlYm91bmNlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBIb3cgbWFueSBwYXJhZ3JhcGhzIGNhbiBiZSB0cmFuc2xhdGVkIGF0IHRoZSBzYW1lIHRpbWUuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT05DVVJSRU5UX1VQTE9BRFMgPSA1O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVCT1VOQ0VfVElNRSA9IDEwMDA7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhbmRieUVuZ2luZU5vdGlmaWNhdGlvbkVycm9yS2V5ID0gJzIxJztcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YW5kYnlTeXN0ZW1SZXRyYW5zbGF0aW9uVGltZW91dCA9IDMwMDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVUZXJtQ29sbGVjdGlvbk5vdEZvdW5kRXJyb3JLZXkgPSAnNDA0MjAxJztcclxuXHJcbiAgLyoqIFdoZXRoZXIgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCBiZSBzaG93bi4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNldCB0byB0cnVlIG9ubHkgaWYgY29uZmlndXJlZCB0aW1lIGhhcyBwYXNzZWQuICovXHJcbiAgcHJpdmF0ZSBfc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gZmFsc2U7XHJcbiAgZ2V0IHNob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcigpIHsgcmV0dXJuIHRoaXMuX3Nob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcjsgfVxyXG4gIC8vTm9kZUpTLlRpbWVvdXRcclxuICBwcml2YXRlIHByb2dyZXNzSW5kaWNhdG9yVGltZW91dDogYW55O1xyXG5cclxuICBwcml2YXRlIF91bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgZ2V0IHVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50KCkgeyByZXR1cm4gdGhpcy5fdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQ7IH1cclxuICBzZXQgdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgPSB2YWx1ZTtcclxuICAgIC8vIFdoZW4gdHJhbnNsYXRpb24gZmluaXNoZWQsIHByb2dyZXNzIGluZGljYXRvciBzaG91bGQgbm90IGJlIHNob3duLlxyXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgIHRoaXMuaGlkZVByb2dyZXNzSW5kaWNhdG9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUcmFuc2xhdGluZygpIHsgcmV0dXJuIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgPiAwIHx8IHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCB9XHJcblxyXG4gIC8vIGdldHRlcnMgZnJvbSBjb25maWcgc2VydmljZS5cclxuICBnZXQgYWxsb3dXZWJzaXRlVHJhbnNsYXRpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy5hbGxvd1dlYnNpdGVUcmFuc2xhdGlvbjsgfTtcclxuICBnZXQgYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy5hdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZTsgfTtcclxuICBnZXQgd2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXgoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4OyB9O1xyXG4gIGdldCB3ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcud2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXg7IH07XHJcbiAgZ2V0IHVzZURpY3Rpb25hcnkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy51c2VEaWN0aW9uYXJ5OyB9O1xyXG4gIGdldCBwcm9ncmVzc0luZGljYXRvclRpbWVvdXRNaWxpU2Vjb25kcygpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHM7IH1cclxuICBnZXQgdGVybWlub2xvZ3lQb3J0YWxVcmwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXJtQ29uZmlnLnRlcm1pbm9sb2d5UG9ydGFsVXJsOyB9XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgZ2V0IGFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc2xhdGVVcmxSZWRpcmVjdCgpIHtcclxuICAgIGlmICh0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4ID09PSAnJykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy53ZWJXaWRnZXRSZWRpcmVjdFVybFByZWZpeH0ke3RoaXMud2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXh9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy51cmxUb1RyYW5zbGF0ZSl9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4fSR7dGhpcy50cmFuc2xhdGUuY3VycmVudExhbmd9JHt0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4fSR7dGhpcy51cmxUb1RyYW5zbGF0ZX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIElmIGRpY3RhdHRpb24gaXMgYWN0aXZlLiBCYXNlZCBvbiB0aGlzLCBleHRlbnNpb25zIGFyZSBoaWRkZW4uICovXHJcbiAgaXNEaWN0YXRpbmc6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGk6IFRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1NYW5hZ2VtZW50U2VydmljZTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFNjcm9sbFNlcnZpY2U6IFRsZFNjcm9sbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZTogVGxkSGlnaGxpZ2h0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzU2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtaW5vbG9neVNlcnZpY2U6IFRlcm1pbm9sb2d5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2U6IExhbmd1YWdlRGV0ZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VUcmFuc2xhdGU6IExhbmd1YWdlVHJhbnNsYXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgY2hhbmdlU291cmNlKGV2ZW50OiBTb3VyY2VDaGFuZ2VFdmVudCkge1xyXG4gICAgaWYgKCFldmVudC5waHJhc2UudHJpbSgpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl9vbkNsZWFyLm5leHQobnVsbCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3RpdmVEYXRhPy5kZXRlY3RlZExhbmd1YWdlKSB7XHJcbiAgICAgICAgdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zZXREZXRlY3RlZExhbmd1YWdlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuX3NvdXJjZVRleHQgPSBldmVudC5waHJhc2U7XHJcbiAgICB0aGlzLl9zb3VyY2VDaGFuZ2UubmV4dChldmVudCk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvdXJjZUh5cG90aGVzaXModGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zb3VyY2VUZXh0SHlwb3RoZXNpcyA9IHRleHQ7XHJcbiAgfVxyXG5cclxuICBvblNvdXJjZVNjcm9sbChvZmZzZXRUb3A6IG51bWJlcikge1xyXG4gICAgdGhpcy5fc291cmNlU2Nyb2xsLm5leHQob2Zmc2V0VG9wKTtcclxuICB9XHJcblxyXG4gIG9uVHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5uZXh0KG51bGwpXHJcbiAgICB0aGlzLnJldHJhbnNsYXRlKHsgYnV0dG9uQ2xpY2tlZDogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU291cmNlKCkge1xyXG4gICAgdGhpcy5fb25DbGVhci5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5yZXNldERldGVjdGVkTGFuZ3VhZ2UoKTtcclxuICAgIHRoaXMuY2hhbmdlU291cmNlKHsgcGhyYXNlOiBcIlwiIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmFuc2xhdGlvbihvcHRpb25zOiBzdHJpbmcsIHN5c3RlbUlEOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgdHJhbnNsYXRpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpLnVwZGF0ZVRyYW5zbGF0aW9uKG9wdGlvbnMsIHN5c3RlbUlELCB0ZXh0LCB0cmFuc2xhdGlvbik7XHJcbiAgfVxyXG5cclxuICBsaXN0ZW5PbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uID0gdGhpcy5kZWJvdW5jZXIucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzLnBocmFzZSA9PSB0aGlzLnNvdXJjZVRleHQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZShldiA9PiBldi5waHJhc2U/Lmxlbmd0aCA+IDAgPyB0aW1lcih0aGlzLkRFQk9VTkNFX1RJTUUpIDogdGltZXIoMCkpXHJcbiAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRTZXJ2aWNlLmNoYW5nZVNlbGVjdGVkVGFyZ2V0U2VudGVuY2UobnVsbCk7XHJcblxyXG4gICAgICAgIGlmICghZXZlbnQuZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BMaXN0ZW5pbmdUb0NoYW5nZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRlYm91bmNlclN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBpZiBtZXRob2QgZ2V0cyBjYWxsZWQgYmVjYXVzZSBvZiBidXR0b24gY2xpY2sgYW5kIHVybCBlbnRlcmVkIC0gZ28gdG8gd2ViIHRyYW5zbGF0aW9uXHJcbiAgcmV0cmFuc2xhdGUocGFyYW1zPzogSVJldHJhbnNsYXRlUGFyYW1zLCBkZXRlY3RlZExhbmd1YWdlPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc291cmNlVGV4dD8udHJpbSgpIHx8IHRoaXMuc291cmNlVGV4dD8udHJpbSgpID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5jbGVhclNvdXJjZVBhcmFtcygpO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJhbXM/LmJ1dHRvbkNsaWNrZWQgfHwgcGFyYW1zPy5zeXN0ZW1DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJTb3VyY2VQYXJhbXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWRldGVjdGVkTGFuZ3VhZ2UgJiYgKHRoaXMuYWN0aXZlRGF0YS5zb3VyY2VMYW5ndWFnZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIHx8IHRoaXMuYWN0aXZlRGF0YS5kZXRlY3RlZExhbmd1YWdlKSkgeyBcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuc291cmNlVGV4dC5yZXBsYWNlKCdcXG4nLCAnICcpO1xyXG5cclxuICAgICAgaWYgKHRleHQgPT09IHRoaXMucHJldmlvdXNUZXh0KSB7XHJcbiAgICAgICAgZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMucHJldmlvdXNEZXRlY3RlZExhbmc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5kZXRlY3QodGV4dCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAvLyBkaXNwbGF5aW5nIGVuZ2xpc2ggbGFuZ3VhZ2UsIGlmIHRleHQgaXMgdW5kZXRlY3RhYmxlXHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKHBhcmFtcywgcmVzLmRldGVjdGVkTGFuZ3VhZ2UgPz8gJ2VuJyk7XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzRGV0ZWN0ZWRMYW5nID0gcmVzLmRldGVjdGVkTGFuZ3VhZ2UgPz8gJ2VuJztcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3RpdmVTeXN0ZW1JZCA9IHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0QWN0aXZlU3lzdGVtT2JqKCkuaWQ7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbGxlY3Rpb24gPSB0aGlzLnRlcm1pbm9sb2d5U2VydmljZS5lbmdpbmVzW2FjdGl2ZVN5c3RlbUlkXT8uc2VsZWN0ZWQ7XHJcbiAgICAvLyBpZiBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRlZCB3ZSB3YW50IHRvIGF2b2lkIGluc3RhbnQgdHJhbnNsYXRpb25cclxuICAgIGlmIChzZWxlY3RlZENvbGxlY3Rpb24gJiYgIXNlbGVjdGVkQ29sbGVjdGlvbj8ubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKHtidXR0b25DbGlja2VkOiB0cnVlfSwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICAgICAgfSwgMzAwMCkgICAgICBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1heFNvdXJjZUNoYXJhY3RlckRpY3Rpb25hcnkgPSAyMDA7XHJcbiAgICBjb25zdCBtYXhEaWN0aW9uYXJ5V29yZHMgPSAxMjtcclxuXHJcbiAgICBjb25zdCB3b3Jkc0luU291cmNlID0gSHRtbEhlbHBlci5nZXRXb3JkQ291bnQodGhpcy5zb3VyY2VUZXh0KTtcclxuICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBIdG1sSGVscGVyLmlzVGV4dFVybCh0aGlzLnNvdXJjZVRleHQpO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uICYmIHRoaXMudXJsVG9UcmFuc2xhdGUpIHtcclxuICAgICAgdGhpcy5wYXJhZ3JhcGhzID0gW107XHJcbiAgICAgIHRoaXMuc291cmNlUGFyYWdyYXBocyA9IFtdO1xyXG4gICAgICB0aGlzLnRhcmdldFBhcmFncmFwaHMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF1dG9SZWRpcmVjdFRvV2ViVHJhbnNsYXRlIHx8IHBhcmFtcz8uYnV0dG9uQ2xpY2tlZCkge1xyXG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMudHJhbnNsYXRlVXJsUmVkaXJlY3QsIFwiX2JsYW5rXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBpZiAodGhpcy51c2VEaWN0aW9uYXJ5ICYmIHRoaXMuc291cmNlVGV4dC5sZW5ndGggPCBtYXhTb3VyY2VDaGFyYWN0ZXJEaWN0aW9uYXJ5ICYmIHdvcmRzSW5Tb3VyY2UgPD0gbWF4RGljdGlvbmFyeVdvcmRzKSB7XHJcbiAgICAgIHRoaXMucHJlcGFyZUFuZFRyYW5zbGF0ZVdvcmRzKGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICAvKiogU3RvcHMgdGV4dCB0cmFuc2xhdGlvbiBpZiBpdCBpcyBhY3RpdmUuICovXHJcbiAgc3RvcFRyYW5zbGF0aW9uKCkge1xyXG4gICAgdGhpcy51bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGljdGlvbmFyeVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSByZXNldERldGVjdGVkTGFuZ3VhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcuaXNBdXRvTGFuZ3VhZ2VEZXRlY3Rpb25FbmFibGVkICYmIHRoaXMuYWN0aXZlRGF0YT8uZGV0ZWN0ZWRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnNldERldGVjdGVkTGFuZ3VhZ2UobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlY3JlYXRlUGFyYWdyYXBoVHJhbnNsYXRpb25TdWJqZWN0KGRldGVjdGVkTGFuZ3VhZ2U/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8SVVudHJhbnNsYXRlZFBhcmFncmFwaD4oKTtcclxuXHJcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZVRleHQ7XHJcbiAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID0gMDtcclxuICAgIHRoaXMucGFyYWdyYXBoVHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKHVudHJhbnNsYXRlZFBhcmFncmFwaCkgPT4ge1xyXG4gICAgICAgIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgKz0gMTtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVQYXJhZ3JhcGgodW50cmFuc2xhdGVkUGFyYWdyYXBoLCBkZXRlY3RlZExhbmd1YWdlKS5waXBlKFxyXG4gICAgICAgICAgdGFwKChyZXNwb25zZTogSVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gaGFuZGxlIHJlc3BvbnNlIGlmIHNvdXJjZSB0ZXh0IGhhcyBjaGFuZ2VkLlxyXG4gICAgICAgICAgICBpZiAoc291cmNlICE9IHRoaXMuc291cmNlVGV4dCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0ZWRQYXJhZ3JhcGgocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhcmFncmFwaHModW50cmFuc2xhdGVkUGFyYWdyYXBoLml4LCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgLT0gMTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID09PSAwICYmIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS5kZWxldGVNZXNzYWdlKE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLklORk8sICdFUlJPUlMuRV8yMScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBlcnIuZXJyb3I7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50IC09IDE7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydHNTZXJ2aWNlLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogRXJyb3JDb2RlLlRSQU5TTEFUSU9OX0ZBSUxFRCB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvcj8uRXJyb3JDb2RlID09PSB0aGlzLnN0YW5kYnlFbmdpbmVOb3RpZmljYXRpb25FcnJvcktleSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS5pbmZvKCdFUlJPUlMuRV8yMScpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXRyYW5zbGF0ZSgpO1xyXG4gICAgICAgICAgICAgIH0sIHRoaXMuc3RhbmRieVN5c3RlbVJldHJhbnNsYXRpb25UaW1lb3V0KVxyXG5cclxuICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3I/LmVycm9yPy5jb2RlID09IHRoaXMuZW5naW5lVGVybUNvbGxlY3Rpb25Ob3RGb3VuZEVycm9yS2V5KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydHNTZXJ2aWNlLmVycm9yKCdFUlJPUlMuRV80MDQyMDEnLCBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS51bmhhbmRlbGVkRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgc3ViamVjdCBpcyBkZXN0cm95ZWQgYW5kIHVuc3Vic2NyaWJlZCwgc28gdGhyb3duIGVycm9yIHdvbnQgaGF2ZSBhbnkgZWZmZWN0LlxyXG4gICAgICAgICAgICB0aGlzLnN0b3BUcmFuc2xhdGlvbigpO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgfSwgdGhpcy5DT05DVVJSRU5UX1VQTE9BRFMpLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlUGFyYWdyYXBoKHBhcmFncmFwaDogSVVudHJhbnNsYXRlZFBhcmFncmFwaCwgZGV0ZWN0ZWRMYW5ndWFnZT86IHN0cmluZyk6IE9ic2VydmFibGU8SVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXF1ZXN0UGFyYW1zID0ge1xyXG5cdFx0XHRwYXJhZ3JhcGhJeDogcGFyYWdyYXBoLml4LFxyXG5cdFx0XHR0ZXh0OiBwYXJhZ3JhcGgubGluZSxcclxuXHRcdFx0c3lzdGVtOiB0aGlzLmFjdGl2ZURhdGFcclxuXHRcdH07XHJcblxyXG4gICAgaWYgKChkZXRlY3RlZExhbmd1YWdlID09PSBwYXJhbXMuc3lzdGVtLnRhcmdldExhbmd1YWdlKSAmJiB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnN5c3RlbXMuZmluZCgoc3lzdGVtKSA9PiBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IGRldGVjdGVkTGFuZ3VhZ2UpKSB7XHJcbiAgICAgIHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2Uuc2hvd1NhbWVMYW5ndWFnZXMoZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICAgIHRoaXMuX29uQ2xlYXIubmV4dChudWxsKTtcclxuXHJcbiAgICAgIHJldHVybiBvZih0aGlzLmdldEVtcHR5VHJhbnNsYXRpb25SZXNwb25zZShwYXJhZ3JhcGgsIHBhcmFtcykpO1xyXG4gICAgfVxyXG5cclxuXHRcdGlmICghcGFyYW1zLnRleHQgfHwgcGFyYW1zLnRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRyZXR1cm4gb2YodGhpcy5nZXRFbXB0eVRyYW5zbGF0aW9uUmVzcG9uc2UocGFyYWdyYXBoLCBwYXJhbXMsIHRydWUpKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZGV0ZWN0ZWRMYW5ndWFnZSAmJiAoZGV0ZWN0ZWRMYW5ndWFnZSAhPT0gcGFyYW1zLnN5c3RlbS5kZXRlY3RlZExhbmd1YWdlKSkge1xyXG5cdFx0XHRwYXJhbXMuc3lzdGVtLmRvbWFpbiA9IFwiXCI7XHJcblx0XHRcdHBhcmFtcy5zeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSA9IGRldGVjdGVkTGFuZ3VhZ2U7XHJcblxyXG5cdFx0XHRjb25zdCBlbmdpbmUgPSB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnN5c3RlbXMuZmluZCgoc3lzdGVtKSA9PiBcclxuICAgICAgICBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IGRldGVjdGVkTGFuZ3VhZ2UgJiYgcGFyYW1zLnN5c3RlbS50YXJnZXRMYW5ndWFnZSA9PT0gc3lzdGVtLnRhcmdldExhbmd1YWdlXHJcbiAgICAgICk7XHJcblxyXG5cdFx0XHR0aGlzLl9vbkNsZWFyLm5leHQobnVsbCk7XHJcblxyXG5cdFx0XHRpZiAoZW5naW5lKSB7XHJcblx0XHRcdFx0dGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zZXREZXRlY3RlZExhbmd1YWdlKGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG4gICAgICAgIC8vIGRpc3BsYXlpbmcgdGhhdCBlbmdpbmUgbm90IGZvdW5kLlxyXG4gICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS53YXJuaW5nKCdFUlJPUlMuREVURUNUSU9OLlVOQVZBSUxBQkxFJywge1xyXG4gICAgICAgICAgc3JjTGFuZzogdGhpcy5sYW5ndWFnZVRyYW5zbGF0ZS5nZXRMYW5ndWFnZUNvZGVUcmFuc2xhdGlvbihkZXRlY3RlZExhbmd1YWdlKSxcclxuICAgICAgICAgIHRyZ0xhbmc6IHRoaXMubGFuZ3VhZ2VUcmFuc2xhdGUuZ2V0TGFuZ3VhZ2VDb2RlVHJhbnNsYXRpb24ocGFyYW1zLnN5c3RlbS50YXJnZXRMYW5ndWFnZSksXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaXNVbnN1cHBvcnRlZExhbmdXYXJuaW5nVmlzaWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIHByZXNldGluZyBzeXN0ZW0gd2l0aCBzcmNMYW5nIHNhbWUgYXMgZGV0ZWN0ZWRMYW5ndWFnZSAodGFyZ2V0IGlzIHJhbmRvbSBoZXJlKVxyXG4gICAgICAgIGlmICh0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnN5c3RlbXMuZmluZCgoc3lzdGVtKSA9PiBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IGRldGVjdGVkTGFuZ3VhZ2UpKSB7XHJcbiAgICAgICAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnNldERldGVjdGVkTGFuZ3VhZ2UoZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICAgICAgICB0aGlzLnRyZ0xhbmdCZWZvcmVEZXRlY3QgPSBwYXJhbXMuc3lzdGVtLnRhcmdldExhbmd1YWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc2V0RGV0ZWN0ZWRMYW5ndWFnZSgpOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZ2V0RW1wdHlUcmFuc2xhdGlvblJlc3BvbnNlKHBhcmFncmFwaCwgcGFyYW1zLCBmYWxzZSwgdHJ1ZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cdFx0fVxyXG5cclxuICAgIC8vIHdlIHNob3VsZCBjbGVhciB1bmF2YWlsYWJsZSBub3RpZmljYXRpb24gYWZ0ZXIgbWFudWFsIGxhbmd1YWdlIHNlbGVjdGlvbiwgYnV0IG5vdCB3aGVuIHdlIGhhdmUgcHJlc2V0ZWQgZW5naW5lIHdpdGggcmFuZG9tIHRhcmdldCBsYW5ndWFnZVxyXG4gICAgaWYgKHRoaXMuaXNVbnN1cHBvcnRlZExhbmdXYXJuaW5nVmlzaWJsZSAmJiAoIXRoaXMudHJnTGFuZ0JlZm9yZURldGVjdCB8fCB0aGlzLnRyZ0xhbmdCZWZvcmVEZXRlY3QgJiYgIXBhcmFtcy5zeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSkpIHtcclxuXHRcdFx0dGhpcy5fb25DbGVhci5uZXh0KG51bGwpO1xyXG4gICAgICB0aGlzLmlzVW5zdXBwb3J0ZWRMYW5nV2FybmluZ1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hcGkudHJhbnNsYXRlUGFyYWdyYXBoKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVtcHR5VHJhbnNsYXRpb25SZXNwb25zZShwYXJhZ3JhcGg6IElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGgsIHBhcmFtczogSVRyYW5zbGF0ZVBhcmFncmFwaFJlcXVlc3RQYXJhbXMsIGxlYXZlQWxsRW1wdHk/OiBib29sZWFuLCBsZWF2ZVRhcmdldEVtcHR5PzogYm9vbGVhbik6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzb3VyY2VUcmVlOiB7IHRleHQ6IGxlYXZlQWxsRW1wdHkgPyAnJyA6IHBhcmFncmFwaC5saW5lLCBwYXJhZ3JhcGhJeDogcGFyYW1zLnBhcmFncmFwaEl4LCB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5QQVJBR1JBUEgsIHJvb3Q6IG51bGwsIG9yaWdpbmFsVGV4dDogbGVhdmVBbGxFbXB0eSA/ICcnIDogcGFyYWdyYXBoLmxpbmUgfSxcclxuICAgICAgdGFyZ2V0VHJlZTogeyB0ZXh0OiBsZWF2ZVRhcmdldEVtcHR5IHx8IGxlYXZlQWxsRW1wdHkgPyAnJyA6IHBhcmFncmFwaC5saW5lLCBwYXJhZ3JhcGhJeDogcGFyYW1zLnBhcmFncmFwaEl4LCB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5QQVJBR1JBUEgsIHJvb3Q6IG51bGwsIG9yaWdpbmFsVGV4dDogbGVhdmVBbGxFbXB0eSA/ICcnIDogcGFyYWdyYXBoLmxpbmUgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVUcmFuc2xhdGVkUGFyYWdyYXBoKHBhcmFncmFwaDogSVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlKSB7XHJcbiAgICAvL2lmIGF1dG8gZG9tYWluIGRldGVjdGlvbiBpcyBvbiwgc3lzdGVtIGFwaSBzZXJ2aWNlIHNldHMgc3lzdGVtIGlkIHRvIGAke3NyY0xhbmd9LSR7dGFyZ2V0TGFuZ31gIHNvIHdlIG5lZWQgdG8gdmFsaWRhdGUgaWYgdGhhdCBpcyB0aGUgY2FzZVxyXG4gICAgaWYgKHBhcmFncmFwaC5zeXN0ZW1JZCAmJiB0aGlzLmFjdGl2ZURhdGEuaWQgIT09IHBhcmFncmFwaC5zeXN0ZW1JZFxyXG4gICAgICAmJiB0aGlzLmFjdGl2ZURhdGEuaWQgPT09IGAke3RoaXMuYWN0aXZlRGF0YS5zb3VyY2VMYW5ndWFnZX0tJHt0aGlzLmFjdGl2ZURhdGEudGFyZ2V0TGFuZ3VhZ2V9YCkge1xyXG4gICAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLmNoYW5nZVN5c3RlbShwYXJhZ3JhcGguc3lzdGVtSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lZWRzIHRvIHNjcm9sbCB0byB0b3AgYWZ0ZXIgZmlyc3QgcGFyYWdyYXBoIGlzIHRyYW5zbGF0ZWQuXHJcbiAgICBpZiAoIXRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCkge1xyXG4gICAgICAvLyBpZiBlbXB0eSBwYXJhZ3JhcGggaXMgJ3RyYW5zbGF0ZWQnIGZpcnN0LCBubyBuZWVkIHRvIGRvIGFueSBzY3JvbGxpbmcuIFdhaXQgZm9yIHJlYWwgdGV4dCB0byBiZSB0cmFuc2xhdGVkLlxyXG4gICAgICBpZiAocGFyYWdyYXBoLnRhcmdldFRyZWUudGV4dC50cmltKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50bGRTY3JvbGxTZXJ2aWNlLnN5bmNTY3JvbGxiYXJzKG51bGwsIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcmFncmFwaHMocGFyYWdyYXBoSXg6IG51bWJlciwgcmVzcG9uc2U6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSkge1xyXG4gICAgbGV0IHBhcmFncmFwaDogSVBhcmFncmFwaEluZm8gPSB7XHJcbiAgICAgIGl4OiBwYXJhZ3JhcGhJeCxcclxuICAgICAgdGFyZ2V0OiByZXNwb25zZS50YXJnZXRUcmVlLFxyXG4gICAgICBzb3VyY2U6IHJlc3BvbnNlLnNvdXJjZVRyZWVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYXJhZ3JhcGhzLnNwbGljZShwYXJhZ3JhcGhJeCwgMSwgcGFyYWdyYXBoKTtcclxuICAgIHRoaXMuc291cmNlUGFyYWdyYXBocy5zcGxpY2UocGFyYWdyYXBoSXgsIDEsIHJlc3BvbnNlLnNvdXJjZVRyZWUpO1xyXG4gICAgdGhpcy50YXJnZXRQYXJhZ3JhcGhzLnNwbGljZShwYXJhZ3JhcGhJeCwgMSwgcmVzcG9uc2UudGFyZ2V0VHJlZSk7XHJcblxyXG4gICAgdGhpcy5wYXJhZ3JhcGhzLnNvcnQoKGEsIGIpID0+IChhLml4ID4gYi5peCkgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNvdXJjZVBhcmFtcygpIHtcclxuICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IG51bGw7XHJcbiAgICB0aGlzLl9oYXNEaWN0aW9uYXJ5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhcmFncmFwaHMgPSBbXTtcclxuICAgIHRoaXMudGFyZ2V0UGFyYWdyYXBocyA9IFtdO1xyXG4gICAgdGhpcy5zb3VyY2VQYXJhZ3JhcGhzID0gW107XHJcbiAgICB0aGlzLnVybFRvVHJhbnNsYXRlID0gbnVsbDtcclxuICAgIHRoaXMudGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3MgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncyA9IG51bGw7XHJcbiAgICB0aGlzLnN0b3BUcmFuc2xhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQW5kVHJhbnNsYXRlV29yZHMoZGV0ZWN0ZWRMYW5ndWFnZT86IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlRGF0YS5zb3VyY2VMYW5ndWFnZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZICYmICF0aGlzLmFjdGl2ZURhdGEuZGV0ZWN0ZWRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5zb3VyY2VUZXh0LCBkZXRlY3RlZExhbmd1YWdlKTtcclxuICAgICAgdGhpcy5oYXNEaWN0aW9uYXJ5ID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWN0aW9uYXJ5ID0gdGhpcy5hcGkuZGljdGlvbmFyeVRyYW5zbGF0aW9uKHRoaXMuc291cmNlVGV4dC50cmltKCksIHRoaXMuYWN0aXZlRGF0YS5kZXRlY3RlZExhbmd1YWdlID8/IHRoaXMuYWN0aXZlRGF0YS5zb3VyY2VMYW5ndWFnZSwgdGhpcy5hY3RpdmVEYXRhLnRhcmdldExhbmd1YWdlKTtcclxuXHJcblx0XHR0aGlzLmRpY3Rpb25hcnlTdWJzY3JpcHRpb24gPSBkaWN0aW9uYXJ5LnJlcXVlc3Quc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRpY3Rpb25hcnlFbnRyeSA9IFtdO1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5zZXREaWN0aW9uYXJ5VGVybXMocmVzcG9uc2UsIGRpY3Rpb25hcnkudXJscyk7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVycm9yOiAoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcblx0XHRcdFx0dGhpcy5oYXNEaWN0aW9uYXJ5ID0gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG4gIHByaXZhdGUgc2V0RGljdGlvbmFyeVRlcm1zKHJlc3BvbnNlOiBEaWN0aW9uYXJ5W11bXSwgdXJsczogc3RyaW5nW10pOiB2b2lkIHtcclxuXHRcdHJlc3BvbnNlLmZvckVhY2goKHJlcywgaSkgPT4ge1xyXG5cdFx0XHRyZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGlzVGlsZGVUZXJtQ29sbGVjdGlvbiA9IHVybHNbaV0uaW5jbHVkZXMoJ3RpbGRlJyk7XHJcblx0XHRcdFx0Y29uc3QgdGVybVdpdGhTb3VyY2UgPSB7XHJcblx0XHRcdFx0XHQuLi5pdGVtLFxyXG5cdFx0XHRcdFx0ZGljdGlvbmFyeURvbWFpblVybDogaXNUaWxkZVRlcm1Db2xsZWN0aW9uID8gbnVsbCA6IHVybHNbaV0sXHJcblx0XHRcdFx0XHRzb3VyY2VMYWJlbDogaXNUaWxkZVRlcm1Db2xsZWN0aW9uID8gJ1RpbGRlIFRlcm0nIDogbnVsbCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRjb25zdCB0ZXJtU3VtbWFyeSA9IHRlcm1XaXRoU291cmNlLmxhbmd1YWdlU3VtbWFyaWVzPy5maW5kKChzdW1tYXJ5KSA9PiBzdW1tYXJ5LmxhbmcgPT09IHRoaXMuYWN0aXZlRGF0YS50YXJnZXRMYW5ndWFnZSk7XHJcblxyXG5cdFx0XHRcdGlmICh0ZXJtU3VtbWFyeSkge1xyXG5cdFx0XHRcdFx0Y29uc3QgY29sbGVjdGlvbkVudHJ5ID0gdGVybVdpdGhTb3VyY2UuZW50cnlTdW1tYXJpZXNbMF07XHJcblx0XHRcdFx0XHRjb25zdCBjb2xsZWN0aW9uSWQgPSBjb2xsZWN0aW9uRW50cnkuY29sbGVjdGlvbklkO1xyXG5cdFx0XHRcdFx0Y29uc3QgY29sbGVjdGlvblRhcmdldFdvcmQgPSB0ZXJtU3VtbWFyeS50ZXJtc1swXS50ZXJtO1xyXG5cdFx0XHRcdFx0Y29uc3QgY29sbGVjdGlvblVybCA9IHRlcm1XaXRoU291cmNlLmRpY3Rpb25hcnlEb21haW5VcmxcclxuXHRcdFx0XHRcdFx0PyBgaHR0cHM6Ly8ke3Rlcm1XaXRoU291cmNlLmRpY3Rpb25hcnlEb21haW5Vcmx9L2NvbGxlY3Rpb25zLyR7Y29sbGVjdGlvbklkfWBcclxuXHRcdFx0XHRcdFx0OiBgJHt0aGlzLnRlcm1pbm9sb2d5UG9ydGFsVXJsfS9jb2xsZWN0aW9ucy90ZXJtLyR7Y29sbGVjdGlvbklkfWA7XHJcblxyXG5cdFx0XHRcdFx0aWYgKCF0aGlzLmRpY3Rpb25hcnlFbnRyeS5zb21lKCh0ZXJtKSA9PiB0ZXJtLnRhcmdldFdvcmQgPT09IGNvbGxlY3Rpb25UYXJnZXRXb3JkICYmIHRlcm0udGVybVNvdXJjZSA9PT0gY29sbGVjdGlvbkVudHJ5LmNvbGxlY3Rpb25OYW1lKSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmRpY3Rpb25hcnlFbnRyeS5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHQuLi50ZXJtV2l0aFNvdXJjZSxcclxuXHRcdFx0XHRcdFx0XHR0YXJnZXRXb3JkOiBjb2xsZWN0aW9uVGFyZ2V0V29yZCxcclxuXHRcdFx0XHRcdFx0XHR0ZXJtU291cmNlOiBjb2xsZWN0aW9uRW50cnkuY29sbGVjdGlvbk5hbWUsXHJcblx0XHRcdFx0XHRcdFx0Y29sbGVjdGlvblVybDogY29sbGVjdGlvblVybCxcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMucmVtb3ZlRGljdGlvbmFyeURyYWZ0cygpO1xyXG5cdFx0dGhpcy5oYXNEaWN0aW9uYXJ5ID0gdGhpcy5kaWN0aW9uYXJ5RW50cnkubGVuZ3RoID4gMDtcclxuXHR9XHJcbiAgXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVUZXh0KHRleHQ6IHN0cmluZywgZGV0ZWN0ZWRMYW5ndWFnZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgcGFyYWdyYXBocyA9IEh0bWxIZWxwZXIuc3BsaXRJblBhcmFncmFwaHModGV4dCk7XHJcbiAgICBjb25zdCBuZXdQYXJhZ3JhcGhzOiBJUGFyYWdyYXBoSW5mb1tdID0gW107XHJcbiAgICBjb25zdCBuZXdTb3VyY2VQYXJhZ3JhcGhzOiBJSGlnaGxpZ2h0VHJlZVtdID0gW107XHJcbiAgICBjb25zdCBuZXdUYXJnZXRQYXJhZ3JhcGhzOiBJSGlnaGxpZ2h0VHJlZVtdID0gW107XHJcblxyXG4gICAgLy8gc291cmNlIHRleHQgY2hhbmdlZC4gUHJldmlvdXNseSBtYWRlIG9ic2VydmFibGVzIGFyZW4ndCBuZWNlc3NhcnkgYW55bW9yZTtcclxuICAgIHRoaXMucmVjcmVhdGVQYXJhZ3JhcGhUcmFuc2xhdGlvblN1YmplY3QoZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcblxyXG4gICAgcGFyYWdyYXBocy5mb3JFYWNoKChwYXJhZ3JhcGgsIGl4KSA9PiB7XHJcbiAgICAgIC8vIENoZWNrIGlmIHBhcmFncmFwaCB3aXRoIHNhbWUgdGV4dCBleGlzdHMgKHNvIHlvdSBkb24ndCBoYXZlIHRvIHRyYW5zbGF0ZSBpdCBhZ2FpbikuXHJcbiAgICAgIC8vIElmIGl0IGRvZXMsIHlvdSBjYW4gY2xvbmUgaXQuXHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYWdyYXBoSW5mbyA9IFRsZFRyYW5zbGF0ZVRleHRVdGlscy5maW5kRXhpc3RpbmdQYXJhZ3JhcGgocGFyYWdyYXBoLCBpeCwgdGhpcy5wYXJhZ3JhcGhzKTtcclxuICAgICAgY29uc3QgZXhpc3RpbmdQYXJhZ3JhcGggPSBleGlzdGluZ1BhcmFncmFwaEluZm8uZXhpc3RpbmdQYXJhZ3JhcGg7XHJcbiAgICAgIGlmIChleGlzdGluZ1BhcmFncmFwaEluZm8uZXhpc3RpbmdQYXJhZ3JhcGgpIHtcclxuICAgICAgICBpZiAoIWV4aXN0aW5nUGFyYWdyYXBoSW5mby5oYXNTYW1lSXgpIHtcclxuICAgICAgICAgIFRsZFRyYW5zbGF0ZVRleHRVdGlscy5jaGFuZ2VSb290QW5kUGFyYWdyYXBoSXgoZXhpc3RpbmdQYXJhZ3JhcGguc291cmNlLCBleGlzdGluZ1BhcmFncmFwaC5zb3VyY2UsIGV4aXN0aW5nUGFyYWdyYXBoLml4KTtcclxuICAgICAgICAgIFRsZFRyYW5zbGF0ZVRleHRVdGlscy5jaGFuZ2VSb290QW5kUGFyYWdyYXBoSXgoZXhpc3RpbmdQYXJhZ3JhcGgudGFyZ2V0LCBleGlzdGluZ1BhcmFncmFwaC50YXJnZXQsIGV4aXN0aW5nUGFyYWdyYXBoLml4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3UGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIGV4aXN0aW5nUGFyYWdyYXBoKTtcclxuICAgICAgICBuZXdUYXJnZXRQYXJhZ3JhcGhzLnNwbGljZShpeCwgMCwgZXhpc3RpbmdQYXJhZ3JhcGgudGFyZ2V0KTtcclxuICAgICAgICBuZXdTb3VyY2VQYXJhZ3JhcGhzLnNwbGljZShpeCwgMCwgZXhpc3RpbmdQYXJhZ3JhcGguc291cmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBuZXdQYXJhZ3JhcGggPSBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuY3JlYXRlRW1wdHlQYXJhZ3JhcGhJbmZvKGl4KTtcclxuXHJcbiAgICAgICAgbmV3UGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIG5ld1BhcmFncmFwaCk7XHJcbiAgICAgICAgbmV3U291cmNlUGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIG5ld1BhcmFncmFwaC5zb3VyY2UpO1xyXG4gICAgICAgIG5ld1RhcmdldFBhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBuZXdQYXJhZ3JhcGgudGFyZ2V0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wYXJhZ3JhcGhzID0gbmV3UGFyYWdyYXBocztcclxuICAgIHRoaXMudGFyZ2V0UGFyYWdyYXBocyA9IG5ld1RhcmdldFBhcmFncmFwaHM7XHJcbiAgICB0aGlzLnNvdXJjZVBhcmFncmFwaHMgPSBuZXdTb3VyY2VQYXJhZ3JhcGhzO1xyXG5cclxuICAgIHBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoLCBpeCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uc1N1YmplY3QubmV4dCh7IGl4OiBpeCwgbGluZTogcGFyYWdyYXBoIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNUcmFuc2xhdGluZykge1xyXG4gICAgICB0aGlzLnNldFByb2dyZXNzSW5kaWNhdG9yVGltZW91dCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIENyZWF0ZXMgdGltZW91dCB3aGljaCBlbmFibGVzIHByb2dyZXNzIGluZGljYXRvciBhZnRlciBnaXZlbiBtaWxpc2Vjb25kcyAqL1xyXG4gIHByaXZhdGUgc2V0UHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0KCkge1xyXG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMgPT09IG51bGwgfHwgdGhpcy5wcm9ncmVzc0luZGljYXRvclRpbWVvdXRNaWxpU2Vjb25kcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3NJbmRpY2F0b3IoKTtcclxuICAgICAgfSwgdGhpcy5wcm9ncmVzc0luZGljYXRvclRpbWVvdXRNaWxpU2Vjb25kcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWV0aG9kIGZvciBzZXR0aW5nIG5lY2Vzc2FyeSBwcm9wZXJ0aWVzIHRvIG1ha2UgcHJvZ3Jlc3MgaW5kaWNhdG9yIHZpc2libGUuICovXHJcbiAgcHJpdmF0ZSBzaG93UHJvZ3Jlc3NJbmRpY2F0b3IoKSB7XHJcbiAgICB0aGlzLl9zaG91bGRTaG93UHJvZ3Jlc3NJbmRpY2F0b3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCBmb3Igc2V0dGluZyBuZWNlc3NhcnkgcHJvcGVydGllcyB0byBtYWtlIHByb2dyZXNzIGluZGljYXRvciBoaWRkZW4uICovXHJcbiAgaGlkZVByb2dyZXNzSW5kaWNhdG9yKCkge1xyXG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zaG91bGRTaG93UHJvZ3Jlc3NJbmRpY2F0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlVGV4dFRvU3BlZWNoKCkge1xyXG4gICAgLy8gaWYgbm90aGluZyB0cmFuc2xhdGVkLCB0dHMgc2hvdWxkIG5vdCBiZSBhdmFpbGFibGVcclxuICAgIGlmICghdGhpcy50YXJnZXRQYXJhZ3JhcGhzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWN0aXZlU3lzdGVtID0gdGhpcy5hY3RpdmVEYXRhO1xyXG4gICAgdGhpcy50ZXh0VG9TcGVlY2hUYXJnZXRTZXR0aW5ncyA9IHRoaXMuZmluZFRleHRUb1NwZWVjaFNldHRpbmdzKGFjdGl2ZVN5c3RlbS50YXJnZXRMYW5ndWFnZSwgdGhpcy50cmFuc2xhdGVkVGV4dCk7XHJcbiAgICB0aGlzLnRleHRUb1NwZWVjaFNvdXJjZVNldHRpbmdzID0gdGhpcy5maW5kVGV4dFRvU3BlZWNoU2V0dGluZ3MoYWN0aXZlU3lzdGVtLnNvdXJjZUxhbmd1YWdlLCB0aGlzLnNvdXJjZVRleHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5kVGV4dFRvU3BlZWNoU2V0dGluZ3MobGFuZ3VhZ2VDb2RlOiBzdHJpbmcsIHRleHQ6IHN0cmluZyk6IFRleHRUb1NwZWVjaFNldHRpbmdzIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRUb1NwZWVjaENvbmZpZy5sYW5ndWFnZXNbbGFuZ3VhZ2VDb2RlXTtcclxuICAgIGlmIChzZXR0aW5ncykge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRleHQsXHJcbiAgICAgICAgdXJsOiBzZXR0aW5ncy51cmwsXHJcbiAgICAgICAgdm9pY2U6IHNldHRpbmdzLnZvaWNlLFxyXG4gICAgICAgIGxhbmdCcGM0Nzogc2V0dGluZ3MubGFuZ0JwYzQ3LFxyXG4gICAgICAgIG1heENoYXJzSW5UZXh0OiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dFRvU3BlZWNoQ29uZmlnLm1heENoYXJzSW5UZXh0XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVEaWN0aW9uYXJ5RHJhZnRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29sbGVjdGlvbkRyYWZ0U3RhdHVzID0gJ0RyYWZ0JztcclxuXHJcbiAgICB0aGlzLmRpY3Rpb25hcnlFbnRyeSA9IHRoaXMuZGljdGlvbmFyeUVudHJ5Lm1hcChlbnRyeSA9PiAoey4uLmVudHJ5LFxyXG4gICAgICBsYW5ndWFnZVN1bW1hcmllczogZW50cnkubGFuZ3VhZ2VTdW1tYXJpZXM/Lm1hcChsYW5ndWFnZVN1bW1hcnkgPT4gKHsuLi5sYW5ndWFnZVN1bW1hcnksXHJcbiAgICAgICAgdGVybXM6IGxhbmd1YWdlU3VtbWFyeS50ZXJtcy5maWx0ZXIodGVybSA9PiB0ZXJtLnRlcm1TdGF0dXMgIT09IGNvbGxlY3Rpb25EcmFmdFN0YXR1cylcclxuICAgICAgfSkpXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
553
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBZ0IsVUFBVSxFQUE0Qix1QkFBdUIsRUFBc0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN4SSxPQUFPLEVBQWMsT0FBTyxFQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFJNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFNeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7Ozs7O0FBT3hHLE1BQU0sT0FBTyx1QkFBdUI7SUEySGY7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFsSVgsV0FBVyxDQUFTO0lBQzVCLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8scUJBQXFCLENBQVM7SUFDdEMsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVPLGFBQWEsR0FBK0IsSUFBSSxPQUFPLEVBQUUs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SyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLO1lBQ2pFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxlQUFlO2dCQUNyRixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLHFCQUFxQixDQUFDO2FBQ3ZGLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzt3R0ExbUJVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBIdG1sSGVscGVyLCBMYW5ndWFnZVRyYW5zbGF0ZVNlcnZpY2UsIE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLCBUZXJtaW5vbG9neVNlcnZpY2UgfSBmcm9tICdAdGlsZGUtbmxwL25neC1jb21tb24nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1lcmdlTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRleHRUb1NwZWVjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvdGV4dC10by1zcGVlY2gvbW9kZWxzL3RleHQtdG8tc3BlZWNoLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgSVRyYW5zbGF0ZVBhcmFncmFwaFJlcXVlc3RQYXJhbXMgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL21vZGVscyc7XHJcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzL2Vycm9ycy9lcnJvci1jb2Rlcy5lbnVtJztcclxuaW1wb3J0IHsgVGxkSGlnaGxpZ2h0U2VydmljZSwgVGxkVHJhbnNsYXRlQ29uZmlnU2VydmljZSwgVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVGxkU2Nyb2xsU2VydmljZSB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vc2VydmljZXMvc2Nyb2xsL3RsZC1zY3JvbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9tb2RlbHMvZGljdGlvbmFyeS5tb2RlbCc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRyZWVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC10cmVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBJSGlnaGxpZ2h0VHJlZSB9IGZyb20gJy4uL21vZGVscy9oaWdobGlnaHQtdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IElQYXJhZ3JhcGhJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC5tb2RlbCc7XHJcbmltcG9ydCB7IElSZXRyYW5zbGF0ZVBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9yZXRyYW5zbGF0ZS1wYXJhbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlLXBhcmFncmFwaC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGggfSBmcm9tICcuLi9tb2RlbHMvdW50cmFuc2xhdGVkLXBhcmFncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3RsZC10cmFuc2xhdGUtdGV4dC51dGlscyc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkvdGxkLXRyYW5zbGF0ZS10ZXh0LWFwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9tb2RlbHMvYXV0by1sYW5ndWFnZS1kZXRlY3Rpb24ta2V5LmNvbnN0JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VEZXRlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcy9sYW5ndWFnZS1kZXRlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFNvdXJjZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi4vbW9kZWxzL3NvdXJjZS1jaGFuZ2UtZXZlbnQubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGxkVHJhbnNsYXRlVGV4dFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIF9zb3VyY2VUZXh0OiBzdHJpbmc7XHJcbiAgZ2V0IHNvdXJjZVRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlVGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NvdXJjZVRleHRIeXBvdGhlc2lzOiBzdHJpbmc7XHJcbiAgZ2V0IHNvdXJjZVRleHRIeXBvdGhlc2lzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZVRleHRIeXBvdGhlc2lzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc291cmNlQ2hhbmdlOiBTdWJqZWN0PFNvdXJjZUNoYW5nZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNoYW5nZS5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9zb3VyY2VTY3JvbGw6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZVNjcm9sbCgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVNjcm9sbC5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2xhdGVCdXR0b25DbGljazogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBnZXQgdHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7IHJldHVybiB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9oYXNEaWN0aW9uYXJ5OiBib29sZWFuO1xyXG4gIGdldCBoYXNEaWN0aW9uYXJ5KCkgeyByZXR1cm4gdGhpcy5faGFzRGljdGlvbmFyeTsgfVxyXG4gIHNldCBoYXNEaWN0aW9uYXJ5KHZhbCkge1xyXG4gICAgdGhpcy5faGFzRGljdGlvbmFyeSA9IHZhbDtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaWN0aW9uYXJ5RW50cnk6IERpY3Rpb25hcnlbXTtcclxuICBnZXQgZGljdGlvbmFyeUVudHJ5KCkgeyByZXR1cm4gdGhpcy5fZGljdGlvbmFyeUVudHJ5OyB9XHJcbiAgc2V0IGRpY3Rpb25hcnlFbnRyeSh2YWwpIHtcclxuICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IHZhbDtcclxuICAgIGlmICh0aGlzLmRpY3Rpb25hcnlFbnRyeSkge1xyXG4gICAgICB0aGlzLmhhc0RpY3Rpb25hcnkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdHJhbnNsYXRlZFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhcmdldFBhcmFncmFwaHMubWFwKGxpbmUgPT4gbGluZS5vcmlnaW5hbFRleHQpLmpvaW4oXCJcXG5cIilcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ2xlYXIgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIHByZXZpb3VzVGV4dCE6IHN0cmluZztcclxuICBwcmV2aW91c0RldGVjdGVkTGFuZyE6IHN0cmluZztcclxuXHJcbiAgdXJsVG9UcmFuc2xhdGU6IHN0cmluZztcclxuICBwYXJhZ3JhcGhzOiBJUGFyYWdyYXBoSW5mb1tdID0gW107XHJcbiAgc291cmNlUGFyYWdyYXBoczogSUhpZ2hsaWdodFRyZWVbXSA9IFtdO1xyXG4gIHRhcmdldFBhcmFncmFwaHM6IElIaWdobGlnaHRUcmVlW10gPSBbXTtcclxuXHJcbiAgaXNTeXN0ZW1XYWtpbmdVcCE6IGJvb2xlYW47XHJcbiAgdHJnTGFuZ0JlZm9yZURldGVjdCE6IHN0cmluZztcclxuICBpc1Vuc3VwcG9ydGVkTGFuZ1dhcm5pbmdWaXNpYmxlITogYm9vbGVhbjtcclxuXHJcbiAgLy8gU2V0IHRoaXMgb2JqZWN0IHdpdGggbmVjZXNzYXJ5IHZhbHVlcyB0byBkaXNwbGF5IFRUUyBjb21wb25lbnRcclxuICB0ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5nczogVGV4dFRvU3BlZWNoU2V0dGluZ3M7XHJcbiAgdGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3M6IFRleHRUb1NwZWVjaFNldHRpbmdzO1xyXG5cclxuICBwcml2YXRlIF9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQ6IGJvb2xlYW47XHJcbiAgZ2V0IGZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpY3Rpb25hcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHBhcmFncmFwaFRyYW5zbGF0aW9uc1N1YmplY3QgPSBuZXcgU3ViamVjdDxJVW50cmFuc2xhdGVkUGFyYWdyYXBoPigpO1xyXG4gIHByaXZhdGUgcGFyYWdyYXBoVHJhbnNsYXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlcjogU3ViamVjdDxTb3VyY2VDaGFuZ2VFdmVudD4gPSBuZXcgU3ViamVjdDxTb3VyY2VDaGFuZ2VFdmVudD4oKTtcclxuICBwcml2YXRlIGRlYm91bmNlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBIb3cgbWFueSBwYXJhZ3JhcGhzIGNhbiBiZSB0cmFuc2xhdGVkIGF0IHRoZSBzYW1lIHRpbWUuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT05DVVJSRU5UX1VQTE9BRFMgPSA1O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVCT1VOQ0VfVElNRSA9IDEwMDA7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhbmRieUVuZ2luZU5vdGlmaWNhdGlvbkVycm9yS2V5ID0gJzIxJztcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YW5kYnlTeXN0ZW1SZXRyYW5zbGF0aW9uVGltZW91dCA9IDMwMDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVUZXJtQ29sbGVjdGlvbk5vdEZvdW5kRXJyb3JLZXkgPSAnNDA0MjAxJztcclxuXHJcbiAgLyoqIFdoZXRoZXIgcHJvZ3Jlc3MgaW5kaWNhdG9yIHNob3VsZCBiZSBzaG93bi4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNldCB0byB0cnVlIG9ubHkgaWYgY29uZmlndXJlZCB0aW1lIGhhcyBwYXNzZWQuICovXHJcbiAgcHJpdmF0ZSBfc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gZmFsc2U7XHJcbiAgZ2V0IHNob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcigpIHsgcmV0dXJuIHRoaXMuX3Nob3VsZFNob3dQcm9ncmVzc0luZGljYXRvcjsgfVxyXG4gIC8vTm9kZUpTLlRpbWVvdXRcclxuICBwcml2YXRlIHByb2dyZXNzSW5kaWNhdG9yVGltZW91dDogYW55O1xyXG5cclxuICBwcml2YXRlIF91bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgZ2V0IHVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50KCkgeyByZXR1cm4gdGhpcy5fdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQ7IH1cclxuICBzZXQgdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgPSB2YWx1ZTtcclxuICAgIC8vIFdoZW4gdHJhbnNsYXRpb24gZmluaXNoZWQsIHByb2dyZXNzIGluZGljYXRvciBzaG91bGQgbm90IGJlIHNob3duLlxyXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlVGV4dFRvU3BlZWNoKCk7XHJcbiAgICAgIHRoaXMuaGlkZVByb2dyZXNzSW5kaWNhdG9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUcmFuc2xhdGluZygpIHsgcmV0dXJuIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgPiAwIHx8IHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCB9XHJcblxyXG4gIC8vIGdldHRlcnMgZnJvbSBjb25maWcgc2VydmljZS5cclxuICBnZXQgYWxsb3dXZWJzaXRlVHJhbnNsYXRpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy5hbGxvd1dlYnNpdGVUcmFuc2xhdGlvbjsgfTtcclxuICBnZXQgYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy5hdXRvUmVkaXJlY3RUb1dlYlRyYW5zbGF0ZTsgfTtcclxuICBnZXQgd2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXgoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4OyB9O1xyXG4gIGdldCB3ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeCgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcud2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXg7IH07XHJcbiAgZ2V0IHVzZURpY3Rpb25hcnkoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy51c2VEaWN0aW9uYXJ5OyB9O1xyXG4gIGdldCBwcm9ncmVzc0luZGljYXRvclRpbWVvdXRNaWxpU2Vjb25kcygpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHM7IH1cclxuICBnZXQgdGVybWlub2xvZ3lQb3J0YWxVcmwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXJtQ29uZmlnLnRlcm1pbm9sb2d5UG9ydGFsVXJsOyB9XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgZ2V0IGFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5nZXRBY3RpdmVTeXN0ZW1PYmooKTtcclxuICB9XHJcblxyXG4gIGdldCB0cmFuc2xhdGVVcmxSZWRpcmVjdCgpIHtcclxuICAgIGlmICh0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4ID09PSAnJykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy53ZWJXaWRnZXRSZWRpcmVjdFVybFByZWZpeH0ke3RoaXMud2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXh9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy51cmxUb1RyYW5zbGF0ZSl9YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4fSR7dGhpcy50cmFuc2xhdGUuY3VycmVudExhbmd9JHt0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4fSR7dGhpcy51cmxUb1RyYW5zbGF0ZX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIElmIGRpY3RhdHRpb24gaXMgYWN0aXZlLiBCYXNlZCBvbiB0aGlzLCBleHRlbnNpb25zIGFyZSBoaWRkZW4uICovXHJcbiAgaXNEaWN0YXRpbmc6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGk6IFRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1NYW5hZ2VtZW50U2VydmljZTogVGxkVHJhbnNsYXRlU3lzdGVtTWFuYWdlbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRsZFNjcm9sbFNlcnZpY2U6IFRsZFNjcm9sbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IFRsZFRyYW5zbGF0ZUNvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZTogVGxkSGlnaGxpZ2h0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRzU2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtaW5vbG9neVNlcnZpY2U6IFRlcm1pbm9sb2d5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2U6IExhbmd1YWdlRGV0ZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VUcmFuc2xhdGU6IExhbmd1YWdlVHJhbnNsYXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgY2hhbmdlU291cmNlKGV2ZW50OiBTb3VyY2VDaGFuZ2VFdmVudCkge1xyXG4gICAgaWYgKCFldmVudC5waHJhc2UudHJpbSgpLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLl9vbkNsZWFyLm5leHQobnVsbCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5hY3RpdmVEYXRhPy5kZXRlY3RlZExhbmd1YWdlKSB7XHJcbiAgICAgICAgdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zZXREZXRlY3RlZExhbmd1YWdlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuX3NvdXJjZVRleHQgPSBldmVudC5waHJhc2U7XHJcbiAgICB0aGlzLl9zb3VyY2VDaGFuZ2UubmV4dChldmVudCk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvdXJjZUh5cG90aGVzaXModGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zb3VyY2VUZXh0SHlwb3RoZXNpcyA9IHRleHQ7XHJcbiAgfVxyXG5cclxuICBvblNvdXJjZVNjcm9sbChvZmZzZXRUb3A6IG51bWJlcikge1xyXG4gICAgdGhpcy5fc291cmNlU2Nyb2xsLm5leHQob2Zmc2V0VG9wKTtcclxuICB9XHJcblxyXG4gIG9uVHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5uZXh0KG51bGwpXHJcbiAgICB0aGlzLnJldHJhbnNsYXRlKHsgYnV0dG9uQ2xpY2tlZDogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU291cmNlKCkge1xyXG4gICAgdGhpcy5fb25DbGVhci5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5yZXNldERldGVjdGVkTGFuZ3VhZ2UoKTtcclxuICAgIHRoaXMuY2hhbmdlU291cmNlKHsgcGhyYXNlOiBcIlwiIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmFuc2xhdGlvbihvcHRpb25zOiBzdHJpbmcsIHN5c3RlbUlEOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgdHJhbnNsYXRpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpLnVwZGF0ZVRyYW5zbGF0aW9uKG9wdGlvbnMsIHN5c3RlbUlELCB0ZXh0LCB0cmFuc2xhdGlvbik7XHJcbiAgfVxyXG5cclxuICBsaXN0ZW5PbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uID0gdGhpcy5kZWJvdW5jZXIucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzLnBocmFzZSA9PSB0aGlzLnNvdXJjZVRleHQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZShldiA9PiBldi5waHJhc2U/Lmxlbmd0aCA+IDAgPyB0aW1lcih0aGlzLkRFQk9VTkNFX1RJTUUpIDogdGltZXIoMCkpXHJcbiAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRTZXJ2aWNlLmNoYW5nZVNlbGVjdGVkVGFyZ2V0U2VudGVuY2UobnVsbCk7XHJcblxyXG4gICAgICAgIGlmICghZXZlbnQuZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BMaXN0ZW5pbmdUb0NoYW5nZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRlYm91bmNlclN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBpZiBtZXRob2QgZ2V0cyBjYWxsZWQgYmVjYXVzZSBvZiBidXR0b24gY2xpY2sgYW5kIHVybCBlbnRlcmVkIC0gZ28gdG8gd2ViIHRyYW5zbGF0aW9uXHJcbiAgcmV0cmFuc2xhdGUocGFyYW1zPzogSVJldHJhbnNsYXRlUGFyYW1zLCBkZXRlY3RlZExhbmd1YWdlPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuc291cmNlVGV4dD8udHJpbSgpIHx8IHRoaXMuc291cmNlVGV4dD8udHJpbSgpID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5jbGVhclNvdXJjZVBhcmFtcygpO1xyXG4gICAgICBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJhbXM/LmJ1dHRvbkNsaWNrZWQgfHwgcGFyYW1zPy5zeXN0ZW1DaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJTb3VyY2VQYXJhbXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWRldGVjdGVkTGFuZ3VhZ2UgJiYgKHRoaXMuYWN0aXZlRGF0YS5zb3VyY2VMYW5ndWFnZSA9PT0gQVVUT19MQU5HVUFHRV9ERVRFQ1RJT05fS0VZIHx8IHRoaXMuYWN0aXZlRGF0YS5kZXRlY3RlZExhbmd1YWdlKSkgeyBcclxuICAgICAgY29uc3QgdGV4dCA9IHRoaXMuc291cmNlVGV4dC5yZXBsYWNlKCdcXG4nLCAnICcpO1xyXG5cclxuICAgICAgaWYgKHRleHQgPT09IHRoaXMucHJldmlvdXNUZXh0KSB7XHJcbiAgICAgICAgZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMucHJldmlvdXNEZXRlY3RlZExhbmc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZS5kZXRlY3QodGV4dCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAvLyBkaXNwbGF5aW5nIGVuZ2xpc2ggbGFuZ3VhZ2UsIGlmIHRleHQgaXMgdW5kZXRlY3RhYmxlXHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKHBhcmFtcywgcmVzLmRldGVjdGVkTGFuZ3VhZ2UgPz8gJ2VuJyk7XHJcbiAgXHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzVGV4dCA9IHRleHQ7XHJcbiAgICAgICAgICB0aGlzLnByZXZpb3VzRGV0ZWN0ZWRMYW5nID0gcmVzLmRldGVjdGVkTGFuZ3VhZ2UgPz8gJ2VuJztcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY3RpdmVTeXN0ZW1JZCA9IHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2UuZ2V0QWN0aXZlU3lzdGVtT2JqKCkuaWQ7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvbGxlY3Rpb24gPSB0aGlzLnRlcm1pbm9sb2d5U2VydmljZS5lbmdpbmVzW2FjdGl2ZVN5c3RlbUlkXT8uc2VsZWN0ZWQ7XHJcbiAgICAvLyBpZiBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRlZCB3ZSB3YW50IHRvIGF2b2lkIGluc3RhbnQgdHJhbnNsYXRpb25cclxuICAgIGlmIChzZWxlY3RlZENvbGxlY3Rpb24gJiYgIXNlbGVjdGVkQ29sbGVjdGlvbj8ubXRDb2xsZWN0aW9uKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKHtidXR0b25DbGlja2VkOiB0cnVlfSwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICAgICAgfSwgMzAwMCkgICAgICBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1heFNvdXJjZUNoYXJhY3RlckRpY3Rpb25hcnkgPSAyMDA7XHJcbiAgICBjb25zdCBtYXhEaWN0aW9uYXJ5V29yZHMgPSAxMjtcclxuXHJcbiAgICBjb25zdCB3b3Jkc0luU291cmNlID0gSHRtbEhlbHBlci5nZXRXb3JkQ291bnQodGhpcy5zb3VyY2VUZXh0KTtcclxuICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBIdG1sSGVscGVyLmlzVGV4dFVybCh0aGlzLnNvdXJjZVRleHQpO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uICYmIHRoaXMudXJsVG9UcmFuc2xhdGUpIHtcclxuICAgICAgdGhpcy5wYXJhZ3JhcGhzID0gW107XHJcbiAgICAgIHRoaXMuc291cmNlUGFyYWdyYXBocyA9IFtdO1xyXG4gICAgICB0aGlzLnRhcmdldFBhcmFncmFwaHMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmF1dG9SZWRpcmVjdFRvV2ViVHJhbnNsYXRlIHx8IHBhcmFtcz8uYnV0dG9uQ2xpY2tlZCkge1xyXG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMudHJhbnNsYXRlVXJsUmVkaXJlY3QsIFwiX2JsYW5rXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBpZiAodGhpcy51c2VEaWN0aW9uYXJ5ICYmIHRoaXMuc291cmNlVGV4dC5sZW5ndGggPCBtYXhTb3VyY2VDaGFyYWN0ZXJEaWN0aW9uYXJ5ICYmIHdvcmRzSW5Tb3VyY2UgPD0gbWF4RGljdGlvbmFyeVdvcmRzKSB7XHJcbiAgICAgIHRoaXMucHJlcGFyZUFuZFRyYW5zbGF0ZVdvcmRzKGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICAvKiogU3RvcHMgdGV4dCB0cmFuc2xhdGlvbiBpZiBpdCBpcyBhY3RpdmUuICovXHJcbiAgc3RvcFRyYW5zbGF0aW9uKCkge1xyXG4gICAgdGhpcy51bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGljdGlvbmFyeVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSByZXNldERldGVjdGVkTGFuZ3VhZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcuaXNBdXRvTGFuZ3VhZ2VEZXRlY3Rpb25FbmFibGVkICYmIHRoaXMuYWN0aXZlRGF0YT8uZGV0ZWN0ZWRMYW5ndWFnZSkge1xyXG4gICAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnNldERldGVjdGVkTGFuZ3VhZ2UobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlY3JlYXRlUGFyYWdyYXBoVHJhbnNsYXRpb25TdWJqZWN0KGRldGVjdGVkTGFuZ3VhZ2U/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8SVVudHJhbnNsYXRlZFBhcmFncmFwaD4oKTtcclxuXHJcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZVRleHQ7XHJcbiAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID0gMDtcclxuICAgIHRoaXMucGFyYWdyYXBoVHJhbnNsYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKHVudHJhbnNsYXRlZFBhcmFncmFwaCkgPT4ge1xyXG4gICAgICAgIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgKz0gMTtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVQYXJhZ3JhcGgodW50cmFuc2xhdGVkUGFyYWdyYXBoLCBkZXRlY3RlZExhbmd1YWdlKS5waXBlKFxyXG4gICAgICAgICAgdGFwKChyZXNwb25zZTogSVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gaGFuZGxlIHJlc3BvbnNlIGlmIHNvdXJjZSB0ZXh0IGhhcyBjaGFuZ2VkLlxyXG4gICAgICAgICAgICBpZiAoc291cmNlICE9IHRoaXMuc291cmNlVGV4dCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0ZWRQYXJhZ3JhcGgocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBhcmFncmFwaHModW50cmFuc2xhdGVkUGFyYWdyYXBoLml4LCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgIHRoaXMudW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgLT0gMTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID09PSAwICYmIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS5kZWxldGVNZXNzYWdlKE5vdGlmaWNhdGlvbk1lc3NhZ2VUeXBlLklORk8sICdFUlJPUlMuRV8yMScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBlcnIuZXJyb3I7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50IC09IDE7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydHNTZXJ2aWNlLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogRXJyb3JDb2RlLlRSQU5TTEFUSU9OX0ZBSUxFRCB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvcj8uRXJyb3JDb2RlID09PSB0aGlzLnN0YW5kYnlFbmdpbmVOb3RpZmljYXRpb25FcnJvcktleSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS5pbmZvKCdFUlJPUlMuRV8yMScpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNTeXN0ZW1XYWtpbmdVcCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXRyYW5zbGF0ZSgpO1xyXG4gICAgICAgICAgICAgIH0sIHRoaXMuc3RhbmRieVN5c3RlbVJldHJhbnNsYXRpb25UaW1lb3V0KVxyXG5cclxuICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3I/LmVycm9yPy5jb2RlID09IHRoaXMuZW5naW5lVGVybUNvbGxlY3Rpb25Ob3RGb3VuZEVycm9yS2V5KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydHNTZXJ2aWNlLmVycm9yKCdFUlJPUlMuRV80MDQyMDEnLCBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS51bmhhbmRlbGVkRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgc3ViamVjdCBpcyBkZXN0cm95ZWQgYW5kIHVuc3Vic2NyaWJlZCwgc28gdGhyb3duIGVycm9yIHdvbnQgaGF2ZSBhbnkgZWZmZWN0LlxyXG4gICAgICAgICAgICB0aGlzLnN0b3BUcmFuc2xhdGlvbigpO1xyXG4gICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgfSwgdGhpcy5DT05DVVJSRU5UX1VQTE9BRFMpLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlUGFyYWdyYXBoKHBhcmFncmFwaDogSVVudHJhbnNsYXRlZFBhcmFncmFwaCwgZGV0ZWN0ZWRMYW5ndWFnZT86IHN0cmluZyk6IE9ic2VydmFibGU8SVRyYW5zbGF0ZVBhcmFncmFwaFJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBwYXJhbXM6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXF1ZXN0UGFyYW1zID0ge1xyXG5cdFx0XHRwYXJhZ3JhcGhJeDogcGFyYWdyYXBoLml4LFxyXG5cdFx0XHR0ZXh0OiBwYXJhZ3JhcGgubGluZSxcclxuXHRcdFx0c3lzdGVtOiB0aGlzLmFjdGl2ZURhdGFcclxuXHRcdH07XHJcblxyXG4gICAgaWYgKChkZXRlY3RlZExhbmd1YWdlID09PSBwYXJhbXMuc3lzdGVtLnRhcmdldExhbmd1YWdlKSAmJiB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnN5c3RlbXMuZmluZCgoc3lzdGVtKSA9PiBzeXN0ZW0uc291cmNlTGFuZ3VhZ2UgPT09IGRldGVjdGVkTGFuZ3VhZ2UpKSB7XHJcbiAgICAgIHRoaXMuZGljdGlvbmFyeUVudHJ5ID0gW107XHJcbiAgICAgIHRoaXMuaGFzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN5c3RlbU1hbmFnZW1lbnRTZXJ2aWNlLnNob3dTYW1lTGFuZ3VhZ2VzKGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICB0aGlzLl9vbkNsZWFyLm5leHQobnVsbCk7XHJcblxyXG4gICAgICByZXR1cm4gb2YodGhpcy5nZXRFbXB0eVRyYW5zbGF0aW9uUmVzcG9uc2UocGFyYWdyYXBoLCBwYXJhbXMpKTtcclxuICAgIH1cclxuXHJcblx0XHRpZiAoIXBhcmFtcy50ZXh0IHx8IHBhcmFtcy50ZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmV0dXJuIG9mKHRoaXMuZ2V0RW1wdHlUcmFuc2xhdGlvblJlc3BvbnNlKHBhcmFncmFwaCwgcGFyYW1zLCB0cnVlKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGRldGVjdGVkTGFuZ3VhZ2UgJiYgKGRldGVjdGVkTGFuZ3VhZ2UgIT09IHBhcmFtcy5zeXN0ZW0uZGV0ZWN0ZWRMYW5ndWFnZSkpIHtcclxuXHRcdFx0cGFyYW1zLnN5c3RlbS5kb21haW4gPSBcIlwiO1xyXG5cdFx0XHRwYXJhbXMuc3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UgPSBkZXRlY3RlZExhbmd1YWdlO1xyXG5cclxuXHRcdFx0Y29uc3QgZW5naW5lID0gdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zeXN0ZW1zLmZpbmQoKHN5c3RlbSkgPT4gXHJcbiAgICAgICAgc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBkZXRlY3RlZExhbmd1YWdlICYmIHBhcmFtcy5zeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UgPT09IHN5c3RlbS50YXJnZXRMYW5ndWFnZVxyXG4gICAgICApO1xyXG5cclxuXHRcdFx0dGhpcy5fb25DbGVhci5uZXh0KG51bGwpO1xyXG5cclxuXHRcdFx0aWYgKGVuZ2luZSkge1xyXG5cdFx0XHRcdHRoaXMuc3lzdGVtTWFuYWdlbWVudFNlcnZpY2Uuc2V0RGV0ZWN0ZWRMYW5ndWFnZShkZXRlY3RlZExhbmd1YWdlKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuICAgICAgICAvLyBkaXNwbGF5aW5nIHRoYXQgZW5naW5lIG5vdCBmb3VuZC5cclxuICAgICAgICB0aGlzLmFsZXJ0c1NlcnZpY2Uud2FybmluZygnRVJST1JTLkRFVEVDVElPTi5VTkFWQUlMQUJMRScsIHtcclxuICAgICAgICAgIHNyY0xhbmc6IHRoaXMubGFuZ3VhZ2VUcmFuc2xhdGUuZ2V0TGFuZ3VhZ2VDb2RlVHJhbnNsYXRpb24oZGV0ZWN0ZWRMYW5ndWFnZSksXHJcbiAgICAgICAgICB0cmdMYW5nOiB0aGlzLmxhbmd1YWdlVHJhbnNsYXRlLmdldExhbmd1YWdlQ29kZVRyYW5zbGF0aW9uKHBhcmFtcy5zeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UpLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmlzVW5zdXBwb3J0ZWRMYW5nV2FybmluZ1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBwcmVzZXRpbmcgc3lzdGVtIHdpdGggc3JjTGFuZyBzYW1lIGFzIGRldGVjdGVkTGFuZ3VhZ2UgKHRhcmdldCBpcyByYW5kb20gaGVyZSlcclxuICAgICAgICBpZiAodGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zeXN0ZW1zLmZpbmQoKHN5c3RlbSkgPT4gc3lzdGVtLnNvdXJjZUxhbmd1YWdlID09PSBkZXRlY3RlZExhbmd1YWdlKSkge1xyXG4gICAgICAgICAgdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5zZXREZXRlY3RlZExhbmd1YWdlKGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgdGhpcy50cmdMYW5nQmVmb3JlRGV0ZWN0ID0gcGFyYW1zLnN5c3RlbS50YXJnZXRMYW5ndWFnZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZXNldERldGVjdGVkTGFuZ3VhZ2UoKTsgICAgICAgICAgICBcclxuICAgICAgICAgIHJldHVybiBvZih0aGlzLmdldEVtcHR5VHJhbnNsYXRpb25SZXNwb25zZShwYXJhZ3JhcGgsIHBhcmFtcywgZmFsc2UsIHRydWUpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHRcdH1cclxuXHJcbiAgICAvLyB3ZSBzaG91bGQgY2xlYXIgdW5hdmFpbGFibGUgbm90aWZpY2F0aW9uIGFmdGVyIG1hbnVhbCBsYW5ndWFnZSBzZWxlY3Rpb24sIGJ1dCBub3Qgd2hlbiB3ZSBoYXZlIHByZXNldGVkIGVuZ2luZSB3aXRoIHJhbmRvbSB0YXJnZXQgbGFuZ3VhZ2VcclxuICAgIGlmICh0aGlzLmlzVW5zdXBwb3J0ZWRMYW5nV2FybmluZ1Zpc2libGUgJiYgKCF0aGlzLnRyZ0xhbmdCZWZvcmVEZXRlY3QgfHwgdGhpcy50cmdMYW5nQmVmb3JlRGV0ZWN0ICYmICFwYXJhbXMuc3lzdGVtLmRldGVjdGVkTGFuZ3VhZ2UpKSB7XHJcblx0XHRcdHRoaXMuX29uQ2xlYXIubmV4dChudWxsKTtcclxuICAgICAgdGhpcy5pc1Vuc3VwcG9ydGVkTGFuZ1dhcm5pbmdWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMuYXBpLnRyYW5zbGF0ZVBhcmFncmFwaChwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFbXB0eVRyYW5zbGF0aW9uUmVzcG9uc2UocGFyYWdyYXBoOiBJVW50cmFuc2xhdGVkUGFyYWdyYXBoLCBwYXJhbXM6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXF1ZXN0UGFyYW1zLCBsZWF2ZUFsbEVtcHR5PzogYm9vbGVhbiwgbGVhdmVUYXJnZXRFbXB0eT86IGJvb2xlYW4pOiBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2Uge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc291cmNlVHJlZTogeyB0ZXh0OiBsZWF2ZUFsbEVtcHR5ID8gJycgOiBwYXJhZ3JhcGgubGluZSwgcGFyYWdyYXBoSXg6IHBhcmFtcy5wYXJhZ3JhcGhJeCwgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuUEFSQUdSQVBILCByb290OiBudWxsLCBvcmlnaW5hbFRleHQ6IGxlYXZlQWxsRW1wdHkgPyAnJyA6IHBhcmFncmFwaC5saW5lIH0sXHJcbiAgICAgIHRhcmdldFRyZWU6IHsgdGV4dDogbGVhdmVUYXJnZXRFbXB0eSB8fCBsZWF2ZUFsbEVtcHR5ID8gJycgOiBwYXJhZ3JhcGgubGluZSwgcGFyYWdyYXBoSXg6IHBhcmFtcy5wYXJhZ3JhcGhJeCwgdHlwZTogSGlnaGxpZ2h0VHJlZVR5cGUuUEFSQUdSQVBILCByb290OiBudWxsLCBvcmlnaW5hbFRleHQ6IGxlYXZlQWxsRW1wdHkgPyAnJyA6IHBhcmFncmFwaC5saW5lIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVHJhbnNsYXRlZFBhcmFncmFwaChwYXJhZ3JhcGg6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSkge1xyXG4gICAgLy9pZiBhdXRvIGRvbWFpbiBkZXRlY3Rpb24gaXMgb24sIHN5c3RlbSBhcGkgc2VydmljZSBzZXRzIHN5c3RlbSBpZCB0byBgJHtzcmNMYW5nfS0ke3RhcmdldExhbmd9YCBzbyB3ZSBuZWVkIHRvIHZhbGlkYXRlIGlmIHRoYXQgaXMgdGhlIGNhc2VcclxuICAgIGlmIChwYXJhZ3JhcGguc3lzdGVtSWQgJiYgdGhpcy5hY3RpdmVEYXRhLmlkICE9PSBwYXJhZ3JhcGguc3lzdGVtSWRcclxuICAgICAgJiYgdGhpcy5hY3RpdmVEYXRhLmlkID09PSBgJHt0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZ3VhZ2V9LSR7dGhpcy5hY3RpdmVEYXRhLnRhcmdldExhbmd1YWdlfWApIHtcclxuICAgICAgdGhpcy5zeXN0ZW1NYW5hZ2VtZW50U2VydmljZS5jaGFuZ2VTeXN0ZW0ocGFyYWdyYXBoLnN5c3RlbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZWVkcyB0byBzY3JvbGwgdG8gdG9wIGFmdGVyIGZpcnN0IHBhcmFncmFwaCBpcyB0cmFuc2xhdGVkLlxyXG4gICAgaWYgKCF0aGlzLl9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQpIHtcclxuICAgICAgLy8gaWYgZW1wdHkgcGFyYWdyYXBoIGlzICd0cmFuc2xhdGVkJyBmaXJzdCwgbm8gbmVlZCB0byBkbyBhbnkgc2Nyb2xsaW5nLiBXYWl0IGZvciByZWFsIHRleHQgdG8gYmUgdHJhbnNsYXRlZC5cclxuICAgICAgaWYgKHBhcmFncmFwaC50YXJnZXRUcmVlLnRleHQudHJpbSgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudGxkU2Nyb2xsU2VydmljZS5zeW5jU2Nyb2xsYmFycyhudWxsLCAwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVQYXJhZ3JhcGhzKHBhcmFncmFwaEl4OiBudW1iZXIsIHJlc3BvbnNlOiBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2UpIHtcclxuICAgIGxldCBwYXJhZ3JhcGg6IElQYXJhZ3JhcGhJbmZvID0ge1xyXG4gICAgICBpeDogcGFyYWdyYXBoSXgsXHJcbiAgICAgIHRhcmdldDogcmVzcG9uc2UudGFyZ2V0VHJlZSxcclxuICAgICAgc291cmNlOiByZXNwb25zZS5zb3VyY2VUcmVlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGFyYWdyYXBocy5zcGxpY2UocGFyYWdyYXBoSXgsIDEsIHBhcmFncmFwaCk7XHJcbiAgICB0aGlzLnNvdXJjZVBhcmFncmFwaHMuc3BsaWNlKHBhcmFncmFwaEl4LCAxLCByZXNwb25zZS5zb3VyY2VUcmVlKTtcclxuICAgIHRoaXMudGFyZ2V0UGFyYWdyYXBocy5zcGxpY2UocGFyYWdyYXBoSXgsIDEsIHJlc3BvbnNlLnRhcmdldFRyZWUpO1xyXG5cclxuICAgIHRoaXMucGFyYWdyYXBocy5zb3J0KChhLCBiKSA9PiAoYS5peCA+IGIuaXgpID8gMSA6IC0xKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJTb3VyY2VQYXJhbXMoKSB7XHJcbiAgICB0aGlzLl9kaWN0aW9uYXJ5RW50cnkgPSBudWxsO1xyXG4gICAgdGhpcy5faGFzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgdGhpcy5wYXJhZ3JhcGhzID0gW107XHJcbiAgICB0aGlzLnRhcmdldFBhcmFncmFwaHMgPSBbXTtcclxuICAgIHRoaXMuc291cmNlUGFyYWdyYXBocyA9IFtdO1xyXG4gICAgdGhpcy51cmxUb1RyYW5zbGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLnRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzID0gbnVsbDtcclxuICAgIHRoaXMudGV4dFRvU3BlZWNoU291cmNlU2V0dGluZ3MgPSBudWxsO1xyXG4gICAgdGhpcy5zdG9wVHJhbnNsYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUFuZFRyYW5zbGF0ZVdvcmRzKGRldGVjdGVkTGFuZ3VhZ2U/OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZ3VhZ2UgPT09IEFVVE9fTEFOR1VBR0VfREVURUNUSU9OX0tFWSAmJiAhdGhpcy5hY3RpdmVEYXRhLmRldGVjdGVkTGFuZ3VhZ2UpIHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCwgZGV0ZWN0ZWRMYW5ndWFnZSk7XHJcbiAgICAgIHRoaXMuaGFzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGljdGlvbmFyeSA9IHRoaXMuYXBpLmRpY3Rpb25hcnlUcmFuc2xhdGlvbih0aGlzLnNvdXJjZVRleHQudHJpbSgpLCB0aGlzLmFjdGl2ZURhdGEuZGV0ZWN0ZWRMYW5ndWFnZSA/PyB0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZ3VhZ2UsIHRoaXMuYWN0aXZlRGF0YS50YXJnZXRMYW5ndWFnZSk7XHJcblxyXG5cdFx0dGhpcy5kaWN0aW9uYXJ5U3Vic2NyaXB0aW9uID0gZGljdGlvbmFyeS5yZXF1ZXN0LnN1YnNjcmliZSh7XHJcblx0XHRcdG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGljdGlvbmFyeVN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kaWN0aW9uYXJ5RW50cnkgPSBbXTtcclxuICAgIFxyXG4gICAgICAgIHRoaXMuc2V0RGljdGlvbmFyeVRlcm1zKHJlc3BvbnNlLCBkaWN0aW9uYXJ5LnVybHMpO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlVGV4dCh0aGlzLnNvdXJjZVRleHQsIGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMudHJhbnNsYXRlVGV4dCh0aGlzLnNvdXJjZVRleHQsIGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG5cdFx0XHRcdHRoaXMuaGFzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG5cdFx0XHR9LFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuICBwcml2YXRlIHNldERpY3Rpb25hcnlUZXJtcyhyZXNwb25zZTogRGljdGlvbmFyeVtdW10sIHVybHM6IHN0cmluZ1tdKTogdm9pZCB7XHJcblx0XHRyZXNwb25zZS5mb3JFYWNoKChyZXMsIGkpID0+IHtcclxuXHRcdFx0cmVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuXHRcdFx0XHRjb25zdCBpc1RpbGRlVGVybUNvbGxlY3Rpb24gPSB1cmxzW2ldLmluY2x1ZGVzKCd0aWxkZScpO1xyXG5cdFx0XHRcdGNvbnN0IHRlcm1XaXRoU291cmNlID0ge1xyXG5cdFx0XHRcdFx0Li4uaXRlbSxcclxuXHRcdFx0XHRcdGRpY3Rpb25hcnlEb21haW5Vcmw6IGlzVGlsZGVUZXJtQ29sbGVjdGlvbiA/IG51bGwgOiB1cmxzW2ldLFxyXG5cdFx0XHRcdFx0c291cmNlTGFiZWw6IGlzVGlsZGVUZXJtQ29sbGVjdGlvbiA/ICdUaWxkZSBUZXJtJyA6IG51bGwsXHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0Y29uc3QgdGVybVN1bW1hcnkgPSB0ZXJtV2l0aFNvdXJjZS5sYW5ndWFnZVN1bW1hcmllcz8uZmluZCgoc3VtbWFyeSkgPT4gc3VtbWFyeS5sYW5nID09PSB0aGlzLmFjdGl2ZURhdGEudGFyZ2V0TGFuZ3VhZ2UpO1xyXG5cclxuXHRcdFx0XHRpZiAodGVybVN1bW1hcnkpIHtcclxuXHRcdFx0XHRcdGNvbnN0IGNvbGxlY3Rpb25FbnRyeSA9IHRlcm1XaXRoU291cmNlLmVudHJ5U3VtbWFyaWVzWzBdO1xyXG5cdFx0XHRcdFx0Y29uc3QgY29sbGVjdGlvbklkID0gY29sbGVjdGlvbkVudHJ5LmNvbGxlY3Rpb25JZDtcclxuXHRcdFx0XHRcdGNvbnN0IGNvbGxlY3Rpb25UYXJnZXRXb3JkID0gdGVybVN1bW1hcnkudGVybXNbMF0udGVybTtcclxuXHRcdFx0XHRcdGNvbnN0IGNvbGxlY3Rpb25VcmwgPSB0ZXJtV2l0aFNvdXJjZS5kaWN0aW9uYXJ5RG9tYWluVXJsXHJcblx0XHRcdFx0XHRcdD8gYGh0dHBzOi8vJHt0ZXJtV2l0aFNvdXJjZS5kaWN0aW9uYXJ5RG9tYWluVXJsfS9jb2xsZWN0aW9ucy8ke2NvbGxlY3Rpb25JZH1gXHJcblx0XHRcdFx0XHRcdDogYCR7dGhpcy50ZXJtaW5vbG9neVBvcnRhbFVybH0vY29sbGVjdGlvbnMvdGVybS8ke2NvbGxlY3Rpb25JZH1gO1xyXG5cclxuXHRcdFx0XHRcdGlmICghdGhpcy5kaWN0aW9uYXJ5RW50cnkuc29tZSgodGVybSkgPT4gdGVybS50YXJnZXRXb3JkID09PSBjb2xsZWN0aW9uVGFyZ2V0V29yZCAmJiB0ZXJtLnRlcm1Tb3VyY2UgPT09IGNvbGxlY3Rpb25FbnRyeS5jb2xsZWN0aW9uTmFtZSkpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5kaWN0aW9uYXJ5RW50cnkucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0Li4udGVybVdpdGhTb3VyY2UsXHJcblx0XHRcdFx0XHRcdFx0dGFyZ2V0V29yZDogY29sbGVjdGlvblRhcmdldFdvcmQsXHJcblx0XHRcdFx0XHRcdFx0dGVybVNvdXJjZTogY29sbGVjdGlvbkVudHJ5LmNvbGxlY3Rpb25OYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25Vcmw6IGNvbGxlY3Rpb25VcmwsXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnJlbW92ZURpY3Rpb25hcnlEcmFmdHMoKTtcclxuXHRcdHRoaXMuaGFzRGljdGlvbmFyeSA9IHRoaXMuZGljdGlvbmFyeUVudHJ5Lmxlbmd0aCA+IDA7XHJcblx0fVxyXG4gIFxyXG4gIHByaXZhdGUgdHJhbnNsYXRlVGV4dCh0ZXh0OiBzdHJpbmcsIGRldGVjdGVkTGFuZ3VhZ2U/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBhcmFncmFwaHMgPSBIdG1sSGVscGVyLnNwbGl0SW5QYXJhZ3JhcGhzKHRleHQpO1xyXG4gICAgY29uc3QgbmV3UGFyYWdyYXBoczogSVBhcmFncmFwaEluZm9bXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3U291cmNlUGFyYWdyYXBoczogSUhpZ2hsaWdodFRyZWVbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV3VGFyZ2V0UGFyYWdyYXBoczogSUhpZ2hsaWdodFRyZWVbXSA9IFtdO1xyXG5cclxuICAgIC8vIHNvdXJjZSB0ZXh0IGNoYW5nZWQuIFByZXZpb3VzbHkgbWFkZSBvYnNlcnZhYmxlcyBhcmVuJ3QgbmVjZXNzYXJ5IGFueW1vcmU7XHJcbiAgICB0aGlzLnJlY3JlYXRlUGFyYWdyYXBoVHJhbnNsYXRpb25TdWJqZWN0KGRldGVjdGVkTGFuZ3VhZ2UpO1xyXG5cclxuICAgIHBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoLCBpeCkgPT4ge1xyXG4gICAgICAvLyBDaGVjayBpZiBwYXJhZ3JhcGggd2l0aCBzYW1lIHRleHQgZXhpc3RzIChzbyB5b3UgZG9uJ3QgaGF2ZSB0byB0cmFuc2xhdGUgaXQgYWdhaW4pLlxyXG4gICAgICAvLyBJZiBpdCBkb2VzLCB5b3UgY2FuIGNsb25lIGl0LlxyXG4gICAgICBjb25zdCBleGlzdGluZ1BhcmFncmFwaEluZm8gPSBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuZmluZEV4aXN0aW5nUGFyYWdyYXBoKHBhcmFncmFwaCwgaXgsIHRoaXMucGFyYWdyYXBocyk7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYWdyYXBoID0gZXhpc3RpbmdQYXJhZ3JhcGhJbmZvLmV4aXN0aW5nUGFyYWdyYXBoO1xyXG4gICAgICBpZiAoZXhpc3RpbmdQYXJhZ3JhcGhJbmZvLmV4aXN0aW5nUGFyYWdyYXBoKSB7XHJcbiAgICAgICAgaWYgKCFleGlzdGluZ1BhcmFncmFwaEluZm8uaGFzU2FtZUl4KSB7XHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuY2hhbmdlUm9vdEFuZFBhcmFncmFwaEl4KGV4aXN0aW5nUGFyYWdyYXBoLnNvdXJjZSwgZXhpc3RpbmdQYXJhZ3JhcGguc291cmNlLCBleGlzdGluZ1BhcmFncmFwaC5peCk7XHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuY2hhbmdlUm9vdEFuZFBhcmFncmFwaEl4KGV4aXN0aW5nUGFyYWdyYXBoLnRhcmdldCwgZXhpc3RpbmdQYXJhZ3JhcGgudGFyZ2V0LCBleGlzdGluZ1BhcmFncmFwaC5peCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5ld1BhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBleGlzdGluZ1BhcmFncmFwaCk7XHJcbiAgICAgICAgbmV3VGFyZ2V0UGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIGV4aXN0aW5nUGFyYWdyYXBoLnRhcmdldCk7XHJcbiAgICAgICAgbmV3U291cmNlUGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIGV4aXN0aW5nUGFyYWdyYXBoLnNvdXJjZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmV3UGFyYWdyYXBoID0gVGxkVHJhbnNsYXRlVGV4dFV0aWxzLmNyZWF0ZUVtcHR5UGFyYWdyYXBoSW5mbyhpeCk7XHJcblxyXG4gICAgICAgIG5ld1BhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBuZXdQYXJhZ3JhcGgpO1xyXG4gICAgICAgIG5ld1NvdXJjZVBhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBuZXdQYXJhZ3JhcGguc291cmNlKTtcclxuICAgICAgICBuZXdUYXJnZXRQYXJhZ3JhcGhzLnNwbGljZShpeCwgMCwgbmV3UGFyYWdyYXBoLnRhcmdldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucGFyYWdyYXBocyA9IG5ld1BhcmFncmFwaHM7XHJcbiAgICB0aGlzLnRhcmdldFBhcmFncmFwaHMgPSBuZXdUYXJnZXRQYXJhZ3JhcGhzO1xyXG4gICAgdGhpcy5zb3VyY2VQYXJhZ3JhcGhzID0gbmV3U291cmNlUGFyYWdyYXBocztcclxuXHJcbiAgICBwYXJhZ3JhcGhzLmZvckVhY2goKHBhcmFncmFwaCwgaXgpID0+IHtcclxuICAgICAgdGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0Lm5leHQoeyBpeDogaXgsIGxpbmU6IHBhcmFncmFwaCB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmlzVHJhbnNsYXRpbmcpIHtcclxuICAgICAgdGhpcy5zZXRQcm9ncmVzc0luZGljYXRvclRpbWVvdXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBDcmVhdGVzIHRpbWVvdXQgd2hpY2ggZW5hYmxlcyBwcm9ncmVzcyBpbmRpY2F0b3IgYWZ0ZXIgZ2l2ZW4gbWlsaXNlY29uZHMgKi9cclxuICBwcml2YXRlIHNldFByb2dyZXNzSW5kaWNhdG9yVGltZW91dCgpIHtcclxuICAgIGlmICh0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dE1pbGlTZWNvbmRzID09PSBudWxsIHx8IHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVmlzaWJsZSkge1xyXG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzSW5kaWNhdG9yKCk7XHJcbiAgICAgIH0sIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCBmb3Igc2V0dGluZyBuZWNlc3NhcnkgcHJvcGVydGllcyB0byBtYWtlIHByb2dyZXNzIGluZGljYXRvciB2aXNpYmxlLiAqL1xyXG4gIHByaXZhdGUgc2hvd1Byb2dyZXNzSW5kaWNhdG9yKCkge1xyXG4gICAgdGhpcy5fc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBNZXRob2QgZm9yIHNldHRpbmcgbmVjZXNzYXJ5IHByb3BlcnRpZXMgdG8gbWFrZSBwcm9ncmVzcyBpbmRpY2F0b3IgaGlkZGVuLiAqL1xyXG4gIGhpZGVQcm9ncmVzc0luZGljYXRvcigpIHtcclxuICAgIGlmICh0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5wcm9ncmVzc0luZGljYXRvclRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZVRleHRUb1NwZWVjaCgpIHtcclxuICAgIC8vIGlmIG5vdGhpbmcgdHJhbnNsYXRlZCwgdHRzIHNob3VsZCBub3QgYmUgYXZhaWxhYmxlXHJcbiAgICBpZiAoIXRoaXMudGFyZ2V0UGFyYWdyYXBocy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjdGl2ZVN5c3RlbSA9IHRoaXMuYWN0aXZlRGF0YTtcclxuICAgIHRoaXMudGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3MgPSB0aGlzLmZpbmRUZXh0VG9TcGVlY2hTZXR0aW5ncyhhY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsIHRoaXMudHJhbnNsYXRlZFRleHQpO1xyXG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncyA9IHRoaXMuZmluZFRleHRUb1NwZWVjaFNldHRpbmdzKGFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSwgdGhpcy5zb3VyY2VUZXh0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFRleHRUb1NwZWVjaFNldHRpbmdzKGxhbmd1YWdlQ29kZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBUZXh0VG9TcGVlY2hTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuY29uZmlnU2VydmljZS50ZXh0VG9TcGVlY2hDb25maWcubGFuZ3VhZ2VzW2xhbmd1YWdlQ29kZV07XHJcbiAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0ZXh0LFxyXG4gICAgICAgIHVybDogc2V0dGluZ3MudXJsLFxyXG4gICAgICAgIHZvaWNlOiBzZXR0aW5ncy52b2ljZSxcclxuICAgICAgICBsYW5nQnBjNDc6IHNldHRpbmdzLmxhbmdCcGM0NyxcclxuICAgICAgICBtYXhDaGFyc0luVGV4dDogdGhpcy5jb25maWdTZXJ2aWNlLnRleHRUb1NwZWVjaENvbmZpZy5tYXhDaGFyc0luVGV4dFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRGljdGlvbmFyeURyYWZ0cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25EcmFmdFN0YXR1cyA9ICdEcmFmdCc7XHJcblxyXG4gICAgdGhpcy5kaWN0aW9uYXJ5RW50cnkgPSB0aGlzLmRpY3Rpb25hcnlFbnRyeS5tYXAoZW50cnkgPT4gKHsuLi5lbnRyeSxcclxuICAgICAgbGFuZ3VhZ2VTdW1tYXJpZXM6IGVudHJ5Lmxhbmd1YWdlU3VtbWFyaWVzPy5tYXAobGFuZ3VhZ2VTdW1tYXJ5ID0+ICh7Li4ubGFuZ3VhZ2VTdW1tYXJ5LFxyXG4gICAgICAgIHRlcm1zOiBsYW5ndWFnZVN1bW1hcnkudGVybXMuZmlsdGVyKHRlcm0gPT4gdGVybS50ZXJtU3RhdHVzICE9PSBjb2xsZWN0aW9uRHJhZnRTdGF0dXMpXHJcbiAgICAgIH0pKVxyXG4gICAgfSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -4072,6 +4072,7 @@ class TldTranslateConfigService {
|
|
|
4072
4072
|
this._llmConfig.isEnabled = llm?.isEnabled ?? false;
|
|
4073
4073
|
this._llmConfig.apiUrl = llm?.apiUrl ?? 'https://translate.tilde.ai/api/language';
|
|
4074
4074
|
this._llmConfig.maxCharLength = llm?.maxCharLength ?? 5000;
|
|
4075
|
+
this._llmConfig.useLocalQuota = llm?.useLocalQuota ?? false;
|
|
4075
4076
|
this._audioConfig.audioTextInput = audio?.audioTextInput ?? false;
|
|
4076
4077
|
// Not setting default url because there is no service provided by Tilde and this is not used by default in website project.
|
|
4077
4078
|
this._audioConfig.audioApiUrl = audio?.audioApiUrl;
|
|
@@ -7416,6 +7417,8 @@ class TldTranslateTextService {
|
|
|
7416
7417
|
system: this.activeData
|
|
7417
7418
|
};
|
|
7418
7419
|
if ((detectedLanguage === params.system.targetLanguage) && this.systemManagementService.systems.find((system) => system.sourceLanguage === detectedLanguage)) {
|
|
7420
|
+
this.dictionaryEntry = [];
|
|
7421
|
+
this.hasDictionary = false;
|
|
7419
7422
|
this.systemManagementService.showSameLanguages(detectedLanguage);
|
|
7420
7423
|
this._onClear.next(null);
|
|
7421
7424
|
return of(this.getEmptyTranslationResponse(paragraph, params));
|
|
@@ -10458,7 +10461,8 @@ function llmServiceConfiguration(config) {
|
|
|
10458
10461
|
supportEmail: config.coreConfig.supportEmail,
|
|
10459
10462
|
appId: config.coreConfig.appId,
|
|
10460
10463
|
xApiKey: config.coreConfig.xApiKey,
|
|
10461
|
-
maxCharLength: config.llmConfig.maxCharLength
|
|
10464
|
+
maxCharLength: config.llmConfig.maxCharLength,
|
|
10465
|
+
useLocalQuota: config.llmConfig.useLocalQuota
|
|
10462
10466
|
};
|
|
10463
10467
|
}
|
|
10464
10468
|
|