@techextensor/tab-core-utility 2.2.196 → 2.2.198
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2022/index.mjs +11 -10
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +2 -10
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +16 -1
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +45 -39
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +14 -18
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +62 -206
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +11 -12
- package/esm2022/lib/tab-core-utility/app/crud/tab-release.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +36 -22
- package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/enums/dsq.enum.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +31 -6
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +12 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +11 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +15 -27
- package/esm2022/lib/tab-core-utility/app/helpers/common/template.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/user-personalization.helper.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +14 -59
- package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +31 -6
- package/esm2022/lib/tab-core-utility/app/helpers/screen/forms.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +12 -96
- package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/plugin.helpers.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +7 -15
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +36 -64
- package/esm2022/lib/tab-core-utility/app/models/app-object.class.mjs +1 -27
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/models/data-source-queries.class.mjs +1 -22
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +16 -18
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +9 -13
- package/esm2022/lib/tab-core-utility/app/utils/filter.util.mjs +3 -3
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -13
- package/esm2022/lib/tab-core-utility/app/utils/select-query.util.mjs +107 -0
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +8 -5
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +8 -9
- package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/pipe/translate.pipe.mjs +11 -11
- package/esm2022/lib/tab-core-utility/core/service/confirmation.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/encryption.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/service/notification.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +7 -7
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +9 -9
- package/esm2022/lib/tab-core-utility/core/service/translation.service.mjs +9 -9
- package/index.d.ts +10 -1
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +0 -4
- package/lib/tab-core-utility/app/constants/common.d.ts +15 -1
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +6 -1
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +16 -67
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +3 -1
- package/lib/tab-core-utility/app/enums/dsq.enum.d.ts +2 -2
- package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +2 -0
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +4 -1
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +1 -0
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +0 -17
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -18
- package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +2 -0
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +0 -53
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -6
- package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -2
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +84 -94
- package/lib/tab-core-utility/app/models/app-object.class.d.ts +2 -65
- package/lib/tab-core-utility/app/models/data-source-queries.class.d.ts +2 -71
- package/lib/tab-core-utility/app/models/filter.model.d.ts +9 -11
- package/lib/tab-core-utility/app/models/sort.model.d.ts +5 -7
- package/lib/tab-core-utility/app/utils/filter.util.d.ts +2 -2
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +0 -8
- package/lib/tab-core-utility/app/utils/select-query.util.d.ts +24 -0
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +3 -3
- package/package.json +1 -3
- package/esm2022/lib/tab-core-utility/app/enums/workflow.enum.mjs +0 -37
- package/lib/tab-core-utility/app/enums/workflow.enum.d.ts +0 -30
|
@@ -19,6 +19,10 @@ export class MetadataHelper {
|
|
|
19
19
|
this.appMenuMap = new Map();
|
|
20
20
|
this.allAppMenus = null;
|
|
21
21
|
this.sessionStorageService = inject(SessionStorageService);
|
|
22
|
+
// Auto-invalidate every cached model whenever Common.tabJson is reassigned.
|
|
23
|
+
// This is the single point of cache invalidation — no caller needs to call
|
|
24
|
+
// clearCache() explicitly anywhere else.
|
|
25
|
+
Common.onSchemaChange(() => this.clearCache());
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
24
28
|
* Helper method to get current app ID from session
|
|
@@ -291,11 +295,11 @@ export class MetadataHelper {
|
|
|
291
295
|
console.warn('MetadataHelper Failed to clear cache:', error);
|
|
292
296
|
}
|
|
293
297
|
}
|
|
294
|
-
static { this.ɵfac =
|
|
295
|
-
static { this.ɵprov =
|
|
298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: MetadataHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
299
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: MetadataHelper, providedIn: 'root' }); }
|
|
296
300
|
}
|
|
297
|
-
(
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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RSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDM0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDekIsQ0FBQztRQUVGLHNFQUFzRTtRQUN0RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDO1lBQ0gsYUFBYTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFeEIsY0FBYztZQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRTFCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzsrRUEvWFUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9jb21tb25cIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QubW9kZWxcIjtcclxuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLWZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyeS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUVudGl0eVR5cGUgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zY2hlbWEuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IEFwcFNjcmVlbk1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtc2NyZWVuLm1vZGVsXCI7XHJcbmltcG9ydCB7IE9yZ0luZm9Nb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvb3JnSW5mby5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcHBNZW51TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1tZW51Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL3N0b3JhZ2UtY29uc3RhbnRzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFIZWxwZXIge1xyXG4gIHByaXZhdGUgYXBwT2JqZWN0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcE9iamVjdE1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE9iamVjdHM6IEFwcE9iamVjdE1vZGVsW10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBhcHBTY3JlZW5NYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwU2NyZWVuTW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwU2NyZWVuczogQXBwU2NyZWVuTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIG9yZ0luZm9NYXAgPSBuZXcgTWFwPHN0cmluZywgT3JnSW5mb01vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbE9yZ0luZm9zOiBPcmdJbmZvTW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwcE1lbnVNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwTWVudU1vZGVsIHwgbnVsbD4oKTtcclxuICBwcml2YXRlIGFsbEFwcE1lbnVzOiBBcHBNZW51TW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvblxyXG4gICAqIEByZXR1cm5zIEN1cnJlbnQgYXBwIElEIG9yIG51bGwgaWYgbm90IGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q3VycmVudEFwcElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgYXBwSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuYXBwSW5mbyk7XHJcbiAgICAgIGNvbnN0IHBhcnNlZEFwcEluZm8gPSBhcHBJbmZvID8gSlNPTi5wYXJzZShhcHBJbmZvKSA6IG51bGw7XHJcbiAgICAgIHJldHVybiBwYXJzZWRBcHBJbmZvPy5JZCB8fCBudWxsO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gZ2V0IGN1cnJlbnQgYXBwIElEIGZyb20gc2Vzc2lvbjonLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXkgZnJvbSB0aGUgZ2l2ZW4gbWFwLlxyXG4gICAqIElmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hcCwgYW5kIHRoZSBzb3VyY2UgbGlzdCBjb250YWlucyBhbiBpdGVtIHRoYXQgbWF0Y2hlc1xyXG4gICAqIHRoZSBnaXZlbiBjb25kaXRpb24sIGl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgdXNpbmcgdGhlIGdpdmVuIG1vZGVsIGZhY3RvcnkgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc2VhcmNoIGluLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBsaXN0IG9mIHJhdyBpdGVtcyB0byBzZWFyY2ggaW4uXHJcbiAgICogQHBhcmFtIG1hdGNoRm4gVGhlIGNvbmRpdGlvbiB0byBtYXRjaCBhZ2FpbnN0IHJhdyBpdGVtcy5cclxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmcm9tIHJhdyBpdGVtLlxyXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGtleSwgb3IgbnVsbCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cclxuICAgKi9cclxuICBwcml2YXRlIGdldEZyb21NYXBPckNyZWF0ZTxUUmF3LCBUTW9kZWw+KFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBUTW9kZWwgfCBudWxsPixcclxuICAgIGtleTogc3RyaW5nLFxyXG4gICAgc291cmNlTGlzdDogVFJhd1tdLFxyXG4gICAgbWF0Y2hGbjogKGl0ZW06IFRSYXcpID0+IGJvb2xlYW4sXHJcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUUmF3KSA9PiBUTW9kZWxcclxuICApOiBUTW9kZWwgfCBudWxsIHtcclxuICAgIGlmICgha2V5KSByZXR1cm4gbnVsbDtcclxuICAgIGlmIChtYXAuaGFzKGtleSkpIHJldHVybiBtYXAuZ2V0KGtleSkgfHwgbnVsbDtcclxuXHJcbiAgICBjb25zdCBpdGVtID0gc291cmNlTGlzdD8uZmluZChtYXRjaEZuKTtcclxuICAgIGNvbnN0IG1vZGVsID0gaXRlbSA/IG1vZGVsRmFjdG9yeShpdGVtKSA6IG51bGw7XHJcbiAgICBtYXAuc2V0KGtleSwgbW9kZWwpO1xyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF6aWx5IGluaXRpYWxpemVzIGEgbGlzdCBvZiBtb2RlbHMgZnJvbSBhIHNvdXJjZSBsaXN0LlxyXG4gICAqIEl0IGNyZWF0ZXMgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZHMgaXQgdG8gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJdCBhbHNvIHNldHMgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXHJcbiAgICogQHBhcmFtIGxpc3RSZWYgVGhlIHJlZmVyZW5jZSB0byB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNldHRlciBUaGUgc2V0dGVyIHRvIHNldCB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICogQHBhcmFtIHNvdXJjZUxpc3QgVGhlIHNvdXJjZSBsaXN0IG9mIGl0ZW1zLlxyXG4gICAqIEBwYXJhbSBtYXAgVGhlIG1hcCB0byBzdG9yZSB0aGUgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBnZXRLZXlzIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgZm9yIHRoZSBnaXZlbiBpdGVtLlxyXG4gICAqIEBwYXJhbSBtb2RlbEZhY3RvcnkgVGhlIGZhY3RvcnkgdG8gY3JlYXRlIGEgbmV3IG1vZGVsIGZvciB0aGUgZ2l2ZW4gaXRlbS5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsYXp5SW5pdExpc3Q8VCwgTT4oXHJcbiAgICBsaXN0UmVmOiBNW10gfCBudWxsLFxyXG4gICAgc2V0dGVyOiAobGlzdDogTVtdKSA9PiB2b2lkLFxyXG4gICAgc291cmNlTGlzdDogVFtdLFxyXG4gICAgbWFwOiBNYXA8c3RyaW5nLCBNIHwgbnVsbD4sXHJcbiAgICBnZXRLZXlzOiAoaXRlbTogVCkgPT4gc3RyaW5nW10sXHJcbiAgICBtb2RlbEZhY3Rvcnk6IChpdGVtOiBUKSA9PiBNXHJcbiAgKTogTVtdIHtcclxuICAgIC8vIElmIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJldHVybiBpdC5cclxuICAgIGlmIChsaXN0UmVmKSByZXR1cm4gbGlzdFJlZjtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgbW9kZWwgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc291cmNlIGxpc3QgYW5kIGFkZCBpdCB0byB0aGUgbWFwLlxyXG4gICAgY29uc3QgbW9kZWxzID0gc291cmNlTGlzdC5tYXAoKGl0ZW06IFQpID0+IHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBtb2RlbEZhY3RvcnkoaXRlbSk7XHJcbiAgICAgIGdldEtleXMoaXRlbSkuZm9yRWFjaChrZXkgPT4gbWFwLnNldChrZXksIG1vZGVsKSk7XHJcbiAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgbGlzdCBvZiBtb2RlbHMgdG8gdGhlIGdpdmVuIHNldHRlci5cclxuICAgIHNldHRlcihtb2RlbHMpO1xyXG5cclxuICAgIC8vIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMuXHJcbiAgICByZXR1cm4gbW9kZWxzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW4gYXBwIG9iamVjdCBpbiB0aGUgbWFwIGJ5IGl0cyBuYW1lIG9yIGlkLlxyXG4gICAqIElmIHRoZSBhcHAgb2JqZWN0IGlzIG5vdCBmb3VuZCwgaXQgY3JlYXRlcyBhIG5ldyBvbmUgYW5kIGFkZHMgaXQgdG8gdGhlIG1hcC5cclxuICAgKiBAcGFyYW0gbmFtZU9ySWQgVGhlIG5hbWUgb3IgaWQgb2YgdGhlIGFwcCBvYmplY3QgdG8gZmluZC5cclxuICAgKiBAcmV0dXJucyBUaGUgYXBwIG9iamVjdCBpZiBmb3VuZCwgb3IgbnVsbCBpZiBub3QgZm91bmQuXHJcbiAgICovXHJcbiAgZ2V0QXBwT2JqZWN0QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwT2JqZWN0TW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5hcHBPYmplY3RzLFxyXG4gICAgICAob2JqOiBhbnkpID0+IG9iai5hcHBPYmplY3ROYW1lID09PSBuYW1lT3JJZCB8fCBvYmouYXBwT2JqZWN0SWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAob2JqOiBhbnkpID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgYXBwIG9iamVjdHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggYXBwIG9iamVjdC5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG9iamVjdHMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgYXBwIG9iamVjdHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwT2JqZWN0cyhmaWx0ZXJGbj86IChvYmo6IEFwcE9iamVjdE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwT2JqZWN0TW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwT2JqZWN0cyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLmFwcE9iamVjdHMsXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxyXG4gICAgICAob2JqOiBhbnkpID0+IFtvYmouYXBwT2JqZWN0SWQ/LnRvTG93ZXJDYXNlKCksIG9iai5hcHBPYmplY3ROYW1lXSxcclxuICAgICAgb2JqID0+IG5ldyBBcHBPYmplY3RNb2RlbChvYmosIHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBmaWx0ZXJlZExpc3Q6IEFwcE9iamVjdE1vZGVsW10gPSBsaXN0O1xyXG4gICAgaWYgKCFpbmNsdWRlU3lzdGVtRGF0YSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50QXBwSWQgPSB0aGlzLmdldEN1cnJlbnRBcHBJZCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBmaWx0ZXJlZExpc3QgPSBsaXN0LmZpbHRlcihvYmogPT5cclxuICAgICAgICAhb2JqLkFwcElkIHx8ICAgICAgICAgICAgICAgICAgICAvLyBHbG9iYWwgZGF0YSAoYXBwID0gbnVsbClcclxuICAgICAgICBvYmouQXBwSWQgPT09IGN1cnJlbnRBcHBJZCAgICAgICAvLyBDdXJyZW50IGFwcCBkYXRhXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gZmlsdGVyZWRMaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBmaWx0ZXJlZExpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBmaWVsZHMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZmllbGQuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICovXHJcbiAgZ2V0QWxsRmllbGRzKGZpbHRlckZuPzogKGZpZWxkOiBBcHBGaWVsZE1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogQXBwRmllbGRNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGZpZWxkcyBmcm9tIGFsbCBhcHAgb2JqZWN0cy5cclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyh1bmRlZmluZWQsIGluY2x1ZGVTeXN0ZW1EYXRhKS5mbGF0TWFwKG9iaiA9PiBvYmouZmllbGRzKCkpO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBmaWVsZHMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxGaWVsZHMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbEZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGEgZmllbGQgYnkgaXRzIElEIGFjcm9zcyBhbGwgYXBwIG9iamVjdHNcclxuICAgKiBAcGFyYW0gZmllbGRJZCBUaGUgSUQgb2YgdGhlIGZpZWxkIHRvIGZpbmRcclxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgaWYgZm91bmQsIG9yIG51bGwgaWYgbm90IGZvdW5kXHJcbiAgICovXHJcbiAgZ2V0RmllbGRCeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoIW5hbWVPcklkKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PlxyXG4gICAgICBmaWVsZC5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgZmllbGQuRmllbGROYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgdHJ1ZVxyXG4gICAgKVswXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gZWFjaCBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcGFyYW0gZmlsdGVyRm4gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzLlxyXG4gICAqL1xyXG4gIGdldEFsbERhdGFTb3VyY2VRdWVyaWVzKGZpbHRlckZuPzogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4sIGluY2x1ZGVTeXN0ZW1EYXRhID0gZmFsc2UpOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxEU1FzID0gdGhpcy5nZXRBbGxBcHBPYmplY3RzKHVuZGVmaW5lZCwgaW5jbHVkZVN5c3RlbURhdGEpLmZsYXRNYXAob2JqID0+IG9iai5kYXRhU291cmNlUXVlcmllcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGFsbERTUXMuZmlsdGVyKGZpbHRlckZuKSA6IGFsbERTUXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBkYXRhIHNvdXJjZSBxdWVyeSBieSBpdHMgSUQsIFF1ZXJ5TmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lIG9mIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsfSAtIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfCBudWxsIHtcclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGJ5IElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lXHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyh1bmRlZmluZWQsIHRydWUpLmZpbmQoXHJcbiAgICAgIGRzcSA9PiBkc3E/LklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBkc3E/LlF1ZXJ5TmFtZSA9PT0gbmFtZU9ySWQgfHwgZHNxPy5EaXNwbGF5TmFtZSA9PT0gbmFtZU9ySWRcclxuICAgICkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbiBhcHAgc2NyZWVuIGJ5IGl0cyBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIHNjcmVlbnMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElELCBOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgYXBwIHNjcmVlbiB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgc2NyZWVuIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBTY3JlZW5CeUlkT3JOYW1lKG5hbWVPcklkOiBzdHJpbmcpOiBBcHBTY3JlZW5Nb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcFNjcmVlbk1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLnNjcmVlbnMsXHJcbiAgICAgIChzY3JlZW46IGFueSkgPT4gc2NyZWVuPy5zY3JlZW5JZD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgc2NyZWVuPy5zY3JlZW5OYW1lID09PSBuYW1lT3JJZCxcclxuICAgICAgKHNjcmVlbjogYW55KSA9PiBuZXcgQXBwU2NyZWVuTW9kZWwoc2NyZWVuKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIGFwcCBzY3JlZW5zLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBhcHAgc2NyZWVucy5cclxuICAgKiBAcmV0dXJucyB7QXBwU2NyZWVuTW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKi9cclxuICBnZXRBbGxBcHBTY3JlZW5zKGZpbHRlckZuPzogKHNjcmVlbjogQXBwU2NyZWVuTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBTY3JlZW5Nb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcFNjcmVlbnMsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBTY3JlZW5zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uc2NyZWVucyxcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIChzOiBhbnkpID0+IFtzPy5zY3JlZW5JZD8udG9Mb3dlckNhc2UoKSwgcz8uc2NyZWVuTmFtZV0sXHJcbiAgICAgIHMgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGxpc3QuZmlsdGVyKGZpbHRlckZuKSA6IGxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gb3JnYW5pemF0aW9uIGluZm8gYnkgaXRzIElEIG9yIFRlbmFudENvZGUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgb3JnYW5pemF0aW9uIGluZm8gYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JUZW5hbnRDb2RlIC0gVGhlIElEIG9yIFRlbmFudENvZGUgb2YgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtPcmdJbmZvTW9kZWwgfCBudWxsfSAtIFRoZSBvcmdhbml6YXRpb24gaW5mbyBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0T3JnSW5mb0J5SWRPclRlbmFudENvZGUobmFtZU9yVGVuYW50Q29kZTogc3RyaW5nKTogT3JnSW5mb01vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgbmFtZU9yVGVuYW50Q29kZSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IElEIG9yIFRlbmFudENvZGVcclxuICAgICAgKG9yZzogYW55KSA9PiBvcmcuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPclRlbmFudENvZGU/LnRvTG93ZXJDYXNlKCkgfHwgb3JnLlRlbmFudENvZGUgPT09IG5hbWVPclRlbmFudENvZGUsXHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBPcmdJbmZvTW9kZWwgaWYgdGhlIG9yZ2FuaXphdGlvbiBpbmZvIGlzIGZvdW5kXHJcbiAgICAgIChvcmc6IGFueSkgPT4gbmV3IE9yZ0luZm9Nb2RlbChvcmcpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBvcmdhbml6YXRpb24gaW5mby5cclxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsW119IC0gVGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICovXHJcbiAgZ2V0QWxsT3JnSW5mb3MoZmlsdGVyRm4/OiAob3JnOiBPcmdJbmZvTW9kZWwpID0+IGJvb2xlYW4pOiBPcmdJbmZvTW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbE9yZ0luZm9zID0gdmFsKSxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uT3JnSW5mb3MsXHJcbiAgICAgIHRoaXMub3JnSW5mb01hcCxcclxuICAgICAgKG9yZzogYW55KSA9PiBbb3JnPy5JRD8udG9Mb3dlckNhc2UoKSwgb3JnPy5UZW5hbnRDb2RlXSxcclxuICAgICAgb3JnID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2Ygb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgYSBnbG9iYWwgc2VhcmNoIGFjcm9zcyBhbGwgbWV0YWRhdGEgZm9yIGEgZ2l2ZW4gc2VhcmNoIHRlcm0uXHJcbiAgICogWW91IGNhbiBuYXJyb3cgdGhlIHNlYXJjaCBieSBwcm92aWRpbmcgYSBsaXN0IG9mIGVudGl0eSB0eXBlcyB0byBzZWFyY2ggd2l0aGluLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHBhcmFtIHtNZXRhZGF0YUVudGl0eVR5cGVbXX0gZW50aXR5VHlwZXMgLSBUaGUgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi4gSWYgb21pdHRlZCwgYWxsIGVudGl0eSB0eXBlcyBhcmUgc2VhcmNoZWQuXHJcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueVtdPn0gLSBBIGRpY3Rpb25hcnkgd2l0aCByZXN1bHRzIGdyb3VwZWQgYnkgZW50aXR5IHR5cGUuXHJcbiAgICovXHJcbiAgc2VhcmNoTWV0YWRhdGEodGVybTogc3RyaW5nLCBlbnRpdHlUeXBlcz86IE1ldGFkYXRhRW50aXR5VHlwZVtdKTogUmVjb3JkPHN0cmluZywgYW55W10+IHtcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXJtLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlfSB0eXBlIC0gVGhlIGVudGl0eSB0eXBlIHRvIGNoZWNrLlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgZW50aXR5IHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxyXG4gICAgICovXHJcbiAgICBjb25zdCBzaG91bGRTZWFyY2ggPSAodHlwZTogTWV0YWRhdGFFbnRpdHlUeXBlKSA9PiAhZW50aXR5VHlwZXMgfHwgZW50aXR5VHlwZXMuaW5jbHVkZXModHlwZSk7XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX09CSkVDVFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIG9iamVjdHMgYnkgSUQsIE9iamVjdE5hbWUsIERpc3BsYXlOYW1lLCBvciBTeXN0ZW1EQlRhYmxlTmFtZVxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTXSA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT5cclxuICAgICAgICBbb2JqPy5JRCwgb2JqPy5PYmplY3ROYW1lLCBvYmo/LkRpc3BsYXlOYW1lLCBvYmo/LlN5c3RlbURCVGFibGVOYW1lXVxyXG4gICAgICAgICAgLnNvbWUodmFsID0+IHZhbCA9PT0gc2VhcmNoVGVybSB8fCB2YWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEUykpIHtcclxuICAgICAgLy8gU2VhcmNoIGZvciBhcHAgZmllbGRzIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX0ZJRUxEU10gPSB0aGlzLmdldEFsbEZpZWxkcyhmaWVsZCA9PiBmaWVsZC5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgZGF0YSBzb3VyY2UgcXVlcmllcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkRBVEFfU09VUkNFX1FVRVJJRVNdID0gdGhpcy5nZXRBbGxEYXRhU291cmNlUXVlcmllcyhkc3EgPT4gZHNxLnNlYXJjaChzZWFyY2hUZXJtKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3VsZFNlYXJjaChNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIHNjcmVlbnMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfU0NSRUVOU10gPSB0aGlzLmdldEFsbEFwcFNjcmVlbnMoc2NyZWVuID0+IHNjcmVlbi5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIG1lbnUgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogU2VhcmNoZXMgdGhyb3VnaCBhbGwgYXBwIG1lbnVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9ySWQgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgYXBwIG1lbnUgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcE1lbnVNb2RlbCB8IG51bGx9IC0gVGhlIGFwcCBtZW51IG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRBcHBNZW51QnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwTWVudU1vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcCxcclxuICAgICAgbmFtZU9ySWQsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxyXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBhcHAgbWVudSBieSBJRCBvciBuYW1lXHJcbiAgICAgIChtZW51OiBhbnkpID0+IG1lbnU/LklkPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSB8fCBtZW51Py5NZW51TmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBBcHBNZW51TW9kZWwgaWYgdGhlIGFwcCBtZW51IGlzIGZvdW5kXHJcbiAgICAgIChtZW51OiBhbnkpID0+IG5ldyBBcHBNZW51TW9kZWwobWVudSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgbWVudXMuXHJcbiAgICogSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGl0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIG1lbnVzLlxyXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWxbXX0gLSBUaGUgbGlzdCBvZiBhcHAgbWVudXMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwTWVudXMoZmlsdGVyRm4/OiAobWVudTogQXBwTWVudU1vZGVsKSA9PiBib29sZWFuKTogQXBwTWVudU1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwTWVudXMsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxBcHBNZW51cyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk1lbnVzLFxyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXHJcbiAgICAgIChtOiBhbnkpID0+IFttPy5JZD8udG9Mb3dlckNhc2UoKSwgbT8uTmFtZV0sXHJcbiAgICAgIHMgPT4gbmV3IEFwcE1lbnVNb2RlbChzKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIGFsbCBjYWNoZWQgbWV0YWRhdGEgc2FmZWx5LlxyXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBjb250ZXh0IGNoYW5nZXMgKGUuZy4sIHdoZW4gYXBwLCBvcmcsIG9yIHNlc3Npb24gY2hhbmdlcykuXHJcbiAgICovXHJcbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIENsZWFyIG1hcHNcclxuICAgICAgdGhpcy5hcHBPYmplY3RNYXAuY2xlYXIoKTtcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAuY2xlYXIoKTtcclxuICAgICAgdGhpcy5vcmdJbmZvTWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYXBwTWVudU1hcC5jbGVhcigpO1xyXG5cclxuICAgICAgLy8gUmVzZXQgbGlzdHNcclxuICAgICAgdGhpcy5hbGxBcHBPYmplY3RzID0gbnVsbDtcclxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zID0gbnVsbDtcclxuICAgICAgdGhpcy5hbGxPcmdJbmZvcyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsQXBwTWVudXMgPSBudWxsO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignTWV0YWRhdGFIZWxwZXIgRmFpbGVkIHRvIGNsZWFyIGNhY2hlOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59Il19
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: MetadataHelper, decorators: [{
|
|
302
|
+
type: Injectable,
|
|
303
|
+
args: [{ providedIn: 'root' }]
|
|
304
|
+
}], ctorParameters: () => [] });
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1kYXRhLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLGNBQWM7SUFlekI7UUFkUSxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBQ3hELGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUU5QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFDcEQsZ0JBQVcsR0FBMEIsSUFBSSxDQUFDO1FBRTFDLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUNwRCxnQkFBVyxHQUEwQixJQUFJLENBQUM7UUFFakMs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eyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBcHBGaWVsZE1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hcHAtZmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhRW50aXR5VHlwZSB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQXBwU2NyZWVuTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2FwcC1zY3JlZW4ubW9kZWxcIjtcclxuaW1wb3J0IHsgT3JnSW5mb01vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9vcmdJbmZvLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFwcE1lbnVNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvYXBwLW1lbnUubW9kZWxcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2F1dGgvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3RvcmFnZUNvbnN0YW50cyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUhlbHBlciB7XHJcbiAgcHJpdmF0ZSBhcHBPYmplY3RNYXAgPSBuZXcgTWFwPHN0cmluZywgQXBwT2JqZWN0TW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwT2JqZWN0czogQXBwT2JqZWN0TW9kZWxbXSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGFwcFNjcmVlbk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBTY3JlZW5Nb2RlbCB8IG51bGw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxBcHBTY3JlZW5zOiBBcHBTY3JlZW5Nb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgb3JnSW5mb01hcCA9IG5ldyBNYXA8c3RyaW5nLCBPcmdJbmZvTW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsT3JnSW5mb3M6IE9yZ0luZm9Nb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgYXBwTWVudU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBNZW51TW9kZWwgfCBudWxsPigpO1xyXG4gIHByaXZhdGUgYWxsQXBwTWVudXM6IEFwcE1lbnVNb2RlbFtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBBdXRvLWludmFsaWRhdGUgZXZlcnkgY2FjaGVkIG1vZGVsIHdoZW5ldmVyIENvbW1vbi50YWJKc29uIGlzIHJlYXNzaWduZWQuXHJcbiAgICAvLyBUaGlzIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgY2FjaGUgaW52YWxpZGF0aW9uIOKAlCBubyBjYWxsZXIgbmVlZHMgdG8gY2FsbFxyXG4gICAgLy8gY2xlYXJDYWNoZSgpIGV4cGxpY2l0bHkgYW55d2hlcmUgZWxzZS5cclxuICAgIENvbW1vbi5vblNjaGVtYUNoYW5nZSgoKSA9PiB0aGlzLmNsZWFyQ2FjaGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb25cclxuICAgKiBAcmV0dXJucyBDdXJyZW50IGFwcCBJRCBvciBudWxsIGlmIG5vdCBhdmFpbGFibGVcclxuICAgKi9cclxuICBwcml2YXRlIGdldEN1cnJlbnRBcHBJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGFwcEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcEluZm8pO1xyXG4gICAgICBjb25zdCBwYXJzZWRBcHBJbmZvID0gYXBwSW5mbyA/IEpTT04ucGFyc2UoYXBwSW5mbykgOiBudWxsO1xyXG4gICAgICByZXR1cm4gcGFyc2VkQXBwSW5mbz8uSWQgfHwgbnVsbDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBjdXJyZW50IGFwcCBJRCBmcm9tIHNlc3Npb246JywgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGZyb20gdGhlIGdpdmVuIG1hcC5cclxuICAgKiBJZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYXAsIGFuZCB0aGUgc291cmNlIGxpc3QgY29udGFpbnMgYW4gaXRlbSB0aGF0IG1hdGNoZXNcclxuICAgKiB0aGUgZ2l2ZW4gY29uZGl0aW9uLCBpdCBjcmVhdGVzIGEgbmV3IG1vZGVsIHVzaW5nIHRoZSBnaXZlbiBtb2RlbCBmYWN0b3J5IGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBUaGUgbWFwIHRvIHNlYXJjaCBpbi5cclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgKiBAcGFyYW0gc291cmNlTGlzdCBUaGUgbGlzdCBvZiByYXcgaXRlbXMgdG8gc2VhcmNoIGluLlxyXG4gICAqIEBwYXJhbSBtYXRjaEZuIFRoZSBjb25kaXRpb24gdG8gbWF0Y2ggYWdhaW5zdCByYXcgaXRlbXMuXHJcbiAgICogQHBhcmFtIG1vZGVsRmFjdG9yeSBUaGUgZmFjdG9yeSB0byBjcmVhdGUgYSBuZXcgbW9kZWwgZnJvbSByYXcgaXRlbS5cclxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRGcm9tTWFwT3JDcmVhdGU8VFJhdywgVE1vZGVsPihcclxuICAgIG1hcDogTWFwPHN0cmluZywgVE1vZGVsIHwgbnVsbD4sXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIHNvdXJjZUxpc3Q6IFRSYXdbXSxcclxuICAgIG1hdGNoRm46IChpdGVtOiBUUmF3KSA9PiBib29sZWFuLFxyXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVFJhdykgPT4gVE1vZGVsXHJcbiAgKTogVE1vZGVsIHwgbnVsbCB7XHJcbiAgICBpZiAoIWtleSkgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAobWFwLmhhcyhrZXkpKSByZXR1cm4gbWFwLmdldChrZXkpIHx8IG51bGw7XHJcblxyXG4gICAgY29uc3QgaXRlbSA9IHNvdXJjZUxpc3Q/LmZpbmQobWF0Y2hGbik7XHJcbiAgICBjb25zdCBtb2RlbCA9IGl0ZW0gPyBtb2RlbEZhY3RvcnkoaXRlbSkgOiBudWxsO1xyXG4gICAgbWFwLnNldChrZXksIG1vZGVsKTtcclxuICAgIHJldHVybiBtb2RlbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExhemlseSBpbml0aWFsaXplcyBhIGxpc3Qgb2YgbW9kZWxzIGZyb20gYSBzb3VyY2UgbGlzdC5cclxuICAgKiBJdCBjcmVhdGVzIGEgbmV3IG1vZGVsIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHNvdXJjZSBsaXN0IGFuZCBhZGRzIGl0IHRvIHRoZSBnaXZlbiBtYXAuXHJcbiAgICogSXQgYWxzbyBzZXRzIHRoZSBsaXN0IG9mIG1vZGVscyB0byB0aGUgZ2l2ZW4gc2V0dGVyLlxyXG4gICAqIEBwYXJhbSBsaXN0UmVmIFRoZSByZWZlcmVuY2UgdG8gdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBzZXR0ZXIgVGhlIHNldHRlciB0byBzZXQgdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqIEBwYXJhbSBzb3VyY2VMaXN0IFRoZSBzb3VyY2UgbGlzdCBvZiBpdGVtcy5cclxuICAgKiBAcGFyYW0gbWFwIFRoZSBtYXAgdG8gc3RvcmUgdGhlIG1vZGVscy5cclxuICAgKiBAcGFyYW0gZ2V0S2V5cyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIGZvciB0aGUgZ2l2ZW4gaXRlbS5cclxuICAgKiBAcGFyYW0gbW9kZWxGYWN0b3J5IFRoZSBmYWN0b3J5IHRvIGNyZWF0ZSBhIG5ldyBtb2RlbCBmb3IgdGhlIGdpdmVuIGl0ZW0uXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGF6eUluaXRMaXN0PFQsIE0+KFxyXG4gICAgbGlzdFJlZjogTVtdIHwgbnVsbCxcclxuICAgIHNldHRlcjogKGxpc3Q6IE1bXSkgPT4gdm9pZCxcclxuICAgIHNvdXJjZUxpc3Q6IFRbXSxcclxuICAgIG1hcDogTWFwPHN0cmluZywgTSB8IG51bGw+LFxyXG4gICAgZ2V0S2V5czogKGl0ZW06IFQpID0+IHN0cmluZ1tdLFxyXG4gICAgbW9kZWxGYWN0b3J5OiAoaXRlbTogVCkgPT4gTVxyXG4gICk6IE1bXSB7XHJcbiAgICAvLyBJZiB0aGUgbGlzdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZXR1cm4gaXQuXHJcbiAgICBpZiAobGlzdFJlZikgcmV0dXJuIGxpc3RSZWY7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgbmV3IG1vZGVsIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHNvdXJjZSBsaXN0IGFuZCBhZGQgaXQgdG8gdGhlIG1hcC5cclxuICAgIGNvbnN0IG1vZGVscyA9IHNvdXJjZUxpc3QubWFwKChpdGVtOiBUKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxGYWN0b3J5KGl0ZW0pO1xyXG4gICAgICBnZXRLZXlzKGl0ZW0pLmZvckVhY2goa2V5ID0+IG1hcC5zZXQoa2V5LCBtb2RlbCkpO1xyXG4gICAgICByZXR1cm4gbW9kZWw7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIGxpc3Qgb2YgbW9kZWxzIHRvIHRoZSBnaXZlbiBzZXR0ZXIuXHJcbiAgICBzZXR0ZXIobW9kZWxzKTtcclxuXHJcbiAgICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgbW9kZWxzLlxyXG4gICAgcmV0dXJuIG1vZGVscztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuIGFwcCBvYmplY3QgaW4gdGhlIG1hcCBieSBpdHMgbmFtZSBvciBpZC5cclxuICAgKiBJZiB0aGUgYXBwIG9iamVjdCBpcyBub3QgZm91bmQsIGl0IGNyZWF0ZXMgYSBuZXcgb25lIGFuZCBhZGRzIGl0IHRvIHRoZSBtYXAuXHJcbiAgICogQHBhcmFtIG5hbWVPcklkIFRoZSBuYW1lIG9yIGlkIG9mIHRoZSBhcHAgb2JqZWN0IHRvIGZpbmQuXHJcbiAgICogQHJldHVybnMgVGhlIGFwcCBvYmplY3QgaWYgZm91bmQsIG9yIG51bGwgaWYgbm90IGZvdW5kLlxyXG4gICAqL1xyXG4gIGdldEFwcE9iamVjdEJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE9iamVjdE1vZGVsIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRGcm9tTWFwT3JDcmVhdGUoXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLFxyXG4gICAgICBuYW1lT3JJZCxcclxuICAgICAgQ29tbW9uLnRhYkpzb24uYXBwT2JqZWN0cyxcclxuICAgICAgKG9iajogYW55KSA9PiBvYmouYXBwT2JqZWN0TmFtZSA9PT0gbmFtZU9ySWQgfHwgb2JqLmFwcE9iamVjdElkPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JJZD8udG9Mb3dlckNhc2UoKSxcclxuICAgICAgKG9iajogYW55KSA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcCBvYmplY3RzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBvYmplY3RzLlxyXG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGFwcCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE9iamVjdHMoZmlsdGVyRm4/OiAob2JqOiBBcHBPYmplY3RNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcE9iamVjdE1vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyxcclxuICAgICAgdmFsID0+ICh0aGlzLmFsbEFwcE9iamVjdHMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5hcHBPYmplY3RzLFxyXG4gICAgICB0aGlzLmFwcE9iamVjdE1hcCxcclxuICAgICAgKG9iajogYW55KSA9PiBbb2JqLmFwcE9iamVjdElkPy50b0xvd2VyQ2FzZSgpLCBvYmouYXBwT2JqZWN0TmFtZV0sXHJcbiAgICAgIG9iaiA9PiBuZXcgQXBwT2JqZWN0TW9kZWwob2JqLCB0aGlzKVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgZmlsdGVyZWRMaXN0OiBBcHBPYmplY3RNb2RlbFtdID0gbGlzdDtcclxuICAgIGlmICghaW5jbHVkZVN5c3RlbURhdGEpIHtcclxuICAgICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5nZXRDdXJyZW50QXBwSWQoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgZmlsdGVyZWRMaXN0ID0gbGlzdC5maWx0ZXIob2JqID0+XHJcbiAgICAgICAgIW9iai5BcHBJZCB8fCAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFsIGRhdGEgKGFwcCA9IG51bGwpXHJcbiAgICAgICAgb2JqLkFwcElkID09PSBjdXJyZW50QXBwSWQgICAgICAgLy8gQ3VycmVudCBhcHAgZGF0YVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBhcHBseSBpdCB0byB0aGUgbGlzdCBvZiBhcHAgb2JqZWN0cy5cclxuICAgIHJldHVybiBmaWx0ZXJGbiA/IGZpbHRlcmVkTGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogZmlsdGVyZWRMaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgZmllbGRzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byBlYWNoIGZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZmllbGRzLlxyXG4gICAqL1xyXG4gIGdldEFsbEZpZWxkcyhmaWx0ZXJGbj86IChmaWVsZDogQXBwRmllbGRNb2RlbCkgPT4gYm9vbGVhbiwgaW5jbHVkZVN5c3RlbURhdGEgPSBmYWxzZSk6IEFwcEZpZWxkTW9kZWxbXSB7XHJcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMgZnJvbSBhbGwgYXBwIG9iamVjdHMuXHJcbiAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLmdldEFsbEFwcE9iamVjdHModW5kZWZpbmVkLCBpbmNsdWRlU3lzdGVtRGF0YSkuZmxhdE1hcChvYmogPT4gb2JqLmZpZWxkcygpKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gYWxsRmllbGRzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxGaWVsZHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhIGZpZWxkIGJ5IGl0cyBJRCBhY3Jvc3MgYWxsIGFwcCBvYmplY3RzXHJcbiAgICogQHBhcmFtIGZpZWxkSWQgVGhlIElEIG9mIHRoZSBmaWVsZCB0byBmaW5kXHJcbiAgICogQHJldHVybnMgVGhlIGZpZWxkIGlmIGZvdW5kLCBvciBudWxsIGlmIG5vdCBmb3VuZFxyXG4gICAqL1xyXG4gIGdldEZpZWxkQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwRmllbGRNb2RlbCB8IG51bGwge1xyXG4gICAgaWYgKCFuYW1lT3JJZCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT5cclxuICAgICAgZmllbGQuSUQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgIGZpZWxkLkZpZWxkTmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIHRydWVcclxuICAgIClbMF0gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMgaW4gdGhlIG1ldGFkYXRhLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIGVhY2ggZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHBhcmFtIGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgZGF0YSBzb3VyY2UgcXVlcmllcy5cclxuICAgKi9cclxuICBnZXRBbGxEYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbj86IChkc3E6IERhdGFTb3VyY2VRdWVyeU1vZGVsKSA9PiBib29sZWFuLCBpbmNsdWRlU3lzdGVtRGF0YSA9IGZhbHNlKTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSB7XHJcbiAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGZyb20gYWxsIGFwcCBvYmplY3RzLlxyXG4gICAgY29uc3QgYWxsRFNRcyA9IHRoaXMuZ2V0QWxsQXBwT2JqZWN0cyh1bmRlZmluZWQsIGluY2x1ZGVTeXN0ZW1EYXRhKS5mbGF0TWFwKG9iaiA9PiBvYmouZGF0YVNvdXJjZVF1ZXJpZXMoKSk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBhbGxEU1FzLmZpbHRlcihmaWx0ZXJGbikgOiBhbGxEU1FzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElELCBRdWVyeU5hbWUsIG9yIERpc3BsYXlOYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZSBvZiB0aGUgZGF0YSBzb3VyY2UgcXVlcnkgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxyXG4gICAqL1xyXG4gIGdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IERhdGFTb3VyY2VRdWVyeU1vZGVsIHwgbnVsbCB7XHJcbiAgICAvLyBTZWFyY2ggZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBieSBJRCwgUXVlcnlOYW1lLCBvciBEaXNwbGF5TmFtZVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXModW5kZWZpbmVkLCB0cnVlKS5maW5kKFxyXG4gICAgICBkc3EgPT4gZHNxPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgZHNxPy5RdWVyeU5hbWUgPT09IG5hbWVPcklkIHx8IGRzcT8uRGlzcGxheU5hbWUgPT09IG5hbWVPcklkXHJcbiAgICApIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW4gYXBwIHNjcmVlbiBieSBpdHMgSUQsIE5hbWUsIG9yIERpc3BsYXlOYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBzY3JlZW5zIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lT3JJZCAtIFRoZSBJRCwgTmFtZSwgb3IgRGlzcGxheU5hbWUgb2YgdGhlIGFwcCBzY3JlZW4gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsIHwgbnVsbH0gLSBUaGUgYXBwIHNjcmVlbiBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShuYW1lT3JJZDogc3RyaW5nKTogQXBwU2NyZWVuTW9kZWwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmdldEZyb21NYXBPckNyZWF0ZShcclxuICAgICAgdGhpcy5hcHBTY3JlZW5NYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5zY3JlZW5zLFxyXG4gICAgICAoc2NyZWVuOiBhbnkpID0+IHNjcmVlbj8uc2NyZWVuSWQ/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVPcklkPy50b0xvd2VyQ2FzZSgpIHx8IHNjcmVlbj8uc2NyZWVuTmFtZSA9PT0gbmFtZU9ySWQsXHJcbiAgICAgIChzY3JlZW46IGFueSkgPT4gbmV3IEFwcFNjcmVlbk1vZGVsKHNjcmVlbilcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIGFsbCBhcHAgc2NyZWVucy5cclxuICAgKiBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgaXQgaXMgYXBwbGllZCB0byB0aGUgbGlzdCBvZiBhcHAgc2NyZWVucy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgYXBwIHNjcmVlbnMuXHJcbiAgICogQHJldHVybnMge0FwcFNjcmVlbk1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICovXHJcbiAgZ2V0QWxsQXBwU2NyZWVucyhmaWx0ZXJGbj86IChzY3JlZW46IEFwcFNjcmVlbk1vZGVsKSA9PiBib29sZWFuKTogQXBwU2NyZWVuTW9kZWxbXSB7XHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zIGxhemlseS5cclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxhenlJbml0TGlzdChcclxuICAgICAgdGhpcy5hbGxBcHBTY3JlZW5zLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwU2NyZWVucyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLnNjcmVlbnMsXHJcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLFxyXG4gICAgICAoczogYW55KSA9PiBbcz8uc2NyZWVuSWQ/LnRvTG93ZXJDYXNlKCksIHM/LnNjcmVlbk5hbWVdLFxyXG4gICAgICBzID0+IG5ldyBBcHBTY3JlZW5Nb2RlbChzKVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBJZiBhIGZpbHRlciBmdW5jdGlvbiBpcyBnaXZlbiwgYXBwbHkgaXQgdG8gdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMuXHJcbiAgICByZXR1cm4gZmlsdGVyRm4gPyBsaXN0LmZpbHRlcihmaWx0ZXJGbikgOiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIG9yZ2FuaXphdGlvbiBpbmZvIGJ5IGl0cyBJRCBvciBUZW5hbnRDb2RlLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIG9yZ2FuaXphdGlvbiBpbmZvIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZU9yVGVuYW50Q29kZSAtIFRoZSBJRCBvciBUZW5hbnRDb2RlIG9mIHRoZSBvcmdhbml6YXRpb24gaW5mbyB0byByZXRyaWV2ZS5cclxuICAgKiBAcmV0dXJucyB7T3JnSW5mb01vZGVsIHwgbnVsbH0gLSBUaGUgb3JnYW5pemF0aW9uIGluZm8gbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxyXG4gICAqL1xyXG4gIGdldE9yZ0luZm9CeUlkT3JUZW5hbnRDb2RlKG5hbWVPclRlbmFudENvZGU6IHN0cmluZyk6IE9yZ0luZm9Nb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXHJcbiAgICAgIG5hbWVPclRlbmFudENvZGUsXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxyXG4gICAgICAvLyBTZWFyY2ggZm9yIHRoZSBvcmdhbml6YXRpb24gaW5mbyBieSBJRCBvciBUZW5hbnRDb2RlXHJcbiAgICAgIChvcmc6IGFueSkgPT4gb3JnLklEPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lT3JUZW5hbnRDb2RlPy50b0xvd2VyQ2FzZSgpIHx8IG9yZy5UZW5hbnRDb2RlID09PSBuYW1lT3JUZW5hbnRDb2RlLFxyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgT3JnSW5mb01vZGVsIGlmIHRoZSBvcmdhbml6YXRpb24gaW5mbyBpcyBmb3VuZFxyXG4gICAgICAob3JnOiBhbnkpID0+IG5ldyBPcmdJbmZvTW9kZWwob3JnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIC0gVGhlIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgb3JnYW5pemF0aW9uIGluZm8uXHJcbiAgICogQHJldHVybnMge09yZ0luZm9Nb2RlbFtdfSAtIFRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAqL1xyXG4gIGdldEFsbE9yZ0luZm9zKGZpbHRlckZuPzogKG9yZzogT3JnSW5mb01vZGVsKSA9PiBib29sZWFuKTogT3JnSW5mb01vZGVsW10ge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiBvcmdhbml6YXRpb24gaW5mbyBsYXppbHkuXHJcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXp5SW5pdExpc3QoXHJcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MsXHJcbiAgICAgIHZhbCA9PiAodGhpcy5hbGxPcmdJbmZvcyA9IHZhbCksXHJcbiAgICAgIENvbW1vbi50YWJKc29uLk9yZ0luZm9zLFxyXG4gICAgICB0aGlzLm9yZ0luZm9NYXAsXHJcbiAgICAgIChvcmc6IGFueSkgPT4gW29yZz8uSUQ/LnRvTG93ZXJDYXNlKCksIG9yZz8uVGVuYW50Q29kZV0sXHJcbiAgICAgIG9yZyA9PiBuZXcgT3JnSW5mb01vZGVsKG9yZylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIG9yZ2FuaXphdGlvbiBpbmZvLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgYWxsIG1ldGFkYXRhIGZvciBhIGdpdmVuIHNlYXJjaCB0ZXJtLlxyXG4gICAqIFlvdSBjYW4gbmFycm93IHRoZSBzZWFyY2ggYnkgcHJvdmlkaW5nIGEgbGlzdCBvZiBlbnRpdHkgdHlwZXMgdG8gc2VhcmNoIHdpdGhpbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGVybSAtIFRoZSBzZWFyY2ggdGVybSB0byBzZWFyY2ggZm9yLlxyXG4gICAqIEBwYXJhbSB7TWV0YWRhdGFFbnRpdHlUeXBlW119IGVudGl0eVR5cGVzIC0gVGhlIGxpc3Qgb2YgZW50aXR5IHR5cGVzIHRvIHNlYXJjaCB3aXRoaW4uIElmIG9taXR0ZWQsIGFsbCBlbnRpdHkgdHlwZXMgYXJlIHNlYXJjaGVkLlxyXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnlbXT59IC0gQSBkaWN0aW9uYXJ5IHdpdGggcmVzdWx0cyBncm91cGVkIGJ5IGVudGl0eSB0eXBlLlxyXG4gICAqL1xyXG4gIHNlYXJjaE1ldGFkYXRhKHRlcm06IHN0cmluZywgZW50aXR5VHlwZXM/OiBNZXRhZGF0YUVudGl0eVR5cGVbXSk6IFJlY29yZDxzdHJpbmcsIGFueVtdPiB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gdGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbiBlbnRpdHkgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXHJcbiAgICAgKiBAcGFyYW0ge01ldGFkYXRhRW50aXR5VHlwZX0gdHlwZSAtIFRoZSBlbnRpdHkgdHlwZSB0byBjaGVjay5cclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIGVudGl0eSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cclxuICAgICAqL1xyXG4gICAgY29uc3Qgc2hvdWxkU2VhcmNoID0gKHR5cGU6IE1ldGFkYXRhRW50aXR5VHlwZSkgPT4gIWVudGl0eVR5cGVzIHx8IGVudGl0eVR5cGVzLmluY2x1ZGVzKHR5cGUpO1xyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9PQkpFQ1RTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBvYmplY3RzIGJ5IElELCBPYmplY3ROYW1lLCBEaXNwbGF5TmFtZSwgb3IgU3lzdGVtREJUYWJsZU5hbWVcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5BUFBfT0JKRUNUU10gPSB0aGlzLmdldEFsbEFwcE9iamVjdHMob2JqID0+XHJcbiAgICAgICAgW29iaj8uSUQsIG9iaj8uT2JqZWN0TmFtZSwgb2JqPy5EaXNwbGF5TmFtZSwgb2JqPy5TeXN0ZW1EQlRhYmxlTmFtZV1cclxuICAgICAgICAgIC5zb21lKHZhbCA9PiB2YWwgPT09IHNlYXJjaFRlcm0gfHwgdmFsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFMpKSB7XHJcbiAgICAgIC8vIFNlYXJjaCBmb3IgYXBwIGZpZWxkcyBieSB1c2luZyB0aGUgc2VhcmNoIG1ldGhvZFxyXG4gICAgICByZXN1bHRbTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9GSUVMRFNdID0gdGhpcy5nZXRBbGxGaWVsZHMoZmllbGQgPT4gZmllbGQuc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2hvdWxkU2VhcmNoKE1ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGRhdGEgc291cmNlIHF1ZXJpZXMgYnkgdXNpbmcgdGhlIHNlYXJjaCBtZXRob2RcclxuICAgICAgcmVzdWx0W01ldGFkYXRhRW50aXR5VHlwZS5EQVRBX1NPVVJDRV9RVUVSSUVTXSA9IHRoaXMuZ2V0QWxsRGF0YVNvdXJjZVF1ZXJpZXMoZHNxID0+IGRzcS5zZWFyY2goc2VhcmNoVGVybSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG91bGRTZWFyY2goTWV0YWRhdGFFbnRpdHlUeXBlLkFQUF9TQ1JFRU5TKSkge1xyXG4gICAgICAvLyBTZWFyY2ggZm9yIGFwcCBzY3JlZW5zIGJ5IHVzaW5nIHRoZSBzZWFyY2ggbWV0aG9kXHJcbiAgICAgIHJlc3VsdFtNZXRhZGF0YUVudGl0eVR5cGUuQVBQX1NDUkVFTlNdID0gdGhpcy5nZXRBbGxBcHBTY3JlZW5zKHNjcmVlbiA9PiBzY3JlZW4uc2VhcmNoKHNlYXJjaFRlcm0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuIGFwcCBtZW51IGJ5IGl0cyBJRCBvciBuYW1lLlxyXG4gICAqIFNlYXJjaGVzIHRocm91Z2ggYWxsIGFwcCBtZW51cyBhbmQgcmV0dXJucyB0aGUgZmlyc3QgbWF0Y2guXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVPcklkIC0gVGhlIElEIG9yIG5hbWUgb2YgdGhlIGFwcCBtZW51IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtBcHBNZW51TW9kZWwgfCBudWxsfSAtIFRoZSBhcHAgbWVudSBtb2RlbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0QXBwTWVudUJ5SWRPck5hbWUobmFtZU9ySWQ6IHN0cmluZyk6IEFwcE1lbnVNb2RlbCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RnJvbU1hcE9yQ3JlYXRlKFxyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAsXHJcbiAgICAgIG5hbWVPcklkLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgLy8gU2VhcmNoIGZvciB0aGUgYXBwIG1lbnUgYnkgSUQgb3IgbmFtZVxyXG4gICAgICAobWVudTogYW55KSA9PiBtZW51Py5JZD8udG9Mb3dlckNhc2UoKSA9PT0gbmFtZU9ySWQ/LnRvTG93ZXJDYXNlKCkgfHwgbWVudT8uTWVudU5hbWUgPT09IG5hbWVPcklkLFxyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgQXBwTWVudU1vZGVsIGlmIHRoZSBhcHAgbWVudSBpcyBmb3VuZFxyXG4gICAgICAobWVudTogYW55KSA9PiBuZXcgQXBwTWVudU1vZGVsKG1lbnUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgYXBwIG1lbnVzLlxyXG4gICAqIElmIGEgZmlsdGVyIGZ1bmN0aW9uIGlzIGdpdmVuLCBpdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIGFwcCBtZW51cy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiAtIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGFwcCBtZW51cy5cclxuICAgKiBAcmV0dXJucyB7QXBwTWVudU1vZGVsW119IC0gVGhlIGxpc3Qgb2YgYXBwIG1lbnVzLlxyXG4gICAqL1xyXG4gIGdldEFsbEFwcE1lbnVzKGZpbHRlckZuPzogKG1lbnU6IEFwcE1lbnVNb2RlbCkgPT4gYm9vbGVhbik6IEFwcE1lbnVNb2RlbFtdIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgYXBwIHNjcmVlbnMgbGF6aWx5LlxyXG4gICAgY29uc3QgbGlzdCA9IHRoaXMubGF6eUluaXRMaXN0KFxyXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzLFxyXG4gICAgICB2YWwgPT4gKHRoaXMuYWxsQXBwTWVudXMgPSB2YWwpLFxyXG4gICAgICBDb21tb24udGFiSnNvbi5NZW51cyxcclxuICAgICAgdGhpcy5hcHBNZW51TWFwLFxyXG4gICAgICAobTogYW55KSA9PiBbbT8uSWQ/LnRvTG93ZXJDYXNlKCksIG0/Lk5hbWVdLFxyXG4gICAgICBzID0+IG5ldyBBcHBNZW51TW9kZWwocylcclxuICAgICk7XHJcblxyXG4gICAgLy8gSWYgYSBmaWx0ZXIgZnVuY3Rpb24gaXMgZ2l2ZW4sIGFwcGx5IGl0IHRvIHRoZSBsaXN0IG9mIGFwcCBzY3JlZW5zLlxyXG4gICAgcmV0dXJuIGZpbHRlckZuID8gbGlzdC5maWx0ZXIoZmlsdGVyRm4pIDogbGlzdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFycyBhbGwgY2FjaGVkIG1ldGFkYXRhIHNhZmVseS5cclxuICAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb24gY29udGV4dCBjaGFuZ2VzIChlLmcuLCB3aGVuIGFwcCwgb3JnLCBvciBzZXNzaW9uIGNoYW5nZXMpLlxyXG4gICAqL1xyXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDbGVhciBtYXBzXHJcbiAgICAgIHRoaXMuYXBwT2JqZWN0TWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYXBwU2NyZWVuTWFwLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMub3JnSW5mb01hcC5jbGVhcigpO1xyXG4gICAgICB0aGlzLmFwcE1lbnVNYXAuY2xlYXIoKTtcclxuXHJcbiAgICAgIC8vIFJlc2V0IGxpc3RzXHJcbiAgICAgIHRoaXMuYWxsQXBwT2JqZWN0cyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsQXBwU2NyZWVucyA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsT3JnSW5mb3MgPSBudWxsO1xyXG4gICAgICB0aGlzLmFsbEFwcE1lbnVzID0gbnVsbDtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ01ldGFkYXRhSGVscGVyIEZhaWxlZCB0byBjbGVhciBjYWNoZTonLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSJdfQ==
|
|
@@ -12,7 +12,14 @@ export class RequestResponseHelper {
|
|
|
12
12
|
* @returns The payload for the bulk insert operation
|
|
13
13
|
*/
|
|
14
14
|
bulkInsertPayload(table, whereClause, value, fields) {
|
|
15
|
-
return
|
|
15
|
+
return {
|
|
16
|
+
QueryObjectID: table,
|
|
17
|
+
QueryType: QueryType.BulkInsert,
|
|
18
|
+
Joins: [],
|
|
19
|
+
WhereClause: whereClause,
|
|
20
|
+
Values: value,
|
|
21
|
+
Fields: fields,
|
|
22
|
+
};
|
|
16
23
|
}
|
|
17
24
|
/**
|
|
18
25
|
* Generates the payload for deleting data from a table
|
|
@@ -27,30 +34,11 @@ export class RequestResponseHelper {
|
|
|
27
34
|
whereClause: whereClause,
|
|
28
35
|
};
|
|
29
36
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* @param table The table name for the payload
|
|
33
|
-
* @param whereClause The filter criteria for the payload
|
|
34
|
-
* @param value The value sets for the payload
|
|
35
|
-
* @param queryType The type of query for the payload (BulkInsert)
|
|
36
|
-
* @param fields Optional list of fields to include in the insert operation
|
|
37
|
-
* @returns The payload object with QueryObjectID, QueryType, Joins, WhereClause, Values, and Fields
|
|
38
|
-
*/
|
|
39
|
-
createBulkInsertPayload(table, whereClause, value, queryType, fields) {
|
|
40
|
-
return {
|
|
41
|
-
QueryObjectID: table,
|
|
42
|
-
QueryType: queryType,
|
|
43
|
-
Joins: [],
|
|
44
|
-
WhereClause: whereClause,
|
|
45
|
-
Values: value,
|
|
46
|
-
Fields: fields,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = function RequestResponseHelper_Factory(t) { return new (t || RequestResponseHelper)(); }; }
|
|
50
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: RequestResponseHelper, factory: RequestResponseHelper.ɵfac, providedIn: 'root' }); }
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, providedIn: 'root' }); }
|
|
51
39
|
}
|
|
52
|
-
(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: RequestResponseHelper, decorators: [{
|
|
41
|
+
type: Injectable,
|
|
42
|
+
args: [{ providedIn: 'root' }]
|
|
43
|
+
}] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNmLEtBQWEsRUFDYixXQUE4QixFQUM5QixLQUFxQyxFQUNyQyxNQUFpQjtRQUVqQixPQUFPO1lBQ0wsYUFBYSxFQUFFLEtBQUs7WUFDcEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLFNBQWlCLEVBQUUsV0FBOEI7UUFDN0QsT0FBTztZQUNMLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUM7SUFDSixDQUFDOytHQXJDVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUElCdWxrSW5zZXJ0RmllbGRzVmFsdWVTZXRzLCBBUElGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9xdWVyeS5lbnVtJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXNwb25zZUhlbHBlciB7XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBpbnNlcnRpbmcgZGF0YSBpbnRvIGEgdGFibGUgaW4gYnVsa1xyXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgbmFtZSB0byBpbnNlcnQgZGF0YSBpbnRvXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBzZXRzIHRvIGJlIGluc2VydGVkXHJcbiAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbCBsaXN0IG9mIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIHBheWxvYWQgZm9yIHRoZSBidWxrIGluc2VydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBidWxrSW5zZXJ0UGF5bG9hZChcclxuICAgIHRhYmxlOiBzdHJpbmcsXHJcbiAgICB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEsXHJcbiAgICB2YWx1ZTogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdLFxyXG4gICAgZmllbGRzPzogc3RyaW5nW11cclxuICApIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIFF1ZXJ5T2JqZWN0SUQ6IHRhYmxlLFxyXG4gICAgICBRdWVyeVR5cGU6IFF1ZXJ5VHlwZS5CdWxrSW5zZXJ0LFxyXG4gICAgICBKb2luczogW10sXHJcbiAgICAgIFdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgICAgVmFsdWVzOiB2YWx1ZSxcclxuICAgICAgRmllbGRzOiBmaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBkZWxldGluZyBkYXRhIGZyb20gYSB0YWJsZVxyXG4gICAqIE5FVzogUmV0dXJucyBuZXcgZm9ybWF0IGZvciAvcmVjb3Jkcy9kZWxldGUgZW5kcG9pbnRcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lIChlbnRpdHlOYW1lKSB0byBkZWxldGUgZGF0YSBmcm9tXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBkZWxldGUgb3BlcmF0aW9uIChORVcgZm9ybWF0IHdpdGggbG93ZXJjYXNlKVxyXG4gICAqIEByZXR1cm5zIFRoZSBwYXlsb2FkIGZvciB0aGUgZGVsZXRlIG9wZXJhdGlvbiBpbiBORVcgZm9ybWF0XHJcbiAgICovXHJcbiAgZGVsZXRlUGF5bG9hZCh0YWJsZU5hbWU6IHN0cmluZywgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbnRpdHlOYW1lOiB0YWJsZU5hbWUsXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -245,11 +245,11 @@ export class TemplateHelper {
|
|
|
245
245
|
return cur ?? '';
|
|
246
246
|
});
|
|
247
247
|
}
|
|
248
|
-
static { this.ɵfac =
|
|
249
|
-
static { this.ɵprov =
|
|
248
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TemplateHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
249
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TemplateHelper, providedIn: 'root' }); }
|
|
250
250
|
}
|
|
251
|
-
(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBS3pCO1FBSmlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQ2hELFdBQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLGlCQUF5QjtRQUM5RCxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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Q0wsQ0FBQzsrRUFoUVUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IExpcXVpZCB9IGZyb20gJ2xpcXVpZGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIFRlbXBsYXRlUGFyc2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZUNhY2hlID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KCk7XHJcbiAgcHJpdmF0ZSBlbmdpbmUgPSBuZXcgTGlxdWlkKCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ2FsbEZpbHRlcigpO1xyXG4gICAgdGhpcy5yZWdpc3RlclByb3BGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdXNpbmcgbG9jYWwgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGVWYXJpYWJsZXMgLSBUaGUgdmFyaWFibGVzIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VMb2NhbGx5KHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlVmFyaWFibGVzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgLi4uKHRlbXBsYXRlVmFyaWFibGVzPy5sZW5ndGggPyBKU09OLnBhcnNlKHRlbXBsYXRlVmFyaWFibGVzKSA6IHt9KSxcclxuICAgICAgVGFiU2RrOiB0aGlzLmNyZWF0ZVNka1Byb3h5KCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLnBhcnNlQW5kUmVuZGVyKHRlbXBsYXRlID8/ICcnLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdW5pdmVyc2FsbHksIGVpdGhlciB1c2luZyBsb2NhbCByZW5kZXJpbmcgb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBiZSB1c2VkIGZvciB0ZW1wbGF0ZSBwYXJzaW5nLlxyXG4gICAqIEBwYXJhbSBzaG91bGRGYWlsT25TZXJ2ZXJQYXJzZSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGZhaWwgb24gc2VydmVyLXNpZGUgcGFyc2UgaWYgbG9jYWwgcGFyc2luZyBmYWlscy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcnNlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgdGVtcGxhdGVQYXJzZVVuaXZlcnNhbChkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCwgb25GYWlsZWRQYXJzZU9uU2VydmVyID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRlbXBsYXRlUGFyc2VMb2NhbGx5KGRhdGEuVmFsdWUsIGRhdGEuVGVtcGxhdGV2YXJpYWJsZXMpKS5waXBlKFxyXG4gICAgICBtYXAoKGh0bWwpID0+ICh7IFJlc3VsdDogaHRtbCB9KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTG9jYWwgcGFyc2UgZmFpbGVkJywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvbkZhaWxlZFBhcnNlT25TZXJ2ZXIgPyB0aGlzLnRlbXBsYXRlUGFyc2UoZGF0YSkgOiBvZih7IFJlc3VsdDogJycgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1c2luZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHBhcnNpbmcuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJzZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQYXJzZShkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgLy8gTWFrZXMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byBwYXJzZSB0aGUgdGVtcGxhdGUuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnRlbXBsYXRlUGFyc2UsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgVGFiU2RrIG9iamVjdCB0byBleHBvc2UgaXRzIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGFjY2VzcyBTREsgc2VydmljZXMgYW5kIHRoZWlyIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgU0RLIHNlcnZpY2VzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2RrUHJveHkoKTogYW55IHtcclxuICAgIGNvbnN0IHNka1Jvb3QgPSAod2luZG93IGFzIGFueSk/LlRhYlNkaztcclxuICAgIGlmICghc2RrUm9vdCkgcmV0dXJuIHt9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkU2RrOiBhbnkgPSB7fTtcclxuICAgIC8vIEdldCBzdGF0aWMgcHJvcGVydGllcyBhbmQgcmVzb2x2ZSB0aGVpciB2YWx1ZXNcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNka1Jvb3QpLmZvckVhY2goc2VydmljZU5hbWUgPT4ge1xyXG4gICAgICBpZiAoc2VydmljZU5hbWUgPT09ICdsZW5ndGgnIHx8IHNlcnZpY2VOYW1lID09PSAnbmFtZScgfHwgc2VydmljZU5hbWUgPT09ICdwcm90b3R5cGUnKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBzZXJ2aWNlID0gc2RrUm9vdFtzZXJ2aWNlTmFtZV07XHJcbiAgICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHJlc29sdmVkIHNlcnZpY2Ugb2JqZWN0XHJcbiAgICAgIHJlc29sdmVkU2RrW3NlcnZpY2VOYW1lXSA9IHRoaXMucmVzb2x2ZVNlcnZpY2VWYWx1ZXMoc2VydmljZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZWRTZGs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiBhIHNlcnZpY2Ugb2JqZWN0LlxyXG4gICAqIFRoaXMgaW5jbHVkZXMgYm90aCBzdGF0aWMgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgYXMgd2VsbCBhcyBwcm90b3R5cGUgcHJvcGVydGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIHNlcnZpY2Ugb2JqZWN0IHRvIHJlc29sdmUuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNvbHZlU2VydmljZVZhbHVlcyhzZXJ2aWNlOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZUNhY2hlLmhhcyhzZXJ2aWNlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlQ2FjaGUuZ2V0KHNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkOiBhbnkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGRlbnkgPSBuZXcgU2V0KFsnX19wcm90b19fJywgJ3Byb3RvdHlwZScsICdjb25zdHJ1Y3RvciddKTtcclxuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAgICAgLy8gd2FsayB0aGUgd2hvbGUgcHJvdG90eXBlIGNoYWluIChpbnN0YW5jZSDihpIgYmFzZSBwcm90b3R5cGVzKSwgc3RvcCBhdCBPYmplY3QucHJvdG90eXBlXHJcbiAgICAgIGxldCBvYmo6IGFueSA9IHNlcnZpY2U7XHJcbiAgICAgIHdoaWxlIChvYmogJiYgb2JqICE9PSBPYmplY3QucHJvdG90eXBlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikpIHtcclxuICAgICAgICAgIGlmIChkZW55Lmhhcyhwcm9wKSB8fCBzZWVuLmhhcyhwcm9wKSkgY29udGludWU7XHJcbiAgICAgICAgICBzZWVuLmFkZChwcm9wKTtcclxuXHJcbiAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGFsd2F5cyByZWFkIG9mZiB0aGUgb3JpZ2luYWwgaW5zdGFuY2Ugc28gZ2V0dGVycyBzZWUgY29ycmVjdCBgdGhpc2BcclxuICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIGV4cG9zZSBhIGhhbmRsZSBzbyBMaXF1aWQgcGFzc2VzIGl0IHRocm91Z2ggdG8gdGhlIGBjYWxsYCBmaWx0ZXJcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZXJ2aWNlPy5faXNQcm94eSkge1xyXG4gICAgICAgIC8vIFByb2JlIHRoZSBjb250ZXh0IGRpcmVjdGx5XHJcbiAgICAgICAgY29uc3QgY3R4ID0gKHNlcnZpY2UgYXMgYW55KS5fY29udGV4dDtcclxuICAgICAgICBpZiAoY3R4KSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHN2Y05hbWUgb2YgT2JqZWN0LmtleXMoY3R4KSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdmMgPSBjdHhbc3ZjTmFtZV07XHJcbiAgICAgICAgICAgIGlmICghc3ZjKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzdmMuX19wcm90b19fIHx8IHN2YykpIHtcclxuICAgICAgICAgICAgICBpZiAoZGVueS5oYXMocHJvcCkgfHwgc2Vlbi5oYXMocHJvcCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIHNlZW4uYWRkKHByb3ApO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTsgLy8gZm9yY2VzIHByb3h5IHRvIHJlc29sdmVcclxuICAgICAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1RlbXBsYXRlSGVscGVyOiByZXNvbHZlU2VydmljZVZhbHVlcyBmYWlsZWQnLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlcnZpY2VDYWNoZS5zZXQoc2VydmljZSwgcmVzb2x2ZWQpO1xyXG4gICAgcmV0dXJuIHJlc29sdmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHNwZWNpYWwgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHJlZmVyZW5jZS5cclxuICAgKiBUaGUgaGFuZGxlIGlzIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBpbiB0aGVcclxuICAgKiB0ZW1wbGF0ZSBjb250ZXh0LCBhbmQgaXMgdXNlZCBieSB0aGUgYGNhbGxgIGZpbHRlciB0byBpbnZva2UgdGhlXHJcbiAgICogZnVuY3Rpb24gb3IgbWV0aG9kIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudCAtIFRoZSBvYmplY3QgdGhhdCB0aGUgbWV0aG9kIGJlbG9uZ3MgdG8uXHJcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kLlxyXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBmdW5jdGlvbiBvciBtZXRob2QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYWtlTWV0aG9kSGFuZGxlKHBhcmVudDogYW55LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgaGFuZGxlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhhbmRsZSwge1xyXG4gICAgICBfX3Nka0hhbmRsZTogeyB2YWx1ZTogJ21ldGhvZCcsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfSxcclxuICAgICAgX19wYXJlbnQ6IHsgdmFsdWU6IHBhcmVudCwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9LFxyXG4gICAgICBfX25hbWU6IHsgdmFsdWU6IG5hbWUsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaGFuZGxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGNhbGwgYSBmdW5jdGlvbiBvciBtZXRob2Qgd2l0aCBwcm92aWRlZCBhcmd1bWVudHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGludm9rZSBmdW5jdGlvbnMgb3IgbWV0aG9kcyBkeW5hbWljYWxseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdjYWxsJywgYXN5bmMgKGlucHV0OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gY2FzZSBBOiBpbnB1dCBpcyBvdXIgbWV0aG9kIGhhbmRsZSAoZnJvbSByZXNvbHZlU2VydmljZVZhbHVlcylcclxuICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQuX19zZGtIYW5kbGUgPT09ICdtZXRob2QnICYmIGlucHV0Ll9fcGFyZW50ICYmIGlucHV0Ll9fbmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgZm4gPSBSZWZsZWN0LmdldChpbnB1dC5fX3BhcmVudCwgaW5wdXQuX19uYW1lKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzID0gZm4uYXBwbHkoaW5wdXQuX19wYXJlbnQsIGFyZ3MpO1xyXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJlczsgLy8gc3luYyBvciBhc3luY1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY2FzZSBCOiBpbnB1dCBpcyBhbiBvYmplY3QgYW5kIGZpcnN0IGFyZyBpcyB0aGUgbWV0aG9kIG5hbWVcclxuICAgICAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdfX3Byb3RvX18nIHx8IG1ldGhvZE5hbWUgPT09ICdwcm90b3R5cGUnIHx8IG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHJldHVybiAnJztcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IFJlZmxlY3QuZ2V0KGlucHV0LCBtZXRob2ROYW1lKTtcclxuICAgICAgICAgIGNvbnN0IHJlc3QgPSBhcmdzLnNsaWNlKDEpO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gbWV0aG9kLmFwcGx5KGlucHV0LCByZXN0KTtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIG5vdCBhIGZ1bmN0aW9uIOKGkiB0cmVhdCBhcyBwcm9wZXJ0eSBmYWxsYmFja1xyXG4gICAgICAgICAgcmV0dXJuIG1ldGhvZCA/PyAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIChmYWxsYmFjaykgZnVuY3Rpb25zIHNob3VsZCBub3QgcmVhY2ggTGlxdWlkLCBidXQga2VlcCBmb3Igc2FmZXR5XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gaW5wdXQoLi4uYXJncyk7XHJcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGFjY2VzcyBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCB1c2luZyBkb3Qgb3IgYnJhY2tldCBub3RhdGlvbi5cclxuICAgKiBUaGlzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gYWNjZXNzIG5lc3RlZCBwcm9wZXJ0aWVzIHNhZmVseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyUHJvcEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdwcm9wJywgKGlucHV0OiBhbnksIHBhdGg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaW5wdXQgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnIHx8ICFwYXRoLnRyaW0oKSkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgLy8gc3VwcG9ydCBkb3QgJiBzaW1wbGUgYnJhY2tldCBub3RhdGlvbjogYS5iLCBhWzBdLCBhW2tleV1cclxuICAgICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKVxcXS9nLCAnLiQxJykgICAgIC8vIFswXSAtPiAuMFxyXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgJy4kMScpICAgICAvLyBba2V5XSAtPiAua2V5XHJcbiAgICAgICAgLnNwbGl0KCcuJylcclxuICAgICAgICAubWFwKHMgPT4gcy50cmltKCkpXHJcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgIGxldCBjdXI6IGFueSA9IGlucHV0O1xyXG5cclxuICAgICAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcclxuICAgICAgICBpZiAoY3VyID09IG51bGwpIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgY29uc3QgaWR4ID0gTnVtYmVyKHNlZyk7XHJcbiAgICAgICAgY29uc3Qga2V5OiBhbnkgPSBOdW1iZXIuaXNOYU4oaWR4KSA/IHNlZyA6IGlkeDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGN1ciA9IFJlZmxlY3QuZ2V0KGN1ciwga2V5KTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjdXIgPz8gJyc7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TemplateHelper, decorators: [{
|
|
252
|
+
type: Injectable,
|
|
253
|
+
args: [{ providedIn: 'root' }]
|
|
254
|
+
}], ctorParameters: () => [] });
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi90ZW1wbGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBS3pCO1FBSmlCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO1FBQ2hELFdBQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRzVCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxvQkFBb0IsQ0FBQyxRQUFnQixFQUFFLGlCQUF5QjtRQUM5RCxNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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Q0wsQ0FBQzsrR0FoUVUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IExpcXVpZCB9IGZyb20gJ2xpcXVpZGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVxLXJlcy51dGlsJztcclxuaW1wb3J0IHsgQ29tbW9uQXBpUmVzcG9uc2UsIFRlbXBsYXRlUGFyc2VQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZUNhY2hlID0gbmV3IFdlYWtNYXA8YW55LCBhbnk+KCk7XHJcbiAgcHJpdmF0ZSBlbmdpbmUgPSBuZXcgTGlxdWlkKCk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ2FsbEZpbHRlcigpO1xyXG4gICAgdGhpcy5yZWdpc3RlclByb3BGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdXNpbmcgbG9jYWwgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIGJlIHBhcnNlZC5cclxuICAgKiBAcGFyYW0gdGVtcGxhdGVWYXJpYWJsZXMgLSBUaGUgdmFyaWFibGVzIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHRlbXBsYXRlUGFyc2VMb2NhbGx5KHRlbXBsYXRlOiBzdHJpbmcsIHRlbXBsYXRlVmFyaWFibGVzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgLi4uKHRlbXBsYXRlVmFyaWFibGVzPy5sZW5ndGggPyBKU09OLnBhcnNlKHRlbXBsYXRlVmFyaWFibGVzKSA6IHt9KSxcclxuICAgICAgVGFiU2RrOiB0aGlzLmNyZWF0ZVNka1Byb3h5KCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lLnBhcnNlQW5kUmVuZGVyKHRlbXBsYXRlID8/ICcnLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyB0aGUgdGVtcGxhdGUgdW5pdmVyc2FsbHksIGVpdGhlciB1c2luZyBsb2NhbCByZW5kZXJpbmcgb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBiZSB1c2VkIGZvciB0ZW1wbGF0ZSBwYXJzaW5nLlxyXG4gICAqIEBwYXJhbSBzaG91bGRGYWlsT25TZXJ2ZXJQYXJzZSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGZhaWwgb24gc2VydmVyLXNpZGUgcGFyc2UgaWYgbG9jYWwgcGFyc2luZyBmYWlscy5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHBhcnNlZCB0ZW1wbGF0ZSByZXN1bHQuXHJcbiAgICovXHJcbiAgdGVtcGxhdGVQYXJzZVVuaXZlcnNhbChkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCwgb25GYWlsZWRQYXJzZU9uU2VydmVyID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnRlbXBsYXRlUGFyc2VMb2NhbGx5KGRhdGEuVmFsdWUsIGRhdGEuVGVtcGxhdGV2YXJpYWJsZXMpKS5waXBlKFxyXG4gICAgICBtYXAoKGh0bWwpID0+ICh7IFJlc3VsdDogaHRtbCB9KSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTG9jYWwgcGFyc2UgZmFpbGVkJywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBvbkZhaWxlZFBhcnNlT25TZXJ2ZXIgPyB0aGlzLnRlbXBsYXRlUGFyc2UoZGF0YSkgOiBvZih7IFJlc3VsdDogJycgfSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSB0ZW1wbGF0ZSB1c2luZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGJlIHVzZWQgZm9yIHRlbXBsYXRlIHBhcnNpbmcuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBwYXJzZWQgdGVtcGxhdGUgcmVzdWx0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdGVtcGxhdGVQYXJzZShkYXRhOiBUZW1wbGF0ZVBhcnNlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcblxyXG4gICAgLy8gTWFrZXMgYSBQT1NUIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB0byBwYXJzZSB0aGUgdGVtcGxhdGUuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnRlbXBsYXRlUGFyc2UsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgVGFiU2RrIG9iamVjdCB0byBleHBvc2UgaXRzIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGFjY2VzcyBTREsgc2VydmljZXMgYW5kIHRoZWlyIHByb3BlcnRpZXMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x2ZWQgU0RLIHNlcnZpY2VzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlU2RrUHJveHkoKTogYW55IHtcclxuICAgIGNvbnN0IHNka1Jvb3QgPSAod2luZG93IGFzIGFueSk/LlRhYlNkaztcclxuICAgIGlmICghc2RrUm9vdCkgcmV0dXJuIHt9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkU2RrOiBhbnkgPSB7fTtcclxuICAgIC8vIEdldCBzdGF0aWMgcHJvcGVydGllcyBhbmQgcmVzb2x2ZSB0aGVpciB2YWx1ZXNcclxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNka1Jvb3QpLmZvckVhY2goc2VydmljZU5hbWUgPT4ge1xyXG4gICAgICBpZiAoc2VydmljZU5hbWUgPT09ICdsZW5ndGgnIHx8IHNlcnZpY2VOYW1lID09PSAnbmFtZScgfHwgc2VydmljZU5hbWUgPT09ICdwcm90b3R5cGUnKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBzZXJ2aWNlID0gc2RrUm9vdFtzZXJ2aWNlTmFtZV07XHJcbiAgICAgIGlmICghc2VydmljZSkgcmV0dXJuO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIHJlc29sdmVkIHNlcnZpY2Ugb2JqZWN0XHJcbiAgICAgIHJlc29sdmVkU2RrW3NlcnZpY2VOYW1lXSA9IHRoaXMucmVzb2x2ZVNlcnZpY2VWYWx1ZXMoc2VydmljZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzb2x2ZWRTZGs7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvZiBhIHNlcnZpY2Ugb2JqZWN0LlxyXG4gICAqIFRoaXMgaW5jbHVkZXMgYm90aCBzdGF0aWMgcHJvcGVydGllcyBhbmQgbWV0aG9kcywgYXMgd2VsbCBhcyBwcm90b3R5cGUgcHJvcGVydGllcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlIC0gVGhlIHNlcnZpY2Ugb2JqZWN0IHRvIHJlc29sdmUuXHJcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc29sdmVkIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNvbHZlU2VydmljZVZhbHVlcyhzZXJ2aWNlOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZUNhY2hlLmhhcyhzZXJ2aWNlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlQ2FjaGUuZ2V0KHNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc29sdmVkOiBhbnkgPSB7fTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGRlbnkgPSBuZXcgU2V0KFsnX19wcm90b19fJywgJ3Byb3RvdHlwZScsICdjb25zdHJ1Y3RvciddKTtcclxuICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICAgICAgLy8gd2FsayB0aGUgd2hvbGUgcHJvdG90eXBlIGNoYWluIChpbnN0YW5jZSDihpIgYmFzZSBwcm90b3R5cGVzKSwgc3RvcCBhdCBPYmplY3QucHJvdG90eXBlXHJcbiAgICAgIGxldCBvYmo6IGFueSA9IHNlcnZpY2U7XHJcbiAgICAgIHdoaWxlIChvYmogJiYgb2JqICE9PSBPYmplY3QucHJvdG90eXBlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikpIHtcclxuICAgICAgICAgIGlmIChkZW55Lmhhcyhwcm9wKSB8fCBzZWVuLmhhcyhwcm9wKSkgY29udGludWU7XHJcbiAgICAgICAgICBzZWVuLmFkZChwcm9wKTtcclxuXHJcbiAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGFsd2F5cyByZWFkIG9mZiB0aGUgb3JpZ2luYWwgaW5zdGFuY2Ugc28gZ2V0dGVycyBzZWUgY29ycmVjdCBgdGhpc2BcclxuICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTtcclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIGV4cG9zZSBhIGhhbmRsZSBzbyBMaXF1aWQgcGFzc2VzIGl0IHRocm91Z2ggdG8gdGhlIGBjYWxsYCBmaWx0ZXJcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZXJ2aWNlPy5faXNQcm94eSkge1xyXG4gICAgICAgIC8vIFByb2JlIHRoZSBjb250ZXh0IGRpcmVjdGx5XHJcbiAgICAgICAgY29uc3QgY3R4ID0gKHNlcnZpY2UgYXMgYW55KS5fY29udGV4dDtcclxuICAgICAgICBpZiAoY3R4KSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHN2Y05hbWUgb2YgT2JqZWN0LmtleXMoY3R4KSkge1xyXG4gICAgICAgICAgICBjb25zdCBzdmMgPSBjdHhbc3ZjTmFtZV07XHJcbiAgICAgICAgICAgIGlmICghc3ZjKSBjb250aW51ZTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzdmMuX19wcm90b19fIHx8IHN2YykpIHtcclxuICAgICAgICAgICAgICBpZiAoZGVueS5oYXMocHJvcCkgfHwgc2Vlbi5oYXMocHJvcCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIHNlZW4uYWRkKHByb3ApO1xyXG5cclxuICAgICAgICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBSZWZsZWN0LmdldChzZXJ2aWNlLCBwcm9wKTsgLy8gZm9yY2VzIHByb3h5IHRvIHJlc29sdmVcclxuICAgICAgICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRbcHJvcF0gPSB0aGlzLm1ha2VNZXRob2RIYW5kbGUoc2VydmljZSwgcHJvcCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlZFtwcm9wXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1RlbXBsYXRlSGVscGVyOiByZXNvbHZlU2VydmljZVZhbHVlcyBmYWlsZWQnLCBlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlcnZpY2VDYWNoZS5zZXQoc2VydmljZSwgcmVzb2x2ZWQpO1xyXG4gICAgcmV0dXJuIHJlc29sdmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHNwZWNpYWwgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHJlZmVyZW5jZS5cclxuICAgKiBUaGUgaGFuZGxlIGlzIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBpbiB0aGVcclxuICAgKiB0ZW1wbGF0ZSBjb250ZXh0LCBhbmQgaXMgdXNlZCBieSB0aGUgYGNhbGxgIGZpbHRlciB0byBpbnZva2UgdGhlXHJcbiAgICogZnVuY3Rpb24gb3IgbWV0aG9kIHdpdGggcHJvdmlkZWQgYXJndW1lbnRzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudCAtIFRoZSBvYmplY3QgdGhhdCB0aGUgbWV0aG9kIGJlbG9uZ3MgdG8uXHJcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kLlxyXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBmdW5jdGlvbiBvciBtZXRob2QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYWtlTWV0aG9kSGFuZGxlKHBhcmVudDogYW55LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgaGFuZGxlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhhbmRsZSwge1xyXG4gICAgICBfX3Nka0hhbmRsZTogeyB2YWx1ZTogJ21ldGhvZCcsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfSxcclxuICAgICAgX19wYXJlbnQ6IHsgdmFsdWU6IHBhcmVudCwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiBmYWxzZSB9LFxyXG4gICAgICBfX25hbWU6IHsgdmFsdWU6IG5hbWUsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogZmFsc2UgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaGFuZGxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGNhbGwgYSBmdW5jdGlvbiBvciBtZXRob2Qgd2l0aCBwcm92aWRlZCBhcmd1bWVudHMuXHJcbiAgICogVGhpcyBhbGxvd3MgdGVtcGxhdGVzIHRvIGludm9rZSBmdW5jdGlvbnMgb3IgbWV0aG9kcyBkeW5hbWljYWxseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyQ2FsbEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdjYWxsJywgYXN5bmMgKGlucHV0OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgLy8gY2FzZSBBOiBpbnB1dCBpcyBvdXIgbWV0aG9kIGhhbmRsZSAoZnJvbSByZXNvbHZlU2VydmljZVZhbHVlcylcclxuICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQuX19zZGtIYW5kbGUgPT09ICdtZXRob2QnICYmIGlucHV0Ll9fcGFyZW50ICYmIGlucHV0Ll9fbmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgZm4gPSBSZWZsZWN0LmdldChpbnB1dC5fX3BhcmVudCwgaW5wdXQuX19uYW1lKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVzID0gZm4uYXBwbHkoaW5wdXQuX19wYXJlbnQsIGFyZ3MpO1xyXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJlczsgLy8gc3luYyBvciBhc3luY1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY2FzZSBCOiBpbnB1dCBpcyBhbiBvYmplY3QgYW5kIGZpcnN0IGFyZyBpcyB0aGUgbWV0aG9kIG5hbWVcclxuICAgICAgICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBhcmdzWzBdO1xyXG4gICAgICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdfX3Byb3RvX18nIHx8IG1ldGhvZE5hbWUgPT09ICdwcm90b3R5cGUnIHx8IG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHJldHVybiAnJztcclxuICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IFJlZmxlY3QuZ2V0KGlucHV0LCBtZXRob2ROYW1lKTtcclxuICAgICAgICAgIGNvbnN0IHJlc3QgPSBhcmdzLnNsaWNlKDEpO1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzID0gbWV0aG9kLmFwcGx5KGlucHV0LCByZXN0KTtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHJlcztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIG5vdCBhIGZ1bmN0aW9uIOKGkiB0cmVhdCBhcyBwcm9wZXJ0eSBmYWxsYmFja1xyXG4gICAgICAgICAgcmV0dXJuIG1ldGhvZCA/PyAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIChmYWxsYmFjaykgZnVuY3Rpb25zIHNob3VsZCBub3QgcmVhY2ggTGlxdWlkLCBidXQga2VlcCBmb3Igc2FmZXR5XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gaW5wdXQoLi4uYXJncyk7XHJcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXJzIGEgZmlsdGVyIHRvIGFjY2VzcyBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCB1c2luZyBkb3Qgb3IgYnJhY2tldCBub3RhdGlvbi5cclxuICAgKiBUaGlzIGFsbG93cyB0ZW1wbGF0ZXMgdG8gYWNjZXNzIG5lc3RlZCBwcm9wZXJ0aWVzIHNhZmVseS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlZ2lzdGVyUHJvcEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5naW5lLnJlZ2lzdGVyRmlsdGVyKCdwcm9wJywgKGlucHV0OiBhbnksIHBhdGg6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaW5wdXQgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnIHx8ICFwYXRoLnRyaW0oKSkgcmV0dXJuICcnO1xyXG5cclxuICAgICAgLy8gc3VwcG9ydCBkb3QgJiBzaW1wbGUgYnJhY2tldCBub3RhdGlvbjogYS5iLCBhWzBdLCBhW2tleV1cclxuICAgICAgY29uc3Qgc2VnbWVudHMgPSBwYXRoXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcWyhcXGQrKVxcXS9nLCAnLiQxJykgICAgIC8vIFswXSAtPiAuMFxyXG4gICAgICAgIC5yZXBsYWNlKC9cXFsoXFx3KylcXF0vZywgJy4kMScpICAgICAvLyBba2V5XSAtPiAua2V5XHJcbiAgICAgICAgLnNwbGl0KCcuJylcclxuICAgICAgICAubWFwKHMgPT4gcy50cmltKCkpXHJcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICAgIGxldCBjdXI6IGFueSA9IGlucHV0O1xyXG5cclxuICAgICAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcclxuICAgICAgICBpZiAoY3VyID09IG51bGwpIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgY29uc3QgaWR4ID0gTnVtYmVyKHNlZyk7XHJcbiAgICAgICAgY29uc3Qga2V5OiBhbnkgPSBOdW1iZXIuaXNOYU4oaWR4KSA/IHNlZyA6IGlkeDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGN1ciA9IFJlZmxlY3QuZ2V0KGN1ciwga2V5KTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjdXIgPz8gJyc7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -66,11 +66,11 @@ export class UserPersonalizationHelper {
|
|
|
66
66
|
.find((item) => item?.Key?.toLowerCase() === key?.toLowerCase());
|
|
67
67
|
return data;
|
|
68
68
|
}
|
|
69
|
-
static { this.ɵfac =
|
|
70
|
-
static { this.ɵprov =
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: UserPersonalizationHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
70
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: UserPersonalizationHelper, providedIn: 'root' }); }
|
|
71
71
|
}
|
|
72
|
-
(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: UserPersonalizationHelper, decorators: [{
|
|
73
|
+
type: Injectable,
|
|
74
|
+
args: [{ providedIn: 'root' }]
|
|
75
|
+
}] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wZXJzb25hbGl6YXRpb24uaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3VzZXItcGVyc29uYWxpemF0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLHlCQUF5QjtJQUR0QztRQUdtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBc0VsRDtJQXBFQyx1QkFBdUIsQ0FBQyxJQUFTO1FBQy9CLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELHVCQUF1QixDQUFDLFFBQWdCLEVBQUUsV0FBbUIsRUFBRSxJQUFZLEVBQUUsTUFBcUIsRUFBRSxHQUFtQixFQUFFLFFBQXdCO1FBQy9JLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxJQUFTLEVBQUUsUUFBZ0IsRUFBRSxXQUFtQixFQUFFLElBQVksRUFBRSxNQUFxQixFQUFFLEdBQW1CLEVBQUUsUUFBd0I7UUFDN0osSUFBSSxZQUFZLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLFdBQVcsS0FBSyxXQUFXLElBQUksSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztRQUV0SyxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksZUFBZSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxZQUFZLEdBQUcsZUFBZSxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwSCxJQUFJLGdCQUFnQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLGlCQUFpQixHQUFHLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlKLElBQUksUUFBUSxJQUFJLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDO1lBQ25DLENBQUM7aUJBQU0sQ0FBQztnQkFDTixZQUFZLEdBQUcsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCw4QkFBOEIsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFFLE1BQWM7UUFDdEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLElBQUksRUFBRSxDQUFDO2FBQ2pELE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUM7YUFDMUMsSUFBSSxDQUNILENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQ2pCLENBQUMsQ0FBQyxFQUFFLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRTthQUNBLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ3BCLElBQUksRUFBRSxNQUFNO1lBQ1YsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN2RCxDQUFDLENBQUMsSUFBSSxDQUNUO2FBQ0EsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0F0RVUseUJBQXlCO21IQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJZGJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC9pZGItc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFVzZXJQZXJzb25hbGl6YXRpb25IZWxwZXIge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGlkYlNlcnZpY2UgPSBpbmplY3QoSWRiU2VydmljZSk7XHJcblxyXG4gIHNldFVzZXJQZXJzb25hbGl6ZWREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgQ29tbW9uLnRhYlVzZXJQZXJzb25hbGl6ZWREYXRhID0gZGF0YTtcclxuICAgIHRoaXMuaWRiU2VydmljZS5zZXRJdGVtKFN0b3JhZ2VDb25zdGFudHMudGFiVXNlclBlcnNvbmFsaXplZERhdGEsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclBlcnNvbmFsaXplZERhdGEoc2NyZWVuSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZywgdHlwZTogbnVtYmVyLCB1c2VySWQ6IHN0cmluZyB8IG51bGwsIGtleT86IHN0cmluZyB8IG51bGwsIHRlbmFudElkPzogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVXNlclBlcnNvbmFsaXplZERhdGEoQ29tbW9uPy50YWJVc2VyUGVyc29uYWxpemVkRGF0YSwgc2NyZWVuSWQsIGNvbXBvbmVudElkLCB0eXBlLCB1c2VySWQsIGtleSwgdGVuYW50SWQpO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyVXNlclBlcnNvbmFsaXplZERhdGEoZGF0YTogYW55LCBzY3JlZW5JZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCB0eXBlOiBudW1iZXIsIHVzZXJJZDogc3RyaW5nIHwgbnVsbCwga2V5Pzogc3RyaW5nIHwgbnVsbCwgdGVuYW50SWQ/OiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICBsZXQgZmlsdGVyZWREYXRhID0gZGF0YT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LlNjcmVlbklkPy50b0xvd2VyQ2FzZSgpID09PSBzY3JlZW5JZD8udG9Mb3dlckNhc2UoKSAmJiBpdGVtPy5Db21wb25lbnRJZCA9PT0gY29tcG9uZW50SWQgJiYgaXRlbT8uVHlwZSA9PT0gdHlwZSk7XHJcblxyXG4gICAgY29uc3Qga2V5RmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uS2V5Py50b0xvd2VyQ2FzZSgpID09PSBrZXk/LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgaWYgKGtleUZpbHRlcmVkRGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmaWx0ZXJlZERhdGEgPSBrZXlGaWx0ZXJlZERhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5LZXkgPT09IG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVzZXJGaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5Vc2VySWQ/LnRvTG93ZXJDYXNlKCkgPT09IHVzZXJJZD8udG9Mb3dlckNhc2UoKSk7XHJcbiAgICBpZiAodXNlckZpbHRlcmVkRGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmaWx0ZXJlZERhdGEgPSB1c2VyRmlsdGVyZWREYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGVuYW50RGVmYXVsdERhdGEgPSBmaWx0ZXJlZERhdGE/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5Vc2VySWQgPT09IG51bGwgJiYgaXRlbT8uUmVjb3JkSW5mbz8uVGVuYW50SWQ/LnRvTG93ZXJDYXNlKCkgPT09IHRlbmFudElkPy50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgaWYgKHRlbmFudElkICYmIHRlbmFudERlZmF1bHREYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZmlsdGVyZWREYXRhID0gdGVuYW50RGVmYXVsdERhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uVXNlcklkID09PSBudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhIHVzZXIncyBwZXJzb25hbGl6ZWQgZGF0YSBmb3IgYSBnaXZlbiBrZXkgYW5kIHR5cGUuXHJcbiAgICogRXhlY3V0ZXMgdGhlIGZvbGxvd2luZyBzdGVwczpcclxuICAgKiAxLiBGaWx0ZXJzIG91dCByZWNvcmRzIHdoZXJlIHRoZSBUeXBlIGRvZXMgbm90IG1hdGNoIHRoZSBzcGVjaWZpZWQgdHlwZS5cclxuICAgKiAyLiBTb3J0cyB0aGUgZGF0YSBpbiBkZXNjZW5kaW5nIG9yZGVyIGJhc2VkIG9uIHRoZSBVc2VySWQgZmllbGQuIElmIHRoZSBVc2VySWRcclxuICAgKiAgICBpcyBudWxsLCBpdCBpcyBwbGFjZWQgYXQgdGhlIGVuZCBvZiB0aGUgc29ydGVkIGFycmF5LlxyXG4gICAqIDMuIEZpbHRlcnMgb3V0IHJlY29yZHMgd2hlcmUgdGhlIFVzZXJJZCBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHVzZXJJZC5cclxuICAgKiAgICBJZiB0aGUgVXNlcklkIGlzIG51bGwsIHRoZSByZWNvcmQgaXMgbm90IGZpbHRlcmVkIG91dC5cclxuICAgKiA0LiBGaW5kcyB0aGUgZmlyc3QgcmVjb3JkIHdoZXJlIHRoZSBLZXkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGtleS5cclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cclxuICAgKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiBkYXRhIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gc2VhcmNoIGZvci5cclxuICAgKiBAcmV0dXJucyBUaGUgdXNlcidzIHBlcnNvbmFsaXplZCBkYXRhLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kLlxyXG4gICAqIEBhdXRob3IgUGFydGggQiBUaGFra2FyXHJcbiAgICogQGRhdGUgMjAyMy0xMS0yOFxyXG4gICAqL1xyXG4gIGdldFVzZXJQZXJzb25hbGl6ZWREYXRhRnJvbUtleShrZXk6IHN0cmluZywgdHlwZTogbnVtYmVyLCB1c2VySWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGF0YSA9IChDb21tb24/LnRhYlVzZXJQZXJzb25hbGl6ZWREYXRhIHx8IFtdKVxyXG4gICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0/LlR5cGUgPT09IHR5cGUpXHJcbiAgICAgIC5zb3J0KFxyXG4gICAgICAgIChhOiBhbnksIGI6IGFueSkgPT5cclxuICAgICAgICAgIChhPy5Vc2VySWQgPT09IG51bGwgPyAxIDogMCkgLSAoYj8uVXNlcklkID09PSBudWxsID8gMSA6IDApIHx8XHJcbiAgICAgICAgICAoYT8uVXNlcklkPy50b0xvd2VyQ2FzZSgpID09PSB1c2VySWQ/LnRvTG93ZXJDYXNlKCkgPyAtMSA6IDEpXHJcbiAgICAgIClcclxuICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PlxyXG4gICAgICAgIGl0ZW0/LlVzZXJJZFxyXG4gICAgICAgICAgPyBpdGVtPy5Vc2VySWQ/LnRvTG93ZXJDYXNlKCkgPT09IHVzZXJJZD8udG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgOiB0cnVlXHJcbiAgICAgIClcclxuICAgICAgLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbT8uS2V5Py50b0xvd2VyQ2FzZSgpID09PSBrZXk/LnRvTG93ZXJDYXNlKCkpO1xyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbn0iXX0=
|