@c8y/ngx-components 1018.503.52 → 1018.503.56

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 (35) hide show
  1. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts +1 -1
  2. package/core/common/ApplicationOptions.d.ts +4 -1
  3. package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +12 -12
  4. package/esm2020/core/common/ApplicationOptions.mjs +1 -1
  5. package/esm2020/core/dashboard/wiget-time-context/widget-time-context.component.mjs +4 -3
  6. package/esm2020/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -1
  7. package/esm2020/protocol-lwm2m/components/configuration/typed-forms/connectivity-settings.component.mjs +8 -12
  8. package/esm2020/protocol-lwm2m/components/configuration/typed-forms/single-server-settings.component.mjs +21 -9
  9. package/esm2020/protocol-lwm2m/model/index.mjs +3 -1
  10. package/esm2020/protocol-lwm2m/services/lwm2m-configuration.service.mjs +64 -5
  11. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +10 -10
  12. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  13. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +30 -21
  14. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  15. package/fesm2015/c8y-ngx-components-protocol-lwm2m-model.mjs +2 -0
  16. package/fesm2015/c8y-ngx-components-protocol-lwm2m-model.mjs.map +1 -1
  17. package/fesm2015/c8y-ngx-components-protocol-lwm2m-services.mjs +63 -4
  18. package/fesm2015/c8y-ngx-components-protocol-lwm2m-services.mjs.map +1 -1
  19. package/fesm2015/c8y-ngx-components.mjs +3 -2
  20. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  21. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +10 -10
  22. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  23. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +27 -19
  24. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  25. package/fesm2020/c8y-ngx-components-protocol-lwm2m-model.mjs +2 -0
  26. package/fesm2020/c8y-ngx-components-protocol-lwm2m-model.mjs.map +1 -1
  27. package/fesm2020/c8y-ngx-components-protocol-lwm2m-services.mjs +63 -4
  28. package/fesm2020/c8y-ngx-components-protocol-lwm2m-services.mjs.map +1 -1
  29. package/fesm2020/c8y-ngx-components.mjs +3 -2
  30. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/protocol-lwm2m/components/configuration/typed-forms/connectivity-settings.component.d.ts +1 -4
  33. package/protocol-lwm2m/components/configuration/typed-forms/single-server-settings.component.d.ts +16 -22
  34. package/protocol-lwm2m/model/index.d.ts +11 -1
  35. package/protocol-lwm2m/services/lwm2m-configuration.service.d.ts +8 -1
@@ -1,9 +1,10 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { CoreModule, gettext } from '@c8y/ngx-components';
3
3
  import { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';
4
- import { Endpoint, Mode } from '@c8y/ngx-components/protocol-lwm2m/model';
4
+ import { Endpoint } from '@c8y/ngx-components/protocol-lwm2m/model';
5
5
  import { Lwm2mFormWrapperBase } from './form-wrapper-base.component';
6
6
  import { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';
7
+ import { delay, map } from 'rxjs/operators';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@c8y/ngx-components/protocol-lwm2m/services";
9
10
  import * as i2 from "@c8y/ngx-components";
@@ -16,15 +17,16 @@ export class Lwm2mFormConnectivitySettings extends Lwm2mFormWrapperBase {
16
17
  this.endpoint = Endpoint.connectivity;
17
18
  }
18
19
  createForm() {
19
- const DISABLED = 'DISABLED';
20
20
  const selects = [
21
21
  {
22
22
  key: 'bootstrapConnectivity',
23
- label: gettext('Bootstrap server authentication')
23
+ label: gettext('Bootstrap server authentication'),
24
+ options: this.service.securityModesRaw$.pipe(map(dictObjs => dictObjs.filter(o => o?.useInBootstrapConnectivity)), delay(1))
24
25
  },
25
26
  {
26
27
  key: 'serverConnectivity',
27
- label: gettext('Server authentication')
28
+ label: gettext('Server authentication'),
29
+ options: this.service.securityModesRaw$.pipe(map(dictObjs => dictObjs.filter(o => o?.useInServerConnectivity)), delay(1))
28
30
  }
29
31
  ];
30
32
  return [
@@ -40,13 +42,7 @@ export class Lwm2mFormConnectivitySettings extends Lwm2mFormWrapperBase {
40
42
  {
41
43
  type: '#securityMode',
42
44
  props: {
43
- options: [
44
- { label: DISABLED, value: DISABLED },
45
- ...Object.values(Mode).map(value => ({
46
- label: value.match('X509') ? 'X.509' : value,
47
- value
48
- }))
49
- ]
45
+ options: select.options
50
46
  }
51
47
  },
52
48
  { type: '#pskId' },
@@ -64,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
64
60
  type: Component,
65
61
  args: [{ imports: [CoreModule, Lwm2mUIThemeModule], standalone: true, template: "<formly-form\n *ngIf=\"fields?.length > 0; else empty\"\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n data-cy=\"lwm2m-device-configuration--formly-form\"\n></formly-form>\n<ng-template #empty>\n <c8y-ui-empty-state\n [icon]=\"'c8y-device-protocols'\"\n title=\"{{ 'No configuration selected' | translate }}\"\n subtitle=\"{{ 'Select a configuration on the left' | translate }}\"\n ></c8y-ui-empty-state>\n</ng-template>\n" }]
66
62
  }], ctorParameters: function () { return [{ type: i1.Lwm2mConfigurationService }]; } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGl2aXR5LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbi90eXBlZC1mb3Jtcy9jb25uZWN0aXZpdHktc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9jb25maWd1cmF0aW9uL3R5cGVkLWZvcm1zL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQXdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7O0FBT3hGLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxvQkFBMEM7SUFFM0YsWUFBc0IsT0FBd0Q7UUFDNUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREssWUFBTyxHQUFQLE9BQU8sQ0FBaUQ7UUFEcEUsYUFBUSxHQUFhLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFHckQsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDNUIsTUFBTSxPQUFPLEdBQUc7WUFDZDtnQkFDRSxHQUFHLEVBQUUsdUJBQXVCO2dCQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLGlDQUFpQyxDQUFDO2FBQ2xEO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLG9CQUFvQjtnQkFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQzthQUN4QztTQUNGLENBQUM7UUFFRixPQUFPO1lBQ0w7Z0JBQ0UsVUFBVSxFQUFFO29CQUNWLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3hCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzt3QkFDZixRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7d0JBQ3BCLEtBQUssRUFBRTs0QkFDTCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7eUJBQ3BCO3dCQUNELFVBQVUsRUFBRTs0QkFDVjtnQ0FDRSxJQUFJLEVBQUUsZUFBZTtnQ0FDckIsS0FBSyxFQUFFO29DQUNMLE9BQU8sRUFBRTt3Q0FDUCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTt3Q0FDcEMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7NENBQ25DLEtBQUssRUFBRyxLQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLOzRDQUN4RCxLQUFLO3lDQUNOLENBQUMsQ0FBQztxQ0FDSjtpQ0FDRjs2QkFDRjs0QkFDRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ2xCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTt5QkFDcEI7cUJBQ0YsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7MEhBaERVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLCtGQ1oxQyxnZUFlQSwyQ0ROWSxVQUFVLDJkQUFFLGtCQUFrQjsyRkFHN0IsNkJBQTZCO2tCQUx6QyxTQUFTOzhCQUVDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLGNBQzdCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEx3bTJtVUlUaGVtZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vZm9ybWx5JztcbmltcG9ydCB7IENvbm5lY3Rpdml0eVNldHRpbmdzLCBFbmRwb2ludCwgTW9kZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vbW9kZWwnO1xuaW1wb3J0IHsgTHdtMm1Gb3JtV3JhcHBlckJhc2UgfSBmcm9tICcuL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMd20ybUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgTHdtMm1VSVRoZW1lTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMd20ybUZvcm1Db25uZWN0aXZpdHlTZXR0aW5ncyBleHRlbmRzIEx3bTJtRm9ybVdyYXBwZXJCYXNlPENvbm5lY3Rpdml0eVNldHRpbmdzPiB7XG4gIHByb3RlY3RlZCBlbmRwb2ludDogRW5kcG9pbnQgPSBFbmRwb2ludC5jb25uZWN0aXZpdHk7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXJ2aWNlOiBMd20ybUNvbmZpZ3VyYXRpb25TZXJ2aWNlPENvbm5lY3Rpdml0eVNldHRpbmdzPikge1xuICAgIHN1cGVyKHNlcnZpY2UpO1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICBjb25zdCBESVNBQkxFRCA9ICdESVNBQkxFRCc7XG4gICAgY29uc3Qgc2VsZWN0cyA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYm9vdHN0cmFwQ29ubmVjdGl2aXR5JyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCBzZXJ2ZXIgYXV0aGVudGljYXRpb24nKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmVyQ29ubmVjdGl2aXR5JyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBhdXRoZW50aWNhdGlvbicpXG4gICAgICB9XG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAuLi5zZWxlY3RzLm1hcChzZWxlY3QgPT4gKHtcbiAgICAgICAgICAgIGtleTogc2VsZWN0LmtleSxcbiAgICAgICAgICAgIHdyYXBwZXJzOiBbJ2xlZ2VuZCddLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdC5sYWJlbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICcjc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7IGxhYmVsOiBESVNBQkxFRCwgdmFsdWU6IERJU0FCTEVEIH0sXG4gICAgICAgICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoTW9kZSkubWFwKHZhbHVlID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICh2YWx1ZSBhcyBzdHJpbmcpLm1hdGNoKCdYNTA5JykgPyAnWC41MDknIDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7IHR5cGU6ICcjcHNrSWQnIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJyNwc2tLZXknIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsIjxmb3JtbHktZm9ybVxuICAqbmdJZj1cImZpZWxkcz8ubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVwiXG4gIFttb2RlbF09XCJtb2RlbFwiXG4gIFtmb3JtXT1cImZvcm1cIlxuICBbZmllbGRzXT1cImZpZWxkc1wiXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICBkYXRhLWN5PVwibHdtMm0tZGV2aWNlLWNvbmZpZ3VyYXRpb24tLWZvcm1seS1mb3JtXCJcbj48L2Zvcm1seS1mb3JtPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLXByb3RvY29scydcIlxuICAgIHRpdGxlPVwie3sgJ05vIGNvbmZpZ3VyYXRpb24gc2VsZWN0ZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBzdWJ0aXRsZT1cInt7ICdTZWxlY3QgYSBjb25maWd1cmF0aW9uIG9uIHRoZSBsZWZ0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGl2aXR5LXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbi90eXBlZC1mb3Jtcy9jb25uZWN0aXZpdHktc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9jb25maWd1cmF0aW9uL3R5cGVkLWZvcm1zL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQXdCLFFBQVEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU81QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsb0JBQTBDO0lBRTNGLFlBQXNCLE9BQXdEO1FBQzVFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQURLLFlBQU8sR0FBUCxPQUFPLENBQWlEO1FBRHBFLGFBQVEsR0FBYSxRQUFRLENBQUMsWUFBWSxDQUFDO0lBR3JELENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxPQUFPLEdBQUc7WUFDZDtnQkFDRSxHQUFHLEVBQUUsdUJBQXVCO2dCQUM1QixLQUFLLEVBQUUsT0FBTyxDQUFDLGlDQUFpQyxDQUFDO2dCQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxFQUNwRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1Q7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxvQkFBb0I7Z0JBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUM7Z0JBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLEVBQ2pFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDVDthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU87WUFDTDtnQkFDRSxVQUFVLEVBQUU7b0JBQ1YsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDeEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO3dCQUNmLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQzt3QkFDcEIsS0FBSyxFQUFFOzRCQUNMLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzt5QkFDcEI7d0JBQ0QsVUFBVSxFQUFFOzRCQUNWO2dDQUNFLElBQUksRUFBRSxlQUFlO2dDQUNyQixLQUFLLEVBQUU7b0NBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2lDQUN4Qjs2QkFDRjs0QkFDRCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7NEJBQ2xCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTt5QkFDcEI7cUJBQ0YsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7MEhBakRVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLCtGQ2IxQyxnZUFlQSwyQ0RMWSxVQUFVLDJkQUFFLGtCQUFrQjsyRkFHN0IsNkJBQTZCO2tCQUx6QyxTQUFTOzhCQUVDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLGNBQzdCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEx3bTJtVUlUaGVtZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vZm9ybWx5JztcbmltcG9ydCB7IENvbm5lY3Rpdml0eVNldHRpbmdzLCBFbmRwb2ludCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vbW9kZWwnO1xuaW1wb3J0IHsgTHdtMm1Gb3JtV3JhcHBlckJhc2UgfSBmcm9tICcuL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMd20ybUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBkZWxheSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEx3bTJtVUlUaGVtZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTHdtMm1Gb3JtQ29ubmVjdGl2aXR5U2V0dGluZ3MgZXh0ZW5kcyBMd20ybUZvcm1XcmFwcGVyQmFzZTxDb25uZWN0aXZpdHlTZXR0aW5ncz4ge1xuICBwcm90ZWN0ZWQgZW5kcG9pbnQ6IEVuZHBvaW50ID0gRW5kcG9pbnQuY29ubmVjdGl2aXR5O1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxDb25uZWN0aXZpdHlTZXR0aW5ncz4pIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgY29uc3Qgc2VsZWN0cyA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYm9vdHN0cmFwQ29ubmVjdGl2aXR5JyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCBzZXJ2ZXIgYXV0aGVudGljYXRpb24nKSxcbiAgICAgICAgb3B0aW9uczogdGhpcy5zZXJ2aWNlLnNlY3VyaXR5TW9kZXNSYXckLnBpcGUoXG4gICAgICAgICAgbWFwKGRpY3RPYmpzID0+IGRpY3RPYmpzLmZpbHRlcihvID0+IG8/LnVzZUluQm9vdHN0cmFwQ29ubmVjdGl2aXR5KSksXG4gICAgICAgICAgZGVsYXkoMSlcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmVyQ29ubmVjdGl2aXR5JyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBhdXRoZW50aWNhdGlvbicpLFxuICAgICAgICBvcHRpb25zOiB0aGlzLnNlcnZpY2Uuc2VjdXJpdHlNb2Rlc1JhdyQucGlwZShcbiAgICAgICAgICBtYXAoZGljdE9ianMgPT4gZGljdE9ianMuZmlsdGVyKG8gPT4gbz8udXNlSW5TZXJ2ZXJDb25uZWN0aXZpdHkpKSxcbiAgICAgICAgICBkZWxheSgxKVxuICAgICAgICApXG4gICAgICB9XG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAuLi5zZWxlY3RzLm1hcChzZWxlY3QgPT4gKHtcbiAgICAgICAgICAgIGtleTogc2VsZWN0LmtleSxcbiAgICAgICAgICAgIHdyYXBwZXJzOiBbJ2xlZ2VuZCddLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdC5sYWJlbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICcjc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uczogc2VsZWN0Lm9wdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJyNwc2tJZCcgfSxcbiAgICAgICAgICAgICAgeyB0eXBlOiAnI3Bza0tleScgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuIiwiPGZvcm1seS1mb3JtXG4gICpuZ0lmPVwiZmllbGRzPy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCJcbiAgW21vZGVsXT1cIm1vZGVsXCJcbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIGRhdGEtY3k9XCJsd20ybS1kZXZpY2UtY29uZmlndXJhdGlvbi0tZm9ybWx5LWZvcm1cIlxuPjwvZm9ybWx5LWZvcm0+XG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvdG9jb2xzJ1wiXG4gICAgdGl0bGU9XCJ7eyAnTm8gY29uZmlndXJhdGlvbiBzZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHN1YnRpdGxlPVwie3sgJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gb24gdGhlIGxlZnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -4,7 +4,7 @@ import { Lwm2mUIThemeModule } from '@c8y/ngx-components/protocol-lwm2m/formly';
4
4
  import { Lwm2mConfigurationService } from '@c8y/ngx-components/protocol-lwm2m/services';
5
5
  import { BindingMode, CertificateUsage, Endpoint, Mode, ValidationType } from '@c8y/ngx-components/protocol-lwm2m/model';
6
6
  import { Lwm2mFormWrapperBase } from './form-wrapper-base.component';
7
- import { catchError, filter, map, takeUntil } from 'rxjs/operators';
7
+ import { catchError, delay, filter, map, takeUntil } from 'rxjs/operators';
8
8
  import { ActivatedRoute, Router, RouterModule } from '@angular/router';
9
9
  import { of } from 'rxjs';
10
10
  import * as i0 from "@angular/core";
@@ -73,11 +73,23 @@ export class Lwm2mFormSingleServerSettings extends Lwm2mFormWrapperBase {
73
73
  fieldGroup: [
74
74
  {
75
75
  type: '#securityMode',
76
- props: {
77
- options: Object.values(Mode).map(value => ({
78
- label: value.match('X509') ? 'X.509' : value,
79
- value
80
- }))
76
+ hooks: {
77
+ onInit: (field) => {
78
+ field.props.options = this.service.securityModesByScope$.pipe(delay(1));
79
+ this.service.getSecurityModeByScope('useInServerConnectivity');
80
+ return field.options.fieldChanges.pipe(filter(e => e.type === 'valueChanges' && e.field.key === 'bootstrap'), map(e => {
81
+ if (e.value) {
82
+ this.service.getSecurityModeByScope('useInBootstrapConnectivity');
83
+ if (field.model?.mode === Mode.X509_EST) {
84
+ field.formControl.setValue(Mode.NO_SEC);
85
+ }
86
+ }
87
+ else {
88
+ this.service.getSecurityModeByScope('useInServerConnectivity');
89
+ }
90
+ return e;
91
+ }));
92
+ }
81
93
  }
82
94
  },
83
95
  { type: '#pskId' },
@@ -95,7 +107,7 @@ export class Lwm2mFormSingleServerSettings extends Lwm2mFormWrapperBase {
95
107
  expressions: {
96
108
  'props.disabled': (field) => field?.options?.formState?.disabled,
97
109
  hide: (field) => {
98
- return field.model?.mode !== Mode.X509;
110
+ return field.model?.mode !== Mode.X509 && field.model?.mode !== Mode.X509_EST;
99
111
  }
100
112
  }
101
113
  },
@@ -112,7 +124,7 @@ export class Lwm2mFormSingleServerSettings extends Lwm2mFormWrapperBase {
112
124
  expressions: {
113
125
  'props.disabled': (field) => field?.options?.formState?.disabled,
114
126
  hide: (field) => {
115
- return field.model?.mode !== Mode.X509;
127
+ return field.model?.mode !== Mode.X509 && field.model?.mode !== Mode.X509_EST;
116
128
  }
117
129
  }
118
130
  },
@@ -350,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
350
362
  type: Component,
351
363
  args: [{ imports: [CoreModule, Lwm2mUIThemeModule, RouterModule], standalone: true, template: "<formly-form\n *ngIf=\"fields?.length > 0; else empty\"\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n data-cy=\"lwm2m-device-configuration--formly-form\"\n></formly-form>\n<ng-template #empty>\n <c8y-ui-empty-state\n [icon]=\"'c8y-device-protocols'\"\n title=\"{{ 'No configuration selected' | translate }}\"\n subtitle=\"{{ 'Select a configuration on the left' | translate }}\"\n ></c8y-ui-empty-state>\n</ng-template>\n" }]
352
364
  }], ctorParameters: function () { return [{ type: i1.Lwm2mConfigurationService }]; } });
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlcnZlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vdHlwZWQtZm9ybXMvc2luZ2xlLXNlcnZlci1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vdHlwZWQtZm9ybXMvZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEYsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLElBQUksRUFHSixjQUFjLEVBQ2YsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBTzFCLE1BQU0sT0FBTyw2QkFDWCxTQUFRLG9CQUFvQztJQVc1QyxZQUFzQixPQUFrRDtRQUN0RSxLQUFL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QztJQUMxQixDQUFDOzswSEEzWVUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsK0ZDeEIxQyxnZUFlQSwyQ0RNWSxVQUFVLDJkQUFFLGtCQUFrQiw4QkFBRSxZQUFZOzJGQUczQyw2QkFBNkI7a0JBTHpDLFNBQVM7OEJBRUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLGNBQzNDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIENvcmVNb2R1bGUsIERyb3BwZWRGaWxlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBMd20ybVVJVGhlbWVNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL2Zvcm1seSc7XG5pbXBvcnQgeyBMd20ybUNvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtcbiAgQmluZGluZ01vZGUsXG4gIENlcnRpZmljYXRlVXNhZ2UsXG4gIEVuZHBvaW50LFxuICBNb2RlLFxuICBTZWN1cml0eSxcbiAgU2VydmVyU2V0dGluZ3MsXG4gIFZhbGlkYXRpb25UeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vbW9kZWwnO1xuaW1wb3J0IHsgTHdtMm1Gb3JtV3JhcHBlckJhc2UgfSBmcm9tICcuL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgTHdtMm1VSVRoZW1lTW9kdWxlLCBSb3V0ZXJNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtRm9ybVNpbmdsZVNlcnZlclNldHRpbmdzXG4gIGV4dGVuZHMgTHdtMm1Gb3JtV3JhcHBlckJhc2U8U2VydmVyU2V0dGluZ3M+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIGlkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBlbmRwb2ludDogRW5kcG9pbnQgPSBFbmRwb2ludC5zZXJ2ZXJzO1xuICBwcm90ZWN0ZWQgYWxlcnQ6IEFsZXJ0U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBDT0FQID0gJ2NvYXA6Ly8nO1xuICBwcml2YXRlIHJlYWRvbmx5IENPQVBTID0gJ2NvYXBzOi8vJztcbiAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcjtcbiAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNlcnZpY2U6IEx3bTJtQ29uZmlndXJhdGlvblNlcnZpY2U8U2VydmVyU2V0dGluZ3M+KSB7XG4gICAgc3VwZXIoc2VydmljZSk7XG4gICAgdGhpcy5yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICB0aGlzLnJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICB0aGlzLmFsZXJ0ID0gaW5qZWN0KEFsZXJ0U2VydmljZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2Uuc2V0dGluZ3MkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZGF0YSA9PiAodGhpcy5tb2RlbCA9IGRhdGEpKTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0U2V0dGluZ3NGb3IoeyBlbmRwb2ludDogdGhpcy5lbmRwb2ludCwgaWQ6IHRoaXMuaWQgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHdyYXBwZXJzOiBbJ2xlZ2VuZCddLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnYm9vdHN0cmFwJyxcbiAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCb290c3RyYXAgc2VydmVyJyksXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGlzIGNvbmZpZ3VyYXRpb24gaXMgZm9yIGEgYm9vdHN0cmFwIHNlcnZlcicpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICd1cmknLFxuICAgICAgICAgICAgdHlwZTogJ2lucHV0LWFkZG9uJyxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXJ2ZXIgVVJJJyksXG4gICAgICAgICAgICAgIGFkZG9uTGFiZWw6IHRoaXMuQ09BUCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnPExXTTJNLXNlcnZlci1kb21haW4+Ojxjb2FwKHMpLXBvcnQ+J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLmFkZG9uTGFiZWwgPSB0aGlzLkNPQVA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIGUgPT4gZS50eXBlID09PSAndmFsdWVDaGFuZ2VzJyAmJiAoZS5maWVsZCA9PT0gZmllbGQgfHwgZS5maWVsZC5rZXkgPT09ICdtb2RlJylcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBtYXAoZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmZpZWxkLmtleSA9PT0gJ3VyaScpXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAoKGUudmFsdWUgYXMgc3RyaW5nKSB8fCAnJykucmVwbGFjZSgvXi4qOlxcL1xcLy9pLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5hZGRvbkxhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5tb2RlbD8uc2VjdXJpdHk/Lm1vZGUgPT09IE1vZGUuTk9fU0VDID8gdGhpcy5DT0FQIDogdGhpcy5DT0FQUztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3NlY3VyaXR5JyxcbiAgICAgICAgICAgIHdyYXBwZXJzOiBbJ2xlZ2VuZCddLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdTZWN1cml0eSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnI3NlY3VyaXR5TW9kZScsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IE9iamVjdC52YWx1ZXMoTW9kZSkubWFwKHZhbHVlID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAodmFsdWUgYXMgc3RyaW5nKS5tYXRjaCgnWDUwOScpID8gJ1guNTA5JyA6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7IHR5cGU6ICcjcHNrSWQnIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJyNwc2tLZXknIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICd4NTA5U2VydmVyQ2VydGlmaWNhdGVOYW1lJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBjZXJ0aWZpY2F0ZScpLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ05vdCB3cml0dGVuYHNldHRpbmdgJyksXG4gICAgICAgICAgICAgICAgICBhY2NlcHRVbmRlZmluZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICByZW1vdmVFeGVtcGxpR3JhdGlhOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5zZXJ2aWNlLmNlcnRpZmljYXRlcyQucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKGNlcnRzID0+IGNlcnRzLm1hcCh2YWx1ZSA9PiAoeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pKSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAncHJvcHMuZGlzYWJsZWQnOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWVsZD8ub3B0aW9ucz8uZm9ybVN0YXRlPy5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIGhpZGU6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLm1vZGVsPy5tb2RlICE9PSBNb2RlLlg1MDk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnY2VydGlmaWNhdGVVc2FnZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdDZXJ0aWZpY2F0ZSB1c2FnZScpLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ05vdCB3cml0dGVuYHNldHRpbmdgJyksXG4gICAgICAgICAgICAgICAgICBhY2NlcHRVbmRlZmluZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICByZW1vdmVFeGVtcGxpR3JhdGlhOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczogT2JqZWN0LnZhbHVlcyhDZXJ0aWZpY2F0ZVVzYWdlKS5tYXAodmFsdWUgPT4gKHsgbGFiZWw6IHZhbHVlLCB2YWx1ZSB9KSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAncHJvcHMuZGlzYWJsZWQnOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWVsZD8ub3B0aW9ucz8uZm9ybVN0YXRlPy5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIGhpZGU6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLm1vZGVsPy5tb2RlICE9PSBNb2RlLlg1MDk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnY2VydGlmaWNhdGVEcm9wQXJlYScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBhY2NlcHQ6ICdwZW0nLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NlcnRpZmljYXRlJyksXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnT25lIC5wZW0gZmlsZSBtYXkgYmUgdXBsb2FkZWQnKSxcbiAgICAgICAgICAgICAgICAgIGZvcmNlSGlkZUxpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICBkcm9wcGVkOiBhc3luYyAoZmlsZXM6IERyb3BwZWRGaWxlW10pID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hDb21tb25OYW1lKFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jbGVhblVwQmFzZTY0RGF0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIChhd2FpdCBmaWxlcz8ucG9wKCk/LnJlYWRBc0RhdGFVUkwoKSkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAgICAgaGlkZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm1vZGVsPy5tb2RlICE9PSBNb2RlLlg1MDkgfHwgISFmaWVsZC5tb2RlbD8ueDUwOUNlcnRpZmljYXRlQ29tbW9uTmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ3g1MDlDZXJ0aWZpY2F0ZUNvbW1vbk5hbWUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWxlLXBpY2stcmVwbGFjZScsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdDZXJ0aWZpY2F0ZSBDb21tb24gTmFtZScpLFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlOiAoKSA9PiB0aGlzLnJlbW92ZUNlcnRpZmljYXRlQW5kQ29tbW9uTmFtZSgpLFxuICAgICAgICAgICAgICAgICAgb25QaWNrOiBjZXJ0aWZpY2F0ZSA9PiB0aGlzLnBhdGNoQ29tbW9uTmFtZShjZXJ0aWZpY2F0ZSlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAncHJvcHMuZGlzYWJsZWQnOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWVsZD8ub3B0aW9ucz8uZm9ybVN0YXRlPy5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIGhpZGU6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5tb2RlbD8ubW9kZSAhPT0gTW9kZS5YNTA5IHx8ICFmaWVsZC5tb2RlbD8ueDUwOUNlcnRpZmljYXRlQ29tbW9uTmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ3ByaXZhdGVLZXlEcm9wQXJlYScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBhY2NlcHQ6ICdwZW0nLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1ByaXZhdGUga2V5JyksXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnT25lIC5wZW0gZmlsZSBtYXkgYmUgdXBsb2FkZWQnKSxcbiAgICAgICAgICAgICAgICAgIGZvcmNlSGlkZUxpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGRyb3BwZWQ6IGFzeW5jIChmaWxlczogRHJvcHBlZEZpbGVbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXRjaEZpbmdlcnByaW50KFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jbGVhblVwQmFzZTY0RGF0YShcbiAgICAgICAgICAgICAgICAgICAgICAgIChhd2FpdCBmaWxlcz8ucG9wKCk/LnJlYWRBc0RhdGFVUkwoKSkgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAgICAgJ3Byb3BzLmRpc2FibGVkJzogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgICAgICAgICAgZmllbGQ/Lm9wdGlvbnM/LmZvcm1TdGF0ZT8uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICBoaWRlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQubW9kZWw/Lm1vZGUgIT09IE1vZGUuWDUwOSB8fCAhIWZpZWxkLm1vZGVsPy54NTA5UHJpdmF0ZUtleUZpbmdlclByaW50XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAneDUwOVByaXZhdGVLZXlGaW5nZXJQcmludCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ZpbGUtcGljay1yZXBsYWNlJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ZpbmdlcnByaW50IG9mIHRoZSBwcml2YXRlIGtleScpLFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlOiAoKSA9PiB0aGlzLnJlbW92ZVByaXZhdGVLZXlBbmRGaW5nZXJwcmludCgpLFxuICAgICAgICAgICAgICAgICAgb25QaWNrOiBwcml2YXRlS2V5ID0+IHRoaXMucGF0Y2hGaW5nZXJwcmludChwcml2YXRlS2V5KVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICdwcm9wcy5kaXNhYmxlZCc6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPy5vcHRpb25zPy5mb3JtU3RhdGU/LmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgaGlkZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm1vZGVsPy5tb2RlICE9PSBNb2RlLlg1MDkgfHwgIWZpZWxkLm1vZGVsPy54NTA5UHJpdmF0ZUtleUZpbmdlclByaW50XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3cmFwcGVyczogWydsZWdlbmQnXSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXJ2ZXIgb2JqZWN0IGNvbmZpZ3VyYXRpb24nKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ3N0b3JlTm90aWZpY2F0aW9ucycsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1N0b3JlIG5vdGlmaWNhdGlvbnMnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAgICAgICAgICAgICAnTFdNMk0gQ2xpZW50IHRvIHN0b3JlIG5vdGlmeSBvcGVyYXRpb25zIHdoZW4gY2xpZW50IGlzIG9mZmxpbmUgb3IgTFdNMk0gU2VydmVyIGlzIGRpc2FibGVkLiBBbHNvIHVzZWQgdG8gZm9yd2FyZCB0aGVtIHRvIHRoZSBMV00yTSBTZXJ2ZXIgd2hlbiB0aGUgY2xpZW50IGlzIGFibGUgdG8gY29ubmVjdC4nXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnc2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTaG9ydCBTZXJ2ZXIgSUQnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBudW1iZXJzJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJzEnLFxuICAgICAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAncmVnaXN0cmF0aW9uTGlmZXRpbWUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVnaXN0cmF0aW9uIGxpZmV0aW1lJyksXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICc2MDAnLFxuICAgICAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnZGVmYXVsdE1pblBlcmlvZCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZWZhdWx0IG1pbmltdW0gcGVyaW9kJyksXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcxMCcsXG4gICAgICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdkZWZhdWx0TWF4UGVyaW9kJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWF4aW11bSBwZXJpb2QnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJzYwJyxcbiAgICAgICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ2JpbmRpbmdNb2RlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IEJpbmRpbmdNb2RlLlUsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCaW5kaW5nIG1vZGUnKSxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IE9iamVjdC52YWx1ZXMoQmluZGluZ01vZGUpLm1hcCh2YWx1ZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDpcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PT0gQmluZGluZ01vZGUuVSA/IGdldHRleHQoJ1VEUCcpIDogZ2V0dGV4dCgnVURQIHdpdGggcXVldWUgbW9kZScpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnZGlzYWJsZVRpbWVvdXQnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGlzYWJsZSB0aW1lb3V0JyksXG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICc4NjQwMCcsXG4gICAgICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC51cGRhdGUkKHtcbiAgICAgICAgLi4udGhpcy5tb2RlbCxcbiAgICAgICAgdXJpOiB0aGlzLmdldEZ1bGxVUkkoKSxcbiAgICAgICAgZW5kcG9pbnQ6IEVuZHBvaW50LnNlcnZlcnNcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcnIpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoX25leHQgPT4gdGhpcy5jYW5jZWwoKSk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5zZXJ2aWNlXG4gICAgICAuZGVsZXRlU2VydmVyJCh0aGlzLm1vZGVsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXJyKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKF9uZXh0ID0+IHRoaXMuY2FuY2VsKCkpO1xuICB9XG5cbiAgY2FuY2VsID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLi9zZXJ2ZXJzJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcblxuICBwcm90ZWN0ZWQgZ2V0RnVsbFVSSSgpIHtcbiAgICBjb25zdCB7XG4gICAgICB1cmksXG4gICAgICBzZWN1cml0eTogeyBtb2RlID0gTW9kZS5OT19TRUMgfVxuICAgIH0gPSB0aGlzLm1vZGVsO1xuICAgIHJldHVybiAobW9kZSA9PT0gTW9kZS5OT19TRUMgPyB0aGlzLkNPQVAgOiB0aGlzLkNPQVBTKS5jb25jYXQodXJpKTtcbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hGaW5nZXJwcmludChwcml2YXRlS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAocHJpdmF0ZUtleT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC52YWxpZGF0ZShwcml2YXRlS2V5LCBWYWxpZGF0aW9uVHlwZS5QUklWQVRFX0tFWSlcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGZpbmdlcnByaW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2VjdXJpdHkueDUwOVByaXZhdGVLZXkgPSBwcml2YXRlS2V5O1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWN1cml0eS54NTA5UHJpdmF0ZUtleUZpbmdlclByaW50ID0gZmluZ2VycHJpbnQ7XG4gICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgX2Vycm9yID0+IHtcbiAgICAgICAgICAgIC8vIGFscmVhZHkgY2F0Y2hlZFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhdGNoQ29tbW9uTmFtZShjZXJ0aWZpY2F0ZTogc3RyaW5nKSB7XG4gICAgaWYgKGNlcnRpZmljYXRlPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLnZhbGlkYXRlKGNlcnRpZmljYXRlLCBWYWxpZGF0aW9uVHlwZS5YNTA5KVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgY29tbW9uTmFtZSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNlY3VyaXR5Lng1MDlDZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlO1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWN1cml0eS54NTA5Q2VydGlmaWNhdGVDb21tb25OYW1lID0gY29tbW9uTmFtZTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBfZXJyb3IgPT4ge1xuICAgICAgICAgICAgLy8gYWxyZWFkeSBjYXRjaGVkXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUHJpdmF0ZUtleUFuZEZpbmdlcnByaW50KCkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIHNlY3VyaXR5OiB7XG4gICAgICAgIHg1MDlQcml2YXRlS2V5OiBudWxsLFxuICAgICAgICB4NTA5UHJpdmF0ZUtleUZpbmdlclByaW50OiBudWxsXG4gICAgICB9IGFzIFBhcnRpYWw8U2VjdXJpdHk+XG4gICAgfSk7XG4gICAgZGVsZXRlIHRoaXMubW9kZWw/LnNlY3VyaXR5Py54NTA5UHJpdmF0ZUtleTtcbiAgICBkZWxldGUgdGhpcy5tb2RlbD8uc2VjdXJpdHk/Lng1MDlQcml2YXRlS2V5RmluZ2VyUHJpbnQ7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUNlcnRpZmljYXRlQW5kQ29tbW9uTmFtZSgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBzZWN1cml0eToge1xuICAgICAgICB4NTA5Q2VydGlmaWNhdGU6IG51bGwsXG4gICAgICAgIHg1MDlDZXJ0aWZpY2F0ZUNvbW1vbk5hbWU6IG51bGxcbiAgICAgIH0gYXMgUGFydGlhbDxTZWN1cml0eT5cbiAgICB9KTtcbiAgICBkZWxldGUgdGhpcy5tb2RlbD8uc2VjdXJpdHk/Lng1MDlDZXJ0aWZpY2F0ZUNvbW1vbk5hbWU7XG4gICAgZGVsZXRlIHRoaXMubW9kZWw/LnNlY3VyaXR5Py54NTA5Q2VydGlmaWNhdGU7XG4gICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gIH1cbn1cbiIsIjxmb3JtbHktZm9ybVxuICAqbmdJZj1cImZpZWxkcz8ubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVwiXG4gIFttb2RlbF09XCJtb2RlbFwiXG4gIFtmb3JtXT1cImZvcm1cIlxuICBbZmllbGRzXT1cImZpZWxkc1wiXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICBkYXRhLWN5PVwibHdtMm0tZGV2aWNlLWNvbmZpZ3VyYXRpb24tLWZvcm1seS1mb3JtXCJcbj48L2Zvcm1seS1mb3JtPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgIFtpY29uXT1cIidjOHktZGV2aWNlLXByb3RvY29scydcIlxuICAgIHRpdGxlPVwie3sgJ05vIGNvbmZpZ3VyYXRpb24gc2VsZWN0ZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBzdWJ0aXRsZT1cInt7ICdTZWxlY3QgYSBjb25maWd1cmF0aW9uIG9uIHRoZSBsZWZ0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlcnZlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vdHlwZWQtZm9ybXMvc2luZ2xlLXNlcnZlci1zZXR0aW5ncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2NvbmZpZ3VyYXRpb24vdHlwZWQtZm9ybXMvZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEYsT0FBTyxFQUNMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLElBQUksRUFHSixjQUFjLEVBQ2YsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU8xQixNQUFNLE9BQU8sNkJBQ1gsU0FBUSxvQkFBb0M7SUFXNUMsWUFBc0IsT0FBa0Q7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LENBQUM7WUFDMUIsQ0FBQyxFQUNELE1BQU0sQ0FBQyxFQUFFO2dCQUNQLGtCQUFrQjtZQUNwQixDQUFDLENBQ0YsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQixRQUFRLEVBQUU7Z0JBQ1IsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLHlCQUF5QixFQUFFLElBQUk7YUFDWDtTQUN2QixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQixRQUFRLEVBQUU7Z0JBQ1IsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLHlCQUF5QixFQUFFLElBQUk7YUFDWDtTQUN2QixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7MEhBelpVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLCtGQ3hCMUMsZ2VBZUEsMkNETVksVUFBVSwyZEFBRSxrQkFBa0IsOEJBQUUsWUFBWTsyRkFHM0MsNkJBQTZCO2tCQUx6QyxTQUFTOzhCQUVDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxjQUMzQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBDb3JlTW9kdWxlLCBEcm9wcGVkRmlsZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTHdtMm1VSVRoZW1lTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9mb3JtbHknO1xuaW1wb3J0IHsgTHdtMm1Db25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vc2VydmljZXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7XG4gIEJpbmRpbmdNb2RlLFxuICBDZXJ0aWZpY2F0ZVVzYWdlLFxuICBFbmRwb2ludCxcbiAgTW9kZSxcbiAgU2VjdXJpdHksXG4gIFNlcnZlclNldHRpbmdzLFxuICBWYWxpZGF0aW9uVHlwZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcbmltcG9ydCB7IEx3bTJtRm9ybVdyYXBwZXJCYXNlIH0gZnJvbSAnLi9mb3JtLXdyYXBwZXItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVsYXksIGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXdyYXBwZXItYmFzZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBMd20ybVVJVGhlbWVNb2R1bGUsIFJvdXRlck1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTHdtMm1Gb3JtU2luZ2xlU2VydmVyU2V0dGluZ3NcbiAgZXh0ZW5kcyBMd20ybUZvcm1XcmFwcGVyQmFzZTxTZXJ2ZXJTZXR0aW5ncz5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgaWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGVuZHBvaW50OiBFbmRwb2ludCA9IEVuZHBvaW50LnNlcnZlcnM7XG4gIHByb3RlY3RlZCBhbGVydDogQWxlcnRTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IENPQVAgPSAnY29hcDovLyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ09BUFMgPSAnY29hcHM6Ly8nO1xuICBwcml2YXRlIHJvdXRlcjogUm91dGVyO1xuICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2VydmljZTogTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxTZXJ2ZXJTZXR0aW5ncz4pIHtcbiAgICBzdXBlcihzZXJ2aWNlKTtcbiAgICB0aGlzLnJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHRoaXMucm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMuYWxlcnQgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5zZXR0aW5ncyQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShkYXRhID0+ICh0aGlzLm1vZGVsID0gZGF0YSkpO1xuICAgIHRoaXMuc2VydmljZS5nZXRTZXR0aW5nc0Zvcih7IGVuZHBvaW50OiB0aGlzLmVuZHBvaW50LCBpZDogdGhpcy5pZCB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgd3JhcHBlcnM6IFsnbGVnZW5kJ10sXG4gICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdib290c3RyYXAnLFxuICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCBzZXJ2ZXInKSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoaXMgY29uZmlndXJhdGlvbiBpcyBmb3IgYSBib290c3RyYXAgc2VydmVyJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3VyaScsXG4gICAgICAgICAgICB0eXBlOiAnaW5wdXQtYWRkb24nLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBVUkknKSxcbiAgICAgICAgICAgICAgYWRkb25MYWJlbDogdGhpcy5DT0FQLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICc8TFdNMk0tc2VydmVyLWRvbWFpbj46PGNvYXAocyktcG9ydD4nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMuYWRkb25MYWJlbCA9IHRoaXMuQ09BUDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMucGlwZShcbiAgICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgZSA9PiBlLnR5cGUgPT09ICd2YWx1ZUNoYW5nZXMnICYmIChlLmZpZWxkID09PSBmaWVsZCB8fCBlLmZpZWxkLmtleSA9PT0gJ21vZGUnKVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG1hcChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZmllbGQua2V5ID09PSAndXJpJylcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICgoZS52YWx1ZSBhcyBzdHJpbmcpIHx8ICcnKS5yZXBsYWNlKC9eLio6XFwvXFwvL2ksICcnKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLmFkZG9uTGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm1vZGVsPy5zZWN1cml0eT8ubW9kZSA9PT0gTW9kZS5OT19TRUMgPyB0aGlzLkNPQVAgOiB0aGlzLkNPQVBTO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnc2VjdXJpdHknLFxuICAgICAgICAgICAgd3JhcHBlcnM6IFsnbGVnZW5kJ10sXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICBsYWJlbDogJ1NlY3VyaXR5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICcjc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm9wdGlvbnMgPSB0aGlzLnNlcnZpY2Uuc2VjdXJpdHlNb2Rlc0J5U2NvcGUkLnBpcGUoZGVsYXkoMSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0U2VjdXJpdHlNb2RlQnlTY29wZSgndXNlSW5TZXJ2ZXJDb25uZWN0aXZpdHknKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLm9wdGlvbnMuZmllbGRDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGUgPT4gZS50eXBlID09PSAndmFsdWVDaGFuZ2VzJyAmJiBlLmZpZWxkLmtleSA9PT0gJ2Jvb3RzdHJhcCcpLFxuICAgICAgICAgICAgICAgICAgICAgIG1hcChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRTZWN1cml0eU1vZGVCeVNjb3BlKCd1c2VJbkJvb3RzdHJhcENvbm5lY3Rpdml0eScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubW9kZWw/Lm1vZGUgPT09IE1vZGUuWDUwOV9FU1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShNb2RlLk5PX1NFQyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZS5nZXRTZWN1cml0eU1vZGVCeVNjb3BlKCd1c2VJblNlcnZlckNvbm5lY3Rpdml0eScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHsgdHlwZTogJyNwc2tJZCcgfSxcbiAgICAgICAgICAgICAgeyB0eXBlOiAnI3Bza0tleScgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ3g1MDlTZXJ2ZXJDZXJ0aWZpY2F0ZU5hbWUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VydmVyIGNlcnRpZmljYXRlJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnTm90IHdyaXR0ZW5gc2V0dGluZ2AnKSxcbiAgICAgICAgICAgICAgICAgIGFjY2VwdFVuZGVmaW5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHJlbW92ZUV4ZW1wbGlHcmF0aWE6IHRydWUsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLnNlcnZpY2UuY2VydGlmaWNhdGVzJC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoY2VydHMgPT4gY2VydHMubWFwKHZhbHVlID0+ICh7IGxhYmVsOiB2YWx1ZSwgdmFsdWUgfSkpKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICdwcm9wcy5kaXNhYmxlZCc6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPy5vcHRpb25zPy5mb3JtU3RhdGU/LmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgaGlkZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQubW9kZWw/Lm1vZGUgIT09IE1vZGUuWDUwOSAmJiBmaWVsZC5tb2RlbD8ubW9kZSAhPT0gTW9kZS5YNTA5X0VTVDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdjZXJ0aWZpY2F0ZVVzYWdlJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NlcnRpZmljYXRlIHVzYWdlJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnTm90IHdyaXR0ZW5gc2V0dGluZ2AnKSxcbiAgICAgICAgICAgICAgICAgIGFjY2VwdFVuZGVmaW5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHJlbW92ZUV4ZW1wbGlHcmF0aWE6IHRydWUsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiBPYmplY3QudmFsdWVzKENlcnRpZmljYXRlVXNhZ2UpLm1hcCh2YWx1ZSA9PiAoeyBsYWJlbDogdmFsdWUsIHZhbHVlIH0pKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICdwcm9wcy5kaXNhYmxlZCc6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPy5vcHRpb25zPy5mb3JtU3RhdGU/LmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgaGlkZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQubW9kZWw/Lm1vZGUgIT09IE1vZGUuWDUwOSAmJiBmaWVsZC5tb2RlbD8ubW9kZSAhPT0gTW9kZS5YNTA5X0VTVDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdjZXJ0aWZpY2F0ZURyb3BBcmVhJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmlsZScsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGFjY2VwdDogJ3BlbScsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ2VydGlmaWNhdGUnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdPbmUgLnBlbSBmaWxlIG1heSBiZSB1cGxvYWRlZCcpLFxuICAgICAgICAgICAgICAgICAgZm9yY2VIaWRlTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGRyb3BwZWQ6IGFzeW5jIChmaWxlczogRHJvcHBlZEZpbGVbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXRjaENvbW1vbk5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNsZWFuVXBCYXNlNjREYXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGF3YWl0IGZpbGVzPy5wb3AoKT8ucmVhZEFzRGF0YVVSTCgpKSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICBoaWRlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQubW9kZWw/Lm1vZGUgIT09IE1vZGUuWDUwOSB8fCAhIWZpZWxkLm1vZGVsPy54NTA5Q2VydGlmaWNhdGVDb21tb25OYW1lXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAneDUwOUNlcnRpZmljYXRlQ29tbW9uTmFtZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ZpbGUtcGljay1yZXBsYWNlJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0NlcnRpZmljYXRlIENvbW1vbiBOYW1lJyksXG4gICAgICAgICAgICAgICAgICByZW1vdmU6ICgpID0+IHRoaXMucmVtb3ZlQ2VydGlmaWNhdGVBbmRDb21tb25OYW1lKCksXG4gICAgICAgICAgICAgICAgICBvblBpY2s6IGNlcnRpZmljYXRlID0+IHRoaXMucGF0Y2hDb21tb25OYW1lKGNlcnRpZmljYXRlKVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IHtcbiAgICAgICAgICAgICAgICAgICdwcm9wcy5kaXNhYmxlZCc6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkPy5vcHRpb25zPy5mb3JtU3RhdGU/LmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgaGlkZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm1vZGVsPy5tb2RlICE9PSBNb2RlLlg1MDkgfHwgIWZpZWxkLm1vZGVsPy54NTA5Q2VydGlmaWNhdGVDb21tb25OYW1lXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAncHJpdmF0ZUtleURyb3BBcmVhJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmlsZScsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGFjY2VwdDogJ3BlbScsXG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUHJpdmF0ZSBrZXknKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdPbmUgLnBlbSBmaWxlIG1heSBiZSB1cGxvYWRlZCcpLFxuICAgICAgICAgICAgICAgICAgZm9yY2VIaWRlTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgZHJvcHBlZDogYXN5bmMgKGZpbGVzOiBEcm9wcGVkRmlsZVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGNoRmluZ2VycHJpbnQoXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNsZWFuVXBCYXNlNjREYXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGF3YWl0IGZpbGVzPy5wb3AoKT8ucmVhZEFzRGF0YVVSTCgpKSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAncHJvcHMuZGlzYWJsZWQnOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgICAgICAgICBmaWVsZD8ub3B0aW9ucz8uZm9ybVN0YXRlPy5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgIGhpZGU6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5tb2RlbD8ubW9kZSAhPT0gTW9kZS5YNTA5IHx8ICEhZmllbGQubW9kZWw/Lng1MDlQcml2YXRlS2V5RmluZ2VyUHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICd4NTA5UHJpdmF0ZUtleUZpbmdlclByaW50JyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmlsZS1waWNrLXJlcGxhY2UnLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRmluZ2VycHJpbnQgb2YgdGhlIHByaXZhdGUga2V5JyksXG4gICAgICAgICAgICAgICAgICByZW1vdmU6ICgpID0+IHRoaXMucmVtb3ZlUHJpdmF0ZUtleUFuZEZpbmdlcnByaW50KCksXG4gICAgICAgICAgICAgICAgICBvblBpY2s6IHByaXZhdGVLZXkgPT4gdGhpcy5wYXRjaEZpbmdlcnByaW50KHByaXZhdGVLZXkpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge1xuICAgICAgICAgICAgICAgICAgJ3Byb3BzLmRpc2FibGVkJzogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgICAgICAgICAgZmllbGQ/Lm9wdGlvbnM/LmZvcm1TdGF0ZT8uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICBoaWRlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQubW9kZWw/Lm1vZGUgIT09IE1vZGUuWDUwOSB8fCAhZmllbGQubW9kZWw/Lng1MDlQcml2YXRlS2V5RmluZ2VyUHJpbnRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdyYXBwZXJzOiBbJ2xlZ2VuZCddLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBvYmplY3QgY29uZmlndXJhdGlvbicpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnc3RvcmVOb3RpZmljYXRpb25zJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJyxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU3RvcmUgbm90aWZpY2F0aW9ucycpLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAgICAgICAgICAgICAgICdMV00yTSBDbGllbnQgdG8gc3RvcmUgbm90aWZ5IG9wZXJhdGlvbnMgd2hlbiBjbGllbnQgaXMgb2ZmbGluZSBvciBMV00yTSBTZXJ2ZXIgaXMgZGlzYWJsZWQuIEFsc28gdXNlZCB0byBmb3J3YXJkIHRoZW0gdG8gdGhlIExXTTJNIFNlcnZlciB3aGVuIHRoZSBjbGllbnQgaXMgYWJsZSB0byBjb25uZWN0LidcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdzaG9ydFNlcnZlcklkJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Nob3J0IFNlcnZlciBJRCcpLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ2luIG51bWJlcnMnKSxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMScsXG4gICAgICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdyZWdpc3RyYXRpb25MaWZldGltZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWdpc3RyYXRpb24gbGlmZXRpbWUnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJzYwMCcsXG4gICAgICAgICAgICAgICAgICBtaW46IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdkZWZhdWx0TWluUGVyaW9kJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWluaW11bSBwZXJpb2QnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJzEwJyxcbiAgICAgICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ2RlZmF1bHRNYXhQZXJpb2QnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRGVmYXVsdCBtYXhpbXVtIHBlcmlvZCcpLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ2luIHNlY29uZHMnKSxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnNjAnLFxuICAgICAgICAgICAgICAgICAgbWluOiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnYmluZGluZ01vZGUnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogQmluZGluZ01vZGUuVSxcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JpbmRpbmcgbW9kZScpLFxuICAgICAgICAgICAgICAgICAgb3B0aW9uczogT2JqZWN0LnZhbHVlcyhCaW5kaW5nTW9kZSkubWFwKHZhbHVlID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOlxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSBCaW5kaW5nTW9kZS5VID8gZ2V0dGV4dCgnVURQJykgOiBnZXR0ZXh0KCdVRFAgd2l0aCBxdWV1ZSBtb2RlJyksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdkaXNhYmxlVGltZW91dCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEaXNhYmxlIHRpbWVvdXQnKSxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJzg2NDAwJyxcbiAgICAgICAgICAgICAgICAgIG1pbjogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLnVwZGF0ZSQoe1xuICAgICAgICAuLi50aGlzLm1vZGVsLFxuICAgICAgICB1cmk6IHRoaXMuZ2V0RnVsbFVSSSgpLFxuICAgICAgICBlbmRwb2ludDogRW5kcG9pbnQuc2VydmVyc1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydC5hZGRTZXJ2ZXJGYWlsdXJlKGVycik7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShfbmV4dCA9PiB0aGlzLmNhbmNlbCgpKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5kZWxldGVTZXJ2ZXIkKHRoaXMubW9kZWwpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnQuYWRkU2VydmVyRmFpbHVyZShlcnIpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoX25leHQgPT4gdGhpcy5jYW5jZWwoKSk7XG4gIH1cblxuICBjYW5jZWwgPSAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uL3NlcnZlcnMnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuXG4gIHByb3RlY3RlZCBnZXRGdWxsVVJJKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHVyaSxcbiAgICAgIHNlY3VyaXR5OiB7IG1vZGUgPSBNb2RlLk5PX1NFQyB9XG4gICAgfSA9IHRoaXMubW9kZWw7XG4gICAgcmV0dXJuIChtb2RlID09PSBNb2RlLk5PX1NFQyA/IHRoaXMuQ09BUCA6IHRoaXMuQ09BUFMpLmNvbmNhdCh1cmkpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEZpbmdlcnByaW50KHByaXZhdGVLZXk6IHN0cmluZykge1xuICAgIGlmIChwcml2YXRlS2V5Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNlcnZpY2VcbiAgICAgICAgLnZhbGlkYXRlKHByaXZhdGVLZXksIFZhbGlkYXRpb25UeXBlLlBSSVZBVEVfS0VZKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZmluZ2VycHJpbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zZWN1cml0eS54NTA5UHJpdmF0ZUtleSA9IHByaXZhdGVLZXk7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNlY3VyaXR5Lng1MDlQcml2YXRlS2V5RmluZ2VyUHJpbnQgPSBmaW5nZXJwcmludDtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBfZXJyb3IgPT4ge1xuICAgICAgICAgICAgLy8gYWxyZWFkeSBjYXRjaGVkXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGF0Y2hDb21tb25OYW1lKGNlcnRpZmljYXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoY2VydGlmaWNhdGU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VydmljZVxuICAgICAgICAudmFsaWRhdGUoY2VydGlmaWNhdGUsIFZhbGlkYXRpb25UeXBlLlg1MDkpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBjb21tb25OYW1lID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwuc2VjdXJpdHkueDUwOUNlcnRpZmljYXRlID0gY2VydGlmaWNhdGU7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNlY3VyaXR5Lng1MDlDZXJ0aWZpY2F0ZUNvbW1vbk5hbWUgPSBjb21tb25OYW1lO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCk7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIF9lcnJvciA9PiB7XG4gICAgICAgICAgICAvLyBhbHJlYWR5IGNhdGNoZWRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVQcml2YXRlS2V5QW5kRmluZ2VycHJpbnQoKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgc2VjdXJpdHk6IHtcbiAgICAgICAgeDUwOVByaXZhdGVLZXk6IG51bGwsXG4gICAgICAgIHg1MDlQcml2YXRlS2V5RmluZ2VyUHJpbnQ6IG51bGxcbiAgICAgIH0gYXMgUGFydGlhbDxTZWN1cml0eT5cbiAgICB9KTtcbiAgICBkZWxldGUgdGhpcy5tb2RlbD8uc2VjdXJpdHk/Lng1MDlQcml2YXRlS2V5O1xuICAgIGRlbGV0ZSB0aGlzLm1vZGVsPy5zZWN1cml0eT8ueDUwOVByaXZhdGVLZXlGaW5nZXJQcmludDtcbiAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQ2VydGlmaWNhdGVBbmRDb21tb25OYW1lKCkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIHNlY3VyaXR5OiB7XG4gICAgICAgIHg1MDlDZXJ0aWZpY2F0ZTogbnVsbCxcbiAgICAgICAgeDUwOUNlcnRpZmljYXRlQ29tbW9uTmFtZTogbnVsbFxuICAgICAgfSBhcyBQYXJ0aWFsPFNlY3VyaXR5PlxuICAgIH0pO1xuICAgIGRlbGV0ZSB0aGlzLm1vZGVsPy5zZWN1cml0eT8ueDUwOUNlcnRpZmljYXRlQ29tbW9uTmFtZTtcbiAgICBkZWxldGUgdGhpcy5tb2RlbD8uc2VjdXJpdHk/Lng1MDlDZXJ0aWZpY2F0ZTtcbiAgICB0aGlzLmZvcm0ubWFya0FzRGlydHkoKTtcbiAgfVxufVxuIiwiPGZvcm1seS1mb3JtXG4gICpuZ0lmPVwiZmllbGRzPy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCJcbiAgW21vZGVsXT1cIm1vZGVsXCJcbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIGRhdGEtY3k9XCJsd20ybS1kZXZpY2UtY29uZmlndXJhdGlvbi0tZm9ybWx5LWZvcm1cIlxuPjwvZm9ybWx5LWZvcm0+XG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvdG9jb2xzJ1wiXG4gICAgdGl0bGU9XCJ7eyAnTm8gY29uZmlndXJhdGlvbiBzZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHN1YnRpdGxlPVwie3sgJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gb24gdGhlIGxlZnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -14,9 +14,11 @@ export var SecurityMode;
14
14
  })(SecurityMode || (SecurityMode = {}));
15
15
  export var Mode;
16
16
  (function (Mode) {
17
+ Mode["DISABLED"] = "DISABLED";
17
18
  Mode["NO_SEC"] = "NO_SEC";
18
19
  Mode["PSK"] = "PSK";
19
20
  Mode["X509"] = "X509";
21
+ Mode["X509_EST"] = "X509_USING_EST";
20
22
  })(Mode || (Mode = {}));
21
23
  export var BindingMode;
22
24
  (function (BindingMode) {
@@ -75,4 +77,4 @@ export const permissionAlert = {
75
77
  text: gettext('You do not have write permissions. This form is read-only.'),
76
78
  type: 'info'
77
79
  };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVMsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFjckQsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQixvQ0FBd0IsQ0FBQTtJQUN4Qix5Q0FBNkIsQ0FBQTtJQUM3QixpQ0FBcUIsQ0FBQTtJQUNyQiwrQkFBbUIsQ0FBQTtJQUNuQixtQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsUUFBUSxLQUFSLFFBQVEsUUFNbkI7QUFzQkQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiwyQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCO0FBRUQsTUFBTSxDQUFOLElBQVksSUFJWDtBQUpELFdBQVksSUFBSTtJQUNkLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxxQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLElBQUksS0FBSixJQUFJLFFBSWY7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNCQUFPLENBQUE7SUFDUCx3QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBUVg7QUFSRCxXQUFZLG1CQUFtQjtJQUM3QixrQ0FBVyxDQUFBO0lBQ1gsb0NBQWEsQ0FBQTtJQUNiLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsZ0RBQXlCLENBQUE7SUFDekIsZ0RBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVJXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFROUI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLG1EQUErQixDQUFBO0lBQy9CLG9FQUFnRCxDQUFBO0lBQ2hELDJEQUF1QyxDQUFBO0lBQ3ZDLGdFQUE0QyxDQUFBO0FBQzlDLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QixtQ0FBYSxDQUFBO0lBQ2IsbUNBQWEsQ0FBQTtJQUNiLG1DQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUk3QjtBQUVELE1BQU0sQ0FBTixJQUFZLDJCQUtYO0FBTEQsV0FBWSwyQkFBMkI7SUFDckMsNENBQWEsQ0FBQTtJQUNiLDhDQUFlLENBQUE7SUFDZiw0Q0FBYSxDQUFBO0lBQ2IsOENBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUt0QztBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0I7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLDBDQUF3QixDQUFBO0lBQ3hCLHVEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksU0FBUyxFQUFFLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQW1GckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFVO0lBQ3BDLElBQUksRUFBRSxPQUFPLENBQUMsNERBQTRELENBQUM7SUFDM0UsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydCwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEx3bTJtTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X0lzTHdtMm1EZXZpY2U6IG9iamVjdDtcbiAgYzh5X0RldmljZVR5cGVzOiBzdHJpbmdbXTtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExXTTJNUG9zdE9wZXJhdGlvbnNQYXJhbWV0ZXJzIHtcbiAgY29tbWFuZHM6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBFbmRwb2ludCB7XG4gIGRldmljZVNldHRpbmdzID0gJ2Jhc2ljJyxcbiAgY29ubmVjdGl2aXR5ID0gJ2Nvbm5lY3Rpdml0eScsXG4gIGZpcm13YXJlID0gJ2Zpcm13YXJlJyxcbiAgc2VydmVycyA9ICdzZXJ2ZXJzJyxcbiAgYm9vdHN0cmFwID0gJ2Jvb3RzdHJhcCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMge1xuICBiaW5kaW5nTW9kZT86IEJpbmRpbmdNb2RlO1xuICBib290c3RyYXBJZD86IHN0cmluZztcbiAgYm9vdHN0cmFwS2V5Pzogc3RyaW5nO1xuICBib290c3RyYXBTaG9ydFNlcnZlcklkPzogbnVtYmVyO1xuICBkZWZhdWx0TWF4aW11bVBlcmlvZD86IG51bWJlcjtcbiAgZGVmYXVsdE1pbmltdW1QZXJpb2Q/OiBudW1iZXI7XG4gIHNlY3VyaXR5TW9kZT86IFNlY3VyaXR5TW9kZTtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnPzogYm9vbGVhbjtcbiAgbHdtMm1TaG9ydFNlcnZlcklkPzogbnVtYmVyO1xuICBzZXJ2ZXJVcmk/OiBzdHJpbmc7XG4gIHJlZ2lzdHJhdGlvbkxpZmVUaW1lPzogbnVtYmVyO1xuICBzZXJ2ZXJQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHNlY3VyaXR5SW5zdGFuY2VPZmZzZXQ/OiBudW1iZXI7XG4gIHB1YmxpY0tleU9ySWQ/OiBzdHJpbmc7XG4gIHNlY3JldEtleT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFNlY3VyaXR5TW9kZSB7XG4gIE5PX1NFQyA9ICdOT19TRUMnLFxuICBQU0sgPSAnUFNLJ1xufVxuXG5leHBvcnQgZW51bSBNb2RlIHtcbiAgTk9fU0VDID0gJ05PX1NFQycsXG4gIFBTSyA9ICdQU0snLFxuICBYNTA5ID0gJ1g1MDknXG59XG5cbmV4cG9ydCBlbnVtIEJpbmRpbmdNb2RlIHtcbiAgVSA9ICdVJyxcbiAgVVEgPSAnVVEnXG59XG5cbmV4cG9ydCBlbnVtIEJpbmFyeUVuY29kaW5nIHtcbiAgT1BBUVVFID0gJ09QQVFVRScsXG4gIFRMViA9ICdUTFYnXG59XG5cbmV4cG9ydCBlbnVtIFNlcmlhbGl6YXRpb25Gb3JtYXQge1xuICBUTFYgPSAnVExWJyxcbiAgSlNPTiA9ICdKU09OJyxcbiAgQ0JPUiA9ICdDQk9SJyxcbiAgVEVYVCA9ICdURVhUJyxcbiAgT1BBUVVFID0gJ09QQVFVRScsXG4gIFNFTk1MX0pTT04gPSAnU0VOTUxfSlNPTicsXG4gIFNFTk1MX0NCT1IgPSAnU0VOTUxfQ0JPUidcbn1cblxuZXhwb3J0IGVudW0gQ2VydGlmaWNhdGVVc2FnZSB7XG4gIENBX0NPTlNUUkFJTlQgPSAnQ0FfQ09OU1RSQUlOVCcsXG4gIFNDX0NPTlNUUkFJTlQgPSAnU0VSVklDRV9DRVJUSUZJQ0FURV9DT05TVFJBSU5UJyxcbiAgVEFfQVNTRVJUSU9OID0gJ1RSVVNUX0FOQ0hPUl9BU1NFUlRJT04nLFxuICBESV9DRVJUSUZJQ0FURSA9ICdET01BSU5fSVNTVUVSX0NFUlRJRklDQVRFJ1xufVxuXG5leHBvcnQgZW51bSBGV1VfRGVsaXZlcnlNZXRob2Qge1xuICBQVUxMID0gJ1BVTEwnLFxuICBQVVNIID0gJ1BVU0gnLFxuICBCT1RIID0gJ0JPVEgnXG59XG5cbmV4cG9ydCBlbnVtIEZXVV9TdXBwb3J0ZWREZXZpY2VQcm90b2NvbCB7XG4gIENPQVAgPSAnQ09BUCcsXG4gIENPQVBTID0gJ0NPQVBTJyxcbiAgSFRUUCA9ICdIVFRQJyxcbiAgSFRUUFMgPSAnSFRUUFMnXG59XG5cbmV4cG9ydCBlbnVtIEZXVV9SZXNldE1lY2hhbmlzbSB7XG4gIFBBQ0tBR0UgPSAnUEFDS0FHRScsXG4gIFBBQ0tBR0VfVVJJID0gJ1BBQ0tBR0VfVVJJJ1xufVxuXG5leHBvcnQgZW51bSBWYWxpZGF0aW9uVHlwZSB7XG4gIFg1MDkgPSAneDUwOWNlcnRpZmljYXRlJyxcbiAgUFJJVkFURV9LRVkgPSAnY2VydGlmaWNhdGVQcml2YXRlS2V5J1xufVxuXG5leHBvcnQgY29uc3QgYWdlbnROYW1lID0gJ2x3bTJtLWFnZW50JztcbmV4cG9ydCBjb25zdCBhZ2VudEJhc2VVcmwgPSBgL3NlcnZpY2UvJHthZ2VudE5hbWV9YDtcbmV4cG9ydCBjb25zdCBjOHlfbHdtMm0gPSAnYzh5X2x3bTJtJztcblxuZXhwb3J0IHR5cGUgU2V0dGluZ3MgPVxuICB8IEJvb3RzdHJhcFNldHRpbmdzXG4gIHwgRGV2aWNlU2V0dGluZ3NcbiAgfCBGaXJtd2FyZVNldHRpbmdzXG4gIHwgQ29ubmVjdGl2aXR5U2V0dGluZ3NcbiAgfCBTZXJ2ZXJTZXR0aW5nc1xuICB8IG9iamVjdDtcblxuZXhwb3J0IHR5cGUgRW50aXR5ID0gU2V0dGluZ3MgJiBVcmxDb25maWc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybENvbmZpZyB7XG4gIGVuZHBvaW50OiBFbmRwb2ludDtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2V0dGluZ3Mge1xuICBpZDogc3RyaW5nO1xuICB1cmk6IHN0cmluZztcbiAgc2VydmVySWQ6IG51bWJlcjtcbiAgcmVnaXN0cmF0aW9uTGlmZXRpbWU6IG51bWJlcjtcbiAgZGVmYXVsdE1pblBlcmlvZDogbnVtYmVyO1xuICBkZWZhdWx0TWF4UGVyaW9kOiBudW1iZXI7XG4gIGRpc2FibGVUaW1lb3V0OiBudW1iZXI7XG4gIGJvb3RzdHJhcDogYm9vbGVhbjtcbiAgc3RvcmVOb3RpZmljYXRpb25zOiBib29sZWFuO1xuICBiaW5kaW5nTW9kZTogQmluZGluZ01vZGU7XG4gIHNlY3VyaXR5OiBTZWN1cml0eTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eSB7XG4gIG1vZGU6IE1vZGU7XG4gIHg1MDlQcml2YXRlS2V5Pzogc3RyaW5nO1xuICB4NTA5UHJpdmF0ZUtleUZpbmdlclByaW50Pzogc3RyaW5nO1xuICB4NTA5Q2VydGlmaWNhdGU/OiBzdHJpbmc7XG4gIHg1MDlDZXJ0aWZpY2F0ZUNvbW1vbk5hbWU/OiBzdHJpbmc7XG4gIHg1MDlTZXJ2ZXJDZXJ0aWZpY2F0ZU5hbWU/OiBzdHJpbmc7XG4gIGNlcnRpZmljYXRlVXNhZ2U/OiBzdHJpbmc7XG4gIHBza0tleT86IHN0cmluZztcbiAgcHNrSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlU2V0dGluZ3Mge1xuICBlbmRwb2ludElkOiBzdHJpbmc7XG4gIGF3YWtlVGltZTogbnVtYmVyO1xuICByZXF1ZXN0VGltZW91dDogbnVtYmVyO1xuICBrZWVwT2xkVmFsdWVzT25PcGVyYXRpb25GYWlsOiBib29sZWFuO1xuICB1c2VUaW1lc3RhbXBSZXNvdXJjZXM6IGJvb2xlYW47XG4gIGJpbmFyeUVuY29kaW5nOiBCaW5hcnlFbmNvZGluZztcbiAgc2VyaWFsaXphdGlvbkZvcm1hdDogU2VyaWFsaXphdGlvbkZvcm1hdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aXZpdHlTZXR0aW5ncyB7XG4gIGJvb3RzdHJhcENvbm5lY3Rpdml0eTogQ29ubmVjdGl2aXR5O1xuICBzZXJ2ZXJDb25uZWN0aXZpdHk6IENvbm5lY3Rpdml0eTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aXZpdHkge1xuICBtb2RlOiBNb2RlO1xuICBwc2tLZXk/OiBzdHJpbmc7XG4gIHBza0lkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpcm13YXJlU2V0dGluZ3Mge1xuICB1cmw6IHN0cmluZztcbiAgcmVzZXRTdGF0ZU1hY2hpbmVPblN0YXJ0OiBib29sZWFuO1xuICByZXNldE1ldGhvZDogRldVX1Jlc2V0TWVjaGFuaXNtO1xuICBzdXBwb3J0ZWREZXZpY2VQcm90b2NvbDogRldVX1N1cHBvcnRlZERldmljZVByb3RvY29sO1xuICBmaXJtd2FyZURlbGl2ZXJ5TWV0aG9kOiBGV1VfRGVsaXZlcnlNZXRob2Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwU2V0dGluZ3Mge1xuICBib290c3RyYXBTZXJ2ZXJJZDogbnVtYmVyO1xuICBzZWN1cml0eUluc3RhbmNlT2Zmc2V0OiBudW1iZXI7XG4gIGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgcGVybWlzc2lvbkFsZXJ0OiBBbGVydCA9IHtcbiAgdGV4dDogZ2V0dGV4dCgnWW91IGRvIG5vdCBoYXZlIHdyaXRlIHBlcm1pc3Npb25zLiBUaGlzIGZvcm0gaXMgcmVhZC1vbmx5LicpLFxuICB0eXBlOiAnaW5mbydcbn07XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVMsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFjckQsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQixvQ0FBd0IsQ0FBQTtJQUN4Qix5Q0FBNkIsQ0FBQTtJQUM3QixpQ0FBcUIsQ0FBQTtJQUNyQiwrQkFBbUIsQ0FBQTtJQUNuQixtQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsUUFBUSxLQUFSLFFBQVEsUUFNbkI7QUFzQkQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiwyQkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFlBQVksS0FBWixZQUFZLFFBR3ZCO0FBRUQsTUFBTSxDQUFOLElBQVksSUFNWDtBQU5ELFdBQVksSUFBSTtJQUNkLDZCQUFxQixDQUFBO0lBQ3JCLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxxQkFBYSxDQUFBO0lBQ2IsbUNBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQU5XLElBQUksS0FBSixJQUFJLFFBTWY7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLHNCQUFPLENBQUE7SUFDUCx3QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksbUJBUVg7QUFSRCxXQUFZLG1CQUFtQjtJQUM3QixrQ0FBVyxDQUFBO0lBQ1gsb0NBQWEsQ0FBQTtJQUNiLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0lBQ2Isd0NBQWlCLENBQUE7SUFDakIsZ0RBQXlCLENBQUE7SUFDekIsZ0RBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVJXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFROUI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLG1EQUErQixDQUFBO0lBQy9CLG9FQUFnRCxDQUFBO0lBQ2hELDJEQUF1QyxDQUFBO0lBQ3ZDLGdFQUE0QyxDQUFBO0FBQzlDLENBQUMsRUFMVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSzNCO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBSVg7QUFKRCxXQUFZLGtCQUFrQjtJQUM1QixtQ0FBYSxDQUFBO0lBQ2IsbUNBQWEsQ0FBQTtJQUNiLG1DQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUk3QjtBQUVELE1BQU0sQ0FBTixJQUFZLDJCQUtYO0FBTEQsV0FBWSwyQkFBMkI7SUFDckMsNENBQWEsQ0FBQTtJQUNiLDhDQUFlLENBQUE7SUFDZiw0Q0FBYSxDQUFBO0lBQ2IsOENBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUt0QztBQUVELE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIseUNBQW1CLENBQUE7SUFDbkIsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFHN0I7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLDBDQUF3QixDQUFBO0lBQ3hCLHVEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksU0FBUyxFQUFFLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQTRGckMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFVO0lBQ3BDLElBQUksRUFBRSxPQUFPLENBQUMsNERBQTRELENBQUM7SUFDM0UsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBbGVydCwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEx3bTJtTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X0lzTHdtMm1EZXZpY2U6IG9iamVjdDtcbiAgYzh5X0RldmljZVR5cGVzOiBzdHJpbmdbXTtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExXTTJNUG9zdE9wZXJhdGlvbnNQYXJhbWV0ZXJzIHtcbiAgY29tbWFuZHM6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBFbmRwb2ludCB7XG4gIGRldmljZVNldHRpbmdzID0gJ2Jhc2ljJyxcbiAgY29ubmVjdGl2aXR5ID0gJ2Nvbm5lY3Rpdml0eScsXG4gIGZpcm13YXJlID0gJ2Zpcm13YXJlJyxcbiAgc2VydmVycyA9ICdzZXJ2ZXJzJyxcbiAgYm9vdHN0cmFwID0gJ2Jvb3RzdHJhcCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMge1xuICBiaW5kaW5nTW9kZT86IEJpbmRpbmdNb2RlO1xuICBib290c3RyYXBJZD86IHN0cmluZztcbiAgYm9vdHN0cmFwS2V5Pzogc3RyaW5nO1xuICBib290c3RyYXBTaG9ydFNlcnZlcklkPzogbnVtYmVyO1xuICBkZWZhdWx0TWF4aW11bVBlcmlvZD86IG51bWJlcjtcbiAgZGVmYXVsdE1pbmltdW1QZXJpb2Q/OiBudW1iZXI7XG4gIHNlY3VyaXR5TW9kZT86IFNlY3VyaXR5TW9kZTtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnPzogYm9vbGVhbjtcbiAgbHdtMm1TaG9ydFNlcnZlcklkPzogbnVtYmVyO1xuICBzZXJ2ZXJVcmk/OiBzdHJpbmc7XG4gIHJlZ2lzdHJhdGlvbkxpZmVUaW1lPzogbnVtYmVyO1xuICBzZXJ2ZXJQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIHNlY3VyaXR5SW5zdGFuY2VPZmZzZXQ/OiBudW1iZXI7XG4gIHB1YmxpY0tleU9ySWQ/OiBzdHJpbmc7XG4gIHNlY3JldEtleT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFNlY3VyaXR5TW9kZSB7XG4gIE5PX1NFQyA9ICdOT19TRUMnLFxuICBQU0sgPSAnUFNLJ1xufVxuXG5leHBvcnQgZW51bSBNb2RlIHtcbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxuICBOT19TRUMgPSAnTk9fU0VDJyxcbiAgUFNLID0gJ1BTSycsXG4gIFg1MDkgPSAnWDUwOScsXG4gIFg1MDlfRVNUID0gJ1g1MDlfVVNJTkdfRVNUJ1xufVxuXG5leHBvcnQgZW51bSBCaW5kaW5nTW9kZSB7XG4gIFUgPSAnVScsXG4gIFVRID0gJ1VRJ1xufVxuXG5leHBvcnQgZW51bSBCaW5hcnlFbmNvZGluZyB7XG4gIE9QQVFVRSA9ICdPUEFRVUUnLFxuICBUTFYgPSAnVExWJ1xufVxuXG5leHBvcnQgZW51bSBTZXJpYWxpemF0aW9uRm9ybWF0IHtcbiAgVExWID0gJ1RMVicsXG4gIEpTT04gPSAnSlNPTicsXG4gIENCT1IgPSAnQ0JPUicsXG4gIFRFWFQgPSAnVEVYVCcsXG4gIE9QQVFVRSA9ICdPUEFRVUUnLFxuICBTRU5NTF9KU09OID0gJ1NFTk1MX0pTT04nLFxuICBTRU5NTF9DQk9SID0gJ1NFTk1MX0NCT1InXG59XG5cbmV4cG9ydCBlbnVtIENlcnRpZmljYXRlVXNhZ2Uge1xuICBDQV9DT05TVFJBSU5UID0gJ0NBX0NPTlNUUkFJTlQnLFxuICBTQ19DT05TVFJBSU5UID0gJ1NFUlZJQ0VfQ0VSVElGSUNBVEVfQ09OU1RSQUlOVCcsXG4gIFRBX0FTU0VSVElPTiA9ICdUUlVTVF9BTkNIT1JfQVNTRVJUSU9OJyxcbiAgRElfQ0VSVElGSUNBVEUgPSAnRE9NQUlOX0lTU1VFUl9DRVJUSUZJQ0FURSdcbn1cblxuZXhwb3J0IGVudW0gRldVX0RlbGl2ZXJ5TWV0aG9kIHtcbiAgUFVMTCA9ICdQVUxMJyxcbiAgUFVTSCA9ICdQVVNIJyxcbiAgQk9USCA9ICdCT1RIJ1xufVxuXG5leHBvcnQgZW51bSBGV1VfU3VwcG9ydGVkRGV2aWNlUHJvdG9jb2wge1xuICBDT0FQID0gJ0NPQVAnLFxuICBDT0FQUyA9ICdDT0FQUycsXG4gIEhUVFAgPSAnSFRUUCcsXG4gIEhUVFBTID0gJ0hUVFBTJ1xufVxuXG5leHBvcnQgZW51bSBGV1VfUmVzZXRNZWNoYW5pc20ge1xuICBQQUNLQUdFID0gJ1BBQ0tBR0UnLFxuICBQQUNLQUdFX1VSSSA9ICdQQUNLQUdFX1VSSSdcbn1cblxuZXhwb3J0IGVudW0gVmFsaWRhdGlvblR5cGUge1xuICBYNTA5ID0gJ3g1MDljZXJ0aWZpY2F0ZScsXG4gIFBSSVZBVEVfS0VZID0gJ2NlcnRpZmljYXRlUHJpdmF0ZUtleSdcbn1cblxuZXhwb3J0IGNvbnN0IGFnZW50TmFtZSA9ICdsd20ybS1hZ2VudCc7XG5leHBvcnQgY29uc3QgYWdlbnRCYXNlVXJsID0gYC9zZXJ2aWNlLyR7YWdlbnROYW1lfWA7XG5leHBvcnQgY29uc3QgYzh5X2x3bTJtID0gJ2M4eV9sd20ybSc7XG5cbmV4cG9ydCB0eXBlIFNldHRpbmdzID1cbiAgfCBCb290c3RyYXBTZXR0aW5nc1xuICB8IERldmljZVNldHRpbmdzXG4gIHwgRmlybXdhcmVTZXR0aW5nc1xuICB8IENvbm5lY3Rpdml0eVNldHRpbmdzXG4gIHwgU2VydmVyU2V0dGluZ3NcbiAgfCBvYmplY3Q7XG5cbmV4cG9ydCB0eXBlIEVudGl0eSA9IFNldHRpbmdzICYgVXJsQ29uZmlnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25FcnJvciB7XG4gIGVycm9yOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcmxDb25maWcge1xuICBlbmRwb2ludDogRW5kcG9pbnQ7XG4gIGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclNldHRpbmdzIHtcbiAgaWQ6IHN0cmluZztcbiAgdXJpOiBzdHJpbmc7XG4gIHNlcnZlcklkOiBudW1iZXI7XG4gIHJlZ2lzdHJhdGlvbkxpZmV0aW1lOiBudW1iZXI7XG4gIGRlZmF1bHRNaW5QZXJpb2Q6IG51bWJlcjtcbiAgZGVmYXVsdE1heFBlcmlvZDogbnVtYmVyO1xuICBkaXNhYmxlVGltZW91dDogbnVtYmVyO1xuICBib290c3RyYXA6IGJvb2xlYW47XG4gIHN0b3JlTm90aWZpY2F0aW9uczogYm9vbGVhbjtcbiAgYmluZGluZ01vZGU6IEJpbmRpbmdNb2RlO1xuICBzZWN1cml0eTogU2VjdXJpdHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHkge1xuICBtb2RlOiBNb2RlO1xuICB4NTA5UHJpdmF0ZUtleT86IHN0cmluZztcbiAgeDUwOVByaXZhdGVLZXlGaW5nZXJQcmludD86IHN0cmluZztcbiAgeDUwOUNlcnRpZmljYXRlPzogc3RyaW5nO1xuICB4NTA5Q2VydGlmaWNhdGVDb21tb25OYW1lPzogc3RyaW5nO1xuICB4NTA5U2VydmVyQ2VydGlmaWNhdGVOYW1lPzogc3RyaW5nO1xuICBjZXJ0aWZpY2F0ZVVzYWdlPzogc3RyaW5nO1xuICBwc2tLZXk/OiBzdHJpbmc7XG4gIHBza0lkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldmljZVNldHRpbmdzIHtcbiAgZW5kcG9pbnRJZDogc3RyaW5nO1xuICBhd2FrZVRpbWU6IG51bWJlcjtcbiAgcmVxdWVzdFRpbWVvdXQ6IG51bWJlcjtcbiAga2VlcE9sZFZhbHVlc09uT3BlcmF0aW9uRmFpbDogYm9vbGVhbjtcbiAgdXNlVGltZXN0YW1wUmVzb3VyY2VzOiBib29sZWFuO1xuICBiaW5hcnlFbmNvZGluZzogQmluYXJ5RW5jb2Rpbmc7XG4gIHNlcmlhbGl6YXRpb25Gb3JtYXQ6IFNlcmlhbGl6YXRpb25Gb3JtYXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGl2aXR5U2V0dGluZ3Mge1xuICBib290c3RyYXBDb25uZWN0aXZpdHk6IENvbm5lY3Rpdml0eTtcbiAgc2VydmVyQ29ubmVjdGl2aXR5OiBDb25uZWN0aXZpdHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGl2aXR5IHtcbiAgbW9kZTogTW9kZTtcbiAgcHNrS2V5Pzogc3RyaW5nO1xuICBwc2tJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaXJtd2FyZVNldHRpbmdzIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHJlc2V0U3RhdGVNYWNoaW5lT25TdGFydDogYm9vbGVhbjtcbiAgcmVzZXRNZXRob2Q6IEZXVV9SZXNldE1lY2hhbmlzbTtcbiAgc3VwcG9ydGVkRGV2aWNlUHJvdG9jb2w6IEZXVV9TdXBwb3J0ZWREZXZpY2VQcm90b2NvbDtcbiAgZmlybXdhcmVEZWxpdmVyeU1ldGhvZDogRldVX0RlbGl2ZXJ5TWV0aG9kO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFNldHRpbmdzIHtcbiAgYm9vdHN0cmFwU2VydmVySWQ6IG51bWJlcjtcbiAgc2VjdXJpdHlJbnN0YW5jZU9mZnNldDogbnVtYmVyO1xuICBnZW5lcmF0ZUJvb3RzdHJhcFNlcnZlcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWN1cml0eU1vZGVEaWN0aW9uYXJ5T2JqIHtcbiAgbmFtZT86IHN0cmluZyB8IE1vZGU7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHVzZUluQm9vdHN0cmFwQ29ubmVjdGl2aXR5OiBib29sZWFuO1xuICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHBlcm1pc3Npb25BbGVydDogQWxlcnQgPSB7XG4gIHRleHQ6IGdldHRleHQoJ1lvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucy4gVGhpcyBmb3JtIGlzIHJlYWQtb25seS4nKSxcbiAgdHlwZTogJ2luZm8nXG59O1xuIl19
@@ -4,7 +4,7 @@ import { BehaviorSubject, Subject, from, of, throwError } from 'rxjs';
4
4
  import { catchError, map, switchMap, takeUntil, tap } from 'rxjs/operators';
5
5
  import { Lwm2mClientService } from './lwm2m-client.service';
6
6
  import { AlertService, gettext } from '@c8y/ngx-components';
7
- import { Endpoint, agentBaseUrl, ValidationType } from '@c8y/ngx-components/protocol-lwm2m/model';
7
+ import { Endpoint, agentBaseUrl, ValidationType, Mode } from '@c8y/ngx-components/protocol-lwm2m/model';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@c8y/client";
10
10
  import * as i2 from "@c8y/ngx-components";
@@ -18,9 +18,13 @@ export class Lwm2mConfigurationService extends Lwm2mClientService {
18
18
  this._servers$ = new BehaviorSubject([]);
19
19
  this._settings$ = new BehaviorSubject({});
20
20
  this._certificates$ = new BehaviorSubject([]);
21
+ this._securityModeDictRaw$ = new BehaviorSubject([]);
22
+ this._securityModeByScope$ = new BehaviorSubject([]);
21
23
  this.servers$ = this._servers$.asObservable();
22
24
  this.settings$ = this._settings$.asObservable();
23
25
  this.certificates$ = this._certificates$.asObservable();
26
+ this.securityModesByScope$ = this._securityModeByScope$.asObservable();
27
+ this.securityModesRaw$ = this._securityModeDictRaw$.asObservable();
24
28
  this._listServers$
25
29
  .pipe(switchMap(() => this.listServers$().pipe(map(resp => this._servers$.next(resp?.data)))), catchError(error => {
26
30
  this.alertService.addServerFailure(error);
@@ -91,13 +95,68 @@ export class Lwm2mConfigurationService extends Lwm2mClientService {
91
95
  .pipe(catchError(error => {
92
96
  this.alertService.addServerFailure(error);
93
97
  return of([]);
94
- }))
98
+ }), takeUntil(this._destroy$))
95
99
  .subscribe();
96
100
  }
97
101
  fetchServerCertificates$() {
98
- return this.fetch$('dictionary/server-certificates').pipe(switchMap(result => from(result.json())), tap(result => {
102
+ return this.fetch$('dictionary/server-certificates').pipe(switchMap(result => result.json()), tap(result => {
99
103
  this._certificates$.next(result);
100
- }), takeUntil(this._destroy$));
104
+ }));
105
+ }
106
+ getSecurityModes() {
107
+ this.fetchSecurityModes$()
108
+ .pipe(catchError(error => {
109
+ // Use this as fallback. There is the possibility that
110
+ // the UI version runs against an agent version without the needed endpoint:
111
+ // 'dictionary/security-modes'
112
+ const { data: { status } } = error;
113
+ status !== 404
114
+ ? this.alertService.addServerFailure(error)
115
+ : this._securityModeDictRaw$.next([
116
+ {
117
+ label: Mode.DISABLED,
118
+ value: Mode.DISABLED,
119
+ useInBootstrapConnectivity: true,
120
+ useInServerConnectivity: true
121
+ },
122
+ {
123
+ label: Mode.NO_SEC,
124
+ value: Mode.NO_SEC,
125
+ useInBootstrapConnectivity: true,
126
+ useInServerConnectivity: true
127
+ },
128
+ {
129
+ label: Mode.PSK,
130
+ value: Mode.PSK,
131
+ useInBootstrapConnectivity: true,
132
+ useInServerConnectivity: true
133
+ },
134
+ {
135
+ label: 'X.509',
136
+ value: Mode.X509,
137
+ useInBootstrapConnectivity: true,
138
+ useInServerConnectivity: true
139
+ }
140
+ ]);
141
+ return of([]);
142
+ }))
143
+ .subscribe();
144
+ }
145
+ fetchSecurityModes$() {
146
+ return this.fetch$('dictionary/security-modes').pipe(switchMap(result => result.json()), map((result) => result.map(({ name, useInBootstrapConnectivity, useInServerConnectivity }) => ({
147
+ label: name.replace('X509', 'X.509'),
148
+ value: name,
149
+ useInBootstrapConnectivity,
150
+ useInServerConnectivity
151
+ }))), tap((result) => {
152
+ this._securityModeDictRaw$.next(result);
153
+ }));
154
+ }
155
+ getSecurityModeByScope(scope) {
156
+ this._securityModeByScope$.next(this._securityModeDictRaw$
157
+ .getValue()
158
+ .filter(({ useInBootstrapConnectivity, useInServerConnectivity }) => (useInBootstrapConnectivity && scope === 'useInBootstrapConnectivity') ||
159
+ (useInServerConnectivity && scope === 'useInServerConnectivity')));
101
160
  }
102
161
  cleanUpBase64Data(fileReadAsDataURL) {
103
162
  const base64RegExp = RegExp(/data:\S+;base64,/gi);
@@ -139,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
139
198
  providedIn: 'root'
140
199
  }]
141
200
  }], ctorParameters: function () { return [{ type: i1.FetchClient }, { type: i2.AlertService }]; } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vc2VydmljZXMvbHdtMm0tY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBb0QsTUFBTSxhQUFhLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFDTCxRQUFRLEVBRVIsWUFBWSxFQUdaLGNBQWMsRUFFZixNQUFNLDBDQUEwQyxDQUFDOzs7O0FBS2xELE1BQU0sT0FBTyx5QkFDWCxTQUFRLGtCQUFxQjtJQWdCN0IsWUFBWSxNQUFtQixFQUFVLFlBQTBCO1FBQ2pFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUR5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVp6RCxZQUFPLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQztRQUV4QixjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekMsa0JBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QyxjQUFTLEdBQXNDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLGVBQVUsR0FBdUIsSUFBSSxlQUFlLENBQUMsRUFBTyxD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LENBQUM7UUFDbEIsT0FBTyxNQUFNLEVBQUUsUUFBUSxDQUFDO1FBQ3hCLE9BQVEsTUFBc0IsRUFBRSxVQUFVLENBQUM7UUFDM0MsT0FBTyxNQUFXLENBQUM7SUFDckIsQ0FBQzs7c0hBcExVLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hDbGllbnQsIElGZXRjaE9wdGlvbnMsIElJZGVudGlmaWVkLCBJUmVzdWx0LCBJUmVzdWx0TGlzdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEx3bTJtQ2xpZW50U2VydmljZSB9IGZyb20gJy4vbHdtMm0tY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBFbmRwb2ludCxcbiAgU2VydmVyU2V0dGluZ3MsXG4gIGFnZW50QmFzZVVybCxcbiAgRW50aXR5LFxuICBVcmxDb25maWcsXG4gIFZhbGlkYXRpb25UeXBlLFxuICBWYWxpZGF0aW9uRXJyb3Jcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtQ29uZmlndXJhdGlvblNlcnZpY2U8VCA9IEVudGl0eT5cbiAgZXh0ZW5kcyBMd20ybUNsaWVudFNlcnZpY2U8VD5cbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGJhc2VVcmwgPSBgJHthZ2VudEJhc2VVcmx9L3YxYDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RTZXJ2ZXJzJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlcnZlcnMkOiBCZWhhdmlvclN1YmplY3Q8U2VydmVyU2V0dGluZ3NbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0dGluZ3MkOiBCZWhhdmlvclN1YmplY3Q8VD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9IGFzIFQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jZXJ0aWZpY2F0ZXMkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSBhcyBzdHJpbmdbXSk7XG5cbiAgc2VydmVycyQ6IE9ic2VydmFibGU8U2VydmVyU2V0dGluZ3NbXT4gPSB0aGlzLl9zZXJ2ZXJzJC5hc09ic2VydmFibGUoKTtcbiAgc2V0dGluZ3MkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fc2V0dGluZ3MkLmFzT2JzZXJ2YWJsZSgpO1xuICBjZXJ0aWZpY2F0ZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiA9IHRoaXMuX2NlcnRpZmljYXRlcyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoY2xpZW50OiBGZXRjaENsaWVudCwgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSkge1xuICAgIHN1cGVyKGNsaWVudCk7XG5cbiAgICB0aGlzLl9saXN0U2VydmVycyRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICB0aGlzLmxpc3RTZXJ2ZXJzJCgpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB0aGlzLl9zZXJ2ZXJzJC5uZXh0KHJlc3A/LmRhdGEgYXMgdW5rbm93biBhcyBTZXJ2ZXJTZXR0aW5nc1tdKSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldFNldHRpbmdzRm9yKHVybENmZzogVXJsQ29uZmlnKSB7XG4gICAgdGhpcy5kZXRhaWwkKHVybENmZylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIFQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHRoaXMuX3NldHRpbmdzJC5uZXh0KGRhdGEgYXMgVCkpO1xuICB9XG5cbiAgbGlzdFNlcnZlcnMoKSB7XG4gICAgdGhpcy5fbGlzdFNlcnZlcnMkLm5leHQoKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbmZpZyhlbnRpdHk6IFQsIGVuZHBvaW50OiBFbmRwb2ludCkge1xuICAgIHRoaXMudXBkYXRlJCh7IC4uLmVudGl0eSwgZW5kcG9pbnQgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkJlZm9yZVVwZGF0ZShlbnRpdHk6IEVudGl0eSkge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUZpZWxkc0luUmVxdWVzdChlbnRpdHkpO1xuICB9XG5cbiAgb25CZWZvcmVDcmVhdGUoZW50aXR5OiBFbnRpdHkpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVGaWVsZHNJblJlcXVlc3QoZW50aXR5KTtcbiAgfVxuXG4gIGdldERldGFpbFVybChlbnRpdHk6IEVudGl0eSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBlbmRwb2ludCB9ID0gZW50aXR5O1xuICAgIGNvbnN0IGlkID0gZW50aXR5LmlkID8/ICcnO1xuICAgIGNvbnN0IGRldmljZUNvbmZpZ1VybCA9IGBkZXZpY2UvJHt0aGlzLmRldmljZUlkfS9jb25maWd1cmF0aW9uYDtcblxuICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgIHRocm93IHsgZGF0YTogeyBtZXNzYWdlOiBnZXR0ZXh0KCdVbmFibGUgdG8gZmluZCBlbmRwb2ludCcpIH0gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWQubGVuZ3RoID4gMCAmJiBlbmRwb2ludCA9PT0gRW5kcG9pbnQuc2VydmVyc1xuICAgICAgPyBgJHtkZXZpY2VDb25maWdVcmx9LyR7ZW5kcG9pbnR9LyR7aWR9YFxuICAgICAgOiBgJHtkZXZpY2VDb25maWdVcmx9LyR7ZW5kcG9pbnR9YDtcbiAgfVxuXG4gIHZhbGlkYXRlKGNlcnRpZmljYXRlOiBzdHJpbmcsIHR5cGU6IFZhbGlkYXRpb25UeXBlKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoY2VydGlmaWNhdGU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIFt0eXBlID09PSBWYWxpZGF0aW9uVHlwZS5QUklWQVRFX0tFWSA/ICdlbmNvZGVkUHJpdmF0ZUtleScgOiAnZW5jb2RlZENlcnRpZmljYXRlJ106XG4gICAgICAgICAgY2VydGlmaWNhdGVcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaCQoYGRldmljZS9jb25maWd1cmF0aW9uLyR7dHlwZX0vdmFsaWRhdGVgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7ICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgIGJvZHlcbiAgICAgIH0pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT5cbiAgICAgICAgICBmcm9tKHJlc3VsdC5qc29uKCkgYXMgUHJvbWlzZTxvYmplY3Q+KS5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGEgPT4gZGF0YVsnZmluZ2VycHJpbnQnXSB8fCBkYXRhWydjb21tb25OYW1lJ10pXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjYXRjaEVycm9yKChlOiBJUmVzdWx0PFZhbGlkYXRpb25FcnJvcj4pID0+IHtcbiAgICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIGVycm9yIH0gPSBlPy5kYXRhO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoe1xuICAgICAgICAgICAgZGF0YTogeyBtZXNzYWdlLCBleGNlcHRpb25NZXNzYWdlOiBlcnJvciB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlcnZlckNlcnRpZmljYXRlcygpIHtcbiAgICB0aGlzLmZldGNoU2VydmVyQ2VydGlmaWNhdGVzJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZldGNoU2VydmVyQ2VydGlmaWNhdGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaCQoJ2RpY3Rpb25hcnkvc2VydmVyLWNlcnRpZmljYXRlcycpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IGZyb20ocmVzdWx0Lmpzb24oKSkpLFxuICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuX2NlcnRpZmljYXRlcyQubmV4dChyZXN1bHQpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgKSBhcyBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgfVxuXG4gIGNsZWFuVXBCYXNlNjREYXRhKGZpbGVSZWFkQXNEYXRhVVJMOiBzdHJpbmcpIHtcbiAgICBjb25zdCBiYXNlNjRSZWdFeHAgPSBSZWdFeHAoL2RhdGE6XFxTKztiYXNlNjQsL2dpKTtcbiAgICByZXR1cm4gZmlsZVJlYWRBc0RhdGFVUkw/Lmxlbmd0aCA+IDAgJiYgYmFzZTY0UmVnRXhwLnRlc3QoZmlsZVJlYWRBc0RhdGFVUkwpXG4gICAgICA/IGZpbGVSZWFkQXNEYXRhVVJMLnJlcGxhY2UoYmFzZTY0UmVnRXhwLCAnJylcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgbGlzdFNlcnZlcnMkKCkge1xuICAgIHRoaXMubGlzdFVybCA9IHRoaXMuZ2V0RGV0YWlsVXJsKHsgZW5kcG9pbnQ6IEVuZHBvaW50LnNlcnZlcnMgfSk7XG4gICAgcmV0dXJuIGZyb20oc3VwZXIubGlzdCgpIGFzIFByb21pc2U8SVJlc3VsdExpc3Q8U2VydmVyU2V0dGluZ3M+Pik7XG4gIH1cblxuICBjcmVhdGVTZXJ2ZXIkKHNlcnZlcjogU2VydmVyU2V0dGluZ3MpIHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHN1cGVyLmNyZWF0ZSh7IC4uLnNlcnZlciwgZW5kcG9pbnQ6IEVuZHBvaW50LnNlcnZlcnMgfSkgYXMgUHJvbWlzZTxJUmVzdWx0PFNlcnZlclNldHRpbmdzPj5cbiAgICApO1xuICB9XG5cbiAgZGVsZXRlU2VydmVyJChzZXJ2ZXI6IFNlcnZlclNldHRpbmdzKSB7XG4gICAgcmV0dXJuIGZyb20oc3VwZXIuZGVsZXRlKHsgLi4uc2VydmVyLCBlbmRwb2ludDogRW5kcG9pbnQuc2VydmVycyB9KSk7XG4gIH1cblxuICB1cGRhdGUkKGVudGl0eTogRW50aXR5KSB7XG4gICAgcmV0dXJuIGZyb20oc3VwZXIudXBkYXRlKGVudGl0eSBhcyBUKSBhcyBQcm9taXNlPElSZXN1bHQ8VD4+KTtcbiAgfVxuXG4gIGRldGFpbCQodXJsQ2ZnOiBVcmxDb25maWcpIHtcbiAgICByZXR1cm4gZnJvbShzdXBlci5kZXRhaWwodXJsQ2ZnIGFzIFQpIGFzIFByb21pc2U8SVJlc3VsdDxUPj4pO1xuICB9XG5cbiAgZmV0Y2gkKHVybDogc3RyaW5nLCBpbml0PzogSUZldGNoT3B0aW9ucykge1xuICAgIHJldHVybiBmcm9tKHN1cGVyLmZldGNoKHVybCwgaW5pdCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVGaWVsZHNJblJlcXVlc3QoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBkZWxldGUgZW50aXR5Py5pZDtcbiAgICBkZWxldGUgZW50aXR5Py5lbmRwb2ludDtcbiAgICBkZWxldGUgKGVudGl0eSBhcyBJSWRlbnRpZmllZCk/LmRldmljZUluZm87XG4gICAgcmV0dXJuIGVudGl0eSBhcyBUO1xuICB9XG59XG4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vc2VydmljZXMvbHdtMm0tY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBb0QsTUFBTSxhQUFhLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFDTCxRQUFRLEVBRVIsWUFBWSxFQUdaLGNBQWMsRUFHZCxJQUFJLEVBQ0wsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQUtsRCxNQUFNLE9BQU8seUJBQ1gsU0FBUSxrQkFBcUI7SUF3QjdCLFlBQ0UsTUFBbUIsRUFDWCxZQUEwQjtRQUVsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFGTixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXRCMUIsWUFBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUM7UUFFeEIsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0MsY0FBUyxHQUFzQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxlQUFVLEdBQXVCLElBQUksZUFBZSxD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LENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFjO1FBQzFDLE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNsQixPQUFPLE1BQU0sRUFBRSxRQUFRLENBQUM7UUFDeEIsT0FBUSxNQUFzQixFQUFFLFVBQVUsQ0FBQztRQUMzQyxPQUFPLE1BQVcsQ0FBQztJQUNyQixDQUFDOztzSEF4UVUseUJBQXlCOzBIQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTsyRkFFUCx5QkFBeUI7a0JBSHJDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGZXRjaENsaWVudCwgSUZldGNoT3B0aW9ucywgSUlkZW50aWZpZWQsIElSZXN1bHQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTHdtMm1DbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi9sd20ybS1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIEVuZHBvaW50LFxuICBTZXJ2ZXJTZXR0aW5ncyxcbiAgYWdlbnRCYXNlVXJsLFxuICBFbnRpdHksXG4gIFVybENvbmZpZyxcbiAgVmFsaWRhdGlvblR5cGUsXG4gIFZhbGlkYXRpb25FcnJvcixcbiAgU2VjdXJpdHlNb2RlRGljdGlvbmFyeU9iaixcbiAgTW9kZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTHdtMm1Db25maWd1cmF0aW9uU2VydmljZTxUID0gRW50aXR5PlxuICBleHRlbmRzIEx3bTJtQ2xpZW50U2VydmljZTxUPlxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYmFzZVVybCA9IGAke2FnZW50QmFzZVVybH0vdjFgO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdFNlcnZlcnMkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VydmVycyQ6IEJlaGF2aW9yU3ViamVjdDxTZXJ2ZXJTZXR0aW5nc1tdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXR0aW5ncyQ6IEJlaGF2aW9yU3ViamVjdDxUPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30gYXMgVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NlcnRpZmljYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdIGFzIHN0cmluZ1tdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VjdXJpdHlNb2RlRGljdFJhdyQ6IEJlaGF2aW9yU3ViamVjdDxTZWN1cml0eU1vZGVEaWN0aW9uYXJ5T2JqW10+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdIGFzIFNlY3VyaXR5TW9kZURpY3Rpb25hcnlPYmpbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlY3VyaXR5TW9kZUJ5U2NvcGUkOiBCZWhhdmlvclN1YmplY3Q8U2VjdXJpdHlNb2RlRGljdGlvbmFyeU9ialtdPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdChbXSBhcyBTZWN1cml0eU1vZGVEaWN0aW9uYXJ5T2JqW10pO1xuXG4gIHNlcnZlcnMkOiBPYnNlcnZhYmxlPFNlcnZlclNldHRpbmdzW10+ID0gdGhpcy5fc2VydmVycyQuYXNPYnNlcnZhYmxlKCk7XG4gIHNldHRpbmdzJDogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuX3NldHRpbmdzJC5hc09ic2VydmFibGUoKTtcbiAgY2VydGlmaWNhdGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT4gPSB0aGlzLl9jZXJ0aWZpY2F0ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICBzZWN1cml0eU1vZGVzQnlTY29wZSQ6IE9ic2VydmFibGU8U2VjdXJpdHlNb2RlRGljdGlvbmFyeU9ialtdPiA9XG4gICAgdGhpcy5fc2VjdXJpdHlNb2RlQnlTY29wZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHNlY3VyaXR5TW9kZXNSYXckOiBPYnNlcnZhYmxlPFNlY3VyaXR5TW9kZURpY3Rpb25hcnlPYmpbXT4gPVxuICAgIHRoaXMuX3NlY3VyaXR5TW9kZURpY3RSYXckLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNsaWVudDogRmV0Y2hDbGllbnQsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHtcbiAgICBzdXBlcihjbGllbnQpO1xuXG4gICAgdGhpcy5fbGlzdFNlcnZlcnMkXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgdGhpcy5saXN0U2VydmVycyQoKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3AgPT4gdGhpcy5fc2VydmVycyQubmV4dChyZXNwPy5kYXRhIGFzIHVua25vd24gYXMgU2VydmVyU2V0dGluZ3NbXSkpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXRTZXR0aW5nc0Zvcih1cmxDZmc6IFVybENvbmZpZykge1xuICAgIHRoaXMuZGV0YWlsJCh1cmxDZmcpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZih7fSBhcyBUKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB0aGlzLl9zZXR0aW5ncyQubmV4dChkYXRhIGFzIFQpKTtcbiAgfVxuXG4gIGxpc3RTZXJ2ZXJzKCkge1xuICAgIHRoaXMuX2xpc3RTZXJ2ZXJzJC5uZXh0KCk7XG4gIH1cblxuICB1cGRhdGVDb25maWcoZW50aXR5OiBULCBlbmRwb2ludDogRW5kcG9pbnQpIHtcbiAgICB0aGlzLnVwZGF0ZSQoeyAuLi5lbnRpdHksIGVuZHBvaW50IH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25CZWZvcmVVcGRhdGUoZW50aXR5OiBFbnRpdHkpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVGaWVsZHNJblJlcXVlc3QoZW50aXR5KTtcbiAgfVxuXG4gIG9uQmVmb3JlQ3JlYXRlKGVudGl0eTogRW50aXR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlRmllbGRzSW5SZXF1ZXN0KGVudGl0eSk7XG4gIH1cblxuICBnZXREZXRhaWxVcmwoZW50aXR5OiBFbnRpdHkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgZW5kcG9pbnQgfSA9IGVudGl0eTtcbiAgICBjb25zdCBpZCA9IGVudGl0eS5pZCA/PyAnJztcbiAgICBjb25zdCBkZXZpY2VDb25maWdVcmwgPSBgZGV2aWNlLyR7dGhpcy5kZXZpY2VJZH0vY29uZmlndXJhdGlvbmA7XG5cbiAgICBpZiAoIWVuZHBvaW50KSB7XG4gICAgICB0aHJvdyB7IGRhdGE6IHsgbWVzc2FnZTogZ2V0dGV4dCgnVW5hYmxlIHRvIGZpbmQgZW5kcG9pbnQnKSB9IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkLmxlbmd0aCA+IDAgJiYgZW5kcG9pbnQgPT09IEVuZHBvaW50LnNlcnZlcnNcbiAgICAgID8gYCR7ZGV2aWNlQ29uZmlnVXJsfS8ke2VuZHBvaW50fS8ke2lkfWBcbiAgICAgIDogYCR7ZGV2aWNlQ29uZmlnVXJsfS8ke2VuZHBvaW50fWA7XG4gIH1cblxuICB2YWxpZGF0ZShjZXJ0aWZpY2F0ZTogc3RyaW5nLCB0eXBlOiBWYWxpZGF0aW9uVHlwZSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKGNlcnRpZmljYXRlPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBbdHlwZSA9PT0gVmFsaWRhdGlvblR5cGUuUFJJVkFURV9LRVkgPyAnZW5jb2RlZFByaXZhdGVLZXknIDogJ2VuY29kZWRDZXJ0aWZpY2F0ZSddOlxuICAgICAgICAgIGNlcnRpZmljYXRlXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2gkKGBkZXZpY2UvY29uZmlndXJhdGlvbi8ke3R5cGV9L3ZhbGlkYXRlYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczogeyAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICBib2R5XG4gICAgICB9KS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+XG4gICAgICAgICAgZnJvbShyZXN1bHQuanNvbigpIGFzIFByb21pc2U8b2JqZWN0PikucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRhID0+IGRhdGFbJ2ZpbmdlcnByaW50J10gfHwgZGF0YVsnY29tbW9uTmFtZSddKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZTogSVJlc3VsdDxWYWxpZGF0aW9uRXJyb3I+KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCBlcnJvciB9ID0gZT8uZGF0YTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKHtcbiAgICAgICAgICAgIGRhdGE6IHsgbWVzc2FnZSwgZXhjZXB0aW9uTWVzc2FnZTogZXJyb3IgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGUpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSB7XG4gICAgdGhpcy5mZXRjaFNlcnZlckNlcnRpZmljYXRlcyQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBmZXRjaFNlcnZlckNlcnRpZmljYXRlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2gkKCdkaWN0aW9uYXJ5L3NlcnZlci1jZXJ0aWZpY2F0ZXMnKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKHJlc3VsdCA9PiByZXN1bHQuanNvbigpKSxcbiAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLl9jZXJ0aWZpY2F0ZXMkLm5leHQocmVzdWx0KTtcbiAgICAgIH0pXG4gICAgKSBhcyBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgfVxuXG4gIGdldFNlY3VyaXR5TW9kZXMoKSB7XG4gICAgdGhpcy5mZXRjaFNlY3VyaXR5TW9kZXMkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBVc2UgdGhpcyBhcyBmYWxsYmFjay4gVGhlcmUgaXMgdGhlIHBvc3NpYmlsaXR5IHRoYXRcbiAgICAgICAgICAvLyB0aGUgVUkgdmVyc2lvbiBydW5zIGFnYWluc3QgYW4gYWdlbnQgdmVyc2lvbiB3aXRob3V0IHRoZSBuZWVkZWQgZW5kcG9pbnQ6XG4gICAgICAgICAgLy8gJ2RpY3Rpb25hcnkvc2VjdXJpdHktbW9kZXMnXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZGF0YTogeyBzdGF0dXMgfVxuICAgICAgICAgIH0gPSBlcnJvcjtcbiAgICAgICAgICBzdGF0dXMgIT09IDQwNFxuICAgICAgICAgICAgPyB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKVxuICAgICAgICAgICAgOiB0aGlzLl9zZWN1cml0eU1vZGVEaWN0UmF3JC5uZXh0KFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogTW9kZS5ESVNBQkxFRCxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBNb2RlLkRJU0FCTEVELFxuICAgICAgICAgICAgICAgICAgdXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IE1vZGUuTk9fU0VDLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IE1vZGUuTk9fU0VDLFxuICAgICAgICAgICAgICAgICAgdXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IE1vZGUuUFNLLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IE1vZGUuUFNLLFxuICAgICAgICAgICAgICAgICAgdXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdYLjUwOScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogTW9kZS5YNTA5LFxuICAgICAgICAgICAgICAgICAgdXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZldGNoU2VjdXJpdHlNb2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2gkKCdkaWN0aW9uYXJ5L3NlY3VyaXR5LW1vZGVzJykucGlwZShcbiAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gcmVzdWx0Lmpzb24oKSksXG4gICAgICBtYXAoKHJlc3VsdDogU2VjdXJpdHlNb2RlRGljdGlvbmFyeU9ialtdKSA9PlxuICAgICAgICByZXN1bHQubWFwKCh7IG5hbWUsIHVzZUluQm9vdHN0cmFwQ29ubmVjdGl2aXR5LCB1c2VJblNlcnZlckNvbm5lY3Rpdml0eSB9KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBuYW1lLnJlcGxhY2UoJ1g1MDknLCAnWC41MDknKSxcbiAgICAgICAgICB2YWx1ZTogbmFtZSxcbiAgICAgICAgICB1c2VJbkJvb3RzdHJhcENvbm5lY3Rpdml0eSxcbiAgICAgICAgICB1c2VJblNlcnZlckNvbm5lY3Rpdml0eVxuICAgICAgICB9KSlcbiAgICAgICksXG4gICAgICB0YXAoKHJlc3VsdDogU2VjdXJpdHlNb2RlRGljdGlvbmFyeU9ialtdKSA9PiB7XG4gICAgICAgIHRoaXMuX3NlY3VyaXR5TW9kZURpY3RSYXckLm5leHQocmVzdWx0KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFNlY3VyaXR5TW9kZUJ5U2NvcGUoc2NvcGU6ICd1c2VJbkJvb3RzdHJhcENvbm5lY3Rpdml0eScgfCAndXNlSW5TZXJ2ZXJDb25uZWN0aXZpdHknKSB7XG4gICAgdGhpcy5fc2VjdXJpdHlNb2RlQnlTY29wZSQubmV4dChcbiAgICAgIHRoaXMuX3NlY3VyaXR5TW9kZURpY3RSYXckXG4gICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKHsgdXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHksIHVzZUluU2VydmVyQ29ubmVjdGl2aXR5IH0pID0+XG4gICAgICAgICAgICAodXNlSW5Cb290c3RyYXBDb25uZWN0aXZpdHkgJiYgc2NvcGUgPT09ICd1c2VJbkJvb3RzdHJhcENvbm5lY3Rpdml0eScpIHx8XG4gICAgICAgICAgICAodXNlSW5TZXJ2ZXJDb25uZWN0aXZpdHkgJiYgc2NvcGUgPT09ICd1c2VJblNlcnZlckNvbm5lY3Rpdml0eScpXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgY2xlYW5VcEJhc2U2NERhdGEoZmlsZVJlYWRBc0RhdGFVUkw6IHN0cmluZykge1xuICAgIGNvbnN0IGJhc2U2NFJlZ0V4cCA9IFJlZ0V4cCgvZGF0YTpcXFMrO2Jhc2U2NCwvZ2kpO1xuICAgIHJldHVybiBmaWxlUmVhZEFzRGF0YVVSTD8ubGVuZ3RoID4gMCAmJiBiYXNlNjRSZWdFeHAudGVzdChmaWxlUmVhZEFzRGF0YVVSTClcbiAgICAgID8gZmlsZVJlYWRBc0RhdGFVUkwucmVwbGFjZShiYXNlNjRSZWdFeHAsICcnKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBsaXN0U2VydmVycyQoKSB7XG4gICAgdGhpcy5saXN0VXJsID0gdGhpcy5nZXREZXRhaWxVcmwoeyBlbmRwb2ludDogRW5kcG9pbnQuc2VydmVycyB9KTtcbiAgICByZXR1cm4gZnJvbShzdXBlci5saXN0KCkgYXMgUHJvbWlzZTxJUmVzdWx0TGlzdDxTZXJ2ZXJTZXR0aW5ncz4+KTtcbiAgfVxuXG4gIGNyZWF0ZVNlcnZlciQoc2VydmVyOiBTZXJ2ZXJTZXR0aW5ncykge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgc3VwZXIuY3JlYXRlKHsgLi4uc2VydmVyLCBlbmRwb2ludDogRW5kcG9pbnQuc2VydmVycyB9KSBhcyBQcm9taXNlPElSZXN1bHQ8U2VydmVyU2V0dGluZ3M+PlxuICAgICk7XG4gIH1cblxuICBkZWxldGVTZXJ2ZXIkKHNlcnZlcjogU2VydmVyU2V0dGluZ3MpIHtcbiAgICByZXR1cm4gZnJvbShzdXBlci5kZWxldGUoeyAuLi5zZXJ2ZXIsIGVuZHBvaW50OiBFbmRwb2ludC5zZXJ2ZXJzIH0pKTtcbiAgfVxuXG4gIHVwZGF0ZSQoZW50aXR5OiBFbnRpdHkpIHtcbiAgICByZXR1cm4gZnJvbShzdXBlci51cGRhdGUoZW50aXR5IGFzIFQpIGFzIFByb21pc2U8SVJlc3VsdDxUPj4pO1xuICB9XG5cbiAgZGV0YWlsJCh1cmxDZmc6IFVybENvbmZpZykge1xuICAgIHJldHVybiBmcm9tKHN1cGVyLmRldGFpbCh1cmxDZmcgYXMgVCkgYXMgUHJvbWlzZTxJUmVzdWx0PFQ+Pik7XG4gIH1cblxuICBmZXRjaCQodXJsOiBzdHJpbmcsIGluaXQ/OiBJRmV0Y2hPcHRpb25zKSB7XG4gICAgcmV0dXJuIGZyb20oc3VwZXIuZmV0Y2godXJsLCBpbml0KSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUZpZWxkc0luUmVxdWVzdChlbnRpdHk6IEVudGl0eSkge1xuICAgIGRlbGV0ZSBlbnRpdHk/LmlkO1xuICAgIGRlbGV0ZSBlbnRpdHk/LmVuZHBvaW50O1xuICAgIGRlbGV0ZSAoZW50aXR5IGFzIElJZGVudGlmaWVkKT8uZGV2aWNlSW5mbztcbiAgICByZXR1cm4gZW50aXR5IGFzIFQ7XG4gIH1cbn1cbiJdfQ==
@@ -2305,15 +2305,15 @@ class DeviceInfoDashboardComponent {
2305
2305
  _x: 0,
2306
2306
  _y: 0,
2307
2307
  _height: 5,
2308
- _width: 4
2308
+ _width: 8
2309
2309
  },
2310
2310
  {
2311
2311
  name: 'Data points graph',
2312
2312
  title: gettext('Device and communication'),
2313
- _x: 4,
2313
+ _x: 8,
2314
2314
  _y: 0,
2315
2315
  _height: 5,
2316
- _width: 8,
2316
+ _width: 16,
2317
2317
  config: {
2318
2318
  interval: 'hours',
2319
2319
  aggregation: 'NONE',
@@ -2481,15 +2481,15 @@ class DeviceInfoDashboardComponent {
2481
2481
  _x: 0,
2482
2482
  _y: 5,
2483
2483
  _height: 8,
2484
- _width: 4
2484
+ _width: 8
2485
2485
  },
2486
2486
  {
2487
2487
  name: 'Alarm list',
2488
2488
  title: gettext('Active, critical alarms'),
2489
- _x: 4,
2489
+ _x: 8,
2490
2490
  _y: 5,
2491
2491
  _height: 4,
2492
- _width: 4,
2492
+ _width: 8,
2493
2493
  config: {
2494
2494
  options: {
2495
2495
  orderMode: 'ACTIVE_FIRST',
@@ -2506,18 +2506,18 @@ class DeviceInfoDashboardComponent {
2506
2506
  {
2507
2507
  name: 'deviceGroupAssignmentWidget',
2508
2508
  title: gettext('Group assignment'),
2509
- _x: 8,
2509
+ _x: 16,
2510
2510
  _y: 5,
2511
2511
  _height: 4,
2512
- _width: 4
2512
+ _width: 8
2513
2513
  },
2514
2514
  {
2515
2515
  componentId: 'Map',
2516
2516
  title: gettext('Location'),
2517
- _x: 4,
2517
+ _x: 8,
2518
2518
  _y: 9,
2519
2519
  _height: 4,
2520
- _width: 8
2520
+ _width: 16
2521
2521
  }
2522
2522
  ];
2523
2523
  }