@c8y/ngx-components 1021.22.159 → 1021.22.161

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 (27) hide show
  1. package/core/dynamic-forms/textarea/textarea.type.component.d.ts +1 -0
  2. package/core/dynamic-forms/textarea/textarea.type.component.d.ts.map +1 -1
  3. package/esm2022/core/dynamic-forms/textarea/textarea.type.component.mjs +8 -7
  4. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +7 -7
  5. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +3 -3
  6. package/esm2022/device-grid/columns/type.device-grid-column.mjs +2 -2
  7. package/esm2022/device-list/add-smart-group.component.mjs +3 -3
  8. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +8 -8
  9. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  10. package/fesm2022/c8y-ngx-components-device-grid.mjs +1 -1
  11. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  12. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -2
  13. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  14. package/fesm2022/c8y-ngx-components.mjs +5 -5
  15. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  16. package/locales/de.po +47 -108
  17. package/locales/es.po +30 -43
  18. package/locales/fr.po +50 -96
  19. package/locales/ja_JP.po +24 -48
  20. package/locales/ko.po +32 -46
  21. package/locales/locales.pot +23 -29
  22. package/locales/nl.po +32 -43
  23. package/locales/pl.po +31 -44
  24. package/locales/pt_BR.po +33 -45
  25. package/locales/zh_CN.po +33 -46
  26. package/locales/zh_TW.po +33 -46
  27. package/package.json +1 -1
@@ -9,6 +9,7 @@ export declare class FieldTextArea extends FieldType implements OnInit {
9
9
  cols: number;
10
10
  };
11
11
  };
12
+ private translate;
12
13
  ngOnInit(): void;
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldTextArea, never>;
14
15
  static ɵcmp: i0.ɵɵComponentDeclaration<FieldTextArea, "c8y-field-textarea", never, {}, {}, never, never, false, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.type.component.d.ts","sourceRoot":"","sources":["../../../../core/dynamic-forms/textarea/textarea.type.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EAEpB,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;;AAE3D,eAAO,MAAM,uBAAuB,QAAO,oBAWxC,CAAC;AAEJ,qBAea,aAAc,SAAQ,SAAU,YAAW,MAAM;IACnD,cAAc;;;;;MAKrB;IAEF,QAAQ,IAAI,IAAI;yCARL,aAAa;2CAAb,aAAa;CAkBzB"}
1
+ {"version":3,"file":"textarea.type.component.d.ts","sourceRoot":"","sources":["../../../../core/dynamic-forms/textarea/textarea.type.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,oBAAoB,EAGpB,MAAM,EACP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAgB,MAAM,kBAAkB,CAAC;;AAG3D,eAAO,MAAM,uBAAuB,QAAO,oBAWxC,CAAC;AAEJ,qBAea,aAAc,SAAQ,SAAU,YAAW,MAAM;IACnD,cAAc;;;;;MAKrB;IACF,OAAO,CAAC,SAAS,CAA4B;IAE7C,QAAQ,IAAI,IAAI;yCATL,aAAa;2CAAb,aAAa;CAkBzB"}
@@ -1,6 +1,7 @@
1
- import { ChangeDetectionStrategy, Component, importProvidersFrom } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, importProvidersFrom, inject } from '@angular/core';
2
2
  import { gettext } from '@c8y/ngx-components/gettext';
3
3
  import { FieldType, FormlyModule } from '@ngx-formly/core';
4
+ import { TranslateService } from '@ngx-translate/core';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
6
7
  import * as i2 from "@ngx-formly/core";
@@ -22,14 +23,14 @@ export class FieldTextArea extends FieldType {
22
23
  cols: 68
23
24
  }
24
25
  };
26
+ this.translate = inject(TranslateService);
25
27
  }
26
28
  ngOnInit() {
27
29
  const { required, placeholder } = this.props;
28
- if (required) {
29
- this.props.placeholder =
30
- placeholder.length > 0
31
- ? placeholder.concat(' ').concat(gettext('(required)'))
32
- : gettext('(required)');
30
+ if (placeholder || required) {
31
+ const placeholderText = placeholder ? this.translate.instant(placeholder) : '';
32
+ const requiredText = required ? this.translate.instant(gettext('(required)')) : '';
33
+ this.props.placeholder = `${placeholderText} ${requiredText}`.trim();
33
34
  }
34
35
  }
35
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FieldTextArea, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -63,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
63
64
  changeDetection: ChangeDetectionStrategy.OnPush
64
65
  }]
65
66
  }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEudHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtZm9ybXMvdGV4dGFyZWEvdGV4dGFyZWEudHlwZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsbUJBQW1CLEVBRXBCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRTNELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQXlCLEVBQUUsQ0FDaEUsbUJBQW1CLENBQ2pCLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDcEIsS0FBSyxFQUFFO1FBQ0w7WUFDRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixTQUFTLEVBQUUsYUFBYTtZQUN4QixRQUFRLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUM3QjtLQUNGO0NBQ0YsQ0FBQyxDQUNILENBQUM7QUFpQkosTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBZjVDOztRQWdCVyxtQkFBYyxHQUFHO1lBQ3hCLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxJQUFJLEVBQUUsRUFBRTthQUNUO1NBQ0YsQ0FBQztLQVlIO0lBVkMsUUFBUTtRQUNOLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUU3QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO2dCQUNwQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ3BCLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3ZELENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7OEdBakJVLGFBQWE7a0dBQWIsYUFBYSxpRkFiZDs7Ozs7Ozs7OztHQVVUOzsyRkFHVSxhQUFhO2tCQWZ6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBpbXBvcnRQcm92aWRlcnNGcm9tLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9nZXR0ZXh0JztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBmaWVsZFRleHRhcmVhVHlwZUNvbmZpZyA9ICgpOiBFbnZpcm9ubWVudFByb3ZpZGVycyA9PlxuICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB0eXBlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICBjb21wb25lbnQ6IEZpZWxkVGV4dEFyZWEsXG4gICAgICAgICAgd3JhcHBlcnM6IFsnYzh5LWZvcm0tZmllbGQnXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSlcbiAgKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWZpZWxkLXRleHRhcmVhJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dGV4dGFyZWFcbiAgICAgIFtyZWFkb25seV09XCJwcm9wcy5yZWFkb25seVwiXG4gICAgICBbcmVxdWlyZWRdPVwicHJvcHMucmVxdWlyZWRcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgIFtjb2xzXT1cInByb3BzLmNvbHNcIlxuICAgICAgW3Jvd3NdPVwicHJvcHMucm93c1wiXG4gICAgICBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMucGxhY2Vob2xkZXJcIlxuICAgID48L3RleHRhcmVhPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZFRleHRBcmVhIGV4dGVuZHMgRmllbGRUeXBlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgb3ZlcnJpZGUgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgcHJvcHM6IHtcbiAgICAgIHJvd3M6IDUsXG4gICAgICBjb2xzOiA2OFxuICAgIH1cbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlcXVpcmVkLCBwbGFjZWhvbGRlciB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgdGhpcy5wcm9wcy5wbGFjZWhvbGRlciA9XG4gICAgICAgIHBsYWNlaG9sZGVyLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHBsYWNlaG9sZGVyLmNvbmNhdCgnICcpLmNvbmNhdChnZXR0ZXh0KCcocmVxdWlyZWQpJykpXG4gICAgICAgICAgOiBnZXR0ZXh0KCcocmVxdWlyZWQpJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEudHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb3JlL2R5bmFtaWMtZm9ybXMvdGV4dGFyZWEvdGV4dGFyZWEudHlwZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsbUJBQW1CLEVBQ25CLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUV2RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUF5QixFQUFFLENBQ2hFLG1CQUFtQixDQUNqQixZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BCLEtBQUssRUFBRTtRQUNMO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsUUFBUSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDN0I7S0FDRjtDQUNGLENBQUMsQ0FDSCxDQUFDO0FBaUJKLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWY1Qzs7UUFnQlcsbUJBQWMsR0FBRztZQUN4QixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxFQUFFLEVBQUU7YUFDVDtTQUNGLENBQUM7UUFDTSxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FXOUM7SUFUQyxRQUFRO1FBQ04sTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTdDLElBQUksV0FBVyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxlQUFlLElBQUksWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7OEdBakJVLGFBQWE7a0dBQWIsYUFBYSxpRkFiZDs7Ozs7Ozs7OztHQVVUOzsyRkFHVSxhQUFhO2tCQWZ6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVudmlyb25tZW50UHJvdmlkZXJzLFxuICBpbXBvcnRQcm92aWRlcnNGcm9tLFxuICBpbmplY3QsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2dldHRleHQnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuZXhwb3J0IGNvbnN0IGZpZWxkVGV4dGFyZWFUeXBlQ29uZmlnID0gKCk6IEVudmlyb25tZW50UHJvdmlkZXJzID0+XG4gIGltcG9ydFByb3ZpZGVyc0Zyb20oXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndGV4dGFyZWEnLFxuICAgICAgICAgIGNvbXBvbmVudDogRmllbGRUZXh0QXJlYSxcbiAgICAgICAgICB3cmFwcGVyczogWydjOHktZm9ybS1maWVsZCddXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KVxuICApO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmllbGQtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx0ZXh0YXJlYVxuICAgICAgW3JlYWRvbmx5XT1cInByb3BzLnJlYWRvbmx5XCJcbiAgICAgIFtyZXF1aXJlZF09XCJwcm9wcy5yZXF1aXJlZFwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgW2NvbHNdPVwicHJvcHMuY29sc1wiXG4gICAgICBbcm93c109XCJwcm9wcy5yb3dzXCJcbiAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlclwiXG4gICAgPjwvdGV4dGFyZWE+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkVGV4dEFyZWEgZXh0ZW5kcyBGaWVsZFR5cGUgaW1wbGVtZW50cyBPbkluaXQge1xuICBvdmVycmlkZSBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBwcm9wczoge1xuICAgICAgcm93czogNSxcbiAgICAgIGNvbHM6IDY4XG4gICAgfVxuICB9O1xuICBwcml2YXRlIHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlcXVpcmVkLCBwbGFjZWhvbGRlciB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChwbGFjZWhvbGRlciB8fCByZXF1aXJlZCkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXJUZXh0ID0gcGxhY2Vob2xkZXIgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHBsYWNlaG9sZGVyKSA6ICcnO1xuICAgICAgY29uc3QgcmVxdWlyZWRUZXh0ID0gcmVxdWlyZWQgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGdldHRleHQoJyhyZXF1aXJlZCknKSkgOiAnJztcbiAgICAgIHRoaXMucHJvcHMucGxhY2Vob2xkZXIgPSBgJHtwbGFjZWhvbGRlclRleHR9ICR7cmVxdWlyZWRUZXh0fWAudHJpbSgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -76,17 +76,17 @@ export class DataFetchingService {
76
76
  */
77
77
  getLimitExceededMessage(hasNoExportableData, emailDeliverableCount, browserDownloadableCount, nonRetrievableCount, totalDatapointsSelectedForExportCount) {
78
78
  if (hasNoExportableData) {
79
- const message = this.translateService.instant(gettext(`The data for selected datapoint(s) exceed 1,000,000 records, which is the limit for backend processing. To export this data, please reduce the date range.`));
79
+ const message = this.translateService.instant(gettext(`The data for selected data point(s) exceeds 1,000,000 records, which is the limit for backend processing. To export this data, reduce the date range.`));
80
80
  return message;
81
81
  }
82
82
  const message = this.translateService.instant(gettext(`After clicking "Download":<br>
83
83
  <ul>
84
- <li><strong>{{$browserDownloadableCount}}</strong> datapoint(s) exports will be downloaded directly within one file: <em>exported_[csv/excel].zip</em></li>
85
- <li><strong>{{$emailDeliverableCount}}</strong> datapoint(s) exports require further processing. The files will be sent to you via separate emails once completed, which may take some time.</li>
86
- <li><strong>{{$nonRetrievableCount}}</strong> datapoint(s) exports exceeded 1,000,000 records, which is the limit for backend processing. To export these data, please reduce the date range. Otherwise, the data will neither be downloaded nor sent via email.</li>
84
+ <li><strong>{{$browserDownloadableCount}}</strong> data point export(s) will be downloaded directly within one file: <em>exported_[csv/excel].zip</em></li>
85
+ <li><strong>{{$emailDeliverableCount}}</strong> data point export(s) require further processing. The files will be sent to you via separate emails once completed, which may take some time.</li>
86
+ <li><strong>{{$nonRetrievableCount}}</strong> data point export(s) exceeded 1,000,000 records, which is the limit for backend processing. To export these data, reduce the date range. Otherwise, the data will neither be downloaded nor sent via email.</li>
87
87
  </ul>
88
- <p>The total number of data points that can be exported is: <strong>{{$totalExportableDatapointsCount}} out of {{$totalDatapointsSelectedForExportCount}}</strong>.
89
- <p><strong>Note:</strong> The file name convention of files within zip file is: <code>[source]_[fragment_series].[csv/xls]</code></p>`), {
88
+ <p>The total number of data points that can be exported is: <strong>{{$totalExportableDatapointsCount}} out of {{$totalDatapointsSelectedForExportCount}}</strong>.</p>
89
+ <p><strong>Note:</strong> The file name convention of files within a ZIP file is: <code>[source]_[fragment_series].[csv/xls]</code></p>`), {
90
90
  $browserDownloadableCount: browserDownloadableCount,
91
91
  $emailDeliverableCount: emailDeliverableCount,
92
92
  $nonRetrievableCount: nonRetrievableCount,
@@ -399,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
399
399
  providedIn: 'root'
400
400
  }]
401
401
  }], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.MeasurementService }, { type: i3.DomSanitizer }, { type: i4.TranslateService }, { type: i5.UtilsService }] });
402
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhLWZldGNoaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQVNMLGtCQUFrQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFRTCxnQ0FBZ0MsRUFFakMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFLM0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxTQUF1QixFQUN2QixnQkFBa0MsRUFDbEMsWUFBMEI7UUFKMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixZQUEwQjtRQUUxQixNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FB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QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUMzRSxJQUFJLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNqRSxDQUFDO1lBRUQsT0FBTztnQkFDTCxHQUFHLE9BQU87Z0JBQ1YsSUFBSTtnQkFDSixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ssd0JBQXdCLENBQUMsT0FBZSxFQUFFLE1BQWdCLEVBQUUsV0FBVyxHQUFHLENBQUM7UUFDakYsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQzs4R0EvZlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgYWdncmVnYXRpb25UeXBlLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1lYXN1cmVtZW50LFxuICBJTWVhc3VyZW1lbnRGaWx0ZXIsXG4gIElSZXN1bHQsXG4gIElSZXN1bHRMaXN0LFxuICBJU2VyaWVzLFxuICBJU2VyaWVzRmlsdGVyLFxuICBNZWFzdXJlbWVudFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQUdHUkVHQVRJT05fVkFMVUVTLCBBbGVydFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIERhdGFwb2ludERldGFpbHMsXG4gIERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdCxcbiAgRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gIERhdGFUb0V4cG9ydCxcbiAgRGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZSxcbiAgRXhwb3J0Q29uZmlnLFxuICBNZWFzdXJlbWVudEZpbGVDb25maWcsXG4gIE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlULFxuICBUaW1lU2VyaWVzRGF0YVxufSBmcm9tICcuLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBTb3VyY2VJdGVtLCBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhRmV0Y2hpbmdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW55IG9mIG1lYXN1cmVtZW50cyByZXF1ZXN0cyBtYXkgZXhjZWVkZWQgdGhlIGxpbWl0LFxuICAgKiBhZnRlciB3aGljaCB0aGUgZXhwb3J0IGRhdGEgaXMgcHJvY2Vzc2VkIGJ5IHRoZSBiYWNrZW5kIGFuZCB0aGUgZ2VuZXJhdGVkIENTVi9FeGNlbCBmaWxlIGlzIHNlbnQgYnkgZW1haWwuXG4gICAqXG4gICAqIFRoZSB0aHJlc2hvbGQgaXMgc2V0IHRvIDUwXzAwMCByZWNvcmRzIGluIGFwcGxpY2F0aW9uJ3MgY29yZSBwcm9wZXJ0aWVzIChleHBvcnQuZGF0YS5zeW5jaHJvbm91cy5saW1pdCkuXG4gICAqXG4gICAqIEBwYXJhbSBleHBvcnRDb25maWcgLSBUaGUgZXhwb3J0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyBmaWxlcyB0aGF0IHdpbGwgYmUgc2VudCBieSBlbWFpbC5cbiAgICovXG4gIGFzeW5jIGdldERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdChcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdPiB7XG4gICAgY29uc3QgYmFja2VuZFByb2Nlc3NpbmdMaW1pdCA9IDUwXzAwMDtcblxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdD5bXSA9IGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzLm1hcChcbiAgICAgIGFzeW5jIGRldGFpbHMgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcjogSU1lYXN1cmVtZW50RmlsdGVyID0ge1xuICAgICAgICAgICAgZGF0ZUZyb206IGV4cG9ydENvbmZpZy5kYXRlRnJvbSxcbiAgICAgICAgICAgIGRhdGVUbzogZXhwb3J0Q29uZmlnLmRhdGVUbyxcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgICAgICAgc291cmNlOiBkZXRhaWxzLnNvdXJjZSxcbiAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IGRldGFpbHMudmFsdWVGcmFnbWVudFNlcmllcyxcbiAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlLFxuICAgICAgICAgICAgd2l0aFRvdGFsRWxlbWVudHM6IHRydWVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5saXN0KGZpbHRlcik7XG5cbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnBhZ2luZz8udG90YWxFbGVtZW50cyA+IGJhY2tlbmRQcm9jZXNzaW5nTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGFwb2ludERldGFpbDoge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRvdGFsRWxlbWVudHM6IHJlc3BvbnNlLnBhZ2luZy50b3RhbEVsZW1lbnRzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0czogRGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0W10gPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0ICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCB3aGVuIHRoZSBsaW1pdCBvZiBkYXRhcG9pbnRzIGlzIGV4Y2VlZGVkIGR1cmluZyBmaWxlIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIGhhc05vRXhwb3J0YWJsZURhdGEgLSBJbmRpY2F0ZXMgaWYgdGhlcmUgaXMgbm8gZXhwb3J0YWJsZSBkYXRhIGJlY2F1c2UgdGhlIGRhdGUgcmFuZ2Ugb2YgYWxsIHNlbGVjdGVkIGRhdGFwb2ludHMgZXhjZWVkcyAxLDAwMCwwMDAgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVtYWlsRGVsaXZlcmFibGVDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgdGhhdCBleGNlZWQgdGhlIGxpbWl0LCB3aWxsIGJlIHByb2NlZWRlZCBieSB0aGUgYmFja2VuZCBhbmQgc2VudCBieSBlbWFpbC5cbiAgICogQHBhcmFtIGJyb3dzZXJEb3dubG9hZGFibGVDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgdGhhdCBjYW4gYmUgZG93bmxvYWRlZCBkaXJlY3RseS5cbiAgICogQHBhcmFtIHNraXBwZWREYXRhcG9pbnRDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgc2tpcHBlZCBkdWUgdG8gZXhjZWVkaW5nIHRoZSBtZWFzdXJlbWVudHMgQVBJIGxpbWl0IG9mIDEsMDAwLDAwMCByZWNvcmRzLlxuICAgKiBAcGFyYW0gdG90YWxEYXRhcG9pbnRzU2VsZWN0ZWRGb3JFeHBvcnRDb3VudCAtIFRvdGFsIG51bWJlciBvZiBkYXRhcG9pbnQgc2VsZWN0ZWQgZm9yIGV4cG9ydHMuXG4gICAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHRoYXQgY2FuIGJlIGluamVjdGVkLlxuICAgKi9cbiAgZ2V0TGltaXRFeGNlZWRlZE1lc3NhZ2UoXG4gICAgaGFzTm9FeHBvcnRhYmxlRGF0YTogYm9vbGVhbixcbiAgICBlbWFpbERlbGl2ZXJhYmxlQ291bnQ/OiBudW1iZXIsXG4gICAgYnJvd3NlckRvd25sb2FkYWJsZUNvdW50PzogbnVtYmVyLFxuICAgIG5vblJldHJpZXZhYmxlQ291bnQ/OiBudW1iZXIsXG4gICAgdG90YWxEYXRhcG9pbnRzU2VsZWN0ZWRGb3JFeHBvcnRDb3VudD86IG51bWJlclxuICApOiBzdHJpbmcge1xuICAgIGlmIChoYXNOb0V4cG9ydGFibGVEYXRhKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgYFRoZSBkYXRhIGZvciBzZWxlY3RlZCBkYXRhcG9pbnQocykgZXhjZWVkIDEsMDAwLDAwMCByZWNvcmRzLCB3aGljaCBpcyB0aGUgbGltaXQgZm9yIGJhY2tlbmQgcHJvY2Vzc2luZy4gVG8gZXhwb3J0IHRoaXMgZGF0YSwgcGxlYXNlIHJlZHVjZSB0aGUgZGF0ZSByYW5nZS5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICBnZXR0ZXh0KFxuICAgICAgICBgQWZ0ZXIgY2xpY2tpbmcgXCJEb3dubG9hZFwiOjxicj5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIDxsaT48c3Ryb25nPnt7JGJyb3dzZXJEb3dubG9hZGFibGVDb3VudH19PC9zdHJvbmc+IGRhdGFwb2ludChzKSBleHBvcnRzIHdpbGwgYmUgZG93bmxvYWRlZCBkaXJlY3RseSB3aXRoaW4gb25lIGZpbGU6IDxlbT5leHBvcnRlZF9bY3N2L2V4Y2VsXS56aXA8L2VtPjwvbGk+XG4gICAgICAgICAgPGxpPjxzdHJvbmc+e3skZW1haWxEZWxpdmVyYWJsZUNvdW50fX08L3N0cm9uZz4gZGF0YXBvaW50KHMpIGV4cG9ydHMgcmVxdWlyZSBmdXJ0aGVyIHByb2Nlc3NpbmcuIFRoZSBmaWxlcyB3aWxsIGJlIHNlbnQgdG8geW91IHZpYSBzZXBhcmF0ZSBlbWFpbHMgb25jZSBjb21wbGV0ZWQsIHdoaWNoIG1heSB0YWtlIHNvbWUgdGltZS48L2xpPlxuICAgICAgICAgIDxsaT48c3Ryb25nPnt7JG5vblJldHJpZXZhYmxlQ291bnR9fTwvc3Ryb25nPiBkYXRhcG9pbnQocykgZXhwb3J0cyBleGNlZWRlZCAxLDAwMCwwMDAgcmVjb3Jkcywgd2hpY2ggaXMgdGhlIGxpbWl0IGZvciBiYWNrZW5kIHByb2Nlc3NpbmcuIFRvIGV4cG9ydCB0aGVzZSBkYXRhLCBwbGVhc2UgcmVkdWNlIHRoZSBkYXRlIHJhbmdlLiBPdGhlcndpc2UsIHRoZSBkYXRhIHdpbGwgbmVpdGhlciBiZSBkb3dubG9hZGVkIG5vciBzZW50IHZpYSBlbWFpbC48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD5UaGUgdG90YWwgbnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgY2FuIGJlIGV4cG9ydGVkIGlzOiA8c3Ryb25nPnt7JHRvdGFsRXhwb3J0YWJsZURhdGFwb2ludHNDb3VudH19IG91dCBvZiB7eyR0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50fX08L3N0cm9uZz4uXG4gICAgICAgIDxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlIGZpbGUgbmFtZSBjb252ZW50aW9uIG9mIGZpbGVzIHdpdGhpbiB6aXAgZmlsZSBpczogPGNvZGU+W3NvdXJjZV1fW2ZyYWdtZW50X3Nlcmllc10uW2Nzdi94bHNdPC9jb2RlPjwvcD5gXG4gICAgICApLFxuICAgICAge1xuICAgICAgICAkYnJvd3NlckRvd25sb2FkYWJsZUNvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICAgICRlbWFpbERlbGl2ZXJhYmxlQ291bnQ6IGVtYWlsRGVsaXZlcmFibGVDb3VudCxcbiAgICAgICAgJG5vblJldHJpZXZhYmxlQ291bnQ6IG5vblJldHJpZXZhYmxlQ291bnQsXG4gICAgICAgICR0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50OiB0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50LFxuICAgICAgICAkdG90YWxFeHBvcnRhYmxlRGF0YXBvaW50c0NvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQgKyBlbWFpbERlbGl2ZXJhYmxlQ291bnRcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBbXG4gICAgICBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICBlbWFpbERlbGl2ZXJhYmxlQ291bnQsXG4gICAgICBub25SZXRyaWV2YWJsZUNvdW50XG4gICAgXSk7XG5cbiAgICByZXR1cm4gdHJpbW1lZE1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYW4gaW5mb3JtYXRpb24gYWxlcnQgYWJvdXQgc2VuZGluZyBkYXRhIHZpYSBlbWFpbC5cbiAgICpcbiAgICogT25seSBtZWFzdXJlbWVudHMgQVBJIGNhbiBzZW5kIGZpbGVzIHZpYSBlbWFpbC5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVUeXBlIC0gVGhlIHR5cGUgb2YgZmlsZSB0byBiZSBzZW50LlxuICAgKiBAcGFyYW0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0IC0gVGhlIGFycmF5IG9mIGRhdGFwb2ludHMgZXhjZWVkaW5nIHRoZSBsaW1pdC5cbiAgICovXG4gIHNob3dTZW5kVmlhRW1haWxJbmZvQWxlcnQoXG4gICAgZmlsZVR5cGU6IHN0cmluZyxcbiAgICBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ6IERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChgWW91IHdpbGwgZ2V0IHt7JGZpbGVUeXBlVGV4dH19IGZpbGUocykgZm9yIHt7JGNvdW50fX0gc2VyaWVzIHZpYSBlbWFpbC5gKSxcbiAgICAgIHsgJGNvdW50OiBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQubGVuZ3RoLCAkZmlsZVR5cGVUZXh0OiBmaWxlVHlwZSB9XG4gICAgKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRMaXN0ID0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0XG4gICAgICAubWFwKFxuICAgICAgICBkYXRhcG9pbnQgPT5cbiAgICAgICAgICBg4oCiICR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC5zb3VyY2V9XyR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC52YWx1ZUZyYWdtZW50VHlwZX1fJHtkYXRhcG9pbnQuZGF0YXBvaW50RGV0YWlsLnZhbHVlRnJhZ21lbnRTZXJpZXN9YFxuICAgICAgKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhtZXNzYWdlVGVtcGxhdGUsIGZvcm1hdHRlZExpc3QpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNZWFzdXJlbWVudERhdGFGaWxlc0FuZFBhaXJXaXRoU291cmNlRGV0YWlscyhcbiAgICBhY2NlcHRGaWxlVHlwZTogc3RyaW5nLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnXG4gICk6IFByb21pc2U8RGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZVtdPiB7XG4gICAgY29uc3QgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWcgPSB7XG4gICAgICBleHBvcnRDb25maWcsXG4gICAgICBhY2NlcHRGaWxlVHlwZVxuICAgIH07XG4gICAgY29uc3QgZmlsZVByb21pc2VzID0gZXhwb3J0Q29uZmlnLmRhdGFwb2ludERldGFpbHMubWFwKGRldGFpbHMgPT5cbiAgICAgIHRoaXMuZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZUNvbmZpZylcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWxlUHJvbWlzZXMpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWdcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB0aGlzLnByZXBhcmVNZWFzdXJlbWVudHNGaWx0ZXIoXG4gICAgICBkZXRhaWxzLFxuICAgICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnLmV4cG9ydENvbmZpZ1xuICAgICk7XG4gICAgY29uc3QgaGVhZGVyID0geyBhY2NlcHQ6IG1lYXN1cmVtZW50RmlsZUNvbmZpZy5hY2NlcHRGaWxlVHlwZSB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlOiBJRmV0Y2hSZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZpbGUoZmlsdGVyLCBoZWFkZXIpO1xuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMCwgdGhlbiB0aGUgZmlsZSBpcyBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMiwgdGhlbiB0aGUgZmlsZSBpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGJhY2tlbmQgYW5kIHdpbGwgYmUgc2VudCBieSBlbWFpbC5cbiAgICAgIGlmIChtZWFzdXJlbWVudEZpbGVSZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU1lYXN1cmVtZW50c1dpdGhJdHNTb3VyY2VEZXRhaWxzKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWVyZ2VNZWFzdXJlbWVudHNXaXRoSXRzU291cmNlRGV0YWlscyhcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIG1lYXN1cmVtZW50RmlsZTogSUZldGNoUmVzcG9uc2VcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZSxcbiAgICAgIGZldGNoZWRNZWFzdXJlbWVudHNCbG9iRmlsZTogYXdhaXQgbWVhc3VyZW1lbnRGaWxlLmJsb2IoKVxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaEFuZFByZXBhcmVEYXRhVG9FeHBvcnQoXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgaXNNZWFzdXJlbWVudDogYm9vbGVhblxuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFtdPiB7XG4gICAgcmV0dXJuIGlzTWVhc3VyZW1lbnRcbiAgICAgID8gYXdhaXQgdGhpcy5mZXRjaEFuZFByZXBhcmVNZWFzdXJlbWVudERhdGFUb0V4cG9ydEZvclByZXZpZXcoZXhwb3J0Q29uZmlnKVxuICAgICAgOiBhd2FpdCB0aGlzLmZldGNoQW5kUHJlcGFyZVNlcmllc0RhdGFUb0V4cG9ydChleHBvcnRDb25maWcpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U291cmNlc1dpdGhQZXJtaXNzaW9uc1RvUmVhZChkYXRhcG9pbnREZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzW10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKGRhdGVGcm9tKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBkYXRhcG9pbnREZXRhaWxzLm1hcChhc3luYyBkYXRhcG9pbnQgPT4ge1xuICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICBkYXRlRnJvbSxcbiAgICAgICAgZGF0ZVRvLFxuICAgICAgICBzb3VyY2U6IGRhdGFwb2ludC5zb3VyY2VcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgcmVzIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHJldHVybiBkYXRhcG9pbnQuc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBmZXRjaCwgcmV0dXJuIG51bGwgdG8gcHJldmVudCBwcm9taXNlIHJlamVjdGlvblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZldGNoZWRTb3VyY2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG4gICAgcmV0dXJuIGZldGNoZWRTb3VyY2VzLmZpbHRlcigoc291cmNlKTogc291cmNlIGlzIHN0cmluZyA9PiBzb3VyY2UgIT09IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIGdpdmVuIGRhdGUgYnkgYWRkaW5nIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYW5kIHNldHRpbmcgc2Vjb25kcyB0byAwLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGFkanVzdGVkIGluIHN0cmluZyBmb3JtYXQuXG4gICAqIEBwYXJhbSBtaW51dGVzIC0gVGhlIG51bWJlciBvZiBtaW51dGVzIHRvIGFkZCB0byB0aGUgZGF0ZS5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIFdoZXRoZXIgdG8gcm91bmQgdGhlIHNlY29uZHMgb3Igbm90LlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNlY29uZHMgd2lsbCBiZSByb3VuZGVkIHRvIDAuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiBmYWxzZSwgdGhlIHNlY29uZHMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdGhleSBhcmUuXG4gICAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBkYXRlIGluIElTTyBzdHJpbmcgZm9ybWF0LlxuICAgKi9cbiAgYWRqdXN0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlLCBtaW51dGVzOiBudW1iZXIsIHJvdW5kU2Vjb25kcyA9IHRydWUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGlzTmFOKGRhdGVUaW1lLmdldFRpbWUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRlJyk7XG4gICAgfVxuXG4gICAgZGF0ZVRpbWUuc2V0VVRDTWludXRlcyhkYXRlVGltZS5nZXRVVENNaW51dGVzKCkgKyBtaW51dGVzKTtcbiAgICBpZiAocm91bmRTZWNvbmRzKSB7XG4gICAgICBkYXRlVGltZS5zZXRVVENTZWNvbmRzKDAsIDApO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlVGltZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYW5kIHByZXBhcmVzIG1lYXN1cmVtZW50IGRhdGEgZm9yIHByZXZpZXcuXG4gICAqXG4gICAqIEVtcHR5IERhdGFUb0V4cG9ydCBvYmplY3QgY2FuIGJlIHJldHVybmVkLCBiZWNhdXNlIHVubGlrZSBzZXJpZXMgZGF0YSxcbiAgICogbWVhc3VyZW1lbnQgZGF0YSBpcyBub3QgZnVydGhlciBwcm9jZXNzZWQgYmVzaWRlcyBzaG93aW5nIG9ubHkgaW4gdGhlIHByZXZpZXcuXG4gICAqIENTVi9FeGNlbCBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBiYWNrZW5kIGZvciBtZWFzdXJlbWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBleHBvcnRDb25maWcgLSBUaGUgZXhwb3J0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIERhdGFUb0V4cG9ydCBvYmplY3RzIG9yIG51bGwgd2hlbiBubyBkYXRhIGlzIGZldGNoZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZldGNoQW5kUHJlcGFyZU1lYXN1cmVtZW50RGF0YVRvRXhwb3J0Rm9yUHJldmlldyhcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFtdPiB8IG51bGwge1xuICAgIGNvbnN0IGRhdGFUb0V4cG9ydFByb21pc2VzOiBQcm9taXNlPERhdGFUb0V4cG9ydD5bXSA9IGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzLm1hcChcbiAgICAgIGFzeW5jIGRldGFpbHMgPT4ge1xuICAgICAgICBjb25zdCBmZXRjaGVkTWVhc3VyZW1lbnREYXRhOiBJUmVzdWx0TGlzdDxJTWVhc3VyZW1lbnQ+ID1cbiAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoTWVhc3VyZW1lbnREYXRhRm9yUHJldmlldyhkZXRhaWxzLCBleHBvcnRDb25maWcpO1xuXG4gICAgICAgIGlmIChmZXRjaGVkTWVhc3VyZW1lbnREYXRhPy5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTWVhc3VyZW1lbnREYXRhRm9yUHJldmlldyhkZXRhaWxzLCBmZXRjaGVkTWVhc3VyZW1lbnREYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoZGF0YVRvRXhwb3J0UHJvbWlzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE1lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoXG4gICAgZGV0YWlsczogRGF0YXBvaW50RGV0YWlscyxcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElNZWFzdXJlbWVudD4+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbWVhc3VyZW1lbnRzOiBJUmVzdWx0TGlzdDxJTWVhc3VyZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB0aGlzLnByZXBhcmVNZWFzdXJlbWVudHNGaWx0ZXIoXG4gICAgICBkZXRhaWxzLFxuICAgICAgZXhwb3J0Q29uZmlnLFxuICAgICAgTUVBU1VSRU1FTlRTX1BSRVZJRVdfSVRFTVNfTElNSVRcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmxpc3QoZmlsdGVyKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lYXN1cmVtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZU1lYXN1cmVtZW50c0ZpbHRlcihcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIHBhZ2VTaXplPzogbnVtYmVyXG4gICk6IElNZWFzdXJlbWVudEZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB7XG4gICAgICAvLyBSb3VuZCB0aGUgJ2Zyb20nIHRpbWUgdG8gdGhlIHByZXZpb3VzIGZ1bGwgbWludXRlLlxuICAgICAgZGF0ZUZyb206IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZUZyb20sIC0xKSxcbiAgICAgIC8vIFJvdW5kIHRoZSAndG8nIHRpbWUgdG8gdGhlIG5lYXJlc3QgZnVsbCBtaW51dGUuXG4gICAgICBkYXRlVG86IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZVRvLCAxKSxcbiAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZVxuICAgIH07XG5cbiAgICBpZiAocGFnZVNpemUpIHtcbiAgICAgIGZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NNZWFzdXJlbWVudERhdGFGb3JQcmV2aWV3KFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgZGF0YTogSU1lYXN1cmVtZW50W11cbiAgKTogRGF0YVRvRXhwb3J0IHtcbiAgICBjb25zdCB1bml0ID0gZGF0YVswXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXNdPy51bml0IHx8ICcnO1xuXG4gICAgY29uc3QgdmFsdWVzOiB7IFt0aW1lc3RhbXA6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZGF0YS5mb3JFYWNoKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgIHZhbHVlc1ttZWFzdXJlbWVudC50aW1lXSA9XG4gICAgICAgIG1lYXN1cmVtZW50W2RldGFpbHMudmFsdWVGcmFnbWVudFR5cGVdW2RldGFpbHMudmFsdWVGcmFnbWVudFNlcmllc10udmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyAuLi5kZXRhaWxzLCB1bml0LCB0aW1lVmFsdWVNYXA6IHZhbHVlcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFByZXBhcmVTZXJpZXNEYXRhVG9FeHBvcnQoZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcpIHtcbiAgICBjb25zdCBkYXRhcG9pbnRzVmFsdWVzRGF0YU1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPSB0aGlzLmdyb3VwU2VyaWVzQnlEZXZpY2VJZChcbiAgICAgIGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBBcnJheS5mcm9tKGRhdGFwb2ludHNWYWx1ZXNEYXRhTWFwKS5tYXAoXG4gICAgICBhc3luYyAoW3NvdXJjZSwgc2VyaWVzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8sIGFnZ3JlZ2F0aW9uIH0gPSBleHBvcnRDb25maWc7XG5cbiAgICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICAgIGRhdGVGcm9tLFxuICAgICAgICAgIGRhdGVUbyxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogYWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiB7IHNvdXJjZSwgZGF0YSB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBmZXRjaGVkRGF0YUdyb3VwZWRCeVNvdXJjZTogU291cmNlSXRlbVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VyaWVzRGF0YShleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscywgZmV0Y2hlZERhdGFHcm91cGVkQnlTb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBtYXAgb2YgYWN0aXZlIGRhdGEgcG9pbnRzIGRldmljZSBJRHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIHNlcmllcy5cbiAgICpcbiAgICogRXhhbXBsZSBvdXRwdXQ6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbmV3IE1hcChbXG4gICAqICAgWyc4NDQ2NTcyMDInLCBbJ2M4eV9UZW1wZXJhdHVyZS5UJ11dLFxuICAgKiAgIFsnMzI2NjY0MjcnLCBbJ2M4eV9CYXR0ZXJ5LkJhdHRlcnknXV1cbiAgICogXSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gZGF0YXBvaW50RGV0YWlscyAtIEFuIGFycmF5IG9mIGRhdGEgcG9pbnRzIGRldGFpbHMuXG4gICAqIEByZXR1cm5zIEEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRhdGEgcG9pbnQgSUQgYW5kIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBkYXRhIHBvaW50IHNlcmllcy5cbiAgICovXG4gIHByaXZhdGUgZ3JvdXBTZXJpZXNCeURldmljZUlkKGRhdGFwb2ludERldGFpbHM6IERhdGFwb2ludERldGFpbHNbXSk6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwIHtcbiAgICByZXR1cm4gZGF0YXBvaW50RGV0YWlscy5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIG1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gICAgICAgIHsgdmFsdWVGcmFnbWVudFR5cGUsIHZhbHVlRnJhZ21lbnRTZXJpZXMsIHNvdXJjZSB9OiBEYXRhcG9pbnREZXRhaWxzXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBgJHt2YWx1ZUZyYWdtZW50VHlwZX0uJHt2YWx1ZUZyYWdtZW50U2VyaWVzfWA7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBtYXAuZ2V0KHNvdXJjZSkgPz8gW107XG4gICAgICAgIG1hcC5zZXQoc291cmNlLCBbLi4uZXhpc3RpbmdWYWx1ZSwgdmFsdWVdKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0sXG4gICAgICBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFNlcmllc0RhdGEocmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyKTogUHJvbWlzZTxJUmVzdWx0PElTZXJpZXM+PiB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNlcmllc0RhdGE6IElSZXN1bHQ8SVNlcmllcz4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWx0ZXI6IElTZXJpZXNGaWx0ZXIgPSB0aGlzLnByZXBhcmVTZXJpZXNGaWx0ZXIoe1xuICAgICAgZGF0ZUZyb206IHJhd0ZpbHRlci5kYXRlRnJvbSxcbiAgICAgIGRhdGVUbzogcmF3RmlsdGVyLmRhdGVUbyxcbiAgICAgIHNvdXJjZTogcmF3RmlsdGVyLnNvdXJjZSxcbiAgICAgIHNlcmllczogcmF3RmlsdGVyLnNlcmllcyxcbiAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogcmF3RmlsdGVyLmFnZ3JlZ2F0aW9uVHlwZVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIGFkZGluZyBhIGNhY2hlIG1lY2hhbmlzbSAtPiBNVE0tNjAyODlcbiAgICAgIC8vIFdoZW4gdXNlciBzd2l0Y2hlcyBiZXR3ZWVuIHJlcG9ydCB0eXBlcywgYW5kIHJlc3Qgb2YgdGhlIHNldHRpbmdzIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGUgZGF0YSBzaG91bGQgbm90IGJlIGZldGNoZWQgYWdhaW4/XG4gICAgICBzZXJpZXNEYXRhID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdFNlcmllcyhmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VyaWVzRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVNlcmllc0ZpbHRlcihmaWx0ZXJzOiBJU2VyaWVzRmlsdGVyKTogSVNlcmllc0ZpbHRlciB7XG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvLCBzb3VyY2UsIHNlcmllcywgYWdncmVnYXRpb25UeXBlIH0gPSBmaWx0ZXJzO1xuICAgIC8vIFJvdW5kIHRoZSAnZnJvbScgdGltZSB0byB0aGUgcHJldmlvdXMgZnVsbCBtaW51dGUuXG4gICAgY29uc3QgZnJvbSA9IHRoaXMuYWRqdXN0RGF0ZShkYXRlRnJvbSwgLTEpO1xuICAgIC8vIFJvdW5kIHRoZSAndG8nIHRpbWUgdG8gdGhlIG5lYXJlc3QgZnVsbCBtaW51dGUuXG4gICAgY29uc3QgdG8gPSB0aGlzLmFkanVzdERhdGUoZGF0ZVRvLCAxKTtcblxuICAgIGNvbnN0IGZpbHRlcjogSVNlcmllc0ZpbHRlciA9IHtcbiAgICAgIGRhdGVGcm9tOiBmcm9tLFxuICAgICAgZGF0ZVRvOiB0byxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcmV2ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIC8vIFRoZSAnTk9ORScgYWdncmVnYXRpb24gdHlwZSBpcyBub3QgaGFuZGxlZCBieSBhIGJhY2tlbmQsIHNvIGV2ZW4gd2hlbiBpcyBzZWxlY3RlZCwgaXQgaXMgbm90IHBhc3NlZCBhcyBhIGZpbHRlciBwYXJhbWV0ZXIuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uVHlwZSAmJiBhZ2dyZWdhdGlvblR5cGUgIT09IChBR0dSRUdBVElPTl9WQUxVRVMubm9uZSBhcyBhZ2dyZWdhdGlvblR5cGUpKSB7XG4gICAgICBmaWx0ZXIuYWdncmVnYXRpb25UeXBlID0gYWdncmVnYXRpb25UeXBlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGl0IGlzIGEgdGVtcG9yYWwgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gdGhlIGJhY2tlbmQsXG4gICAgLy8gd2hlcmUgdGhlIHNlcmllcyB3aXRoIG1vcmUgdGhhbiBvbmUgZG90IGFyZSBpbXBvc3NpYmxlIHRvIHJldHJpZXZlOlxuICAgIC8vIGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNTkyNzdcbiAgICBpZiAoc2VyaWVzKSB7XG4gICAgICBjb25zdCBoYXNNb3JlVGhhbk9uZURvdCA9IChzZXJpZXMgYXMgc3RyaW5nW10pLnNvbWUocyA9PiBzLnNwbGl0KCcuJykubGVuZ3RoID4gMik7XG4gICAgICBpZiAoIWhhc01vcmVUaGFuT25lRG90KSB7XG4gICAgICAgIGZpbHRlci5zZXJpZXMgPSBzZXJpZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgdGhlIGZldGNoZWQgc2VyaWVzIGRhdGEgYW5kIHByZXBhcmVzIGl0IGZvciBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhcG9pbnREZXRhaWxzIC0gQW4gYXJyYXkgb2YgZGF0YSBwb2ludCBkZXRhaWxzLlxuICAgKiBAcGFyYW0gZmV0Y2hlZERhdGFNYXAgLSBBIG1hcCBvZiBmZXRjaGVkIHNlcmllcyBkYXRhIGdyb3VwZWQgYnkgc291cmNlLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBEYXRhVG9FeHBvcnQgb2JqZWN0cy5cbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1Nlcmllc0RhdGEoZGF0YXBvaW50RGV0YWlsczogRGF0YXBvaW50RGV0YWlsc1tdLCBmZXRjaGVkRGF0YU1hcDogU291cmNlSXRlbVtdKSB7XG4gICAgY29uc3QgdmFsdWVzR3JvdXBlZEJ5U291cmNlID0gdGhpcy51dGlsc1NlcnZpY2UudHJhbnNmb3JtRGF0YVN0cnVjdHVyZShmZXRjaGVkRGF0YU1hcCk7XG5cbiAgICByZXR1cm4gZGF0YXBvaW50RGV0YWlscy5tYXAoKGRldGFpbHM6IERhdGFwb2ludERldGFpbHMpID0+IHtcbiAgICAgIGxldCB1bml0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgZGF0YTogVGltZVNlcmllc0RhdGE7XG5cbiAgICAgIC8qKlxuICAgICAgICogVW5pcXVlIGtleSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBzZXJpZXMgZnJvbSBzYW1lIHNvdXJjZSxcbiAgICAgICAqIGUuZy46IGM4eV9BY2NlbGVyYXRpb24uYWNjZWxlcmF0aW9uWCwgYzh5X0FjY2VsZXJhdGlvbi5hY2NlbGVyYXRpb25ZLCBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblpcbiAgICAgICAqL1xuICAgICAgY29uc3Qgc2VyaWVzS2V5ID0gYCR7ZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZX0uJHtkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXN9YDtcblxuICAgICAgaWYgKHZhbHVlc0dyb3VwZWRCeVNvdXJjZVtkZXRhaWxzLnNvdXJjZV1bc2VyaWVzS2V5XSkge1xuICAgICAgICB1bml0ID0gdmFsdWVzR3JvdXBlZEJ5U291cmNlW2RldGFpbHMuc291cmNlXVtzZXJpZXNLZXldLnNlcmllc0RldGFpbHMudW5pdDtcbiAgICAgICAgZGF0YSA9IHZhbHVlc0dyb3VwZWRCeVNvdXJjZVtkZXRhaWxzLnNvdXJjZV1bc2VyaWVzS2V5XS52YWx1ZXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRldGFpbHMsXG4gICAgICAgIHVuaXQsXG4gICAgICAgIHRpbWVWYWx1ZU1hcDogZGF0YVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyB0aGUgZ2l2ZW4gSFRNTCBtZXNzYWdlIGJ5IHJlbW92aW5nIGxpc3QgaXRlbXMgdGhhdCBjb3JyZXNwb25kIHRvIHplcm8gY291bnRzLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBIVE1MIHN0cmluZyBjb250YWluaW5nIHRoZSBtZXNzYWdlIHdpdGggbGlzdCBpdGVtcy5cbiAgICogQHBhcmFtIGNvdW50cyAtIEFuIGFycmF5IG9mIG51bWJlciB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGxpc3QgaXRlbS5cbiAgICogQHBhcmFtIGNvdW50VG9UcmltIC0gQSBjb3VudCB0aGF0IHdpbGwgYmUgdHJpbW1lZCB3aXRoIGNvcnJlc3BvbmRpbmcgbGlzdCBpdGVtLlxuICAgKiBAcmV0dXJucyBBIHRyaW1tZWQgSFRNTCBzdHJpbmcgd2l0aCBsaXN0IGl0ZW1zIHJlbW92ZWQgd2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgY291bnQgaXMgemVyby5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBtZXNzYWdlID0gJzx1bD48bGk+SXRlbSAxPC9saT48bGk+SXRlbSAyPC9saT48bGk+SXRlbSAzPC9saT48L3VsPic7XG4gICAqIGNvbnN0IGNvdW50cyA9IFsxLCAwLCAyXTtcbiAgICogY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBjb3VudHMpO1xuICAgKiAvLyBSZXN1bHQ6ICc8dWw+PGxpPkl0ZW0gMTwvbGk+PGxpPkl0ZW0gMzwvbGk+PC91bD4nXG4gICAqIGBgYFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVaZXJvQ291bnRMaXN0SXRlbXMobWVzc2FnZTogc3RyaW5nLCBjb3VudHM6IG51bWJlcltdLCBjb3VudFRvVHJpbSA9IDApOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKG1lc3NhZ2UsICd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBsaXN0SXRlbXMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgndWwgbGknKTtcblxuICAgIGxpc3RJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGNvdW50c1tpbmRleF0gPT09IGNvdW50VG9UcmltKSB7XG4gICAgICAgIGl0ZW0ucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZG9jLmJvZHkuaW5uZXJIVE1MO1xuICB9XG59XG4iXX0=
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItbW9kYWwvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItZmlsZS1leHBvcnRlci9kYXRhLWZldGNoaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQVNMLGtCQUFrQixFQUNuQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFRTCxnQ0FBZ0MsRUFFakMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7QUFLM0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxTQUF1QixFQUN2QixnQkFBa0MsRUFDbEMsWUFBMEI7UUFKMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQixDQUMvQixZQUEwQjtRQUUxQixNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FB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QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUMzRSxJQUFJLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNqRSxDQUFDO1lBRUQsT0FBTztnQkFDTCxHQUFHLE9BQU87Z0JBQ1YsSUFBSTtnQkFDSixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0ssd0JBQXdCLENBQUMsT0FBZSxFQUFFLE1BQWdCLEVBQUUsV0FBVyxHQUFHLENBQUM7UUFDakYsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQzs4R0EvZlUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgYWdncmVnYXRpb25UeXBlLFxuICBJRmV0Y2hSZXNwb25zZSxcbiAgSU1lYXN1cmVtZW50LFxuICBJTWVhc3VyZW1lbnRGaWx0ZXIsXG4gIElSZXN1bHQsXG4gIElSZXN1bHRMaXN0LFxuICBJU2VyaWVzLFxuICBJU2VyaWVzRmlsdGVyLFxuICBNZWFzdXJlbWVudFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQUdHUkVHQVRJT05fVkFMVUVTLCBBbGVydFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIERhdGFwb2ludERldGFpbHMsXG4gIERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdCxcbiAgRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gIERhdGFUb0V4cG9ydCxcbiAgRGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZSxcbiAgRXhwb3J0Q29uZmlnLFxuICBNZWFzdXJlbWVudEZpbGVDb25maWcsXG4gIE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlULFxuICBUaW1lU2VyaWVzRGF0YVxufSBmcm9tICcuLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5pbXBvcnQgeyBTb3VyY2VJdGVtLCBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhRmV0Y2hpbmdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHNTZXJ2aWNlOiBVdGlsc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW55IG9mIG1lYXN1cmVtZW50cyByZXF1ZXN0cyBtYXkgZXhjZWVkZWQgdGhlIGxpbWl0LFxuICAgKiBhZnRlciB3aGljaCB0aGUgZXhwb3J0IGRhdGEgaXMgcHJvY2Vzc2VkIGJ5IHRoZSBiYWNrZW5kIGFuZCB0aGUgZ2VuZXJhdGVkIENTVi9FeGNlbCBmaWxlIGlzIHNlbnQgYnkgZW1haWwuXG4gICAqXG4gICAqIFRoZSB0aHJlc2hvbGQgaXMgc2V0IHRvIDUwXzAwMCByZWNvcmRzIGluIGFwcGxpY2F0aW9uJ3MgY29yZSBwcm9wZXJ0aWVzIChleHBvcnQuZGF0YS5zeW5jaHJvbm91cy5saW1pdCkuXG4gICAqXG4gICAqIEBwYXJhbSBleHBvcnRDb25maWcgLSBUaGUgZXhwb3J0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyBmaWxlcyB0aGF0IHdpbGwgYmUgc2VudCBieSBlbWFpbC5cbiAgICovXG4gIGFzeW5jIGdldERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdChcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdPiB7XG4gICAgY29uc3QgYmFja2VuZFByb2Nlc3NpbmdMaW1pdCA9IDUwXzAwMDtcblxuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdD5bXSA9IGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzLm1hcChcbiAgICAgIGFzeW5jIGRldGFpbHMgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcjogSU1lYXN1cmVtZW50RmlsdGVyID0ge1xuICAgICAgICAgICAgZGF0ZUZyb206IGV4cG9ydENvbmZpZy5kYXRlRnJvbSxcbiAgICAgICAgICAgIGRhdGVUbzogZXhwb3J0Q29uZmlnLmRhdGVUbyxcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgICAgICAgc291cmNlOiBkZXRhaWxzLnNvdXJjZSxcbiAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IGRldGFpbHMudmFsdWVGcmFnbWVudFNlcmllcyxcbiAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlLFxuICAgICAgICAgICAgd2l0aFRvdGFsRWxlbWVudHM6IHRydWVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5saXN0KGZpbHRlcik7XG5cbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnBhZ2luZz8udG90YWxFbGVtZW50cyA+IGJhY2tlbmRQcm9jZXNzaW5nTGltaXQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGFwb2ludERldGFpbDoge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogZGV0YWlscy52YWx1ZUZyYWdtZW50U2VyaWVzLFxuICAgICAgICAgICAgICAgIHZhbHVlRnJhZ21lbnRUeXBlOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRvdGFsRWxlbWVudHM6IHJlc3BvbnNlLnBhZ2luZy50b3RhbEVsZW1lbnRzXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0czogRGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0W10gPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0ICE9PSBudWxsKTtcblxuICAgIHJldHVybiBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCB3aGVuIHRoZSBsaW1pdCBvZiBkYXRhcG9pbnRzIGlzIGV4Y2VlZGVkIGR1cmluZyBmaWxlIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIGhhc05vRXhwb3J0YWJsZURhdGEgLSBJbmRpY2F0ZXMgaWYgdGhlcmUgaXMgbm8gZXhwb3J0YWJsZSBkYXRhIGJlY2F1c2UgdGhlIGRhdGUgcmFuZ2Ugb2YgYWxsIHNlbGVjdGVkIGRhdGFwb2ludHMgZXhjZWVkcyAxLDAwMCwwMDAgcmVjb3Jkcy5cbiAgICogQHBhcmFtIGVtYWlsRGVsaXZlcmFibGVDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgdGhhdCBleGNlZWQgdGhlIGxpbWl0LCB3aWxsIGJlIHByb2NlZWRlZCBieSB0aGUgYmFja2VuZCBhbmQgc2VudCBieSBlbWFpbC5cbiAgICogQHBhcmFtIGJyb3dzZXJEb3dubG9hZGFibGVDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgdGhhdCBjYW4gYmUgZG93bmxvYWRlZCBkaXJlY3RseS5cbiAgICogQHBhcmFtIHNraXBwZWREYXRhcG9pbnRDb3VudCAtIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50IGV4cG9ydHMgc2tpcHBlZCBkdWUgdG8gZXhjZWVkaW5nIHRoZSBtZWFzdXJlbWVudHMgQVBJIGxpbWl0IG9mIDEsMDAwLDAwMCByZWNvcmRzLlxuICAgKiBAcGFyYW0gdG90YWxEYXRhcG9pbnRzU2VsZWN0ZWRGb3JFeHBvcnRDb3VudCAtIFRvdGFsIG51bWJlciBvZiBkYXRhcG9pbnQgc2VsZWN0ZWQgZm9yIGV4cG9ydHMuXG4gICAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHRoYXQgY2FuIGJlIGluamVjdGVkLlxuICAgKi9cbiAgZ2V0TGltaXRFeGNlZWRlZE1lc3NhZ2UoXG4gICAgaGFzTm9FeHBvcnRhYmxlRGF0YTogYm9vbGVhbixcbiAgICBlbWFpbERlbGl2ZXJhYmxlQ291bnQ/OiBudW1iZXIsXG4gICAgYnJvd3NlckRvd25sb2FkYWJsZUNvdW50PzogbnVtYmVyLFxuICAgIG5vblJldHJpZXZhYmxlQ291bnQ/OiBudW1iZXIsXG4gICAgdG90YWxEYXRhcG9pbnRzU2VsZWN0ZWRGb3JFeHBvcnRDb3VudD86IG51bWJlclxuICApOiBzdHJpbmcge1xuICAgIGlmIChoYXNOb0V4cG9ydGFibGVEYXRhKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoXG4gICAgICAgICAgYFRoZSBkYXRhIGZvciBzZWxlY3RlZCBkYXRhIHBvaW50KHMpIGV4Y2VlZHMgMSwwMDAsMDAwIHJlY29yZHMsIHdoaWNoIGlzIHRoZSBsaW1pdCBmb3IgYmFja2VuZCBwcm9jZXNzaW5nLiBUbyBleHBvcnQgdGhpcyBkYXRhLCByZWR1Y2UgdGhlIGRhdGUgcmFuZ2UuYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChcbiAgICAgICAgYEFmdGVyIGNsaWNraW5nIFwiRG93bmxvYWRcIjo8YnI+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGk+PHN0cm9uZz57eyRicm93c2VyRG93bmxvYWRhYmxlQ291bnR9fTwvc3Ryb25nPiBkYXRhIHBvaW50IGV4cG9ydChzKSB3aWxsIGJlIGRvd25sb2FkZWQgZGlyZWN0bHkgd2l0aGluIG9uZSBmaWxlOiA8ZW0+ZXhwb3J0ZWRfW2Nzdi9leGNlbF0uemlwPC9lbT48L2xpPlxuICAgICAgICAgIDxsaT48c3Ryb25nPnt7JGVtYWlsRGVsaXZlcmFibGVDb3VudH19PC9zdHJvbmc+IGRhdGEgcG9pbnQgZXhwb3J0KHMpIHJlcXVpcmUgZnVydGhlciBwcm9jZXNzaW5nLiBUaGUgZmlsZXMgd2lsbCBiZSBzZW50IHRvIHlvdSB2aWEgc2VwYXJhdGUgZW1haWxzIG9uY2UgY29tcGxldGVkLCB3aGljaCBtYXkgdGFrZSBzb21lIHRpbWUuPC9saT5cbiAgICAgICAgICA8bGk+PHN0cm9uZz57eyRub25SZXRyaWV2YWJsZUNvdW50fX08L3N0cm9uZz4gZGF0YSBwb2ludCBleHBvcnQocykgZXhjZWVkZWQgMSwwMDAsMDAwIHJlY29yZHMsIHdoaWNoIGlzIHRoZSBsaW1pdCBmb3IgYmFja2VuZCBwcm9jZXNzaW5nLiBUbyBleHBvcnQgdGhlc2UgZGF0YSwgcmVkdWNlIHRoZSBkYXRlIHJhbmdlLiBPdGhlcndpc2UsIHRoZSBkYXRhIHdpbGwgbmVpdGhlciBiZSBkb3dubG9hZGVkIG5vciBzZW50IHZpYSBlbWFpbC48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD5UaGUgdG90YWwgbnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgY2FuIGJlIGV4cG9ydGVkIGlzOiA8c3Ryb25nPnt7JHRvdGFsRXhwb3J0YWJsZURhdGFwb2ludHNDb3VudH19IG91dCBvZiB7eyR0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50fX08L3N0cm9uZz4uPC9wPlxuICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBmaWxlIG5hbWUgY29udmVudGlvbiBvZiBmaWxlcyB3aXRoaW4gYSBaSVAgZmlsZSBpczogPGNvZGU+W3NvdXJjZV1fW2ZyYWdtZW50X3Nlcmllc10uW2Nzdi94bHNdPC9jb2RlPjwvcD5gXG4gICAgICApLFxuICAgICAge1xuICAgICAgICAkYnJvd3NlckRvd25sb2FkYWJsZUNvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICAgICRlbWFpbERlbGl2ZXJhYmxlQ291bnQ6IGVtYWlsRGVsaXZlcmFibGVDb3VudCxcbiAgICAgICAgJG5vblJldHJpZXZhYmxlQ291bnQ6IG5vblJldHJpZXZhYmxlQ291bnQsXG4gICAgICAgICR0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50OiB0b3RhbERhdGFwb2ludHNTZWxlY3RlZEZvckV4cG9ydENvdW50LFxuICAgICAgICAkdG90YWxFeHBvcnRhYmxlRGF0YXBvaW50c0NvdW50OiBicm93c2VyRG93bmxvYWRhYmxlQ291bnQgKyBlbWFpbERlbGl2ZXJhYmxlQ291bnRcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBbXG4gICAgICBicm93c2VyRG93bmxvYWRhYmxlQ291bnQsXG4gICAgICBlbWFpbERlbGl2ZXJhYmxlQ291bnQsXG4gICAgICBub25SZXRyaWV2YWJsZUNvdW50XG4gICAgXSk7XG5cbiAgICByZXR1cm4gdHJpbW1lZE1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYW4gaW5mb3JtYXRpb24gYWxlcnQgYWJvdXQgc2VuZGluZyBkYXRhIHZpYSBlbWFpbC5cbiAgICpcbiAgICogT25seSBtZWFzdXJlbWVudHMgQVBJIGNhbiBzZW5kIGZpbGVzIHZpYSBlbWFpbC5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVUeXBlIC0gVGhlIHR5cGUgb2YgZmlsZSB0byBiZSBzZW50LlxuICAgKiBAcGFyYW0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0IC0gVGhlIGFycmF5IG9mIGRhdGFwb2ludHMgZXhjZWVkaW5nIHRoZSBsaW1pdC5cbiAgICovXG4gIHNob3dTZW5kVmlhRW1haWxJbmZvQWxlcnQoXG4gICAgZmlsZVR5cGU6IHN0cmluZyxcbiAgICBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQ6IERhdGFwb2ludHNFeGNlZWRpbmdMaW1pdFtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgZ2V0dGV4dChgWW91IHdpbGwgZ2V0IHt7JGZpbGVUeXBlVGV4dH19IGZpbGUocykgZm9yIHt7JGNvdW50fX0gc2VyaWVzIHZpYSBlbWFpbC5gKSxcbiAgICAgIHsgJGNvdW50OiBkYXRhcG9pbnRzRXhjZWVkaW5nTGltaXQubGVuZ3RoLCAkZmlsZVR5cGVUZXh0OiBmaWxlVHlwZSB9XG4gICAgKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRMaXN0ID0gZGF0YXBvaW50c0V4Y2VlZGluZ0xpbWl0XG4gICAgICAubWFwKFxuICAgICAgICBkYXRhcG9pbnQgPT5cbiAgICAgICAgICBg4oCiICR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC5zb3VyY2V9XyR7ZGF0YXBvaW50LmRhdGFwb2ludERldGFpbC52YWx1ZUZyYWdtZW50VHlwZX1fJHtkYXRhcG9pbnQuZGF0YXBvaW50RGV0YWlsLnZhbHVlRnJhZ21lbnRTZXJpZXN9YFxuICAgICAgKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyhtZXNzYWdlVGVtcGxhdGUsIGZvcm1hdHRlZExpc3QpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hNZWFzdXJlbWVudERhdGFGaWxlc0FuZFBhaXJXaXRoU291cmNlRGV0YWlscyhcbiAgICBhY2NlcHRGaWxlVHlwZTogc3RyaW5nLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnXG4gICk6IFByb21pc2U8RGF0YVRvRXhwb3J0V2l0aEJhY2tlbmRDcmVhdGVkRmlsZVtdPiB7XG4gICAgY29uc3QgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWcgPSB7XG4gICAgICBleHBvcnRDb25maWcsXG4gICAgICBhY2NlcHRGaWxlVHlwZVxuICAgIH07XG4gICAgY29uc3QgZmlsZVByb21pc2VzID0gZXhwb3J0Q29uZmlnLmRhdGFwb2ludERldGFpbHMubWFwKGRldGFpbHMgPT5cbiAgICAgIHRoaXMuZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZUNvbmZpZylcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChmaWxlUHJvbWlzZXMpO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hBbmRQcm9jZXNzTWVhc3VyZW1lbnRGaWxlKFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnOiBNZWFzdXJlbWVudEZpbGVDb25maWdcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB0aGlzLnByZXBhcmVNZWFzdXJlbWVudHNGaWx0ZXIoXG4gICAgICBkZXRhaWxzLFxuICAgICAgbWVhc3VyZW1lbnRGaWxlQ29uZmlnLmV4cG9ydENvbmZpZ1xuICAgICk7XG4gICAgY29uc3QgaGVhZGVyID0geyBhY2NlcHQ6IG1lYXN1cmVtZW50RmlsZUNvbmZpZy5hY2NlcHRGaWxlVHlwZSB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlOiBJRmV0Y2hSZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmdldE1lYXN1cmVtZW50c0ZpbGUoZmlsdGVyLCBoZWFkZXIpO1xuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMCwgdGhlbiB0aGUgZmlsZSBpcyBpbiB0aGUgcmVzcG9uc2UuXG4gICAgICAvLyBJZiB0aGUgc3RhdHVzIGlzIDIwMiwgdGhlbiB0aGUgZmlsZSBpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGJhY2tlbmQgYW5kIHdpbGwgYmUgc2VudCBieSBlbWFpbC5cbiAgICAgIGlmIChtZWFzdXJlbWVudEZpbGVSZXNwb25zZS5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXJnZU1lYXN1cmVtZW50c1dpdGhJdHNTb3VyY2VEZXRhaWxzKGRldGFpbHMsIG1lYXN1cmVtZW50RmlsZVJlc3BvbnNlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWVyZ2VNZWFzdXJlbWVudHNXaXRoSXRzU291cmNlRGV0YWlscyhcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIG1lYXN1cmVtZW50RmlsZTogSUZldGNoUmVzcG9uc2VcbiAgKTogUHJvbWlzZTxEYXRhVG9FeHBvcnRXaXRoQmFja2VuZENyZWF0ZWRGaWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZSxcbiAgICAgIGZldGNoZWRNZWFzdXJlbWVudHNCbG9iRmlsZTogYXdhaXQgbWVhc3VyZW1lbnRGaWxlLmJsb2IoKVxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaEFuZFByZXBhcmVEYXRhVG9FeHBvcnQoXG4gICAgZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcsXG4gICAgaXNNZWFzdXJlbWVudDogYm9vbGVhblxuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFtdPiB7XG4gICAgcmV0dXJuIGlzTWVhc3VyZW1lbnRcbiAgICAgID8gYXdhaXQgdGhpcy5mZXRjaEFuZFByZXBhcmVNZWFzdXJlbWVudERhdGFUb0V4cG9ydEZvclByZXZpZXcoZXhwb3J0Q29uZmlnKVxuICAgICAgOiBhd2FpdCB0aGlzLmZldGNoQW5kUHJlcGFyZVNlcmllc0RhdGFUb0V4cG9ydChleHBvcnRDb25maWcpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U291cmNlc1dpdGhQZXJtaXNzaW9uc1RvUmVhZChkYXRhcG9pbnREZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzW10pOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgZGF0ZUZyb20gPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKGRhdGVGcm9tKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBkYXRhcG9pbnREZXRhaWxzLm1hcChhc3luYyBkYXRhcG9pbnQgPT4ge1xuICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICBkYXRlRnJvbSxcbiAgICAgICAgZGF0ZVRvLFxuICAgICAgICBzb3VyY2U6IGRhdGFwb2ludC5zb3VyY2VcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgcmVzIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHJldHVybiBkYXRhcG9pbnQuc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBmZXRjaCwgcmV0dXJuIG51bGwgdG8gcHJldmVudCBwcm9taXNlIHJlamVjdGlvblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZldGNoZWRTb3VyY2VzID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG4gICAgcmV0dXJuIGZldGNoZWRTb3VyY2VzLmZpbHRlcigoc291cmNlKTogc291cmNlIGlzIHN0cmluZyA9PiBzb3VyY2UgIT09IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIGdpdmVuIGRhdGUgYnkgYWRkaW5nIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbnV0ZXMgYW5kIHNldHRpbmcgc2Vjb25kcyB0byAwLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIGFkanVzdGVkIGluIHN0cmluZyBmb3JtYXQuXG4gICAqIEBwYXJhbSBtaW51dGVzIC0gVGhlIG51bWJlciBvZiBtaW51dGVzIHRvIGFkZCB0byB0aGUgZGF0ZS5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIFdoZXRoZXIgdG8gcm91bmQgdGhlIHNlY29uZHMgb3Igbm90LlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNlY29uZHMgd2lsbCBiZSByb3VuZGVkIHRvIDAuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiBmYWxzZSwgdGhlIHNlY29uZHMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdGhleSBhcmUuXG4gICAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBkYXRlIGluIElTTyBzdHJpbmcgZm9ybWF0LlxuICAgKi9cbiAgYWRqdXN0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlLCBtaW51dGVzOiBudW1iZXIsIHJvdW5kU2Vjb25kcyA9IHRydWUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgaWYgKGlzTmFOKGRhdGVUaW1lLmdldFRpbWUoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkYXRlJyk7XG4gICAgfVxuXG4gICAgZGF0ZVRpbWUuc2V0VVRDTWludXRlcyhkYXRlVGltZS5nZXRVVENNaW51dGVzKCkgKyBtaW51dGVzKTtcbiAgICBpZiAocm91bmRTZWNvbmRzKSB7XG4gICAgICBkYXRlVGltZS5zZXRVVENTZWNvbmRzKDAsIDApO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlVGltZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYW5kIHByZXBhcmVzIG1lYXN1cmVtZW50IGRhdGEgZm9yIHByZXZpZXcuXG4gICAqXG4gICAqIEVtcHR5IERhdGFUb0V4cG9ydCBvYmplY3QgY2FuIGJlIHJldHVybmVkLCBiZWNhdXNlIHVubGlrZSBzZXJpZXMgZGF0YSxcbiAgICogbWVhc3VyZW1lbnQgZGF0YSBpcyBub3QgZnVydGhlciBwcm9jZXNzZWQgYmVzaWRlcyBzaG93aW5nIG9ubHkgaW4gdGhlIHByZXZpZXcuXG4gICAqIENTVi9FeGNlbCBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBiYWNrZW5kIGZvciBtZWFzdXJlbWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSBleHBvcnRDb25maWcgLSBUaGUgZXhwb3J0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIERhdGFUb0V4cG9ydCBvYmplY3RzIG9yIG51bGwgd2hlbiBubyBkYXRhIGlzIGZldGNoZWQuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZldGNoQW5kUHJlcGFyZU1lYXN1cmVtZW50RGF0YVRvRXhwb3J0Rm9yUHJldmlldyhcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPERhdGFUb0V4cG9ydFtdPiB8IG51bGwge1xuICAgIGNvbnN0IGRhdGFUb0V4cG9ydFByb21pc2VzOiBQcm9taXNlPERhdGFUb0V4cG9ydD5bXSA9IGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzLm1hcChcbiAgICAgIGFzeW5jIGRldGFpbHMgPT4ge1xuICAgICAgICBjb25zdCBmZXRjaGVkTWVhc3VyZW1lbnREYXRhOiBJUmVzdWx0TGlzdDxJTWVhc3VyZW1lbnQ+ID1cbiAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoTWVhc3VyZW1lbnREYXRhRm9yUHJldmlldyhkZXRhaWxzLCBleHBvcnRDb25maWcpO1xuXG4gICAgICAgIGlmIChmZXRjaGVkTWVhc3VyZW1lbnREYXRhPy5kYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTWVhc3VyZW1lbnREYXRhRm9yUHJldmlldyhkZXRhaWxzLCBmZXRjaGVkTWVhc3VyZW1lbnREYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoZGF0YVRvRXhwb3J0UHJvbWlzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaE1lYXN1cmVtZW50RGF0YUZvclByZXZpZXcoXG4gICAgZGV0YWlsczogRGF0YXBvaW50RGV0YWlscyxcbiAgICBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZ1xuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PElNZWFzdXJlbWVudD4+IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbWVhc3VyZW1lbnRzOiBJUmVzdWx0TGlzdDxJTWVhc3VyZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB0aGlzLnByZXBhcmVNZWFzdXJlbWVudHNGaWx0ZXIoXG4gICAgICBkZXRhaWxzLFxuICAgICAgZXhwb3J0Q29uZmlnLFxuICAgICAgTUVBU1VSRU1FTlRTX1BSRVZJRVdfSVRFTVNfTElNSVRcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIG1lYXN1cmVtZW50cyA9IGF3YWl0IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlLmxpc3QoZmlsdGVyKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lYXN1cmVtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZU1lYXN1cmVtZW50c0ZpbHRlcihcbiAgICBkZXRhaWxzOiBEYXRhcG9pbnREZXRhaWxzLFxuICAgIGV4cG9ydENvbmZpZzogRXhwb3J0Q29uZmlnLFxuICAgIHBhZ2VTaXplPzogbnVtYmVyXG4gICk6IElNZWFzdXJlbWVudEZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBJTWVhc3VyZW1lbnRGaWx0ZXIgPSB7XG4gICAgICAvLyBSb3VuZCB0aGUgJ2Zyb20nIHRpbWUgdG8gdGhlIHByZXZpb3VzIGZ1bGwgbWludXRlLlxuICAgICAgZGF0ZUZyb206IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZUZyb20sIC0xKSxcbiAgICAgIC8vIFJvdW5kIHRoZSAndG8nIHRpbWUgdG8gdGhlIG5lYXJlc3QgZnVsbCBtaW51dGUuXG4gICAgICBkYXRlVG86IHRoaXMuYWRqdXN0RGF0ZShleHBvcnRDb25maWcuZGF0ZVRvLCAxKSxcbiAgICAgIHNvdXJjZTogZGV0YWlscy5zb3VyY2UsXG4gICAgICB2YWx1ZUZyYWdtZW50U2VyaWVzOiBkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXMsXG4gICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZVxuICAgIH07XG5cbiAgICBpZiAocGFnZVNpemUpIHtcbiAgICAgIGZpbHRlci5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NNZWFzdXJlbWVudERhdGFGb3JQcmV2aWV3KFxuICAgIGRldGFpbHM6IERhdGFwb2ludERldGFpbHMsXG4gICAgZGF0YTogSU1lYXN1cmVtZW50W11cbiAgKTogRGF0YVRvRXhwb3J0IHtcbiAgICBjb25zdCB1bml0ID0gZGF0YVswXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRUeXBlXVtkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXNdPy51bml0IHx8ICcnO1xuXG4gICAgY29uc3QgdmFsdWVzOiB7IFt0aW1lc3RhbXA6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZGF0YS5mb3JFYWNoKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgIHZhbHVlc1ttZWFzdXJlbWVudC50aW1lXSA9XG4gICAgICAgIG1lYXN1cmVtZW50W2RldGFpbHMudmFsdWVGcmFnbWVudFR5cGVdW2RldGFpbHMudmFsdWVGcmFnbWVudFNlcmllc10udmFsdWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyAuLi5kZXRhaWxzLCB1bml0LCB0aW1lVmFsdWVNYXA6IHZhbHVlcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFByZXBhcmVTZXJpZXNEYXRhVG9FeHBvcnQoZXhwb3J0Q29uZmlnOiBFeHBvcnRDb25maWcpIHtcbiAgICBjb25zdCBkYXRhcG9pbnRzVmFsdWVzRGF0YU1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPSB0aGlzLmdyb3VwU2VyaWVzQnlEZXZpY2VJZChcbiAgICAgIGV4cG9ydENvbmZpZy5kYXRhcG9pbnREZXRhaWxzXG4gICAgKTtcblxuICAgIGNvbnN0IGZldGNoZWREYXRhUHJvbWlzZXMgPSBBcnJheS5mcm9tKGRhdGFwb2ludHNWYWx1ZXNEYXRhTWFwKS5tYXAoXG4gICAgICBhc3luYyAoW3NvdXJjZSwgc2VyaWVzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8sIGFnZ3JlZ2F0aW9uIH0gPSBleHBvcnRDb25maWc7XG5cbiAgICAgICAgY29uc3QgcmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyID0ge1xuICAgICAgICAgIGRhdGVGcm9tLFxuICAgICAgICAgIGRhdGVUbyxcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogYWdncmVnYXRpb24gYXMgYWdncmVnYXRpb25UeXBlXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgeyBkYXRhIH06IElSZXN1bHQ8SVNlcmllcz4gPSBhd2FpdCB0aGlzLmZldGNoU2VyaWVzRGF0YShyYXdGaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiB7IHNvdXJjZSwgZGF0YSB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBmZXRjaGVkRGF0YUdyb3VwZWRCeVNvdXJjZTogU291cmNlSXRlbVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoZmV0Y2hlZERhdGFQcm9taXNlcyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU2VyaWVzRGF0YShleHBvcnRDb25maWcuZGF0YXBvaW50RGV0YWlscywgZmV0Y2hlZERhdGFHcm91cGVkQnlTb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBtYXAgb2YgYWN0aXZlIGRhdGEgcG9pbnRzIGRldmljZSBJRHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIHNlcmllcy5cbiAgICpcbiAgICogRXhhbXBsZSBvdXRwdXQ6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbmV3IE1hcChbXG4gICAqICAgWyc4NDQ2NTcyMDInLCBbJ2M4eV9UZW1wZXJhdHVyZS5UJ11dLFxuICAgKiAgIFsnMzI2NjY0MjcnLCBbJ2M4eV9CYXR0ZXJ5LkJhdHRlcnknXV1cbiAgICogXSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gZGF0YXBvaW50RGV0YWlscyAtIEFuIGFycmF5IG9mIGRhdGEgcG9pbnRzIGRldGFpbHMuXG4gICAqIEByZXR1cm5zIEEgbWFwIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGRhdGEgcG9pbnQgSUQgYW5kIHRoZSB2YWx1ZSBpcyBhbiBhcnJheSBvZiBkYXRhIHBvaW50IHNlcmllcy5cbiAgICovXG4gIHByaXZhdGUgZ3JvdXBTZXJpZXNCeURldmljZUlkKGRhdGFwb2ludERldGFpbHM6IERhdGFwb2ludERldGFpbHNbXSk6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwIHtcbiAgICByZXR1cm4gZGF0YXBvaW50RGV0YWlscy5yZWR1Y2UoXG4gICAgICAoXG4gICAgICAgIG1hcDogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gICAgICAgIHsgdmFsdWVGcmFnbWVudFR5cGUsIHZhbHVlRnJhZ21lbnRTZXJpZXMsIHNvdXJjZSB9OiBEYXRhcG9pbnREZXRhaWxzXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBgJHt2YWx1ZUZyYWdtZW50VHlwZX0uJHt2YWx1ZUZyYWdtZW50U2VyaWVzfWA7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBtYXAuZ2V0KHNvdXJjZSkgPz8gW107XG4gICAgICAgIG1hcC5zZXQoc291cmNlLCBbLi4uZXhpc3RpbmdWYWx1ZSwgdmFsdWVdKTtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH0sXG4gICAgICBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFNlcmllc0RhdGEocmF3RmlsdGVyOiBJU2VyaWVzRmlsdGVyKTogUHJvbWlzZTxJUmVzdWx0PElTZXJpZXM+PiB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHNlcmllc0RhdGE6IElSZXN1bHQ8SVNlcmllcz4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmaWx0ZXI6IElTZXJpZXNGaWx0ZXIgPSB0aGlzLnByZXBhcmVTZXJpZXNGaWx0ZXIoe1xuICAgICAgZGF0ZUZyb206IHJhd0ZpbHRlci5kYXRlRnJvbSxcbiAgICAgIGRhdGVUbzogcmF3RmlsdGVyLmRhdGVUbyxcbiAgICAgIHNvdXJjZTogcmF3RmlsdGVyLnNvdXJjZSxcbiAgICAgIHNlcmllczogcmF3RmlsdGVyLnNlcmllcyxcbiAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogcmF3RmlsdGVyLmFnZ3JlZ2F0aW9uVHlwZVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIGFkZGluZyBhIGNhY2hlIG1lY2hhbmlzbSAtPiBNVE0tNjAyODlcbiAgICAgIC8vIFdoZW4gdXNlciBzd2l0Y2hlcyBiZXR3ZWVuIHJlcG9ydCB0eXBlcywgYW5kIHJlc3Qgb2YgdGhlIHNldHRpbmdzIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGUgZGF0YSBzaG91bGQgbm90IGJlIGZldGNoZWQgYWdhaW4/XG4gICAgICBzZXJpZXNEYXRhID0gYXdhaXQgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdFNlcmllcyhmaWx0ZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VyaWVzRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZVNlcmllc0ZpbHRlcihmaWx0ZXJzOiBJU2VyaWVzRmlsdGVyKTogSVNlcmllc0ZpbHRlciB7XG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvLCBzb3VyY2UsIHNlcmllcywgYWdncmVnYXRpb25UeXBlIH0gPSBmaWx0ZXJzO1xuICAgIC8vIFJvdW5kIHRoZSAnZnJvbScgdGltZSB0byB0aGUgcHJldmlvdXMgZnVsbCBtaW51dGUuXG4gICAgY29uc3QgZnJvbSA9IHRoaXMuYWRqdXN0RGF0ZShkYXRlRnJvbSwgLTEpO1xuICAgIC8vIFJvdW5kIHRoZSAndG8nIHRpbWUgdG8gdGhlIG5lYXJlc3QgZnVsbCBtaW51dGUuXG4gICAgY29uc3QgdG8gPSB0aGlzLmFkanVzdERhdGUoZGF0ZVRvLCAxKTtcblxuICAgIGNvbnN0IGZpbHRlcjogSVNlcmllc0ZpbHRlciA9IHtcbiAgICAgIGRhdGVGcm9tOiBmcm9tLFxuICAgICAgZGF0ZVRvOiB0byxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgcmV2ZXJ0OiB0cnVlXG4gICAgfTtcblxuICAgIC8vIFRoZSAnTk9ORScgYWdncmVnYXRpb24gdHlwZSBpcyBub3QgaGFuZGxlZCBieSBhIGJhY2tlbmQsIHNvIGV2ZW4gd2hlbiBpcyBzZWxlY3RlZCwgaXQgaXMgbm90IHBhc3NlZCBhcyBhIGZpbHRlciBwYXJhbWV0ZXIuXG4gICAgaWYgKGFnZ3JlZ2F0aW9uVHlwZSAmJiBhZ2dyZWdhdGlvblR5cGUgIT09IChBR0dSRUdBVElPTl9WQUxVRVMubm9uZSBhcyBhZ2dyZWdhdGlvblR5cGUpKSB7XG4gICAgICBmaWx0ZXIuYWdncmVnYXRpb25UeXBlID0gYWdncmVnYXRpb25UeXBlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGl0IGlzIGEgdGVtcG9yYWwgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gdGhlIGJhY2tlbmQsXG4gICAgLy8gd2hlcmUgdGhlIHNlcmllcyB3aXRoIG1vcmUgdGhhbiBvbmUgZG90IGFyZSBpbXBvc3NpYmxlIHRvIHJldHJpZXZlOlxuICAgIC8vIGh0dHBzOi8vY3VtdWxvY2l0eS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9NVE0tNTkyNzdcbiAgICBpZiAoc2VyaWVzKSB7XG4gICAgICBjb25zdCBoYXNNb3JlVGhhbk9uZURvdCA9IChzZXJpZXMgYXMgc3RyaW5nW10pLnNvbWUocyA9PiBzLnNwbGl0KCcuJykubGVuZ3RoID4gMik7XG4gICAgICBpZiAoIWhhc01vcmVUaGFuT25lRG90KSB7XG4gICAgICAgIGZpbHRlci5zZXJpZXMgPSBzZXJpZXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgdGhlIGZldGNoZWQgc2VyaWVzIGRhdGEgYW5kIHByZXBhcmVzIGl0IGZvciBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhcG9pbnREZXRhaWxzIC0gQW4gYXJyYXkgb2YgZGF0YSBwb2ludCBkZXRhaWxzLlxuICAgKiBAcGFyYW0gZmV0Y2hlZERhdGFNYXAgLSBBIG1hcCBvZiBmZXRjaGVkIHNlcmllcyBkYXRhIGdyb3VwZWQgYnkgc291cmNlLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBEYXRhVG9FeHBvcnQgb2JqZWN0cy5cbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1Nlcmllc0RhdGEoZGF0YXBvaW50RGV0YWlsczogRGF0YXBvaW50RGV0YWlsc1tdLCBmZXRjaGVkRGF0YU1hcDogU291cmNlSXRlbVtdKSB7XG4gICAgY29uc3QgdmFsdWVzR3JvdXBlZEJ5U291cmNlID0gdGhpcy51dGlsc1NlcnZpY2UudHJhbnNmb3JtRGF0YVN0cnVjdHVyZShmZXRjaGVkRGF0YU1hcCk7XG5cbiAgICByZXR1cm4gZGF0YXBvaW50RGV0YWlscy5tYXAoKGRldGFpbHM6IERhdGFwb2ludERldGFpbHMpID0+IHtcbiAgICAgIGxldCB1bml0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgZGF0YTogVGltZVNlcmllc0RhdGE7XG5cbiAgICAgIC8qKlxuICAgICAgICogVW5pcXVlIGtleSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpZmZlcmVudCBzZXJpZXMgZnJvbSBzYW1lIHNvdXJjZSxcbiAgICAgICAqIGUuZy46IGM4eV9BY2NlbGVyYXRpb24uYWNjZWxlcmF0aW9uWCwgYzh5X0FjY2VsZXJhdGlvbi5hY2NlbGVyYXRpb25ZLCBjOHlfQWNjZWxlcmF0aW9uLmFjY2VsZXJhdGlvblpcbiAgICAgICAqL1xuICAgICAgY29uc3Qgc2VyaWVzS2V5ID0gYCR7ZGV0YWlscy52YWx1ZUZyYWdtZW50VHlwZX0uJHtkZXRhaWxzLnZhbHVlRnJhZ21lbnRTZXJpZXN9YDtcblxuICAgICAgaWYgKHZhbHVlc0dyb3VwZWRCeVNvdXJjZVtkZXRhaWxzLnNvdXJjZV1bc2VyaWVzS2V5XSkge1xuICAgICAgICB1bml0ID0gdmFsdWVzR3JvdXBlZEJ5U291cmNlW2RldGFpbHMuc291cmNlXVtzZXJpZXNLZXldLnNlcmllc0RldGFpbHMudW5pdDtcbiAgICAgICAgZGF0YSA9IHZhbHVlc0dyb3VwZWRCeVNvdXJjZVtkZXRhaWxzLnNvdXJjZV1bc2VyaWVzS2V5XS52YWx1ZXM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRldGFpbHMsXG4gICAgICAgIHVuaXQsXG4gICAgICAgIHRpbWVWYWx1ZU1hcDogZGF0YVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltcyB0aGUgZ2l2ZW4gSFRNTCBtZXNzYWdlIGJ5IHJlbW92aW5nIGxpc3QgaXRlbXMgdGhhdCBjb3JyZXNwb25kIHRvIHplcm8gY291bnRzLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBIVE1MIHN0cmluZyBjb250YWluaW5nIHRoZSBtZXNzYWdlIHdpdGggbGlzdCBpdGVtcy5cbiAgICogQHBhcmFtIGNvdW50cyAtIEFuIGFycmF5IG9mIG51bWJlciB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGxpc3QgaXRlbS5cbiAgICogQHBhcmFtIGNvdW50VG9UcmltIC0gQSBjb3VudCB0aGF0IHdpbGwgYmUgdHJpbW1lZCB3aXRoIGNvcnJlc3BvbmRpbmcgbGlzdCBpdGVtLlxuICAgKiBAcmV0dXJucyBBIHRyaW1tZWQgSFRNTCBzdHJpbmcgd2l0aCBsaXN0IGl0ZW1zIHJlbW92ZWQgd2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgY291bnQgaXMgemVyby5cbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBtZXNzYWdlID0gJzx1bD48bGk+SXRlbSAxPC9saT48bGk+SXRlbSAyPC9saT48bGk+SXRlbSAzPC9saT48L3VsPic7XG4gICAqIGNvbnN0IGNvdW50cyA9IFsxLCAwLCAyXTtcbiAgICogY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSB0aGlzLnJlbW92ZVplcm9Db3VudExpc3RJdGVtcyhtZXNzYWdlLCBjb3VudHMpO1xuICAgKiAvLyBSZXN1bHQ6ICc8dWw+PGxpPkl0ZW0gMTwvbGk+PGxpPkl0ZW0gMzwvbGk+PC91bD4nXG4gICAqIGBgYFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVaZXJvQ291bnRMaXN0SXRlbXMobWVzc2FnZTogc3RyaW5nLCBjb3VudHM6IG51bWJlcltdLCBjb3VudFRvVHJpbSA9IDApOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKG1lc3NhZ2UsICd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBsaXN0SXRlbXMgPSBkb2MucXVlcnlTZWxlY3RvckFsbCgndWwgbGknKTtcblxuICAgIGxpc3RJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGNvdW50c1tpbmRleF0gPT09IGNvdW50VG9UcmltKSB7XG4gICAgICAgIGl0ZW0ucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZG9jLmJvZHkuaW5uZXJIVE1MO1xuICB9XG59XG4iXX0=
@@ -12,11 +12,11 @@ export class DataPointsExportSelectorPreviewComponent {
12
12
  this.MEASUREMENTS_PREVIEW_ITEMS_LIMIT = MEASUREMENTS_PREVIEW_ITEMS_LIMIT;
13
13
  }
14
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorPreviewComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-preview", inputs: { hasFetchedDataAnyValuesToExport: "hasFetchedDataAnyValuesToExport", isPreviewLoading: "isPreviewLoading", previewTableData: "previewTableData" }, ngImport: i0, template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <span translate>\n <p>The preview shows the structure of the raw file from a single source.</p>\n <p>If no data is available, only the column headers are visible.</p>\n <p>\n The preview is limited to\n <b>{{ MEASUREMENTS_PREVIEW_ITEMS_LIMIT }}</b>\n records.\n </p>\n </span>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i3.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DataPointsExportSelectorPreviewComponent, isStandalone: true, selector: "c8y-datapoints-export-selector-preview", inputs: { hasFetchedDataAnyValuesToExport: "hasFetchedDataAnyValuesToExport", isPreviewLoading: "isPreviewLoading", previewTableData: "previewTableData" }, ngImport: i0, template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <p translate>The preview shows the structure of the raw file from a single source.</p>\n <p translate>If no data is available, only the column headers are visible.</p>\n <p\n translate\n [translateParams]=\"{ count: MEASUREMENTS_PREVIEW_ITEMS_LIMIT }\"\n ngNonBindable\n >\n The preview is limited to <b>{{ count }}</b> records.\n </p>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i3.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] }); }
16
16
  }
17
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DataPointsExportSelectorPreviewComponent, decorators: [{
18
18
  type: Component,
19
- args: [{ selector: 'c8y-datapoints-export-selector-preview', standalone: true, imports: [A11yModule, CoreModule, PopoverModule], template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <span translate>\n <p>The preview shows the structure of the raw file from a single source.</p>\n <p>If no data is available, only the column headers are visible.</p>\n <p>\n The preview is limited to\n <b>{{ MEASUREMENTS_PREVIEW_ITEMS_LIMIT }}</b>\n records.\n </p>\n </span>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n" }]
19
+ args: [{ selector: 'c8y-datapoints-export-selector-preview', standalone: true, imports: [A11yModule, CoreModule, PopoverModule], template: "<div class=\"p-t-16 p-l-16 p-r-16 m-b-0\">\n <div class=\"d-flex a-i-center\">\n <label\n class=\"m-b-0 d-flex a-i-center gap-4\"\n [title]=\"'Preview`of exported file`' | translate\"\n >\n {{ 'Preview`of exported file`' | translate }}\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"popoverPreviewTemplate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n <ng-template #popoverPreviewTemplate>\n <p translate>The preview shows the structure of the raw file from a single source.</p>\n <p translate>If no data is available, only the column headers are visible.</p>\n <p\n translate\n [translateParams]=\"{ count: MEASUREMENTS_PREVIEW_ITEMS_LIMIT }\"\n ngNonBindable\n >\n The preview is limited to <b>{{ count }}</b> records.\n </p>\n </ng-template>\n </label>\n </div>\n <div\n class=\"table-responsive\"\n style=\"min-height: 275px\"\n >\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Time' | translate }}</th>\n <th>{{ 'Source' | translate }}</th>\n <th>{{ 'Device name' | translate }}</th>\n <th>\n {{ 'Fragment and series' | translate }}\n </th>\n <th>{{ 'Value' | translate }}</th>\n <th>{{ 'Unit' | translate }}</th>\n </tr>\n </thead>\n <ng-container *ngIf=\"hasFetchedDataAnyValuesToExport || isPreviewLoading; else emptyState\">\n <ng-container *ngIf=\"!isPreviewLoading; else loading\">\n <tbody>\n <tr *ngFor=\"let row of previewTableData\">\n <td>{{ row.time }}</td>\n <td>{{ row.source }}</td>\n <td>{{ row.device_name }}</td>\n <td>\n {{ row.fragment_series }}\n </td>\n <td>{{ row.value }}</td>\n <td>{{ row.unit }}</td>\n </tr>\n </tbody>\n </ng-container>\n </ng-container>\n <ng-template #emptyState>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <div class=\"d-col a-i-center\">\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No data available.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-table-list--empty-state\"\n ></c8y-ui-empty-state>\n </div>\n </td>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #loading>\n <tbody>\n <tr>\n <td colspan=\"8\">\n <c8y-loading></c8y-loading>\n </td>\n </tr>\n </tbody>\n </ng-template>\n </table>\n </div>\n</div>\n" }]
20
20
  }], propDecorators: { hasFetchedDataAnyValuesToExport: [{
21
21
  type: Input
22
22
  }], isPreviewLoading: [{
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
24
24
  }], previewTableData: [{
25
25
  type: Input
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBRUwsZ0NBQWdDLEVBQ2pDLE1BQU0sMkNBQTJDLENBQUM7Ozs7O0FBUW5ELE1BQU0sT0FBTyx3Q0FBd0M7SUFOckQ7UUFXVyxxQ0FBZ0MsR0FBRyxnQ0FBZ0MsQ0FBQztLQUM5RTs4R0FOWSx3Q0FBd0M7a0dBQXhDLHdDQUF3Qyw4UENmckQsczFGQTJGQSwyQ0Q5RVksVUFBVSw4QkFBRSxVQUFVLCtwQkFBRSxhQUFhOzsyRkFFcEMsd0NBQXdDO2tCQU5wRCxTQUFTOytCQUNFLHdDQUF3QyxjQUV0QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQzs4QkFHdkMsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVFxufSBmcm9tICcuLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgUG9wb3Zlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBvaW50c0V4cG9ydFNlbGVjdG9yUHJldmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhhc0ZldGNoZWREYXRhQW55VmFsdWVzVG9FeHBvcnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUHJldmlld0xvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZpZXdUYWJsZURhdGE6IEV4cG9ydERhdGFbXTtcblxuICByZWFkb25seSBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVCA9IE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUO1xufVxuIiwiPGRpdiBjbGFzcz1cInAtdC0xNiBwLWwtMTYgcC1yLTE2IG0tYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJtLWItMCBkLWZsZXggYS1pLWNlbnRlciBnYXAtNFwiXG4gICAgICBbdGl0bGVdPVwiJ1ByZXZpZXdgb2YgZXhwb3J0ZWQgZmlsZWAnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICB7eyAnUHJldmlld2BvZiBleHBvcnRlZCBmaWxlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlclByZXZpZXdUZW1wbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJQcmV2aWV3VGVtcGxhdGU+XG4gICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5cbiAgICAgICAgICA8cD5UaGUgcHJldmlldyBzaG93cyB0aGUgc3RydWN0dXJlIG9mIHRoZSByYXcgZmlsZSBmcm9tIGEgc2luZ2xlIHNvdXJjZS48L3A+XG4gICAgICAgICAgPHA+SWYgbm8gZGF0YSBpcyBhdmFpbGFibGUsIG9ubHkgdGhlIGNvbHVtbiBoZWFkZXJzIGFyZSB2aXNpYmxlLjwvcD5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFRoZSBwcmV2aWV3IGlzIGxpbWl0ZWQgdG9cbiAgICAgICAgICAgIDxiPnt7IE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUIH19PC9iPlxuICAgICAgICAgICAgcmVjb3Jkcy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIlxuICAgIHN0eWxlPVwibWluLWhlaWdodDogMjc1cHhcIlxuICA+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aD57eyAnVGltZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnU291cmNlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdEZXZpY2UgbmFtZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD5cbiAgICAgICAgICAgIHt7ICdGcmFnbWVudCBhbmQgc2VyaWVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdWYWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgIDx0aD57eyAnVW5pdCcgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNGZXRjaGVkRGF0YUFueVZhbHVlc1RvRXhwb3J0IHx8IGlzUHJldmlld0xvYWRpbmc7IGVsc2UgZW1wdHlTdGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUHJldmlld0xvYWRpbmc7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHByZXZpZXdUYWJsZURhdGFcIj5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy50aW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy5zb3VyY2UgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93LmRldmljZV9uYW1lIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgIHt7IHJvdy5mcmFnbWVudF9zZXJpZXMgfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy52YWx1ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyByb3cudW5pdCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5U3RhdGU+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtY29sIGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICAgICAgICBbaWNvbl09XCInc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGRhdGEgYXZhaWxhYmxlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLWN5PVwiZGF0YXBvaW50cy10YWJsZS1saXN0LS1lbXB0eS1zdGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjhcIj5cbiAgICAgICAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1tb2RhbC9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1maWxlLWV4cG9ydGVyL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3ItcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBRUwsZ0NBQWdDLEVBQ2pDLE1BQU0sMkNBQTJDLENBQUM7Ozs7O0FBUW5ELE1BQU0sT0FBTyx3Q0FBd0M7SUFOckQ7UUFXVyxxQ0FBZ0MsR0FBRyxnQ0FBZ0MsQ0FBQztLQUM5RTs4R0FOWSx3Q0FBd0M7a0dBQXhDLHdDQUF3Qyw4UENmckQscTRGQTJGQSwyQ0Q5RVksVUFBVSw4QkFBRSxVQUFVLCtwQkFBRSxhQUFhOzsyRkFFcEMsd0NBQXdDO2tCQU5wRCxTQUFTOytCQUNFLHdDQUF3QyxjQUV0QyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQzs4QkFHdkMsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVFxufSBmcm9tICcuLi8uLi8uLi9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvci1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQTExeU1vZHVsZSwgQ29yZU1vZHVsZSwgUG9wb3Zlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVBvaW50c0V4cG9ydFNlbGVjdG9yUHJldmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGhhc0ZldGNoZWREYXRhQW55VmFsdWVzVG9FeHBvcnQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzUHJldmlld0xvYWRpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZpZXdUYWJsZURhdGE6IEV4cG9ydERhdGFbXTtcblxuICByZWFkb25seSBNRUFTVVJFTUVOVFNfUFJFVklFV19JVEVNU19MSU1JVCA9IE1FQVNVUkVNRU5UU19QUkVWSUVXX0lURU1TX0xJTUlUO1xufVxuIiwiPGRpdiBjbGFzcz1cInAtdC0xNiBwLWwtMTYgcC1yLTE2IG0tYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgIDxsYWJlbFxuICAgICAgY2xhc3M9XCJtLWItMCBkLWZsZXggYS1pLWNlbnRlciBnYXAtNFwiXG4gICAgICBbdGl0bGVdPVwiJ1ByZXZpZXdgb2YgZXhwb3J0ZWQgZmlsZWAnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICB7eyAnUHJldmlld2BvZiBleHBvcnRlZCBmaWxlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3BvcG92ZXJdPVwicG9wb3ZlclByZXZpZXdUZW1wbGF0ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3BvcG92ZXJQcmV2aWV3VGVtcGxhdGU+XG4gICAgICAgIDxwIHRyYW5zbGF0ZT5UaGUgcHJldmlldyBzaG93cyB0aGUgc3RydWN0dXJlIG9mIHRoZSByYXcgZmlsZSBmcm9tIGEgc2luZ2xlIHNvdXJjZS48L3A+XG4gICAgICAgIDxwIHRyYW5zbGF0ZT5JZiBubyBkYXRhIGlzIGF2YWlsYWJsZSwgb25seSB0aGUgY29sdW1uIGhlYWRlcnMgYXJlIHZpc2libGUuPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBjb3VudDogTUVBU1VSRU1FTlRTX1BSRVZJRVdfSVRFTVNfTElNSVQgfVwiXG4gICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICA+XG4gICAgICAgICAgVGhlIHByZXZpZXcgaXMgbGltaXRlZCB0byA8Yj57eyBjb3VudCB9fTwvYj4gcmVjb3Jkcy5cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiXG4gICAgc3R5bGU9XCJtaW4taGVpZ2h0OiAyNzVweFwiXG4gID5cbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoPnt7ICdUaW1lJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdTb3VyY2UnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICA8dGg+e3sgJ0RldmljZSBuYW1lJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPHRoPlxuICAgICAgICAgICAge3sgJ0ZyYWdtZW50IGFuZCBzZXJpZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgICA8dGg+e3sgJ1ZhbHVlJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgPHRoPnt7ICdVbml0JyB8IHRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0ZldGNoZWREYXRhQW55VmFsdWVzVG9FeHBvcnQgfHwgaXNQcmV2aWV3TG9hZGluZzsgZWxzZSBlbXB0eVN0YXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNQcmV2aWV3TG9hZGluZzsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgcHJldmlld1RhYmxlRGF0YVwiPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93LnRpbWUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93LnNvdXJjZSB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZD57eyByb3cuZGV2aWNlX25hbWUgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAge3sgcm93LmZyYWdtZW50X3NlcmllcyB9fVxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQ+e3sgcm93LnZhbHVlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IHJvdy51bml0IH19PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlTdGF0ZT5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1jb2wgYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICAgIFtpY29uXT1cIidzZWFyY2gnXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInTm8gZGF0YSBhdmFpbGFibGUuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJkYXRhcG9pbnRzLXRhYmxlLWxpc3QtLWVtcHR5LXN0YXRlXCJcbiAgICAgICAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiOFwiPlxuICAgICAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -12,7 +12,7 @@ export class TypeDeviceGridColumn extends BaseColumn {
12
12
  label: gettext('Show devices with type'),
13
13
  addText: gettext('Add next`type`'),
14
14
  tooltip: gettext('Use * as a wildcard character'),
15
- placeholder: gettext('MyType`DEVICE_TYPE`')
15
+ placeholder: 'c8y_MQTTDevice'
16
16
  }),
17
17
  getFilter(model) {
18
18
  const filter = {};
@@ -26,4 +26,4 @@ export class TypeDeviceGridColumn extends BaseColumn {
26
26
  this.sortingConfig = { pathSortingConfigs: [{ path: 'type' }] };
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5kZXZpY2UtZ3JpZC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kZXZpY2UtZ3JpZC9jb2x1bW5zL3R5cGUuZGV2aWNlLWdyaWQtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsaUNBQWlDLEVBQ2pDLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBQ2xELFlBQVksbUJBQWtDO1FBQzVDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsTUFBTSxFQUFFLGlDQUFpQyxDQUFDO2dCQUN4QyxHQUFHLEVBQUUsT0FBTztnQkFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO2dCQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2dCQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDO2dCQUNqRCxXQUFXLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDO2FBQzVDLENBQUM7WUFDRixTQUFTLENBQUMsS0FBVTtnQkFDbEIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VDb2x1bW4sXG4gIENvbHVtbkNvbmZpZyxcbiAgZ2V0QmFzaWNJbnB1dEFycmF5Rm9ybUZpZWxkQ29uZmlnLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgY2xhc3MgVHlwZURldmljZUdyaWRDb2x1bW4gZXh0ZW5kcyBCYXNlQ29sdW1uIHtcbiAgY29uc3RydWN0b3IoaW5pdGlhbENvbHVtbkNvbmZpZz86IENvbHVtbkNvbmZpZykge1xuICAgIHN1cGVyKGluaXRpYWxDb2x1bW5Db25maWcpO1xuXG4gICAgdGhpcy5uYW1lID0gJ3R5cGUnO1xuICAgIHRoaXMucGF0aCA9ICd0eXBlJztcbiAgICB0aGlzLmhlYWRlciA9IGdldHRleHQoJ1R5cGUnKTtcblxuICAgIHRoaXMuZmlsdGVyYWJsZSA9IHRydWU7XG4gICAgdGhpcy5maWx0ZXJpbmdDb25maWcgPSB7XG4gICAgICBmaWVsZHM6IGdldEJhc2ljSW5wdXRBcnJheUZvcm1GaWVsZENvbmZpZyh7XG4gICAgICAgIGtleTogJ3R5cGVzJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Nob3cgZGV2aWNlcyB3aXRoIHR5cGUnKSxcbiAgICAgICAgYWRkVGV4dDogZ2V0dGV4dCgnQWRkIG5leHRgdHlwZWAnKSxcbiAgICAgICAgdG9vbHRpcDogZ2V0dGV4dCgnVXNlICogYXMgYSB3aWxkY2FyZCBjaGFyYWN0ZXInKSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ015VHlwZWBERVZJQ0VfVFlQRWAnKVxuICAgICAgfSksXG4gICAgICBnZXRGaWx0ZXIobW9kZWw6IGFueSk6IGFueSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge307XG4gICAgICAgIGlmIChtb2RlbC50eXBlcy5sZW5ndGgpIHtcbiAgICAgICAgICBmaWx0ZXIudHlwZSA9IHsgX19pbjogbW9kZWwudHlwZXMgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnNvcnRhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnNvcnRpbmdDb25maWcgPSB7IHBhdGhTb3J0aW5nQ29uZmlnczogW3sgcGF0aDogJ3R5cGUnIH1dIH07XG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5kZXZpY2UtZ3JpZC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kZXZpY2UtZ3JpZC9jb2x1bW5zL3R5cGUuZGV2aWNlLWdyaWQtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsaUNBQWlDLEVBQ2pDLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBQ2xELFlBQVksbUJBQWtDO1FBQzVDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsTUFBTSxFQUFFLGlDQUFpQyxDQUFDO2dCQUN4QyxHQUFHLEVBQUUsT0FBTztnQkFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO2dCQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2dCQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDO2dCQUNqRCxXQUFXLEVBQUUsZ0JBQWdCO2FBQzlCLENBQUM7WUFDRixTQUFTLENBQUMsS0FBVTtnQkFDbEIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLGtCQUFrQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VDb2x1bW4sXG4gIENvbHVtbkNvbmZpZyxcbiAgZ2V0QmFzaWNJbnB1dEFycmF5Rm9ybUZpZWxkQ29uZmlnLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgY2xhc3MgVHlwZURldmljZUdyaWRDb2x1bW4gZXh0ZW5kcyBCYXNlQ29sdW1uIHtcbiAgY29uc3RydWN0b3IoaW5pdGlhbENvbHVtbkNvbmZpZz86IENvbHVtbkNvbmZpZykge1xuICAgIHN1cGVyKGluaXRpYWxDb2x1bW5Db25maWcpO1xuXG4gICAgdGhpcy5uYW1lID0gJ3R5cGUnO1xuICAgIHRoaXMucGF0aCA9ICd0eXBlJztcbiAgICB0aGlzLmhlYWRlciA9IGdldHRleHQoJ1R5cGUnKTtcblxuICAgIHRoaXMuZmlsdGVyYWJsZSA9IHRydWU7XG4gICAgdGhpcy5maWx0ZXJpbmdDb25maWcgPSB7XG4gICAgICBmaWVsZHM6IGdldEJhc2ljSW5wdXRBcnJheUZvcm1GaWVsZENvbmZpZyh7XG4gICAgICAgIGtleTogJ3R5cGVzJyxcbiAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Nob3cgZGV2aWNlcyB3aXRoIHR5cGUnKSxcbiAgICAgICAgYWRkVGV4dDogZ2V0dGV4dCgnQWRkIG5leHRgdHlwZWAnKSxcbiAgICAgICAgdG9vbHRpcDogZ2V0dGV4dCgnVXNlICogYXMgYSB3aWxkY2FyZCBjaGFyYWN0ZXInKSxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdjOHlfTVFUVERldmljZSdcbiAgICAgIH0pLFxuICAgICAgZ2V0RmlsdGVyKG1vZGVsOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHt9O1xuICAgICAgICBpZiAobW9kZWwudHlwZXMubGVuZ3RoKSB7XG4gICAgICAgICAgZmlsdGVyLnR5cGUgPSB7IF9faW46IG1vZGVsLnR5cGVzIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zb3J0YWJsZSA9IHRydWU7XG4gICAgdGhpcy5zb3J0aW5nQ29uZmlnID0geyBwYXRoU29ydGluZ0NvbmZpZ3M6IFt7IHBhdGg6ICd0eXBlJyB9XSB9O1xuICB9XG59XG4iXX0=
@@ -51,10 +51,10 @@ export class AddSmartGroupComponent {
51
51
  this.modal.hide();
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddSmartGroupComponent, deps: [{ token: i1.BsModalRef }, { token: i2.SmartGroupsService }, { token: i3.DeviceGridService }, { token: i4.AlertService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddSmartGroupComponent, selector: "c8y-add-smart-group", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i4.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: AddSmartGroupComponent, selector: "c8y-add-smart-group", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <br />\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i4.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i4.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AddSmartGroupComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'c8y-add-smart-group', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <p\n c8y-guide-docs\n translate\n ngNonBindable\n >\n <small>\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n" }]
58
+ args: [{ selector: 'c8y-add-smart-group', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-group-smart'\"></i>\n <h4\n id=\"modal-title\"\n translate\n >\n Add smart group\n </h4>\n </div>\n\n <form\n #createSmartGroup=\"ngForm\"\n (ngSubmit)=\"createSmartGroup.form.valid && create()\"\n >\n <div class=\"modal-inner-scroll\">\n <div\n class=\"modal-body\"\n id=\"modal-body\"\n >\n <c8y-form-group>\n <label\n class=\"d-inline-block\"\n for=\"name\"\n translate\n >\n Group name\n </label>\n <button\n class=\"btn-help btn-help--sm a-s-center\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"customPopoverTemplate\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n data-cy=\"add-smart-group-component--Help-button\"\n ></button>\n <input\n class=\"form-control\"\n id=\"name\"\n placeholder=\"{{ 'e.g. My smart group' | translate }}\"\n name=\"name\"\n type=\"text\"\n autocomplete=\"off\"\n required\n [(ngModel)]=\"smartGroup.name\"\n />\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n translate\n >\n Cancel\n </button>\n\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Add' | translate }}\"\n type=\"submit\"\n [disabled]=\"createSmartGroup.form.invalid\"\n translate\n >\n Add\n </button>\n </div>\n </form>\n</div>\n\n<ng-template #customPopoverTemplate>\n <div\n class=\"m-b-16\"\n style=\"pointer-events: auto\"\n tabindex=\"0\"\n data-cy=\"add-smart-group-component--popover-Template\"\n translate\n >\n Th\u0435 smart group will be created based on the filters currently applied in the device list.\n <br />\n </div>\n <br />\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"docs/device-management-application/grouping-devices/#using-smart-groups\">\n user documentation\n </a>\n .\n </small>\n </p>\n</ng-template>\n" }]
59
59
  }], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i2.SmartGroupsService }, { type: i3.DeviceGridService }, { type: i4.AlertService }, { type: i5.TranslateService }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXNtYXJ0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldmljZS1saXN0L2FkZC1zbWFydC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZpY2UtbGlzdC9hZGQtc21hcnQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU1sRSxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQ1UsS0FBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLGlCQUFvQyxFQUNwQyxLQUFtQixFQUNuQixnQkFBa0M7UUFKbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZDVDLGVBQVUsR0FBRztZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixrQkFBa0IsRUFBRSxFQUFFO1NBQ3ZCLENBQUM7SUFXQyxDQUFDO0lBRUosTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLGlCQUFpQjthQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUMxQixJQUFJLENBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDbkMsbUJBQW1CLEVBQUUsTUFBTTthQUM1QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUU7Z0JBQ3hFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7YUFDM0IsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBaERVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDJEQ2JuQyw4OEVBbUdBOzsyRkR0RmEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRHcm91cHNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLXNtYXJ0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1zbWFydC1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRkU21hcnRHcm91cENvbXBvbmVudCB7XG4gIHNtYXJ0R3JvdXAgPSB7XG4gICAgbmFtZTogJycsXG4gICAgdHlwZTogJ2M4eV9EeW5hbWljR3JvdXAnLFxuICAgIGM4eV9Jc0R5bmFtaWNHcm91cDoge31cbiAgfTtcblxuICBjb25maWdLZXk6IHN0cmluZztcbiAgZGV2aWNlUXVlcnk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgc21hcnRHcm91cHNTZXJ2aWNlOiBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VHcmlkU2VydmljZTogRGV2aWNlR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyaWRTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnJCh0aGlzLmNvbmZpZ0tleSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgICAgIHNtYXJ0R3JvdXA6IHRoaXMuc21hcnRHcm91cCxcbiAgICAgICAgICAgIGRldmljZVF1ZXJ5U3RyaW5nOiB0aGlzLmRldmljZVF1ZXJ5LFxuICAgICAgICAgICAgY29uZmlndXJhYmxlQ29sdW1uczogY29uZmlnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1NtYXJ0IGdyb3VwIFwie3sgbmFtZSB9fVwiIGFkZGVkLicpLCB7XG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuc21hcnRHcm91cC5uYW1lXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGV4ID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIFtjOHlJY29uXT1cIidjOHktZ3JvdXAtc21hcnQnXCI+PC9pPlxuICAgIDxoNFxuICAgICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBBZGQgc21hcnQgZ3JvdXBcbiAgICA8L2g0PlxuICA8L2Rpdj5cblxuICA8Zm9ybVxuICAgICNjcmVhdGVTbWFydEdyb3VwPVwibmdGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwiY3JlYXRlU21hcnRHcm91cC5mb3JtLnZhbGlkICYmIGNyZWF0ZSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtb2RhbC1ib2R5XCJcbiAgICAgICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICBmb3I9XCJuYW1lXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEdyb3VwIG5hbWVcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtIGEtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3BvcG92ZXJdPVwiY3VzdG9tUG9wb3ZlclRlbXBsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW291dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJhZGQtc21hcnQtZ3JvdXAtY29tcG9uZW50LS1IZWxwLWJ1dHRvblwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgaWQ9XCJuYW1lXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgc21hcnQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzbWFydEdyb3VwLm5hbWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBDYW5jZWxcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQWRkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY3JlYXRlU21hcnRHcm91cC5mb3JtLmludmFsaWRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQWRkXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tUG9wb3ZlclRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtLWItMTZcIlxuICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IGF1dG9cIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgZGF0YS1jeT1cImFkZC1zbWFydC1ncm91cC1jb21wb25lbnQtLXBvcG92ZXItVGVtcGxhdGVcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgVGjQtSBzbWFydCBncm91cCB3aWxsIGJlIGNyZWF0ZWQgYmFzZWQgb24gdGhlIGZpbHRlcnMgY3VycmVudGx5IGFwcGxpZWQgaW4gdGhlIGRldmljZSBsaXN0LlxuICAgIDxiciAvPlxuICA8L2Rpdj5cbiAgPHBcbiAgICBjOHktZ3VpZGUtZG9jc1xuICAgIHRyYW5zbGF0ZVxuICAgIG5nTm9uQmluZGFibGVcbiAgPlxuICAgIDxzbWFsbD5cbiAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICA8YSBjOHktZ3VpZGUtaHJlZj1cImRvY3MvZGV2aWNlLW1hbmFnZW1lbnQtYXBwbGljYXRpb24vZ3JvdXBpbmctZGV2aWNlcy8jdXNpbmctc21hcnQtZ3JvdXBzXCI+XG4gICAgICAgIHVzZXIgZG9jdW1lbnRhdGlvblxuICAgICAgPC9hPlxuICAgICAgLlxuICAgIDwvc21hbGw+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXNtYXJ0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldmljZS1saXN0L2FkZC1zbWFydC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9kZXZpY2UtbGlzdC9hZGQtc21hcnQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU1sRSxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQ1UsS0FBaUIsRUFDakIsa0JBQXNDLEVBQ3RDLGlCQUFvQyxFQUNwQyxLQUFtQixFQUNuQixnQkFBa0M7UUFKbEMsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBZDVDLGVBQVUsR0FBRztZQUNYLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixrQkFBa0IsRUFBRSxFQUFFO1NBQ3ZCLENBQUM7SUFXQyxDQUFDO0lBRUosTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLGlCQUFpQjthQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUMxQixJQUFJLENBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDbkMsbUJBQW1CLEVBQUUsTUFBTTthQUM1QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxDQUFDLEVBQUU7Z0JBQ3hFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7YUFDM0IsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBaERVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDJEQ2JuQyx5OUVBbUdBOzsyRkR0RmEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU21hcnRHcm91cHNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBEZXZpY2VHcmlkU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGV2aWNlLWdyaWQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLXNtYXJ0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1zbWFydC1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRkU21hcnRHcm91cENvbXBvbmVudCB7XG4gIHNtYXJ0R3JvdXAgPSB7XG4gICAgbmFtZTogJycsXG4gICAgdHlwZTogJ2M4eV9EeW5hbWljR3JvdXAnLFxuICAgIGM4eV9Jc0R5bmFtaWNHcm91cDoge31cbiAgfTtcblxuICBjb25maWdLZXk6IHN0cmluZztcbiAgZGV2aWNlUXVlcnk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgc21hcnRHcm91cHNTZXJ2aWNlOiBTbWFydEdyb3Vwc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VHcmlkU2VydmljZTogRGV2aWNlR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgY3JlYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmRldmljZUdyaWRTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnJCh0aGlzLmNvbmZpZ0tleSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zbWFydEdyb3Vwc1NlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgICAgIHNtYXJ0R3JvdXA6IHRoaXMuc21hcnRHcm91cCxcbiAgICAgICAgICAgIGRldmljZVF1ZXJ5U3RyaW5nOiB0aGlzLmRldmljZVF1ZXJ5LFxuICAgICAgICAgICAgY29uZmlndXJhYmxlQ29sdW1uczogY29uZmlnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1NtYXJ0IGdyb3VwIFwie3sgbmFtZSB9fVwiIGFkZGVkLicpLCB7XG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuc21hcnRHcm91cC5uYW1lXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGV4ID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlKDEpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIFtjOHlJY29uXT1cIidjOHktZ3JvdXAtc21hcnQnXCI+PC9pPlxuICAgIDxoNFxuICAgICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBBZGQgc21hcnQgZ3JvdXBcbiAgICA8L2g0PlxuICA8L2Rpdj5cblxuICA8Zm9ybVxuICAgICNjcmVhdGVTbWFydEdyb3VwPVwibmdGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwiY3JlYXRlU21hcnRHcm91cC5mb3JtLnZhbGlkICYmIGNyZWF0ZSgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtb2RhbC1ib2R5XCJcbiAgICAgICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgICAgID5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiXG4gICAgICAgICAgICBmb3I9XCJuYW1lXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIEdyb3VwIG5hbWVcbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtIGEtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3BvcG92ZXJdPVwiY3VzdG9tUG9wb3ZlclRlbXBsYXRlXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW291dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJhZGQtc21hcnQtZ3JvdXAtY29tcG9uZW50LS1IZWxwLWJ1dHRvblwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgaWQ9XCJuYW1lXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgc21hcnQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzbWFydEdyb3VwLm5hbWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgPlxuICAgICAgICBDYW5jZWxcbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQWRkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY3JlYXRlU21hcnRHcm91cC5mb3JtLmludmFsaWRcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgID5cbiAgICAgICAgQWRkXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tUG9wb3ZlclRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtLWItMTZcIlxuICAgIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IGF1dG9cIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgZGF0YS1jeT1cImFkZC1zbWFydC1ncm91cC1jb21wb25lbnQtLXBvcG92ZXItVGVtcGxhdGVcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgVGjQtSBzbWFydCBncm91cCB3aWxsIGJlIGNyZWF0ZWQgYmFzZWQgb24gdGhlIGZpbHRlcnMgY3VycmVudGx5IGFwcGxpZWQgaW4gdGhlIGRldmljZSBsaXN0LlxuICAgIDxiciAvPlxuICA8L2Rpdj5cbiAgPGJyIC8+XG4gIDxwIGM4eS1ndWlkZS1kb2NzPlxuICAgIDxzbWFsbFxuICAgICAgdHJhbnNsYXRlXG4gICAgICBuZ05vbkJpbmRhYmxlXG4gICAgPlxuICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgIDxhIGM4eS1ndWlkZS1ocmVmPVwiZG9jcy9kZXZpY2UtbWFuYWdlbWVudC1hcHBsaWNhdGlvbi9ncm91cGluZy1kZXZpY2VzLyN1c2luZy1zbWFydC1ncm91cHNcIj5cbiAgICAgICAgdXNlciBkb2N1bWVudGF0aW9uXG4gICAgICA8L2E+XG4gICAgICAuXG4gICAgPC9zbWFsbD5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==