@c8y/ngx-components 1021.64.0 → 1021.67.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 (162) hide show
  1. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +7 -2
  2. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  3. package/core/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  4. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  5. package/core/breadcrumb/breadcrumb-outlet.component.d.ts +1 -1
  6. package/core/breadcrumb/breadcrumb-outlet.component.d.ts.map +1 -1
  7. package/core/breadcrumb/breadcrumb.component.d.ts +1 -1
  8. package/core/breadcrumb/breadcrumb.component.d.ts.map +1 -1
  9. package/core/breadcrumb/breadcrumb.module.d.ts +7 -7
  10. package/core/breadcrumb/breadcrumb.module.d.ts.map +1 -1
  11. package/core/common/common.module.d.ts +38 -38
  12. package/core/common/date-format.service.d.ts +30 -0
  13. package/core/common/date-format.service.d.ts.map +1 -0
  14. package/core/common/date.pipe.d.ts +7 -3
  15. package/core/common/date.pipe.d.ts.map +1 -1
  16. package/core/common/index.d.ts +1 -0
  17. package/core/common/index.d.ts.map +1 -1
  18. package/core/common/outlet.directive.d.ts +1 -1
  19. package/core/common/outlet.directive.d.ts.map +1 -1
  20. package/core/common/user-preferences/user-preferences-store-current-user.d.ts +11 -0
  21. package/core/common/user-preferences/user-preferences-store-current-user.d.ts.map +1 -0
  22. package/core/common/user-preferences/user-preferences.service.d.ts +40 -1
  23. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  24. package/core/date-picker/date-picker.component.d.ts +3 -1
  25. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  26. package/core/date-time-picker/date-time-picker.component.d.ts +6 -3
  27. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  28. package/core/dynamic-forms/date/date.type.component.d.ts +3 -0
  29. package/core/dynamic-forms/date/date.type.component.d.ts.map +1 -1
  30. package/core/plugins/plugins.service.d.ts +3 -1
  31. package/core/plugins/plugins.service.d.ts.map +1 -1
  32. package/core/time-interval/time-interval.component.d.ts +4 -2
  33. package/core/time-interval/time-interval.component.d.ts.map +1 -1
  34. package/ecosystem/ecosystem.module.d.ts +2 -1
  35. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  36. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts +15 -0
  37. package/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.d.ts.map +1 -0
  38. package/ecosystem/packages/package-changelog.guard.d.ts +10 -0
  39. package/ecosystem/packages/package-changelog.guard.d.ts.map +1 -0
  40. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +2 -0
  41. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  42. package/ecosystem/shared/index.d.ts +1 -0
  43. package/ecosystem/shared/index.d.ts.map +1 -1
  44. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts +24 -0
  45. package/ecosystem/shared/package-changelog/package-changelog.component.d.ts.map +1 -0
  46. package/ecosystem/shared/shared-ecosystem.module.d.ts +2 -1
  47. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  48. package/esm2022/auth-configuration/sso-configuration/template-parts/signature-configuration.component.mjs +11 -7
  49. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +3 -3
  50. package/esm2022/core/breadcrumb/breadcrumb-outlet.component.mjs +19 -9
  51. package/esm2022/core/breadcrumb/breadcrumb.component.mjs +3 -3
  52. package/esm2022/core/breadcrumb/breadcrumb.module.mjs +16 -5
  53. package/esm2022/core/common/common.module.mjs +6 -6
  54. package/esm2022/core/common/date-format.service.mjs +81 -0
  55. package/esm2022/core/common/date.pipe.mjs +29 -6
  56. package/esm2022/core/common/index.mjs +2 -1
  57. package/esm2022/core/common/outlet.directive.mjs +4 -3
  58. package/esm2022/core/common/user-preferences/user-preferences-store-current-user.mjs +22 -0
  59. package/esm2022/core/common/user-preferences/user-preferences.service.mjs +106 -16
  60. package/esm2022/core/date-picker/date-picker.component.mjs +11 -4
  61. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +20 -11
  62. package/esm2022/core/dynamic-forms/date/date.type.component.mjs +12 -4
  63. package/esm2022/core/plugins/plugins.service.mjs +14 -8
  64. package/esm2022/core/time-interval/time-interval.component.mjs +9 -2
  65. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +4 -4
  66. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +3 -3
  67. package/esm2022/ecosystem/ecosystem.module.mjs +21 -5
  68. package/esm2022/ecosystem/packages/package-changelog-tab/package-changelog-tab.component.mjs +33 -0
  69. package/esm2022/ecosystem/packages/package-changelog.guard.mjs +22 -0
  70. package/esm2022/ecosystem/packages/package-versions/package-contents/packages-contents.component.mjs +17 -5
  71. package/esm2022/ecosystem/shared/index.mjs +2 -1
  72. package/esm2022/ecosystem/shared/package-changelog/package-changelog.component.mjs +82 -0
  73. package/esm2022/ecosystem/shared/package-version-select/package-version-select.component.mjs +3 -3
  74. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +12 -6
  75. package/esm2022/operations/bulk-operation-scheduler/operation-scheduler.component.mjs +9 -7
  76. package/esm2022/operations/bulk-operations-list/bulk-operations-list.component.mjs +1 -1
  77. package/esm2022/upgrade/ng1/downgraded.services.mjs +3 -2
  78. package/esm2022/upgrade/ng1/index.mjs +3 -2
  79. package/esm2022/widgets/cockpit/index.mjs +3 -1
  80. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  81. package/esm2022/widgets/definitions/index.mjs +2 -1
  82. package/esm2022/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +5 -0
  83. package/esm2022/widgets/definitions/radial-gauge/index.mjs +33 -0
  84. package/esm2022/widgets/implementations/info-gauge/index.mjs +2 -2
  85. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.mjs +295 -0
  86. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.mjs +141 -11
  87. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.mjs +67 -0
  88. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.mjs +34 -6
  89. package/esm2022/widgets/implementations/info-gauge/info-gauge-widget.module.mjs +9 -4
  90. package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.mjs +97 -0
  91. package/esm2022/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.mjs +369 -0
  92. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +9 -5
  93. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +5 -5
  95. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +94 -11
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs +83 -14
  99. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -5
  101. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +1 -1
  103. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-upgrade.mjs +3 -1
  105. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  107. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +2 -0
  109. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +40 -0
  111. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -0
  112. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  113. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +991 -28
  115. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components.mjs +809 -552
  117. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  118. package/locales/de.po +42 -6
  119. package/locales/es.po +42 -6
  120. package/locales/fr.po +42 -6
  121. package/locales/ja_JP.po +42 -6
  122. package/locales/ko.po +42 -6
  123. package/locales/locales.pot +40 -4
  124. package/locales/nl.po +42 -6
  125. package/locales/pl.po +42 -6
  126. package/locales/pt_BR.po +42 -6
  127. package/locales/zh_CN.po +42 -6
  128. package/locales/zh_TW.po +42 -6
  129. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +4 -2
  130. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  131. package/package.json +1 -1
  132. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  133. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  134. package/upgrade/ng1/index.d.ts.map +1 -1
  135. package/widgets/cockpit/index.d.ts +29 -0
  136. package/widgets/cockpit/index.d.ts.map +1 -1
  137. package/widgets/cockpit-exports/index.d.ts +6 -0
  138. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  139. package/widgets/definitions/index.d.ts +1 -0
  140. package/widgets/definitions/index.d.ts.map +1 -1
  141. package/widgets/definitions/radial-gauge/c8y-ngx-components-widgets-definitions-radial-gauge.d.ts.map +1 -0
  142. package/widgets/definitions/radial-gauge/index.d.ts +33 -0
  143. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -0
  144. package/widgets/implementations/info-gauge/index.d.ts +1 -1
  145. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  146. package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts +339 -0
  147. package/widgets/implementations/info-gauge/info-gauge-widget-config/gauge.model.d.ts.map +1 -0
  148. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts +27 -7
  149. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  150. package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts +33 -0
  151. package/widgets/implementations/info-gauge/info-gauge-widget-config/preset-preview/preset-preview.component.d.ts.map +1 -0
  152. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts +7 -3
  153. package/widgets/implementations/info-gauge/info-gauge-widget-view/info-gauge-widget-view.component.d.ts.map +1 -1
  154. package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts +2 -1
  155. package/widgets/implementations/info-gauge/info-gauge-widget.module.d.ts.map +1 -1
  156. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts +37 -0
  157. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.component.d.ts.map +1 -0
  158. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts +146 -0
  159. package/widgets/implementations/info-gauge/radial-gauge/radial-gauge.service.d.ts.map +1 -0
  160. package/esm2022/widgets/implementations/info-gauge/info-gauge.model.mjs +0 -2
  161. package/widgets/implementations/info-gauge/info-gauge.model.d.ts +0 -7
  162. package/widgets/implementations/info-gauge/info-gauge.model.d.ts.map +0 -1
@@ -0,0 +1,15 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { ActivatedRoute } from '@angular/router';
3
+ import { IApplication } from '@c8y/client';
4
+ import { ContextRouteService } from '@c8y/ngx-components';
5
+ import * as i0 from "@angular/core";
6
+ export declare class PackageChangelogTabComponent implements OnInit {
7
+ private activatedRoute;
8
+ private contextRouteService;
9
+ package: IApplication;
10
+ constructor(activatedRoute: ActivatedRoute, contextRouteService: ContextRouteService);
11
+ ngOnInit(): Promise<void>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<PackageChangelogTabComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<PackageChangelogTabComponent, "c8y-package-changelog-tab", never, {}, {}, never, never, true, never>;
14
+ }
15
+ //# sourceMappingURL=package-changelog-tab.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-changelog-tab.component.d.ts","sourceRoot":"","sources":["../../../../ecosystem/packages/package-changelog-tab/package-changelog-tab.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAIL,mBAAmB,EAGpB,MAAM,qBAAqB,CAAC;;AAI7B,qBAca,4BAA6B,YAAW,MAAM;IAIvD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,mBAAmB;IAJ7B,OAAO,EAAE,YAAY,CAAM;gBAGjB,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB;IAG5C,QAAQ;yCARH,4BAA4B;2CAA5B,4BAA4B;CAWxC"}
@@ -0,0 +1,10 @@
1
+ import { ActivatedRouteSnapshot } from '@angular/router';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PackageChangelogGuard {
4
+ private pluginsService;
5
+ private router;
6
+ canActivate(route: ActivatedRouteSnapshot): Promise<boolean>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<PackageChangelogGuard, never>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<PackageChangelogGuard>;
9
+ }
10
+ //# sourceMappingURL=package-changelog.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-changelog.guard.d.ts","sourceRoot":"","sources":["../../../ecosystem/packages/package-changelog.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAU,MAAM,iBAAiB,CAAC;;AAGjE,qBACa,qBAAqB;IAChC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,MAAM,CAAkB;IAE1B,WAAW,CAAC,KAAK,EAAE,sBAAsB;yCAJpC,qBAAqB;6CAArB,qBAAqB;CAWjC"}
@@ -14,12 +14,14 @@ export declare class PackageContentsComponent {
14
14
  selectedVersionManifest: IManifest;
15
15
  package: IApplication;
16
16
  isLoading: boolean;
17
+ previousVersion: string | null;
17
18
  readonly packageVersionProperties: PropertiesListItem[];
18
19
  constructor(activatedRoute: ActivatedRoute, applicationService: ApplicationService, alertService: AlertService, contextRouteService: ContextRouteService);
19
20
  showPluginOverview(plugin: ApplicationPlugin): void;
20
21
  ngOnChanges(changes: SimpleChanges): Promise<void>;
21
22
  loadManifest(version: string): Promise<void>;
22
23
  private getManifest;
24
+ private getPreviousVersion;
23
25
  static ɵfac: i0.ɵɵFactoryDeclaration<PackageContentsComponent, never>;
24
26
  static ɵcmp: i0.ɵɵComponentDeclaration<PackageContentsComponent, "c8y-package-contents", never, { "selectedVersion": { "alias": "selectedVersion"; "required": false; }; "selectedPlugin": { "alias": "selectedPlugin"; "required": false; }; }, { "showOverview": "showOverview"; }, never, never, false, never>;
25
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packages-contents.component.d.ts","sourceRoot":"","sources":["../../../../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;;AAG7B,qBAIa,wBAAwB;IAYjC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAdpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,iBAAiB,CAAC;IACjC,YAAY,kCAAyC;IAE/D,uBAAuB,EAAE,SAAS,CAAC;IACnC,OAAO,EAAE,YAAY,CAAM;IAC3B,SAAS,UAAS;IAElB,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,CAAqB;gBAGlE,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB;IAGlD,kBAAkB,CAAC,MAAM,EAAE,iBAAiB;IAItC,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,YAAY,CAAC,OAAO,EAAE,MAAM;YAOpB,WAAW;yCAnCd,wBAAwB;2CAAxB,wBAAwB;CA2CpC"}
1
+ {"version":3,"file":"packages-contents.component.d.ts","sourceRoot":"","sources":["../../../../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;;AAG7B,qBAIa,wBAAwB;IAajC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAfpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,iBAAiB,CAAC;IACjC,YAAY,kCAAyC;IAE/D,uBAAuB,EAAE,SAAS,CAAC;IACnC,OAAO,EAAE,YAAY,CAAM;IAC3B,SAAS,UAAS;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,QAAQ,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,CAAqB;gBAGlE,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB;IAGlD,kBAAkB,CAAC,MAAM,EAAE,iBAAiB;IAItC,WAAW,CAAC,OAAO,EAAE,aAAa;IAOlC,YAAY,CAAC,OAAO,EAAE,MAAM;YAOpB,WAAW;IASzB,OAAO,CAAC,kBAAkB;yCA9Cf,wBAAwB;2CAAxB,wBAAwB;CA0DpC"}
@@ -15,4 +15,5 @@ export * from './list-filters/list-filters.model';
15
15
  export * from './list-filters/list-filters.component';
16
16
  export * from './package-availability.service';
17
17
  export * from './archived-filter/archived-filter.component';
18
+ export * from './package-changelog/package-changelog.component';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yFAAyF,CAAC;AACxG,cAAc,qGAAqG,CAAC;AACpH,cAAc,yDAAyD,CAAC;AACxE,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2DAA2D,CAAC;AAC1E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yFAAyF,CAAC;AACxG,cAAc,qGAAqG,CAAC;AACpH,cAAc,yDAAyD,CAAC;AACxE,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2DAA2D,CAAC;AAC1E,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { OnChanges } from '@angular/core';
2
+ import { IApplication } from '@c8y/client';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Component to display the change log of a package.
6
+ * It fetches the change log file from the package's repository and displays it.
7
+ * It can fetch the change log for the latest version or a specific version if provided.
8
+ * It can also compare the change log with the previous version if provided and display the difference between the two versions.
9
+ */
10
+ export declare class PackageChangelogComponent implements OnChanges {
11
+ package: IApplication;
12
+ selectedVersion: string;
13
+ previousVersion: string | null;
14
+ changelog: string;
15
+ baseUrl: string;
16
+ isLoading: boolean;
17
+ private pluginsService;
18
+ ngOnChanges(): Promise<void>;
19
+ private getChangeLog;
20
+ private baseUrlForVersion;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<PackageChangelogComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<PackageChangelogComponent, "c8y-contents-changelog", never, { "package": { "alias": "package"; "required": false; }; "selectedVersion": { "alias": "selectedVersion"; "required": false; }; "previousVersion": { "alias": "previousVersion"; "required": false; }; }, {}, never, never, true, never>;
23
+ }
24
+ //# sourceMappingURL=package-changelog.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-changelog.component.d.ts","sourceRoot":"","sources":["../../../../ecosystem/shared/package-changelog/package-changelog.component.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,SAAS,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;;AAU3C;;;;;GAKG;AACH,qBAaa,yBAA0B,YAAW,SAAS;IAChD,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,SAAY;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,UAAQ;IAEjB,OAAO,CAAC,cAAc,CAA0B;IAE1C,WAAW;YAWH,YAAY;IAqC1B,OAAO,CAAC,iBAAiB;yCA1Dd,yBAAyB;2CAAzB,yBAAyB;CA6DrC"}
@@ -17,9 +17,10 @@ import * as i15 from "@angular/cdk/a11y";
17
17
  import * as i16 from "@angular/forms";
18
18
  import * as i17 from "ngx-bootstrap/popover";
19
19
  import * as i18 from "@c8y/ngx-components/icon-selector";
20
+ import * as i19 from "./package-changelog/package-changelog.component";
20
21
  export declare class SharedEcosystemModule {
21
22
  static ɵfac: i0.ɵɵFactoryDeclaration<SharedEcosystemModule, never>;
22
- static ɵmod: i0.ɵɵNgModuleDeclaration<SharedEcosystemModule, [typeof i1.AddApplicationComponent, typeof i2.ApplicationPropertiesFormComponent, typeof i3.UploadArchiveComponent, typeof i4.ApplicationCardComponent, typeof i5.DuplicateApplicationListComponent, typeof i6.DuplicateApplicationPropertiesComponent, typeof i7.DuplicateApplicationComponent, typeof i8.PackageVersionSelectComponent, typeof i9.TranslatePackageLabelPipe, typeof i10.ListFiltersComponent, typeof i11.ArchivedFilterComponent], [typeof i12.CoreModule, typeof i13.BsDropdownModule, typeof i14.TooltipModule, typeof i15.A11yModule, typeof i16.FormsModule, typeof i17.PopoverModule, typeof i16.ReactiveFormsModule, typeof i18.IconSelectorModule], [typeof i1.AddApplicationComponent, typeof i2.ApplicationPropertiesFormComponent, typeof i3.UploadArchiveComponent, typeof i4.ApplicationCardComponent, typeof i5.DuplicateApplicationListComponent, typeof i6.DuplicateApplicationPropertiesComponent, typeof i7.DuplicateApplicationComponent, typeof i8.PackageVersionSelectComponent, typeof i9.TranslatePackageLabelPipe, typeof i10.ListFiltersComponent, typeof i11.ArchivedFilterComponent]>;
23
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SharedEcosystemModule, [typeof i1.AddApplicationComponent, typeof i2.ApplicationPropertiesFormComponent, typeof i3.UploadArchiveComponent, typeof i4.ApplicationCardComponent, typeof i5.DuplicateApplicationListComponent, typeof i6.DuplicateApplicationPropertiesComponent, typeof i7.DuplicateApplicationComponent, typeof i8.PackageVersionSelectComponent, typeof i9.TranslatePackageLabelPipe, typeof i10.ListFiltersComponent, typeof i11.ArchivedFilterComponent], [typeof i12.CoreModule, typeof i13.BsDropdownModule, typeof i14.TooltipModule, typeof i15.A11yModule, typeof i16.FormsModule, typeof i17.PopoverModule, typeof i16.ReactiveFormsModule, typeof i18.IconSelectorModule, typeof i19.PackageChangelogComponent], [typeof i1.AddApplicationComponent, typeof i2.ApplicationPropertiesFormComponent, typeof i3.UploadArchiveComponent, typeof i4.ApplicationCardComponent, typeof i5.DuplicateApplicationListComponent, typeof i6.DuplicateApplicationPropertiesComponent, typeof i7.DuplicateApplicationComponent, typeof i8.PackageVersionSelectComponent, typeof i9.TranslatePackageLabelPipe, typeof i10.ListFiltersComponent, typeof i11.ArchivedFilterComponent, typeof i19.PackageChangelogComponent]>;
23
24
  static ɵinj: i0.ɵɵInjectorDeclaration<SharedEcosystemModule>;
24
25
  }
25
26
  //# sourceMappingURL=shared-ecosystem.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-ecosystem.module.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/shared-ecosystem.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA,qBAoDa,qBAAqB;yCAArB,qBAAqB;0CAArB,qBAAqB;0CAArB,qBAAqB;CAAG"}
1
+ {"version":3,"file":"shared-ecosystem.module.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/shared-ecosystem.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,qBAsDa,qBAAqB;yCAArB,qBAAqB;0CAArB,qBAAqB;0CAArB,qBAAqB;CAAG"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Component, Input } from '@angular/core';
3
- import { gettext, memoize } from '@c8y/ngx-components';
3
+ import { DateFormatService, gettext, memoize } from '@c8y/ngx-components';
4
4
  import { ControlContainer, NgForm } from '@angular/forms';
5
5
  import { algorithmTypeConfig, CertificateType, certificateTypeConfig } from './signature-configuration.model';
6
6
  import * as i0 from "@angular/core";
@@ -11,13 +11,17 @@ import * as i4 from "ngx-bootstrap/tooltip";
11
11
  import * as i5 from "ngx-bootstrap/popover";
12
12
  import * as i6 from "ngx-bootstrap/datepicker";
13
13
  export class SignatureConfigurationComponent {
14
- constructor(controlContainer) {
14
+ constructor(controlContainer, dateFormatService) {
15
15
  this.controlContainer = controlContainer;
16
+ this.dateFormatService = dateFormatService;
16
17
  this.certificateType = CertificateType;
17
18
  this.certificateTypes = certificateTypeConfig;
18
19
  this.algorithmTypes = algorithmTypeConfig;
19
20
  this.CERTIFICATE_ID_FIELD_POPOVER = gettext('This is the name of the field in the token whose value will be used to select one of the certificates below which has matching "Certificate ID value".');
20
21
  }
22
+ ngOnInit() {
23
+ this.dateInputFormat = this.dateFormatService.getDateFormat();
24
+ }
21
25
  shouldShow(field) {
22
26
  return field in this.templateModel;
23
27
  }
@@ -25,8 +29,8 @@ export class SignatureConfigurationComponent {
25
29
  this.templateModel.signatureVerificationConfig.manual.removeCustomCertificate(customCertificate);
26
30
  this.controlContainer.control.markAsDirty();
27
31
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignatureConfigurationComponent, deps: [{ token: i1.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label>&nbsp;</label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignatureConfigurationComponent, deps: [{ token: i1.ControlContainer }, { token: i2.DateFormatService }], target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SignatureConfigurationComponent, selector: "c8y-sso-signature-configuration", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label>&nbsp;</label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
30
34
  }
31
35
  __decorate([
32
36
  memoize(),
@@ -36,8 +40,8 @@ __decorate([
36
40
  ], SignatureConfigurationComponent.prototype, "shouldShow", null);
37
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SignatureConfigurationComponent, decorators: [{
38
42
  type: Component,
39
- args: [{ selector: 'c8y-sso-signature-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label>&nbsp;</label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n" }]
40
- }], ctorParameters: () => [{ type: i1.ControlContainer }], propDecorators: { templateModel: [{
43
+ args: [{ selector: 'c8y-sso-signature-configuration', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"p-24\">\n <div class=\"row\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n translate\n >\n Signature verification\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9\">\n <div\n *ngIf=\"shouldShow('certificateType')\"\n class=\"form-group p-relative\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <label\n for=\"certificateType\"\n class=\"control-label\"\n translate\n >\n Verifier\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"certificateType\"\n name=\"certificateType\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.certificateTypeChosen\"\n >\n <option\n *ngFor=\"let certificateType of certificateTypes | keyvalue\"\n [ngValue]=\"certificateType.key\"\n >\n {{ certificateType.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </div>\n <div\n id=\"adfs\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.ADFS\n \"\n class=\"row\"\n >\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"adfsManifestUrl\"\n class=\"control-label\"\n translate\n >\n ADFS manifest URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : {\n example: 'https://adfs.tenant.com/federationmetadata/federationmetadata.xml'\n }\n \"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.adfsManifest.manifestUrl\"\n name=\"adfsManifestUrl\"\n id=\"adfsManifestUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <div\n id=\"add\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.AZURE\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"publicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n Public key discovery URL\n </label>\n <input\n type=\"url\"\n id=\"publicKeyDiscoveryUrl\"\n class=\"form-control\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}'\n | translate\n : { example: 'https://login.microsoftonline.de/tenant/discovery/keys' }\n \"\n name=\"publicKeyDiscoveryUrl\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.aad.publicKeyDiscoveryUrl\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"jwks\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.JWKS\n \"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label\n for=\"jwksPublicKeyDiscoveryUrl\"\n class=\"control-label\"\n translate\n >\n JWKS URL\n </label>\n <input\n type=\"url\"\n class=\"form-control\"\n id=\"jwksPublicKeyDiscoveryUrl\"\n required\n [placeholder]=\"\n 'e.g. {{ example }}' | translate: { example: 'http://www.example.com/' }\n \"\n name=\"jwksUri\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.jwks.jwksUri\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n\n <div\n id=\"manual\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.certificateTypeChosen === certificateType.CUSTOM\n \"\n >\n <fieldset\n class=\"c8y-fieldset p-24\"\n *ngIf=\"templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\"\n >\n <legend>\n {{ 'Manual' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <label\n for=\"certIdField\"\n class=\"control-label\"\n >\n {{ 'Certificate ID field' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CERTIFICATE_ID_FIELD_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n ></button>\n </label>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"certIdField\"\n id=\"certIdField\"\n [(ngModel)]=\"templateModel.signatureVerificationConfig.manual.certIdField\"\n required\n />\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"c8y-fieldset p-24\">\n <legend>\n {{ 'Certificates' | translate }}\n </legend>\n <fieldset\n class=\"c8y-fieldset p-16\"\n *ngFor=\"\n let customCertificate of templateModel.signatureVerificationConfig.manual\n .customCertificates;\n index as crtIndex\n \"\n >\n <div class=\"row\">\n <div\n class=\"col-sm-6\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <c8y-form-group>\n <label\n [for]=\"'customCertificateValue' + crtIndex\"\n class=\"control-label\"\n translate\n >\n Certificate ID value\n </label>\n <input\n [name]=\"'customCertificateValue' + crtIndex\"\n [id]=\"'customCertificateValue' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.key\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Type' | translate }}\n </label>\n <label\n title=\"{{ algorithmType.value.label | translate }}\"\n class=\"c8y-radio input-sm\"\n *ngFor=\"let algorithmType of algorithmTypes | keyvalue; index as algIndex\"\n >\n <input\n type=\"radio\"\n [name]=\"'alg' + crtIndex + algIndex\"\n [value]=\"algorithmType.key\"\n [(ngModel)]=\"customCertificate.alg\"\n />\n <span></span>\n <span>{{ algorithmType.value.label | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-5\">\n <c8y-form-group>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.PCKS.value\"\n translate\n >\n Certificate in PEM format\n </label>\n <label\n class=\"control-label\"\n [for]=\"'publicKey' + crtIndex\"\n *ngIf=\"customCertificate.alg === algorithmTypes.RSA.value\"\n translate\n >\n Public key in PEM format\n </label>\n <input\n [name]=\"'publicKey' + crtIndex\"\n [id]=\"'publicKey' + crtIndex\"\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"customCertificate.publicKey\"\n required\n />\n </c8y-form-group>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validFromPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid from' | translate }}\n </label>\n <input\n [name]=\"'validFromPicker' + crtIndex\"\n [id]=\"'validFromPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validFrom\"\n class=\"form-control\"\n [attr.aria-label]=\"'Date from' | translate\"\n placeholder=\"{{ 'Date from' | translate }}\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n [maxDate]=\"customCertificate.validTill\"\n bsDatepicker\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"form-group datepicker\">\n <c8y-form-group>\n <label\n [for]=\"'validTillPicker' + crtIndex\"\n class=\"control-label\"\n >\n {{ 'Valid till' | translate }}\n </label>\n <input\n [name]=\"'validTillPicker' + crtIndex\"\n [id]=\"'validTillPicker' + crtIndex\"\n [(ngModel)]=\"customCertificate.validTill\"\n class=\"form-control\"\n placeholder=\"{{ 'Date to' | translate }}\"\n [attr.aria-label]=\"'Date to' | translate\"\n [bsConfig]=\"{ customTodayClass: 'today', adaptivePosition: true, dateInputFormat: dateInputFormat }\"\n bsDatepicker\n [minDate]=\"customCertificate.validFrom\"\n required\n />\n </c8y-form-group>\n </div>\n </div>\n <div\n class=\"col-md-1\"\n *ngIf=\"\n templateModel.signatureVerificationConfig.manual.customCertificates.length > 1\n \"\n >\n <label>&nbsp;</label>\n <button\n class=\"btn btn-danger btn-sm visible-xs visible-sm\"\n type=\"button\"\n title=\"{{ 'Delete certificate' | translate }}\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i\n c8yIcon=\"minus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Delete certificate' | translate }}</span>\n </button>\n\n <button\n class=\"btn btn-dot btn-dot--danger visible-md visible-lg\"\n type=\"button\"\n tooltip=\"{{ 'Delete certificate' | translate }}\"\n placement=\"top\"\n [adaptivePosition]=\"false\"\n [attr.aria-label]=\"'Delete certificate' | translate\"\n [delay]=\"300\"\n (click)=\"removeCustomCertificate(customCertificate)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </fieldset>\n <button\n class=\"btn btn-default m-t-8\"\n type=\"button\"\n title=\"{{ 'Add certificate' | translate }}\"\n (click)=\"templateModel.signatureVerificationConfig.manual.addCustomCertificate()\"\n name=\"addCertificate\"\n >\n <i\n c8yIcon=\"plus-circle\"\n class=\"m-r-4\"\n ></i>\n <span>{{ 'Add certificate' | translate }}</span>\n </button>\n </fieldset>\n </div>\n </div>\n </div>\n</div>\n" }]
44
+ }], ctorParameters: () => [{ type: i1.ControlContainer }, { type: i2.DateFormatService }], propDecorators: { templateModel: [{
41
45
  type: Input
42
46
  }], shouldShow: [] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlLXBhcnRzL3NpZ25hdHVyZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi90ZW1wbGF0ZS1wYXJ0cy9zaWduYXR1cmUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEVBRXRCLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBT3pDLE1BQU0sT0FBTywrQkFBK0I7SUFZMUMsWUFBc0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFUeEQsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDbEMscUJBQWdCLEdBQUcscUJBQXFCLENBQUM7UUFFekMsbUJBQWMsR0FBRyxtQkFBbUIsQ0FBQztRQUVyQyxpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLHdKQUF3SixDQUN6SixDQUFDO0lBRXlELENBQUM7SUFHNUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsaUJBQW9DO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUMzRSxpQkFBaUIsQ0FDbEIsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQzsrR0F4QlUsK0JBQStCO21HQUEvQiwrQkFBK0IsbUhDZjVDLGcyYUF1WEEsaWtIRDFXaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7O0FBaUJuRTtJQURDLE9BQU8sRUFBRTs7OztpRUFHVDs0RkFqQlUsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLGlDQUFpQyxpQkFFNUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7cUZBRzFELGFBQWE7c0JBQXJCLEtBQUs7Z0JBY04sVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIG1lbW9pemUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFsZ29yaXRobVR5cGVDb25maWcsXG4gIENlcnRpZmljYXRlVHlwZSxcbiAgY2VydGlmaWNhdGVUeXBlQ29uZmlnLFxuICBDdXN0b21DZXJ0aWZpY2F0ZVxufSBmcm9tICcuL3NpZ25hdHVyZS1jb25maWd1cmF0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNzby1zaWduYXR1cmUtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduYXR1cmUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV1cbn0pXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlQ29uZmlndXJhdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlTW9kZWw7XG5cbiAgY2VydGlmaWNhdGVUeXBlID0gQ2VydGlmaWNhdGVUeXBlO1xuICBjZXJ0aWZpY2F0ZVR5cGVzID0gY2VydGlmaWNhdGVUeXBlQ29uZmlnO1xuXG4gIGFsZ29yaXRobVR5cGVzID0gYWxnb3JpdGhtVHlwZUNvbmZpZztcblxuICBDRVJUSUZJQ0FURV9JRF9GSUVMRF9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnVGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgaW4gdGhlIHRva2VuIHdob3NlIHZhbHVlIHdpbGwgYmUgdXNlZCB0byBzZWxlY3Qgb25lIG9mIHRoZSBjZXJ0aWZpY2F0ZXMgYmVsb3cgd2hpY2ggaGFzIG1hdGNoaW5nIFwiQ2VydGlmaWNhdGUgSUQgdmFsdWVcIi4nXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIpIHt9XG5cbiAgQG1lbW9pemUoKVxuICBzaG91bGRTaG93KGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmllbGQgaW4gdGhpcy50ZW1wbGF0ZU1vZGVsO1xuICB9XG5cbiAgcmVtb3ZlQ3VzdG9tQ2VydGlmaWNhdGUoY3VzdG9tQ2VydGlmaWNhdGU6IEN1c3RvbUNlcnRpZmljYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5tYW51YWwucmVtb3ZlQ3VzdG9tQ2VydGlmaWNhdGUoXG4gICAgICBjdXN0b21DZXJ0aWZpY2F0ZVxuICAgICk7XG4gICAgdGhpcy5jb250cm9sQ29udGFpbmVyLmNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtMjRcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJoNCB0ZXh0LW5vcm1hbCB0ZXh0LXJpZ2h0IHRleHQtbGVmdC14c1wiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBTaWduYXR1cmUgdmVyaWZpY2F0aW9uXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS05IGNvbC1tZC0xMCBjb2wtbGctOVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInNob3VsZFNob3coJ2NlcnRpZmljYXRlVHlwZScpXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIHAtcmVsYXRpdmVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiY2VydGlmaWNhdGVUeXBlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFZlcmlmaWVyXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiY2VydGlmaWNhdGVUeXBlXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiY2VydGlmaWNhdGVUeXBlXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmNlcnRpZmljYXRlVHlwZUNob3NlblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2VydGlmaWNhdGVUeXBlIG9mIGNlcnRpZmljYXRlVHlwZXMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJjZXJ0aWZpY2F0ZVR5cGUua2V5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjZXJ0aWZpY2F0ZVR5cGUudmFsdWUubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBpZD1cImFkZnNcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmNlcnRpZmljYXRlVHlwZUNob3NlbiA9PT0gY2VydGlmaWNhdGVUeXBlLkFERlNcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJyb3dcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwiYWRmc01hbmlmZXN0VXJsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFERlMgbWFuaWZlc3QgVVJMXG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAnZS5nLiB7eyBleGFtcGxlIH19J1xuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAnaHR0cHM6Ly9hZGZzLnRlbmFudC5jb20vZmVkZXJhdGlvbm1ldGFkYXRhL2ZlZGVyYXRpb25tZXRhZGF0YS54bWwnXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmFkZnNNYW5pZmVzdC5tYW5pZmVzdFVybFwiXG4gICAgICAgICAgICAgIG5hbWU9XCJhZGZzTWFuaWZlc3RVcmxcIlxuICAgICAgICAgICAgICBpZD1cImFkZnNNYW5pZmVzdFVybFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJhZGRcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmNlcnRpZmljYXRlVHlwZUNob3NlbiA9PT0gY2VydGlmaWNhdGVUeXBlLkFaVVJFXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwicHVibGljS2V5RGlzY292ZXJ5VXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgUHVibGljIGtleSBkaXNjb3ZlcnkgVVJMXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxuICAgICAgICAgICAgICAgIGlkPVwicHVibGljS2V5RGlzY292ZXJ5VXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAgICAgICAnZS5nLiB7eyBleGFtcGxlIH19J1xuICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgIDogeyBleGFtcGxlOiAnaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuZGUvdGVuYW50L2Rpc2NvdmVyeS9rZXlzJyB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicHVibGljS2V5RGlzY292ZXJ5VXJsXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmFhZC5wdWJsaWNLZXlEaXNjb3ZlcnlVcmxcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBpZD1cImp3a3NcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmNlcnRpZmljYXRlVHlwZUNob3NlbiA9PT0gY2VydGlmaWNhdGVUeXBlLkpXS1NcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBmb3I9XCJqd2tzUHVibGljS2V5RGlzY292ZXJ5VXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgSldLUyBVUkxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIGlkPVwiandrc1B1YmxpY0tleURpc2NvdmVyeVVybFwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICAgICAgICAnZS5nLiB7eyBleGFtcGxlIH19JyB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8nIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJqd2tzVXJpXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmp3a3Muandrc1VyaVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwibWFudWFsXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICB0ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5jZXJ0aWZpY2F0ZVR5cGVDaG9zZW4gPT09IGNlcnRpZmljYXRlVHlwZS5DVVNUT01cbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGZpZWxkc2V0XG4gICAgICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXQgcC0yNFwiXG4gICAgICAgICAgKm5nSWY9XCJ0ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5tYW51YWwuY3VzdG9tQ2VydGlmaWNhdGVzLmxlbmd0aCA+IDFcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgIHt7ICdNYW51YWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cImNlcnRJZEZpZWxkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ0NlcnRpZmljYXRlIElEIGZpZWxkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IENFUlRJRklDQVRFX0lEX0ZJRUxEX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJjZXJ0SWRGaWVsZFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjZXJ0SWRGaWVsZFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5tYW51YWwuY2VydElkRmllbGRcIlxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXQgcC0yNFwiPlxuICAgICAgICAgIDxsZWdlbmQ+XG4gICAgICAgICAgICB7eyAnQ2VydGlmaWNhdGVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktZmllbGRzZXQgcC0xNlwiXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGN1c3RvbUNlcnRpZmljYXRlIG9mIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbFxuICAgICAgICAgICAgICAgIC5jdXN0b21DZXJ0aWZpY2F0ZXM7XG4gICAgICAgICAgICAgIGluZGV4IGFzIGNydEluZGV4XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLXNtLTZcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICB0ZW1wbGF0ZU1vZGVsLnNpZ25hdHVyZVZlcmlmaWNhdGlvbkNvbmZpZy5tYW51YWwuY3VzdG9tQ2VydGlmaWNhdGVzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ2N1c3RvbUNlcnRpZmljYXRlVmFsdWUnICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQ2VydGlmaWNhdGUgSUQgdmFsdWVcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2N1c3RvbUNlcnRpZmljYXRlVmFsdWUnICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2N1c3RvbUNlcnRpZmljYXRlVmFsdWUnICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DZXJ0aWZpY2F0ZS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBhbGdvcml0aG1UeXBlLnZhbHVlLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjOHktcmFkaW8gaW5wdXQtc21cIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWxnb3JpdGhtVHlwZSBvZiBhbGdvcml0aG1UeXBlcyB8IGtleXZhbHVlOyBpbmRleCBhcyBhbGdJbmRleFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ2FsZycgKyBjcnRJbmRleCArIGFsZ0luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWxnb3JpdGhtVHlwZS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tQ2VydGlmaWNhdGUuYWxnXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhbGdvcml0aG1UeXBlLnZhbHVlLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIidwdWJsaWNLZXknICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImN1c3RvbUNlcnRpZmljYXRlLmFsZyA9PT0gYWxnb3JpdGhtVHlwZXMuUENLUy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSBpbiBQRU0gZm9ybWF0XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3B1YmxpY0tleScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQ2VydGlmaWNhdGUuYWxnID09PSBhbGdvcml0aG1UeXBlcy5SU0EudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgUHVibGljIGtleSBpbiBQRU0gZm9ybWF0XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidwdWJsaWNLZXknICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3B1YmxpY0tleScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUNlcnRpZmljYXRlLnB1YmxpY0tleVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3ZhbGlkRnJvbVBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdWYWxpZCBmcm9tJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndmFsaWRGcm9tUGlja2VyJyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3ZhbGlkRnJvbVBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DZXJ0aWZpY2F0ZS52YWxpZEZyb21cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEYXRlIGZyb20nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIGZyb20nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYnNDb25maWddPVwieyBjdXN0b21Ub2RheUNsYXNzOiAndG9kYXknLCBhZGFwdGl2ZVBvc2l0aW9uOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImN1c3RvbUNlcnRpZmljYXRlLnZhbGlkVGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3ZhbGlkVGlsbFBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdWYWxpZCB0aWxsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndmFsaWRUaWxsUGlja2VyJyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3ZhbGlkVGlsbFBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DZXJ0aWZpY2F0ZS52YWxpZFRpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIHRvJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGF0ZSB0bycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIGFkYXB0aXZlUG9zaXRpb246IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwiY3VzdG9tQ2VydGlmaWNhdGUudmFsaWRGcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1tZC0xXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcubWFudWFsLmN1c3RvbUNlcnRpZmljYXRlcy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxsYWJlbD4mbmJzcDs8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXNtIHZpc2libGUteHMgdmlzaWJsZS1zbVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0RlbGV0ZSBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUN1c3RvbUNlcnRpZmljYXRlKGN1c3RvbUNlcnRpZmljYXRlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1yLTRcIlxuICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdEZWxldGUgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgdmlzaWJsZS1tZCB2aXNpYmxlLWxnXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdEZWxldGUgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidEZWxldGUgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtkZWxheV09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUN1c3RvbUNlcnRpZmljYXRlKGN1c3RvbUNlcnRpZmljYXRlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG0tdC04XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcubWFudWFsLmFkZEN1c3RvbUNlcnRpZmljYXRlKClcIlxuICAgICAgICAgICAgbmFtZT1cImFkZENlcnRpZmljYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjOHlJY29uPVwicGx1cy1jaXJjbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQWRkIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlLXBhcnRzL3NpZ25hdHVyZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi90ZW1wbGF0ZS1wYXJ0cy9zaWduYXR1cmUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YscUJBQXFCLEVBRXRCLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7O0FBT3pDLE1BQU0sT0FBTywrQkFBK0I7SUFjMUMsWUFDWSxnQkFBa0MsRUFDcEMsaUJBQW9DO1FBRGxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWI5QyxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUV6QyxtQkFBYyxHQUFHLG1CQUFtQixDQUFDO1FBSXJDLGlDQUE0QixHQUFHLE9BQU8sQ0FDcEMsd0pBQXdKLENBQ3pKLENBQUM7SUFLQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFHRCxVQUFVLENBQUMsS0FBYTtRQUN0QixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxpQkFBb0M7UUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQzNFLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QyxDQUFDOytHQWpDVSwrQkFBK0I7bUdBQS9CLCtCQUErQixtSENmNUMsbzZhQXVYQSxpa0hEMVdpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzs7QUEwQm5FO0lBREMsT0FBTyxFQUFFOzs7O2lFQUdUOzRGQTFCVSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsaUNBQWlDLGlCQUU1QixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztxSEFHMUQsYUFBYTtzQkFBckIsS0FBSztnQkF1Qk4sVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdFNlcnZpY2UsIGdldHRleHQsIG1lbW9pemUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIGFsZ29yaXRobVR5cGVDb25maWcsXG4gIENlcnRpZmljYXRlVHlwZSxcbiAgY2VydGlmaWNhdGVUeXBlQ29uZmlnLFxuICBDdXN0b21DZXJ0aWZpY2F0ZVxufSBmcm9tICcuL3NpZ25hdHVyZS1jb25maWd1cmF0aW9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNzby1zaWduYXR1cmUtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaWduYXR1cmUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV1cbn0pXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlQ29uZmlndXJhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHRlbXBsYXRlTW9kZWw7XG5cbiAgY2VydGlmaWNhdGVUeXBlID0gQ2VydGlmaWNhdGVUeXBlO1xuICBjZXJ0aWZpY2F0ZVR5cGVzID0gY2VydGlmaWNhdGVUeXBlQ29uZmlnO1xuXG4gIGFsZ29yaXRobVR5cGVzID0gYWxnb3JpdGhtVHlwZUNvbmZpZztcblxuICBkYXRlSW5wdXRGb3JtYXQ6IHN0cmluZztcblxuICBDRVJUSUZJQ0FURV9JRF9GSUVMRF9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnVGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgZmllbGQgaW4gdGhlIHRva2VuIHdob3NlIHZhbHVlIHdpbGwgYmUgdXNlZCB0byBzZWxlY3Qgb25lIG9mIHRoZSBjZXJ0aWZpY2F0ZXMgYmVsb3cgd2hpY2ggaGFzIG1hdGNoaW5nIFwiQ2VydGlmaWNhdGUgSUQgdmFsdWVcIi4nXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSBkYXRlRm9ybWF0U2VydmljZTogRGF0ZUZvcm1hdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUlucHV0Rm9ybWF0ID0gdGhpcy5kYXRlRm9ybWF0U2VydmljZS5nZXREYXRlRm9ybWF0KCk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHNob3VsZFNob3coZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZCBpbiB0aGlzLnRlbXBsYXRlTW9kZWw7XG4gIH1cblxuICByZW1vdmVDdXN0b21DZXJ0aWZpY2F0ZShjdXN0b21DZXJ0aWZpY2F0ZTogQ3VzdG9tQ2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5yZW1vdmVDdXN0b21DZXJ0aWZpY2F0ZShcbiAgICAgIGN1c3RvbUNlcnRpZmljYXRlXG4gICAgKTtcbiAgICB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC0yNFwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMlwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImg0IHRleHQtbm9ybWFsIHRleHQtcmlnaHQgdGV4dC1sZWZ0LXhzXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIFNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLTEwIGNvbC1sZy05XCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwic2hvdWxkU2hvdygnY2VydGlmaWNhdGVUeXBlJylcIlxuICAgICAgICBjbGFzcz1cImZvcm0tZ3JvdXAgcC1yZWxhdGl2ZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJjZXJ0aWZpY2F0ZVR5cGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgVmVyaWZpZXJcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJjZXJ0aWZpY2F0ZVR5cGVcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJjZXJ0aWZpY2F0ZVR5cGVcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuY2VydGlmaWNhdGVUeXBlQ2hvc2VuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjZXJ0aWZpY2F0ZVR5cGUgb2YgY2VydGlmaWNhdGVUeXBlcyB8IGtleXZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImNlcnRpZmljYXRlVHlwZS5rZXlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGNlcnRpZmljYXRlVHlwZS52YWx1ZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwiYWRmc1wiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuY2VydGlmaWNhdGVUeXBlQ2hvc2VuID09PSBjZXJ0aWZpY2F0ZVR5cGUuQURGU1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInJvd1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBmb3I9XCJhZGZzTWFuaWZlc3RVcmxcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQURGUyBtYW5pZmVzdCBVUkxcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICdlLmcuIHt7IGV4YW1wbGUgfX0nXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6ICdodHRwczovL2FkZnMudGVuYW50LmNvbS9mZWRlcmF0aW9ubWV0YWRhdGEvZmVkZXJhdGlvbm1ldGFkYXRhLnhtbCdcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuYWRmc01hbmlmZXN0Lm1hbmlmZXN0VXJsXCJcbiAgICAgICAgICAgICAgbmFtZT1cImFkZnNNYW5pZmVzdFVybFwiXG4gICAgICAgICAgICAgIGlkPVwiYWRmc01hbmlmZXN0VXJsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBpZD1cImFkZFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuY2VydGlmaWNhdGVUeXBlQ2hvc2VuID09PSBjZXJ0aWZpY2F0ZVR5cGUuQVpVUkVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBmb3I9XCJwdWJsaWNLZXlEaXNjb3ZlcnlVcmxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBQdWJsaWMga2V5IGRpc2NvdmVyeSBVUkxcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInVybFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJwdWJsaWNLZXlEaXNjb3ZlcnlVcmxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAgICdlLmcuIHt7IGV4YW1wbGUgfX0nXG4gICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgOiB7IGV4YW1wbGU6ICdodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5kZS90ZW5hbnQvZGlzY292ZXJ5L2tleXMnIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJwdWJsaWNLZXlEaXNjb3ZlcnlVcmxcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuYWFkLnB1YmxpY0tleURpc2NvdmVyeVVybFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwiandrc1wiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuY2VydGlmaWNhdGVUeXBlQ2hvc2VuID09PSBjZXJ0aWZpY2F0ZVR5cGUuSldLU1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGZvcj1cImp3a3NQdWJsaWNLZXlEaXNjb3ZlcnlVcmxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBKV0tTIFVSTFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJqd2tzUHVibGljS2V5RGlzY292ZXJ5VXJsXCJcbiAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICAgICAgICdlLmcuIHt7IGV4YW1wbGUgfX0nIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6ICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLycgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImp3a3NVcmlcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcuandrcy5qd2tzVXJpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgaWQ9XCJtYW51YWxcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLmNlcnRpZmljYXRlVHlwZUNob3NlbiA9PT0gY2VydGlmaWNhdGVUeXBlLkNVU1RPTVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICBjbGFzcz1cImM4eS1maWVsZHNldCBwLTI0XCJcbiAgICAgICAgICAqbmdJZj1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5jdXN0b21DZXJ0aWZpY2F0ZXMubGVuZ3RoID4gMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGVnZW5kPlxuICAgICAgICAgICAge3sgJ01hbnVhbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgZm9yPVwiY2VydElkRmllbGRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnQ2VydGlmaWNhdGUgSUQgZmllbGQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgQ0VSVElGSUNBVEVfSURfRklFTERfUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImNlcnRJZEZpZWxkXCJcbiAgICAgICAgICAgICAgICBpZD1cImNlcnRJZEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5jZXJ0SWRGaWVsZFwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldCBwLTI0XCI+XG4gICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgIHt7ICdDZXJ0aWZpY2F0ZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGZpZWxkc2V0XG4gICAgICAgICAgICBjbGFzcz1cImM4eS1maWVsZHNldCBwLTE2XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgY3VzdG9tQ2VydGlmaWNhdGUgb2YgdGVtcGxhdGVNb2RlbC5zaWduYXR1cmVWZXJpZmljYXRpb25Db25maWcubWFudWFsXG4gICAgICAgICAgICAgICAgLmN1c3RvbUNlcnRpZmljYXRlcztcbiAgICAgICAgICAgICAgaW5kZXggYXMgY3J0SW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtc20tNlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5jdXN0b21DZXJ0aWZpY2F0ZXMubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCInY3VzdG9tQ2VydGlmaWNhdGVWYWx1ZScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZSBJRCB2YWx1ZVxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInY3VzdG9tQ2VydGlmaWNhdGVWYWx1ZScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInY3VzdG9tQ2VydGlmaWNhdGVWYWx1ZScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUNlcnRpZmljYXRlLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdUeXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGFsZ29yaXRobVR5cGUudmFsdWUubGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImM4eS1yYWRpbyBpbnB1dC1zbVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbGdvcml0aG1UeXBlIG9mIGFsZ29yaXRobVR5cGVzIHwga2V5dmFsdWU7IGluZGV4IGFzIGFsZ0luZGV4XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInYWxnJyArIGNydEluZGV4ICsgYWxnSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhbGdvcml0aG1UeXBlLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DZXJ0aWZpY2F0ZS5hbGdcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFsZ29yaXRobVR5cGUudmFsdWUubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3B1YmxpY0tleScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQ2VydGlmaWNhdGUuYWxnID09PSBhbGdvcml0aG1UeXBlcy5QQ0tTLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlIGluIFBFTSBmb3JtYXRcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCIncHVibGljS2V5JyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjdXN0b21DZXJ0aWZpY2F0ZS5hbGcgPT09IGFsZ29yaXRobVR5cGVzLlJTQS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBQdWJsaWMga2V5IGluIFBFTSBmb3JtYXRcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3B1YmxpY0tleScgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCIncHVibGljS2V5JyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tQ2VydGlmaWNhdGUucHVibGljS2V5XCJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCIndmFsaWRGcm9tUGlja2VyJyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ1ZhbGlkIGZyb20nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIid2YWxpZEZyb21QaWNrZXInICsgY3J0SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIndmFsaWRGcm9tUGlja2VyJyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1c3RvbUNlcnRpZmljYXRlLnZhbGlkRnJvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0RhdGUgZnJvbScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0RhdGUgZnJvbScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIGFkYXB0aXZlUG9zaXRpb246IHRydWUsIGRhdGVJbnB1dEZvcm1hdDogZGF0ZUlucHV0Rm9ybWF0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImN1c3RvbUNlcnRpZmljYXRlLnZhbGlkVGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwiJ3ZhbGlkVGlsbFBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdWYWxpZCB0aWxsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIndmFsaWRUaWxsUGlja2VyJyArIGNydEluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3ZhbGlkVGlsbFBpY2tlcicgKyBjcnRJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21DZXJ0aWZpY2F0ZS52YWxpZFRpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdEYXRlIHRvJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGF0ZSB0bycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtic0NvbmZpZ109XCJ7IGN1c3RvbVRvZGF5Q2xhc3M6ICd0b2RheScsIGFkYXB0aXZlUG9zaXRpb246IHRydWUsIGRhdGVJbnB1dEZvcm1hdDogZGF0ZUlucHV0Rm9ybWF0IH1cIlxuICAgICAgICAgICAgICAgICAgICAgIGJzRGF0ZXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImN1c3RvbUNlcnRpZmljYXRlLnZhbGlkRnJvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5jdXN0b21DZXJ0aWZpY2F0ZXMubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bGFiZWw+Jm5ic3A7PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSB2aXNpYmxlLXhzIHZpc2libGUtc21cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdEZWxldGUgY2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDdXN0b21DZXJ0aWZpY2F0ZShjdXN0b21DZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIGM4eUljb249XCJtaW51cy1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm0tci00XCJcbiAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnRGVsZXRlIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyIHZpc2libGUtbWQgdmlzaWJsZS1sZ1wiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnRGVsZXRlIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVsZXRlIGNlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbZGVsYXldPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDdXN0b21DZXJ0aWZpY2F0ZShjdXN0b21DZXJ0aWZpY2F0ZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBtLXQtOFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FkZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRlbXBsYXRlTW9kZWwuc2lnbmF0dXJlVmVyaWZpY2F0aW9uQ29uZmlnLm1hbnVhbC5hZGRDdXN0b21DZXJ0aWZpY2F0ZSgpXCJcbiAgICAgICAgICAgIG5hbWU9XCJhZGRDZXJ0aWZpY2F0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNFwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0FkZCBjZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -5,11 +5,11 @@ export class BreadcrumbItemComponent {
5
5
  this.injector = _injector;
6
6
  }
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: { icon: "icon", translate: "translate", label: "label", path: "path", injector: "injector" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <ng-content></ng-content>\n</ng-template>" }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BreadcrumbItemComponent, isStandalone: true, selector: "c8y-breadcrumb-item", inputs: { icon: "icon", translate: "translate", label: "label", path: "path", injector: "injector" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <ng-content></ng-content>\n</ng-template>" }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
11
11
  type: Component,
12
- args: [{ selector: 'c8y-breadcrumb-item', template: "<ng-template #template>\n <ng-content></ng-content>\n</ng-template>" }]
12
+ args: [{ selector: 'c8y-breadcrumb-item', standalone: true, template: "<ng-template #template>\n <ng-content></ng-content>\n</ng-template>" }]
13
13
  }], ctorParameters: () => [{ type: i0.EnvironmentInjector }], propDecorators: { icon: [{
14
14
  type: Input
15
15
  }], translate: [{
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
24
24
  type: ViewChild,
25
25
  args: ['template', { static: false }]
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYnJlYWRjcnVtYi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zRixNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUFZLFNBQThCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7K0dBdkJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHVRQ1BwQyxzRUFFYzs7NEZES0QsdUJBQXVCO2tCQUpuQyxTQUFTOytCQUNFLHFCQUFxQjt3RkFPdEIsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsS0FBSztzQkFBYixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNvQyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdG9yLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRJY29uc1N1Z2dlc3Rpb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pY29uLXNlbGVjdG9yL2ljb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJyZWFkY3J1bWItaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEljb24gdG8gZGlzcGxheSBpbiB0aGUgYnJlYWRjcnVtYiBpdGVtLlxuICAgKi9cbiAgQElucHV0KCkgaWNvbjogU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucztcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSB0cmFuc2xhdGVkLiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgdHJhbnNsYXRpb24uXG4gICAqIFRyYW5zbGF0aW9uIG9jY3VycyBpZiB0cmFuc2xhdGVkIHRleHQgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgQElucHV0KCkgdHJhbnNsYXRlOiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGxhYmVsIHRleHQgb2YgdGhlIGJyZWFkY3J1bWIgaXRlbS4gVGhpcyBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hdmlnYXRpb24gcGF0aCB0aGF0IHRoZSBicmVhZGNydW1iIGl0ZW0gbGlua3MgdG8uXG4gICAqL1xuICBASW5wdXQoKSBwYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluamVjdG9yOiBJbmplY3RvcjtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IpIHtcbiAgICB0aGlzLmluamVjdG9yID0gX2luamVjdG9yO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYnJlYWRjcnVtYi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS9icmVhZGNydW1iL2JyZWFkY3J1bWItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzRixNQUFNLE9BQU8sdUJBQXVCO0lBcUJsQyxZQUFZLFNBQThCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7K0dBdkJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDJSQ1JwQyxzRUFFYzs7NEZETUQsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQixjQUVuQixJQUFJO3dGQU1QLElBQUk7c0JBQVosS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDb0MsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RvciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3VwcG9ydGVkSWNvbnNTdWdnZXN0aW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvci9pY29ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1icmVhZGNydW1iLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBJY29uIHRvIGRpc3BsYXkgaW4gdGhlIGJyZWFkY3J1bWIgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpIGljb246IFN1cHBvcnRlZEljb25zU3VnZ2VzdGlvbnM7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBsYWJlbCBzaG91bGQgYmUgdHJhbnNsYXRlZC4gU2V0IHRvIHRydWUgdG8gZW5hYmxlIHRyYW5zbGF0aW9uLlxuICAgKiBUcmFuc2xhdGlvbiBvY2N1cnMgaWYgdHJhbnNsYXRlZCB0ZXh0IGlzIGF2YWlsYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0ZXh0IG9mIHRoZSBicmVhZGNydW1iIGl0ZW0uIFRoaXMgaXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYXZpZ2F0aW9uIHBhdGggdGhhdCB0aGUgYnJlYWRjcnVtYiBpdGVtIGxpbmtzIHRvLlxuICAgKi9cbiAgQElucHV0KCkgcGF0aDogc3RyaW5nO1xuICBASW5wdXQoKSBpbmplY3RvcjogSW5qZWN0b3I7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRlbXBsYXRlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoX2luamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yKSB7XG4gICAgdGhpcy5pbmplY3RvciA9IF9pbmplY3RvcjtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,11 +1,12 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { NgIf, NgClass, NgFor } from '@angular/common';
3
+ import { IconDirective } from '../common/icon.directive';
4
+ import { TooltipModule } from 'ngx-bootstrap/tooltip';
5
+ import { OutletDirective } from '../common/outlet.directive';
6
+ import { RouterLink } from '@angular/router';
7
+ import { C8yTranslatePipe } from '../i18n/c8y-translate.pipe';
2
8
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/router";
4
- import * as i2 from "../common/icon.directive";
5
- import * as i3 from "../common/outlet.directive";
6
- import * as i4 from "@angular/common";
7
- import * as i5 from "ngx-bootstrap/tooltip";
8
- import * as i6 from "../i18n/c8y-translate.pipe";
9
+ import * as i1 from "ngx-bootstrap/tooltip";
9
10
  export class BreadcrumbOutletComponent {
10
11
  constructor() {
11
12
  this.showAll = false;
@@ -18,12 +19,21 @@ export class BreadcrumbOutletComponent {
18
19
  return path?.replace(/^#\/?/, '');
19
20
  }
20
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BreadcrumbOutletComponent, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { 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: "directive", type: i5.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i6.C8yTranslatePipe, name: "translate" }] }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BreadcrumbOutletComponent, isStandalone: true, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
22
23
  }
23
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BreadcrumbOutletComponent, decorators: [{
24
25
  type: Component,
25
- args: [{ selector: 'c8y-breadcrumb-outlet', template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
26
+ args: [{ selector: 'c8y-breadcrumb-outlet', standalone: true, imports: [
27
+ NgIf,
28
+ NgClass,
29
+ IconDirective,
30
+ TooltipModule,
31
+ NgFor,
32
+ OutletDirective,
33
+ RouterLink,
34
+ C8yTranslatePipe
35
+ ], template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
26
36
  }], propDecorators: { breadcrumbs: [{
27
37
  type: Input
28
38
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9icmVhZGNydW1iL2JyZWFkY3J1bWItb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYnJlYWRjcnVtYi9icmVhZGNydW1iLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLHlCQUF5QjtJQUp0QztRQUtFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUCxnQkFBVyxHQUFpQixFQUFFLENBQUM7S0FRekM7SUFOQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxJQUFJO1FBQ2hCLE9BQU8sSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0FUVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixxR0NQdEMsZzVEQXdEQTs7NEZEakRhLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx1QkFBdUI7OEJBS3hCLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSAnLi9icmVhZGNydW1iLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJyZWFkY3J1bWItb3V0bGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWItb3V0bGV0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iT3V0bGV0Q29tcG9uZW50IHtcbiAgc2hvd0FsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBicmVhZGNydW1iczogQnJlYWRjcnVtYltdID0gW107XG5cbiAgLyoqXG4gICAqIEZvciB1cGdyYWRlIG9ubHkuIE9sZCBhbmd1bGFyanMgcm91dGVzIHN0YXJ0IHdpdGggaGFzaCwgbmV3IG9uZXMgbm90LlxuICAgKi9cbiAgbm9ybWFsaXplUGF0aChwYXRoKSB7XG4gICAgcmV0dXJuIHBhdGg/LnJlcGxhY2UoL14jXFwvPy8sICcnKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImJyZWFkY3J1bWJzLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICBtdWx0aXBsZTogYnJlYWRjcnVtYnMubGVuZ3RoID4gMSxcbiAgICBvcGVuOiBzaG93QWxsXG4gIH1cIlxuICAqbmdJZj1cImJyZWFkY3J1bWJzICYmIGJyZWFkY3J1bWJzLmxlbmd0aCA+IDBcIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4tc2hvdy1hbGwtYnJlYWRjcnVtYnMgcHVsbC1sZWZ0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdFeHBhbmQvY29sbGFwc2UgYWxsIGJyZWFkY3J1bWJzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKm5nSWY9XCJicmVhZGNydW1icy5sZW5ndGggPiAxXCJcbiAgICAoY2xpY2spPVwic2hvd0FsbCA9ICFzaG93QWxsXCJcbiAgPlxuICAgIDxpXG4gICAgICAqbmdJZj1cIiFzaG93QWxsXCJcbiAgICAgIFtjOHlJY29uXT1cIidjYXJldC1yaWdodCdcIlxuICAgICAgdG9vbHRpcD1cInt7ICdTaG93IGFsbCBicmVhZGNydW1icycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID48L2k+XG4gICAgPGlcbiAgICAgICpuZ0lmPVwic2hvd0FsbFwiXG4gICAgICBbYzh5SWNvbl09XCInY2FyZXQtZG93bidcIlxuICAgICAgdG9vbHRpcD1cInt7ICdFeHBhbmQgYnJlYWRjcnVtYnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cblxuICA8dWwgY2xhc3M9XCJicmVhZGNydW1icyB0ZXh0LW11dGVkXCIgKm5nRm9yPVwibGV0IGJyZWFkY3J1bWIgb2YgYnJlYWRjcnVtYnM7IGxldCBmaXJzdCA9IGZpcnN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpcnN0IHx8IHNob3dBbGxcIj5cbiAgICAgIDxsaSBjbGFzcz1cInRleHQtbXV0ZWRcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBicmVhZGNydW1iLml0ZW1zOyBsZXQgZmlyc3RJdGVtID0gZmlyc3RcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmlyc3RJdGVtXCI+Pjwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpjOHlPdXRsZXQ9XCJpdGVtLmNvbXBvbmVudCB8fCBpdGVtLnRlbXBsYXRlOyBpbmplY3RvcjogYnJlYWRjcnVtYi5pbmplY3RvclwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubGFiZWwgJiYgaXRlbS5wYXRoXCI+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vcm1hbGl6ZVBhdGgoaXRlbS5wYXRoKVwiXG4gICAgICAgICAgICBjbGFzcz1cIndvcmQtYnJlYWtcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJpdGVtLmljb25cIiAqbmdJZj1cImZpcnN0SXRlbVwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmxhYmVsICYmICFpdGVtLnBhdGhcIj5cbiAgICAgICAgICA8aSBbYzh5SWNvbl09XCJpdGVtLmljb25cIiAqbmdJZj1cImZpcnN0SXRlbVwiIGNsYXNzPVwibS1yLTRcIj48L2k+XG4gICAgICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9icmVhZGNydW1iL2JyZWFkY3J1bWItb3V0bGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvcmUvYnJlYWRjcnVtYi9icmVhZGNydW1iLW91dGxldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQWlCOUQsTUFBTSxPQUFPLHlCQUF5QjtJQWZ0QztRQWdCRSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ1AsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO0tBUXpDO0lBTkM7O09BRUc7SUFDSCxhQUFhLENBQUMsSUFBSTtRQUNoQixPQUFPLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBVFUseUJBQXlCO21HQUF6Qix5QkFBeUIseUhDeEJ0QyxnNURBd0RBLDRDRDFDSSxJQUFJLDZGQUNKLE9BQU8sb0ZBQ1AsYUFBYSwwRUFDYixhQUFhLGtrQkFDYixLQUFLLG1IQUNMLGVBQWUsMkhBQ2YsVUFBVSwrTkFDVixnQkFBZ0I7OzRGQUdQLHlCQUF5QjtrQkFmckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FFckIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsS0FBSzt3QkFDTCxlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsZ0JBQWdCO3FCQUNqQjs4QkFJUSxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gJy4vYnJlYWRjcnVtYi5tb2RlbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi4vY29tbW9uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vY29tbW9uL291dGxldC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDOHlUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vaTE4bi9jOHktdHJhbnNsYXRlLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYnJlYWRjcnVtYi1vdXRsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJlYWRjcnVtYi1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0NsYXNzLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBOZ0ZvcixcbiAgICBPdXRsZXREaXJlY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBDOHlUcmFuc2xhdGVQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYk91dGxldENvbXBvbmVudCB7XG4gIHNob3dBbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBGb3IgdXBncmFkZSBvbmx5LiBPbGQgYW5ndWxhcmpzIHJvdXRlcyBzdGFydCB3aXRoIGhhc2gsIG5ldyBvbmVzIG5vdC5cbiAgICovXG4gIG5vcm1hbGl6ZVBhdGgocGF0aCkge1xuICAgIHJldHVybiBwYXRoPy5yZXBsYWNlKC9eI1xcLz8vLCAnJyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJicmVhZGNydW1icy1jb250YWluZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgbXVsdGlwbGU6IGJyZWFkY3J1bWJzLmxlbmd0aCA+IDEsXG4gICAgb3Blbjogc2hvd0FsbFxuICB9XCJcbiAgKm5nSWY9XCJicmVhZGNydW1icyAmJiBicmVhZGNydW1icy5sZW5ndGggPiAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLXNob3ctYWxsLWJyZWFkY3J1bWJzIHB1bGwtbGVmdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgdGl0bGU9XCJ7eyAnRXhwYW5kL2NvbGxhcHNlIGFsbCBicmVhZGNydW1icycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpuZ0lmPVwiYnJlYWRjcnVtYnMubGVuZ3RoID4gMVwiXG4gICAgKGNsaWNrKT1cInNob3dBbGwgPSAhc2hvd0FsbFwiXG4gID5cbiAgICA8aVxuICAgICAgKm5nSWY9XCIhc2hvd0FsbFwiXG4gICAgICBbYzh5SWNvbl09XCInY2FyZXQtcmlnaHQnXCJcbiAgICAgIHRvb2x0aXA9XCJ7eyAnU2hvdyBhbGwgYnJlYWRjcnVtYnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+PC9pPlxuICAgIDxpXG4gICAgICAqbmdJZj1cInNob3dBbGxcIlxuICAgICAgW2M4eUljb25dPVwiJ2NhcmV0LWRvd24nXCJcbiAgICAgIHRvb2x0aXA9XCJ7eyAnRXhwYW5kIGJyZWFkY3J1bWJzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPjwvaT5cbiAgPC9idXR0b24+XG5cbiAgPHVsIGNsYXNzPVwiYnJlYWRjcnVtYnMgdGV4dC1tdXRlZFwiICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIGJyZWFkY3J1bWJzOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaXJzdCB8fCBzaG93QWxsXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0ZXh0LW11dGVkXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYnJlYWRjcnVtYi5pdGVtczsgbGV0IGZpcnN0SXRlbSA9IGZpcnN0XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpcnN0SXRlbVwiPj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqYzh5T3V0bGV0PVwiaXRlbS5jb21wb25lbnQgfHwgaXRlbS50ZW1wbGF0ZTsgaW5qZWN0b3I6IGJyZWFkY3J1bWIuaW5qZWN0b3JcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmxhYmVsICYmIGl0ZW0ucGF0aFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJub3JtYWxpemVQYXRoKGl0ZW0ucGF0aClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3b3JkLWJyZWFrXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiaXRlbS5pY29uXCIgKm5nSWY9XCJmaXJzdEl0ZW1cIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5sYWJlbCAmJiAhaXRlbS5wYXRoXCI+XG4gICAgICAgICAgPGkgW2M4eUljb25dPVwiaXRlbS5pY29uXCIgKm5nSWY9XCJmaXJzdEl0ZW1cIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgICAgICAgIDxzcGFuIHRpdGxlPVwie3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC91bD5cbjwvZGl2PlxuIl19