@c8y/ngx-components 1021.29.1 → 1021.30.3

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 (28) hide show
  1. package/device-profile/device-profile.component.d.ts.map +1 -1
  2. package/device-profile/device-profile.model.d.ts +3 -0
  3. package/device-profile/device-profile.model.d.ts.map +1 -1
  4. package/device-profile/device-profile.service.d.ts +1 -1
  5. package/device-profile/device-profile.service.d.ts.map +1 -1
  6. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts +2 -1
  7. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  8. package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
  9. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  10. package/esm2022/device-profile/device-profile.component.mjs +4 -3
  11. package/esm2022/device-profile/device-profile.model.mjs +1 -1
  12. package/esm2022/device-profile/device-profile.service.mjs +17 -16
  13. package/esm2022/device-profile/device-tab-profile/device-profile-item-list.component.mjs +3 -3
  14. package/esm2022/device-profile/device-tab-profile/device-tab-profile.component.mjs +20 -4
  15. package/esm2022/repository/shared/repository.model.mjs +1 -1
  16. package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +2 -2
  17. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  18. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-device-profile.mjs +38 -20
  20. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  22. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +1 -1
  23. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components.mjs +1 -1
  25. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/repository/shared/repository.model.d.ts +1 -0
  28. package/repository/shared/repository.model.d.ts.map +1 -1
@@ -93,7 +93,7 @@ export class AlarmWidgetService {
93
93
  [AlarmStatus.CLEARED]: true
94
94
  }
95
95
  : oldConfig.options.status,
96
- types: oldConfig.options.types.length ? oldConfig.options.types : [''],
96
+ types: oldConfig.options.types?.length ? oldConfig.options.types : [''],
97
97
  isAutoRefreshEnabled: true,
98
98
  refreshInterval: isIntervalRefresh ? this.alarmsViewService.DEFAULT_INTERVAL_VALUE : undefined
99
99
  };
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
341
341
  type: Injectable,
342
342
  args: [{ providedIn: 'root' }]
343
343
  }], ctorParameters: () => [{ type: i1.AlarmsViewService }] });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0td2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9hbGFybXMvYWxhcm0td2lkZ2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsV0FBVyxFQUVYLFFBQVEsRUFFUixlQUFlLEVBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDTCxrQkFBa0IsRUFJbEIsdUJBQXVCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7OztBQUVuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFHcEMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFNUQ7Ozs7Ozs7O09BUUc7SUFDSCx5QkFBeUIsQ0FDdkIsSUFBbUQ7UUFFbkQsT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCwwQkFBMEIsQ0FBQyxpQkFBMEIsRUFBRSxRQUFpQjtRQUN0RSxPQUFPO1lBQ0wsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7WUFDbkMsVUFBVSxFQUNSLFFBQVEsS0FBSyx1QkFBdUI7Z0JBQ2xDLENBQUMsQ0FBRTtvQkFDQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJO29CQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO29CQUN0QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO29CQUN0QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJO2lCQUNKO2dCQUN4QixDQUFDLENBQUU7b0JBQ0MsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtvQkFDekIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSztvQkFDdkIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSztvQkFDdkIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztpQkFDTDtZQUM1QixNQUFNLEVBQ0osUUFBUSxLQUFLLHVCQUF1QjtnQkFDbEMsQ0FBQyxDQUFFO29CQUNDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUk7b0JBQ2hDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUk7b0JBQzFCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUk7aUJBQ0o7Z0JBQzNCLENBQUMsQ0FBRTtvQkFDQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLO29CQUNqQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJO29CQUMxQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLO2lCQUNMO1lBQy9CLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxDQUFDLGlCQUFpQjtZQUM5QixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQy9GLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCx1QkFBdUIsQ0FDckIsU0FBZ0MsRUFDaEMsaUJBQTBCO1FBRTFCLE1BQU0sS0FBSyxHQUNULFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLGNBQWM7WUFDNUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVM7WUFDOUIsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNuRSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBRUQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzlCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtZQUN4QixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLFVBQVUsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ25ELENBQUMsQ0FBRTtvQkFDQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJO29CQUNoQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJO29CQUMxQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJO2lCQUNKO2dCQUMzQixDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzVCLEtBQUssRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQy9GLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsNEJBQTRCLENBQUMsUUFBd0I7UUFDbkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDBCQUEwQixDQUFDLFFBQXdCO1FBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILHNCQUFzQixDQUFDLE1BQTZCLEVBQUUsUUFBaUI7UUFDckUsTUFBTSxNQUFNLEdBQXFCO1lBQy9CLFFBQVEsRUFBRSxRQUFRLElBQUksaUJBQWlCO1lBQ3ZDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzNELE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDckQsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3BDLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsZUFBZTtnQkFDcEIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7b0JBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLFNBQVM7Z0JBQ2QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7b0JBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUMvQixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1lBQy9ELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsbUJBQW1CLENBQUMsR0FBeUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQzthQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILDZCQUE2QixDQUFDLGNBQXdCLEVBQUUscUJBQTZCO1FBQ25GLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sQ0FBQyxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztJQUNsRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWtCRztJQUNILG1DQUFtQyxDQUNqQyxLQUFzQixFQUN0QixNQUFnQixFQUNoQixNQUE4QjtRQUU5QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxjQUFjLENBQUMsR0FBK0I7UUFDNUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsQ0FBQyxLQUFxQjtRQUN0QyxJQUFJLFdBQXFCLENBQUM7UUFFMUIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssa0JBQWtCLENBQUMsU0FBUztnQkFDL0IsV0FBVyxHQUFHLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDM0UsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEQsS0FBSyxrQkFBa0IsQ0FBQyxXQUFXO2dCQUNqQyxXQUFXLEdBQUcsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELEtBQUssa0JBQWtCLENBQUMsaUJBQWlCO2dCQUN2QyxXQUFXLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hEO2dCQUNFLFdBQVcsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsTUFBZ0IsRUFBRSxNQUE2QjtRQUNuRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTFELE9BQU8saUJBQWlCLElBQUksZUFBZSxJQUFJLGFBQWEsQ0FBQztJQUMvRCxDQUFDO0lBQ0Q7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLFFBQXNCLEVBQUUsTUFBNkI7UUFDdEUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsTUFBZ0IsRUFBRSxNQUE2QjtRQUM3RSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsTUFBNkIsRUFBRSxLQUFhO1FBQzFELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUN2RixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG9CQUFvQixDQUFDLFdBQXFCO1FBQ2hELE9BQU8sWUFBWSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0F0V1Usa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIEFsYXJtU3RhdHVzU2V0dGluZ3MsXG4gIEFsYXJtU3RhdHVzLFxuICBJQWxhcm0sXG4gIFNldmVyaXR5LFxuICBTZXZlcml0eUZpbHRlcixcbiAgU0VWRVJJVFlfTEFCRUxTXG59IGZyb20gJ0BjOHkvY2xpZW50JztcblxuaW1wb3J0IHsgU2V2ZXJpdHlTZXR0aW5ncywgU2V2ZXJpdHlUeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQge1xuICBBTEFSTV9PUkRFUl9WQUxVRVMsXG4gIEFsYXJtTGlzdFdpZGdldENvbmZpZyxcbiAgQWxhcm1PcmRlclR5cGUsXG4gIExlZ2FjeUFsYXJtTGlzdENvbmZpZyxcbiAgUkVDRU5UX0FMQVJNU19XSURHRVRfSURcbn0gZnJvbSAnLi9hbGFybS1saXN0LXdpZGdldC5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDIwO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsYXJtV2lkZ2V0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGEgZm9sbG93cyB0aGUgTGVnYWN5QWxhcm1Db25maWcgc3RydWN0dXJlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgYSBnaXZlbiBkYXRhIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBMZWdhY3lBbGFybUNvbmZpZ1xuICAgKiBieSBjaGVja2luZyBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSAnb3B0aW9ucycgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIGEgTGVnYWN5QWxhcm1Db25maWcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNPbGRBbGFybUNvbmZpZ1N0cnVjdHVyZShcbiAgICBkYXRhOiBMZWdhY3lBbGFybUxpc3RDb25maWcgfCBBbGFybUxpc3RXaWRnZXRDb25maWdcbiAgKTogZGF0YSBpcyBMZWdhY3lBbGFybUxpc3RDb25maWcge1xuICAgIHJldHVybiBkYXRhICE9PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnb3B0aW9ucycgaW4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHByZWRlZmluZWQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgbmV3IGNvbmZpZ3VyYXRpb24gb2JqZWN0IGJhc2VkIG9uXG4gICAqIGEgd2lkZ2V0cyBJRCAodGhhdCBkZXRlcm1pbmVzIGlmIGlzIGEgbGVnYWN5IFJlY2VudCBvciBDcml0aWNhbCBhbGFybXMgd2lkZ2V0KS5cbiAgICpcbiAgICogQHBhcmFtIGlzSW50ZXJ2YWxSZWZyZXNoIC0gZGV0ZXJtaW5lcyBhIHR5cGUgb2YgYSByZWZyZXNoLlxuICAgKiBAcGFyYW0gd2lkZ2V0SWQgLSBkZXRlcm1pbmVzIGlmIGEgY29uZmlnIHNob3VsZCBiZSBkb25lIGZvciBSZWNlbnQgb3IgQ3JpdGljYWwgYWxhcm1zIHdpZGdldC5cbiAgICogQHJldHVybnMgVGhlIG5ldywgcHJlZGVmaW5lZCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICovXG4gIGdldFByZWRlZmluZWRDb25maWd1cmF0aW9uKGlzSW50ZXJ2YWxSZWZyZXNoOiBib29sZWFuLCB3aWRnZXRJZD86IHN0cmluZyk6IEFsYXJtTGlzdFdpZGdldENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9yZGVyOiBBTEFSTV9PUkRFUl9WQUxVRVMuQllfQUNUSVZFLFxuICAgICAgc2V2ZXJpdGllczpcbiAgICAgICAgd2lkZ2V0SWQgPT09IFJFQ0VOVF9BTEFSTVNfV0lER0VUX0lEXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICBbU2V2ZXJpdHkuQ1JJVElDQUxdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUFKT1JdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUlOT1JdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuV0FSTklOR106IHRydWVcbiAgICAgICAgICAgIH0gYXMgU2V2ZXJpdHlTZXR0aW5ncylcbiAgICAgICAgICA6ICh7XG4gICAgICAgICAgICAgIFtTZXZlcml0eS5DUklUSUNBTF06IHRydWUsXG4gICAgICAgICAgICAgIFtTZXZlcml0eS5NQUpPUl06IGZhbHNlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUlOT1JdOiBmYWxzZSxcbiAgICAgICAgICAgICAgW1NldmVyaXR5LldBUk5JTkddOiBmYWxzZVxuICAgICAgICAgICAgfSBhcyBTZXZlcml0eVNldHRpbmdzKSxcbiAgICAgIHN0YXR1czpcbiAgICAgICAgd2lkZ2V0SWQgPT09IFJFQ0VOVF9BTEFSTVNfV0lER0VUX0lEXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNLTk9XTEVER0VEXTogdHJ1ZSxcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDVElWRV06IHRydWUsXG4gICAgICAgICAgICAgIFtBbGFybVN0YXR1cy5DTEVBUkVEXTogdHJ1ZVxuICAgICAgICAgICAgfSBhcyBBbGFybVN0YXR1c1NldHRpbmdzKVxuICAgICAgICAgIDogKHtcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDS05PV0xFREdFRF06IGZhbHNlLFxuICAgICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogdHJ1ZSxcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkNMRUFSRURdOiBmYWxzZVxuICAgICAgICAgICAgfSBhcyBBbGFybVN0YXR1c1NldHRpbmdzKSxcbiAgICAgIHR5cGVzOiBbJyddLFxuICAgICAgaXNSZWFsdGltZTogIWlzSW50ZXJ2YWxSZWZyZXNoLFxuICAgICAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IHRydWUsXG4gICAgICByZWZyZXNoSW50ZXJ2YWw6IGlzSW50ZXJ2YWxSZWZyZXNoID8gdGhpcy5hbGFybXNWaWV3U2VydmljZS5ERUZBVUxUX0lOVEVSVkFMX1ZBTFVFIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgTGVnYWN5QWxhcm1Db25maWcgb2JqZWN0IGludG8gYW4gQWxhcm1MaXN0V2lkZ2V0Q29uZmlnIG9iamVjdC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBtYXBzIHRoZSBwcm9wZXJ0aWVzIGZyb20gYW4gb2xkIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIChMZWdhY3lBbGFybUNvbmZpZylcbiAgICogdG8gYSBuZXcgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKEFsYXJtTGlzdFdpZGdldENvbmZpZykuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRDb25maWcgLSBUaGUgb2xkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGJlIHRyYW5zZm9ybWVkLlxuICAgKiBAcmV0dXJucyAtIFRoZSBuZXcgY29uZmlndXJhdGlvbiBvYmplY3QgbWFwcGVkIGZyb20gdGhlIG9sZCBvbmUuXG4gICAqL1xuICBtYXBUb05ld0NvbmZpZ1N0cnVjdHVyZShcbiAgICBvbGRDb25maWc6IExlZ2FjeUFsYXJtTGlzdENvbmZpZyxcbiAgICBpc0ludGVydmFsUmVmcmVzaDogYm9vbGVhblxuICApOiBBbGFybUxpc3RXaWRnZXRDb25maWcge1xuICAgIGNvbnN0IG9yZGVyOiBBbGFybU9yZGVyVHlwZSA9XG4gICAgICBvbGRDb25maWcub3B0aW9ucy5vcmRlck1vZGUgPT09ICdBQ1RJVkVfRklSU1QnXG4gICAgICAgID8gQUxBUk1fT1JERVJfVkFMVUVTLkJZX0FDVElWRVxuICAgICAgICA6IEFMQVJNX09SREVSX1ZBTFVFUy5CWV9TRVZFUklUWTtcblxuICAgIGlmICghdGhpcy5pc0NvbnRhaW5pbmdBbGxTZXZlcml0eVR5cGVzKG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5KSkge1xuICAgICAgb2xkQ29uZmlnLm9wdGlvbnMuc2V2ZXJpdHkgPSB0aGlzLmFkZEFsbE1pc3NpbmdTZXZlcml0eVR5cGVzKG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JkZXI6IG9yZGVyLFxuICAgICAgaXNSZWFsdGltZTogb2xkQ29uZmlnLnJlYWx0aW1lLFxuICAgICAgZGV2aWNlOiBvbGRDb25maWcuZGV2aWNlLFxuICAgICAgc2hvd0FsYXJtc0ZvckNoaWxkcmVuOiBmYWxzZSxcbiAgICAgIHNldmVyaXRpZXM6IG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5LFxuICAgICAgc3RhdHVzOiB0aGlzLmFsbFZhbHVlc0ZhbHNlKG9sZENvbmZpZy5vcHRpb25zLnN0YXR1cylcbiAgICAgICAgPyAoe1xuICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDS05PV0xFREdFRF06IHRydWUsXG4gICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogdHJ1ZSxcbiAgICAgICAgICAgIFtBbGFybVN0YXR1cy5DTEVBUkVEXTogdHJ1ZVxuICAgICAgICAgIH0gYXMgQWxhcm1TdGF0dXNTZXR0aW5ncylcbiAgICAgICAgOiBvbGRDb25maWcub3B0aW9ucy5zdGF0dXMsXG4gICAgICB0eXBlczogb2xkQ29uZmlnLm9wdGlvbnMudHlwZXMubGVuZ3RoID8gb2xkQ29uZmlnLm9wdGlvbnMudHlwZXMgOiBbJyddLFxuICAgICAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IHRydWUsXG4gICAgICByZWZyZXNoSW50ZXJ2YWw6IGlzSW50ZXJ2YWxSZWZyZXNoID8gdGhpcy5hbGFybXNWaWV3U2VydmljZS5ERUZBVUxUX0lOVEVSVkFMX1ZBTFVFIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIHNldmVyaXR5IG9iamVjdCBjb250YWlucyBhbGwgdGhlIHByZWRlZmluZWQgc2V2ZXJpdHkgdHlwZXMuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIEEgcmVjb3JkIG9iamVjdCB3aGVyZSBrZXlzIGFyZSBzZXZlcml0eSB0eXBlIHN0cmluZ3MgYW5kIHZhbHVlcyBhcmUgYm9vbGVhbi5cbiAgICogICAgICAgICAgICAgICAgIC0gVGhpcyBvYmplY3QgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBwcmVkZWZpbmVkIHNldmVyaXR5IHR5cGVzLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYWxsIHByZWRlZmluZWQgc2V2ZXJpdHkgdHlwZXMgYXJlIHByZXNlbnQgaW4gdGhlIHNldmVyaXR5IG9iamVjdDsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgKi9cbiAgaXNDb250YWluaW5nQWxsU2V2ZXJpdHlUeXBlcyhzZXZlcml0eTogU2V2ZXJpdHlGaWx0ZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoU0VWRVJJVFlfTEFCRUxTKS5ldmVyeShzZXZlcml0eVR5cGUgPT4gc2V2ZXJpdHlUeXBlIGluIHNldmVyaXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFueSBtaXNzaW5nIHNldmVyaXR5IHR5cGVzIHRvIHRoZSBwcm92aWRlZCBzZXZlcml0eSBvYmplY3Qgd2l0aCBhIGRlZmF1bHQgdmFsdWUgb2YgYGZhbHNlYC5cbiAgICpcbiAgICogQHBhcmFtIHNldmVyaXR5IC0gQSByZWNvcmQgb2JqZWN0IHdoZXJlIGtleXMgYXJlIHNldmVyaXR5IHR5cGUgc3RyaW5ncyBhbmQgdmFsdWVzIGFyZSBib29sZWFuLlxuICAgKiAgICAgICAgICAgICAgICAgLSBNaXNzaW5nIHNldmVyaXR5IHR5cGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzZXZlcml0eSBvYmplY3QsIHdoaWNoIGluY2x1ZGVzIGFsbCBwcmVkZWZpbmVkIHNldmVyaXR5IHR5cGVzLCBhZGRpbmcgYW55XG4gICAqICAgICAgICAgIHRoYXQgd2VyZSBtaXNzaW5nIHdpdGggYSB2YWx1ZSBvZiBgZmFsc2VgLlxuICAgKi9cbiAgYWRkQWxsTWlzc2luZ1NldmVyaXR5VHlwZXMoc2V2ZXJpdHk6IFNldmVyaXR5RmlsdGVyKTogU2V2ZXJpdHlGaWx0ZXIge1xuICAgIE9iamVjdC5rZXlzKFNFVkVSSVRZX0xBQkVMUykuZm9yRWFjaChzZXZlcml0eVR5cGUgPT4ge1xuICAgICAgaWYgKCEoc2V2ZXJpdHlUeXBlIGluIHNldmVyaXR5KSkge1xuICAgICAgICBzZXZlcml0eVtzZXZlcml0eVR5cGVdID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNldmVyaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYW4gQWxhcm1MaXN0V2lkZ2V0Q29uZmlnIG9iamVjdCB0byBhbiBBbGFybVF1ZXJ5RmlsdGVyLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBwcm92aWRlZCBBbGFybUxpc3RXaWRnZXRDb25maWcgaW50byBhIGZvcm1hdCBzdWl0YWJsZSBmb3IgcXVlcnlpbmcgYWxhcm1zLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciB0aGUgYWxhcm0gbGlzdCB3aWRnZXQuXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSAtIE9wdGlvbmFsIG51bWJlciBzcGVjaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSBwYWdlcyB0byBiZSByZXR1cm5lZCBpbiB0aGUgcXVlcnkuXG4gICAqIEByZXR1cm5zIC0gVGhlIHF1ZXJ5IGZpbHRlciBvYmplY3QgY29uc3RydWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIG1hcENvbmZpZ1RvUXVlcnlGaWx0ZXIoY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWcsIHBhZ2VTaXplPzogbnVtYmVyKTogQWxhcm1RdWVyeUZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBBbGFybVF1ZXJ5RmlsdGVyID0ge1xuICAgICAgcGFnZVNpemU6IHBhZ2VTaXplIHx8IERFRkFVTFRfUEFHRV9TSVpFLFxuICAgICAgcXVlcnk6IHRoaXMuZ2V0T3JkZXJQYXJhbWV0ZXJzKGNvbmZpZy5vcmRlciksXG4gICAgICBzZXZlcml0eTogdGhpcy5leHRyYWN0RmlsdGVyUGFyYW1zKGNvbmZpZy5zZXZlcml0aWVzIHx8IHt9KSxcbiAgICAgIHN0YXR1czogdGhpcy5leHRyYWN0RmlsdGVyUGFyYW1zKGNvbmZpZy5zdGF0dXMgfHwge30pLFxuICAgICAgdHlwZTogKGNvbmZpZy50eXBlcyB8fCBbXSkuam9pbignLCcpLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIGlmIChjb25maWcuZGF0ZUZpbHRlcikge1xuICAgICAgZmlsdGVyLmxhc3RVcGRhdGVkRnJvbSA9XG4gICAgICAgIHR5cGVvZiBjb25maWcuZGF0ZUZpbHRlclswXSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGNvbmZpZy5kYXRlRmlsdGVyWzBdXG4gICAgICAgICAgOiBjb25maWcuZGF0ZUZpbHRlclswXS50b0lTT1N0cmluZygpO1xuICAgICAgZmlsdGVyLmNyZWF0ZWRUbyA9XG4gICAgICAgIHR5cGVvZiBjb25maWcuZGF0ZUZpbHRlclsxXSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGNvbmZpZy5kYXRlRmlsdGVyWzFdXG4gICAgICAgICAgOiBjb25maWcuZGF0ZUZpbHRlclsxXS50b0lTT1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRldmljZSkge1xuICAgICAgZmlsdGVyLnNvdXJjZSA9IGNvbmZpZy5kZXZpY2UuaWQ7XG4gICAgICBmaWx0ZXIud2l0aFNvdXJjZUFzc2V0cyA9IHRydWU7XG4gICAgICBmaWx0ZXIud2l0aFNvdXJjZURldmljZXMgPSB0cnVlO1xuICAgICAgZmlsdGVyLndpdGhTb3VyY2VBc3NldHMgPSBjb25maWcuc2hvd0FsYXJtc0ZvckNoaWxkcmVuID8/IHRydWU7XG4gICAgICBmaWx0ZXIud2l0aFNvdXJjZURldmljZXMgPSBjb25maWcuc2hvd0FsYXJtc0ZvckNoaWxkcmVuID8/IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYW5kIGNvbmNhdGVuYXRlcyBmaWx0ZXIgcGFyYW1ldGVycyBmcm9tIGEgZ2l2ZW4gb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGFuIG9iamVjdCBjb250YWluaW5nIGZpbHRlciBzZXR0aW5ncyAoZWl0aGVyIFNldmVyaXR5RmlsdGVyXG4gICAqIG9yIEFsYXJtU3RhdHVzU2V0dGluZ3MpIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGFsbCBrZXlzIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGlzIHRydWUuXG4gICAqIElmIHRoZSBvYmplY3QgaXMgZW1wdHkgb3IgbnVsbCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCBjb250YWluaW5nIGZpbHRlciBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgLSBBIGNvbmNhdGVuYXRlZCBzdHJpbmcgb2Yga2V5cyB3aXRoIHRydWUgdmFsdWVzLCBzZXBhcmF0ZWQgYnkgY29tbWFzLlxuICAgKi9cbiAgZXh0cmFjdEZpbHRlclBhcmFtcyhvYmo6IFNldmVyaXR5RmlsdGVyIHwgQWxhcm1TdGF0dXNTZXR0aW5ncyk6IHN0cmluZyB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iailcbiAgICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gdmFsdWUpXG4gICAgICAubWFwKChba2V5XSkgPT4ga2V5KVxuICAgICAgLmpvaW4oJywnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGluY29taW5nIHJlYWwtdGltZSBhbGFybSBoYXMgYSBkaWZmZXJlbnQgc3RhdHVzIHRoYW4gYW4gZXhpc3RpbmcgYWxhcm0uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBwcm92aWRlZCBpbmNvbWluZyByZWFsLXRpbWUgYWxhcm0ncyBzdGF0dXMgZGlmZmVyc1xuICAgKiBmcm9tIHRoYXQgb2YgYW4gZXhpc3RpbmcgYWxhcm0gd2l0aCB0aGUgc2FtZSBJRCBpbiB0aGUgZ2l2ZW4gYXJyYXkgb2YgYWxhcm1zLlxuICAgKlxuICAgKiBAcGFyYW0gZXhpc3RpbmdBbGFybXMgLSBUaGUgYXJyYXkgb2YgZXhpc3RpbmcgYWxhcm1zLlxuICAgKiBAcGFyYW0gaW5jb21pbmdSZWFsdGltZUFsYXJtIC0gVGhlIGluY29taW5nIHJlYWwtdGltZSBhbGFybSB0byBjaGVjay5cbiAgICogQHJldHVybnMgLSBUcnVlIGlmIHRoZSBleGlzdGluZyBhbGFybSdzIHN0YXR1cyBoYXMgY2hhbmdlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgaGFzRXhpc3RpbmdBbGFybUNoYW5nZWRTdGF0dXMoZXhpc3RpbmdBbGFybXM6IElBbGFybVtdLCBpbmNvbWluZ1JlYWx0aW1lQWxhcm06IElBbGFybSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4aXN0aW5nQWxhcm0gPSBleGlzdGluZ0FsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLmlkID09PSBpbmNvbWluZ1JlYWx0aW1lQWxhcm0uaWQpO1xuICAgIHJldHVybiAhIWV4aXN0aW5nQWxhcm0gJiYgZXhpc3RpbmdBbGFybS5zdGF0dXMgIT09IGluY29taW5nUmVhbHRpbWVBbGFybS5zdGF0dXM7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVycyBhbGFybXMgYmFzZWQgb24gdGhlaXIgc3RhdHVzLCBzZXZlcml0eSwgYW5kIHR5cGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGRldGVybWluZXMgaWYgYSBnaXZlbiBhbGFybSwgaWRlbnRpZmllZCBlaXRoZXIgYnkgYSBudW1lcmljIElEIG9yIGFuIGBJQWxhcm1gIG9iamVjdCxcbiAgICogbWF0Y2hlcyBzcGVjaWZpYyBjcml0ZXJpYSBkZWZpbmVkIGluIGBhbGFybXNgIGFuZCBvcHRpb25hbGx5IGBjb25maWdgLlxuICAgKlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgYWxhcm0gdG8gY2hlY2ssIHJlcHJlc2VudGVkIGVpdGhlciBieSBhIG51bWVyaWMgSUQgb3IgYW4gYElBbGFybWAgb2JqZWN0LlxuICAgKiBAcGFyYW0gYWxhcm1zIC0gQW4gYXJyYXkgb2YgYElBbGFybWAgb2JqZWN0cyBhZ2FpbnN0IHdoaWNoIHRoZSBnaXZlbiBhbGFybSBpcyBldmFsdWF0ZWQuXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbC4gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGFsYXJtIGxpc3Qgd2lkZ2V0LCB1c2VkIHRvIGRlZmluZSBhZGRpdGlvbmFsXG4gICAqICAgICAgICAgICAgICAgICBmaWx0ZXJpbmcgY3JpdGVyaWEuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm0gbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhOyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAqICAgICAgICAgIElmIGBhbGFybWAgaXMgYSBudW1iZXIsIGl0IGFsd2F5cyByZXR1cm5zIGBmYWxzZWAuXG4gICAqICAgICAgICAgIElmIGBjb25maWdgIGlzIG5vdCBwcm92aWRlZCwgaXQgdXNlcyBhIGxlZ2FjeSBmaWx0ZXIgZm9yIGNyaXRpY2FsIGFsYXJtcy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogLSBXaGVuIGBhbGFybWAgaXMgYSBudW1lcmljIElELCB0aGUgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgIGFzIGl0IGNhbm5vdCBtYXRjaCBhZ2FpbnN0IHR5cGUgYW5kIHNldmVyaXR5LlxuICAgKiAtIElmIGBjb25maWdgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGZ1bmN0aW9uIGFzc3VtZXMgYSBsZWdhY3kgc2NlbmFyaW8gZm9yIGZpbHRlcmluZyBhbGwgY3JpdGljYWwgYWxhcm1zLlxuICAgKi9cbiAgZmlsdGVyQWxhcm1zQnlTdGF0dXNTZXZlcml0eUFuZFR5cGUoXG4gICAgYWxhcm06IG51bWJlciB8IElBbGFybSxcbiAgICBhbGFybXM6IElBbGFybVtdLFxuICAgIGNvbmZpZz86IEFsYXJtTGlzdFdpZGdldENvbmZpZ1xuICApOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGFsYXJtID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzQWxhcm1NYXRjaGVkQnlDb25maWcoYWxhcm0sIGFsYXJtcywgY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFsbCB2YWx1ZXMgaW4gdGhlIGdpdmVuIG9iamVjdCBhcmUgZmFsc2UuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGV2ZXJ5IHZhbHVlIGluIHRoZSBwcm92aWRlZCBvYmplY3QgdG8gc2VlIGlmIHRoZXkgYXJlIGFsbCBmYWxzZS5cbiAgICpcbiAgICogQHBhcmFtIG9iaiAtIEFuIG9iamVjdCB3aXRoIGJvb2xlYW4gdmFsdWVzLlxuICAgKiBAcmV0dXJucyAtIFJldHVybnMgYHRydWVgIGlmIGFsbCB2YWx1ZXMgaW4gdGhlIG9iamVjdCBhcmUgZmFsc2UsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgYWxsVmFsdWVzRmFsc2Uob2JqOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikuZXZlcnkodmFsdWUgPT4gIXZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgc3RyaW5nIG9mIG9yZGVyIHBhcmFtZXRlcnMgZm9yIGEgcXVlcnkgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBhbGFybSBvcmRlci5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBhbiBhbGFybSBvcmRlciBhbmQgbWFwcyBpdCB0byBhIGNvcnJlc3BvbmRpbmcgc2V0IG9mIG9yZGVyIHBhcmFtZXRlcnMuXG4gICAqIEl0IHN1cHBvcnRzIGRpZmZlcmVudCBvcmRlcmluZyB0eXBlcywgc3VjaCBhcyBCWV9BQ1RJVkUsIEJZX1NFVkVSSVRZLCBhbmQgQllfREFURV9BU0NFTkRJTkcuXG4gICAqIFRoZSBvcmRlciBwYXJhbWV0ZXJzIGFyZSB1c2VkIHRvIGNvbnN0cnVjdCBhIHF1ZXJ5IHN0cmluZyB0aGF0IGRldGVybWluZXMgdGhlIG9yZGVyXG4gICAqIGluIHdoaWNoIGFsYXJtcyBhcmUgcmV0cmlldmVkIG9yIGRpc3BsYXllZC5cbiAgICpcbiAgICogQHBhcmFtIG9yZGVyIC0gVGhlIHNwZWNpZmllZCBvcmRlciBmb3Igc29ydGluZyBhbGFybXMgKGUuZy4sIEJZX0FDVElWRSkuXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgb2Ygb3JkZXIgcGFyYW1ldGVycyB0byBiZSB1c2VkIGluIGEgcXVlcnksIG9yIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgb3JkZXIgdHlwZSBpcyB1bnJlY29nbml6ZWQuXG4gICAqL1xuICBnZXRPcmRlclBhcmFtZXRlcnMob3JkZXI6IEFsYXJtT3JkZXJUeXBlKTogc3RyaW5nIHtcbiAgICBsZXQgb3JkZXJQYXJhbXM6IHN0cmluZ1tdO1xuXG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgICAgY2FzZSBBTEFSTV9PUkRFUl9WQUxVRVMuQllfQUNUSVZFOlxuICAgICAgICBvcmRlclBhcmFtcyA9IFsnc3RhdHVzIGFzYycsICdzZXZlcml0eSBhc2MnLCAndGltZS5kYXRlIGRlc2MnLCAndGV4dCBhc2MnXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRPcmRlclBhcmFtZXRlcnMob3JkZXJQYXJhbXMpO1xuICAgICAgY2FzZSBBTEFSTV9PUkRFUl9WQUxVRVMuQllfU0VWRVJJVFk6XG4gICAgICAgIG9yZGVyUGFyYW1zID0gWydzZXZlcml0eSBhc2MnLCAndGltZS5kYXRlIGRlc2MnLCAndGV4dCBhc2MnXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRPcmRlclBhcmFtZXRlcnMob3JkZXJQYXJhbXMpO1xuICAgICAgY2FzZSBBTEFSTV9PUkRFUl9WQUxVRVMuQllfREFURV9BU0NFTkRJTkc6XG4gICAgICAgIG9yZGVyUGFyYW1zID0gWyd0aW1lLmRhdGUgYXNjJywgJ3RleHQgYXNjJ107XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkT3JkZXJQYXJhbWV0ZXJzKG9yZGVyUGFyYW1zKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG9yZGVyUGFyYW1zID0gWyd0aW1lLmRhdGUgZGVzYycsICd0ZXh0IGFzYyddO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZE9yZGVyUGFyYW1ldGVycyhvcmRlclBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gYWxhcm0gaXMgbWF0Y2hlZCBieSB0aGUgc3BlY2lmaWVkIHdpZGdldCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGV2YWx1YXRlcyB3aGV0aGVyIGEgZ2l2ZW4gYWxhcm0gc2hvdWxkIGJlIGluY2x1ZGVkIGJhc2VkIG9uIHRoZSBzZXZlcml0eSxcbiAgICogc3RhdHVzLCBhbmQgdHlwZSBmaWx0ZXJzIGRlZmluZWQgaW4gdGhlIEFsYXJtTGlzdFdpZGdldENvbmZpZy4gSXQgY2hlY2tzIGlmIHRoZSBhbGFybSdzXG4gICAqIHNldmVyaXR5IGFuZCBzdGF0dXMgbWF0Y2ggdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGlmIHRoZSBhbGFybSdzIHR5cGUgaXMgaW5jbHVkZWRcbiAgICogaW4gdGhlIGNvbmZpZ3VyYXRpb24ncyB0eXBlcyAoaWYgc3BlY2lmaWVkKS5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgYWxhcm0gdG8gZXZhbHVhdGUuXG4gICAqIEBwYXJhbSBhbGFybXMgLSBBbiBhcnJheSBvZiBleGlzdGluZyBhbGFybXMsIHVzZWQgZm9yIHN0YXR1cyBtYXRjaGluZy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIG1hdGNoIGFnYWluc3QuXG4gICAqIEByZXR1cm5zIC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFsYXJtIG1hdGNoZXMgdGhlIGNvbmZpZ3VyYXRpb24gY3JpdGVyaWE7IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICovXG4gIGlzQWxhcm1NYXRjaGVkQnlDb25maWcoYWxhcm06IElBbGFybSwgYWxhcm1zOiBJQWxhcm1bXSwgY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWcpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1NldmVyaXR5TWF0Y2hlZCA9IHRoaXMuaXNTZXZlcml0eU1hdGNoaW5nKGFsYXJtLnNldmVyaXR5LCBjb25maWcpO1xuICAgIGNvbnN0IGlzU3RhdHVzTWF0Y2hlZCA9IHRoaXMuaXNTdGF0dXNNYXRjaGluZyhhbGFybSwgYWxhcm1zLCBjb25maWcpO1xuICAgIGNvbnN0IGlzVHlwZU1hdGNoZWQgPSB0aGlzLmlzVHlwZXNNYXRjaGluZyhjb25maWcsIGFsYXJtKTtcblxuICAgIHJldHVybiBpc1NldmVyaXR5TWF0Y2hlZCAmJiBpc1N0YXR1c01hdGNoZWQgJiYgaXNUeXBlTWF0Y2hlZDtcbiAgfVxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzZXZlcml0eSBvZiBhbiBhbGFybSBtYXRjaGVzIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzZXZlcml0eSBvZiBhbiBhbGFybSBpcyBpbmNsdWRlZCBpbiB0aGVcbiAgICogc2V2ZXJpdHkgc2V0dGluZ3MgZGVmaW5lZCBpbiB0aGUgQWxhcm1MaXN0V2lkZ2V0Q29uZmlnLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIFRoZSBzZXZlcml0eSBvZiB0aGUgYWxhcm0gdG8gY2hlY2suXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiB3aXRoIHNldmVyaXR5IHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBhbGFybSdzIHNldmVyaXR5IG1hdGNoZXMgdGhlIGNvbmZpZ3VyYXRpb247IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICovXG4gIGlzU2V2ZXJpdHlNYXRjaGluZyhzZXZlcml0eTogU2V2ZXJpdHlUeXBlLCBjb25maWc6IEFsYXJtTGlzdFdpZGdldENvbmZpZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWNvbmZpZy5zZXZlcml0aWVzW3NldmVyaXR5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgaWYgdGhlIHN0YXR1cyBvZiBhbiBhbGFybSBtYXRjaGVzIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgb3IgaGFzIGNoYW5nZWQuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBzdGF0dXMgb2YgYW4gYWxhcm0gaXMgaW5jbHVkZWQgaW4gdGhlIHN0YXR1cyBzZXR0aW5ncyBkZWZpbmVkIGluXG4gICAqIHRoZSBBbGFybUxpc3RXaWRnZXRDb25maWcsIG9yIGlmIHRoZSBhbGFybSdzIHN0YXR1cyBoYXMgY2hhbmdlZCBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgYWxhcm1zLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqIEBwYXJhbSBhbGFybSAtIFRoZSBhbGFybSB3aG9zZSBzdGF0dXMgaXMgdG8gYmUgZXZhbHVhdGVkLlxuICAgKiBAcGFyYW0gYWxhcm1zIC0gQW4gYXJyYXkgb2YgZXhpc3RpbmcgYWxhcm1zIHRvIGNvbXBhcmUgYWdhaW5zdCBmb3Igc3RhdHVzIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiB3aXRoIHN0YXR1cyBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm0ncyBzdGF0dXMgbWF0Y2hlcyBvciBoYXMgY2hhbmdlZCBhcyBwZXIgdGhlIGNvbmZpZ3VyYXRpb247IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICovXG4gIGlzU3RhdHVzTWF0Y2hpbmcoYWxhcm06IElBbGFybSwgYWxhcm1zOiBJQWxhcm1bXSwgY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjb25maWcuc3RhdHVzW2FsYXJtLnN0YXR1c10gfHwgdGhpcy5oYXNFeGlzdGluZ0FsYXJtQ2hhbmdlZFN0YXR1cyhhbGFybXMsIGFsYXJtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbmZpZ3VyYXRpb24ncyB0eXBlcyBhcnJheSBjb250YWlucyBvbmx5IGVtcHR5IHN0cmluZyBvciBpbmNsdWRlcyBhIHNwZWNpZmljIGFsYXJtIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBhIGB0eXBlc2AgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBhbGFybSAtIFRoZSBhbGFybSBvYmplY3Qgd2l0aCBhIGB0eXBlYCBwcm9wZXJ0eSB0byBjaGVjayBhZ2FpbnN0IHRoZSBjb25maWcncyB0eXBlcy5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBjb25maWcncyB0eXBlcyBhcnJheSBjb250YWlucyBvbmx5IGVtcHR5IHN0cmluZyBvciBpbmNsdWRlcyB0aGUgYWxhcm0ncyB0eXBlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGlzVHlwZXNNYXRjaGluZyhjb25maWc6IEFsYXJtTGlzdFdpZGdldENvbmZpZywgYWxhcm06IElBbGFybSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNvbmZpZy50eXBlcykgJiYgY29uZmlnLnR5cGVzLmxlbmd0aCA9PT0gMSAmJiBjb25maWcudHlwZXNbMF0gPT09ICcnXG4gICAgICA/IHRydWVcbiAgICAgIDogY29uZmlnLnR5cGVzPy5pbmNsdWRlcyhhbGFybS50eXBlKSA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcXVlcnkgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Ygb3JkZXIgcGFyYW1ldGVycy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBhbiBhcnJheSBvZiBvcmRlcmluZyBwYXJhbWV0ZXJzIGFuZCBjb25zdHJ1Y3RzIGEgcXVlcnkgc3RyaW5nXG4gICAqIGZvciB1c2UgaW4gYWxhcm0gb3JkZXJpbmcgcXVlcmllcy4gVGhlIHBhcmFtZXRlcnMgYXJlIGNvbmNhdGVuYXRlZCBpbnRvIGEgc2luZ2xlIHN0cmluZyxcbiAgICogcHJlZml4ZWQgd2l0aCAnJG9yZGVyYnk9Jy5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0gb3JkZXJQYXJhbXMgLSBUaGUgb3JkZXIgcGFyYW1ldGVycyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcXVlcnkuXG4gICAqIEByZXR1cm5zIC0gQSBxdWVyeSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBvcmRlciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZE9yZGVyUGFyYW1ldGVycyhvcmRlclBhcmFtczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJG9yZGVyYnk9JHtvcmRlclBhcmFtcy5qb2luKCcsJyl9YDtcbiAgfVxufVxuIl19
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0td2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9hbGFybXMvYWxhcm0td2lkZ2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsV0FBVyxFQUVYLFFBQVEsRUFFUixlQUFlLEVBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFDTCxrQkFBa0IsRUFJbEIsdUJBQXVCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7OztBQUVuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFHcEMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFNUQ7Ozs7Ozs7O09BUUc7SUFDSCx5QkFBeUIsQ0FDdkIsSUFBbUQ7UUFFbkQsT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCwwQkFBMEIsQ0FBQyxpQkFBMEIsRUFBRSxRQUFpQjtRQUN0RSxPQUFPO1lBQ0wsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7WUFDbkMsVUFBVSxFQUNSLFFBQVEsS0FBSyx1QkFBdUI7Z0JBQ2xDLENBQUMsQ0FBRTtvQkFDQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJO29CQUN6QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO29CQUN0QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJ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QUFhLEVBQUUsTUFBZ0IsRUFBRSxNQUE2QjtRQUM3RSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsTUFBNkIsRUFBRSxLQUFhO1FBQzFELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUN2RixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG9CQUFvQixDQUFDLFdBQXFCO1FBQ2hELE9BQU8sWUFBWSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0F0V1Usa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFsYXJtUXVlcnlGaWx0ZXIsXG4gIEFsYXJtU3RhdHVzU2V0dGluZ3MsXG4gIEFsYXJtU3RhdHVzLFxuICBJQWxhcm0sXG4gIFNldmVyaXR5LFxuICBTZXZlcml0eUZpbHRlcixcbiAgU0VWRVJJVFlfTEFCRUxTXG59IGZyb20gJ0BjOHkvY2xpZW50JztcblxuaW1wb3J0IHsgU2V2ZXJpdHlTZXR0aW5ncywgU2V2ZXJpdHlUeXBlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxhcm1zVmlld1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQge1xuICBBTEFSTV9PUkRFUl9WQUxVRVMsXG4gIEFsYXJtTGlzdFdpZGdldENvbmZpZyxcbiAgQWxhcm1PcmRlclR5cGUsXG4gIExlZ2FjeUFsYXJtTGlzdENvbmZpZyxcbiAgUkVDRU5UX0FMQVJNU19XSURHRVRfSURcbn0gZnJvbSAnLi9hbGFybS1saXN0LXdpZGdldC5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDIwO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsYXJtV2lkZ2V0U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWxhcm1zVmlld1NlcnZpY2U6IEFsYXJtc1ZpZXdTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGEgZm9sbG93cyB0aGUgTGVnYWN5QWxhcm1Db25maWcgc3RydWN0dXJlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgYSBnaXZlbiBkYXRhIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBMZWdhY3lBbGFybUNvbmZpZ1xuICAgKiBieSBjaGVja2luZyBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSAnb3B0aW9ucycgcHJvcGVydHkuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgb2JqZWN0IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIGEgTGVnYWN5QWxhcm1Db25maWcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICAgKi9cbiAgaXNPbGRBbGFybUNvbmZpZ1N0cnVjdHVyZShcbiAgICBkYXRhOiBMZWdhY3lBbGFybUxpc3RDb25maWcgfCBBbGFybUxpc3RXaWRnZXRDb25maWdcbiAgKTogZGF0YSBpcyBMZWdhY3lBbGFybUxpc3RDb25maWcge1xuICAgIHJldHVybiBkYXRhICE9PSBudWxsICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnb3B0aW9ucycgaW4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHByZWRlZmluZWQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGEgbmV3IGNvbmZpZ3VyYXRpb24gb2JqZWN0IGJhc2VkIG9uXG4gICAqIGEgd2lkZ2V0cyBJRCAodGhhdCBkZXRlcm1pbmVzIGlmIGlzIGEgbGVnYWN5IFJlY2VudCBvciBDcml0aWNhbCBhbGFybXMgd2lkZ2V0KS5cbiAgICpcbiAgICogQHBhcmFtIGlzSW50ZXJ2YWxSZWZyZXNoIC0gZGV0ZXJtaW5lcyBhIHR5cGUgb2YgYSByZWZyZXNoLlxuICAgKiBAcGFyYW0gd2lkZ2V0SWQgLSBkZXRlcm1pbmVzIGlmIGEgY29uZmlnIHNob3VsZCBiZSBkb25lIGZvciBSZWNlbnQgb3IgQ3JpdGljYWwgYWxhcm1zIHdpZGdldC5cbiAgICogQHJldHVybnMgVGhlIG5ldywgcHJlZGVmaW5lZCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICovXG4gIGdldFByZWRlZmluZWRDb25maWd1cmF0aW9uKGlzSW50ZXJ2YWxSZWZyZXNoOiBib29sZWFuLCB3aWRnZXRJZD86IHN0cmluZyk6IEFsYXJtTGlzdFdpZGdldENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9yZGVyOiBBTEFSTV9PUkRFUl9WQUxVRVMuQllfQUNUSVZFLFxuICAgICAgc2V2ZXJpdGllczpcbiAgICAgICAgd2lkZ2V0SWQgPT09IFJFQ0VOVF9BTEFSTVNfV0lER0VUX0lEXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICBbU2V2ZXJpdHkuQ1JJVElDQUxdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUFKT1JdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUlOT1JdOiB0cnVlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuV0FSTklOR106IHRydWVcbiAgICAgICAgICAgIH0gYXMgU2V2ZXJpdHlTZXR0aW5ncylcbiAgICAgICAgICA6ICh7XG4gICAgICAgICAgICAgIFtTZXZlcml0eS5DUklUSUNBTF06IHRydWUsXG4gICAgICAgICAgICAgIFtTZXZlcml0eS5NQUpPUl06IGZhbHNlLFxuICAgICAgICAgICAgICBbU2V2ZXJpdHkuTUlOT1JdOiBmYWxzZSxcbiAgICAgICAgICAgICAgW1NldmVyaXR5LldBUk5JTkddOiBmYWxzZVxuICAgICAgICAgICAgfSBhcyBTZXZlcml0eVNldHRpbmdzKSxcbiAgICAgIHN0YXR1czpcbiAgICAgICAgd2lkZ2V0SWQgPT09IFJFQ0VOVF9BTEFSTVNfV0lER0VUX0lEXG4gICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNLTk9XTEVER0VEXTogdHJ1ZSxcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDVElWRV06IHRydWUsXG4gICAgICAgICAgICAgIFtBbGFybVN0YXR1cy5DTEVBUkVEXTogdHJ1ZVxuICAgICAgICAgICAgfSBhcyBBbGFybVN0YXR1c1NldHRpbmdzKVxuICAgICAgICAgIDogKHtcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDS05PV0xFREdFRF06IGZhbHNlLFxuICAgICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogdHJ1ZSxcbiAgICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkNMRUFSRURdOiBmYWxzZVxuICAgICAgICAgICAgfSBhcyBBbGFybVN0YXR1c1NldHRpbmdzKSxcbiAgICAgIHR5cGVzOiBbJyddLFxuICAgICAgaXNSZWFsdGltZTogIWlzSW50ZXJ2YWxSZWZyZXNoLFxuICAgICAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IHRydWUsXG4gICAgICByZWZyZXNoSW50ZXJ2YWw6IGlzSW50ZXJ2YWxSZWZyZXNoID8gdGhpcy5hbGFybXNWaWV3U2VydmljZS5ERUZBVUxUX0lOVEVSVkFMX1ZBTFVFIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgTGVnYWN5QWxhcm1Db25maWcgb2JqZWN0IGludG8gYW4gQWxhcm1MaXN0V2lkZ2V0Q29uZmlnIG9iamVjdC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBtYXBzIHRoZSBwcm9wZXJ0aWVzIGZyb20gYW4gb2xkIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlIChMZWdhY3lBbGFybUNvbmZpZylcbiAgICogdG8gYSBuZXcgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgKEFsYXJtTGlzdFdpZGdldENvbmZpZykuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRDb25maWcgLSBUaGUgb2xkIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGJlIHRyYW5zZm9ybWVkLlxuICAgKiBAcmV0dXJucyAtIFRoZSBuZXcgY29uZmlndXJhdGlvbiBvYmplY3QgbWFwcGVkIGZyb20gdGhlIG9sZCBvbmUuXG4gICAqL1xuICBtYXBUb05ld0NvbmZpZ1N0cnVjdHVyZShcbiAgICBvbGRDb25maWc6IExlZ2FjeUFsYXJtTGlzdENvbmZpZyxcbiAgICBpc0ludGVydmFsUmVmcmVzaDogYm9vbGVhblxuICApOiBBbGFybUxpc3RXaWRnZXRDb25maWcge1xuICAgIGNvbnN0IG9yZGVyOiBBbGFybU9yZGVyVHlwZSA9XG4gICAgICBvbGRDb25maWcub3B0aW9ucy5vcmRlck1vZGUgPT09ICdBQ1RJVkVfRklSU1QnXG4gICAgICAgID8gQUxBUk1fT1JERVJfVkFMVUVTLkJZX0FDVElWRVxuICAgICAgICA6IEFMQVJNX09SREVSX1ZBTFVFUy5CWV9TRVZFUklUWTtcblxuICAgIGlmICghdGhpcy5pc0NvbnRhaW5pbmdBbGxTZXZlcml0eVR5cGVzKG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5KSkge1xuICAgICAgb2xkQ29uZmlnLm9wdGlvbnMuc2V2ZXJpdHkgPSB0aGlzLmFkZEFsbE1pc3NpbmdTZXZlcml0eVR5cGVzKG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgb3JkZXI6IG9yZGVyLFxuICAgICAgaXNSZWFsdGltZTogb2xkQ29uZmlnLnJlYWx0aW1lLFxuICAgICAgZGV2aWNlOiBvbGRDb25maWcuZGV2aWNlLFxuICAgICAgc2hvd0FsYXJtc0ZvckNoaWxkcmVuOiBmYWxzZSxcbiAgICAgIHNldmVyaXRpZXM6IG9sZENvbmZpZy5vcHRpb25zLnNldmVyaXR5LFxuICAgICAgc3RhdHVzOiB0aGlzLmFsbFZhbHVlc0ZhbHNlKG9sZENvbmZpZy5vcHRpb25zLnN0YXR1cylcbiAgICAgICAgPyAoe1xuICAgICAgICAgICAgW0FsYXJtU3RhdHVzLkFDS05PV0xFREdFRF06IHRydWUsXG4gICAgICAgICAgICBbQWxhcm1TdGF0dXMuQUNUSVZFXTogdHJ1ZSxcbiAgICAgICAgICAgIFtBbGFybVN0YXR1cy5DTEVBUkVEXTogdHJ1ZVxuICAgICAgICAgIH0gYXMgQWxhcm1TdGF0dXNTZXR0aW5ncylcbiAgICAgICAgOiBvbGRDb25maWcub3B0aW9ucy5zdGF0dXMsXG4gICAgICB0eXBlczogb2xkQ29uZmlnLm9wdGlvbnMudHlwZXM/Lmxlbmd0aCA/IG9sZENvbmZpZy5vcHRpb25zLnR5cGVzIDogWycnXSxcbiAgICAgIGlzQXV0b1JlZnJlc2hFbmFibGVkOiB0cnVlLFxuICAgICAgcmVmcmVzaEludGVydmFsOiBpc0ludGVydmFsUmVmcmVzaCA/IHRoaXMuYWxhcm1zVmlld1NlcnZpY2UuREVGQVVMVF9JTlRFUlZBTF9WQUxVRSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBzZXZlcml0eSBvYmplY3QgY29udGFpbnMgYWxsIHRoZSBwcmVkZWZpbmVkIHNldmVyaXR5IHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdHkgLSBBIHJlY29yZCBvYmplY3Qgd2hlcmUga2V5cyBhcmUgc2V2ZXJpdHkgdHlwZSBzdHJpbmdzIGFuZCB2YWx1ZXMgYXJlIGJvb2xlYW4uXG4gICAqICAgICAgICAgICAgICAgICAtIFRoaXMgb2JqZWN0IGlzIGNoZWNrZWQgYWdhaW5zdCB0aGUgcHJlZGVmaW5lZCBzZXZlcml0eSB0eXBlcy5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIGFsbCBwcmVkZWZpbmVkIHNldmVyaXR5IHR5cGVzIGFyZSBwcmVzZW50IGluIHRoZSBzZXZlcml0eSBvYmplY3Q7IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICovXG4gIGlzQ29udGFpbmluZ0FsbFNldmVyaXR5VHlwZXMoc2V2ZXJpdHk6IFNldmVyaXR5RmlsdGVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKFNFVkVSSVRZX0xBQkVMUykuZXZlcnkoc2V2ZXJpdHlUeXBlID0+IHNldmVyaXR5VHlwZSBpbiBzZXZlcml0eSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbnkgbWlzc2luZyBzZXZlcml0eSB0eXBlcyB0byB0aGUgcHJvdmlkZWQgc2V2ZXJpdHkgb2JqZWN0IHdpdGggYSBkZWZhdWx0IHZhbHVlIG9mIGBmYWxzZWAuXG4gICAqXG4gICAqIEBwYXJhbSBzZXZlcml0eSAtIEEgcmVjb3JkIG9iamVjdCB3aGVyZSBrZXlzIGFyZSBzZXZlcml0eSB0eXBlIHN0cmluZ3MgYW5kIHZhbHVlcyBhcmUgYm9vbGVhbi5cbiAgICogICAgICAgICAgICAgICAgIC0gTWlzc2luZyBzZXZlcml0eSB0eXBlcyB3aWxsIGJlIGFkZGVkIHRvIHRoaXMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc2V2ZXJpdHkgb2JqZWN0LCB3aGljaCBpbmNsdWRlcyBhbGwgcHJlZGVmaW5lZCBzZXZlcml0eSB0eXBlcywgYWRkaW5nIGFueVxuICAgKiAgICAgICAgICB0aGF0IHdlcmUgbWlzc2luZyB3aXRoIGEgdmFsdWUgb2YgYGZhbHNlYC5cbiAgICovXG4gIGFkZEFsbE1pc3NpbmdTZXZlcml0eVR5cGVzKHNldmVyaXR5OiBTZXZlcml0eUZpbHRlcik6IFNldmVyaXR5RmlsdGVyIHtcbiAgICBPYmplY3Qua2V5cyhTRVZFUklUWV9MQUJFTFMpLmZvckVhY2goc2V2ZXJpdHlUeXBlID0+IHtcbiAgICAgIGlmICghKHNldmVyaXR5VHlwZSBpbiBzZXZlcml0eSkpIHtcbiAgICAgICAgc2V2ZXJpdHlbc2V2ZXJpdHlUeXBlXSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZXZlcml0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGFuIEFsYXJtTGlzdFdpZGdldENvbmZpZyBvYmplY3QgdG8gYW4gQWxhcm1RdWVyeUZpbHRlci5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgQWxhcm1MaXN0V2lkZ2V0Q29uZmlnIGludG8gYSBmb3JtYXQgc3VpdGFibGUgZm9yIHF1ZXJ5aW5nIGFsYXJtcy5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGFsYXJtIGxpc3Qgd2lkZ2V0LlxuICAgKiBAcGFyYW0gcGFnZVNpemUgLSBPcHRpb25hbCBudW1iZXIgc3BlY2lmeWluZyB0aGUgc2l6ZSBvZiB0aGUgcGFnZXMgdG8gYmUgcmV0dXJuZWQgaW4gdGhlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyAtIFRoZSBxdWVyeSBmaWx0ZXIgb2JqZWN0IGNvbnN0cnVjdGVkIGZyb20gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBtYXBDb25maWdUb1F1ZXJ5RmlsdGVyKGNvbmZpZzogQWxhcm1MaXN0V2lkZ2V0Q29uZmlnLCBwYWdlU2l6ZT86IG51bWJlcik6IEFsYXJtUXVlcnlGaWx0ZXIge1xuICAgIGNvbnN0IGZpbHRlcjogQWxhcm1RdWVyeUZpbHRlciA9IHtcbiAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRSxcbiAgICAgIHF1ZXJ5OiB0aGlzLmdldE9yZGVyUGFyYW1ldGVycyhjb25maWcub3JkZXIpLFxuICAgICAgc2V2ZXJpdHk6IHRoaXMuZXh0cmFjdEZpbHRlclBhcmFtcyhjb25maWcuc2V2ZXJpdGllcyB8fCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuZXh0cmFjdEZpbHRlclBhcmFtcyhjb25maWcuc3RhdHVzIHx8IHt9KSxcbiAgICAgIHR5cGU6IChjb25maWcudHlwZXMgfHwgW10pLmpvaW4oJywnKSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgfTtcbiAgICBpZiAoY29uZmlnLmRhdGVGaWx0ZXIpIHtcbiAgICAgIGZpbHRlci5sYXN0VXBkYXRlZEZyb20gPVxuICAgICAgICB0eXBlb2YgY29uZmlnLmRhdGVGaWx0ZXJbMF0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBjb25maWcuZGF0ZUZpbHRlclswXVxuICAgICAgICAgIDogY29uZmlnLmRhdGVGaWx0ZXJbMF0udG9JU09TdHJpbmcoKTtcbiAgICAgIGZpbHRlci5jcmVhdGVkVG8gPVxuICAgICAgICB0eXBlb2YgY29uZmlnLmRhdGVGaWx0ZXJbMV0gPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBjb25maWcuZGF0ZUZpbHRlclsxXVxuICAgICAgICAgIDogY29uZmlnLmRhdGVGaWx0ZXJbMV0udG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kZXZpY2UpIHtcbiAgICAgIGZpbHRlci5zb3VyY2UgPSBjb25maWcuZGV2aWNlLmlkO1xuICAgICAgZmlsdGVyLndpdGhTb3VyY2VBc3NldHMgPSB0cnVlO1xuICAgICAgZmlsdGVyLndpdGhTb3VyY2VEZXZpY2VzID0gdHJ1ZTtcbiAgICAgIGZpbHRlci53aXRoU291cmNlQXNzZXRzID0gY29uZmlnLnNob3dBbGFybXNGb3JDaGlsZHJlbiA/PyB0cnVlO1xuICAgICAgZmlsdGVyLndpdGhTb3VyY2VEZXZpY2VzID0gY29uZmlnLnNob3dBbGFybXNGb3JDaGlsZHJlbiA/PyB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIGFuZCBjb25jYXRlbmF0ZXMgZmlsdGVyIHBhcmFtZXRlcnMgZnJvbSBhIGdpdmVuIG9iamVjdC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBhbiBvYmplY3QgY29udGFpbmluZyBmaWx0ZXIgc2V0dGluZ3MgKGVpdGhlciBTZXZlcml0eUZpbHRlclxuICAgKiBvciBBbGFybVN0YXR1c1NldHRpbmdzKSBhbmQgcmV0dXJucyBhIHN0cmluZyBvZiBhbGwga2V5cyB3aGVyZSB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpcyB0cnVlLlxuICAgKiBJZiB0aGUgb2JqZWN0IGlzIGVtcHR5IG9yIG51bGwsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgY29udGFpbmluZyBmaWx0ZXIgc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIC0gQSBjb25jYXRlbmF0ZWQgc3RyaW5nIG9mIGtleXMgd2l0aCB0cnVlIHZhbHVlcywgc2VwYXJhdGVkIGJ5IGNvbW1hcy5cbiAgICovXG4gIGV4dHJhY3RGaWx0ZXJQYXJhbXMob2JqOiBTZXZlcml0eUZpbHRlciB8IEFsYXJtU3RhdHVzU2V0dGluZ3MpOiBzdHJpbmcge1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXG4gICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHZhbHVlKVxuICAgICAgLm1hcCgoW2tleV0pID0+IGtleSlcbiAgICAgIC5qb2luKCcsJyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBpbmNvbWluZyByZWFsLXRpbWUgYWxhcm0gaGFzIGEgZGlmZmVyZW50IHN0YXR1cyB0aGFuIGFuIGV4aXN0aW5nIGFsYXJtLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgcHJvdmlkZWQgaW5jb21pbmcgcmVhbC10aW1lIGFsYXJtJ3Mgc3RhdHVzIGRpZmZlcnNcbiAgICogZnJvbSB0aGF0IG9mIGFuIGV4aXN0aW5nIGFsYXJtIHdpdGggdGhlIHNhbWUgSUQgaW4gdGhlIGdpdmVuIGFycmF5IG9mIGFsYXJtcy5cbiAgICpcbiAgICogQHBhcmFtIGV4aXN0aW5nQWxhcm1zIC0gVGhlIGFycmF5IG9mIGV4aXN0aW5nIGFsYXJtcy5cbiAgICogQHBhcmFtIGluY29taW5nUmVhbHRpbWVBbGFybSAtIFRoZSBpbmNvbWluZyByZWFsLXRpbWUgYWxhcm0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIC0gVHJ1ZSBpZiB0aGUgZXhpc3RpbmcgYWxhcm0ncyBzdGF0dXMgaGFzIGNoYW5nZWQsIG90aGVyd2lzZSBmYWxzZS5cbiAgICovXG4gIGhhc0V4aXN0aW5nQWxhcm1DaGFuZ2VkU3RhdHVzKGV4aXN0aW5nQWxhcm1zOiBJQWxhcm1bXSwgaW5jb21pbmdSZWFsdGltZUFsYXJtOiBJQWxhcm0pOiBib29sZWFuIHtcbiAgICBjb25zdCBleGlzdGluZ0FsYXJtID0gZXhpc3RpbmdBbGFybXMuZmluZChhbGFybSA9PiBhbGFybS5pZCA9PT0gaW5jb21pbmdSZWFsdGltZUFsYXJtLmlkKTtcbiAgICByZXR1cm4gISFleGlzdGluZ0FsYXJtICYmIGV4aXN0aW5nQWxhcm0uc3RhdHVzICE9PSBpbmNvbWluZ1JlYWx0aW1lQWxhcm0uc3RhdHVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWxhcm1zIGJhc2VkIG9uIHRoZWlyIHN0YXR1cywgc2V2ZXJpdHksIGFuZCB0eXBlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBkZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gYWxhcm0sIGlkZW50aWZpZWQgZWl0aGVyIGJ5IGEgbnVtZXJpYyBJRCBvciBhbiBgSUFsYXJtYCBvYmplY3QsXG4gICAqIG1hdGNoZXMgc3BlY2lmaWMgY3JpdGVyaWEgZGVmaW5lZCBpbiBgYWxhcm1zYCBhbmQgb3B0aW9uYWxseSBgY29uZmlnYC5cbiAgICpcbiAgICogQHBhcmFtIGFsYXJtIC0gVGhlIGFsYXJtIHRvIGNoZWNrLCByZXByZXNlbnRlZCBlaXRoZXIgYnkgYSBudW1lcmljIElEIG9yIGFuIGBJQWxhcm1gIG9iamVjdC5cbiAgICogQHBhcmFtIGFsYXJtcyAtIEFuIGFycmF5IG9mIGBJQWxhcm1gIG9iamVjdHMgYWdhaW5zdCB3aGljaCB0aGUgZ2l2ZW4gYWxhcm0gaXMgZXZhbHVhdGVkLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gT3B0aW9uYWwuIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhbGFybSBsaXN0IHdpZGdldCwgdXNlZCB0byBkZWZpbmUgYWRkaXRpb25hbFxuICAgKiAgICAgICAgICAgICAgICAgZmlsdGVyaW5nIGNyaXRlcmlhLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFsYXJtIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBjcml0ZXJpYTsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgKiAgICAgICAgICBJZiBgYWxhcm1gIGlzIGEgbnVtYmVyLCBpdCBhbHdheXMgcmV0dXJucyBgZmFsc2VgLlxuICAgKiAgICAgICAgICBJZiBgY29uZmlnYCBpcyBub3QgcHJvdmlkZWQsIGl0IHVzZXMgYSBsZWdhY3kgZmlsdGVyIGZvciBjcml0aWNhbCBhbGFybXMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIC0gV2hlbiBgYWxhcm1gIGlzIGEgbnVtZXJpYyBJRCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCBhcyBpdCBjYW5ub3QgbWF0Y2ggYWdhaW5zdCB0eXBlIGFuZCBzZXZlcml0eS5cbiAgICogLSBJZiBgY29uZmlnYCBpcyBub3QgcHJvdmlkZWQsIHRoZSBmdW5jdGlvbiBhc3N1bWVzIGEgbGVnYWN5IHNjZW5hcmlvIGZvciBmaWx0ZXJpbmcgYWxsIGNyaXRpY2FsIGFsYXJtcy5cbiAgICovXG4gIGZpbHRlckFsYXJtc0J5U3RhdHVzU2V2ZXJpdHlBbmRUeXBlKFxuICAgIGFsYXJtOiBudW1iZXIgfCBJQWxhcm0sXG4gICAgYWxhcm1zOiBJQWxhcm1bXSxcbiAgICBjb25maWc/OiBBbGFybUxpc3RXaWRnZXRDb25maWdcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBhbGFybSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pc0FsYXJtTWF0Y2hlZEJ5Q29uZmlnKGFsYXJtLCBhbGFybXMsIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbGwgdmFsdWVzIGluIHRoZSBnaXZlbiBvYmplY3QgYXJlIGZhbHNlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBldmVyeSB2YWx1ZSBpbiB0aGUgcHJvdmlkZWQgb2JqZWN0IHRvIHNlZSBpZiB0aGV5IGFyZSBhbGwgZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSBvYmogLSBBbiBvYmplY3Qgd2l0aCBib29sZWFuIHZhbHVlcy5cbiAgICogQHJldHVybnMgLSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgdmFsdWVzIGluIHRoZSBvYmplY3QgYXJlIGZhbHNlLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIGFsbFZhbHVlc0ZhbHNlKG9iajogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLmV2ZXJ5KHZhbHVlID0+ICF2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHN0cmluZyBvZiBvcmRlciBwYXJhbWV0ZXJzIGZvciBhIHF1ZXJ5IGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgYWxhcm0gb3JkZXIuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgYW4gYWxhcm0gb3JkZXIgYW5kIG1hcHMgaXQgdG8gYSBjb3JyZXNwb25kaW5nIHNldCBvZiBvcmRlciBwYXJhbWV0ZXJzLlxuICAgKiBJdCBzdXBwb3J0cyBkaWZmZXJlbnQgb3JkZXJpbmcgdHlwZXMsIHN1Y2ggYXMgQllfQUNUSVZFLCBCWV9TRVZFUklUWSwgYW5kIEJZX0RBVEVfQVNDRU5ESU5HLlxuICAgKiBUaGUgb3JkZXIgcGFyYW1ldGVycyBhcmUgdXNlZCB0byBjb25zdHJ1Y3QgYSBxdWVyeSBzdHJpbmcgdGhhdCBkZXRlcm1pbmVzIHRoZSBvcmRlclxuICAgKiBpbiB3aGljaCBhbGFybXMgYXJlIHJldHJpZXZlZCBvciBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEBwYXJhbSBvcmRlciAtIFRoZSBzcGVjaWZpZWQgb3JkZXIgZm9yIHNvcnRpbmcgYWxhcm1zIChlLmcuLCBCWV9BQ1RJVkUpLlxuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIG9mIG9yZGVyIHBhcmFtZXRlcnMgdG8gYmUgdXNlZCBpbiBhIHF1ZXJ5LCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIG9yZGVyIHR5cGUgaXMgdW5yZWNvZ25pemVkLlxuICAgKi9cbiAgZ2V0T3JkZXJQYXJhbWV0ZXJzKG9yZGVyOiBBbGFybU9yZGVyVHlwZSk6IHN0cmluZyB7XG4gICAgbGV0IG9yZGVyUGFyYW1zOiBzdHJpbmdbXTtcblxuICAgIHN3aXRjaCAob3JkZXIpIHtcbiAgICAgIGNhc2UgQUxBUk1fT1JERVJfVkFMVUVTLkJZX0FDVElWRTpcbiAgICAgICAgb3JkZXJQYXJhbXMgPSBbJ3N0YXR1cyBhc2MnLCAnc2V2ZXJpdHkgYXNjJywgJ3RpbWUuZGF0ZSBkZXNjJywgJ3RleHQgYXNjJ107XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkT3JkZXJQYXJhbWV0ZXJzKG9yZGVyUGFyYW1zKTtcbiAgICAgIGNhc2UgQUxBUk1fT1JERVJfVkFMVUVTLkJZX1NFVkVSSVRZOlxuICAgICAgICBvcmRlclBhcmFtcyA9IFsnc2V2ZXJpdHkgYXNjJywgJ3RpbWUuZGF0ZSBkZXNjJywgJ3RleHQgYXNjJ107XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkT3JkZXJQYXJhbWV0ZXJzKG9yZGVyUGFyYW1zKTtcbiAgICAgIGNhc2UgQUxBUk1fT1JERVJfVkFMVUVTLkJZX0RBVEVfQVNDRU5ESU5HOlxuICAgICAgICBvcmRlclBhcmFtcyA9IFsndGltZS5kYXRlIGFzYycsICd0ZXh0IGFzYyddO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZE9yZGVyUGFyYW1ldGVycyhvcmRlclBhcmFtcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBvcmRlclBhcmFtcyA9IFsndGltZS5kYXRlIGRlc2MnLCAndGV4dCBhc2MnXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRPcmRlclBhcmFtZXRlcnMob3JkZXJQYXJhbXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGFsYXJtIGlzIG1hdGNoZWQgYnkgdGhlIHNwZWNpZmllZCB3aWRnZXQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBldmFsdWF0ZXMgd2hldGhlciBhIGdpdmVuIGFsYXJtIHNob3VsZCBiZSBpbmNsdWRlZCBiYXNlZCBvbiB0aGUgc2V2ZXJpdHksXG4gICAqIHN0YXR1cywgYW5kIHR5cGUgZmlsdGVycyBkZWZpbmVkIGluIHRoZSBBbGFybUxpc3RXaWRnZXRDb25maWcuIEl0IGNoZWNrcyBpZiB0aGUgYWxhcm0nc1xuICAgKiBzZXZlcml0eSBhbmQgc3RhdHVzIG1hdGNoIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFuZCBpZiB0aGUgYWxhcm0ncyB0eXBlIGlzIGluY2x1ZGVkXG4gICAqIGluIHRoZSBjb25maWd1cmF0aW9uJ3MgdHlwZXMgKGlmIHNwZWNpZmllZCkuXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICogQHBhcmFtIGFsYXJtIC0gVGhlIGFsYXJtIHRvIGV2YWx1YXRlLlxuICAgKiBAcGFyYW0gYWxhcm1zIC0gQW4gYXJyYXkgb2YgZXhpc3RpbmcgYWxhcm1zLCB1c2VkIGZvciBzdGF0dXMgbWF0Y2hpbmcuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBtYXRjaCBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBhbGFybSBtYXRjaGVzIHRoZSBjb25maWd1cmF0aW9uIGNyaXRlcmlhOyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAqL1xuICBpc0FsYXJtTWF0Y2hlZEJ5Q29uZmlnKGFsYXJtOiBJQWxhcm0sIGFsYXJtczogSUFsYXJtW10sIGNvbmZpZzogQWxhcm1MaXN0V2lkZ2V0Q29uZmlnKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNTZXZlcml0eU1hdGNoZWQgPSB0aGlzLmlzU2V2ZXJpdHlNYXRjaGluZyhhbGFybS5zZXZlcml0eSwgY29uZmlnKTtcbiAgICBjb25zdCBpc1N0YXR1c01hdGNoZWQgPSB0aGlzLmlzU3RhdHVzTWF0Y2hpbmcoYWxhcm0sIGFsYXJtcywgY29uZmlnKTtcbiAgICBjb25zdCBpc1R5cGVNYXRjaGVkID0gdGhpcy5pc1R5cGVzTWF0Y2hpbmcoY29uZmlnLCBhbGFybSk7XG5cbiAgICByZXR1cm4gaXNTZXZlcml0eU1hdGNoZWQgJiYgaXNTdGF0dXNNYXRjaGVkICYmIGlzVHlwZU1hdGNoZWQ7XG4gIH1cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgc2V2ZXJpdHkgb2YgYW4gYWxhcm0gbWF0Y2hlcyB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5nLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgd2hldGhlciB0aGUgc2V2ZXJpdHkgb2YgYW4gYWxhcm0gaXMgaW5jbHVkZWQgaW4gdGhlXG4gICAqIHNldmVyaXR5IHNldHRpbmdzIGRlZmluZWQgaW4gdGhlIEFsYXJtTGlzdFdpZGdldENvbmZpZy5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKiBAcGFyYW0gc2V2ZXJpdHkgLSBUaGUgc2V2ZXJpdHkgb2YgdGhlIGFsYXJtIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gd2l0aCBzZXZlcml0eSBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgLSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYWxhcm0ncyBzZXZlcml0eSBtYXRjaGVzIHRoZSBjb25maWd1cmF0aW9uOyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAqL1xuICBpc1NldmVyaXR5TWF0Y2hpbmcoc2V2ZXJpdHk6IFNldmVyaXR5VHlwZSwgY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjb25maWcuc2V2ZXJpdGllc1tzZXZlcml0eV07XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGVzIGlmIHRoZSBzdGF0dXMgb2YgYW4gYWxhcm0gbWF0Y2hlcyB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5nIG9yIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgc3RhdHVzIG9mIGFuIGFsYXJtIGlzIGluY2x1ZGVkIGluIHRoZSBzdGF0dXMgc2V0dGluZ3MgZGVmaW5lZCBpblxuICAgKiB0aGUgQWxhcm1MaXN0V2lkZ2V0Q29uZmlnLCBvciBpZiB0aGUgYWxhcm0ncyBzdGF0dXMgaGFzIGNoYW5nZWQgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGFsYXJtcy5cbiAgICpcbiAgICogQGlnbm9yZVxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgYWxhcm0gd2hvc2Ugc3RhdHVzIGlzIHRvIGJlIGV2YWx1YXRlZC5cbiAgICogQHBhcmFtIGFsYXJtcyAtIEFuIGFycmF5IG9mIGV4aXN0aW5nIGFsYXJtcyB0byBjb21wYXJlIGFnYWluc3QgZm9yIHN0YXR1cyBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gd2l0aCBzdGF0dXMgc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIC0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFsYXJtJ3Mgc3RhdHVzIG1hdGNoZXMgb3IgaGFzIGNoYW5nZWQgYXMgcGVyIHRoZSBjb25maWd1cmF0aW9uOyBvdGhlcndpc2UsIGBmYWxzZWAuXG4gICAqL1xuICBpc1N0YXR1c01hdGNoaW5nKGFsYXJtOiBJQWxhcm0sIGFsYXJtczogSUFsYXJtW10sIGNvbmZpZzogQWxhcm1MaXN0V2lkZ2V0Q29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhY29uZmlnLnN0YXR1c1thbGFybS5zdGF0dXNdIHx8IHRoaXMuaGFzRXhpc3RpbmdBbGFybUNoYW5nZWRTdGF0dXMoYWxhcm1zLCBhbGFybSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb25maWd1cmF0aW9uJ3MgdHlwZXMgYXJyYXkgY29udGFpbnMgb25seSBlbXB0eSBzdHJpbmcgb3IgaW5jbHVkZXMgYSBzcGVjaWZpYyBhbGFybSB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggYSBgdHlwZXNgIHByb3BlcnR5LlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgYWxhcm0gb2JqZWN0IHdpdGggYSBgdHlwZWAgcHJvcGVydHkgdG8gY2hlY2sgYWdhaW5zdCB0aGUgY29uZmlnJ3MgdHlwZXMuXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgY29uZmlnJ3MgdHlwZXMgYXJyYXkgY29udGFpbnMgb25seSBlbXB0eSBzdHJpbmcgb3IgaW5jbHVkZXMgdGhlIGFsYXJtJ3MgdHlwZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBpc1R5cGVzTWF0Y2hpbmcoY29uZmlnOiBBbGFybUxpc3RXaWRnZXRDb25maWcsIGFsYXJtOiBJQWxhcm0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjb25maWcudHlwZXMpICYmIGNvbmZpZy50eXBlcy5sZW5ndGggPT09IDEgJiYgY29uZmlnLnR5cGVzWzBdID09PSAnJ1xuICAgICAgPyB0cnVlXG4gICAgICA6IGNvbmZpZy50eXBlcz8uaW5jbHVkZXMoYWxhcm0udHlwZSkgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHF1ZXJ5IHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIG9yZGVyIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgYW4gYXJyYXkgb2Ygb3JkZXJpbmcgcGFyYW1ldGVycyBhbmQgY29uc3RydWN0cyBhIHF1ZXJ5IHN0cmluZ1xuICAgKiBmb3IgdXNlIGluIGFsYXJtIG9yZGVyaW5nIHF1ZXJpZXMuIFRoZSBwYXJhbWV0ZXJzIGFyZSBjb25jYXRlbmF0ZWQgaW50byBhIHNpbmdsZSBzdHJpbmcsXG4gICAqIHByZWZpeGVkIHdpdGggJyRvcmRlcmJ5PScuXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIG9yZGVyUGFyYW1zIC0gVGhlIG9yZGVyIHBhcmFtZXRlcnMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHF1ZXJ5LlxuICAgKiBAcmV0dXJucyAtIEEgcXVlcnkgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb3JkZXIgcGFyYW1ldGVycy5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRPcmRlclBhcmFtZXRlcnMob3JkZXJQYXJhbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCRvcmRlcmJ5PSR7b3JkZXJQYXJhbXMuam9pbignLCcpfWA7XG4gIH1cbn1cbiJdfQ==
@@ -1209,7 +1209,7 @@ class DatapointSelectionListComponent {
1209
1209
  useExisting: forwardRef(() => DatapointSelectionListComponent),
1210
1210
  multi: true
1211
1211
  }
1212
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-component\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1212
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n", dependencies: [{ kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: DatapointSelectorListItemComponent, selector: "c8y-datapoint-selector-list-item", inputs: ["defaultFormOptions", "isSelected", "isCollapsed", "showAddRemoveButton", "editable", "showActiveToggle", "activeToggleDisabled", "showOptions", "datapointLibraryEntries", "actions", "optionToRemove", "hasUnlinkTemplateOption", "colorPickerDisabled", "disableTypeaheadIfSelected", "highlightText"], outputs: ["added", "removed"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
1213
1213
  }
1214
1214
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointSelectionListComponent, decorators: [{
1215
1215
  type: Component,
@@ -1224,7 +1224,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1224
1224
  useExisting: forwardRef(() => DatapointSelectionListComponent),
1225
1225
  multi: true
1226
1226
  }
1227
- ], template: "<div class=\"card-header separator sticky-top bg-component\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
1227
+ ], template: "<div class=\"card-header separator sticky-top bg-inherit\">\n <span\n class=\"card-title h4\"\n *ngIf=\"listTitle\"\n >\n {{ listTitle | translate }}\n </span>\n <span\n class=\"card-title h4\"\n *ngIf=\"!listTitle\"\n >\n {{ 'Data points' | translate }}\n </span>\n</div>\n\n<c8y-list-group\n class=\"flex-grow ff-scroll-fix cdk-droplist\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowDragAndDrop || formArray.controls?.length < 2\"\n>\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.minActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.minActiveCount\"\n >\n At least {{ minActive }} active data points must be selected.\n </div>\n\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n ngNonBindable\n *ngIf=\"formArray.errors?.maxActiveCount\"\n translate\n [translateParams]=\"formArray.errors?.maxActiveCount\"\n >\n At maximum {{ maxActive }} active data points are allowed to be selected.\n </div>\n\n <ng-content select=\".alert\"></ng-content>\n\n <div\n class=\"p-t-8\"\n *ngIf=\"!formArray.controls?.length\"\n >\n <c8y-ui-empty-state\n class=\"p-t-8\"\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points to display.' | translate\"\n [subtitle]=\"'Add your first data point.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </div>\n <div\n [formGroup]=\"dpForm\"\n *ngFor=\"let dpForm of formArray.controls; let index = index\"\n >\n <c8y-datapoint-selector-list-item\n class=\"d-block\"\n [defaultFormOptions]=\"defaultFormOptions\"\n [activeToggleDisabled]=\"maxActiveCountReached\"\n [showActiveToggle]=\"true\"\n [showAddRemoveButton]=\"false\"\n [showOptions]=\"true\"\n [editable]=\"true\"\n [colorPickerDisabled]=\"false\"\n [actions]=\"actions\"\n [optionToRemove]=\"true\"\n [datapointLibraryEntries]=\"datapointLibraryEntries\"\n [hasUnlinkTemplateOption]=\"true\"\n formControlName=\"details\"\n (removed)=\"onItemRemoved(index)\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Click and drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n </c8y-datapoint-selector-list-item>\n </div>\n</c8y-list-group>\n\n<div class=\"card-footer bg-inherit\">\n <button\n class=\"btn btn-default btn-sm\"\n [title]=\"'Add data point' | translate\"\n type=\"button\"\n data-cy=\"c8y-datapoint-selection-list--add-datapoint-button\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add data point' | translate }}\n </button>\n</div>\n" }]
1228
1228
  }], ctorParameters: () => [{ type: DatapointSelectorService }, { type: DatapointLibraryService }, { type: i4.FormBuilder }, { type: i4$2.WidgetConfigComponent, decorators: [{
1229
1229
  type: Optional
1230
1230
  }] }], propDecorators: { actions: [{