@mediusinc/mng-commons 5.4.0-rc.3 → 5.4.0-rc.5

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 (60) hide show
  1. package/core/data-list/data-list-params-helpers.d.ts +1 -1
  2. package/core/data-list/data-list.model.d.ts +1 -0
  3. package/core/helpers/type-helpers.d.ts +12 -0
  4. package/esm2022/core/data-list/data-list-params-helpers.mjs +29 -5
  5. package/esm2022/core/data-list/data-list.model.mjs +1 -1
  6. package/esm2022/core/helpers/type-helpers.mjs +1 -1
  7. package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +21 -0
  8. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +1 -1
  9. package/esm2022/filter/descriptors/filter.descriptor.mjs +40 -1
  10. package/esm2022/filter/index.mjs +3 -1
  11. package/esm2022/filter/models/filter-generic-property.model.mjs +2 -0
  12. package/esm2022/form/components/dropdown/dropdown.component.mjs +159 -10
  13. package/esm2022/table/api/descriptors/table.descriptor.mjs +51 -2
  14. package/esm2022/table/components/column-filter/column-filter.component.mjs +2 -2
  15. package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +4 -1
  16. package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +42 -9
  17. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +95 -11
  18. package/esm2022/table/components/table/table.component.mjs +57 -13
  19. package/esm2022/table/helpers/filters.mjs +32 -2
  20. package/esm2022/table/services/table-feature-config.token.mjs +1 -1
  21. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +2 -2
  22. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +11 -10
  23. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +16 -2
  24. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +2 -1
  25. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +23 -3
  26. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -2
  27. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  28. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -4
  29. package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +2 -1
  30. package/fesm2022/mediusinc-mng-commons-core.mjs +28 -4
  31. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  32. package/fesm2022/mediusinc-mng-commons-filter.mjs +61 -1
  33. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  34. package/fesm2022/mediusinc-mng-commons-form.mjs +156 -7
  35. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  36. package/fesm2022/mediusinc-mng-commons-table-api.mjs +50 -1
  37. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  38. package/fesm2022/mediusinc-mng-commons-table.mjs +230 -45
  39. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  40. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +26 -10
  41. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  42. package/fesm2022/mediusinc-mng-commons-tableview.mjs +29 -8
  43. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  44. package/filter/descriptors/filter-generic.descriptor.d.ts +11 -0
  45. package/filter/descriptors/filter.descriptor.d.ts +21 -2
  46. package/filter/index.d.ts +2 -0
  47. package/filter/models/filter-generic-property.model.d.ts +7 -0
  48. package/form/components/dropdown/dropdown.component.d.ts +27 -1
  49. package/i18n/en.json +4 -0
  50. package/i18n/sl.json +4 -0
  51. package/package.json +1 -1
  52. package/table/api/descriptors/table.descriptor.d.ts +33 -1
  53. package/table/components/filter/filter-form/filter-form.component.d.ts +11 -2
  54. package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +21 -1
  55. package/table/components/table/table.component.d.ts +20 -5
  56. package/table/helpers/filters.d.ts +9 -1
  57. package/table/services/table-feature-config.token.d.ts +1 -0
  58. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +6 -4
  59. package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -1
  60. package/version-info.json +5 -5
@@ -1,5 +1,5 @@
1
1
  import { FilterMatchMode, angularDateFormatHasSeconds, angularDateFormatHasTime, dateToIsoString, fromAngularDateFormatToPrime, fromAngularNumberFormatToFractions } from '@mediusinc/mng-commons/core';
2
- import { FilterLookupDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
2
+ import { FilterDescriptor, FilterLookupDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
3
3
  export function generateMatchModeOptions(primeConfig, descriptor, cmpSerCfg) {
4
4
  let options = undefined;
5
5
  if (descriptor == null || descriptor.filterType === FilterTypeEnum.String) {
@@ -295,4 +295,34 @@ export function filterGetNumberConfig(descriptor) {
295
295
  fractionsMax: descriptor.numberMaxFractionDigits ?? displayCfg?.fractionsMax
296
296
  };
297
297
  }
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxlL3NyYy9oZWxwZXJzL2ZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUlILGVBQWUsRUFJZiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsa0NBQWtDLEVBQ3JDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUl2RyxNQUFNLFVBQVUsd0JBQXdCLENBQUMsV0FBMEIsRUFBRSxVQUFrRCxFQUFFLFNBQXNDO0lBQzNKLElBQUksT0FBTyxHQUE2QixTQUFTLENBQUM7SUFDbEQsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEtBQUssY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hFLE9BQU8sR0FBRztZQUNOLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQzlGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFDO1lBQ3BHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFDO1lBQzFGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFDO1lBQ2hHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFF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RSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJpbWVOR0NvbmZpZywgU2VsZWN0SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNGaWx0ZXJNZXRhZGF0YSxcbiAgICBDb21tb25zTW9kdWxlQ29uZmlnLFxuICAgIENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnLFxuICAgIEZpbHRlck1hdGNoTW9kZSxcbiAgICBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgU2luZ2xlT3JBcnJheVR5cGUsXG4gICAgYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzLFxuICAgIGFuZ3VsYXJEYXRlRm9ybWF0SGFzVGltZSxcbiAgICBkYXRlVG9Jc29TdHJpbmcsXG4gICAgZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZSxcbiAgICBmcm9tQW5ndWxhck51bWJlckZvcm1hdFRvRnJhY3Rpb25zXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckxvb2t1cERlc2NyaXB0b3IsIEZpbHRlclR5cGVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2ZpbHRlcic7XG5cbmltcG9ydCB7RmlsdGVyRGF0ZUNvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU1hdGNoTW9kZU9wdGlvbnMocHJpbWVDb25maWc6IFByaW1lTkdDb25maWcsIGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+IHwgdW5kZWZpbmVkLCBjbXBTZXJDZmc/OiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZyk6IFNlbGVjdEl0ZW1bXSB7XG4gICAgbGV0IG9wdGlvbnM6IFNlbGVjdEl0ZW1bXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVzY3JpcHRvciA9PSBudWxsIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Db250YWlucywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Db250YWlucyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90Q29udGFpbnMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90Q29udGFpbnMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGgsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuU3RhcnRzV2l0aCl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRW5kc1dpdGgsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRW5kc1dpdGgpfVxuICAgICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbe3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkVxdWFscyl9XTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTnVtYmVyKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbil9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKX1cbiAgICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwRW51bSkge1xuICAgICAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpbHRlckxvb2t1cERlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5JbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Jbil9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLk5vdEluLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLk5vdEluKX1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gW1xuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lICYmICFkZXNjcmlwdG9yLmRhdGVWYWx1ZU5vVGltZSAmJiAhY21wU2VyQ2ZnPy5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkVxdWFscyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnM/LnB1c2goXG4gICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FeGlzdHMpfSxcbiAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0LCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCl9XG4gICAgKTtcblxuICAgIGlmIChkZXNjcmlwdG9yPy5tYXRjaE1vZGVzKSB7XG4gICAgICAgIG9wdGlvbnMgPSBkZXNjcmlwdG9yLm1hdGNoTW9kZXMubWFwKG1tID0+IDxTZWxlY3RJdGVtPnt2YWx1ZTogbW0sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihtbSl9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnMgfHwgW107XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZGVmYXVsdCBtYXRjaCBtb2RlIGZvciBhIGZpbHRlci5cbiAqXG4gKiBAcGFyYW0ge0ZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+fSBbZGVzY3JpcHRvcl0gLSBUaGUgZmlsdGVyIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlbGVjdEl0ZW1bXX0gW21hdGNoTW9kZXM9W11dIC0gVGhlIGF2YWlsYWJsZSBtYXRjaCBtb2RlcyBvcHRpb25zLlxuICpcbiAqIEByZXR1cm4ge0ZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZX0gVGhlIGRlZmF1bHQgbWF0Y2ggbW9kZSBmb3IgdGhlIGZpbHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckdldERlZmF1bHRNYXRjaE1vZGUoZGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+LCBtYXRjaE1vZGVzOiBTZWxlY3RJdGVtW10gPSBbXSk6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSB7XG4gICAgbGV0IGRlZmF1bHRNYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSA9IEZpbHRlck1hdGNoTW9kZS5FcXVhbHM7XG4gICAgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLlN0cmluZykgZGVmYXVsdE1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZS5TdGFydHNXaXRoO1xuICAgIGVsc2UgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLk51bWJlciB8fCBkZXNjcmlwdG9yPy5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlIHx8IGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkJvb2xlYW4pXG4gICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgIGVsc2UgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkxvb2t1cCB8fCBkZXNjcmlwdG9yPy5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Mb29rdXBFbnVtKSB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmlsdGVyTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZGVmYXVsdE1hdGNoTW9kZSA9IGRlc2NyaXB0b3I/Lm11bHRpc2VsZWN0ID8gRmlsdGVyTWF0Y2hNb2RlLkluIDogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3ZlcndyaXRlIHR5cGUgZGVmYXVsdCBzZXQgaW4gZGVzY3JpcHRvclxuICAgIGlmIChkZXNjcmlwdG9yPy5kZWZhdWx0TWF0Y2hNb2RlKSB7XG4gICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBkZXNjcmlwdG9yLmRlZmF1bHRNYXRjaE1vZGU7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgZGVmYXVsdCBtb2RlIGV4aXN0cyFcbiAgICBpZiAobWF0Y2hNb2Rlcy5sZW5ndGggPiAwICYmICFtYXRjaE1vZGVzLnNvbWUobSA9PiBtLnZhbHVlID09PSBkZWZhdWx0TWF0Y2hNb2RlKSkge1xuICAgICAgICBkZWZhdWx0TWF0Y2hNb2RlID0gbWF0Y2hNb2Rlc1swXS52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdE1hdGNoTW9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclNldE1ldGFkYXRhT25DaGFuZ2UoXG4gICAgZmlsdGVyOiBDb21tb25zRmlsdGVyTWV0YWRhdGEsXG4gICAgbWF0Y2hNb2RlPzogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlLFxuICAgIHZhbHVlPzogYW55LFxuICAgIGZpbHRlclR5cGU/OiBGaWx0ZXJUeXBlRW51bSxcbiAgICBmaWx0ZXJEYXRlQ2ZnPzogRmlsdGVyRGF0ZUNvbmZpZ1xuKTogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHtcbiAgICBsZXQgZGlzcGxheVZhbHVlID0gZmlsdGVyPy5kaXNwbGF5VmFsdWUgPz8gdmFsdWU7XG4gICAgbGV0IGRpc3BsYXlNYXRjaE1vZGUgPSBmaWx0ZXI/LmRpc3BsYXlNYXRjaE1vZGUgPz8gbWF0Y2hNb2RlO1xuXG4gICAgLy8gd2hlbiBlcXVhbHMgaXMgdXNlZCBvbiBkYXRlcyB3aXRoIHRpbWUsIHRoZSBhY3R1YWwgZmlsdGVyIHdpbGwgYmUgYmV0d2VlbiwgYnV0IGRpc3BsYXllZCBhcyBlcXVhbHNcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSAmJiAhZmlsdGVyRGF0ZUNmZz8udmFsdWVOb1RpbWUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgdmFsdWUuZXZlcnkodiA9PiB2IGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJBcmVEYXRlc0VxdWFsKHZhbHVlWzBdLCB2YWx1ZVsxXSwgZmlsdGVyRGF0ZUNmZykpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5TWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgbWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSAmJiBkaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgLy8gZGlzcGxheSB2YWx1ZSBmb3IgY2FsZW5kYXIgY2Fubm90IGJlIHN0cmluZywgY29udmVydCB0byBkYXRlXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IEFycmF5LmlzQXJyYXkoZGlzcGxheVZhbHVlKVxuICAgICAgICAgICAgPyBkaXNwbGF5VmFsdWUubWFwKHYgPT4gKCEodiBpbnN0YW5jZW9mIERhdGUpID8gbmV3IERhdGUodikgOiB2KSlcbiAgICAgICAgICAgIDogZGlzcGxheVZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICA/IGRpc3BsYXlWYWx1ZVxuICAgICAgICAgICAgICA6IG5ldyBEYXRlKGRpc3BsYXlWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuICYmIGRpc3BsYXlWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgICBkaXNwbGF5VmFsdWUgPSAodHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gJ3N0cmluZycgJiYgZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgfHwgZGlzcGxheVZhbHVlID09PSAxO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTnVtYmVyICYmIGRpc3BsYXlWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IG51bVZhbHVlID0gK2Rpc3BsYXlWYWx1ZTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IG51bVZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgICBtYXRjaE1vZGUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzcGxheU1hdGNoTW9kZSxcbiAgICAgICAgZGlzcGxheVZhbHVlXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclNldE1ldGFkYXRhT25EaXNwbGF5Q2hhbmdlKFxuICAgIGZpbHRlcjogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGRpc3BsYXlNYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSxcbiAgICBkaXNwbGF5VmFsdWU6IGFueSxcbiAgICBmaWx0ZXJUeXBlPzogRmlsdGVyVHlwZUVudW0sXG4gICAgZmlsdGVyRGF0ZUNmZz86IEZpbHRlckRhdGVDb25maWdcbikge1xuICAgIGxldCBtYXRjaE1vZGUgPSBkaXNwbGF5TWF0Y2hNb2RlO1xuICAgIGxldCB2YWx1ZTogU2luZ2xlT3JBcnJheVR5cGU8TnVsbGFibGU8RGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+PiA9IGRpc3BsYXlWYWx1ZTtcblxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgIGlmICghZmlsdGVyRGF0ZUNmZz8udmFsdWVOb1RpbWUgJiYgZGlzcGxheVZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZGlzcGxheU1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkVxdWFscykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGVDZmc/LnNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0ZUNmZz8uc2hvd1NlY29uZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldE1pbGxpc2Vjb25kcyg5OTkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZS5zZXRTZWNvbmRzKDU5LCA5OTkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW2Zyb21EYXRlLCB0b0RhdGVdO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5TWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2Vlbikge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDIgJiYgdmFsdWUuZXZlcnkoaSA9PiBpIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgaSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGkgPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKHZhbHVlWzBdIGFzIERhdGUgfCBzdHJpbmcgfCBudW1iZXIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG9EYXRlID0gbmV3IERhdGUodmFsdWVbMV0gYXMgRGF0ZSB8IHN0cmluZyB8IG51bWJlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckFyZURhdGVzRXF1YWwoZnJvbURhdGUsIHRvRGF0ZSwgZmlsdGVyRGF0ZUNmZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRlQ2ZnPy5zaG93VGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRlQ2ZnPy5zaG93U2Vjb25kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0U2Vjb25kcyh0b0RhdGUuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldE1pbnV0ZXModG9EYXRlLmdldE1pbnV0ZXMoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldERhdGUodG9EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtmcm9tRGF0ZSwgdG9EYXRlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnZlcnREYXRlVHlwZSA9IGZpbHRlckRhdGVDZmc/LnZhbHVlTm9UaW1lID8gJ2RhdGUnIDogJ2RhdGUtdGltZSc7XG4gICAgICAgIGNvbnN0IGNvbnZlcnREYXRlVGltZU9wdHMgPSB7XG4gICAgICAgICAgICB1dGM6IGZpbHRlckRhdGVDZmc/LnZhbHVlVXRjLFxuICAgICAgICAgICAgbm9NaWxsaXM6IGZpbHRlckRhdGVDZmc/LnZhbHVlTm9NaWxsaXMsXG4gICAgICAgICAgICBub1RpbWV6b25lOiBmaWx0ZXJEYXRlQ2ZnPy52YWx1ZU5vVGltZXpvbmVcbiAgICAgICAgfTtcblxuICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICB2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgID8gdmFsdWUuZmlsdGVyKGkgPT4gaSAhPSBudWxsKS5tYXAoaSA9PiBkYXRlVG9Jc29TdHJpbmcoaSwgY29udmVydERhdGVUeXBlLCBjb252ZXJ0RGF0ZVRpbWVPcHRzKSlcbiAgICAgICAgICAgICAgICAgIDogZGF0ZVRvSXNvU3RyaW5nKHZhbHVlLCBjb252ZXJ0RGF0ZVR5cGUsIGNvbnZlcnREYXRlVGltZU9wdHMpO1xuICAgIH1cbiAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgICBkaXNwbGF5TWF0Y2hNb2RlOiBkaXNwbGF5TWF0Y2hNb2RlLFxuICAgICAgICBtYXRjaE1vZGU6IG1hdGNoTW9kZSxcbiAgICAgICAgZGlzcGxheVZhbHVlOiBkaXNwbGF5VmFsdWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2FzZVNlbnNpdGl2ZTogZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nID8gZmlsdGVyPy5jYXNlU2Vuc2l0aXZlIDogdW5kZWZpbmVkXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFyZURhdGVzRXF1YWwoZnJvbURhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsIHRvRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciwgZmlsdGVyRGF0ZUNmZz86IEZpbHRlckRhdGVDb25maWcpIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSBkYXRlVG9Jc29TdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IGVuZERhdGUgPSBkYXRlVG9Jc29TdHJpbmcodG9EYXRlKTtcblxuICAgIC8vIDIwMjAtMTEtMDJUMTE6MTI6MTIuMDAwXG4gICAgY29uc3QgY21wTGVuZ3RoID0gZmlsdGVyRGF0ZUNmZz8uc2hvd1RpbWUgPyAoZmlsdGVyRGF0ZUNmZz8uc2hvd1NlY29uZHMgPyAxOSA6IDE2KSA6IDEwO1xuXG4gICAgcmV0dXJuIHN0YXJ0RGF0ZS5zdWJzdHJpbmcoMCwgY21wTGVuZ3RoKSA9PT0gZW5kRGF0ZS5zdWJzdHJpbmcoMCwgY21wTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFwcGx5U2VyaWFsaXphdGlvbkNvbmZpZ1RvQ21wKGNvbmZpZzogQ29tbW9uc01vZHVsZUNvbmZpZyB8IG51bGwsIGNtcFNlckNmZzogQ29tbW9uc1NlcmlhbGl6YXRpb25Db25maWcpIHtcbiAgICAvLyBzZXQgZGVmYXVsdFxuICAgIGNtcFNlckNmZy5kYXRlVGltZUluVXRjID0gZmFsc2U7XG4gICAgY21wU2VyQ2ZnLmRhdGVUaW1lV2l0aFRpbWV6b25lID0gdHJ1ZTtcbiAgICBjbXBTZXJDZmcuZGF0ZVRpbWVXaXRoTWlsbGlzID0gdHJ1ZTtcbiAgICBjbXBTZXJDZmcuZmlsdGVyc0RhdGVPbmx5RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAvLyBzZXQgY3VzdG9taXphdGlvbnNcbiAgICBpZiAoY29uZmlnPy5zZXJpYWxpemF0aW9uKSB7XG4gICAgICAgIGlmIChjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZUluVXRjICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZUluVXRjID0gY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVJblV0YztcbiAgICAgICAgaWYgKGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lV2l0aFRpbWV6b25lICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZVdpdGhUaW1lem9uZSA9IGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lV2l0aFRpbWV6b25lO1xuICAgICAgICBpZiAoY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVXaXRoTWlsbGlzICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZVdpdGhNaWxsaXMgPSBjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZVdpdGhNaWxsaXM7XG4gICAgICAgIGlmIChjb25maWcuc2VyaWFsaXphdGlvbi5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCAhPT0gdW5kZWZpbmVkKSBjbXBTZXJDZmcuZmlsdGVyc0RhdGVPbmx5RGlzYWJsZWQgPSBjb25maWcuc2VyaWFsaXphdGlvbi5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBZGp1c3REaXNwbGF5VmFsdWVPbk1hdGNoTW9kZUNoYW5nZShtYXRjaE1vZGU/OiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsIHZhbHVlPzogYW55KTogYW55IHtcbiAgICBpZiAobWF0Y2hNb2RlID09IG51bGwgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7IC8vIG5ldmVyIGNoYW5nZSwgb25seSBjaGFuZ2UgbGF0ZXIgaWYgc29tZXRoaW5nIGVsc2UgY2hhbmdlcyBoZXJlXG4gICAgfVxuICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsID8gW3ZhbHVlLCB2YWx1ZV0gOiBbXTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3ZhbHVlWzBdLCB2YWx1ZVswXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3ZhbHVlWzBdLCB2YWx1ZVsxXV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLk5vdEluKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPT0gbnVsbCA/IFtdIDogW3ZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyR2V0RGF0ZUNvbmZpZyhkZXNjcmlwdG9yPzogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4sIHNlckNmZz86IENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnKTogRmlsdGVyRGF0ZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dUaW1lID1cbiAgICAgICAgZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUgPz8gKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdEFwcGx5VG9GaWVsZCAmJiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgPyBhbmd1bGFyRGF0ZUZvcm1hdEhhc1RpbWUoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IGZhbHNlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZU5vVGltZTogZGVzY3JpcHRvci5kYXRlVmFsdWVOb1RpbWUgfHwgKCFzZXJDZmc/LmZpbHRlcnNEYXRlT25seURpc2FibGVkICYmICFzaG93VGltZSksXG4gICAgICAgIHZhbHVlVXRjOiBkZXNjcmlwdG9yLmRhdGVWYWx1ZVV0YyA/PyBzZXJDZmc/LmRhdGVUaW1lSW5VdGMsXG4gICAgICAgIHZhbHVlTm9UaW1lem9uZTogZGVzY3JpcHRvci5kYXRlVmFsdWVOb1RpbWV6b25lID8/ICFzZXJDZmc/LmRhdGVUaW1lV2l0aFRpbWV6b25lLFxuICAgICAgICB2YWx1ZU5vTWlsbGlzOiAhc2VyQ2ZnPy5kYXRlVGltZVdpdGhNaWxsaXMsXG4gICAgICAgIGZvcm1hdDpcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdCA/PyAoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0QXBwbHlUb0ZpZWxkICYmIGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA/IGZyb21Bbmd1bGFyRGF0ZUZvcm1hdFRvUHJpbWUoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IHVuZGVmaW5lZCksXG4gICAgICAgIHNob3dUaW1lOiBzaG93VGltZSxcbiAgICAgICAgc2hvd1NlY29uZHM6XG4gICAgICAgICAgICBzaG93VGltZSAmJlxuICAgICAgICAgICAgKGRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dTZWNvbmRzID8/IChkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXRBcHBseVRvRmllbGQgJiYgZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0ID8gYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCkgOiBmYWxzZSkpXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckdldE51bWJlckNvbmZpZyhkZXNjcmlwdG9yPzogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4pIHtcbiAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5maWx0ZXJUeXBlICE9PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNwbGF5Q2ZnID0gZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0QXBwbHlUb0ZpZWxkICYmIGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA/IGZyb21Bbmd1bGFyTnVtYmVyRm9ybWF0VG9GcmFjdGlvbnMoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmcmFjdGlvbnNNaW46IGRlc2NyaXB0b3IubnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPz8gZGlzcGxheUNmZz8uZnJhY3Rpb25zTWluLFxuICAgICAgICBmcmFjdGlvbnNNYXg6IGRlc2NyaXB0b3IubnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPz8gZGlzcGxheUNmZz8uZnJhY3Rpb25zTWF4XG4gICAgfTtcbn1cbiJdfQ==
298
+ /**
299
+ * Creates an array of filter descriptors from an array of generic filter properties.
300
+ *
301
+ * @param {FilterGenericProperty[]} properties - The array of filterable properties, their types and options.
302
+ * @param {LookupDataProviderInst<string, any, any, 'field'>} [valueLookup] - The lookup data provider for value suggestions.
303
+ */
304
+ export function createFilterDescriptorsFromGeneric(properties, valueLookup) {
305
+ return properties.reduce((createdFilterDescriptors, genericFilter) => {
306
+ // when no generic value lookup is provided, lookup enum filters are treated as string filters
307
+ const filterType = genericFilter.type === FilterTypeEnum.LookupEnum && valueLookup === undefined ? FilterTypeEnum.String : genericFilter.type;
308
+ const filterDescriptor = new FilterDescriptor(genericFilter.property).asFilterType(filterType).asGenericFilter();
309
+ if ((genericFilter.type === FilterTypeEnum.String || genericFilter.type === FilterTypeEnum.LookupEnum) && valueLookup) {
310
+ filterDescriptor.withGenericValueProvider(valueLookup);
311
+ }
312
+ if (filterDescriptor && genericFilter.opts !== undefined) {
313
+ switch (genericFilter.type) {
314
+ case FilterTypeEnum.Number:
315
+ filterDescriptor.asNumber(genericFilter.opts);
316
+ break;
317
+ case FilterTypeEnum.Date:
318
+ filterDescriptor.asDate(genericFilter.opts);
319
+ break;
320
+ }
321
+ }
322
+ if (filterDescriptor) {
323
+ createdFilterDescriptors.push(filterDescriptor);
324
+ }
325
+ return createdFilterDescriptors;
326
+ }, []);
327
+ }
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RhYmxlL3NyYy9oZWxwZXJzL2ZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUlILGVBQWUsRUFJZiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsa0NBQWtDLEVBQ3JDLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFDLGdCQUFnQixFQUF5QixzQkFBc0IsRUFBRSxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUs5SCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsV0FBMEIsRUFBRSxVQUFrRCxFQUFFLFNBQXNDO0lBQzNKLElBQUksT0FBTyxHQUE2QixTQUFTLENBQUM7SUFDbEQsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEtBQUssY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hFLE9BQU8sR0FBRztZQUNOLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQzlGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFDO1lBQ3BHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFDO1lBQzFGLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFDO1lBQ2hHLEVBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxVQUFVLEVB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QUFFLENBQUM7WUFDbkIsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sd0JBQXdCLENBQUM7SUFDcEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJpbWVOR0NvbmZpZywgU2VsZWN0SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNGaWx0ZXJNZXRhZGF0YSxcbiAgICBDb21tb25zTW9kdWxlQ29uZmlnLFxuICAgIENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnLFxuICAgIEZpbHRlck1hdGNoTW9kZSxcbiAgICBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgU2luZ2xlT3JBcnJheVR5cGUsXG4gICAgYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzLFxuICAgIGFuZ3VsYXJEYXRlRm9ybWF0SGFzVGltZSxcbiAgICBkYXRlVG9Jc29TdHJpbmcsXG4gICAgZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZSxcbiAgICBmcm9tQW5ndWxhck51bWJlckZvcm1hdFRvRnJhY3Rpb25zXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckdlbmVyaWNQcm9wZXJ0eSwgRmlsdGVyTG9va3VwRGVzY3JpcHRvciwgRmlsdGVyVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcbmltcG9ydCB7TG9va3VwRGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7RmlsdGVyRGF0ZUNvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci5tb2RlbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU1hdGNoTW9kZU9wdGlvbnMocHJpbWVDb25maWc6IFByaW1lTkdDb25maWcsIGRlc2NyaXB0b3I6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+IHwgdW5kZWZpbmVkLCBjbXBTZXJDZmc/OiBDb21tb25zU2VyaWFsaXphdGlvbkNvbmZpZyk6IFNlbGVjdEl0ZW1bXSB7XG4gICAgbGV0IG9wdGlvbnM6IFNlbGVjdEl0ZW1bXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVzY3JpcHRvciA9PSBudWxsIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Db250YWlucywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Db250YWlucyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90Q29udGFpbnMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90Q29udGFpbnMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMpfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGgsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuU3RhcnRzV2l0aCl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRW5kc1dpdGgsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRW5kc1dpdGgpfVxuICAgICAgICBdO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbe3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkVxdWFscyl9XTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTnVtYmVyKSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5MZXNzVGhhbil9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTGVzc1RoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkdyZWF0ZXJUaGFuKX0sXG4gICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5HcmVhdGVyVGhhbk9yRXF1YWxUbyl9LFxuICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKX1cbiAgICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwRW51bSkge1xuICAgICAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpbHRlckxvb2t1cERlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5JbiwgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5Jbil9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLk5vdEluLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLk5vdEluKX1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zID0gW1xuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FcXVhbHMpfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5Ob3RFcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzKX1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lICYmICFkZXNjcmlwdG9yLmRhdGVWYWx1ZU5vVGltZSAmJiAhY21wU2VyQ2ZnPy5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHMsIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuTm90RXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLk5vdEVxdWFscyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkVxdWFscyl9LFxuICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkxlc3NUaGFuT3JFcXVhbFRvKX0sXG4gICAgICAgICAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGUuR3JlYXRlclRoYW5PckVxdWFsVG8pfSxcbiAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuLCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnM/LnB1c2goXG4gICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cywgbGFiZWw6IHByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZS5FeGlzdHMpfSxcbiAgICAgICAge3ZhbHVlOiBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0LCBsYWJlbDogcHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24oRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCl9XG4gICAgKTtcblxuICAgIGlmIChkZXNjcmlwdG9yPy5tYXRjaE1vZGVzKSB7XG4gICAgICAgIG9wdGlvbnMgPSBkZXNjcmlwdG9yLm1hdGNoTW9kZXMubWFwKG1tID0+IDxTZWxlY3RJdGVtPnt2YWx1ZTogbW0sIGxhYmVsOiBwcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihtbSl9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnMgfHwgW107XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZGVmYXVsdCBtYXRjaCBtb2RlIGZvciBhIGZpbHRlci5cbiAqXG4gKiBAcGFyYW0ge0ZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+fSBbZGVzY3JpcHRvcl0gLSBUaGUgZmlsdGVyIGRlc2NyaXB0b3IuXG4gKiBAcGFyYW0ge1NlbGVjdEl0ZW1bXX0gW21hdGNoTW9kZXM9W11dIC0gVGhlIGF2YWlsYWJsZSBtYXRjaCBtb2RlcyBvcHRpb25zLlxuICpcbiAqIEByZXR1cm4ge0ZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZX0gVGhlIGRlZmF1bHQgbWF0Y2ggbW9kZSBmb3IgdGhlIGZpbHRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckdldERlZmF1bHRNYXRjaE1vZGUoZGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8YW55LCBhbnk+LCBtYXRjaE1vZGVzOiBTZWxlY3RJdGVtW10gPSBbXSk6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSB7XG4gICAgbGV0IGRlZmF1bHRNYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSA9IEZpbHRlck1hdGNoTW9kZS5FcXVhbHM7XG4gICAgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLlN0cmluZykgZGVmYXVsdE1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZS5TdGFydHNXaXRoO1xuICAgIGVsc2UgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLk51bWJlciB8fCBkZXNjcmlwdG9yPy5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlIHx8IGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkJvb2xlYW4pXG4gICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgIGVsc2UgaWYgKGRlc2NyaXB0b3I/LmZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkxvb2t1cCB8fCBkZXNjcmlwdG9yPy5maWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Mb29rdXBFbnVtKSB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmlsdGVyTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZGVmYXVsdE1hdGNoTW9kZSA9IGRlc2NyaXB0b3I/Lm11bHRpc2VsZWN0ID8gRmlsdGVyTWF0Y2hNb2RlLkluIDogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3ZlcndyaXRlIHR5cGUgZGVmYXVsdCBzZXQgaW4gZGVzY3JpcHRvclxuICAgIGlmIChkZXNjcmlwdG9yPy5kZWZhdWx0TWF0Y2hNb2RlKSB7XG4gICAgICAgIGRlZmF1bHRNYXRjaE1vZGUgPSBkZXNjcmlwdG9yLmRlZmF1bHRNYXRjaE1vZGU7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgZGVmYXVsdCBtb2RlIGV4aXN0cyFcbiAgICBpZiAobWF0Y2hNb2Rlcy5sZW5ndGggPiAwICYmICFtYXRjaE1vZGVzLnNvbWUobSA9PiBtLnZhbHVlID09PSBkZWZhdWx0TWF0Y2hNb2RlKSkge1xuICAgICAgICBkZWZhdWx0TWF0Y2hNb2RlID0gbWF0Y2hNb2Rlc1swXS52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdE1hdGNoTW9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclNldE1ldGFkYXRhT25DaGFuZ2UoXG4gICAgZmlsdGVyOiBDb21tb25zRmlsdGVyTWV0YWRhdGEsXG4gICAgbWF0Y2hNb2RlPzogRmlsdGVyTWF0Y2hNb2RlRXh0ZW5kZWRUeXBlLFxuICAgIHZhbHVlPzogYW55LFxuICAgIGZpbHRlclR5cGU/OiBGaWx0ZXJUeXBlRW51bSxcbiAgICBmaWx0ZXJEYXRlQ2ZnPzogRmlsdGVyRGF0ZUNvbmZpZ1xuKTogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHtcbiAgICBsZXQgZGlzcGxheVZhbHVlID0gZmlsdGVyPy5kaXNwbGF5VmFsdWUgPz8gdmFsdWU7XG4gICAgbGV0IGRpc3BsYXlNYXRjaE1vZGUgPSBmaWx0ZXI/LmRpc3BsYXlNYXRjaE1vZGUgPz8gbWF0Y2hNb2RlO1xuXG4gICAgLy8gd2hlbiBlcXVhbHMgaXMgdXNlZCBvbiBkYXRlcyB3aXRoIHRpbWUsIHRoZSBhY3R1YWwgZmlsdGVyIHdpbGwgYmUgYmV0d2VlbiwgYnV0IGRpc3BsYXllZCBhcyBlcXVhbHNcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSAmJiAhZmlsdGVyRGF0ZUNmZz8udmFsdWVOb1RpbWUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJlxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgdmFsdWUuZXZlcnkodiA9PiB2IGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgdiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHYgPT09ICdudW1iZXInKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJBcmVEYXRlc0VxdWFsKHZhbHVlWzBdLCB2YWx1ZVsxXSwgZmlsdGVyRGF0ZUNmZykpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5TWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZVswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzICYmICF2YWx1ZSkge1xuICAgICAgICAgICAgbWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSAmJiBkaXNwbGF5VmFsdWUpIHtcbiAgICAgICAgLy8gZGlzcGxheSB2YWx1ZSBmb3IgY2FsZW5kYXIgY2Fubm90IGJlIHN0cmluZywgY29udmVydCB0byBkYXRlXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IEFycmF5LmlzQXJyYXkoZGlzcGxheVZhbHVlKVxuICAgICAgICAgICAgPyBkaXNwbGF5VmFsdWUubWFwKHYgPT4gKCEodiBpbnN0YW5jZW9mIERhdGUpID8gbmV3IERhdGUodikgOiB2KSlcbiAgICAgICAgICAgIDogZGlzcGxheVZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICA/IGRpc3BsYXlWYWx1ZVxuICAgICAgICAgICAgICA6IG5ldyBEYXRlKGRpc3BsYXlWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuICYmIGRpc3BsYXlWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgIT09ICdib29sZWFuJykge1xuICAgICAgICBkaXNwbGF5VmFsdWUgPSAodHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gJ3N0cmluZycgJiYgZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgfHwgZGlzcGxheVZhbHVlID09PSAxO1xuICAgIH1cbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTnVtYmVyICYmIGRpc3BsYXlWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IG51bVZhbHVlID0gK2Rpc3BsYXlWYWx1ZTtcbiAgICAgICAgaWYgKCFpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9IG51bVZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgICBtYXRjaE1vZGUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgZGlzcGxheU1hdGNoTW9kZSxcbiAgICAgICAgZGlzcGxheVZhbHVlXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclNldE1ldGFkYXRhT25EaXNwbGF5Q2hhbmdlKFxuICAgIGZpbHRlcjogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIGRpc3BsYXlNYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZUV4dGVuZGVkVHlwZSxcbiAgICBkaXNwbGF5VmFsdWU6IGFueSxcbiAgICBmaWx0ZXJUeXBlPzogRmlsdGVyVHlwZUVudW0sXG4gICAgZmlsdGVyRGF0ZUNmZz86IEZpbHRlckRhdGVDb25maWdcbikge1xuICAgIGxldCBtYXRjaE1vZGUgPSBkaXNwbGF5TWF0Y2hNb2RlO1xuICAgIGxldCB2YWx1ZTogU2luZ2xlT3JBcnJheVR5cGU8TnVsbGFibGU8RGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+PiA9IGRpc3BsYXlWYWx1ZTtcblxuICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgIGlmICghZmlsdGVyRGF0ZUNmZz8udmFsdWVOb1RpbWUgJiYgZGlzcGxheVZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoZGlzcGxheU1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkVxdWFscykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckRhdGVDZmc/LnNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyRGF0ZUNmZz8uc2hvd1NlY29uZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldE1pbGxpc2Vjb25kcyg5OTkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXRTZWNvbmRzKDAsIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZS5zZXRTZWNvbmRzKDU5LCA5OTkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnJvbURhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW2Zyb21EYXRlLCB0b0RhdGVdO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5TWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2Vlbikge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDIgJiYgdmFsdWUuZXZlcnkoaSA9PiBpIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2YgaSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGkgPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKHZhbHVlWzBdIGFzIERhdGUgfCBzdHJpbmcgfCBudW1iZXIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG9EYXRlID0gbmV3IERhdGUodmFsdWVbMV0gYXMgRGF0ZSB8IHN0cmluZyB8IG51bWJlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckFyZURhdGVzRXF1YWwoZnJvbURhdGUsIHRvRGF0ZSwgZmlsdGVyRGF0ZUNmZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRlQ2ZnPy5zaG93VGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJEYXRlQ2ZnPy5zaG93U2Vjb25kcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0RhdGUuc2V0U2Vjb25kcyh0b0RhdGUuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldE1pbnV0ZXModG9EYXRlLmdldE1pbnV0ZXMoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9EYXRlLnNldERhdGUodG9EYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFtmcm9tRGF0ZSwgdG9EYXRlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnZlcnREYXRlVHlwZSA9IGZpbHRlckRhdGVDZmc/LnZhbHVlTm9UaW1lID8gJ2RhdGUnIDogJ2RhdGUtdGltZSc7XG4gICAgICAgIGNvbnN0IGNvbnZlcnREYXRlVGltZU9wdHMgPSB7XG4gICAgICAgICAgICB1dGM6IGZpbHRlckRhdGVDZmc/LnZhbHVlVXRjLFxuICAgICAgICAgICAgbm9NaWxsaXM6IGZpbHRlckRhdGVDZmc/LnZhbHVlTm9NaWxsaXMsXG4gICAgICAgICAgICBub1RpbWV6b25lOiBmaWx0ZXJEYXRlQ2ZnPy52YWx1ZU5vVGltZXpvbmVcbiAgICAgICAgfTtcblxuICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICB2YWx1ZSA9PSBudWxsXG4gICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgICAgICAgID8gdmFsdWUuZmlsdGVyKGkgPT4gaSAhPSBudWxsKS5tYXAoaSA9PiBkYXRlVG9Jc29TdHJpbmcoaSwgY29udmVydERhdGVUeXBlLCBjb252ZXJ0RGF0ZVRpbWVPcHRzKSlcbiAgICAgICAgICAgICAgICAgIDogZGF0ZVRvSXNvU3RyaW5nKHZhbHVlLCBjb252ZXJ0RGF0ZVR5cGUsIGNvbnZlcnREYXRlVGltZU9wdHMpO1xuICAgIH1cbiAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgICBkaXNwbGF5TWF0Y2hNb2RlOiBkaXNwbGF5TWF0Y2hNb2RlLFxuICAgICAgICBtYXRjaE1vZGU6IG1hdGNoTW9kZSxcbiAgICAgICAgZGlzcGxheVZhbHVlOiBkaXNwbGF5VmFsdWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2FzZVNlbnNpdGl2ZTogZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nID8gZmlsdGVyPy5jYXNlU2Vuc2l0aXZlIDogdW5kZWZpbmVkXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFyZURhdGVzRXF1YWwoZnJvbURhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsIHRvRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciwgZmlsdGVyRGF0ZUNmZz86IEZpbHRlckRhdGVDb25maWcpIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSBkYXRlVG9Jc29TdHJpbmcoZnJvbURhdGUpO1xuICAgIGNvbnN0IGVuZERhdGUgPSBkYXRlVG9Jc29TdHJpbmcodG9EYXRlKTtcblxuICAgIC8vIDIwMjAtMTEtMDJUMTE6MTI6MTIuMDAwXG4gICAgY29uc3QgY21wTGVuZ3RoID0gZmlsdGVyRGF0ZUNmZz8uc2hvd1RpbWUgPyAoZmlsdGVyRGF0ZUNmZz8uc2hvd1NlY29uZHMgPyAxOSA6IDE2KSA6IDEwO1xuXG4gICAgcmV0dXJuIHN0YXJ0RGF0ZS5zdWJzdHJpbmcoMCwgY21wTGVuZ3RoKSA9PT0gZW5kRGF0ZS5zdWJzdHJpbmcoMCwgY21wTGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFwcGx5U2VyaWFsaXphdGlvbkNvbmZpZ1RvQ21wKGNvbmZpZzogQ29tbW9uc01vZHVsZUNvbmZpZyB8IG51bGwsIGNtcFNlckNmZzogQ29tbW9uc1NlcmlhbGl6YXRpb25Db25maWcpIHtcbiAgICAvLyBzZXQgZGVmYXVsdFxuICAgIGNtcFNlckNmZy5kYXRlVGltZUluVXRjID0gZmFsc2U7XG4gICAgY21wU2VyQ2ZnLmRhdGVUaW1lV2l0aFRpbWV6b25lID0gdHJ1ZTtcbiAgICBjbXBTZXJDZmcuZGF0ZVRpbWVXaXRoTWlsbGlzID0gdHJ1ZTtcbiAgICBjbXBTZXJDZmcuZmlsdGVyc0RhdGVPbmx5RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAvLyBzZXQgY3VzdG9taXphdGlvbnNcbiAgICBpZiAoY29uZmlnPy5zZXJpYWxpemF0aW9uKSB7XG4gICAgICAgIGlmIChjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZUluVXRjICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZUluVXRjID0gY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVJblV0YztcbiAgICAgICAgaWYgKGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lV2l0aFRpbWV6b25lICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZVdpdGhUaW1lem9uZSA9IGNvbmZpZy5zZXJpYWxpemF0aW9uLmRhdGVUaW1lV2l0aFRpbWV6b25lO1xuICAgICAgICBpZiAoY29uZmlnLnNlcmlhbGl6YXRpb24uZGF0ZVRpbWVXaXRoTWlsbGlzICE9PSB1bmRlZmluZWQpIGNtcFNlckNmZy5kYXRlVGltZVdpdGhNaWxsaXMgPSBjb25maWcuc2VyaWFsaXphdGlvbi5kYXRlVGltZVdpdGhNaWxsaXM7XG4gICAgICAgIGlmIChjb25maWcuc2VyaWFsaXphdGlvbi5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZCAhPT0gdW5kZWZpbmVkKSBjbXBTZXJDZmcuZmlsdGVyc0RhdGVPbmx5RGlzYWJsZWQgPSBjb25maWcuc2VyaWFsaXphdGlvbi5maWx0ZXJzRGF0ZU9ubHlEaXNhYmxlZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBZGp1c3REaXNwbGF5VmFsdWVPbk1hdGNoTW9kZUNoYW5nZShtYXRjaE1vZGU/OiBGaWx0ZXJNYXRjaE1vZGVFeHRlbmRlZFR5cGUsIHZhbHVlPzogYW55KTogYW55IHtcbiAgICBpZiAobWF0Y2hNb2RlID09IG51bGwgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7IC8vIG5ldmVyIGNoYW5nZSwgb25seSBjaGFuZ2UgbGF0ZXIgaWYgc29tZXRoaW5nIGVsc2UgY2hhbmdlcyBoZXJlXG4gICAgfVxuICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsID8gW3ZhbHVlLCB2YWx1ZV0gOiBbXTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW3ZhbHVlWzBdLCB2YWx1ZVswXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3ZhbHVlWzBdLCB2YWx1ZVsxXV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLk5vdEluKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPT0gbnVsbCA/IFtdIDogW3ZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDAgPyB2YWx1ZVswXSA6IHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyR2V0RGF0ZUNvbmZpZyhkZXNjcmlwdG9yPzogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4sIHNlckNmZz86IENvbW1vbnNTZXJpYWxpemF0aW9uQ29uZmlnKTogRmlsdGVyRGF0ZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuZmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dUaW1lID1cbiAgICAgICAgZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUgPz8gKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdEFwcGx5VG9GaWVsZCAmJiBkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXQgPyBhbmd1bGFyRGF0ZUZvcm1hdEhhc1RpbWUoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IGZhbHNlKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZU5vVGltZTogZGVzY3JpcHRvci5kYXRlVmFsdWVOb1RpbWUgfHwgKCFzZXJDZmc/LmZpbHRlcnNEYXRlT25seURpc2FibGVkICYmICFzaG93VGltZSksXG4gICAgICAgIHZhbHVlVXRjOiBkZXNjcmlwdG9yLmRhdGVWYWx1ZVV0YyA/PyBzZXJDZmc/LmRhdGVUaW1lSW5VdGMsXG4gICAgICAgIHZhbHVlTm9UaW1lem9uZTogZGVzY3JpcHRvci5kYXRlVmFsdWVOb1RpbWV6b25lID8/ICFzZXJDZmc/LmRhdGVUaW1lV2l0aFRpbWV6b25lLFxuICAgICAgICB2YWx1ZU5vTWlsbGlzOiAhc2VyQ2ZnPy5kYXRlVGltZVdpdGhNaWxsaXMsXG4gICAgICAgIGZvcm1hdDpcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdCA/PyAoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0QXBwbHlUb0ZpZWxkICYmIGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA/IGZyb21Bbmd1bGFyRGF0ZUZvcm1hdFRvUHJpbWUoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IHVuZGVmaW5lZCksXG4gICAgICAgIHNob3dUaW1lOiBzaG93VGltZSxcbiAgICAgICAgc2hvd1NlY29uZHM6XG4gICAgICAgICAgICBzaG93VGltZSAmJlxuICAgICAgICAgICAgKGRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dTZWNvbmRzID8/IChkZXNjcmlwdG9yLmRpc3BsYXlGb3JtYXRBcHBseVRvRmllbGQgJiYgZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0ID8gYW5ndWxhckRhdGVGb3JtYXRIYXNTZWNvbmRzKGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCkgOiBmYWxzZSkpXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckdldE51bWJlckNvbmZpZyhkZXNjcmlwdG9yPzogRmlsdGVyRGVzY3JpcHRvcjxhbnksIGFueT4pIHtcbiAgICBpZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5maWx0ZXJUeXBlICE9PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNwbGF5Q2ZnID0gZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0QXBwbHlUb0ZpZWxkICYmIGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCA/IGZyb21Bbmd1bGFyTnVtYmVyRm9ybWF0VG9GcmFjdGlvbnMoZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0KSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBmcmFjdGlvbnNNaW46IGRlc2NyaXB0b3IubnVtYmVyTWluRnJhY3Rpb25EaWdpdHMgPz8gZGlzcGxheUNmZz8uZnJhY3Rpb25zTWluLFxuICAgICAgICBmcmFjdGlvbnNNYXg6IGRlc2NyaXB0b3IubnVtYmVyTWF4RnJhY3Rpb25EaWdpdHMgPz8gZGlzcGxheUNmZz8uZnJhY3Rpb25zTWF4XG4gICAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZpbHRlciBkZXNjcmlwdG9ycyBmcm9tIGFuIGFycmF5IG9mIGdlbmVyaWMgZmlsdGVyIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtGaWx0ZXJHZW5lcmljUHJvcGVydHlbXX0gcHJvcGVydGllcyAtIFRoZSBhcnJheSBvZiBmaWx0ZXJhYmxlIHByb3BlcnRpZXMsIHRoZWlyIHR5cGVzIGFuZCBvcHRpb25zLlxuICogQHBhcmFtIHtMb29rdXBEYXRhUHJvdmlkZXJJbnN0PHN0cmluZywgYW55LCBhbnksICdmaWVsZCc+fSBbdmFsdWVMb29rdXBdIC0gVGhlIGxvb2t1cCBkYXRhIHByb3ZpZGVyIGZvciB2YWx1ZSBzdWdnZXN0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbHRlckRlc2NyaXB0b3JzRnJvbUdlbmVyaWMoXG4gICAgcHJvcGVydGllczogRmlsdGVyR2VuZXJpY1Byb3BlcnR5W10sXG4gICAgdmFsdWVMb29rdXA/OiBMb29rdXBEYXRhUHJvdmlkZXJJbnN0PHN0cmluZywgYW55LCBhbnksICdmaWVsZCc+XG4pOiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55PltdIHwgW10ge1xuICAgIHJldHVybiBwcm9wZXJ0aWVzLnJlZHVjZTxGaWx0ZXJEZXNjcmlwdG9yPGFueSwgYW55PltdPigoY3JlYXRlZEZpbHRlckRlc2NyaXB0b3JzLCBnZW5lcmljRmlsdGVyKSA9PiB7XG4gICAgICAgIC8vIHdoZW4gbm8gZ2VuZXJpYyB2YWx1ZSBsb29rdXAgaXMgcHJvdmlkZWQsIGxvb2t1cCBlbnVtIGZpbHRlcnMgYXJlIHRyZWF0ZWQgYXMgc3RyaW5nIGZpbHRlcnNcbiAgICAgICAgY29uc3QgZmlsdGVyVHlwZSA9IGdlbmVyaWNGaWx0ZXIudHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwRW51bSAmJiB2YWx1ZUxvb2t1cCA9PT0gdW5kZWZpbmVkID8gRmlsdGVyVHlwZUVudW0uU3RyaW5nIDogZ2VuZXJpY0ZpbHRlci50eXBlO1xuICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckRlc2NyaXB0b3IoZ2VuZXJpY0ZpbHRlci5wcm9wZXJ0eSkuYXNGaWx0ZXJUeXBlKGZpbHRlclR5cGUpLmFzR2VuZXJpY0ZpbHRlcigpO1xuICAgICAgICBpZiAoKGdlbmVyaWNGaWx0ZXIudHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uU3RyaW5nIHx8IGdlbmVyaWNGaWx0ZXIudHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uTG9va3VwRW51bSkgJiYgdmFsdWVMb29rdXApIHtcbiAgICAgICAgICAgIGZpbHRlckRlc2NyaXB0b3Iud2l0aEdlbmVyaWNWYWx1ZVByb3ZpZGVyKHZhbHVlTG9va3VwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyRGVzY3JpcHRvciAmJiBnZW5lcmljRmlsdGVyLm9wdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3dpdGNoIChnZW5lcmljRmlsdGVyLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRGVzY3JpcHRvci5hc051bWJlcihnZW5lcmljRmlsdGVyLm9wdHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckRlc2NyaXB0b3IuYXNEYXRlKGdlbmVyaWNGaWx0ZXIub3B0cyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGNyZWF0ZWRGaWx0ZXJEZXNjcmlwdG9ycy5wdXNoKGZpbHRlckRlc2NyaXB0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVkRmlsdGVyRGVzY3JpcHRvcnM7XG4gICAgfSwgW10pO1xufVxuIl19
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const COMMONS_TABLE_FEATURE_CONFIG_IT = new InjectionToken('COMMONS_TABLE_FEATURE_CONFIG');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvc2VydmljZXMvdGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVE3QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRmVhdHVyZUNvbmZpZyB7XG4gICAgZmlsdGVyRGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW07XG59XG5cbmV4cG9ydCBjb25zdCBDT01NT05TX1RBQkxFX0ZFQVRVUkVfQ09ORklHX0lUID0gbmV3IEluamVjdGlvblRva2VuPFRhYmxlRmVhdHVyZUNvbmZpZz4oJ0NPTU1PTlNfVEFCTEVfRkVBVFVSRV9DT05GSUcnKTtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90YWJsZS9zcmMvc2VydmljZXMvdGFibGUtZmVhdHVyZS1jb25maWcudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQVM3QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsOEJBQThCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0ZpbHRlckRpc3BsYXlUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9maWx0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRmVhdHVyZUNvbmZpZyB7XG4gICAgZmlsdGVyRGlzcGxheVR5cGU/OiBGaWx0ZXJEaXNwbGF5VHlwZUVudW07XG4gICAgc2VhcmNoTGltaXRNYXhXb3Jkcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBDT01NT05TX1RBQkxFX0ZFQVRVUkVfQ09ORklHX0lUID0gbmV3IEluamVjdGlvblRva2VuPFRhYmxlRmVhdHVyZUNvbmZpZz4oJ0NPTU1PTlNfVEFCTEVfRkVBVFVSRV9DT05GSUcnKTtcbiJdfQ==
@@ -26,10 +26,10 @@ export class DataLanguageDropdownComponent {
26
26
  this.viewContainer?.reloadTable({});
27
27
  }
28
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DataLanguageDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.5", type: DataLanguageDropdownComponent, isStandalone: true, selector: "mng-data-language-dropdown", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: true, transformFunction: null }, actionData: { classPropertyName: "actionData", publicName: "actionData", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: true, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { trigger: "trigger" }, ngImport: i0, template: "<mng-dropdown [dataProvider]=\"selectionItemsDataProvider()\" [ngModel]=\"commons.appDataLocale()\" [showClear]=\"false\" (valueChange)=\"updateDataLocale($event)\"></mng-dropdown>\n", dependencies: [{ kind: "component", type: DropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "options", "optionsTrackProperty", "optionsLabelProperty", "optionsLabelTranslate", "optionsValueProperty", "optionsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur", "loading", "disabled", "appendTo"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.5", type: DataLanguageDropdownComponent, isStandalone: true, selector: "mng-data-language-dropdown", inputs: { action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: true, transformFunction: null }, actionData: { classPropertyName: "actionData", publicName: "actionData", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, itemId: { classPropertyName: "itemId", publicName: "itemId", isSignal: true, isRequired: true, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { trigger: "trigger" }, ngImport: i0, template: "<mng-dropdown [dataProvider]=\"selectionItemsDataProvider()\" [ngModel]=\"commons.appDataLocale()\" [showClear]=\"false\" (valueChange)=\"updateDataLocale($event)\"></mng-dropdown>\n", dependencies: [{ kind: "component", type: DropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "options", "optionsTrackProperty", "optionsLabelProperty", "optionsLabelTranslate", "optionsValueProperty", "optionsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur", "loading", "disabled", "allowInput", "appendTo", "inlineSearch", "searchTrim"], outputs: ["valueChange", "blur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: DataLanguageDropdownComponent, decorators: [{
32
32
  type: Component,
33
33
  args: [{ standalone: true, selector: 'mng-data-language-dropdown', imports: [DropdownComponent, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-dropdown [dataProvider]=\"selectionItemsDataProvider()\" [ngModel]=\"commons.appDataLocale()\" [showClear]=\"false\" (valueChange)=\"updateDataLocale($event)\"></mng-dropdown>\n" }]
34
34
  }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYW5ndWFnZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2FjdGlvbi9jb21wb25lbnRzL2xvY2FsaXphdGlvbi9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvbG9jYWxpemF0aW9uL2RhdGEtbGFuZ3VhZ2UtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUErQixjQUFjLEVBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQXlCLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHM0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOzs7QUFTcEUsTUFBTSxPQUFPLDZCQUE2QjtJQVAxQztRQVFxQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN6RCxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO1FBQ25ELGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFjLENBQUM7UUFDMUMsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUssQ0FBQztRQUMzQixXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDcEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUVwQyxZQUFPLEdBQUcsTUFBTSxFQUF1QixDQUFDO1FBRS9DLHNCQUFzQjtRQUNmLCtCQUEwQixHQUFHLFFBQVEsQ0FBaUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FNeEs7SUFKVSxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBbkJRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDIyQkNuQjFDLHdMQUNBLDRDRGNjLGlCQUFpQixtWkFBRSxXQUFXOzsyRkFJL0IsNkJBQTZCO2tCQVB6QyxTQUFTO2lDQUNNLElBQUksWUFDTiw0QkFBNEIsV0FDN0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25QYXJhbWV0ZXJzLCBDb21tb25zU2VydmljZSwgSWRUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtJztcbmltcG9ydCB7TG9va3VwRGF0YVByb3ZpZGVySW5zdCwgbG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3QsIElBY3Rpb25Db21wb25lbnR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZGF0YS1sYW5ndWFnZS1kcm9wZG93bicsXG4gICAgaW1wb3J0czogW0Ryb3Bkb3duQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICdkYXRhLWxhbmd1YWdlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIElBY3Rpb25Db21wb25lbnQ8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG5cbiAgICBwdWJsaWMgYWN0aW9uID0gaW5wdXQucmVxdWlyZWQ8QWN0aW9uRGVzY3JpcHRvckluc3Q8VD4+KCk7XG4gICAgcHVibGljIGFjdGlvbkRhdGEgPSBpbnB1dC5yZXF1aXJlZDxBY3Rpb25EYXRhPigpO1xuICAgIHB1YmxpYyBpdGVtID0gaW5wdXQucmVxdWlyZWQ8VD4oKTtcbiAgICBwdWJsaWMgaXRlbUlkID0gaW5wdXQucmVxdWlyZWQ8SWRUeXBlPigpO1xuICAgIHB1YmxpYyBlbmFibGVkID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG5cbiAgICBwdWJsaWMgdHJpZ2dlciA9IG91dHB1dDxBY3Rpb25QYXJhbWV0ZXJzPFQ+PigpO1xuXG4gICAgLy8gZHJvcGRvd24gcHJvcGVydGllc1xuICAgIHB1YmxpYyBzZWxlY3Rpb25JdGVtc0RhdGFQcm92aWRlciA9IGNvbXB1dGVkPExvb2t1cERhdGFQcm92aWRlckluc3Q8c3RyaW5nPj4oKCkgPT4gbG9va3VwRGF0YVByb3ZpZGVyPHN0cmluZz4oKS53aXRoTG9va3VwKCgpID0+IG9mKHRoaXMuY29tbW9ucy5hcHBEYXRhTG9jYWxlcygpKSkpO1xuXG4gICAgcHVibGljIHVwZGF0ZURhdGFMb2NhbGUoZGF0YUxhbmc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1vbnMuc2V0QXBwRGF0YUxvY2FsZShkYXRhTGFuZyk7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgIH1cbn1cbiIsIjxtbmctZHJvcGRvd24gW2RhdGFQcm92aWRlcl09XCJzZWxlY3Rpb25JdGVtc0RhdGFQcm92aWRlcigpXCIgW25nTW9kZWxdPVwiY29tbW9ucy5hcHBEYXRhTG9jYWxlKClcIiBbc2hvd0NsZWFyXT1cImZhbHNlXCIgKHZhbHVlQ2hhbmdlKT1cInVwZGF0ZURhdGFMb2NhbGUoJGV2ZW50KVwiPjwvbW5nLWRyb3Bkb3duPlxuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYW5ndWFnZS1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvc3JjL2FjdGlvbi9jb21wb25lbnRzL2xvY2FsaXphdGlvbi9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvYWN0aW9uL2NvbXBvbmVudHMvbG9jYWxpemF0aW9uL2RhdGEtbGFuZ3VhZ2UtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUErQixjQUFjLEVBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQXlCLGtCQUFrQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHM0YsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOzs7QUFTcEUsTUFBTSxPQUFPLDZCQUE2QjtJQVAxQztRQVFxQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN6RCxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUEyQixDQUFDO1FBQ25ELGVBQVUsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFjLENBQUM7UUFDMUMsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUssQ0FBQztRQUMzQixXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFDcEMsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVcsQ0FBQztRQUVwQyxZQUFPLEdBQUcsTUFBTSxFQUF1QixDQUFDO1FBRS9DLHNCQUFzQjtRQUNmLCtCQUEwQixHQUFHLFFBQVEsQ0FBaUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLEVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FNeEs7SUFKVSxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBbkJRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDIyQkNuQjFDLHdMQUNBLDRDRGNjLGlCQUFpQiwrYkFBRSxXQUFXOzsyRkFJL0IsNkJBQTZCO2tCQVB6QyxTQUFTO2lDQUNNLElBQUksWUFDTiw0QkFBNEIsV0FDN0IsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0LCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25QYXJhbWV0ZXJzLCBDb21tb25zU2VydmljZSwgSWRUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtEcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtJztcbmltcG9ydCB7TG9va3VwRGF0YVByb3ZpZGVySW5zdCwgbG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3QsIElBY3Rpb25Db21wb25lbnR9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Vmlld0NvbnRhaW5lcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctZGF0YS1sYW5ndWFnZS1kcm9wZG93bicsXG4gICAgaW1wb3J0czogW0Ryb3Bkb3duQ29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICdkYXRhLWxhbmd1YWdlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhTGFuZ3VhZ2VEcm9wZG93bkNvbXBvbmVudDxUID0gYW55PiBpbXBsZW1lbnRzIElBY3Rpb25Db21wb25lbnQ8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG5cbiAgICBwdWJsaWMgYWN0aW9uID0gaW5wdXQucmVxdWlyZWQ8QWN0aW9uRGVzY3JpcHRvckluc3Q8VD4+KCk7XG4gICAgcHVibGljIGFjdGlvbkRhdGEgPSBpbnB1dC5yZXF1aXJlZDxBY3Rpb25EYXRhPigpO1xuICAgIHB1YmxpYyBpdGVtID0gaW5wdXQucmVxdWlyZWQ8VD4oKTtcbiAgICBwdWJsaWMgaXRlbUlkID0gaW5wdXQucmVxdWlyZWQ8SWRUeXBlPigpO1xuICAgIHB1YmxpYyBlbmFibGVkID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG5cbiAgICBwdWJsaWMgdHJpZ2dlciA9IG91dHB1dDxBY3Rpb25QYXJhbWV0ZXJzPFQ+PigpO1xuXG4gICAgLy8gZHJvcGRvd24gcHJvcGVydGllc1xuICAgIHB1YmxpYyBzZWxlY3Rpb25JdGVtc0RhdGFQcm92aWRlciA9IGNvbXB1dGVkPExvb2t1cERhdGFQcm92aWRlckluc3Q8c3RyaW5nPj4oKCkgPT4gbG9va3VwRGF0YVByb3ZpZGVyPHN0cmluZz4oKS53aXRoTG9va3VwKCgpID0+IG9mKHRoaXMuY29tbW9ucy5hcHBEYXRhTG9jYWxlcygpKSkpO1xuXG4gICAgcHVibGljIHVwZGF0ZURhdGFMb2NhbGUoZGF0YUxhbmc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbW1vbnMuc2V0QXBwRGF0YUxvY2FsZShkYXRhTGFuZyk7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lcj8ucmVsb2FkVGFibGUoe30pO1xuICAgIH1cbn1cbiIsIjxtbmctZHJvcGRvd24gW2RhdGFQcm92aWRlcl09XCJzZWxlY3Rpb25JdGVtc0RhdGFQcm92aWRlcigpXCIgW25nTW9kZWxdPVwiY29tbW9ucy5hcHBEYXRhTG9jYWxlKClcIiBbc2hvd0NsZWFyXT1cImZhbHNlXCIgKHZhbHVlQ2hhbmdlKT1cInVwZGF0ZURhdGFMb2NhbGUoJGV2ZW50KVwiPjwvbW5nLWRyb3Bkb3duPlxuIl19
@@ -22,7 +22,6 @@ export class FieldManyToManyEditorDescriptor extends AFieldDescriptor {
22
22
  this._hasLookupExcludeValues = false;
23
23
  this._excludeFilterProperty = '';
24
24
  this._excludeValueProperty = '';
25
- this._searchEnabled = false;
26
25
  this._mainTableDescriptor = mainTableDescriptor;
27
26
  this._lookupTableDescriptor = lookupTableDescriptor;
28
27
  if (cfg?.lookupDataProvider) {
@@ -56,12 +55,6 @@ export class FieldManyToManyEditorDescriptor extends AFieldDescriptor {
56
55
  get lookupTableDataProvider() {
57
56
  return this._lookupTableDataProvider;
58
57
  }
59
- get searchEnabled() {
60
- return this._searchEnabled;
61
- }
62
- get searchFields() {
63
- return this._searchFields;
64
- }
65
58
  withLookup(fn) {
66
59
  this._lookupTableDataProvider.withGetAll(fn);
67
60
  return this;
@@ -79,12 +72,20 @@ export class FieldManyToManyEditorDescriptor extends AFieldDescriptor {
79
72
  this._excludeValueProperty = valueProperty;
80
73
  return this;
81
74
  }
75
+ /**
76
+ * @deprecated Use directly on lookup table descriptor.
77
+ */
82
78
  withSearch(enabled = true, searchFields) {
83
79
  return this.withSearchUnsafe(enabled, searchFields);
84
80
  }
81
+ /**
82
+ * @deprecated Use directly on lookup table descriptor.
83
+ */
85
84
  withSearchUnsafe(enabled = true, searchFields) {
86
- this._searchEnabled = enabled;
87
- this._searchFields = searchFields;
85
+ this.lookupTableDescriptor.withSearchUnsafe(enabled, {
86
+ fields: searchFields,
87
+ limitMaxWords: 100
88
+ });
88
89
  return this;
89
90
  }
90
91
  copy() {
@@ -153,4 +154,4 @@ export class FieldManyEditorDescriptor extends AFieldDescriptor {
153
154
  return field;
154
155
  }
155
156
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFueS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLW1hbnkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9ELHFCQUFxQixFQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBSS9JLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSwrQkFBK0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pKLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBV3pELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQXNCLHFCQUE4RSxFQUFFLEVBQUU7SUFDcEosTUFBTSxHQUFHLEdBQStFLEVBQUUsQ0FBQztJQUMzRixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBdUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxRCxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLGtCQUFrQixHQUFHLHFCQUFnRSxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLGlCQUFpQixHQUFHLHFCQUFrRCxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQWtJLFNBQVEsZ0JBS3RKO0lBWUcsWUFDSSxRQUFnQixFQUNoQixtQkFBb0QsRUFDcEQscUJBQXNELEVBQ3RELEdBQTZFO1FBRTdFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWRaLGVBQVUsR0FBa0MsNkJBQTZCLENBQUMsc0JBQXNCLENBQUM7UUFDakcsYUFBUSxHQUEyQyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQyxNQUFNLENBQUMs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QUcsSUFBSSx5QkFBeUIsQ0FBeUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0SixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRGF0YVByb3ZpZGVyLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckluc3QsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0sIEZpZWxkTWFueUVkaXRvclR5cGVFbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBsb29rdXBTZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgbG9va3VwRGF0YVByb3ZpZGVyPzogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRNYW55VG9NYW55RWRpdG9yUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqID0gPEZpZWxkTW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEZpZWxkTWFueVRvTWFueUVkaXRvclByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPikgPT4ge1xuICAgIGNvbnN0IGNmZzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcubG9va3VwRGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNmZy5sb29rdXBTZXJ2aWNlVHlwZSA9IHNlcnZpY2VPckRhdGFQcm92aWRlciBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSA9IGFueSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD47IC8vIHRhYmxlIGRlc2NyaXB0b3IgZm9yIG1haW4gdGFibGUgY29tcG9uZW50XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+OyAvLyB0YWJsZSBkZXNjcmlwdG9yIGZvciB3aGVyZSBzZWxlY3Qgd2lsbCBiZSBhcHBsaWVkXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55VG9NYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nVGFibGVNdWx0aXNlbGVjdDtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCwgRmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bS5EZWxldGVdO1xuICAgIHByaXZhdGUgX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSAnJztcbiAgICBwcml2YXRlIF9leGNsdWRlVmFsdWVQcm9wZXJ0eSA9ICcnO1xuICAgIHByaXZhdGUgX3NlYXJjaEVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zZWFyY2hGaWVsZHM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBtYWluVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+LFxuICAgICAgICBsb29rdXBUYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGNmZz86IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fbWFpblRhYmxlRGVzY3JpcHRvciA9IG1haW5UYWJsZURlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGVzY3JpcHRvciA9IGxvb2t1cFRhYmxlRGVzY3JpcHRvcjtcblxuICAgICAgICBpZiAoY2ZnPy5sb29rdXBEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGF0YVByb3ZpZGVyID0gY2ZnLmxvb2t1cERhdGFQcm92aWRlcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGF0YVByb3ZpZGVyID0gbmV3IFRhYmxlRGF0YVByb3ZpZGVySW5zdChsb29rdXBUYWJsZURlc2NyaXB0b3IubW9kZWwudHlwZSwgY2ZnPy5sb29rdXBTZXJ2aWNlVHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpZWxkVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzTG9va3VwRXhjbHVkZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBleGNsdWRlRmlsdGVyUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leGNsdWRlRmlsdGVyUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBleGNsdWRlVmFsdWVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWFpblRhYmxlRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb29rdXBUYWJsZURlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXBUYWJsZURlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb29rdXBUYWJsZURhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFRhYmxlRGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VhcmNoRW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZWFyY2hGaWVsZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hGaWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXAoZm46IFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGF0YVByb3ZpZGVyLndpdGhHZXRBbGwoZm4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFjdGlvbnMoYWN0aW9uczogQXJyYXk8RmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjdGlvbnMucHVzaCguLi5hY3Rpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXBFeGNsdWRlKGZpbHRlclByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCB2YWx1ZVByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCBoYXNMb29rdXBFeGNsdWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoTG9va3VwRXhjbHVkZVVuc2FmZShmaWx0ZXJQcm9wZXJ0eSBhcyBzdHJpbmcsIHZhbHVlUHJvcGVydHkgYXMgc3RyaW5nLCBoYXNMb29rdXBFeGNsdWRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cEV4Y2x1ZGVVbnNhZmUoZmlsdGVyUHJvcGVydHk6IHN0cmluZywgdmFsdWVQcm9wZXJ0eTogc3RyaW5nLCBoYXNMb29rdXBFeGNsdWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gaGFzTG9va3VwRXhjbHVkZTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZUZpbHRlclByb3BlcnR5ID0gZmlsdGVyUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdmFsdWVQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTZWFyY2goZW5hYmxlZCA9IHRydWUsIHNlYXJjaEZpZWxkcz86IChrZXlvZiBGaWVsZE1vZGVsKVtdKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTZWFyY2hVbnNhZmUoZW5hYmxlZCwgc2VhcmNoRmllbGRzIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNlYXJjaFVuc2FmZShlbmFibGVkID0gdHJ1ZSwgc2VhcmNoRmllbGRzPzogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX3NlYXJjaEZpZWxkcyA9IHNlYXJjaEZpZWxkcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KFxuICAgICAgICAgICAgdGhpcy5fcHJvcGVydHksXG4gICAgICAgICAgICB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yLmNvcHkoKSxcbiAgICAgICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGVzY3JpcHRvci5jb3B5KCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbG9va3VwRGF0YVByb3ZpZGVyOiB0aGlzLmxvb2t1cFRhYmxlRGF0YVByb3ZpZGVyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2ZpZWxkVHlwZSA9IHRoaXMuX2ZpZWxkVHlwZTtcbiAgICAgICAgZmllbGQuX2FjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcChhID0+IGEpO1xuICAgICAgICBmaWVsZC5faGFzTG9va3VwRXhjbHVkZVZhbHVlcyA9IHRoaXMuX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXM7XG4gICAgICAgIGZpZWxkLl9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSB0aGlzLl9leGNsdWRlRmlsdGVyUHJvcGVydHk7XG4gICAgICAgIGZpZWxkLl9leGNsdWRlVmFsdWVQcm9wZXJ0eSA9IHRoaXMuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBFZGl0b3JNb2RlbD47XG4gICAgcHJpdmF0ZSBfZmllbGRUeXBlOiBGaWVsZE1hbnlFZGl0b3JUeXBlRW51bSA9IEZpZWxkTWFueUVkaXRvclR5cGVFbnVtLkRpYWxvZ0VkaXRvcjtcbiAgICBwcml2YXRlIF9maWVsZEFjdGlvbnM6IEFycmF5PEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0+ID0gW107XG4gICAgcHJpdmF0ZSBfYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4+ID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nLCB0YWJsZXZpZXdEZXNjcmlwdG9yOiBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsLCBhbnksIGFueSwgRWRpdG9yTW9kZWw+KSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvciA9IHRhYmxldmlld0Rlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2ZpZWxkQWN0aW9ucy5wdXNoKEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uVmlldywgRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bS5BZGQsIEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0uRWRpdCwgRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bS5EZWxldGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRBY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRBY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZXZpZXdEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IudGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JDcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmFkZEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckZvclJlYWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmRldGFpbHNFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JGb3JVcGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmVkaXRFZGl0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWVsZEFjdGlvbihhY3Rpb246IEZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWVsZEFjdGlvbnMoYWN0aW9uczogRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bVtdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpZWxkQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWN0aW9uKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbmV3IEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3I8RmllbGRNb2RlbCwgRWRpdG9yTW9kZWwsIEZpZWxkVmFsdWUsIFBhcmVudEVkaXRvck1vZGVsPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci5jb3B5KCkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhmaWVsZCk7XG4gICAgICAgIGZpZWxkLl9maWVsZFR5cGUgPSB0aGlzLl9maWVsZFR5cGU7XG4gICAgICAgIGZpZWxkLl9maWVsZEFjdGlvbnMgPSB0aGlzLl9maWVsZEFjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFueS5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvZWRpdG9yL2Rlc2NyaXB0b3JzL2ZpZWxkLW1hbnkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQW9ELHFCQUFxQixFQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBSS9JLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSwrQkFBK0IsRUFBRSw2QkFBNkIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3pKLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBV3pELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQXNCLHFCQUE4RSxFQUFFLEVBQUU7SUFDcEosTUFBTSxHQUFHLEdBQStFLEVBQUUsQ0FBQztJQUMzRixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsSUFBSyxxQkFBdUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMxRCxxRkFBcUY7WUFDckYsR0FBRyxDQUFDLGtCQUFrQixHQUFHLHFCQUFnRSxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ0osR0FBRyxDQUFDLGlCQUFpQixHQUFHLHFCQUFrRCxDQUFDO1FBQy9FLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9BQU8sK0JBQWtJLFNBQVEsZ0JBS3RKO0lBVUcsWUFDSSxRQUFnQixFQUNoQixtQkFBb0QsRUFDcEQscUJBQXNELEVBQ3RELEdBQTZFO1FBRTdFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVpaLGVBQVUsR0FBa0MsNkJBQTZCLENBQUMsc0JBQXNCLENBQUM7UUFDakcsYUFBUSxHQUEyQyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSwrQkFBK0IsQ0FBQyxNQUFNLENBQUMs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QUN0SixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRGF0YVByb3ZpZGVyLCBTZXJ2aWNlQ2xhc3NUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJVGFibGVEYXRhUHJvdmlkZXIsIFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlLCBUYWJsZURhdGFQcm92aWRlckluc3QsIFRhYmxlRGVzY3JpcHRvckluc3R9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGUvYXBpJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7VGFibGV2aWV3RGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL3RhYmxldmlldy9kZXNjcmlwdG9ycy90YWJsZXZpZXcuZGVzY3JpcHRvcic7XG5pbXBvcnQge0ZpZWxkTWFueUVkaXRvckFjdGlvbkVudW0sIEZpZWxkTWFueUVkaXRvclR5cGVFbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLCBGaWVsZE1hbnlUb01hbnlFZGl0b3JUeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7QUZpZWxkRGVzY3JpcHRvcn0gZnJvbSAnLi9maWVsZC1iYXNlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgdHlwZSBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBsb29rdXBTZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgbG9va3VwRGF0YVByb3ZpZGVyPzogSVRhYmxlRGF0YVByb3ZpZGVyPEZpZWxkTW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRNYW55VG9NYW55RWRpdG9yUHJvdmlkZXJUeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNvbnN0IGZpZWxkTWFueVRvTWFueUdldFByb3ZpZGVyQ2ZnT2JqID0gPEZpZWxkTW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEZpZWxkTWFueVRvTWFueUVkaXRvclByb3ZpZGVyVHlwZTxGaWVsZE1vZGVsLCBTZXJ2aWNlPikgPT4ge1xuICAgIGNvbnN0IGNmZzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8RmllbGRNb2RlbCwgU2VydmljZT4gPSB7fTtcbiAgICBpZiAoc2VydmljZU9yRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgIGlmICgoc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElEYXRhUHJvdmlkZXIpLmlzRGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICAvLyB0eXBlIGNhc3RpbmcgbmVlZGVkLCBjYXVzZSB0aGVyZSB3YXMgbm8gb3RoZXIgd2F5IGZvdW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIHR5cGVzXG4gICAgICAgICAgICBjZmcubG9va3VwRGF0YVByb3ZpZGVyID0gc2VydmljZU9yRGF0YVByb3ZpZGVyIGFzIElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNmZy5sb29rdXBTZXJ2aWNlVHlwZSA9IHNlcnZpY2VPckRhdGFQcm92aWRlciBhcyBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjZmc7XG59O1xuXG5leHBvcnQgY2xhc3MgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgU2VydmljZSA9IGFueSwgRmllbGRWYWx1ZSA9IEZpZWxkTW9kZWxbXSwgUGFyZW50RWRpdG9yTW9kZWwgPSB1bmRlZmluZWQ+IGV4dGVuZHMgQUZpZWxkRGVzY3JpcHRvcjxcbiAgICBGaWVsZE1vZGVsLFxuICAgIEVkaXRvck1vZGVsLFxuICAgIEZpZWxkVmFsdWUsXG4gICAgUGFyZW50RWRpdG9yTW9kZWxcbj4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD47IC8vIHRhYmxlIGRlc2NyaXB0b3IgZm9yIG1haW4gdGFibGUgY29tcG9uZW50XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWw+OyAvLyB0YWJsZSBkZXNjcmlwdG9yIGZvciB3aGVyZSBzZWxlY3Qgd2lsbCBiZSBhcHBsaWVkXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9va3VwVGFibGVEYXRhUHJvdmlkZXI6IElUYWJsZURhdGFQcm92aWRlcjxGaWVsZE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueVRvTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55VG9NYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nVGFibGVNdWx0aXNlbGVjdDtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtPiA9IFtGaWVsZE1hbnlUb01hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCwgRmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bS5EZWxldGVdO1xuICAgIHByaXZhdGUgX2hhc0xvb2t1cEV4Y2x1ZGVWYWx1ZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leGNsdWRlRmlsdGVyUHJvcGVydHkgPSAnJztcbiAgICBwcml2YXRlIF9leGNsdWRlVmFsdWVQcm9wZXJ0eSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIG1haW5UYWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbD4sXG4gICAgICAgIGxvb2t1cFRhYmxlRGVzY3JpcHRvcjogVGFibGVEZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPixcbiAgICAgICAgY2ZnPzogRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8RmllbGRNb2RlbCwgU2VydmljZT5cbiAgICApIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9tYWluVGFibGVEZXNjcmlwdG9yID0gbWFpblRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yID0gbG9va3VwVGFibGVEZXNjcmlwdG9yO1xuXG4gICAgICAgIGlmIChjZmc/Lmxvb2t1cERhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBjZmcubG9va3VwRGF0YVByb3ZpZGVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXIgPSBuZXcgVGFibGVEYXRhUHJvdmlkZXJJbnN0KGxvb2t1cFRhYmxlRGVzY3JpcHRvci5tb2RlbC50eXBlLCBjZmc/Lmxvb2t1cFNlcnZpY2VUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmllbGRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNMb29rdXBFeGNsdWRlVmFsdWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTG9va3VwRXhjbHVkZVZhbHVlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV4Y2x1ZGVWYWx1ZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYWluVGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFpblRhYmxlRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvb2t1cFRhYmxlRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvb2t1cFRhYmxlRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvb2t1cFRhYmxlRGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9va3VwVGFibGVEYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXAoZm46IFRhYmxlRGF0YVByb3ZpZGVyR2V0QWxsRm5UeXBlPEZpZWxkTW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cFRhYmxlRGF0YVByb3ZpZGVyLndpdGhHZXRBbGwoZm4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFjdGlvbnMoYWN0aW9uczogQXJyYXk8RmllbGRNYW55VG9NYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjdGlvbnMucHVzaCguLi5hY3Rpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXBFeGNsdWRlKGZpbHRlclByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCB2YWx1ZVByb3BlcnR5OiBrZXlvZiBGaWVsZE1vZGVsLCBoYXNMb29rdXBFeGNsdWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoTG9va3VwRXhjbHVkZVVuc2FmZShmaWx0ZXJQcm9wZXJ0eSBhcyBzdHJpbmcsIHZhbHVlUHJvcGVydHkgYXMgc3RyaW5nLCBoYXNMb29rdXBFeGNsdWRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvb2t1cEV4Y2x1ZGVVbnNhZmUoZmlsdGVyUHJvcGVydHk6IHN0cmluZywgdmFsdWVQcm9wZXJ0eTogc3RyaW5nLCBoYXNMb29rdXBFeGNsdWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gaGFzTG9va3VwRXhjbHVkZTtcbiAgICAgICAgdGhpcy5fZXhjbHVkZUZpbHRlclByb3BlcnR5ID0gZmlsdGVyUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdmFsdWVQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGRpcmVjdGx5IG9uIGxvb2t1cCB0YWJsZSBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoU2VhcmNoKGVuYWJsZWQgPSB0cnVlLCBzZWFyY2hGaWVsZHM/OiAoa2V5b2YgRmllbGRNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU2VhcmNoVW5zYWZlKGVuYWJsZWQsIHNlYXJjaEZpZWxkcyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGRpcmVjdGx5IG9uIGxvb2t1cCB0YWJsZSBkZXNjcmlwdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoU2VhcmNoVW5zYWZlKGVuYWJsZWQgPSB0cnVlLCBzZWFyY2hGaWVsZHM/OiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLmxvb2t1cFRhYmxlRGVzY3JpcHRvci53aXRoU2VhcmNoVW5zYWZlKGVuYWJsZWQsIHtcbiAgICAgICAgICAgIGZpZWxkczogc2VhcmNoRmllbGRzLFxuICAgICAgICAgICAgbGltaXRNYXhXb3JkczogMTAwXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IG5ldyBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBTZXJ2aWNlLCBGaWVsZFZhbHVlLCBQYXJlbnRFZGl0b3JNb2RlbD4oXG4gICAgICAgICAgICB0aGlzLl9wcm9wZXJ0eSxcbiAgICAgICAgICAgIHRoaXMuX21haW5UYWJsZURlc2NyaXB0b3IuY29weSgpLFxuICAgICAgICAgICAgdGhpcy5fbG9va3VwVGFibGVEZXNjcmlwdG9yLmNvcHkoKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsb29rdXBEYXRhUHJvdmlkZXI6IHRoaXMubG9va3VwVGFibGVEYXRhUHJvdmlkZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZmllbGQpO1xuICAgICAgICBmaWVsZC5fZmllbGRUeXBlID0gdGhpcy5fZmllbGRUeXBlO1xuICAgICAgICBmaWVsZC5fYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMubWFwKGEgPT4gYSk7XG4gICAgICAgIGZpZWxkLl9oYXNMb29rdXBFeGNsdWRlVmFsdWVzID0gdGhpcy5faGFzTG9va3VwRXhjbHVkZVZhbHVlcztcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eSA9IHRoaXMuX2V4Y2x1ZGVGaWx0ZXJQcm9wZXJ0eTtcbiAgICAgICAgZmllbGQuX2V4Y2x1ZGVWYWx1ZVByb3BlcnR5ID0gdGhpcy5fZXhjbHVkZVZhbHVlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yPEZpZWxkTW9kZWwsIEVkaXRvck1vZGVsLCBGaWVsZFZhbHVlID0gRmllbGRNb2RlbFtdLCBQYXJlbnRFZGl0b3JNb2RlbCA9IHVuZGVmaW5lZD4gZXh0ZW5kcyBBRmllbGREZXNjcmlwdG9yPFxuICAgIEZpZWxkTW9kZWwsXG4gICAgRWRpdG9yTW9kZWwsXG4gICAgRmllbGRWYWx1ZSxcbiAgICBQYXJlbnRFZGl0b3JNb2RlbFxuPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGV2aWV3RGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvckluc3Q8RmllbGRNb2RlbCwgYW55LCBhbnksIEVkaXRvck1vZGVsPjtcbiAgICBwcml2YXRlIF9maWVsZFR5cGU6IEZpZWxkTWFueUVkaXRvclR5cGVFbnVtID0gRmllbGRNYW55RWRpdG9yVHlwZUVudW0uRGlhbG9nRWRpdG9yO1xuICAgIHByaXZhdGUgX2ZpZWxkQWN0aW9uczogQXJyYXk8RmllbGRNYW55RWRpdG9yQWN0aW9uRW51bT4gPSBbXTtcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPj4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcsIHRhYmxldmlld0Rlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PEZpZWxkTW9kZWwsIGFueSwgYW55LCBFZGl0b3JNb2RlbD4pIHtcbiAgICAgICAgc3VwZXIocHJvcGVydHkpO1xuICAgICAgICB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yID0gdGFibGV2aWV3RGVzY3JpcHRvcjtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25zLnB1c2goRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bS5WaWV3LCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkFkZCwgRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bS5FZGl0LCBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtLkRlbGV0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWVsZEFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZEFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxldmlld0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGVEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3RGVzY3JpcHRvci50YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckZvckNyZWF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IuYWRkRWRpdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRm9yUmVhZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IuZGV0YWlsc0VkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckZvclVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0Rlc2NyaXB0b3IuZWRpdEVkaXRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkQWN0aW9uKGFjdGlvbjogRmllbGRNYW55RWRpdG9yQWN0aW9uRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWVsZEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpZWxkQWN0aW9ucyhhY3Rpb25zOiBGaWVsZE1hbnlFZGl0b3JBY3Rpb25FbnVtW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmllbGRBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxGaWVsZE1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBuZXcgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcjxGaWVsZE1vZGVsLCBFZGl0b3JNb2RlbCwgRmllbGRWYWx1ZSwgUGFyZW50RWRpdG9yTW9kZWw+KHRoaXMuX3Byb3BlcnR5LCB0aGlzLl90YWJsZXZpZXdEZXNjcmlwdG9yLmNvcHkoKSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGZpZWxkKTtcbiAgICAgICAgZmllbGQuX2ZpZWxkVHlwZSA9IHRoaXMuX2ZpZWxkVHlwZTtcbiAgICAgICAgZmllbGQuX2ZpZWxkQWN0aW9ucyA9IHRoaXMuX2ZpZWxkQWN0aW9ucy5tYXAoYSA9PiBhKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbn1cbiJdfQ==