@c8y/ngx-components 1020.7.4 → 1020.10.0
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/auth-configuration/sso-configuration/sso-configuration.component.d.ts +2 -0
- package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts +5 -3
- package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map +1 -1
- package/core/login/login.component.d.ts +3 -1
- package/core/login/login.component.d.ts.map +1 -1
- package/core/login/login.service.d.ts +10 -5
- package/core/login/login.service.d.ts.map +1 -1
- package/core/modal/modal-confirm.component.d.ts +3 -1
- package/core/modal/modal-confirm.component.d.ts.map +1 -1
- package/ecosystem/microservices/add-microservice.component.d.ts +4 -2
- package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
- package/esm2022/auth-configuration/sso-configuration/sso-configuration.component.mjs +13 -5
- package/esm2022/auth-configuration/sso-configuration/template-parts/basic-configuration.component.mjs +8 -8
- package/esm2022/auth-configuration/sso-configuration/templates/aad-configuration-mapper.mjs +2 -2
- package/esm2022/auth-configuration/sso-configuration/templates/custom-configuration-mapper.mjs +2 -2
- package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.mjs +2 -2
- package/esm2022/core/login/login.component.mjs +36 -8
- package/esm2022/core/login/login.service.mjs +49 -8
- package/esm2022/core/modal/modal-confirm.component.mjs +7 -3
- package/esm2022/ecosystem/microservices/add-microservice.component.mjs +35 -19
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +20 -13
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +33 -17
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +239 -169
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +49 -19
- package/locales/en.po +7 -4
- package/locales/es.po +100 -70
- package/locales/fr.po +118 -88
- package/locales/ja_JP.po +125 -93
- package/locales/ko.po +293 -27
- package/locales/locales.pot +21 -0
- package/locales/nl.po +90 -60
- package/locales/pl.po +86 -56
- package/locales/pt_BR.po +261 -231
- package/locales/ru.po +0 -15
- package/locales/zh_CN.po +288 -22
- package/locales/zh_TW.po +290 -24
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { AlertService, ModalService, LoginService, AppStateService, TenantUiServ
|
|
|
4
4
|
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
5
|
import { SsoConfiguration, TemplateType } from './sso-configuration.model';
|
|
6
6
|
import { SsoConfigurationService } from './sso-configuration.service';
|
|
7
|
+
import { NgForm } from '@angular/forms';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export declare class SsoConfigurationComponent implements OnInit {
|
|
9
10
|
private ssoConfigurationService;
|
|
@@ -40,6 +41,7 @@ export declare class SsoConfigurationComponent implements OnInit {
|
|
|
40
41
|
reloading$: BehaviorSubject<boolean>;
|
|
41
42
|
reload: EventEmitter<void>;
|
|
42
43
|
saveSubject: Subject<void>;
|
|
44
|
+
ssoConfigurationForm: NgForm;
|
|
43
45
|
private dataSubscription;
|
|
44
46
|
private data$;
|
|
45
47
|
constructor(ssoConfigurationService: SsoConfigurationService, applicationService: ApplicationService, userGroupService: UserGroupService, inventoryRoleService: InventoryRoleService, alertService: AlertService, modalService: ModalService, loginService: LoginService, appStateService: AppStateService, tenantUiService: TenantUiService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-configuration.component.d.ts","sourceRoot":"","sources":["../../../auth-configuration/sso-configuration/sso-configuration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"sso-configuration.component.d.ts","sourceRoot":"","sources":["../../../auth-configuration/sso-configuration/sso-configuration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,EAAa,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EAEV,oBAAoB,EACpB,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,YAAY,EACZ,YAAY,EAEZ,YAAY,EACZ,eAAe,EACf,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAA0B,OAAO,EAAE,MAAM,MAAM,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAsB,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;;AAExC,qBAIa,yBAA0B,YAAW,MAAM;IAgCpD,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IAvCzB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,YAAY,sBAAgB;IAC5B,kBAAkB;;;;;;;;;;;;;;;;MAAsB;IAExC,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAA8B;IAClE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAsB;IAChD,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IAER,oBAAoB,EAAG,MAAM,CAAC;IAEjE,OAAO,CAAC,gBAAgB,CAAe;IAEvC,OAAO,CAAC,KAAK,CAYX;gBAGQ,uBAAuB,EAAE,uBAAuB,EAChD,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe;IAG1C,QAAQ,IAAI,IAAI;IAYhB,WAAW,IAAI,IAAI;IAInB,oBAAoB;IAKd,IAAI,CAAC,gBAAgB,KAAA;IAwB3B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,iBAAiB;YAOX,yBAAyB;yCA7G5B,yBAAyB;2CAAzB,yBAAyB;CAyHrC"}
|
package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnChanges } from '@angular/core';
|
|
2
2
|
import { TenantService } from '@c8y/client';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class BasicConfigurationComponent implements
|
|
4
|
+
export declare class BasicConfigurationComponent implements OnChanges {
|
|
5
5
|
private tenantService;
|
|
6
6
|
templateModel: any;
|
|
7
|
+
REDIRECT_TO_THE_USER_INTERFACE_APPLICATION_TOOLTIP: "The redirect URL is automatically set to the application used by the user. In case of an error, it will be correctly displayed on the application's page.";
|
|
7
8
|
redirectToPlatformWarningParams: {
|
|
8
9
|
defaultRedirectUrl: string;
|
|
9
10
|
host?: string;
|
|
10
11
|
};
|
|
12
|
+
flowControlledByUI: boolean;
|
|
11
13
|
constructor(tenantService: TenantService);
|
|
12
14
|
shouldShow(field: string): boolean;
|
|
13
|
-
|
|
15
|
+
ngOnChanges(): Promise<void>;
|
|
14
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<BasicConfigurationComponent, never>;
|
|
15
17
|
static ɵcmp: i0.ɵɵComponentDeclaration<BasicConfigurationComponent, "c8y-basic-configuration", never, { "templateModel": { "alias": "templateModel"; "required": false; }; }, {}, never, never, false, never>;
|
|
16
18
|
}
|
package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-configuration.component.d.ts","sourceRoot":"","sources":["../../../../auth-configuration/sso-configuration/template-parts/basic-configuration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,
|
|
1
|
+
{"version":3,"file":"basic-configuration.component.d.ts","sourceRoot":"","sources":["../../../../auth-configuration/sso-configuration/template-parts/basic-configuration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;;AAG5C,qBAKa,2BAA4B,YAAW,SAAS;IAU/C,OAAO,CAAC,aAAa;IATxB,aAAa,MAAC;IAEvB,kDAAkD,8JAEhD;IAEF,+BAA+B,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,kBAAkB,UAAS;gBAEP,aAAa,EAAE,aAAa;IAGhD,UAAU,CAAC,KAAK,EAAE,MAAM;IAIlB,WAAW;yCAjBN,2BAA2B;2CAA3B,2BAA2B;CA0BvC"}
|
|
@@ -41,7 +41,9 @@ export declare class LoginComponent implements OnInit, OnDestroy {
|
|
|
41
41
|
reset(): void;
|
|
42
42
|
private loginAutomatically;
|
|
43
43
|
private setView;
|
|
44
|
-
private
|
|
44
|
+
private getParamAndClear;
|
|
45
|
+
private getSsoData;
|
|
46
|
+
private handleSso;
|
|
45
47
|
static ɵfac: i0.ɵɵFactoryDeclaration<LoginComponent, never>;
|
|
46
48
|
static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "c8y-login", never, { "name": { "alias": "name"; "required": false; }; }, {}, never, never, false, never>;
|
|
47
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.component.d.ts","sourceRoot":"","sources":["../../../core/login/login.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;;AAE7D,qBAKa,cAAe,YAAW,MAAM,EAAE,SAAS;IAiB7C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,iCAAiC;IAClC,EAAE,EAAE,eAAe;IApB5B,WAAW,EAAE,UAAU,CAAmB;IAC1C,WAAW,oBAAc;IAEzB,QAAQ,UAAS;IAER,IAAI,EAAE,MAAM,CAAC;IAEtB,WAAW,EAAE,YAAY,CAAM;IAC/B,eAAe,EAAE,0BAA0B,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAC1E,aAAa,UAAS;IACtB,OAAO,CAAC,WAAW,CAAW;IAE9B;;OAEG;gBAEM,YAAY,EAAE,YAAY,EACzB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,iCAAiC,EAAE,iCAAiC,EACrE,EAAE,EAAE,eAAe;IAG5B,QAAQ;
|
|
1
|
+
{"version":3,"file":"login.component.d.ts","sourceRoot":"","sources":["../../../core/login/login.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAyB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;;AAE7D,qBAKa,cAAe,YAAW,MAAM,EAAE,SAAS;IAiB7C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,iCAAiC;IAClC,EAAE,EAAE,eAAe;IApB5B,WAAW,EAAE,UAAU,CAAmB;IAC1C,WAAW,oBAAc;IAEzB,QAAQ,UAAS;IAER,IAAI,EAAE,MAAM,CAAC;IAEtB,WAAW,EAAE,YAAY,CAAM;IAC/B,eAAe,EAAE,0BAA0B,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAC1E,aAAa,UAAS;IACtB,OAAO,CAAC,WAAW,CAAW;IAE9B;;OAEG;gBAEM,YAAY,EAAE,YAAY,EACzB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,EACnB,iCAAiC,EAAE,iCAAiC,EACrE,EAAE,EAAE,eAAe;IAG5B,QAAQ;IAgBR,WAAW,IAAI,IAAI;IAKnB,mBAAmB,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,eAAe,CAAC,EAAE,0BAA0B,GAAG;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACvE;IAMkC,OAAO,CAAC,KAAK,EAAE,aAAa;IAM/D,KAAK;YAMS,kBAAkB;IAuBhC,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,SAAS;yCA1HN,cAAc;2CAAd,cAAc;CAuI1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injector } from '@angular/core';
|
|
2
|
-
import { BasicAuth, CookieAuth, FetchClient, IAuthentication, ICredentials, ITenantLoginOption, Realtime, TenantLoginOptionsService, TenantService, UserService } from '@c8y/client';
|
|
2
|
+
import { BasicAuth, CookieAuth, FetchClient, IAuthentication, ICredentials, IFetchResponse, ITenantLoginOption, Realtime, TenantLoginOptionsService, TenantService, UserService } from '@c8y/client';
|
|
3
3
|
import { AppStateService } from '../common/ui-state.service';
|
|
4
4
|
import { AlertService } from '../alert/alert.service';
|
|
5
5
|
import { ApiService } from '@c8y/ngx-components/api';
|
|
@@ -7,6 +7,7 @@ import { TenantUiService } from '../common/tenant-ui.service';
|
|
|
7
7
|
import { BehaviorSubject } from 'rxjs';
|
|
8
8
|
import { LocationStrategy } from '@angular/common';
|
|
9
9
|
import { TranslateService } from '@ngx-translate/core';
|
|
10
|
+
import { ModalService } from '../modal/modal.service';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
/**
|
|
12
13
|
* Service to manage the login.
|
|
@@ -25,6 +26,7 @@ export declare class LoginService {
|
|
|
25
26
|
private tenantUiService;
|
|
26
27
|
private tenantLoginOptionsService;
|
|
27
28
|
private translateService;
|
|
29
|
+
private modalService;
|
|
28
30
|
private location;
|
|
29
31
|
rememberMe: boolean;
|
|
30
32
|
TOKEN_KEY: string;
|
|
@@ -57,7 +59,7 @@ export declare class LoginService {
|
|
|
57
59
|
private localhostRegExp;
|
|
58
60
|
private localhostIpRegExp;
|
|
59
61
|
private showTenantRegExp;
|
|
60
|
-
constructor(injector: Injector, client: FetchClient, basicAuth: BasicAuth, cookieAuth: CookieAuth, ui: AppStateService, user: UserService, tenant: TenantService, realtime: Realtime, alert: AlertService, api: ApiService, tenantUiService: TenantUiService, tenantLoginOptionsService: TenantLoginOptionsService, translateService: TranslateService, location: LocationStrategy);
|
|
62
|
+
constructor(injector: Injector, client: FetchClient, basicAuth: BasicAuth, cookieAuth: CookieAuth, ui: AppStateService, user: UserService, tenant: TenantService, realtime: Realtime, alert: AlertService, api: ApiService, tenantUiService: TenantUiService, tenantLoginOptionsService: TenantLoginOptionsService, translateService: TranslateService, modalService: ModalService, location: LocationStrategy);
|
|
61
63
|
/**
|
|
62
64
|
* Returns the current tenant.
|
|
63
65
|
* @return The tenant name.
|
|
@@ -65,6 +67,7 @@ export declare class LoginService {
|
|
|
65
67
|
getTenant(): string;
|
|
66
68
|
initLoginOptions(): void;
|
|
67
69
|
redirectToOauth(): void;
|
|
70
|
+
loginBySso(sessionState: string, code: string): Promise<void>;
|
|
68
71
|
autoLogout(): void;
|
|
69
72
|
/**
|
|
70
73
|
* Gets the minimal number of characters that a password should have to be considered a “green” strong one.
|
|
@@ -139,7 +142,7 @@ export declare class LoginService {
|
|
|
139
142
|
* @param credentials The credentials for that login
|
|
140
143
|
*/
|
|
141
144
|
switchLoginMode(credentials?: ICredentials): Promise<boolean>;
|
|
142
|
-
generateOauthToken(credentials?: ICredentials): Promise<
|
|
145
|
+
generateOauthToken(credentials?: ICredentials): Promise<IFetchResponse>;
|
|
143
146
|
isPasswordGrantLogin(credentials?: ICredentials): Promise<boolean>;
|
|
144
147
|
/**
|
|
145
148
|
* Verifies if the provided credentials use a support user to log in or not.
|
|
@@ -167,7 +170,7 @@ export declare class LoginService {
|
|
|
167
170
|
/**
|
|
168
171
|
* Resets the stored auth-data
|
|
169
172
|
*/
|
|
170
|
-
reset(): Promise<[void,
|
|
173
|
+
reset(): Promise<[void, IFetchResponse]>;
|
|
171
174
|
/**
|
|
172
175
|
* Saves the TFA token to local or session storage.
|
|
173
176
|
* @param tfaToken The tfa token to save.
|
|
@@ -180,6 +183,7 @@ export declare class LoginService {
|
|
|
180
183
|
*/
|
|
181
184
|
verifyAppAccess(): Promise<void>;
|
|
182
185
|
redirectToDomain(domain: any): void;
|
|
186
|
+
showSsoError(error: any): void;
|
|
183
187
|
/**
|
|
184
188
|
* Sets the tenant to the client and updates the credentials on the
|
|
185
189
|
* auth strategy.
|
|
@@ -234,7 +238,8 @@ export declare class LoginService {
|
|
|
234
238
|
private decodeToken;
|
|
235
239
|
private getUrlForOauth;
|
|
236
240
|
private getManagementLoginMode;
|
|
237
|
-
|
|
241
|
+
private handleErrorStatusCodes;
|
|
242
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LoginService, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
|
|
238
243
|
static ɵprov: i0.ɵɵInjectableDeclaration<LoginService>;
|
|
239
244
|
}
|
|
240
245
|
//# sourceMappingURL=login.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.service.d.ts","sourceRoot":"","sources":["../../../core/login/login.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwB,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,yBAAyB,EACzB,aAAa,EACb,WAAW,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAS,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;;
|
|
1
|
+
{"version":3,"file":"login.service.d.ts","sourceRoot":"","sources":["../../../core/login/login.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { BsModalRef } from 'ngx-bootstrap/modal';
|
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
import { StatusType } from '../common/status.model';
|
|
5
5
|
import { ModalLabels } from '../select-modal/select-modal.model';
|
|
6
|
+
import { SafeHtml } from '@angular/platform-browser';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
/**
|
|
8
9
|
* Labels to be used in the selection modal.
|
|
@@ -36,7 +37,7 @@ export declare class ConfirmModalComponent implements OnDestroy {
|
|
|
36
37
|
dismiss: () => void;
|
|
37
38
|
close: () => void;
|
|
38
39
|
title: string;
|
|
39
|
-
body: string;
|
|
40
|
+
body: string | SafeHtml;
|
|
40
41
|
confirmOptions: ConfirmOptions;
|
|
41
42
|
status: StatusType;
|
|
42
43
|
set labels(labels: ModalLabels);
|
|
@@ -46,6 +47,7 @@ export declare class ConfirmModalComponent implements OnDestroy {
|
|
|
46
47
|
get classIcon(): string;
|
|
47
48
|
get classAlert(): string;
|
|
48
49
|
ngOnDestroy(): void;
|
|
50
|
+
isHtml(str: string | SafeHtml): boolean;
|
|
49
51
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmModalComponent, never>;
|
|
50
52
|
static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmModalComponent, "c8y-confirm-modal", never, { "title": { "alias": "title"; "required": false; }; "body": { "alias": "body"; "required": false; }; "confirmOptions": { "alias": "confirmOptions"; "required": false; }; "status": { "alias": "status"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-confirm.component.d.ts","sourceRoot":"","sources":["../../../core/modal/modal-confirm.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAoC,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;;
|
|
1
|
+
{"version":3,"file":"modal-confirm.component.d.ts","sourceRoot":"","sources":["../../../core/modal/modal-confirm.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAoC,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;;AAErD;;;GAGG;AAEH,MAAM,WAAW,OAAQ,SAAQ,WAAW;CAAG;AAE/C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAIa,qBAAsB,YAAW,SAAS;IAkBzC,OAAO,CAAC,KAAK;IAjBzB,MAAM,EAAE,OAAO,CAAC,OAAO,GAAG;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC9F,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAe;IAC1C,IAAa,MAAM,CAAC,MAAM,EAAE,WAAW,EAGtC;IAED,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,OAAO,CAAC,OAAO,CAAc;gBACT,KAAK,EAAE,UAAU;IAwBrC,IAAI,SAAS,WAEZ;IAED,IAAI,UAAU,WAEb;IAED,WAAW;IAIX,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO;yCAtD5B,qBAAqB;2CAArB,qBAAqB;CA0DjC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModalService } from '@c8y/ngx-components';
|
|
1
|
+
import { DocsService, ModalService } from '@c8y/ngx-components';
|
|
2
2
|
import { IApplication, TenantService } from '@c8y/client';
|
|
3
3
|
import { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -6,9 +6,11 @@ export declare class AddMicroserviceComponent {
|
|
|
6
6
|
private ecosystemService;
|
|
7
7
|
private modal;
|
|
8
8
|
private tenantService;
|
|
9
|
+
private docs;
|
|
10
|
+
readonly slaHref: any;
|
|
9
11
|
headerText: string;
|
|
10
12
|
successText: string;
|
|
11
|
-
constructor(ecosystemService: EcosystemService, modal: ModalService, tenantService: TenantService);
|
|
13
|
+
constructor(ecosystemService: EcosystemService, modal: ModalService, tenantService: TenantService, docs: DocsService);
|
|
12
14
|
createMicroserviceApplicationHandler: (f: File) => Promise<IApplication>;
|
|
13
15
|
uploadMicroserviceHandler: (f: File, app: IApplication) => Promise<void>;
|
|
14
16
|
createMicroserviceApplication(file: File): Promise<IApplication>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-microservice.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/microservices/add-microservice.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,YAAY,EAAU,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"add-microservice.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/microservices/add-microservice.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAW,YAAY,EAAU,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAmB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAc,MAAM,sCAAsC,CAAC;;AAEpF,qBAiBa,wBAAwB;IAMjC,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,IAAI;IARd,QAAQ,CAAC,OAAO,MAAyE;IACzF,UAAU,EAAE,MAAM,CAA+B;IACjD,WAAW,EAAE,MAAM,CAAmC;gBAG5C,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,WAAW;IAG3B,oCAAoC,MAAO,IAAI,2BAA2C;IAC1F,yBAAyB,MAAO,IAAI,OAAO,YAAY,mBAAqC;IAEtF,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhE,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAMjE,gCAAgC;YAgBhC,qBAAqB;yCA1CxB,wBAAwB;2CAAxB,wBAAwB;CA8DpC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Component, EventEmitter } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, ViewChild } from '@angular/core';
|
|
2
2
|
import { ApplicationService, UserGroupService, TenantLoginOptionType, InventoryRoleService } from '@c8y/client';
|
|
3
3
|
import { gettext, AlertService, ModalService, Status, LoginService, AppStateService, TenantUiService } from '@c8y/ngx-components';
|
|
4
4
|
import { BehaviorSubject, forkJoin, Subject } from 'rxjs';
|
|
5
5
|
import { shareReplay, tap, switchMap } from 'rxjs/operators';
|
|
6
6
|
import { TemplateType, templateTypeConfig } from './sso-configuration.model';
|
|
7
7
|
import { SsoConfigurationService } from './sso-configuration.service';
|
|
8
|
+
import { NgForm } from '@angular/forms';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "./sso-configuration.service";
|
|
10
11
|
import * as i2 from "@c8y/client";
|
|
@@ -51,6 +52,7 @@ export class SsoConfigurationComponent {
|
|
|
51
52
|
}
|
|
52
53
|
loadSsoConfiguration() {
|
|
53
54
|
this.reload.next();
|
|
55
|
+
this.ssoConfigurationForm.form.markAsPristine();
|
|
54
56
|
}
|
|
55
57
|
async save(ssoConfiguration) {
|
|
56
58
|
try {
|
|
@@ -72,6 +74,9 @@ export class SsoConfigurationComponent {
|
|
|
72
74
|
if (ex) {
|
|
73
75
|
this.alertService.addServerFailure(ex);
|
|
74
76
|
}
|
|
77
|
+
else {
|
|
78
|
+
this.loadSsoConfiguration();
|
|
79
|
+
}
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
getApplications() {
|
|
@@ -89,10 +94,13 @@ export class SsoConfigurationComponent {
|
|
|
89
94
|
return await this.modalService.confirm(gettext('Force users to log out'), modalBody, Status.WARNING, modalLabels);
|
|
90
95
|
}
|
|
91
96
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: SsoConfigurationComponent, deps: [{ token: i1.SsoConfigurationService }, { token: i2.ApplicationService }, { token: i2.UserGroupService }, { token: i2.InventoryRoleService }, { token: i3.AlertService }, { token: i3.ModalService }, { token: i3.LoginService }, { token: i3.AppStateService }, { token: i3.TenantUiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: SsoConfigurationComponent, selector: "c8y-sso-configuration", ngImport: i0, template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Single sign-on' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadSsoConfiguration()
|
|
97
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: SsoConfigurationComponent, selector: "c8y-sso-configuration", viewQueries: [{ propertyName: "ssoConfigurationForm", first: true, predicate: ["ssoConfigurationForm"], descendants: true }], ngImport: i0, template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Single sign-on' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <div\n class=\"form-group\"\n title=\"{{ 'Template' | translate }}\"\n >\n <label\n class=\"control-label\"\n for=\"template\"\n >\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"template\"\n name=\"template\"\n *ngIf=\"ssoConfiguration\"\n [(ngModel)]=\"ssoConfiguration.template\"\n >\n <option\n *ngFor=\"let templateType of templateTypeConfig | keyvalue\"\n [ngValue]=\"templateType.key\"\n >\n {{ templateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form\n class=\"card card--fullpage\"\n #ssoConfigurationForm=\"ngForm\"\n novalidate\n >\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Single sign-on' | translate }}\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block p-0\"\n *ngIf=\"ssoConfiguration\"\n >\n <c8y-custom-template\n *ngIf=\"ssoConfiguration.template === templateType.CUSTOM\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-custom-template>\n\n <c8y-aad-template\n *ngIf=\"ssoConfiguration.template === templateType.AZURE\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-aad-template>\n\n <c8y-key-cloak-template\n *ngIf=\"ssoConfiguration.template === templateType.KEYCLOAK\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"saveSubject.next()\"\n [disabled]=\"!ssoConfigurationForm.form.valid || ssoConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: i3.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i3.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.CustomTemplateComponent, selector: "c8y-custom-template" }, { kind: "component", type: i7.KeyCloakTemplateComponent, selector: "c8y-key-cloak-template" }, { kind: "component", type: i8.AadTemplateComponent, selector: "c8y-aad-template" }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }] }); }
|
|
93
98
|
}
|
|
94
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: SsoConfigurationComponent, decorators: [{
|
|
95
100
|
type: Component,
|
|
96
|
-
args: [{ selector: 'c8y-sso-configuration', template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Single sign-on' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadSsoConfiguration()
|
|
97
|
-
}], ctorParameters: () => [{ type: i1.SsoConfigurationService }, { type: i2.ApplicationService }, { type: i2.UserGroupService }, { type: i2.InventoryRoleService }, { type: i3.AlertService }, { type: i3.ModalService }, { type: i3.LoginService }, { type: i3.AppStateService }, { type: i3.TenantUiService }]
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NvLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUdoQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBRXJCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUNaLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWdCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQW9CLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0FBTXRFLE1BQU0sT0FBTyx5QkFBeUI7SUE2QnBDLFlBQ1UsdUJBQWdELEVBQ2hELGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsb0JBQTBDLEVBQzFDLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLGVBQWdDO1FBUmhDLDRCQUF1QixHQUF2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LENBQUMseUJBQXlCO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzRixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQ3ZCLGtJQUFrSSxDQUNuSSxDQUFDO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUNwQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFDakMsU0FBUyxFQUNULE1BQU0sQ0FBQyxPQUFPLEVBQ2QsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDOzhHQW5IVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw2REM1QnRDLGt1SEE0SEE7OzJGRGhHYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0UsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25TZXJ2aWNlLFxuICBVc2VyR3JvdXBTZXJ2aWNlLFxuICBJQXBwbGljYXRpb24sXG4gIElVc2VyR3JvdXAsXG4gIFRlbmFudExvZ2luT3B0aW9uVHlwZSxcbiAgSW52ZW50b3J5Um9sZVNlcnZpY2UsXG4gIElJZGVudGlmaWVkXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIGdldHRleHQsXG4gIEFsZXJ0U2VydmljZSxcbiAgTW9kYWxTZXJ2aWNlLFxuICBTdGF0dXMsXG4gIExvZ2luU2VydmljZSxcbiAgQXBwU3RhdGVTZXJ2aWNlLFxuICBUZW5hbnRVaVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBTdWJzY3JpcHRpb24sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5LCB0YXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNzb0NvbmZpZ3VyYXRpb24sIFRlbXBsYXRlVHlwZSwgdGVtcGxhdGVUeXBlQ29uZmlnIH0gZnJvbSAnLi9zc28tY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBTc29Db25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc3NvLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zc28tY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zc28tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3NvQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGFwcHM6IElBcHBsaWNhdGlvbltdO1xuICBncm91cHM6IElVc2VyR3JvdXBbXTtcbiAgaW52ZW50b3J5Um9sZXM6IElJZGVudGlmaWVkW107XG4gIHNzb0NvbmZpZ3VyYXRpb246IFNzb0NvbmZpZ3VyYXRpb247XG5cbiAgdGVtcGxhdGVUeXBlID0gVGVtcGxhdGVUeXBlO1xuICB0ZW1wbGF0ZVR5cGVDb25maWcgPSB0ZW1wbGF0ZVR5cGVDb25maWc7XG5cbiAgcmVsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHJlbG9hZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzYXZlU3ViamVjdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBkYXRhJDogYW55ID0gdGhpcy5yZWxvYWQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRpbmckLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgZm9ya0pvaW4oe1xuICAgICAgICBzc29Db25maWd1cmF0aW9uOiB0aGlzLnNzb0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFNzb0NvbmZpZ3VyYXRpb24kKCksXG4gICAgICAgIGFwcHM6IHRoaXMuZ2V0QXBwbGljYXRpb25zKCksXG4gICAgICAgIGdyb3VwczogdGhpcy5nZXRHcm91cHMoKSxcbiAgICAgICAgaW52ZW50b3J5Um9sZXM6IHRoaXMuZ2V0SW52ZW50b3J5Um9sZXMoKVxuICAgICAgfSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB0aGlzLnJlbG9hZGluZyQubmV4dChmYWxzZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzc29Db25maWd1cmF0aW9uU2VydmljZTogU3NvQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlSb2xlU2VydmljZTogSW52ZW50b3J5Um9sZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGEkLnN1YnNjcmliZShcbiAgICAgICh7IHNzb0NvbmZpZ3VyYXRpb24sIGFwcHMsIGdyb3VwcywgaW52ZW50b3J5Um9sZXMgfSkgPT4ge1xuICAgICAgICB0aGlzLmFwcHMgPSBhcHBzO1xuICAgICAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgdGhpcy5pbnZlbnRvcnlSb2xlcyA9IGludmVudG9yeVJvbGVzO1xuICAgICAgICB0aGlzLnNzb0NvbmZpZ3VyYXRpb24gPSBzc29Db25maWd1cmF0aW9uO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5sb2FkU3NvQ29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkU3NvQ29uZmlndXJhdGlvbigpIHtcbiAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBzYXZlKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy53YXJuQWJvdXRGb3JjZVVzZXJzTG9nT3V0KCk7XG4gICAgICBjb25zdCBsb2dvdXRSZXF1aXJlZCA9XG4gICAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldEN1cnJlbnRVc2VyTG9naW5Nb2RlKCkgIT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQztcbiAgICAgIGlmIChsb2dvdXRSZXF1aXJlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtTG9nb3V0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNzb0NvbmZpZ3VyYXRpb25TZXJ2aWNlLnNhdmUoc3NvQ29uZmlndXJhdGlvbik7XG4gICAgICBpZiAobG9nb3V0UmVxdWlyZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9nb3V0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkU3NvQ29uZmlndXJhdGlvbigpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcHBsaWNhdGlvbnMoKTogUHJvbWlzZTx2b2lkIHwgSUFwcGxpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiAxMDAgfSkudGhlbihcbiAgICAgIHJlcyA9PiByZXMuZGF0YSxcbiAgICAgIGVycm9yID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JvdXBzKCk6IFByb21pc2U8dm9pZCB8IElVc2VyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJHcm91cFNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiAxMDAgfSkudGhlbihcbiAgICAgIHJlcyA9PiByZXMuZGF0YSxcbiAgICAgIGVycm9yID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW52ZW50b3J5Um9sZXMoKTogUHJvbWlzZTx2b2lkIHwgSUlkZW50aWZpZWRbXT4ge1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVJvbGVTZXJ2aWNlLmxpc3QoeyBwYWdlU2l6ZTogMTAwIH0pLnRoZW4oXG4gICAgICByZXMgPT4gcmVzLmRhdGEsXG4gICAgICBlcnJvciA9PiB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhcm5BYm91dEZvcmNlVXNlcnNMb2dPdXQoKSB7XG4gICAgY29uc3QgbW9kYWxMYWJlbHMgPSB7IG9rOiBnZXR0ZXh0KCdVcGRhdGUgYW5kIGxvZyBvdXQgdXNlcnMnKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9O1xuICAgIGNvbnN0IG1vZGFsQm9keSA9IGdldHRleHQoXG4gICAgICAnVXBkYXRpbmcgU1NPIGNvbmZpZ3VyYXRpb24gd2lsbCBsb2cgb3V0IGFsbCB1c2VycyBsb2dnZWQgd2l0aCBcIk9BSS1TZWN1cmVcIiBvciBcIlNpbmdsZSBzaWduLW9uIHJlZGlyZWN0XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICBnZXR0ZXh0KCdGb3JjZSB1c2VycyB0byBsb2cgb3V0JyksXG4gICAgICBtb2RhbEJvZHksXG4gICAgICBTdGF0dXMuV0FSTklORyxcbiAgICAgIG1vZGFsTGFiZWxzXG4gICAgKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnU2luZ2xlIHNpZ24tb24nIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICAgIFtsYWJlbF09XCInU2V0dGluZ3MnIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInY29nJ1wiXG4gICAgW2xhYmVsXT1cIidTaW5nbGUgc2lnbi1vbicgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImxvYWRTc29Db25maWd1cmF0aW9uKCk7IHNzb0NvbmZpZ3VyYXRpb25Gb3JtLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKVwiXG4gID5cbiAgICA8aVxuICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogcmVsb2FkaW5nJCB8IGFzeW5jIH1cIlxuICAgID48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ2xlZnQnXCJcbiAgaXRlbUNsYXNzPVwibmF2YmFyLWZvcm0gaGlkZGVuLXhzXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXG4gICAgdGl0bGU9XCJ7eyAnVGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgIGZvcj1cInRlbXBsYXRlXCJcbiAgICA+XG4gICAgICB7eyAnVGVtcGxhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgaWQ9XCJ0ZW1wbGF0ZVwiXG4gICAgICAgIG5hbWU9XCJ0ZW1wbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwic3NvQ29uZmlndXJhdGlvblwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic3NvQ29uZmlndXJhdGlvbi50ZW1wbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGVtcGxhdGVUeXBlIG9mIHRlbXBsYXRlVHlwZUNvbmZpZyB8IGtleXZhbHVlXCJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJ0ZW1wbGF0ZVR5cGUua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRlbXBsYXRlVHlwZS52YWx1ZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPHNwYW4+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1sZy1tYXhcIj5cbiAgICA8Zm9ybVxuICAgICAgY2xhc3M9XCJjYXJkIGNhcmQtLWZ1bGxwYWdlXCJcbiAgICAgICNzc29Db25maWd1cmF0aW9uRm9ybT1cIm5nRm9ybVwiXG4gICAgICBub3ZhbGlkYXRlXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAgICAgIHt7ICdTaW5nbGUgc2lnbi1vbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtMFwiXG4gICAgICAgICAgKm5nSWY9XCJzc29Db25maWd1cmF0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktY3VzdG9tLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cInNzb0NvbmZpZ3VyYXRpb24udGVtcGxhdGUgPT09IHRlbXBsYXRlVHlwZS5DVVNUT01cIlxuICAgICAgICAgICAgW3Nzb0NvbmZpZ3VyYXRpb25dPVwic3NvQ29uZmlndXJhdGlvblwiXG4gICAgICAgICAgICBbc3NvQ29uZmlndXJhdGlvbkNoYW5nZVRyaWdnZXJdPVwic2F2ZVN1YmplY3QuYXNPYnNlcnZhYmxlKClcIlxuICAgICAgICAgICAgKHNzb0NvbmZpZ3VyYXRpb25DaGFuZ2UpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthcHBzXT1cImFwcHNcIlxuICAgICAgICAgICAgW2dyb3Vwc109XCJncm91cHNcIlxuICAgICAgICAgICAgW2ludmVudG9yeVJvbGVzXT1cImludmVudG9yeVJvbGVzXCJcbiAgICAgICAgICA+PC9jOHktY3VzdG9tLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPGM4eS1hYWQtdGVtcGxhdGVcbiAgICAgICAgICAgICpuZ0lmPVwic3NvQ29uZmlndXJhdGlvbi50ZW1wbGF0ZSA9PT0gdGVtcGxhdGVUeXBlLkFaVVJFXCJcbiAgICAgICAgICAgIFtzc29Db25maWd1cmF0aW9uXT1cInNzb0NvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgW3Nzb0NvbmZpZ3VyYXRpb25DaGFuZ2VUcmlnZ2VyXT1cInNhdmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXCJcbiAgICAgICAgICAgIChzc29Db25maWd1cmF0aW9uQ2hhbmdlKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXBwc109XCJhcHBzXCJcbiAgICAgICAgICAgIFtncm91cHNdPVwiZ3JvdXBzXCJcbiAgICAgICAgICAgIFtpbnZlbnRvcnlSb2xlc109XCJpbnZlbnRvcnlSb2xlc1wiXG4gICAgICAgICAgPjwvYzh5LWFhZC10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxjOHkta2V5LWNsb2FrLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cInNzb0NvbmZpZ3VyYXRpb24udGVtcGxhdGUgPT09IHRlbXBsYXRlVHlwZS5LRVlDTE9BS1wiXG4gICAgICAgICAgICBbc3NvQ29uZmlndXJhdGlvbl09XCJzc29Db25maWd1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzc29Db25maWd1cmF0aW9uQ2hhbmdlVHJpZ2dlcl09XCJzYXZlU3ViamVjdC5hc09ic2VydmFibGUoKVwiXG4gICAgICAgICAgICAoc3NvQ29uZmlndXJhdGlvbkNoYW5nZSk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAgICAgW2FwcHNdPVwiYXBwc1wiXG4gICAgICAgICAgICBbZ3JvdXBzXT1cImdyb3Vwc1wiXG4gICAgICAgICAgICBbaW52ZW50b3J5Um9sZXNdPVwiaW52ZW50b3J5Um9sZXNcIlxuICAgICAgICAgID48L2M4eS1rZXktY2xvYWstdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIChjbGljayk9XCJzYXZlU3ViamVjdC5uZXh0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3NvQ29uZmlndXJhdGlvbkZvcm0uZm9ybS52YWxpZCB8fCBzc29Db25maWd1cmF0aW9uRm9ybS5mb3JtLnByaXN0aW5lXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
101
|
+
args: [{ selector: 'c8y-sso-configuration', template: "<c8y-title>{{ 'Single sign-on' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Settings' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'cog'\"\n [label]=\"'Single sign-on' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n type=\"button\"\n (click)=\"loadSsoConfiguration()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"navbar-form hidden-xs\"\n>\n <div\n class=\"form-group\"\n title=\"{{ 'Template' | translate }}\"\n >\n <label\n class=\"control-label\"\n for=\"template\"\n >\n {{ 'Template' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"template\"\n name=\"template\"\n *ngIf=\"ssoConfiguration\"\n [(ngModel)]=\"ssoConfiguration.template\"\n >\n <option\n *ngFor=\"let templateType of templateTypeConfig | keyvalue\"\n [ngValue]=\"templateType.key\"\n >\n {{ templateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</c8y-action-bar-item>\n\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form\n class=\"card card--fullpage\"\n #ssoConfigurationForm=\"ngForm\"\n novalidate\n >\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Single sign-on' | translate }}\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block p-0\"\n *ngIf=\"ssoConfiguration\"\n >\n <c8y-custom-template\n *ngIf=\"ssoConfiguration.template === templateType.CUSTOM\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-custom-template>\n\n <c8y-aad-template\n *ngIf=\"ssoConfiguration.template === templateType.AZURE\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-aad-template>\n\n <c8y-key-cloak-template\n *ngIf=\"ssoConfiguration.template === templateType.KEYCLOAK\"\n [ssoConfiguration]=\"ssoConfiguration\"\n [ssoConfigurationChangeTrigger]=\"saveSubject.asObservable()\"\n (ssoConfigurationChange)=\"save($event)\"\n [apps]=\"apps\"\n [groups]=\"groups\"\n [inventoryRoles]=\"inventoryRoles\"\n ></c8y-key-cloak-template>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"saveSubject.next()\"\n [disabled]=\"!ssoConfigurationForm.form.valid || ssoConfigurationForm.form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
|
|
102
|
+
}], ctorParameters: () => [{ type: i1.SsoConfigurationService }, { type: i2.ApplicationService }, { type: i2.UserGroupService }, { type: i2.InventoryRoleService }, { type: i3.AlertService }, { type: i3.ModalService }, { type: i3.LoginService }, { type: i3.AppStateService }, { type: i3.TenantUiService }], propDecorators: { ssoConfigurationForm: [{
|
|
103
|
+
type: ViewChild,
|
|
104
|
+
args: ['ssoConfigurationForm']
|
|
105
|
+
}] } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NvLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFHaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUVyQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixlQUFlLEVBQ2YsZUFBZSxFQUNoQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFnQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFvQixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFNeEMsTUFBTSxPQUFPLHlCQUF5QjtJQStCcEMsWUFDVSx1QkFBZ0QsRUFDaEQsa0JBQXNDLEVBQ3RDLGdCQUFrQyxFQUNsQyxvQkFBMEMsRUFDMUMsWUFBMEIsRUFDMUIsWUFBMEIs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QUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQ2YsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUNuRCxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUI7UUFDckMsTUFBTSxXQUFXLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNGLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FDdkIsa0lBQWtJLENBQ25JLENBQUM7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3BDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqQyxTQUFTLEVBQ1QsTUFBTSxDQUFDLE9BQU8sRUFDZCxXQUFXLENBQ1osQ0FBQztJQUNKLENBQUM7OEdBeEhVLHlCQUF5QjtrR0FBekIseUJBQXlCLDJMQzdCdEMsbXJIQTRIQTs7MkZEL0ZhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUI7NFVBZ0JFLG9CQUFvQjtzQkFBdEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uU2VydmljZSxcbiAgVXNlckdyb3VwU2VydmljZSxcbiAgSUFwcGxpY2F0aW9uLFxuICBJVXNlckdyb3VwLFxuICBUZW5hbnRMb2dpbk9wdGlvblR5cGUsXG4gIEludmVudG9yeVJvbGVTZXJ2aWNlLFxuICBJSWRlbnRpZmllZFxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBnZXR0ZXh0LFxuICBBbGVydFNlcnZpY2UsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBMb2dpblNlcnZpY2UsXG4gIEFwcFN0YXRlU2VydmljZSxcbiAgVGVuYW50VWlTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgdGFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTc29Db25maWd1cmF0aW9uLCBUZW1wbGF0ZVR5cGUsIHRlbXBsYXRlVHlwZUNvbmZpZyB9IGZyb20gJy4vc3NvLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgU3NvQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL3Nzby1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3NvLWNvbmZpZ3VyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc3NvLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNzb0NvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhcHBzOiBJQXBwbGljYXRpb25bXTtcbiAgZ3JvdXBzOiBJVXNlckdyb3VwW107XG4gIGludmVudG9yeVJvbGVzOiBJSWRlbnRpZmllZFtdO1xuICBzc29Db25maWd1cmF0aW9uOiBTc29Db25maWd1cmF0aW9uO1xuXG4gIHRlbXBsYXRlVHlwZSA9IFRlbXBsYXRlVHlwZTtcbiAgdGVtcGxhdGVUeXBlQ29uZmlnID0gdGVtcGxhdGVUeXBlQ29uZmlnO1xuXG4gIHJlbG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICByZWxvYWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgc2F2ZVN1YmplY3Q6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Nzb0NvbmZpZ3VyYXRpb25Gb3JtJykgc3NvQ29uZmlndXJhdGlvbkZvcm0hOiBOZ0Zvcm07XG5cbiAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBkYXRhJDogYW55ID0gdGhpcy5yZWxvYWQucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRpbmckLm5leHQodHJ1ZSkpLFxuICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgZm9ya0pvaW4oe1xuICAgICAgICBzc29Db25maWd1cmF0aW9uOiB0aGlzLnNzb0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldFNzb0NvbmZpZ3VyYXRpb24kKCksXG4gICAgICAgIGFwcHM6IHRoaXMuZ2V0QXBwbGljYXRpb25zKCksXG4gICAgICAgIGdyb3VwczogdGhpcy5nZXRHcm91cHMoKSxcbiAgICAgICAgaW52ZW50b3J5Um9sZXM6IHRoaXMuZ2V0SW52ZW50b3J5Um9sZXMoKVxuICAgICAgfSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB0aGlzLnJlbG9hZGluZyQubmV4dChmYWxzZSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzc29Db25maWd1cmF0aW9uU2VydmljZTogU3NvQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJHcm91cFNlcnZpY2U6IFVzZXJHcm91cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlSb2xlU2VydmljZTogSW52ZW50b3J5Um9sZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGEkLnN1YnNjcmliZShcbiAgICAgICh7IHNzb0NvbmZpZ3VyYXRpb24sIGFwcHMsIGdyb3VwcywgaW52ZW50b3J5Um9sZXMgfSkgPT4ge1xuICAgICAgICB0aGlzLmFwcHMgPSBhcHBzO1xuICAgICAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgdGhpcy5pbnZlbnRvcnlSb2xlcyA9IGludmVudG9yeVJvbGVzO1xuICAgICAgICB0aGlzLnNzb0NvbmZpZ3VyYXRpb24gPSBzc29Db25maWd1cmF0aW9uO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5sb2FkU3NvQ29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkU3NvQ29uZmlndXJhdGlvbigpIHtcbiAgICB0aGlzLnJlbG9hZC5uZXh0KCk7XG4gICAgdGhpcy5zc29Db25maWd1cmF0aW9uRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICBhc3luYyBzYXZlKHNzb0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy53YXJuQWJvdXRGb3JjZVVzZXJzTG9nT3V0KCk7XG4gICAgICBjb25zdCBsb2dvdXRSZXF1aXJlZCA9XG4gICAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmdldEN1cnJlbnRVc2VyTG9naW5Nb2RlKCkgIT09IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQztcbiAgICAgIGlmIChsb2dvdXRSZXF1aXJlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtTG9nb3V0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnNzb0NvbmZpZ3VyYXRpb25TZXJ2aWNlLnNhdmUoc3NvQ29uZmlndXJhdGlvbik7XG4gICAgICBpZiAobG9nb3V0UmVxdWlyZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2dpblNlcnZpY2UubG9nb3V0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkU3NvQ29uZmlndXJhdGlvbigpO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRTc29Db25maWd1cmF0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBcHBsaWNhdGlvbnMoKTogUHJvbWlzZTx2b2lkIHwgSUFwcGxpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWNhdGlvblNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiAxMDAgfSkudGhlbihcbiAgICAgIHJlcyA9PiByZXMuZGF0YSxcbiAgICAgIGVycm9yID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JvdXBzKCk6IFByb21pc2U8dm9pZCB8IElVc2VyR3JvdXBbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJHcm91cFNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiAxMDAgfSkudGhlbihcbiAgICAgIHJlcyA9PiByZXMuZGF0YSxcbiAgICAgIGVycm9yID0+IHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW52ZW50b3J5Um9sZXMoKTogUHJvbWlzZTx2b2lkIHwgSUlkZW50aWZpZWRbXT4ge1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVJvbGVTZXJ2aWNlLmxpc3QoeyBwYWdlU2l6ZTogMTAwIH0pLnRoZW4oXG4gICAgICByZXMgPT4gcmVzLmRhdGEsXG4gICAgICBlcnJvciA9PiB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHdhcm5BYm91dEZvcmNlVXNlcnNMb2dPdXQoKSB7XG4gICAgY29uc3QgbW9kYWxMYWJlbHMgPSB7IG9rOiBnZXR0ZXh0KCdVcGRhdGUgYW5kIGxvZyBvdXQgdXNlcnMnKSwgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9O1xuICAgIGNvbnN0IG1vZGFsQm9keSA9IGdldHRleHQoXG4gICAgICAnVXBkYXRpbmcgU1NPIGNvbmZpZ3VyYXRpb24gd2lsbCBsb2cgb3V0IGFsbCB1c2VycyBsb2dnZWQgd2l0aCBcIk9BSS1TZWN1cmVcIiBvciBcIlNpbmdsZSBzaWduLW9uIHJlZGlyZWN0XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/J1xuICAgICk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubW9kYWxTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICBnZXR0ZXh0KCdGb3JjZSB1c2VycyB0byBsb2cgb3V0JyksXG4gICAgICBtb2RhbEJvZHksXG4gICAgICBTdGF0dXMuV0FSTklORyxcbiAgICAgIG1vZGFsTGFiZWxzXG4gICAgKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnU2luZ2xlIHNpZ24tb24nIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2NvZydcIlxuICAgIFtsYWJlbF09XCInU2V0dGluZ3MnIHwgdHJhbnNsYXRlXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInY29nJ1wiXG4gICAgW2xhYmVsXT1cIidTaW5nbGUgc2lnbi1vbicgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW0gW3BsYWNlbWVudF09XCIncmlnaHQnXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnUmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImxvYWRTc29Db25maWd1cmF0aW9uKClcIlxuICA+XG4gICAgPGlcbiAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IHJlbG9hZGluZyQgfCBhc3luYyB9XCJcbiAgICA+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidsZWZ0J1wiXG4gIGl0ZW1DbGFzcz1cIm5hdmJhci1mb3JtIGhpZGRlbi14c1wiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIHRpdGxlPVwie3sgJ1RlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICBmb3I9XCJ0ZW1wbGF0ZVwiXG4gICAgPlxuICAgICAge3sgJ1RlbXBsYXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIGlkPVwidGVtcGxhdGVcIlxuICAgICAgICBuYW1lPVwidGVtcGxhdGVcIlxuICAgICAgICAqbmdJZj1cInNzb0NvbmZpZ3VyYXRpb25cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNzb0NvbmZpZ3VyYXRpb24udGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRlbXBsYXRlVHlwZSBvZiB0ZW1wbGF0ZVR5cGVDb25maWcgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgW25nVmFsdWVdPVwidGVtcGxhdGVUeXBlLmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0ZW1wbGF0ZVR5cGUudmFsdWUubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtbGctbWF4XCI+XG4gICAgPGZvcm1cbiAgICAgIGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZVwiXG4gICAgICAjc3NvQ29uZmlndXJhdGlvbkZvcm09XCJuZ0Zvcm1cIlxuICAgICAgbm92YWxpZGF0ZVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cbiAgICAgICAgICB7eyAnU2luZ2xlIHNpZ24tb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLTBcIlxuICAgICAgICAgICpuZ0lmPVwic3NvQ29uZmlndXJhdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWN1c3RvbS10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJzc29Db25maWd1cmF0aW9uLnRlbXBsYXRlID09PSB0ZW1wbGF0ZVR5cGUuQ1VTVE9NXCJcbiAgICAgICAgICAgIFtzc29Db25maWd1cmF0aW9uXT1cInNzb0NvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgW3Nzb0NvbmZpZ3VyYXRpb25DaGFuZ2VUcmlnZ2VyXT1cInNhdmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXCJcbiAgICAgICAgICAgIChzc29Db25maWd1cmF0aW9uQ2hhbmdlKT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXBwc109XCJhcHBzXCJcbiAgICAgICAgICAgIFtncm91cHNdPVwiZ3JvdXBzXCJcbiAgICAgICAgICAgIFtpbnZlbnRvcnlSb2xlc109XCJpbnZlbnRvcnlSb2xlc1wiXG4gICAgICAgICAgPjwvYzh5LWN1c3RvbS10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxjOHktYWFkLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cInNzb0NvbmZpZ3VyYXRpb24udGVtcGxhdGUgPT09IHRlbXBsYXRlVHlwZS5BWlVSRVwiXG4gICAgICAgICAgICBbc3NvQ29uZmlndXJhdGlvbl09XCJzc29Db25maWd1cmF0aW9uXCJcbiAgICAgICAgICAgIFtzc29Db25maWd1cmF0aW9uQ2hhbmdlVHJpZ2dlcl09XCJzYXZlU3ViamVjdC5hc09ic2VydmFibGUoKVwiXG4gICAgICAgICAgICAoc3NvQ29uZmlndXJhdGlvbkNoYW5nZSk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAgICAgW2FwcHNdPVwiYXBwc1wiXG4gICAgICAgICAgICBbZ3JvdXBzXT1cImdyb3Vwc1wiXG4gICAgICAgICAgICBbaW52ZW50b3J5Um9sZXNdPVwiaW52ZW50b3J5Um9sZXNcIlxuICAgICAgICAgID48L2M4eS1hYWQtdGVtcGxhdGU+XG5cbiAgICAgICAgICA8Yzh5LWtleS1jbG9hay10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJzc29Db25maWd1cmF0aW9uLnRlbXBsYXRlID09PSB0ZW1wbGF0ZVR5cGUuS0VZQ0xPQUtcIlxuICAgICAgICAgICAgW3Nzb0NvbmZpZ3VyYXRpb25dPVwic3NvQ29uZmlndXJhdGlvblwiXG4gICAgICAgICAgICBbc3NvQ29uZmlndXJhdGlvbkNoYW5nZVRyaWdnZXJdPVwic2F2ZVN1YmplY3QuYXNPYnNlcnZhYmxlKClcIlxuICAgICAgICAgICAgKHNzb0NvbmZpZ3VyYXRpb25DaGFuZ2UpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthcHBzXT1cImFwcHNcIlxuICAgICAgICAgICAgW2dyb3Vwc109XCJncm91cHNcIlxuICAgICAgICAgICAgW2ludmVudG9yeVJvbGVzXT1cImludmVudG9yeVJvbGVzXCJcbiAgICAgICAgICA+PC9jOHkta2V5LWNsb2FrLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAoY2xpY2spPVwic2F2ZVN1YmplY3QubmV4dCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNzb0NvbmZpZ3VyYXRpb25Gb3JtLmZvcm0udmFsaWQgfHwgc3NvQ29uZmlndXJhdGlvbkZvcm0uZm9ybS5wcmlzdGluZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|