@bnsights/bbsf-controls 1.0.85 → 1.0.87

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 (219) hide show
  1. package/README.md +6 -1
  2. package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -1
  4. package/esm2020/bnsights-bbsf-controls.mjs +5 -0
  5. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
  6. package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
  7. package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
  8. package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
  9. package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
  10. package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
  11. package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
  12. package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
  13. package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
  14. package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
  15. package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
  16. package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
  17. package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
  18. package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
  19. package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
  20. package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
  21. package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
  22. package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
  23. package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
  24. package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
  25. package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
  26. package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
  27. package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
  28. package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
  29. package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
  30. package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
  31. package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
  32. package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
  33. package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
  34. package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
  35. package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
  36. package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
  37. package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
  38. package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
  39. package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
  40. package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
  41. package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +0 -0
  42. package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
  43. package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
  44. package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
  45. package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
  46. package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
  47. package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
  48. package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
  49. package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
  50. package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
  51. package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
  52. package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
  53. package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
  54. package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
  55. package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
  56. package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
  57. package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
  58. package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
  59. package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
  60. package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
  61. package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
  62. package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
  63. package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
  64. package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
  65. package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
  66. package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
  67. package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
  68. package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
  69. package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
  70. package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
  71. package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
  72. package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
  73. package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
  74. package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
  75. package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
  76. package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
  77. package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
  78. package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
  79. package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
  80. package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
  81. package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +1 -1
  82. package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
  83. package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
  84. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
  85. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
  86. package/esm2020/lib/Shared/components/app-base-component.mjs +198 -0
  87. package/esm2020/lib/Shared/components/ng-tag-input.mjs +336 -0
  88. package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
  89. package/esm2020/lib/Shared/default_intl.mjs +29 -0
  90. package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
  91. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
  92. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  93. package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
  94. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +137 -0
  95. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +245 -0
  96. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +172 -0
  97. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +114 -0
  98. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
  99. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +217 -0
  100. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +179 -0
  101. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +453 -0
  102. package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
  103. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +223 -0
  104. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  105. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
  106. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  107. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +427 -0
  108. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +426 -0
  109. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
  110. package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
  111. package/esm2020/lib/controls/Phone/Phone.component.mjs +124 -0
  112. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +354 -0
  113. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +106 -0
  114. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +132 -0
  115. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
  116. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
  117. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
  118. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
  119. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +268 -0
  120. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +192 -0
  121. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +266 -0
  122. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +84 -0
  123. package/esm2020/lib/controls/bbsf-controls.module.mjs +401 -0
  124. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
  125. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  126. package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +1872 -1625
  127. package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
  128. package/fesm2020/bnsights-bbsf-controls.mjs +8938 -0
  129. package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
  130. package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
  131. package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
  132. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
  133. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
  134. package/lib/Shared/components/app-base-component.d.ts +3 -0
  135. package/lib/Shared/components/ng-tag-input.d.ts +3 -0
  136. package/lib/Shared/default_intl.d.ts +3 -0
  137. package/lib/Shared/services/ControlUtility.d.ts +3 -0
  138. package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
  139. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
  140. package/lib/Shared/services/render-component-service.service.d.ts +3 -0
  141. package/lib/Shared/services/validationErrorMassage.service.d.ts +3 -0
  142. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +4 -0
  143. package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
  144. package/lib/controls/CheckBox/CheckBox.component.d.ts +4 -0
  145. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
  146. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +8 -2
  147. package/lib/controls/DropdownList/DropdownList.component.d.ts +4 -0
  148. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +5 -0
  149. package/lib/controls/Form/Form.component.d.ts +3 -0
  150. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +4 -0
  151. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
  152. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
  153. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
  154. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
  155. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
  156. package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
  157. package/lib/controls/Paging/Paging.component.d.ts +3 -0
  158. package/lib/controls/Phone/Phone.component.d.ts +7 -1
  159. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
  160. package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
  161. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +4 -0
  162. package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
  163. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  164. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
  165. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
  166. package/lib/controls/TagsInput/TagsInput.component.d.ts +4 -0
  167. package/lib/controls/TextArea/TextArea.component.d.ts +4 -0
  168. package/lib/controls/TextBox/TextBox.component.d.ts +4 -0
  169. package/lib/controls/Toggleslide/toggleslide.component.d.ts +4 -0
  170. package/lib/controls/bbsf-controls.module.d.ts +74 -0
  171. package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
  172. package/package.json +20 -8
  173. package/bnsights-bbsf-controls-1.0.85.tgz +0 -0
  174. package/bnsights-bbsf-controls.metadata.json +0 -1
  175. package/bundles/bnsights-bbsf-controls.umd.js +0 -9326
  176. package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
  177. package/esm2015/bnsights-bbsf-controls.js +0 -6
  178. package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
  179. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
  180. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
  181. package/esm2015/lib/Shared/components/app-base-component.js +0 -198
  182. package/esm2015/lib/Shared/components/ng-tag-input.js +0 -323
  183. package/esm2015/lib/Shared/default_intl.js +0 -29
  184. package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
  185. package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
  186. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
  187. package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
  188. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -137
  189. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -248
  190. package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -176
  191. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -114
  192. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
  193. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -215
  194. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -178
  195. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -347
  196. package/esm2015/lib/controls/Form/Form.component.js +0 -106
  197. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -222
  198. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
  199. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
  200. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
  201. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -430
  202. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -429
  203. package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
  204. package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
  205. package/esm2015/lib/controls/Phone/Phone.component.js +0 -119
  206. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -349
  207. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -108
  208. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -131
  209. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
  210. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
  211. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
  212. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
  213. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -268
  214. package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -191
  215. package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -262
  216. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -83
  217. package/esm2015/lib/controls/bbsf-controls.module.js +0 -243
  218. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
  219. package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
@@ -0,0 +1,156 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class JwPaginationComponent {
5
+ constructor() {
6
+ this.changePage = new EventEmitter();
7
+ this.initialPage = 1;
8
+ this.pageSize = 10;
9
+ this.maxPages = 10;
10
+ this.ShowFirstAndLast = false;
11
+ this.pager = {};
12
+ }
13
+ ngOnInit() {
14
+ // set page if items array isn't empty
15
+ if (this.items && this.items.length) {
16
+ this.setPage(this.initialPage);
17
+ }
18
+ }
19
+ ngOnChanges(changes) {
20
+ if (changes.items.firstChange)
21
+ return;
22
+ // reset page if items array has changed
23
+ if (changes.items.currentValue !== changes.items.previousValue) {
24
+ this.setPage(this.initialPage);
25
+ }
26
+ }
27
+ setPage(page) {
28
+ // get new pager object for specified page
29
+ this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);
30
+ // get new page of items from items array
31
+ var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);
32
+ // call change page function in parent component
33
+ this.changePage.emit(this.pager.currentPage);
34
+ }
35
+ paginate(totalItems, currentPage, pageSize, maxPages) {
36
+ if (currentPage === void 0) {
37
+ currentPage = 1;
38
+ }
39
+ if (pageSize === void 0) {
40
+ pageSize = 10;
41
+ }
42
+ if (maxPages === void 0) {
43
+ maxPages = 10;
44
+ }
45
+ // calculate total pages
46
+ var totalPages = Math.ceil(totalItems / pageSize);
47
+ // ensure current page isn't out of range
48
+ if (currentPage < 1) {
49
+ currentPage = 1;
50
+ }
51
+ else if (currentPage > totalPages) {
52
+ currentPage = totalPages;
53
+ }
54
+ var startPage, endPage;
55
+ if (totalPages <= maxPages) {
56
+ // total pages less than max so show all pages
57
+ startPage = 1;
58
+ endPage = totalPages;
59
+ }
60
+ else {
61
+ // total pages more than max so calculate start and end pages
62
+ var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);
63
+ var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;
64
+ if (currentPage <= maxPagesBeforeCurrentPage) {
65
+ // current page near the start
66
+ startPage = 1;
67
+ endPage = maxPages;
68
+ }
69
+ else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {
70
+ // current page near the end
71
+ startPage = totalPages - maxPages + 1;
72
+ endPage = totalPages;
73
+ }
74
+ else {
75
+ // current page somewhere in the middle
76
+ startPage = currentPage - maxPagesBeforeCurrentPage;
77
+ endPage = currentPage + maxPagesAfterCurrentPage;
78
+ }
79
+ }
80
+ // calculate start and end item indexes
81
+ var startIndex = (currentPage - 1) * pageSize;
82
+ var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
83
+ // create an array of pages to ng-repeat in the pager control
84
+ var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });
85
+ // return object with all pager properties required by the view
86
+ return {
87
+ totalItems: totalItems,
88
+ currentPage: currentPage,
89
+ pageSize: pageSize,
90
+ totalPages: totalPages,
91
+ startPage: startPage,
92
+ endPage: endPage,
93
+ startIndex: startIndex,
94
+ endIndex: endIndex,
95
+ pages: pages
96
+ };
97
+ }
98
+ }
99
+ JwPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: JwPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
100
+ JwPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: JwPaginationComponent, selector: "jw-pagination", inputs: { items: "items", initialPage: "initialPage", pageSize: "pageSize", maxPages: "maxPages", ShowFirstAndLast: "ShowFirstAndLast" }, outputs: { changePage: "changePage" }, usesOnChanges: true, ngImport: i0, template: `
101
+ <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
102
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
103
+ <a (click)="setPage(1)" class="page-link">❮❮</a>
104
+ </li>
105
+ <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
106
+ <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
107
+ </li>
108
+ <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
109
+ <a (click)="setPage(page)" class="page-link">{{page}}</a>
110
+ </li>
111
+ <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
112
+ <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
113
+ </li>
114
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
115
+ <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
116
+ </li>
117
+ </ul>
118
+ `, isInline: true, directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: JwPaginationComponent, decorators: [{
120
+ type: Component,
121
+ args: [{
122
+ selector: 'jw-pagination',
123
+ template: `
124
+ <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
125
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
126
+ <a (click)="setPage(1)" class="page-link">❮❮</a>
127
+ </li>
128
+ <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
129
+ <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
130
+ </li>
131
+ <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
132
+ <a (click)="setPage(page)" class="page-link">{{page}}</a>
133
+ </li>
134
+ <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
135
+ <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
136
+ </li>
137
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
138
+ <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
139
+ </li>
140
+ </ul>
141
+ `
142
+ }]
143
+ }], propDecorators: { items: [{
144
+ type: Input
145
+ }], changePage: [{
146
+ type: Output
147
+ }], initialPage: [{
148
+ type: Input
149
+ }], pageSize: [{
150
+ type: Input
151
+ }], maxPages: [{
152
+ type: Input
153
+ }], ShowFirstAndLast: [{
154
+ type: Input
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSndQYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvSndQYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7O0FBeUJ6RyxNQUFNLE9BQU8scUJBQXFCO0lBdkJsQztRQXlCYyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUdsQyxVQUFLLEdBQVEsRUFBRSxDQUFDO0tBdUZuQjtJQXJGRyxRQUFRO1FBQ0osc0NBQXNDO1FBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVc7WUFDekIsT0FBTTtRQUNWLHdDQUF3QztRQUN4QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2hCLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElB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Q0FBQyxDQUFDLENBQUM7UUFDNUcsK0RBQStEO1FBQy9ELE9BQU87WUFDSCxVQUFVLEVBQUUsVUFBVTtZQUN0QixXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsUUFBUTtZQUNsQixVQUFVLEVBQUUsVUFBVTtZQUN0QixTQUFTLEVBQUUsU0FBUztZQUNwQixPQUFPLEVBQUUsT0FBTztZQUNoQixVQUFVLEVBQUUsVUFBVTtZQUN0QixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsS0FBSztTQUNmLENBQUM7SUFDTixDQUFDOzttSEE5RlEscUJBQXFCO3VHQUFyQixxQkFBcUIsMlBBckJwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JiOzRGQUdZLHFCQUFxQjtrQkF2QmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JiO2lCQUNBOzhCQUdZLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2p3LXBhZ2luYXRpb24nLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICA8dWwgKm5nSWY9XCJwYWdlci5wYWdlcyAmJiBwYWdlci5wYWdlcy5sZW5ndGhcIiBjbGFzcz1cInBhZ2luYXRpb25cIj5cclxuICA8bGkgKm5nSWY9XCJTaG93Rmlyc3RBbmRMYXN0XCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOnBhZ2VyLmN1cnJlbnRQYWdlID09PSAxfVwiIGNsYXNzPVwicGFnZS1pdGVtIGZpcnN0LWl0ZW1cIj5cclxuICAgICAgPGEgKGNsaWNrKT1cInNldFBhZ2UoMSlcIiBjbGFzcz1cInBhZ2UtbGlua1wiPuKdruKdrjwvYT5cclxuICA8L2xpPlxyXG4gIDxsaSBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6cGFnZXIuY3VycmVudFBhZ2UgPT09IDF9XCIgY2xhc3M9XCJwYWdlLWl0ZW0gcHJldmlvdXMtaXRlbVwiPlxyXG4gICAgICA8YSAoY2xpY2spPVwic2V0UGFnZShwYWdlci5jdXJyZW50UGFnZSAtIDEpXCIgY2xhc3M9XCJwYWdlLWxpbmtcIj7ina48L2E+XHJcbiAgPC9saT5cclxuICA8bGkgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXIucGFnZXNcIiBbbmdDbGFzc109XCJ7YWN0aXZlOnBhZ2VyLmN1cnJlbnRQYWdlID09PSBwYWdlfVwiIGNsYXNzPVwicGFnZS1pdGVtIG51bWJlci1pdGVtXCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJzZXRQYWdlKHBhZ2UpXCIgY2xhc3M9XCJwYWdlLWxpbmtcIj57e3BhZ2V9fTwvYT5cclxuICA8L2xpPlxyXG4gIDxsaSBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6cGFnZXIuY3VycmVudFBhZ2UgPT09IHBhZ2VyLnRvdGFsUGFnZXN9XCIgY2xhc3M9XCJwYWdlLWl0ZW0gbmV4dC1pdGVtXCI+XHJcbiAgICAgIDxhIChjbGljayk9XCJzZXRQYWdlKHBhZ2VyLmN1cnJlbnRQYWdlICsgMSlcIiBjbGFzcz1cInBhZ2UtbGlua1wiPuKdrzwvYT5cclxuICA8L2xpPlxyXG4gIDxsaSAgKm5nSWY9XCJTaG93Rmlyc3RBbmRMYXN0XCIgW25nQ2xhc3NdPVwie2Rpc2FibGVkOnBhZ2VyLmN1cnJlbnRQYWdlID09PSBwYWdlci50b3RhbFBhZ2VzfVwiIGNsYXNzPVwicGFnZS1pdGVtIGxhc3QtaXRlbVwiPlxyXG4gICAgICA8YSAoY2xpY2spPVwic2V0UGFnZShwYWdlci50b3RhbFBhZ2VzKVwiIGNsYXNzPVwicGFnZS1saW5rXCI+4p2v4p2vPC9hPlxyXG4gIDwvbGk+XHJcbjwvdWw+XHJcbmBcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBKd1BhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICBASW5wdXQoKSBpdGVtczogQXJyYXk8YW55PjtcclxuICAgIEBPdXRwdXQoKSBjaGFuZ2VQYWdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQElucHV0KCkgaW5pdGlhbFBhZ2UgPSAxO1xyXG4gICAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcclxuICAgIEBJbnB1dCgpIG1heFBhZ2VzID0gMTA7XHJcbiAgICBASW5wdXQoKSBTaG93Rmlyc3RBbmRMYXN0ID0gZmFsc2U7XHJcblxyXG5cclxuICAgIHBhZ2VyOiBhbnkgPSB7fTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBzZXQgcGFnZSBpZiBpdGVtcyBhcnJheSBpc24ndCBlbXB0eVxyXG4gICAgICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZSh0aGlzLmluaXRpYWxQYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzLml0ZW1zLmZpcnN0Q2hhbmdlKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAvLyByZXNldCBwYWdlIGlmIGl0ZW1zIGFycmF5IGhhcyBjaGFuZ2VkXHJcbiAgICAgICAgaWYgKGNoYW5nZXMuaXRlbXMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLml0ZW1zLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQYWdlKHRoaXMuaW5pdGlhbFBhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYWdlKHBhZ2U6IG51bWJlcikge1xyXG4gICAgICAgIC8vIGdldCBuZXcgcGFnZXIgb2JqZWN0IGZvciBzcGVjaWZpZWQgcGFnZVxyXG4gICAgICAgIHRoaXMucGFnZXIgPSB0aGlzLnBhZ2luYXRlKHRoaXMuaXRlbXMubGVuZ3RoLCBwYWdlLCB0aGlzLnBhZ2VTaXplLCB0aGlzLm1heFBhZ2VzKTtcclxuXHJcbiAgICAgICAgLy8gZ2V0IG5ldyBwYWdlIG9mIGl0ZW1zIGZyb20gaXRlbXMgYXJyYXlcclxuICAgICAgICB2YXIgcGFnZU9mSXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKHRoaXMucGFnZXIuc3RhcnRJbmRleCwgdGhpcy5wYWdlci5lbmRJbmRleCArIDEpO1xyXG5cclxuICAgICAgICAvLyBjYWxsIGNoYW5nZSBwYWdlIGZ1bmN0aW9uIGluIHBhcmVudCBjb21wb25lbnRcclxuICAgICAgICB0aGlzLmNoYW5nZVBhZ2UuZW1pdCh0aGlzLnBhZ2VyLmN1cnJlbnRQYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdpbmF0ZSh0b3RhbEl0ZW1zLCBjdXJyZW50UGFnZSwgcGFnZVNpemUsIG1heFBhZ2VzKSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRQYWdlID09PSB2b2lkIDApIHsgY3VycmVudFBhZ2UgPSAxOyB9XHJcbiAgICAgICAgaWYgKHBhZ2VTaXplID09PSB2b2lkIDApIHsgcGFnZVNpemUgPSAxMDsgfVxyXG4gICAgICAgIGlmIChtYXhQYWdlcyA9PT0gdm9pZCAwKSB7IG1heFBhZ2VzID0gMTA7IH1cclxuICAgICAgICAvLyBjYWxjdWxhdGUgdG90YWwgcGFnZXNcclxuICAgICAgICB2YXIgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gcGFnZVNpemUpO1xyXG4gICAgICAgIC8vIGVuc3VyZSBjdXJyZW50IHBhZ2UgaXNuJ3Qgb3V0IG9mIHJhbmdlXHJcbiAgICAgICAgaWYgKGN1cnJlbnRQYWdlIDwgMSkge1xyXG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xyXG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IHRvdGFsUGFnZXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzdGFydFBhZ2UsIGVuZFBhZ2U7XHJcbiAgICAgICAgaWYgKHRvdGFsUGFnZXMgPD0gbWF4UGFnZXMpIHtcclxuICAgICAgICAgICAgLy8gdG90YWwgcGFnZXMgbGVzcyB0aGFuIG1heCBzbyBzaG93IGFsbCBwYWdlc1xyXG4gICAgICAgICAgICBzdGFydFBhZ2UgPSAxO1xyXG4gICAgICAgICAgICBlbmRQYWdlID0gdG90YWxQYWdlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHRvdGFsIHBhZ2VzIG1vcmUgdGhhbiBtYXggc28gY2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgcGFnZXNcclxuICAgICAgICAgICAgdmFyIG1heFBhZ2VzQmVmb3JlQ3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKG1heFBhZ2VzIC8gMik7XHJcbiAgICAgICAgICAgIHZhciBtYXhQYWdlc0FmdGVyQ3VycmVudFBhZ2UgPSBNYXRoLmNlaWwobWF4UGFnZXMgLyAyKSAtIDE7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSA8PSBtYXhQYWdlc0JlZm9yZUN1cnJlbnRQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjdXJyZW50IHBhZ2UgbmVhciB0aGUgc3RhcnRcclxuICAgICAgICAgICAgICAgIHN0YXJ0UGFnZSA9IDE7XHJcbiAgICAgICAgICAgICAgICBlbmRQYWdlID0gbWF4UGFnZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudFBhZ2UgKyBtYXhQYWdlc0FmdGVyQ3VycmVudFBhZ2UgPj0gdG90YWxQYWdlcykge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBwYWdlIG5lYXIgdGhlIGVuZFxyXG4gICAgICAgICAgICAgICAgc3RhcnRQYWdlID0gdG90YWxQYWdlcyAtIG1heFBhZ2VzICsgMTtcclxuICAgICAgICAgICAgICAgIGVuZFBhZ2UgPSB0b3RhbFBhZ2VzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY3VycmVudCBwYWdlIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlXHJcbiAgICAgICAgICAgICAgICBzdGFydFBhZ2UgPSBjdXJyZW50UGFnZSAtIG1heFBhZ2VzQmVmb3JlQ3VycmVudFBhZ2U7XHJcbiAgICAgICAgICAgICAgICBlbmRQYWdlID0gY3VycmVudFBhZ2UgKyBtYXhQYWdlc0FmdGVyQ3VycmVudFBhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2FsY3VsYXRlIHN0YXJ0IGFuZCBlbmQgaXRlbSBpbmRleGVzXHJcbiAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAoY3VycmVudFBhZ2UgLSAxKSAqIHBhZ2VTaXplO1xyXG4gICAgICAgIHZhciBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBwYWdlU2l6ZSAtIDEsIHRvdGFsSXRlbXMgLSAxKTtcclxuICAgICAgICAvLyBjcmVhdGUgYW4gYXJyYXkgb2YgcGFnZXMgdG8gbmctcmVwZWF0IGluIHRoZSBwYWdlciBjb250cm9sXHJcbiAgICAgICAgdmFyIHBhZ2VzID0gQXJyYXkuZnJvbShBcnJheSgoZW5kUGFnZSArIDEpIC0gc3RhcnRQYWdlKS5rZXlzKCkpLm1hcChmdW5jdGlvbiAoaSkgeyByZXR1cm4gc3RhcnRQYWdlICsgaTsgfSk7XHJcbiAgICAgICAgLy8gcmV0dXJuIG9iamVjdCB3aXRoIGFsbCBwYWdlciBwcm9wZXJ0aWVzIHJlcXVpcmVkIGJ5IHRoZSB2aWV3XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdG90YWxJdGVtczogdG90YWxJdGVtcyxcclxuICAgICAgICAgICAgY3VycmVudFBhZ2U6IGN1cnJlbnRQYWdlLFxyXG4gICAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemUsXHJcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRvdGFsUGFnZXMsXHJcbiAgICAgICAgICAgIHN0YXJ0UGFnZTogc3RhcnRQYWdlLFxyXG4gICAgICAgICAgICBlbmRQYWdlOiBlbmRQYWdlLFxyXG4gICAgICAgICAgICBzdGFydEluZGV4OiBzdGFydEluZGV4LFxyXG4gICAgICAgICAgICBlbmRJbmRleDogZW5kSW5kZXgsXHJcbiAgICAgICAgICAgIHBhZ2VzOiBwYWdlc1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG59Il19
@@ -0,0 +1,312 @@
1
+ import { Component, Output, EventEmitter, Input } from '@angular/core';
2
+ import { PagingDTO } from '../../Shared/Models/PagingDTO';
3
+ import { Subscription } from 'rxjs';
4
+ import { FilterType } from '../../Shared/Enums/FilterType';
5
+ import { RequestOptionsModel } from '@bnsights/bbsf-utilities';
6
+ import { plainToClass } from 'class-transformer';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@bnsights/bbsf-utilities";
9
+ import * as i2 from "@angular/common/http";
10
+ import * as i3 from "@angular/router";
11
+ import * as i4 from "../../Shared/services/OnPagingFiltersChange.service";
12
+ import * as i5 from "./JwPagination.component";
13
+ import * as i6 from "@angular/common";
14
+ import * as i7 from "@angular/forms";
15
+ import * as i8 from "ngx-infinite-scroll";
16
+ // tslint:disable-next-line: no-conflicting-lifecycle
17
+ export class PagingComponent {
18
+ constructor(utilityService, http, router, onChangeService, requestHandlerService) {
19
+ this.utilityService = utilityService;
20
+ this.http = http;
21
+ this.router = router;
22
+ this.onChangeService = onChangeService;
23
+ this.requestHandlerService = requestHandlerService;
24
+ this.items = [];
25
+ this.result = [];
26
+ this.pagerConfig = null;
27
+ this.totalRow = 0;
28
+ this.pageSize = 10;
29
+ this.Pages = 0;
30
+ this.CurrentPage = 1;
31
+ this.ShowPageSizeOption = true;
32
+ this.ShowFirstAndLast = true;
33
+ this.hidePaginationWhenPageSizeEqualOne = true;
34
+ this.Sum = 0;
35
+ this.Throttle = 300;
36
+ this.ScrollDistance = 1;
37
+ this.ScrollUpDistance = 2;
38
+ this.direction = '';
39
+ this.IsFirstCall = true;
40
+ this.Items = new EventEmitter();
41
+ this.subscriptions = new Subscription();
42
+ this.ReinitializePaging = () => {
43
+ this.IsFirstCall = true;
44
+ this.getItemList(1, true);
45
+ };
46
+ this.UpdatePaging = () => {
47
+ //this.IsFirstCall=true;
48
+ this.getItemList(this.CurrentPage);
49
+ };
50
+ }
51
+ ngOnDestroy() {
52
+ this.subscriptions.unsubscribe();
53
+ }
54
+ ngOnInit() {
55
+ if (this.options.IsLoadMoreControl)
56
+ this.Sum = this.options.PageSize;
57
+ if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {
58
+ const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;
59
+ this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
60
+ let result = this.options.DropdownFiltersControlNames.filter((item) => item == value);
61
+ if (result.length > 0) {
62
+ this.IsFirstCall = true;
63
+ this.CurrentPage = 1;
64
+ this.getItemList(this.CurrentPage, true);
65
+ }
66
+ }));
67
+ }
68
+ if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {
69
+ const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;
70
+ this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
71
+ let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value);
72
+ if (result.length > 0) {
73
+ this.IsFirstCall = true;
74
+ this.CurrentPage = 1;
75
+ this.getItemList(this.CurrentPage, true);
76
+ }
77
+ }));
78
+ }
79
+ this.IsFirstCall = true;
80
+ this.getItemList(this.CurrentPage, true);
81
+ }
82
+ ngAfterViewInit() {
83
+ if (this.options.OnClickFiltersControlNames != null && this.options.OnClickFiltersControlNames.length > 0) {
84
+ const OnClickFiltersControlNames = this.options.OnClickFiltersControlNames;
85
+ for (let index = 0; index < OnClickFiltersControlNames.length; index++) {
86
+ const OnClickFiltersControlName = OnClickFiltersControlNames[index];
87
+ document.getElementById(OnClickFiltersControlName).addEventListener("click", () => {
88
+ this.CurrentPage = 1;
89
+ this.IsFirstCall = true;
90
+ this.getItemList(this.CurrentPage, true);
91
+ }, false);
92
+ }
93
+ }
94
+ if (this.options.OnKeyPressFiltersControlNames != null && this.options.OnKeyPressFiltersControlNames.length > 0) {
95
+ const OnKeyPressFiltersControlNames = this.options.OnKeyPressFiltersControlNames;
96
+ for (let index = 0; index < OnKeyPressFiltersControlNames.length; index++) {
97
+ const OnKeyPressFiltersControlName = OnKeyPressFiltersControlNames[index];
98
+ let element = this.group.get(OnKeyPressFiltersControlName).nativeElement;
99
+ element.addEventListener("keypress", (e) => {
100
+ if (e.key == "Enter") {
101
+ this.CurrentPage = 1;
102
+ this.IsFirstCall = true;
103
+ this.getItemList(this.CurrentPage, true);
104
+ }
105
+ }, false);
106
+ }
107
+ }
108
+ //Add click event on Reset Filter button
109
+ if (this.options.ResetFilterButtonName != null) {
110
+ const button = document.getElementsByName(this.options.ResetFilterButtonName)[0];
111
+ if (button != undefined) {
112
+ let element = button;
113
+ element.addEventListener("click", (e) => {
114
+ this.clearFilters();
115
+ }, false);
116
+ }
117
+ }
118
+ if (this.options.TypeaheadSearchControlNames != null && this.options.TypeaheadSearchControlNames.length > 0) {
119
+ const TypeaheadSearchControlNames = this.options.TypeaheadSearchControlNames;
120
+ for (let index = 0; index < TypeaheadSearchControlNames.length; index++) {
121
+ const TypeaheadSearchControlName = TypeaheadSearchControlNames[index];
122
+ document.getElementById(TypeaheadSearchControlName).addEventListener("keypress", (e) => {
123
+ if (e.key == "Enter") {
124
+ this.CurrentPage = 1;
125
+ this.IsFirstCall = true;
126
+ this.getItemList(this.CurrentPage, true);
127
+ }
128
+ }, false);
129
+ }
130
+ }
131
+ }
132
+ onDropDownChange(result) {
133
+ if (result) {
134
+ this.CurrentPage = 1;
135
+ this.IsFirstCall = true;
136
+ this.getItemList(this.CurrentPage, true);
137
+ }
138
+ }
139
+ onChangePage(Page) {
140
+ if (Page == 0)
141
+ return;
142
+ if (Page > 0) {
143
+ if (this.IsFirstCall) {
144
+ this.IsFirstCall = false;
145
+ return;
146
+ }
147
+ this.CurrentPage = Page;
148
+ this.getItemList(Page);
149
+ }
150
+ }
151
+ changePageSize(e) {
152
+ this.options.PageSize = e.target.value;
153
+ this.CurrentPage = 1;
154
+ this.IsFirstCall = true;
155
+ this.getItemList(this.CurrentPage, true);
156
+ }
157
+ onScrollDown() {
158
+ this.Sum += this.options.PageSize;
159
+ this.CurrentPage = 1;
160
+ this.IsFirstCall = true;
161
+ this.direction = 'down';
162
+ this.getItemList(this.CurrentPage, true);
163
+ }
164
+ getItemList(page, IsFilterUpdated = false) {
165
+ if (this.options.StartPagingCallback)
166
+ this.options.StartPagingCallback.call(null);
167
+ let pagingDTO = new PagingDTO();
168
+ let size = Number.parseInt(this.options.PageSize.toString());
169
+ if (this.options.IsLoadMoreControl)
170
+ pagingDTO.PageCount = this.Sum;
171
+ else
172
+ pagingDTO.PageCount = size;
173
+ pagingDTO.CurrentPageNumber = page;
174
+ pagingDTO.TotalCount = this.totalRow;
175
+ pagingDTO.IsFilterUpdated = IsFilterUpdated;
176
+ let filters = {};
177
+ filters = this.getFiltersValue();
178
+ //Set Filters object that sent to action URL
179
+ let filtersDTO = {
180
+ PagingDTO: pagingDTO,
181
+ Filters: filters
182
+ };
183
+ let requestOptions = new RequestOptionsModel();
184
+ requestOptions.disableBlockUI = this.options.DisableBlockUI;
185
+ this.requestHandlerService.post(this.options.ActionPostURL, this.options.Filters && this.options.Filters.length > 0 ? filtersDTO : pagingDTO, null, null, requestOptions)
186
+ .subscribe((responseData) => {
187
+ this.result = responseData.items; //this.castItems(responseData.items);
188
+ let castedResult = plainToClass(this.options.TypeOfResponse, this.result, { excludeExtraneousValues: true });
189
+ this.Items.emit(castedResult);
190
+ this.totalRow = responseData.totalCount;
191
+ if (IsFilterUpdated) {
192
+ this.items = [];
193
+ this.Pages = Math.ceil((this.totalRow / this.options.PageSize));
194
+ this.items = Array(this.totalRow);
195
+ this.setText(this.Pages, this.totalRow);
196
+ }
197
+ }, (error) => {
198
+ if (error.status == 401)
199
+ this.router.navigate(["/Admin/account/login"]);
200
+ });
201
+ }
202
+ castItems(objectArr) {
203
+ let originalArray = [];
204
+ for (let index = 0; index < objectArr.length; index++) {
205
+ const element = objectArr[index];
206
+ let key, keys = Object.keys(element);
207
+ let n = keys.length;
208
+ let newObject = {};
209
+ while (n--) {
210
+ key = keys[n];
211
+ let Okey = key;
212
+ newObject[key.charAt(0).toUpperCase() + Okey.slice(1)] = element[key];
213
+ }
214
+ let finalObject = newObject;
215
+ originalArray.push(finalObject);
216
+ }
217
+ return originalArray;
218
+ }
219
+ setText(pagesNumber, itemsNumber) {
220
+ if (this.utilityService.isCurrentLanguageArabic()) {
221
+ //Set pages text
222
+ if (pagesNumber < 3 || pagesNumber > 10)
223
+ this.pagesText = this.utilityService.getResourceValue("Page");
224
+ else
225
+ this.pagesText = this.utilityService.getResourceValue("Pages");
226
+ //Set items text
227
+ if (itemsNumber < 3 || itemsNumber > 10)
228
+ this.itemsText = this.utilityService.getResourceValue("Item");
229
+ else
230
+ this.itemsText = this.utilityService.getResourceValue("Items");
231
+ }
232
+ else {
233
+ //Set pages text
234
+ if (pagesNumber > 1)
235
+ this.pagesText = this.utilityService.getResourceValue("Pages");
236
+ else
237
+ this.pagesText = this.utilityService.getResourceValue("Page");
238
+ //Set items text
239
+ if (itemsNumber > 1)
240
+ this.itemsText = this.utilityService.getResourceValue("Items");
241
+ else
242
+ this.itemsText = this.utilityService.getResourceValue("Item");
243
+ }
244
+ }
245
+ clearFilters() {
246
+ if (this.options.Filters != null && this.options.Filters != []) {
247
+ for (let index = 0; index < this.options.Filters.length; index++) {
248
+ if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != "") {
249
+ const FormControlName = this.options.Filters[index].FormControlName;
250
+ this.group.controls[FormControlName].setValue(null);
251
+ }
252
+ }
253
+ this.ReinitializePaging();
254
+ }
255
+ }
256
+ getFiltersValue() {
257
+ let filters = {};
258
+ if (this.options.Filters != null && this.options.Filters != []) {
259
+ for (let index = 0; index < this.options.Filters.length; index++) {
260
+ if (this.options.Filters[index].FormControlName != null && this.options.Filters[index].FormControlName != "") {
261
+ const FormControlName = this.options.Filters[index].FormControlName;
262
+ let ControlValue = this.group.controls[FormControlName].value;
263
+ if (ControlValue != undefined && ControlValue != null && ControlValue != "") {
264
+ if (this.options.Filters[index].FilterType == FilterType.DatePicker) {
265
+ //if (Array.isArray(ControlValue)) {
266
+ // for (let element = 0; element < ControlValue.length; element++) {
267
+ // const value = ControlValue[element];
268
+ // filters[this.options.Filters[index].ActionParameterName] = value;
269
+ // }
270
+ //}
271
+ //else {
272
+ filters[this.options.Filters[index].ActionParameterName] = ControlValue;
273
+ //}
274
+ }
275
+ else {
276
+ if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)
277
+ ControlValue = ControlValue;
278
+ if (this.options.Filters[index].FilterType == FilterType.TagInput)
279
+ ControlValue = ControlValue;
280
+ filters[this.options.Filters[index].ActionParameterName] = ControlValue;
281
+ }
282
+ }
283
+ else {
284
+ filters[this.options.Filters[index].ActionParameterName] = null;
285
+ }
286
+ }
287
+ else {
288
+ const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;
289
+ let ElementValue = document.querySelector(ElementjQuerySelector).value;
290
+ if (ElementValue != undefined && ElementValue != null)
291
+ filters[this.options.Filters[index].ActionParameterName] = ElementValue;
292
+ else
293
+ filters[this.options.Filters[index].ActionParameterName] = null;
294
+ }
295
+ }
296
+ }
297
+ return filters;
298
+ }
299
+ }
300
+ PagingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagingComponent, deps: [{ token: i1.UtilityService }, { token: i2.HttpClient }, { token: i3.Router }, { token: i4.OnPagingFiltersChangeService }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
301
+ PagingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagingComponent, selector: "BBSF-Paging", inputs: { options: "options", group: "group" }, outputs: { Items: "Items" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n", components: [{ type: i5.JwPaginationComponent, selector: "jw-pagination", inputs: ["items", "initialPage", "pageSize", "maxPages", "ShowFirstAndLast"], outputs: ["changePage"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] });
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagingComponent, decorators: [{
303
+ type: Component,
304
+ args: [{ selector: 'BBSF-Paging', template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n" }]
305
+ }], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i2.HttpClient }, { type: i3.Router }, { type: i4.OnPagingFiltersChangeService }, { type: i1.RequestHandlerService }]; }, propDecorators: { Items: [{
306
+ type: Output
307
+ }], options: [{
308
+ type: Input
309
+ }], group: [{
310
+ type: Input
311
+ }] } });
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9QYWdpbmcvUGFnaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXdDLE1BQU0sZUFBZSxDQUFDO0FBR3JILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUcxRCxPQUFPLEVBQXVCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUF5QixtQkFBbUIsRUFBa0IsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUFHakQscURBQXFEO0FBS3JELE1BQU0sT0FBTyxlQUFlO0lBMkIxQixZQUFtQixjQUE4QixFQUFVLElBQWdCLEVBQVUsTUFBYyxFQUFVLGVBQTZDLEVBQVUscUJBQTRDO1FBQTdMLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCaE4sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVYLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBUSxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFRLENBQUMs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aUJBQ25FO2FBQ0Y7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OzZHQTNUVSxlQUFlO2lHQUFmLGVBQWUsZ0lDbkI1Qix5MkRBa0NBOzRGRGZhLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsYUFBYTtrT0F5QmIsS0FBSztzQkFBZCxNQUFNO2dCQUNFLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQYWdpbmdEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ0RUTyc7XHJcbmltcG9ydCB7IFBhZ2luZ09wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL1BhZ2luZ09wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgUmVzcG9uc2VDb250ZW50VHlwZSwgSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL09uUGFnaW5nRmlsdGVyc0NoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9GaWx0ZXJUeXBlJztcclxuaW1wb3J0IHsgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLCBSZXF1ZXN0T3B0aW9uc01vZGVsLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgUGFnaW5nUGF5bG9hZCB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvUGFnaW5nUGF5bG9hZCc7XHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtUGFnaW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vUGFnaW5nLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnaW5nQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBpdGVtcyA9IFtdO1xyXG4gIHBhZ2VPZkl0ZW1zOiBBcnJheTxhbnk+O1xyXG4gIHJlc3VsdDogVFtdID0gW107XHJcbiAgcGFnZXJDb25maWc6IGFueSA9IG51bGw7XHJcbiAgdG90YWxSb3c6IGFueSA9IDA7XHJcbiAgcGFnZVNpemU6IGFueSA9IDEwXHJcbiAgUGFnZXM6IGFueSA9IDBcclxuICBwYWdlc1RleHQ6IHN0cmluZztcclxuICBpdGVtc1RleHQ6IHN0cmluZztcclxuICBDdXJyZW50UGFnZTogYW55ID0gMVxyXG4gIFNob3dQYWdlU2l6ZU9wdGlvbiA9IHRydWU7XHJcbiAgU2hvd0ZpcnN0QW5kTGFzdCA9IHRydWU7XHJcbiAgaGlkZVBhZ2luYXRpb25XaGVuUGFnZVNpemVFcXVhbE9uZSA9IHRydWVcclxuICBTdW0gPSAwO1xyXG4gIFRocm90dGxlID0gMzAwO1xyXG4gIFNjcm9sbERpc3RhbmNlID0gMTtcclxuICBTY3JvbGxVcERpc3RhbmNlID0gMjtcclxuICBkaXJlY3Rpb24gPSAnJztcclxuICBIZWFkZXJzOiBIdHRwSGVhZGVycztcclxuICBJc0ZpcnN0Q2FsbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQE91dHB1dCgpIEl0ZW1zOiBFdmVudEVtaXR0ZXI8VFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0xvYWRNb3JlQ29udHJvbClcclxuICAgICAgdGhpcy5TdW0gPSB0aGlzLm9wdGlvbnMuUGFnZVNpemU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Ecm9wZG93bkZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLkRyb3Bkb3duRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9wdGlvbnMuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSA9PSB2YWx1ZSlcclxuICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Cb290c3RyYXBEYXRlUGlja2Vyc0ZpbHRlcnNDb250cm9sTmFtZXMgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgQm9vdHN0cmFwRGF0ZVBpY2tlcnNGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcztcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLm9uQ2hhbmdlU2VydmljZS5HZXRWYWx1ZSgpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5vcHRpb25zLkJvb3RzdHJhcERhdGVQaWNrZXJzRmlsdGVyc0NvbnRyb2xOYW1lcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gPT0gdmFsdWUpXHJcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuQ3VycmVudFBhZ2UgPSAxO1xyXG4gICAgICAgICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKVxyXG4gICAgfVxyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5PbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLk9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgT25DbGlja0ZpbHRlcnNDb250cm9sTmFtZSA9IE9uQ2xpY2tGaWx0ZXJzQ29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChPbkNsaWNrRmlsdGVyc0NvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICB0aGlzLklzRmlyc3RDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSB0aGlzLm9wdGlvbnMuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBPbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lID0gT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gKDxhbnk+dGhpcy5ncm91cC5nZXQoT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZSkpLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9BZGQgY2xpY2sgZXZlbnQgb24gUmVzZXQgRmlsdGVyIGJ1dHRvblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5SZXNldEZpbHRlckJ1dHRvbk5hbWUgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSh0aGlzLm9wdGlvbnMuUmVzZXRGaWx0ZXJCdXR0b25OYW1lKVswXTtcclxuICAgICAgaWYgKGJ1dHRvbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBsZXQgZWxlbWVudCA9IGJ1dHRvbiBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWVzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLlR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lcyA9IHRoaXMub3B0aW9ucy5UeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXM7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgVHlwZWFoZWFkU2VhcmNoQ29udHJvbE5hbWUgPSBUeXBlYWhlYWRTZWFyY2hDb250cm9sTmFtZXNbaW5kZXhdO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFR5cGVhaGVhZFNlYXJjaENvbnRyb2xOYW1lKS5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgKGUpID0+IHtcclxuICAgICAgICAgIGlmIChlLmtleSA9PSBcIkVudGVyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5DdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGZhbHNlKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBvbkRyb3BEb3duQ2hhbmdlKHJlc3VsdCkge1xyXG4gICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2V0SXRlbUxpc3QodGhpcy5DdXJyZW50UGFnZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVBhZ2UoUGFnZSkge1xyXG4gICAgaWYgKFBhZ2UgPT0gMClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgaWYgKFBhZ2UgPiAwKSB7XHJcbiAgICAgIGlmICh0aGlzLklzRmlyc3RDYWxsKSB7XHJcbiAgICAgICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLkN1cnJlbnRQYWdlID0gUGFnZTtcclxuICAgICAgdGhpcy5nZXRJdGVtTGlzdChQYWdlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY2hhbmdlUGFnZVNpemUoZSkge1xyXG4gICAgdGhpcy5vcHRpb25zLlBhZ2VTaXplID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLkN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRJdGVtTGlzdCh0aGlzLkN1cnJlbnRQYWdlLCB0cnVlKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIG9uU2Nyb2xsRG93bigpIHtcclxuICAgIHRoaXMuU3VtICs9IHRoaXMub3B0aW9ucy5QYWdlU2l6ZVxyXG4gICAgdGhpcy5DdXJyZW50UGFnZSA9IDFcclxuICAgIHRoaXMuSXNGaXJzdENhbGwgPSB0cnVlO1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSAnZG93bic7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UsIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBnZXRJdGVtTGlzdChwYWdlLCBJc0ZpbHRlclVwZGF0ZWQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5TdGFydFBhZ2luZ0NhbGxiYWNrKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuU3RhcnRQYWdpbmdDYWxsYmFjay5jYWxsKG51bGwpO1xyXG5cclxuICAgIGxldCBwYWdpbmdEVE8gPSBuZXcgUGFnaW5nRFRPKCk7XHJcbiAgICBsZXQgc2l6ZSA9IE51bWJlci5wYXJzZUludCh0aGlzLm9wdGlvbnMuUGFnZVNpemUudG9TdHJpbmcoKSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzTG9hZE1vcmVDb250cm9sKVxyXG4gICAgICBwYWdpbmdEVE8uUGFnZUNvdW50ID0gdGhpcy5TdW07XHJcbiAgICBlbHNlXHJcbiAgICAgIHBhZ2luZ0RUTy5QYWdlQ291bnQgPSBzaXplO1xyXG5cclxuICAgIHBhZ2luZ0RUTy5DdXJyZW50UGFnZU51bWJlciA9IHBhZ2U7XHJcbiAgICBwYWdpbmdEVE8uVG90YWxDb3VudCA9IHRoaXMudG90YWxSb3c7XHJcbiAgICBwYWdpbmdEVE8uSXNGaWx0ZXJVcGRhdGVkID0gSXNGaWx0ZXJVcGRhdGVkO1xyXG4gICAgbGV0IGZpbHRlcnMgPSB7fTtcclxuICAgIGZpbHRlcnMgPSB0aGlzLmdldEZpbHRlcnNWYWx1ZSgpO1xyXG5cclxuICAgIC8vU2V0IEZpbHRlcnMgb2JqZWN0IHRoYXQgc2VudCB0byBhY3Rpb24gVVJMXHJcbiAgICBsZXQgZmlsdGVyc0RUTzogUGFnaW5nUGF5bG9hZCA9IHtcclxuICAgICAgUGFnaW5nRFRPOiBwYWdpbmdEVE8sXHJcbiAgICAgIEZpbHRlcnM6IGZpbHRlcnNcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHJlcXVlc3RPcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuICAgIHJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJID0gdGhpcy5vcHRpb25zLkRpc2FibGVCbG9ja1VJO1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UucG9zdCh0aGlzLm9wdGlvbnMuQWN0aW9uUG9zdFVSTCwgdGhpcy5vcHRpb25zLkZpbHRlcnMgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMubGVuZ3RoID4gMCA/IGZpbHRlcnNEVE8gOiBwYWdpbmdEVE8sIG51bGwsIG51bGwsIHJlcXVlc3RPcHRpb25zKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzdWx0ID0gcmVzcG9uc2VEYXRhLml0ZW1zIC8vdGhpcy5jYXN0SXRlbXMocmVzcG9uc2VEYXRhLml0ZW1zKTtcclxuICAgICAgICBsZXQgY2FzdGVkUmVzdWx0ID0gcGxhaW5Ub0NsYXNzKHRoaXMub3B0aW9ucy5UeXBlT2ZSZXNwb25zZSwgdGhpcy5yZXN1bHQsIHsgZXhjbHVkZUV4dHJhbmVvdXNWYWx1ZXM6IHRydWUgfSlcclxuICAgICAgICB0aGlzLkl0ZW1zLmVtaXQoY2FzdGVkUmVzdWx0KTtcclxuICAgICAgICB0aGlzLnRvdGFsUm93ID0gcmVzcG9uc2VEYXRhLnRvdGFsQ291bnQ7XHJcblxyXG4gICAgICAgIGlmIChJc0ZpbHRlclVwZGF0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuUGFnZXMgPSBNYXRoLmNlaWwoKHRoaXMudG90YWxSb3cgLyB0aGlzLm9wdGlvbnMuUGFnZVNpemUpKTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSBBcnJheSh0aGlzLnRvdGFsUm93KTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNldFRleHQodGhpcy5QYWdlcywgdGhpcy50b3RhbFJvdyk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL0FkbWluL2FjY291bnQvbG9naW5cIl0pXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgUmVpbml0aWFsaXplUGFnaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5Jc0ZpcnN0Q2FsbCA9IHRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KDEsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgVXBkYXRlUGFnaW5nID0gKCkgPT4ge1xyXG4gICAgLy90aGlzLklzRmlyc3RDYWxsPXRydWU7XHJcbiAgICB0aGlzLmdldEl0ZW1MaXN0KHRoaXMuQ3VycmVudFBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgY2FzdEl0ZW1zKG9iamVjdEFycjogYW55W10pOiBUW10ge1xyXG4gICAgbGV0IG9yaWdpbmFsQXJyYXk6IFRbXSA9IFtdXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0QXJyLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gb2JqZWN0QXJyW2luZGV4XTtcclxuICAgICAgbGV0IGtleSwga2V5cyA9IE9iamVjdC5rZXlzKGVsZW1lbnQpO1xyXG4gICAgICBsZXQgbiA9IGtleXMubGVuZ3RoO1xyXG4gICAgICBsZXQgbmV3T2JqZWN0ID0ge31cclxuICAgICAgd2hpbGUgKG4tLSkge1xyXG4gICAgICAgIGtleSA9IGtleXNbbl07XHJcbiAgICAgICAgbGV0IE9rZXkgPSBrZXlcclxuICAgICAgICBuZXdPYmplY3Rba2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgT2tleS5zbGljZSgxKV0gPSBlbGVtZW50W2tleV07XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbmFsT2JqZWN0ID0gbmV3T2JqZWN0IGFzIFRcclxuICAgICAgb3JpZ2luYWxBcnJheS5wdXNoKGZpbmFsT2JqZWN0KVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcmlnaW5hbEFycmF5O1xyXG4gIH1cclxuXHJcbiAgc2V0VGV4dChwYWdlc051bWJlcjogbnVtYmVyLCBpdGVtc051bWJlcjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy51dGlsaXR5U2VydmljZS5pc0N1cnJlbnRMYW5ndWFnZUFyYWJpYygpKSB7XHJcbiAgICAgIC8vU2V0IHBhZ2VzIHRleHRcclxuICAgICAgaWYgKHBhZ2VzTnVtYmVyIDwgMyB8fCBwYWdlc051bWJlciA+IDEwKVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZVwiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZXNcIik7XHJcbiAgICAgIC8vU2V0IGl0ZW1zIHRleHRcclxuICAgICAgaWYgKGl0ZW1zTnVtYmVyIDwgMyB8fCBpdGVtc051bWJlciA+IDEwKVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbVwiKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuaXRlbXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSXRlbXNcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy9TZXQgcGFnZXMgdGV4dFxyXG4gICAgICBpZiAocGFnZXNOdW1iZXIgPiAxKVxyXG4gICAgICAgIHRoaXMucGFnZXNUZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFnZXNcIik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLnBhZ2VzVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhZ2VcIik7XHJcbiAgICAgIC8vU2V0IGl0ZW1zIHRleHRcclxuICAgICAgaWYgKGl0ZW1zTnVtYmVyID4gMSlcclxuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkl0ZW1zXCIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5pdGVtc1RleHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJdGVtXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnMgIT0gW10pIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICBjb25zdCBGb3JtQ29udHJvbE5hbWUgPSB0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uRm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5jb250cm9sc1tGb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyc1ZhbHVlKCkge1xyXG4gICAgbGV0IGZpbHRlcnMgPSB7fTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuRmlsdGVycyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzICE9IFtdKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuRmlsdGVycy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5Gb3JtQ29udHJvbE5hbWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgY29uc3QgRm9ybUNvbnRyb2xOYW1lID0gdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZvcm1Db250cm9sTmFtZTtcclxuICAgICAgICAgIGxldCBDb250cm9sVmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW0Zvcm1Db250cm9sTmFtZV0udmFsdWU7XHJcbiAgICAgICAgICBpZiAoQ29udHJvbFZhbHVlICE9IHVuZGVmaW5lZCAmJiBDb250cm9sVmFsdWUgIT0gbnVsbCAmJiBDb250cm9sVmFsdWUgIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5EYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgLy9pZiAoQXJyYXkuaXNBcnJheShDb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgLy8gIGZvciAobGV0IGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgQ29udHJvbFZhbHVlLmxlbmd0aDsgZWxlbWVudCsrKSB7XHJcbiAgICAgICAgICAgICAgLy8gICAgY29uc3QgdmFsdWUgPSBDb250cm9sVmFsdWVbZWxlbWVudF07XHJcbiAgICAgICAgICAgICAgLy8gICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAvLyAgfVxyXG4gICAgICAgICAgICAgIC8vfVxyXG4gICAgICAgICAgICAgIC8vZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBDb250cm9sVmFsdWU7XHJcbiAgICAgICAgICAgICAgLy99XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5GaWx0ZXJUeXBlID09IEZpbHRlclR5cGUuQXV0b2NvbXBsZXRlVGV4dEJveClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IENvbnRyb2xWYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkZpbHRlclR5cGUgPT0gRmlsdGVyVHlwZS5UYWdJbnB1dClcclxuICAgICAgICAgICAgICAgIENvbnRyb2xWYWx1ZSA9IENvbnRyb2xWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBDb250cm9sVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmaWx0ZXJzW3RoaXMub3B0aW9ucy5GaWx0ZXJzW2luZGV4XS5BY3Rpb25QYXJhbWV0ZXJOYW1lXSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgRWxlbWVudGpRdWVyeVNlbGVjdG9yID0gdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLmpRdWVyeVNlbGVjdG9yO1xyXG4gICAgICAgICAgbGV0IEVsZW1lbnRWYWx1ZSA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKEVsZW1lbnRqUXVlcnlTZWxlY3RvcikgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICAgICAgICBpZiAoRWxlbWVudFZhbHVlICE9IHVuZGVmaW5lZCAmJiBFbGVtZW50VmFsdWUgIT0gbnVsbClcclxuICAgICAgICAgICAgZmlsdGVyc1t0aGlzLm9wdGlvbnMuRmlsdGVyc1tpbmRleF0uQWN0aW9uUGFyYW1ldGVyTmFtZV0gPSBFbGVtZW50VmFsdWU7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGZpbHRlcnNbdGhpcy5vcHRpb25zLkZpbHRlcnNbaW5kZXhdLkFjdGlvblBhcmFtZXRlck5hbWVdID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmaWx0ZXJzO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1wYWdpbmdcIiAqbmdJZj1cIihyZXN1bHQubGVuZ3RoID4gMClcIj5cclxuICA8IS0tcGFnaW5nIGNvbnRhaW5lci0tPlxyXG4gIDxkaXYgY2xhc3M9XCJiYnNmLXBhZ2luZy1jb250YWluZXJcIiAqbmdJZj1cIiFvcHRpb25zLklzTG9hZE1vcmVDb250cm9sXCI+XHJcbiAgICA8IS0taXRlbXMtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJiYnNmLXBhZ2luYXRpb25cIj5cclxuICAgICAgPGp3LXBhZ2luYXRpb24gW2l0ZW1zXT1cIml0ZW1zXCIgKm5nSWY9XCIhKChQYWdlcz09MSkmJm9wdGlvbnMuSGlkZVBhZ2luYXRpb25XaGVuUGFnZVNpemVFcXVhbE9uZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2hhbmdlUGFnZSk9XCJvbkNoYW5nZVBhZ2UoJGV2ZW50KVwiIFtwYWdlU2l6ZV09XCJvcHRpb25zLlBhZ2VTaXplXCIgW1Nob3dGaXJzdEFuZExhc3RdPVwib3B0aW9ucy5TaG93Rmlyc3RBbmRMYXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2luaXRpYWxQYWdlXT1cIjFcIiBbbWF4UGFnZXNdPVwiMTBcIj48L2p3LXBhZ2luYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1wYWdlIGNvdW50LS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYmJzZi1wYWdlc1wiICpuZ0lmPVwiISgoUGFnZXM9PTEpJiZvcHRpb25zLkhpZGVQYWdpbmF0aW9uV2hlblBhZ2VTaXplRXF1YWxPbmUpXCI+XHJcbiAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJjaGFuZ2VQYWdlU2l6ZSgkZXZlbnQpXCIgKm5nSWY9XCJvcHRpb25zLlNob3dQYWdlU2l6ZU9wdGlvblwiPlxyXG4gICAgICAgIDxvcHRpb24+MTA8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uPjIwPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbj41MDwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24+MTAwPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbj4yMDA8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJic3NmLWl0ZW1zXCI+XHJcbiAgICAgICAgPHN0cm9uZz57e3RvdGFsUm93fX08L3N0cm9uZz4ge3tpdGVtc1RleHR9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJblwiKX19IDxzdHJvbmc+IHt7UGFnZXN9fTwvc3Ryb25nPiB7e3BhZ2VzVGV4dH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLWxvYWQgbW9yZS0tPlxyXG4gIDxkaXYgY2xhc3M9XCJiYnNmLWxvYWRtb3JlXCIgKm5nSWY9XCJvcHRpb25zLklzTG9hZE1vcmVDb250cm9sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXJlc3VsdHNcIiBpbmZpbml0ZS1zY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiU2Nyb2xsRGlzdGFuY2VcIlxyXG4gICAgICAgICBbaW5maW5pdGVTY3JvbGxVcERpc3RhbmNlXT1cIlNjcm9sbFVwRGlzdGFuY2VcIiBbaW5maW5pdGVTY3JvbGxUaHJvdHRsZV09XCJUaHJvdHRsZVwiIChzY3JvbGxlZCk9XCJvcHRpb25zLklzSW5maW5pdGVTY3JvbGw9PXRydWU/b25TY3JvbGxEb3duKCk6bnVsbFwiXHJcbiAgICAgICAgIFtzY3JvbGxXaW5kb3ddPVwib3B0aW9ucy5TY3JvbGxXaW5kb3dcIiBbaW5maW5pdGVTY3JvbGxDb250YWluZXJdPVwib3B0aW9ucy5JbmZpbml0ZVNjcm9sbENvbnRhaW5lclwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvblNjcm9sbERvd24oKVwiICpuZ0lmPVwiIShyZXN1bHQubGVuZ3RoPT10b3RhbFJvdylcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMb2FkTW9yZVwiKX19PC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==