@softheon/armature 15.21.0 → 15.21.2
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/esm2020/lib/core/functions/route-to-pre-login-route.mjs +13 -0
- package/esm2020/lib/core/initializer/initializer.service.mjs +17 -10
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/softheon-armature.mjs +28 -9
- package/fesm2015/softheon-armature.mjs.map +1 -1
- package/fesm2020/softheon-armature.mjs +28 -9
- package/fesm2020/softheon-armature.mjs.map +1 -1
- package/lib/core/functions/route-to-pre-login-route.d.ts +6 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { preSignInRouteStorageKey } from '../models/constants';
|
|
2
|
+
/**
|
|
3
|
+
* Routes to the pre login in route
|
|
4
|
+
* @param router The router
|
|
5
|
+
*/
|
|
6
|
+
export const routeToPreLoginRoute = (router) => {
|
|
7
|
+
const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);
|
|
8
|
+
if (preservedRoute) {
|
|
9
|
+
router.navigateByUrl(preservedRoute);
|
|
10
|
+
window.sessionStorage.removeItem(preSignInRouteStorageKey);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdG8tcHJlLWxvZ2luLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2Z1bmN0aW9ucy9yb3V0ZS10by1wcmUtbG9naW4tcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFL0Q7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNuRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9FLElBQUksY0FBYyxFQUFFO1FBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUM5RDtBQUNMLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHByZVNpZ25JblJvdXRlU3RvcmFnZUtleSB9IGZyb20gJy4uL21vZGVscy9jb25zdGFudHMnO1xyXG5cclxuLyoqXHJcbiAqIFJvdXRlcyB0byB0aGUgcHJlIGxvZ2luIGluIHJvdXRlXHJcbiAqIEBwYXJhbSByb3V0ZXIgVGhlIHJvdXRlclxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHJvdXRlVG9QcmVMb2dpblJvdXRlID0gKHJvdXRlcjogUm91dGVyKSA9PiB7XHJcbiAgICBjb25zdCBwcmVzZXJ2ZWRSb3V0ZSA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHByZVNpZ25JblJvdXRlU3RvcmFnZUtleSk7XHJcbiAgICBpZiAocHJlc2VydmVkUm91dGUpIHtcclxuICAgICAgICByb3V0ZXIubmF2aWdhdGVCeVVybChwcmVzZXJ2ZWRSb3V0ZSk7XHJcbiAgICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0ocHJlU2lnbkluUm91dGVTdG9yYWdlS2V5KTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -3,7 +3,7 @@ import { AuthConfig } from 'angular-oauth2-oidc';
|
|
|
3
3
|
import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';
|
|
4
4
|
import * as _ from 'lodash';
|
|
5
5
|
import { BehaviorSubject, lastValueFrom, throwError } from 'rxjs';
|
|
6
|
-
import { languageStorageKey, WINDOW } from '../models/constants';
|
|
6
|
+
import { languageStorageKey, preSignInRouteStorageKey, WINDOW } from '../models/constants';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@angular/common/http";
|
|
9
9
|
import * as i2 from "@ngx-translate/core";
|
|
@@ -85,22 +85,24 @@ export class Initializer {
|
|
|
85
85
|
this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);
|
|
86
86
|
const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);
|
|
87
87
|
this.translateService.setTranslation(this.translateService.currentLang, mergedLanguage);
|
|
88
|
-
const configurePartial = () => {
|
|
88
|
+
const configurePartial = (t) => {
|
|
89
89
|
const configSnapShot = this.configService.config;
|
|
90
|
-
configSnapShot.theme =
|
|
90
|
+
configSnapShot.theme = t;
|
|
91
91
|
this.configService.config = configSnapShot;
|
|
92
|
-
this.themeService.initPalette(
|
|
92
|
+
this.themeService.initPalette(t);
|
|
93
93
|
};
|
|
94
94
|
const subdomain = this.getSubdomain();
|
|
95
|
-
if (subdomain) {
|
|
95
|
+
if (subdomain && this.configService.config.subdomain) {
|
|
96
96
|
try {
|
|
97
|
-
let [subdomainConfigs, subdomainLanguage] = await Promise.all([
|
|
97
|
+
let [subdomainConfigs, subdomainLanguage, subdomainTheme] = await Promise.all([
|
|
98
98
|
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.${this.translateService.currentLang}.json`)),
|
|
99
|
-
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.appsettings.json`))
|
|
99
|
+
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.appsettings.json`)),
|
|
100
|
+
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.theme.json`))
|
|
100
101
|
]);
|
|
101
102
|
this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);
|
|
102
103
|
this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));
|
|
103
|
-
|
|
104
|
+
const mergedTheme = _.mergeWith(theme, subdomainTheme, this.mergeCustomizer);
|
|
105
|
+
configurePartial(mergedTheme);
|
|
104
106
|
}
|
|
105
107
|
catch (e) {
|
|
106
108
|
if (this.configService.config.subdomain && this.configService.config.subdomain.subdomains.length && !this.configService.config.subdomain.subdomains.includes(subdomain)) {
|
|
@@ -116,10 +118,11 @@ export class Initializer {
|
|
|
116
118
|
console.error(error);
|
|
117
119
|
throw new Error(error);
|
|
118
120
|
}
|
|
121
|
+
configurePartial(theme);
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
else {
|
|
122
|
-
configurePartial();
|
|
125
|
+
configurePartial(theme);
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
128
|
catch (error) {
|
|
@@ -200,6 +203,10 @@ export class Initializer {
|
|
|
200
203
|
*/
|
|
201
204
|
async login(config) {
|
|
202
205
|
const isValid = this.validateExistingTokenAgainstConfigs();
|
|
206
|
+
const preservedRoute = this.window.sessionStorage.getItem(preSignInRouteStorageKey);
|
|
207
|
+
if (!preservedRoute) {
|
|
208
|
+
this.window.sessionStorage.setItem(preSignInRouteStorageKey, this.location.path());
|
|
209
|
+
}
|
|
203
210
|
if (config.requireLoginOnStartup || !isValid) {
|
|
204
211
|
return this.oAuthService.loadDiscoveryDocumentAndLogin({ state: this.location.path() })
|
|
205
212
|
// handles the case for expired access token or invalid nonce or people bookmarking the ids login page
|
|
@@ -276,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
276
283
|
type: Inject,
|
|
277
284
|
args: [WINDOW]
|
|
278
285
|
}] }]; } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9pbml0aWFsaXplci9pbml0aWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7QUFPakU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sV0FBVztJQWlCdEIsOEJBQThCO0lBQzlCLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFLRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFDbUIsSUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGFBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFrQixFQUNOLHVCQUFnRCxFQUN4QyxPQUFZO1FBUmhDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0s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bmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSndrc1ZhbGlkYXRpb25IYW5kbGVyIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYy1qd2tzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IGxhbmd1YWdlU3RvcmFnZUtleSwgV0lORE9XIH0gZnJvbSAnLi4vbW9kZWxzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IE9pZGNBdXRoU2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvb2lkYy1hdXRoLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jdXN0b20tYXV0aC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgc3RhcnR1cCBzZXJ2aWNlIGlzIHVzZWQgdG8gY2FsbCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIHJ1biB3aGVuIGluaXRpYWxseSBsb2FkaW5nIHRoZSBhcHBsaWNhdGlvblxyXG4gKi9cclxuQEluamVjdGFibGUoXHJcbiAge1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfVxyXG4pXHJcbmV4cG9ydCBjbGFzcyBJbml0aWFsaXplciB7XHJcblxyXG4gIC8qKiBUaGUgY29uZmlndXJhdGlvbiBiZWhhdmlvciBzdWJqZWN0ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc0luaXRpYWxpemVkQnM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiogVGhlIGJyb3dzZXIgd2luZG93ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdztcclxuXHJcbiAgLyoqIFRoZSBleGFtcGxlIHRoZSBzdWJkb21haW4gc3Vic3RyaW5nICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBleGFtcGxlU3ViZG9tYWluOiBzdHJpbmcgPSAnZXhhbXBsZSc7XHJcblxyXG4gIC8qKiBUaGUgd3d3IHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHd3d1N1YnN0cmluZzogc3RyaW5nID0gJ3d3dyc7XHJcblxyXG4gIC8qKiBUaGUgbHZoIHN1YnN0cmluZyBmb3Igc3ViZG9tYWluIHJvdXRlIGZpbmRpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGx2aFN1YnN0cmluZzogc3RyaW5nID0gJ2x2aCdcclxuXHJcbiAgLyoqIEdldHMgdGhlIGNvbmZpZ3VyYXRpb25zICovXHJcbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZEJzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIG9ic2VydmFibGUgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIHN0YXJ0dXAgc2VydmljZS4gSW5jbHVkZSBhbnkgc2VydmljZXMgdGhhdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgc3RhcnR1cFxyXG4gICAqIEBwYXJhbSBodHRwIFRoZSBIVFRQIENsaWVudFxyXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFRoZSB0cmFuc2xhdGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSB0aGVtZVNlcnZpY2UgVGhlIHRoZW1lIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlndXJhdGlvbiBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIG9BdXRoU2VydmljZSBUaGUgb2lkYyBhdXRob3JpemF0aW9uIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gcm91dGVyIFRoZSByb3V0ZXJcclxuICAgKiBAcGFyYW0gbG9jYXRpb24gVGhlIGxvY2F0aW9uXHJcbiAgICogQHBhcmFtIGN1c3RvbUF1dGhDb25maWdTZXJ2aWNlIFRoZSBzZXJ2aWNlIHRoYXQgd2lsbCBjb25maWd1cmUgdGhlIGF1dGggY29uZmlnXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBCYXNlQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUF1dGhDb25maWdTZXJ2aWNlOiBDdXN0b21BdXRoQ29uZmlnU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XKSByZWFkb25seSBfd2luZG93OiBhbnlcclxuICApIHtcclxuICAgIHRoaXMuaXNJbml0aWFsaXplZCQgPSB0aGlzLmlzSW5pdGlhbGl6ZWRCcy5hc09ic2VydmFibGUoKTtcclxuICAgIHRoaXMud2luZG93ID0gX3dpbmRvdyB8fCB3aW5kb3c7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyBhbGwgZGF0YSB0aGF0IGlzIG5lZWRlZCB1cG9uIGluaXRpYWwgbG9hZGluZyBvZiB0aGUgd2Vic2l0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAvLyByZWFkcyB0aGUgbGFuZ3VhZ2UgZnJvbSBsb2NhbCBzdG9yYWdlIHNldCBpbiB0aGUgcGFyZW50IGFwcFxyXG4gICAgLy8gbGFuZ3VhZ2UgbG9hZGluZ1xyXG5cclxuICAgIC8vIFNldCBsYW5ndWFnZXMgZm9yIHRyYW5zbGF0aW9uIHNlcnZpY2VcclxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLndpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShsYW5ndWFnZVN0b3JhZ2VLZXkpIHx8IHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0obGFuZ3VhZ2VTdG9yYWdlS2V5KSB8fCAnZW4nO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKGxhbmcpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKTtcclxuXHJcbiAgICAvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQxNjM2ODgwXHJcbiAgICAvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQxNzM2MjkzXHJcblxyXG4gICAgLy8gQSBjYWxsYmFjayB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHByb21pc2UuIFRoaXMgY2FsbGJhY2sgaXMgcGFzc2VkIHR3byBhcmd1bWVudHM6XHJcbiAgICAvLyBhIHJlc29sdmUgY2FsbGJhY2sgdXNlZCByZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggYSB2YWx1ZSBvciB0aGUgcmVzdWx0IG9mIGFub3RoZXIgcHJvbWlzZSxcclxuICAgIC8vIGFuZCBhIHJlamVjdCBjYWxsYmFjayB1c2VkIHRvIHJlamVjdCB0aGUgcHJvbWlzZSB3aXRoIGEgcHJvdmlkZWQgcmVhc29uIG9yIGVycm9yLlxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgLy8gR28gdGhyb3VnaCBhbGwgc2VydmljZXMgYW5kIGNvbXBsZXRlIGFueSBBUEkgY2FsbHMgbmVjZXNzYXJ5LlxyXG4gICAgICAvLyBBdCB0aGUgZW5kLCBpZiBhbGwgd29ya3MgYW5kIGxvYWRzIGFzIGV4cGVjdGVkLCByZXNvbHZlIHRoZSBwcm9taXNlIGFuZCBzZXQgc3RhcnR1cCBzdWNjZXNzIHRvIHRydWUuXHJcbiAgICAgIC8vIElmIGFuIGlzc3VlIGlzIGVuY291bnRlcmVkLCB5b3UgY2FuIGNhbGwgcmVqZWN0KCkgdG8gaGl0IHRoZSBjYXRjaCgpIGNvZGUgYmVsb3cuXHJcblxyXG4gICAgICAvLyBGaXJzdCwgbG9hZCB0aGUgY29uZmlndXJhdGlvbnNcclxuICAgICAgbGV0IFtiYXNlQ29uZmlnLCBvdmVycmlkZUNvbmZpZywgYmFzZUxhbmcsIG92ZXJyaWRlTGFuZywgdGhlbWVdID0gW0pTT04sIEpTT04sIEpTT04sIEpTT04sIEpTT05dO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIFtiYXNlQ29uZmlnLCBvdmVycmlkZUNvbmZpZywgYmFzZUxhbmcsIG92ZXJyaWRlTGFuZywgdGhlbWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPignLi9hc3NldHMvYmFzZWxpbmUvYXBwc2V0dGluZ3MuanNvbicpLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPignLi9hc3NldHMvY29uZmlndXJhdGlvbnMvYXBwc2V0dGluZ3MuanNvbicpLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvaTE4bi8ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uanNvbmApLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvY29uZmlndXJhdGlvbnMvJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmd9Lmpzb25gKS50b1Byb21pc2UoKSxcclxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8SlNPTj4oJy4vYXNzZXRzL2NvbmZpZ3VyYXRpb25zL3RoZW1lLmpzb24nKS50b1Byb21pc2UoKVxyXG4gICAgICAgIF0pO1xyXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBfLm1lcmdlV2l0aChiYXNlQ29uZmlnLCBvdmVycmlkZUNvbmZpZywgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgIGNvbnN0IG1lcmdlZExhbmd1YWdlID0gXy5tZXJnZVdpdGgoYmFzZUxhbmcsIG92ZXJyaWRlTGFuZywgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXRUcmFuc2xhdGlvbih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcsIG1lcmdlZExhbmd1YWdlKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29uZmlndXJlUGFydGlhbCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ1NuYXBTaG90ID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgICAgIGNvbmZpZ1NuYXBTaG90LnRoZW1lID0gdGhlbWUgYXMgYW55O1xyXG4gICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGNvbmZpZ1NuYXBTaG90O1xyXG4gICAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UuaW5pdFBhbGV0dGUodGhlbWUgYXMgYW55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3ViZG9tYWluID0gdGhpcy5nZXRTdWJkb21haW4oKTtcclxuICAgICAgICBpZiAoc3ViZG9tYWluKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgW3N1YmRvbWFpbkNvbmZpZ3MsIHN1YmRvbWFpbkxhbmd1YWdlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcclxuICAgICAgICAgICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8SlNPTj4oYC4vYXNzZXRzL2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS4ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uanNvbmApKSxcclxuICAgICAgICAgICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuaHR0cC5nZXQ8SlNPTj4oYC4vYXNzZXRzL2NvbmZpZ3VyYXRpb25zLyR7c3ViZG9tYWlufS5hcHBzZXR0aW5ncy5qc29uYCkpXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gXy5tZXJnZVdpdGgodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZywgc3ViZG9tYWluQ29uZmlncywgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24odGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nLCBfLm1lcmdlV2l0aChtZXJnZWRMYW5ndWFnZSwgc3ViZG9tYWluTGFuZ3VhZ2UsIHRoaXMubWVyZ2VDdXN0b21pemVyKSk7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbi5zdWJkb21haW5zLmxlbmd0aCAmJiAhdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4uc3ViZG9tYWlucy5pbmNsdWRlcyhzdWJkb21haW4pKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gYEludmFsaWQgc3ViZG9tYWluOiAke3N1YmRvbWFpbn1gO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4/LnJlcXVpcmVDb25maWd1cmVkU3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluPy5zdWJkb21haW5zLmluY2x1ZGVzKHN1YmRvbWFpbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgQ29uZmlndXJlZCBzdWJkb21haW46ICR7c3ViZG9tYWlufSBkb2VzIG5vdCBoYXZlIGFueSBzdWJkb21haW4gc3BlY2lmaWMgY29uZmlndXJhdGlvbnNgO1xyXG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbmZpZ3VyZVBhcnRpYWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgLy8gQ2F0Y2ggYW55IGVycm9ycyBkdXJpbmcgdGhlIGdldCBjb25maWd1cmF0aW9ucyBBUEkgY2FsbFxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIExvYWRpbmcgQ29uZmlndXJhdGlvbnMgb3IgTGFuZ3VhZ2VzJyk7XHJcbiAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlXHJcbiAgICAgICAgcmVqZWN0KCdlcnJvcicpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvciB8fCAnU2VydmVyIGVycm9yJyk7XHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZS5jb25maWd1cmVBdXRoU2V0dGluZ3MoKS50aGVuKGF1dGhDb25maWcgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXV0aENvbmZpZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncztcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9naW4oY29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb0F1dGggPSBhd2FpdCB0aGlzLnNldFVwT0F1dGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgcmVxdWVzdGVkIHJvdXRlXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M/LnByZXNlcnZlUm91dGUpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMub0F1dGhTZXJ2aWNlLnN0YXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0luaXRpYWxpemVkQnMubmV4dCh0cnVlKTtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAvLyBDYXRjaCB0aGUgZXJyb3JcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGxvYWRpbmcgdGhlIHN0YXJ0dXAgY29uZmlndXJhdGlvbnMuJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyZSBpbXBsaWNpdCBmbG93XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRVcE9BdXRoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/Lm9BdXRoU2V0dGluZ3M/Lmlzc3Vlcikge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M7XHJcbiAgICAgIGNvbnN0IGF1dGhDb25maWcgPSBuZXcgQXV0aENvbmZpZyh7XHJcbiAgICAgICAgY2xpZW50SWQ6IGNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgICByZWRpcmVjdFVyaTogY29uZmlnLnJlZGlyZWN0VXJpLFxyXG4gICAgICAgIGlzc3VlcjogY29uZmlnLmlzc3VlcixcclxuICAgICAgICBzY29wZTogY29uZmlnLnNjb3BlLFxyXG4gICAgICAgIHNraXBJc3N1ZXJDaGVjazogY29uZmlnLnNraXBJc3N1ZXJDaGVjayAhPSB1bmRlZmluZWQgPyBjb25maWcuc2tpcElzc3VlckNoZWNrIDogdHJ1ZSxcclxuICAgICAgICB0aW1lb3V0RmFjdG9yOiBjb25maWcudGltZW91dEZhY3RvciB8fCAwLjc1LFxyXG4gICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogY29uZmlnLnBvc3RMb2dvdXRSZWRpcmVjdFVyaSxcclxuICAgICAgICBsb2dpblVybDogY29uZmlnLmxvZ2luVXJsLFxyXG4gICAgICAgIHN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuY29uZmlndXJlKGF1dGhDb25maWcpO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5za2lwSXNzdWVyQ2hlY2sgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJztcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRva2VuVmFsaWRhdGlvbkhhbmRsZXIgPSBuZXcgSndrc1ZhbGlkYXRpb25IYW5kbGVyKCk7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRpbWVvdXRGYWN0b3IgPSAwLjc1O1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKTtcclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsaXplZCBvbiBzdGFydCB1cCB0byB0cnVlXHJcbiAgICAgIGNvbmZpZy5hdXRoU2V0T25TdGFydHVwID0gdHJ1ZTtcclxuICAgICAgY29uc3QgcGFyZW50Q29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgcGFyZW50Q29uZmlnLm9BdXRoU2V0dGluZ3MgPSBjb25maWc7XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBwYXJlbnRDb25maWc7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5sb2dpbihjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgTG9naW5cclxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBPaWRjIEF1dGggU2V0dGluZ3NcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGxvZ2luKGNvbmZpZzogT2lkY0F1dGhTZXR0aW5ncyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVFeGlzdGluZ1Rva2VuQWdhaW5zdENvbmZpZ3MoKTtcclxuICAgIGlmIChjb25maWcucmVxdWlyZUxvZ2luT25TdGFydHVwIHx8ICFpc1ZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRMb2dpbih7c3RhdGU6IHRoaXMubG9jYXRpb24ucGF0aCgpfSlcclxuICAgICAgICAvLyBoYW5kbGVzIHRoZSBjYXNlIGZvciBleHBpcmVkIGFjY2VzcyB0b2tlbiBvciBpbnZhbGlkIG5vbmNlIG9yIHBlb3BsZSBib29rbWFya2luZyB0aGUgaWRzIGxvZ2luIHBhZ2VcclxuICAgICAgICAuY2F0Y2goYXN5bmMgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuaW5pdExvZ2luRmxvdyh0aGlzLmxvY2F0aW9uLnBhdGgoKSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5vQXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50QW5kVHJ5TG9naW4oKVxyXG4gICAgICAgIC8vIGhhbmRsZXMgdGhlIGNhc2UgZm9yIGV4cGlyZWQgYWNjZXNzIHRva2VuIG9yIGludmFsaWQgbm9uY2Ugb3IgcGVvcGxlIGJvb2ttYXJraW5nIHRoZSBpZHMgbG9naW4gcGFnZVxyXG4gICAgICAgIC5jYXRjaChhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlcyB0aGUgdHdvIGNvbmZpZyBvYmplY3RzIGlnbm9yaW5nIHRoZSBhcnJheSB0eXBlXHJcbiAgICogQHBhcmFtIG9ialZhbHVlIFRoZSBkZWZhdWx0IGNvbmZpZyB2YWx1ZVxyXG4gICAqIEBwYXJhbSBzcmNWYWx1ZSBUaGUgdGFyZ2V0IHN3aXRjaGJvYXJkIGNvbmZpZyB2YWx1ZVxyXG4gICAqIEByZXR1cm5zIFRoZSBtZXJnZSBvZiB0aGUgdHdvIGNvbmZpZ3MgcHJvdmlkZWRcclxuICAgKi9cclxuICBwcml2YXRlIG1lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55LCBzcmNWYWx1ZTogYW55KTogYW55IHtcclxuICAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpICYmIHNyY1ZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBzcmNWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgZXhpc3RpbmcgdG9rZW4gYWdhaW5zdCB0aGUgY29uZmlndXJhdGlvbnNcclxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gdG9rZW4gaXMgdmFsaWRcclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlRXhpc3RpbmdUb2tlbkFnYWluc3RDb25maWdzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5kaXNhYmxlU3RhcnR1cFRva2VuVmFsaWRhdGlvbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJykpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBncmFudGVkU2NvcGVzOiBBcnJheTxzdHJpbmc+ID0gIHRoaXMub0F1dGhTZXJ2aWNlLmdldEdyYW50ZWRTY29wZXMoKSBhcyBBcnJheTxzdHJpbmc+O1xyXG4gICAgY29uc3QgY29uZmlndXJlZFNjb3BlcyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5zY29wZS5zcGxpdCgnICcpO1xyXG4gICAgY29uc3QgZGlmZnMgPSBncmFudGVkU2NvcGVzLmZpbHRlcih4ID0+ICFjb25maWd1cmVkU2NvcGVzLmluY2x1ZGVzKHgpKVxyXG4gICAgICAuY29uY2F0KGNvbmZpZ3VyZWRTY29wZXMuZmlsdGVyKHggPT4gIWdyYW50ZWRTY29wZXMuaW5jbHVkZXMoeCkpKTtcclxuICAgIGlmIChkaWZmcy5sZW5ndGggfHwgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKVsnYXVkJ10gIT09IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncy5jbGllbnRJZCkge1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdhY2Nlc3NfdG9rZW4nKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKiogR2V0dGluZyB0aGUgc3ViZG9tYWluIGZyb20gdXJsICovXHJcbiAgcHJpdmF0ZSBnZXRTdWJkb21haW4oKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgaWYgKGRvbWFpbi5pbmRleE9mKCcuJykgPCAwIHx8XHJcbiAgICAgIGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLmV4YW1wbGVTdWJkb21haW4gfHwgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMubHZoU3Vic3RyaW5nIHx8IGRvbWFpbi5zcGxpdCgnLicpWzBdID09PSB0aGlzLnd3d1N1YnN0cmluZykge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZG9tYWluLnNwbGl0KCcuJylbMF07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvY29yZS9pbml0aWFsaXplci9pbml0aWFsaXplci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7QUFPM0Y7O0dBRUc7QUFNSCxNQUFNLE9BQU8sV0FBVztJQWlCdEIsOEJBQThCO0lBQzlCLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFLRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFDbUIsSUFBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGFBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFrQixFQUNOLHVCQUFnRCxFQUN4QyxPQUFZO1FBUmhDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FB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QUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1SSxPQUFPLEVBQUUsQ0FBQztTQUNYO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDOzt3R0EzUlUsV0FBVywwUUE2Q0EsTUFBTTs0R0E3Q2pCLFdBQVcsY0FIUixNQUFNOzJGQUdULFdBQVc7a0JBTHZCLFVBQVU7bUJBQ1Q7b0JBQ0UsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkE4Q0UsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBPQXV0aFNlcnZpY2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcclxuaW1wb3J0IHsgSndrc1ZhbGlkYXRpb25IYW5kbGVyIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYy1qd2tzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3RoZW1pbmcvc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IGxhbmd1YWdlU3RvcmFnZUtleSwgcHJlU2lnbkluUm91dGVTdG9yYWdlS2V5LCBXSU5ET1cgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgT2lkY0F1dGhTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9vaWRjLWF1dGgtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBCYXNlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXN0b21BdXRoQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2N1c3RvbS1hdXRoLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBzdGFydHVwIHNlcnZpY2UgaXMgdXNlZCB0byBjYWxsIG1ldGhvZHMgdGhhdCBzaG91bGQgYmUgcnVuIHdoZW4gaW5pdGlhbGx5IGxvYWRpbmcgdGhlIGFwcGxpY2F0aW9uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZShcclxuICB7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxuICB9XHJcbilcclxuZXhwb3J0IGNsYXNzIEluaXRpYWxpemVyIHtcclxuXHJcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIGJlaGF2aW9yIHN1YmplY3QgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWRCczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8qKiBUaGUgYnJvd3NlciB3aW5kb3cgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogV2luZG93O1xyXG5cclxuICAvKiogVGhlIGV4YW1wbGUgdGhlIHN1YmRvbWFpbiBzdWJzdHJpbmcgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGV4YW1wbGVTdWJkb21haW46IHN0cmluZyA9ICdleGFtcGxlJztcclxuXHJcbiAgLyoqIFRoZSB3d3cgc3Vic3RyaW5nIGZvciBzdWJkb21haW4gcm91dGUgZmluZGluZyAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd3d3U3Vic3RyaW5nOiBzdHJpbmcgPSAnd3d3JztcclxuXHJcbiAgLyoqIFRoZSBsdmggc3Vic3RyaW5nIGZvciBzdWJkb21haW4gcm91dGUgZmluZGluZyAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbHZoU3Vic3RyaW5nOiBzdHJpbmcgPSAnbHZoJ1xyXG5cclxuICAvKiogR2V0cyB0aGUgY29uZmlndXJhdGlvbnMgKi9cclxuICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkQnMudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGNvbmZpZ3VyYXRpb24gb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBpc0luaXRpYWxpemVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0cyB0aGUgc3RhcnR1cCBzZXJ2aWNlLiBJbmNsdWRlIGFueSBzZXJ2aWNlcyB0aGF0IHNob3VsZCBiZSB1c2VkIGR1cmluZyBzdGFydHVwXHJcbiAgICogQHBhcmFtIGh0dHAgVGhlIEhUVFAgQ2xpZW50XHJcbiAgICogQHBhcmFtIHRyYW5zbGF0ZVNlcnZpY2UgVGhlIHRyYW5zbGF0ZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHRoZW1lU2VydmljZSBUaGUgdGhlbWUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIFRoZSBjb25maWd1cmF0aW9uIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gb0F1dGhTZXJ2aWNlIFRoZSBvaWRjIGF1dGhvcml6YXRpb24gc2VydmljZVxyXG4gICAqIEBwYXJhbSByb3V0ZXIgVGhlIHJvdXRlclxyXG4gICAqIEBwYXJhbSBsb2NhdGlvbiBUaGUgbG9jYXRpb25cclxuICAgKiBAcGFyYW0gY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2UgVGhlIHNlcnZpY2UgdGhhdCB3aWxsIGNvbmZpZ3VyZSB0aGUgYXV0aCBjb25maWdcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tQXV0aENvbmZpZ1NlcnZpY2U6IEN1c3RvbUF1dGhDb25maWdTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSU5ET1cpIHJlYWRvbmx5IF93aW5kb3c6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5pc0luaXRpYWxpemVkJCA9IHRoaXMuaXNJbml0aWFsaXplZEJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgdGhpcy53aW5kb3cgPSBfd2luZG93IHx8IHdpbmRvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCBkYXRhIHRoYXQgaXMgbmVlZGVkIHVwb24gaW5pdGlhbCBsb2FkaW5nIG9mIHRoZSB3ZWJzaXRlXHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIC8vIHJlYWRzIHRoZSBsYW5ndWFnZSBmcm9tIGxvY2FsIHN0b3JhZ2Ugc2V0IGluIHRoZSBwYXJlbnQgYXBwXHJcbiAgICAvLyBsYW5ndWFnZSBsb2FkaW5nXHJcblxyXG4gICAgLy8gU2V0IGxhbmd1YWdlcyBmb3IgdHJhbnNsYXRpb24gc2VydmljZVxyXG4gICAgY29uc3QgbGFuZyA9IHRoaXMud2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGxhbmd1YWdlU3RvcmFnZUtleSkgfHwgdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShsYW5ndWFnZVN0b3JhZ2VLZXkpIHx8ICdlbic7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmcpO1xyXG5cclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE2MzY4ODBcclxuICAgIC8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDE3MzYyOTNcclxuXHJcbiAgICAvLyBBIGNhbGxiYWNrIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcHJvbWlzZS4gVGhpcyBjYWxsYmFjayBpcyBwYXNzZWQgdHdvIGFyZ3VtZW50czpcclxuICAgIC8vIGEgcmVzb2x2ZSBjYWxsYmFjayB1c2VkIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhIHZhbHVlIG9yIHRoZSByZXN1bHQgb2YgYW5vdGhlciBwcm9taXNlLFxyXG4gICAgLy8gYW5kIGEgcmVqZWN0IGNhbGxiYWNrIHVzZWQgdG8gcmVqZWN0IHRoZSBwcm9taXNlIHdpdGggYSBwcm92aWRlZCByZWFzb24gb3IgZXJyb3IuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAvLyBHbyB0aHJvdWdoIGFsbCBzZXJ2aWNlcyBhbmQgY29tcGxldGUgYW55IEFQSSBjYWxscyBuZWNlc3NhcnkuXHJcbiAgICAgIC8vIEF0IHRoZSBlbmQsIGlmIGFsbCB3b3JrcyBhbmQgbG9hZHMgYXMgZXhwZWN0ZWQsIHJlc29sdmUgdGhlIHByb21pc2UgYW5kIHNldCBzdGFydHVwIHN1Y2Nlc3MgdG8gdHJ1ZS5cclxuICAgICAgLy8gSWYgYW4gaXNzdWUgaXMgZW5jb3VudGVyZWQsIHlvdSBjYW4gY2FsbCByZWplY3QoKSB0byBoaXQgdGhlIGNhdGNoKCkgY29kZSBiZWxvdy5cclxuXHJcbiAgICAgIC8vIEZpcnN0LCBsb2FkIHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAgICBsZXQgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBbSlNPTiwgSlNPTiwgSlNPTiwgSlNPTiwgSlNPTl07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgW2Jhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCBiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGVtZV0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KCcuL2Fzc2V0cy9iYXNlbGluZS9hcHBzZXR0aW5ncy5qc29uJykudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KCcuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy9hcHBzZXR0aW5ncy5qc29uJykudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9pMThuLyR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkudG9Qcm9taXNlKCksXHJcbiAgICAgICAgICB0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy8ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uanNvbmApLnRvUHJvbWlzZSgpLFxyXG4gICAgICAgICAgdGhpcy5odHRwLmdldDxKU09OPignLi9hc3NldHMvY29uZmlndXJhdGlvbnMvdGhlbWUuanNvbicpLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgXSk7XHJcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IF8ubWVyZ2VXaXRoKGJhc2VDb25maWcsIG92ZXJyaWRlQ29uZmlnLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgY29uc3QgbWVyZ2VkTGFuZ3VhZ2UgPSBfLm1lcmdlV2l0aChiYXNlTGFuZywgb3ZlcnJpZGVMYW5nLCB0aGlzLm1lcmdlQ3VzdG9taXplcik7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZywgbWVyZ2VkTGFuZ3VhZ2UpO1xyXG5cclxuICAgICAgICBjb25zdCBjb25maWd1cmVQYXJ0aWFsID0gKHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZ1NuYXBTaG90ID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgICAgIGNvbmZpZ1NuYXBTaG90LnRoZW1lID0gdCBhcyBhbnk7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gY29uZmlnU25hcFNob3Q7XHJcbiAgICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5pbml0UGFsZXR0ZSh0IGFzIGFueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN1YmRvbWFpbiA9IHRoaXMuZ2V0U3ViZG9tYWluKCk7XHJcbiAgICAgICAgaWYgKHN1YmRvbWFpbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbikge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IFtzdWJkb21haW5Db25maWdzLCBzdWJkb21haW5MYW5ndWFnZSwgc3ViZG9tYWluVGhlbWVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LiR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nfS5qc29uYCkpLFxyXG4gICAgICAgICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLmdldDxKU09OPihgLi9hc3NldHMvY29uZmlndXJhdGlvbnMvJHtzdWJkb21haW59LmFwcHNldHRpbmdzLmpzb25gKSksXHJcbiAgICAgICAgICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmh0dHAuZ2V0PEpTT04+KGAuL2Fzc2V0cy9jb25maWd1cmF0aW9ucy8ke3N1YmRvbWFpbn0udGhlbWUuanNvbmApKVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IF8ubWVyZ2VXaXRoKHRoaXMuY29uZmlnU2VydmljZS5jb25maWcsIHN1YmRvbWFpbkNvbmZpZ3MsIHRoaXMubWVyZ2VDdXN0b21pemVyKTtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZywgXy5tZXJnZVdpdGgobWVyZ2VkTGFuZ3VhZ2UsIHN1YmRvbWFpbkxhbmd1YWdlLCB0aGlzLm1lcmdlQ3VzdG9taXplcikpO1xyXG4gICAgICAgICAgICBjb25zdCBtZXJnZWRUaGVtZSA9IF8ubWVyZ2VXaXRoKHRoZW1lLCBzdWJkb21haW5UaGVtZSwgdGhpcy5tZXJnZUN1c3RvbWl6ZXIpO1xyXG4gICAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKG1lcmdlZFRoZW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbiAmJiB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YmRvbWFpbi5zdWJkb21haW5zLmxlbmd0aCAmJiAhdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4uc3ViZG9tYWlucy5pbmNsdWRlcyhzdWJkb21haW4pKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gYEludmFsaWQgc3ViZG9tYWluOiAke3N1YmRvbWFpbn1gO1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5zdWJkb21haW4/LnJlcXVpcmVDb25maWd1cmVkU3ViZG9tYWluICYmIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuc3ViZG9tYWluPy5zdWJkb21haW5zLmluY2x1ZGVzKHN1YmRvbWFpbikpIHtcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBgQ29uZmlndXJlZCBzdWJkb21haW46ICR7c3ViZG9tYWlufSBkb2VzIG5vdCBoYXZlIGFueSBzdWJkb21haW4gc3BlY2lmaWMgY29uZmlndXJhdGlvbnNgO1xyXG4gICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKHRoZW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25maWd1cmVQYXJ0aWFsKHRoZW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgLy8gQ2F0Y2ggYW55IGVycm9ycyBkdXJpbmcgdGhlIGdldCBjb25maWd1cmF0aW9ucyBBUEkgY2FsbFxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIExvYWRpbmcgQ29uZmlndXJhdGlvbnMgb3IgTGFuZ3VhZ2VzJyk7XHJcbiAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlXHJcbiAgICAgICAgcmVqZWN0KCdlcnJvcicpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvciB8fCAnU2VydmVyIGVycm9yJyk7XHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jdXN0b21BdXRoQ29uZmlnU2VydmljZS5jb25maWd1cmVBdXRoU2V0dGluZ3MoKS50aGVuKGF1dGhDb25maWcgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXV0aENvbmZpZykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWcub0F1dGhTZXR0aW5ncztcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9naW4oY29uZmlnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb0F1dGggPSBhd2FpdCB0aGlzLnNldFVwT0F1dGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgcmVxdWVzdGVkIHJvdXRlXHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M/LnByZXNlcnZlUm91dGUpIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMub0F1dGhTZXJ2aWNlLnN0YXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0luaXRpYWxpemVkQnMubmV4dCh0cnVlKTtcclxuICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAvLyBDYXRjaCB0aGUgZXJyb3JcclxuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIGxvYWRpbmcgdGhlIHN0YXJ0dXAgY29uZmlndXJhdGlvbnMuJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyZSBpbXBsaWNpdCBmbG93XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRVcE9BdXRoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5jb25maWc/Lm9BdXRoU2V0dGluZ3M/Lmlzc3Vlcikge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLm9BdXRoU2V0dGluZ3M7XHJcbiAgICAgIGNvbnN0IGF1dGhDb25maWcgPSBuZXcgQXV0aENvbmZpZyh7XHJcbiAgICAgICAgY2xpZW50SWQ6IGNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgICByZWRpcmVjdFVyaTogY29uZmlnLnJlZGlyZWN0VXJpLFxyXG4gICAgICAgIGlzc3VlcjogY29uZmlnLmlzc3VlcixcclxuICAgICAgICBzY29wZTogY29uZmlnLnNjb3BlLFxyXG4gICAgICAgIHNraXBJc3N1ZXJDaGVjazogY29uZmlnLnNraXBJc3N1ZXJDaGVjayAhPSB1bmRlZmluZWQgPyBjb25maWcuc2tpcElzc3VlckNoZWNrIDogdHJ1ZSxcclxuICAgICAgICB0aW1lb3V0RmFjdG9yOiBjb25maWcudGltZW91dEZhY3RvciB8fCAwLjc1LFxyXG4gICAgICAgIHBvc3RMb2dvdXRSZWRpcmVjdFVyaTogY29uZmlnLnBvc3RMb2dvdXRSZWRpcmVjdFVyaSxcclxuICAgICAgICBsb2dpblVybDogY29uZmlnLmxvZ2luVXJsLFxyXG4gICAgICAgIHN0cmljdERpc2NvdmVyeURvY3VtZW50VmFsaWRhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJ1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UuY29uZmlndXJlKGF1dGhDb25maWcpO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5za2lwSXNzdWVyQ2hlY2sgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlIHx8ICdjb2RlJztcclxuICAgICAgdGhpcy5vQXV0aFNlcnZpY2Uuc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRva2VuVmFsaWRhdGlvbkhhbmRsZXIgPSBuZXcgSndrc1ZhbGlkYXRpb25IYW5kbGVyKCk7XHJcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLnRpbWVvdXRGYWN0b3IgPSAwLjc1O1xyXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKTtcclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsaXplZCBvbiBzdGFydCB1cCB0byB0cnVlXHJcbiAgICAgIGNvbmZpZy5hdXRoU2V0T25TdGFydHVwID0gdHJ1ZTtcclxuICAgICAgY29uc3QgcGFyZW50Q29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcclxuICAgICAgcGFyZW50Q29uZmlnLm9BdXRoU2V0dGluZ3MgPSBjb25maWc7XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBwYXJlbnRDb25maWc7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5sb2dpbihjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgTG9naW5cclxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBPaWRjIEF1dGggU2V0dGluZ3NcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGxvZ2luKGNvbmZpZzogT2lkY0F1dGhTZXR0aW5ncyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVFeGlzdGluZ1Rva2VuQWdhaW5zdENvbmZpZ3MoKTtcclxuICAgIGNvbnN0IHByZXNlcnZlZFJvdXRlID0gdGhpcy53aW5kb3cuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShwcmVTaWduSW5Sb3V0ZVN0b3JhZ2VLZXkpO1xyXG4gICAgaWYgKCFwcmVzZXJ2ZWRSb3V0ZSkge1xyXG4gICAgICB0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHByZVNpZ25JblJvdXRlU3RvcmFnZUtleSwgdGhpcy5sb2NhdGlvbi5wYXRoKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbmZpZy5yZXF1aXJlTG9naW5PblN0YXJ0dXAgfHwgIWlzVmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLmxvYWREaXNjb3ZlcnlEb2N1bWVudEFuZExvZ2luKHtzdGF0ZTogdGhpcy5sb2NhdGlvbi5wYXRoKCl9KVxyXG4gICAgICAgIC8vIGhhbmRsZXMgdGhlIGNhc2UgZm9yIGV4cGlyZWQgYWNjZXNzIHRva2VuIG9yIGludmFsaWQgbm9uY2Ugb3IgcGVvcGxlIGJvb2ttYXJraW5nIHRoZSBpZHMgbG9naW4gcGFnZVxyXG4gICAgICAgIC5jYXRjaChhc3luYyAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0TG9naW5GbG93KHRoaXMubG9jYXRpb24ucGF0aCgpKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5sb2FkRGlzY292ZXJ5RG9jdW1lbnRBbmRUcnlMb2dpbigpXHJcbiAgICAgICAgLy8gaGFuZGxlcyB0aGUgY2FzZSBmb3IgZXhwaXJlZCBhY2Nlc3MgdG9rZW4gb3IgaW52YWxpZCBub25jZSBvciBwZW9wbGUgYm9va21hcmtpbmcgdGhlIGlkcyBsb2dpbiBwYWdlXHJcbiAgICAgICAgLmNhdGNoKGFzeW5jIChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRMb2dpbkZsb3coKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWVyZ2VzIHRoZSB0d28gY29uZmlnIG9iamVjdHMgaWdub3JpbmcgdGhlIGFycmF5IHR5cGVcclxuICAgKiBAcGFyYW0gb2JqVmFsdWUgVGhlIGRlZmF1bHQgY29uZmlnIHZhbHVlXHJcbiAgICogQHBhcmFtIHNyY1ZhbHVlIFRoZSB0YXJnZXQgc3dpdGNoYm9hcmQgY29uZmlnIHZhbHVlXHJcbiAgICogQHJldHVybnMgVGhlIG1lcmdlIG9mIHRoZSB0d28gY29uZmlncyBwcm92aWRlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWVyZ2VDdXN0b21pemVyKG9ialZhbHVlOiBhbnksIHNyY1ZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKF8uaXNBcnJheShvYmpWYWx1ZSkgJiYgc3JjVmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHNyY1ZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSBleGlzdGluZyB0b2tlbiBhZ2FpbnN0IHRoZSBjb25maWd1cmF0aW9uc1xyXG4gICAqIEByZXR1cm5zIHRydWUgd2hlbiB0b2tlbiBpcyB2YWxpZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdmFsaWRhdGVFeGlzdGluZ1Rva2VuQWdhaW5zdENvbmZpZ3MoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLmRpc2FibGVTdGFydHVwVG9rZW5WYWxpZGF0aW9uKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLndpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NfdG9rZW4nKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGdyYW50ZWRTY29wZXM6IEFycmF5PHN0cmluZz4gPSAgdGhpcy5vQXV0aFNlcnZpY2UuZ2V0R3JhbnRlZFNjb3BlcygpIGFzIEFycmF5PHN0cmluZz47XHJcbiAgICBjb25zdCBjb25maWd1cmVkU2NvcGVzID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLnNjb3BlLnNwbGl0KCcgJyk7XHJcbiAgICBjb25zdCBkaWZmcyA9IGdyYW50ZWRTY29wZXMuZmlsdGVyKHggPT4gIWNvbmZpZ3VyZWRTY29wZXMuaW5jbHVkZXMoeCkpXHJcbiAgICAgIC5jb25jYXQoY29uZmlndXJlZFNjb3Blcy5maWx0ZXIoeCA9PiAhZ3JhbnRlZFNjb3Blcy5pbmNsdWRlcyh4KSkpO1xyXG4gICAgaWYgKGRpZmZzLmxlbmd0aCB8fCB0aGlzLm9BdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpWydhdWQnXSAhPT0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5vQXV0aFNldHRpbmdzLmNsaWVudElkKSB7XHJcbiAgICAgIHRoaXMud2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2FjY2Vzc190b2tlbicpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBHZXR0aW5nIHRoZSBzdWJkb21haW4gZnJvbSB1cmwgKi9cclxuICBwcml2YXRlIGdldFN1YmRvbWFpbigpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZG9tYWluID0gdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgICBpZiAoZG9tYWluLmluZGV4T2YoJy4nKSA8IDAgfHxcclxuICAgICAgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMuZXhhbXBsZVN1YmRvbWFpbiB8fCBkb21haW4uc3BsaXQoJy4nKVswXSA9PT0gdGhpcy5sdmhTdWJzdHJpbmcgfHwgZG9tYWluLnNwbGl0KCcuJylbMF0gPT09IHRoaXMud3d3U3Vic3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBkb21haW4uc3BsaXQoJy4nKVswXTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -14,6 +14,7 @@ export * from './lib/core/models/user-entity-service-config';
|
|
|
14
14
|
export * from './lib/core/client-generated/model/models';
|
|
15
15
|
export * from './lib/core/functions/guid';
|
|
16
16
|
export * from './lib/core/functions/naming-convention';
|
|
17
|
+
export * from './lib/core/functions/route-to-pre-login-route';
|
|
17
18
|
export * from './lib/core/initializer/abstract-startup-service';
|
|
18
19
|
export * from './lib/core/services/base-config.service';
|
|
19
20
|
export * from './lib/core/services/default-config.service';
|
|
@@ -47,4 +48,4 @@ export * from './lib/component-save-print/sof-ar-component-save-print.module';
|
|
|
47
48
|
export * from './lib/component-save-print/components/component-save-print/component-save-print.component';
|
|
48
49
|
export * from './lib/component-save-print/services/component-save-print.service';
|
|
49
50
|
export * from './lib/rbac/services/tokens';
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLE9BQU87QUFDUCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywyQ0FBMkMsQ0FBQztBQUUxRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsZ0RBQWdELENBQUE7QUFDOUQsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELE9BQU8sRUFDSCxjQUFjLEVBQ2QsTUFBTSxFQUNOLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ3JCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsVUFBVTtBQUNWLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDJGQUEyRixDQUFDO0FBQzFHLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyw0QkFBNEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXJtYXR1cmUgKi9cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXJtYXR1cmUubW9kdWxlJztcclxuXHJcbi8vIGNvcmVcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL3VzZXItZW50aXR5LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2F1dGhvcml6YXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9kYXRhLXN0b3JlLWNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbW9kZWxzL3R5cGVkLXNlc3Npb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9odHRwLXZlcmJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9tb2RlbHMvc2Vzc2lvbi1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9yb3V0ZS1wYXRoJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9tb2RlbHMvc3R5bGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9tb2RlbHMvdXNlci1lbnRpdHktc2VydmljZS1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2NsaWVudC1nZW5lcmF0ZWQvbW9kZWwvbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9mdW5jdGlvbnMvZ3VpZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvZnVuY3Rpb25zL25hbWluZy1jb252ZW50aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9mdW5jdGlvbnMvcm91dGUtdG8tcHJlLWxvZ2luLXJvdXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS9pbml0aWFsaXplci9hYnN0cmFjdC1zdGFydHVwLXNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2RlZmF1bHQtY29uZmlnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbW9kZWxzL29pZGMtYXV0aC1zZXR0aW5ncyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbW9kZWxzL2hlYWRlci1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9uYXZpZ2F0aW9uLWNvbmZpZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvcmUvbW9kZWxzL3N1YmRvbWFpbi1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2N1c3RvbS1hdXRoLWNvbmZpZy5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL2NvbXBvbmVudHMvYXBwLXRlbXBsYXRlL2FwcC10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlL3NlcnZpY2VzL2Jhbm5lci5zZXJ2aWNlJztcclxuZXhwb3J0IHtcclxuICAgIFNFU1NJT05fQ09ORklHLFxyXG4gICAgV0lORE9XLFxyXG4gICAgVVNFUl9FTlRJVFlfU0VSVklDRV9DT05GSUcsXHJcbiAgICBwcmVTaWduSW5Sb3V0ZVN0b3JhZ2VLZXksXHJcbiAgICBsYW5ndWFnZVN0b3JhZ2VLZXlcclxufSBmcm9tICcuL2xpYi9jb3JlL21vZGVscy9jb25zdGFudHMnO1xyXG5cclxuLy8gbW9kdWxlc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXN0cmlidXRlZC1jYWNoZS9kaXN0cmlidXRlZC1jYWNoZS1hcGknO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lcnJvci9lcnJvci1hcGknO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mYXEvZmFxLWFwaSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvb3Rlci9mb290ZXItYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybXMvZm9ybXMtYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaGVhZGVyL2hlYWRlci1hcGknO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvb2F1dGgvb2F1dGgtYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmJhYy9yYmFjLWFwaSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3J1bS9ydW0tYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2FtbC9zYW1sLWFwaSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RoZW1pbmcvdGhlbWUtYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYWxlcnQtYmFubmVyL2FsZXJ0LWJhbm5lci1hcGknO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc29mLXBpcGUvc29mLXBpcGUuYXBpJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzaXplLXBhbmVscy9yZXNpemUtcGFuZWxzLWFwaSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQtc2F2ZS1wcmludC9zb2YtYXItY29tcG9uZW50LXNhdmUtcHJpbnQubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50LXNhdmUtcHJpbnQvY29tcG9uZW50cy9jb21wb25lbnQtc2F2ZS1wcmludC9jb21wb25lbnQtc2F2ZS1wcmludC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnQtc2F2ZS1wcmludC9zZXJ2aWNlcy9jb21wb25lbnQtc2F2ZS1wcmludC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmJhYy9zZXJ2aWNlcy90b2tlbnMnXHJcbiJdfQ==
|
|
@@ -2365,22 +2365,24 @@ class Initializer {
|
|
|
2365
2365
|
this.configService.config = _.mergeWith(baseConfig, overrideConfig, this.mergeCustomizer);
|
|
2366
2366
|
const mergedLanguage = _.mergeWith(baseLang, overrideLang, this.mergeCustomizer);
|
|
2367
2367
|
this.translateService.setTranslation(this.translateService.currentLang, mergedLanguage);
|
|
2368
|
-
const configurePartial = () => {
|
|
2368
|
+
const configurePartial = (t) => {
|
|
2369
2369
|
const configSnapShot = this.configService.config;
|
|
2370
|
-
configSnapShot.theme =
|
|
2370
|
+
configSnapShot.theme = t;
|
|
2371
2371
|
this.configService.config = configSnapShot;
|
|
2372
|
-
this.themeService.initPalette(
|
|
2372
|
+
this.themeService.initPalette(t);
|
|
2373
2373
|
};
|
|
2374
2374
|
const subdomain = this.getSubdomain();
|
|
2375
|
-
if (subdomain) {
|
|
2375
|
+
if (subdomain && this.configService.config.subdomain) {
|
|
2376
2376
|
try {
|
|
2377
|
-
let [subdomainConfigs, subdomainLanguage] = yield Promise.all([
|
|
2377
|
+
let [subdomainConfigs, subdomainLanguage, subdomainTheme] = yield Promise.all([
|
|
2378
2378
|
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.${this.translateService.currentLang}.json`)),
|
|
2379
|
-
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.appsettings.json`))
|
|
2379
|
+
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.appsettings.json`)),
|
|
2380
|
+
lastValueFrom(this.http.get(`./assets/configurations/${subdomain}.theme.json`))
|
|
2380
2381
|
]);
|
|
2381
2382
|
this.configService.config = _.mergeWith(this.configService.config, subdomainConfigs, this.mergeCustomizer);
|
|
2382
2383
|
this.translateService.setTranslation(this.translateService.currentLang, _.mergeWith(mergedLanguage, subdomainLanguage, this.mergeCustomizer));
|
|
2383
|
-
|
|
2384
|
+
const mergedTheme = _.mergeWith(theme, subdomainTheme, this.mergeCustomizer);
|
|
2385
|
+
configurePartial(mergedTheme);
|
|
2384
2386
|
}
|
|
2385
2387
|
catch (e) {
|
|
2386
2388
|
if (this.configService.config.subdomain && this.configService.config.subdomain.subdomains.length && !this.configService.config.subdomain.subdomains.includes(subdomain)) {
|
|
@@ -2396,10 +2398,11 @@ class Initializer {
|
|
|
2396
2398
|
console.error(error);
|
|
2397
2399
|
throw new Error(error);
|
|
2398
2400
|
}
|
|
2401
|
+
configurePartial(theme);
|
|
2399
2402
|
}
|
|
2400
2403
|
}
|
|
2401
2404
|
else {
|
|
2402
|
-
configurePartial();
|
|
2405
|
+
configurePartial(theme);
|
|
2403
2406
|
}
|
|
2404
2407
|
}
|
|
2405
2408
|
catch (error) {
|
|
@@ -2485,6 +2488,10 @@ class Initializer {
|
|
|
2485
2488
|
login(config) {
|
|
2486
2489
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2487
2490
|
const isValid = this.validateExistingTokenAgainstConfigs();
|
|
2491
|
+
const preservedRoute = this.window.sessionStorage.getItem(preSignInRouteStorageKey);
|
|
2492
|
+
if (!preservedRoute) {
|
|
2493
|
+
this.window.sessionStorage.setItem(preSignInRouteStorageKey, this.location.path());
|
|
2494
|
+
}
|
|
2488
2495
|
if (config.requireLoginOnStartup || !isValid) {
|
|
2489
2496
|
return this.oAuthService.loadDiscoveryDocumentAndLogin({ state: this.location.path() })
|
|
2490
2497
|
// handles the case for expired access token or invalid nonce or people bookmarking the ids login page
|
|
@@ -5354,6 +5361,18 @@ var ApplicationUserModel;
|
|
|
5354
5361
|
};
|
|
5355
5362
|
})(ApplicationUserModel || (ApplicationUserModel = {}));
|
|
5356
5363
|
|
|
5364
|
+
/**
|
|
5365
|
+
* Routes to the pre login in route
|
|
5366
|
+
* @param router The router
|
|
5367
|
+
*/
|
|
5368
|
+
const routeToPreLoginRoute = (router) => {
|
|
5369
|
+
const preservedRoute = window.sessionStorage.getItem(preSignInRouteStorageKey);
|
|
5370
|
+
if (preservedRoute) {
|
|
5371
|
+
router.navigateByUrl(preservedRoute);
|
|
5372
|
+
window.sessionStorage.removeItem(preSignInRouteStorageKey);
|
|
5373
|
+
}
|
|
5374
|
+
};
|
|
5375
|
+
|
|
5357
5376
|
const BASE_PATH = new InjectionToken('basePath');
|
|
5358
5377
|
const COLLECTION_FORMATS = {
|
|
5359
5378
|
'csv': ',',
|
|
@@ -7252,5 +7271,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
7252
7271
|
* Generated bundle index. Do not edit.
|
|
7253
7272
|
*/
|
|
7254
7273
|
|
|
7255
|
-
export { ALERT_BANNER_CONFIG, AbstractSamlEntryService, AbstractSamlService, AbstractStartupService, AccessTokenClaims, AlertBannerComponent, AlertBannerModule, AlertBannerService, AlertService, AlphaNumericDirective, AppTemplateComponent, ApplicationUserModel, ArRoleNavService, ArmError, ArmatureFooterComponent, ArmatureFooterModule, ArmatureHeaderComponent, ArmatureHeaderModule, ArmatureModule, ArmatureNavigationComponent, ArmatureResizePanelsModule, Attribute, AuthorizationService, BannerService, BannerType, BaseComponentModule, BaseConfigService, CacheExpirationType, ComponentSavePrintComponent, ComponentSavePrintService, Configuration, ConfirmAddressData, CoverageDetail, CssOverride, CssOverrideDirective, CustomAuthConfigService, DISABLE_ACCESS_FOR_NO_PAGES_ROLE, DISTRIBUTED_CACHE_BASE_PATH, DataStoreConfig, DecodedAccessToken, DefaultConfigService, DialogResult, DistributedCacheModule, ErrorCommonComponent, ErrorCommonConfig, ErrorModule, FAQ, FAQConfig, FaqComponent, FaqModule, FooterConfig, FormsModule, HYBRID_SAML_OAUTH_CONFIG, HeaderAuthSettings, HybridSamlOAuthConfig, HybridSamlOauthService, InputTrimDirective, LettersCharactersDirective, LettersOnlyDirective, MobileHeaderMenuComponent, ModalData, NavigationModule, NumbersOnlyDirective, Oauth2RoleService, OauthModule, PhoneFormatPipe, PolicyPerson, RBAC_CONFIG, RbacActionDirective, RbacConfig, RbacModule, RedirectSamlComponent, RedirectSamlRequest, RedirectSessionConfigs, ResizePanelsComponent, RoleAccess, RoleNavService, RoutePath, RumConfig, RumModule, RumService, SESSION_CONFIG, SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS, SamlModule, SamlService, ServerCacheService, SessionConfig, SessionService, SharedErrorService, SiteMapComponent, SiteMapDirection, SofAddressComponent, SofAlertComponent, SofArComponentSavePrintModule, SofBadgeComponent, SofBannerComponent, SofBlankPipe, SofButtonToggleGroupComponent, SofConfirmAddressComponent, SofDatePipe, SofImageCheckboxComponent, SofModalComponent, SofPipeModule, SofProgressBarComponent, SofRadioCardComponent, SofSimpleAlertComponent, SofSsnPipe, SofStarRatingComponent, SoftheonErrorHandlerService, SsoGatewayEntryService, SsoGatewayModel, States, ThemeModule, ThemeService, TypedSession, USER_ENTITY_SERVICE_CONFIG, UserEntityService, UserEntityServiceConfig, ValidationKeys, WINDOW, httpVerb, initializerFactory, keyPathPrefix, languageStorageKey, newGuid, pascalToCamel, preSignInRouteStorageKey, sessionBasePathFactory };
|
|
7274
|
+
export { ALERT_BANNER_CONFIG, AbstractSamlEntryService, AbstractSamlService, AbstractStartupService, AccessTokenClaims, AlertBannerComponent, AlertBannerModule, AlertBannerService, AlertService, AlphaNumericDirective, AppTemplateComponent, ApplicationUserModel, ArRoleNavService, ArmError, ArmatureFooterComponent, ArmatureFooterModule, ArmatureHeaderComponent, ArmatureHeaderModule, ArmatureModule, ArmatureNavigationComponent, ArmatureResizePanelsModule, Attribute, AuthorizationService, BannerService, BannerType, BaseComponentModule, BaseConfigService, CacheExpirationType, ComponentSavePrintComponent, ComponentSavePrintService, Configuration, ConfirmAddressData, CoverageDetail, CssOverride, CssOverrideDirective, CustomAuthConfigService, DISABLE_ACCESS_FOR_NO_PAGES_ROLE, DISTRIBUTED_CACHE_BASE_PATH, DataStoreConfig, DecodedAccessToken, DefaultConfigService, DialogResult, DistributedCacheModule, ErrorCommonComponent, ErrorCommonConfig, ErrorModule, FAQ, FAQConfig, FaqComponent, FaqModule, FooterConfig, FormsModule, HYBRID_SAML_OAUTH_CONFIG, HeaderAuthSettings, HybridSamlOAuthConfig, HybridSamlOauthService, InputTrimDirective, LettersCharactersDirective, LettersOnlyDirective, MobileHeaderMenuComponent, ModalData, NavigationModule, NumbersOnlyDirective, Oauth2RoleService, OauthModule, PhoneFormatPipe, PolicyPerson, RBAC_CONFIG, RbacActionDirective, RbacConfig, RbacModule, RedirectSamlComponent, RedirectSamlRequest, RedirectSessionConfigs, ResizePanelsComponent, RoleAccess, RoleNavService, RoutePath, RumConfig, RumModule, RumService, SESSION_CONFIG, SOF_BLANK_LANGUAGE_OVERRIDE, SOF_DATE_PIPE_FORMATS, SamlModule, SamlService, ServerCacheService, SessionConfig, SessionService, SharedErrorService, SiteMapComponent, SiteMapDirection, SofAddressComponent, SofAlertComponent, SofArComponentSavePrintModule, SofBadgeComponent, SofBannerComponent, SofBlankPipe, SofButtonToggleGroupComponent, SofConfirmAddressComponent, SofDatePipe, SofImageCheckboxComponent, SofModalComponent, SofPipeModule, SofProgressBarComponent, SofRadioCardComponent, SofSimpleAlertComponent, SofSsnPipe, SofStarRatingComponent, SoftheonErrorHandlerService, SsoGatewayEntryService, SsoGatewayModel, States, ThemeModule, ThemeService, TypedSession, USER_ENTITY_SERVICE_CONFIG, UserEntityService, UserEntityServiceConfig, ValidationKeys, WINDOW, httpVerb, initializerFactory, keyPathPrefix, languageStorageKey, newGuid, pascalToCamel, preSignInRouteStorageKey, routeToPreLoginRoute, sessionBasePathFactory };
|
|
7256
7275
|
//# sourceMappingURL=softheon-armature.mjs.map
|