@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.
Files changed (41) hide show
  1. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts +2 -0
  2. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts +5 -3
  4. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map +1 -1
  5. package/core/login/login.component.d.ts +3 -1
  6. package/core/login/login.component.d.ts.map +1 -1
  7. package/core/login/login.service.d.ts +10 -5
  8. package/core/login/login.service.d.ts.map +1 -1
  9. package/core/modal/modal-confirm.component.d.ts +3 -1
  10. package/core/modal/modal-confirm.component.d.ts.map +1 -1
  11. package/ecosystem/microservices/add-microservice.component.d.ts +4 -2
  12. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  13. package/esm2022/auth-configuration/sso-configuration/sso-configuration.component.mjs +13 -5
  14. package/esm2022/auth-configuration/sso-configuration/template-parts/basic-configuration.component.mjs +8 -8
  15. package/esm2022/auth-configuration/sso-configuration/templates/aad-configuration-mapper.mjs +2 -2
  16. package/esm2022/auth-configuration/sso-configuration/templates/custom-configuration-mapper.mjs +2 -2
  17. package/esm2022/auth-configuration/sso-configuration/templates/key-cloak-configuration-mapper.mjs +2 -2
  18. package/esm2022/core/login/login.component.mjs +36 -8
  19. package/esm2022/core/login/login.service.mjs +49 -8
  20. package/esm2022/core/modal/modal-confirm.component.mjs +7 -3
  21. package/esm2022/ecosystem/microservices/add-microservice.component.mjs +35 -19
  22. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +20 -13
  23. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components-ecosystem.mjs +33 -17
  25. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  26. package/fesm2022/c8y-ngx-components.mjs +239 -169
  27. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  28. package/locales/de.po +49 -19
  29. package/locales/en.po +7 -4
  30. package/locales/es.po +100 -70
  31. package/locales/fr.po +118 -88
  32. package/locales/ja_JP.po +125 -93
  33. package/locales/ko.po +293 -27
  34. package/locales/locales.pot +21 -0
  35. package/locales/nl.po +90 -60
  36. package/locales/pl.po +86 -56
  37. package/locales/pt_BR.po +261 -231
  38. package/locales/ru.po +0 -15
  39. package/locales/zh_CN.po +288 -22
  40. package/locales/zh_TW.po +290 -24
  41. 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,EAAE,MAAM,eAAe,CAAC;AAChE,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;;AAEtE,qBAIa,yBAA0B,YAAW,MAAM;IA8BpD,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;IArCzB,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;IAE3C,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;IAId,IAAI,CAAC,gBAAgB,KAAA;IAsB3B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,iBAAiB;YAOX,yBAAyB;yCAxG5B,yBAAyB;2CAAzB,yBAAyB;CAoHrC"}
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"}
@@ -1,16 +1,18 @@
1
- import { OnInit } from '@angular/core';
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 OnInit {
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
- ngOnInit(): Promise<void>;
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
  }
@@ -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,MAAM,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;;AAG5C,qBAKa,2BAA4B,YAAW,MAAM;IAK5C,OAAO,CAAC,aAAa;IAJxB,aAAa,MAAC;IAEvB,+BAA+B,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBAE3D,aAAa,EAAE,aAAa;IAGhD,UAAU,CAAC,KAAK,EAAE,MAAM;IAIlB,QAAQ;yCAZH,2BAA2B;2CAA3B,2BAA2B;CAuBvC"}
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 getResetPasswordToken;
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;IAaR,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,qBAAqB;yCAjGlB,cAAc;2CAAd,cAAc;CAwG1B"}
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<import("@c8y/client").IFetchResponse>;
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, import("@c8y/client").IFetchResponse]>;
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
- static ɵfac: i0.ɵɵFactoryDeclaration<LoginService, [null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
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;;AAEvD;;GAEG;AACH,qBACa,YAAY;IAgErB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,gBAAgB;IACZ,OAAO,CAAC,QAAQ;IA5E9B,UAAU,UAAS;IACnB,SAAS,SAAW;IACpB,YAAY,SAAc;IAC1B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,UAAQ;IACpB,wBAAwB,SAAK;IAC7B,yBAAyB,2BAA8B;IAGvD,cAAc;;;;;;;;;;;;;;;;MA6BZ;IAGF,OAAO,CAAC,gBAAgB,CAOtB;IAEF,OAAO,CAAC,uBAAuB,CAI7B;IAEF,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,gBAAgB,CAA4B;gBAG1C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,eAAe,EACnB,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,UAAU,EACf,eAAe,EAAE,eAAe,EAChC,yBAAyB,EAAE,yBAAyB,EACpD,gBAAgB,EAAE,gBAAgB,EACtB,QAAQ,EAAE,gBAAgB;IAMhD;;;OAGG;IACH,SAAS;IAIT,gBAAgB;IAOhB,eAAe;IAQf,UAAU;IA8BV;;;OAGG;IACG,iBAAiB;IAMvB;;;;;;;OAOG;IACG,0BAA0B,CAAC,OAAO,CAAC,KAAA;IAazC;;;;;;;OAOG;IACG,2BAA2B,CAAC,OAAO,CAAC,KAAA;IAa1C;;;;;;OAMG;IACG,2BAA2B,CAAC,OAAO,CAAC,KAAA;IAW1C;;OAEG;IACH,aAAa;IAIb;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAWpC;;;;OAIG;IACH,eAAe,IAAI,eAAe;IAWlC;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,YAAY;IAKtC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,eAAwC,EAAE,WAAW,CAAC,EAAE,YAAY;IAkCtF;;;;;OAKG;IACG,aAAa,CAAC,MAAM,CAAC,KAAA,EAAE,IAAI,CAAC,KAAA,EAAE,eAAe,CAAC,KAAA;IAoBpD;;;;OAIG;IACG,eAAe,CAAC,WAAW,CAAC,EAAE,YAAY;IAmB1C,kBAAkB,CAAC,WAAW,CAAC,EAAE,YAAY;IAkB7C,oBAAoB,CAAC,WAAW,CAAC,EAAE,YAAY;IAarD;;;;OAIG;IACH,aAAa,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO;IAIlD;;;;OAIG;IACH,UAAU,IAAI,OAAO;IAIrB;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAI1B;;;OAGG;IACG,MAAM,CAAC,MAAM,UAAO;IAiB1B;;OAEG;IACG,KAAK;IAQX;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAI/C;;;OAGG;IACG,eAAe;IAUrB,gBAAgB,CAAC,MAAM,KAAA;IAMvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,OAAO,CAAC,OAAO;IAKf;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;YAIF,uBAAuB;IASrC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAItB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;YAUR,sBAAsB;yCAhmBzB,YAAY;6CAAZ,YAAY;CAomBxB"}
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;;AAEjE;;;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,CAAC;IACb,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;yCAlDA,qBAAqB;2CAArB,qBAAqB;CAqDjC"}
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;AACpE,OAAO,EAAmB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAc,MAAM,sCAAsC,CAAC;;AAEpF,qBAUa,wBAAwB;IAKjC,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IANvB,UAAU,EAAE,MAAM,CAA+B;IACjD,WAAW,EAAE,MAAM,CAAmC;gBAG5C,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa;IAGtC,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;yCAxCxB,wBAAwB;2CAAxB,wBAAwB;CA4DpC"}
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(); ssoConfigurationForm.control.markAsPristine()\"\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" }] }); }
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(); ssoConfigurationForm.control.markAsPristine()\"\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" }]
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=