barsa-sap-ui 2.2.73 → 2.2.74

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 (256) hide show
  1. package/fesm2022/barsa-sap-ui.mjs +756 -760
  2. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  3. package/lib/models/grid-data-provider.d.ts +1 -1
  4. package/lib/notification-popup.service.d.ts +1 -1
  5. package/lib/ui-grid-columns/ui-grid-columns.component.d.ts +1 -1
  6. package/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.d.ts +1 -1
  7. package/lib/ui-pictures-info/ui-pictures-info.component.d.ts +2 -2
  8. package/lib/ui-table-view/ui-table-view.component.d.ts +4 -4
  9. package/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.d.ts +1 -1
  10. package/lib/ul-notify-popup/ul-notify-popup.component.d.ts +1 -1
  11. package/lib/ulv-toolbar/ulv-toolbar.component.d.ts +2 -2
  12. package/package.json +3 -5
  13. package/esm2022/barsa-sap-ui.mjs +0 -5
  14. package/esm2022/lib/apply-conditional-formmatings.directive.mjs +0 -90
  15. package/esm2022/lib/avatar-size.pipe.mjs +0 -41
  16. package/esm2022/lib/barsa-answer-card/barsa-answer-card.component.mjs +0 -41
  17. package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +0 -153
  18. package/esm2022/lib/barsa-bar-download-file/barsa-bar-download-file.component.mjs +0 -30
  19. package/esm2022/lib/barsa-bar-panel/barsa-bar-panel.component.mjs +0 -23
  20. package/esm2022/lib/barsa-base-panel/barsa-base-layout-panel.component.mjs +0 -29
  21. package/esm2022/lib/barsa-breadcrumbs/barsa-breadcrumbs.component.mjs +0 -24
  22. package/esm2022/lib/barsa-card-banner/barsa-card-banner.component.mjs +0 -38
  23. package/esm2022/lib/barsa-card-layout-panel/barsa-card-layout-panel.component.mjs +0 -24
  24. package/esm2022/lib/barsa-card-row-payam/barsa-card-row-payam.component.mjs +0 -31
  25. package/esm2022/lib/barsa-cartable-form/barsa-cartable-form.component.mjs +0 -41
  26. package/esm2022/lib/barsa-cartable-template/barsa-cartable-template.component.mjs +0 -24
  27. package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +0 -84
  28. package/esm2022/lib/barsa-chat/chat.model.mjs +0 -8
  29. package/esm2022/lib/barsa-chat-content/barsa-chat-content.component.mjs +0 -13
  30. package/esm2022/lib/barsa-chat-content-toolbar/barsa-chat-content-toolbar.component.mjs +0 -22
  31. package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +0 -117
  32. package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +0 -79
  33. package/esm2022/lib/barsa-chat-thread/barsa-chat-thread.component.mjs +0 -22
  34. package/esm2022/lib/barsa-chat-threads-list/barsa-chat-threads-list.component.mjs +0 -13
  35. package/esm2022/lib/barsa-chat-threads-list-toolbar/barsa-chat-threads-list-toolbar.component.mjs +0 -15
  36. package/esm2022/lib/barsa-chip/barsa-chip.component.mjs +0 -72
  37. package/esm2022/lib/barsa-column-indicator/barsa-column-indicator.component.mjs +0 -23
  38. package/esm2022/lib/barsa-column-rownumber/barsa-column-rownumber.component.mjs +0 -14
  39. package/esm2022/lib/barsa-custom-inline-edit/barsa-custom-inline-edit.component.mjs +0 -14
  40. package/esm2022/lib/barsa-custom-inline-edit-row/barsa-custom-inline-edit-row.component.mjs +0 -26
  41. package/esm2022/lib/barsa-date-time-picker/barsa-date-time-picker.component.mjs +0 -71
  42. package/esm2022/lib/barsa-dynamic-field/barsa-dynamic-field.component.mjs +0 -40
  43. package/esm2022/lib/barsa-enum-menu-button/barsa-enum-menu-button.component.mjs +0 -61
  44. package/esm2022/lib/barsa-field-key-value/barsa-field-key-value.component.mjs +0 -45
  45. package/esm2022/lib/barsa-form-layout-panel/barsa-form-layout-panel.component.mjs +0 -58
  46. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +0 -58
  47. package/esm2022/lib/barsa-grid-layout-panel/barsa-grid-layout-panel.component.mjs +0 -27
  48. package/esm2022/lib/barsa-group-cartable/barsa-cartable-group.component.mjs +0 -94
  49. package/esm2022/lib/barsa-horizontal-flex-panel/barsa-horizontal-flex-panel.component.mjs +0 -22
  50. package/esm2022/lib/barsa-img-skeleton/barsa-img-skeleton.component.mjs +0 -25
  51. package/esm2022/lib/barsa-linkable-items-panel/barsa-linkable-items-panel.component.mjs +0 -37
  52. package/esm2022/lib/barsa-list-file-linear/barsa-list-file-linear.component.mjs +0 -42
  53. package/esm2022/lib/barsa-list-file-linear-gmail/barsa-list-file-linear-gmail.component.mjs +0 -30
  54. package/esm2022/lib/barsa-list-layout-panel/barsa-list-layout-panel.component.mjs +0 -23
  55. package/esm2022/lib/barsa-modal/barsa-modal.component.mjs +0 -43
  56. package/esm2022/lib/barsa-monaco-editor/barsa-monaco-editor.component.mjs +0 -83
  57. package/esm2022/lib/barsa-network-offline/barsa-network-offline.component.mjs +0 -57
  58. package/esm2022/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +0 -159
  59. package/esm2022/lib/barsa-question-answer-comments-section/barsa-question-answer-comments-section.component.mjs +0 -17
  60. package/esm2022/lib/barsa-question-answer-content-actions-section/barsa-question-answer-content-actions-section.component.mjs +0 -30
  61. package/esm2022/lib/barsa-question-answer-creator-time-section/barsa-question-answer-creator-time-section.component.mjs +0 -14
  62. package/esm2022/lib/barsa-question-answer-form/barsa-question-answer-form.component.mjs +0 -34
  63. package/esm2022/lib/barsa-question-answer-form-add-comment/barsa-question-answer-form-add-comment.component.mjs +0 -46
  64. package/esm2022/lib/barsa-question-answer-vote-section/barsa-question-answer-vote-section.component.mjs +0 -79
  65. package/esm2022/lib/barsa-question-post/barsa-question-post.component.mjs +0 -30
  66. package/esm2022/lib/barsa-report-card-flex-view/barsa-report-card-flex-view.component.mjs +0 -31
  67. package/esm2022/lib/barsa-report-checkbox-switch-button/barsa-report-checkbox-switch-button.component.mjs +0 -28
  68. package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +0 -103
  69. package/esm2022/lib/barsa-row-inline-actionlist/barsa-row-inline-actionlist.component.mjs +0 -26
  70. package/esm2022/lib/barsa-sap-ui-routing.module.mjs +0 -18
  71. package/esm2022/lib/barsa-sap-ui.module.mjs +0 -369
  72. package/esm2022/lib/barsa-search-form/barsa-search-form.component.mjs +0 -30
  73. package/esm2022/lib/barsa-simple-form/barsa-simple-form.component.mjs +0 -171
  74. package/esm2022/lib/barsa-tab-route-manager/barsa-tab-route-manager.component.mjs +0 -18
  75. package/esm2022/lib/barsa-table-column/barsa-table-column.component.mjs +0 -29
  76. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +0 -230
  77. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +0 -102
  78. package/esm2022/lib/barsa-tag-categories/barsa-tag-categories.component.mjs +0 -60
  79. package/esm2022/lib/barsa-tag-chip/barsa-tag-chip.component.mjs +0 -26
  80. package/esm2022/lib/barsa-tags-category-row/barsa-tags-category-row.component.mjs +0 -23
  81. package/esm2022/lib/barsa-text-ellipsis/barsa-text-ellipsis.component.mjs +0 -37
  82. package/esm2022/lib/barsa-theme/barsa-theme.component.mjs +0 -121
  83. package/esm2022/lib/barsa-tinyemce/barsa-tinyemce.component.mjs +0 -419
  84. package/esm2022/lib/barsa-toolbaritem-search/barsa-toolbaritem-search.component.mjs +0 -36
  85. package/esm2022/lib/barsa-tree-item/barsa-tree-item.component.mjs +0 -153
  86. package/esm2022/lib/barsa-tree-item/node-has-one-depth-level.pipe.mjs +0 -20
  87. package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +0 -248
  88. package/esm2022/lib/blob-viewer/blob-viewer.component.mjs +0 -79
  89. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -52
  90. package/esm2022/lib/captcha-field/captcha-field.component.mjs +0 -33
  91. package/esm2022/lib/card-item/card-item.component.mjs +0 -79
  92. package/esm2022/lib/card-view-content/card-view-content.component.mjs +0 -46
  93. package/esm2022/lib/col-renderer.directive.mjs +0 -47
  94. package/esm2022/lib/column-matrix-renderer/column-matrix-renderer.component.mjs +0 -56
  95. package/esm2022/lib/column-matrix-renderer/matrix-value.pipe.mjs +0 -61
  96. package/esm2022/lib/column-renderer/column-renderer.component.mjs +0 -108
  97. package/esm2022/lib/constants.mjs +0 -450
  98. package/esm2022/lib/contentDensity.directive.mjs +0 -25
  99. package/esm2022/lib/custom-date-time/custom-date-time.component.mjs +0 -41
  100. package/esm2022/lib/device-info-field-base.mjs +0 -24
  101. package/esm2022/lib/dialog-handler.directive.mjs +0 -29
  102. package/esm2022/lib/download-files.directive.mjs +0 -34
  103. package/esm2022/lib/dynamic-page-size.pipe.mjs +0 -27
  104. package/esm2022/lib/file-in-dialog/file-in-dialog.component.mjs +0 -44
  105. package/esm2022/lib/file-viewer/file-viewer.component.mjs +0 -47
  106. package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +0 -80
  107. package/esm2022/lib/file-viewer-popover/file-viewer-popover.component.mjs +0 -40
  108. package/esm2022/lib/form-dialog/form-dialog.component.mjs +0 -175
  109. package/esm2022/lib/form-dialog-less/form-dialog-less.component.mjs +0 -50
  110. package/esm2022/lib/form-toolbar/form-toolbar.component.mjs +0 -62
  111. package/esm2022/lib/form-toolbar-button/form-toolbar-button.component.mjs +0 -45
  112. package/esm2022/lib/form-wizard/form-wizard.component.mjs +0 -22
  113. package/esm2022/lib/fullscreen-dialog.directive.mjs +0 -60
  114. package/esm2022/lib/fullscreen-files.directive.mjs +0 -43
  115. package/esm2022/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +0 -220
  116. package/esm2022/lib/gantt-dhtml-chart-view/gantt-dhtml-chart-view.component.mjs +0 -215
  117. package/esm2022/lib/global-search/global-search.component.mjs +0 -27
  118. package/esm2022/lib/global-search-module/global-search-module.component.mjs +0 -29
  119. package/esm2022/lib/global-search-panel/global-search-panel.component.mjs +0 -25
  120. package/esm2022/lib/header-avatar/header-avatar.component.mjs +0 -18
  121. package/esm2022/lib/htree-create-new/htree-create-new.component.mjs +0 -48
  122. package/esm2022/lib/hyperlink/hyperlink.component.mjs +0 -23
  123. package/esm2022/lib/index.mjs +0 -467
  124. package/esm2022/lib/inline-save-and-cancel/inline-save-and-cancel.component.mjs +0 -32
  125. package/esm2022/lib/layout-actions/layout-actions.component.mjs +0 -70
  126. package/esm2022/lib/layout-control/layout-control.component.mjs +0 -320
  127. package/esm2022/lib/layout-wizard/layout-wizard.component.mjs +0 -180
  128. package/esm2022/lib/list-item/list-item.component.mjs +0 -34
  129. package/esm2022/lib/ly-empty-space/ly-empty-space.component.mjs +0 -42
  130. package/esm2022/lib/ly-horizontal-layout/ly-horizontal-layout.component.mjs +0 -82
  131. package/esm2022/lib/ly-label/ly-label.component.mjs +0 -39
  132. package/esm2022/lib/ly-layout-container/ly-layout-container.component.mjs +0 -83
  133. package/esm2022/lib/ly-layout-container-of-root/ly-layout-container-of-root.component.mjs +0 -24
  134. package/esm2022/lib/ly-layout-field-label/ly-layout-field-label.component.mjs +0 -24
  135. package/esm2022/lib/ly-layout-panel/ly-layout-panel.component.mjs +0 -92
  136. package/esm2022/lib/ly-line/ly-line.component.mjs +0 -56
  137. package/esm2022/lib/ly-simple-label/ly-simple-label.component.mjs +0 -22
  138. package/esm2022/lib/ly-tab-container/ly-tab-container.component.mjs +0 -44
  139. package/esm2022/lib/ly-tab-page/ly-tab-page.component.mjs +0 -49
  140. package/esm2022/lib/ly-vertical-layout/ly-vertical-layout.component.mjs +0 -51
  141. package/esm2022/lib/manage-filters-report/manage-filters-report.component.mjs +0 -43
  142. package/esm2022/lib/mask/mask.component.mjs +0 -22
  143. package/esm2022/lib/message-strip/message-strip.component.mjs +0 -29
  144. package/esm2022/lib/models/grid-data-provider.mjs +0 -121
  145. package/esm2022/lib/models/grid-view.mjs +0 -2
  146. package/esm2022/lib/models/index.mjs +0 -2
  147. package/esm2022/lib/no-data/no-data.component.mjs +0 -30
  148. package/esm2022/lib/notification-item/notification-item.component.mjs +0 -57
  149. package/esm2022/lib/notification-item-actions/notification-item-actions.component.mjs +0 -79
  150. package/esm2022/lib/notification-popup.service.mjs +0 -92
  151. package/esm2022/lib/object-status-icon.pipe.mjs +0 -27
  152. package/esm2022/lib/progress-indicator/progress-indicator.component.mjs +0 -18
  153. package/esm2022/lib/report-navigator/report-navigator.component.mjs +0 -75
  154. package/esm2022/lib/report-new-top-form/report-new-top-form.component.mjs +0 -61
  155. package/esm2022/lib/report-search-fields-hidden-settings/report-search-fields-hidden-settings.component.mjs +0 -35
  156. package/esm2022/lib/report-search-fields-manage/report-search-fields-manage.component.mjs +0 -97
  157. package/esm2022/lib/report-search-panel-save/report-search-panel-save.component.mjs +0 -88
  158. package/esm2022/lib/report-tree-base.mjs +0 -387
  159. package/esm2022/lib/report-view-renderer.directive.mjs +0 -395
  160. package/esm2022/lib/responsive-toolbar/responsive-toolbar.component.mjs +0 -50
  161. package/esm2022/lib/responsive-toolbar-renderer/responsive-toolbar-renderer.component.mjs +0 -84
  162. package/esm2022/lib/rich-text-static/rich-text-static.component.mjs +0 -74
  163. package/esm2022/lib/sap-font-class.pipe.mjs +0 -30
  164. package/esm2022/lib/sap-font.pipe.mjs +0 -30
  165. package/esm2022/lib/sap-size.pipe.mjs +0 -28
  166. package/esm2022/lib/sap-ui-report-base.component.mjs +0 -819
  167. package/esm2022/lib/search-panel/search-panel.component.mjs +0 -63
  168. package/esm2022/lib/static-text/static-text.component.mjs +0 -15
  169. package/esm2022/lib/table-th.directive.mjs +0 -87
  170. package/esm2022/lib/title/title.component.mjs +0 -15
  171. package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +0 -44
  172. package/esm2022/lib/ui-bpmn-viewer/ui-bpmn-viewer.component.mjs +0 -33
  173. package/esm2022/lib/ui-button/ui-button.component.mjs +0 -32
  174. package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +0 -54
  175. package/esm2022/lib/ui-card-view/ui-card-view.component.mjs +0 -63
  176. package/esm2022/lib/ui-card-view-horizontal-group/ui-card-view-horizontal-group.component.mjs +0 -43
  177. package/esm2022/lib/ui-check-box/ui-check-box.component.mjs +0 -44
  178. package/esm2022/lib/ui-color-ui/ui-color-ui.component.mjs +0 -50
  179. package/esm2022/lib/ui-container-with-button/ui-container-with-button.component.mjs +0 -38
  180. package/esm2022/lib/ui-date-range-ex/ui-date-range-ex.component.mjs +0 -191
  181. package/esm2022/lib/ui-date-time/ui-date-time.component.mjs +0 -150
  182. package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +0 -111
  183. package/esm2022/lib/ui-exception-form/ui-exception-form.component.mjs +0 -53
  184. package/esm2022/lib/ui-file-linear-list-box/ui-file-linear-list-box.component.mjs +0 -138
  185. package/esm2022/lib/ui-form-panel/ui-form-panel.component.mjs +0 -104
  186. package/esm2022/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +0 -33
  187. package/esm2022/lib/ui-graph/ui-graph.component.mjs +0 -17
  188. package/esm2022/lib/ui-grid/ui-grid.component.mjs +0 -26
  189. package/esm2022/lib/ui-grid-columns/ui-grid-columns.component.mjs +0 -43
  190. package/esm2022/lib/ui-grid-filter-item/ui-grid-filter-item.component.mjs +0 -66
  191. package/esm2022/lib/ui-grid-filter-settings/ui-grid-filter-settings.component.mjs +0 -75
  192. package/esm2022/lib/ui-grid-sort-item/ui-grid-sort-item.component.mjs +0 -58
  193. package/esm2022/lib/ui-grid-sort-setting/ui-grid-sort-setting.component.mjs +0 -123
  194. package/esm2022/lib/ui-html-viewer/ui-html-viewer.component.mjs +0 -16
  195. package/esm2022/lib/ui-info-bar-panel/ui-info-bar-panel.component.mjs +0 -11
  196. package/esm2022/lib/ui-label/ui-label.component.mjs +0 -12
  197. package/esm2022/lib/ui-linear-list-container-with-button/ui-linear-list-container-with-button.component.mjs +0 -405
  198. package/esm2022/lib/ui-list-view/ui-list-view.component.mjs +0 -85
  199. package/esm2022/lib/ui-map/ui-map.component.mjs +0 -68
  200. package/esm2022/lib/ui-matrix-view/ui-matrix-view.component.mjs +0 -124
  201. package/esm2022/lib/ui-mo-info-combo-viewer/ui-mo-info-combo-viewer.component.mjs +0 -19
  202. package/esm2022/lib/ui-mo-info-general-object-ui/ui-mo-info-general-object-ui.component.mjs +0 -14
  203. package/esm2022/lib/ui-mo-info-sub-form-ui/ui-mo-info-sub-form-ui.component.mjs +0 -55
  204. package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +0 -450
  205. package/esm2022/lib/ui-monaco-editor/ui-monaco-editor.component.mjs +0 -28
  206. package/esm2022/lib/ui-multi-select-card/ui-multi-select-card.component.mjs +0 -37
  207. package/esm2022/lib/ui-multi-select-checkbox/ui-multi-select-checkbox.component.mjs +0 -59
  208. package/esm2022/lib/ui-multi-select-combo/ui-multi-select-combo.component.mjs +0 -117
  209. package/esm2022/lib/ui-multi-select-radio/ui-multi-select-radio.component.mjs +0 -36
  210. package/esm2022/lib/ui-multi-select-slider/ui-multi-select-slider.component.mjs +0 -56
  211. package/esm2022/lib/ui-multi-select-smile/ui-multi-select-smile.component.mjs +0 -28
  212. package/esm2022/lib/ui-notification-view/ui-notification-view.component.mjs +0 -47
  213. package/esm2022/lib/ui-num-decimal-ui/ui-num-decimal-ui.component.mjs +0 -33
  214. package/esm2022/lib/ui-num-int-slider/ui-num-int-slider.component.mjs +0 -27
  215. package/esm2022/lib/ui-num-int-ui/ui-num-int-ui.component.mjs +0 -21
  216. package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +0 -271
  217. package/esm2022/lib/ui-picture-file/ui-picture-file.component.mjs +0 -103
  218. package/esm2022/lib/ui-pictures-info/ui-pictures-info.component.mjs +0 -260
  219. package/esm2022/lib/ui-radio-group/ui-radio-group.component.mjs +0 -48
  220. package/esm2022/lib/ui-read-only-field/ui-read-only-field.component.mjs +0 -36
  221. package/esm2022/lib/ui-report-carousel-view/ui-report-carousel-view.component.mjs +0 -140
  222. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +0 -66
  223. package/esm2022/lib/ui-search-command-info-ui/ui-search-command-info-ui.component.mjs +0 -24
  224. package/esm2022/lib/ui-simple-combo/ui-simple-combo.component.mjs +0 -55
  225. package/esm2022/lib/ui-single-picture/ui-single-picture.component.mjs +0 -36
  226. package/esm2022/lib/ui-switch-button/ui-switch-button.component.mjs +0 -20
  227. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +0 -296
  228. package/esm2022/lib/ui-text-area/ui-text-area.component.mjs +0 -50
  229. package/esm2022/lib/ui-text-field/ui-text-field.component.mjs +0 -52
  230. package/esm2022/lib/ui-text-field-auto-complete/ui-text-field-auto-complete.component.mjs +0 -48
  231. package/esm2022/lib/ui-time-span/ui-time-span.component.mjs +0 -24
  232. package/esm2022/lib/ui-tinymce/ui-tinymce.component.mjs +0 -50
  233. package/esm2022/lib/ui-tree/ui-tree.component.mjs +0 -115
  234. package/esm2022/lib/ui-tree-view/ui-tree-view.component.mjs +0 -100
  235. package/esm2022/lib/ui-ulv-form-multi-select-ui/ui-ulv-form-multi-select-ui.component.mjs +0 -23
  236. package/esm2022/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +0 -313
  237. package/esm2022/lib/ui-workflow-panel-ui/ui-workflow-panel-ui.component.mjs +0 -25
  238. package/esm2022/lib/ul-loading-mask-ui/ul-loading-mask-ui.component.mjs +0 -93
  239. package/esm2022/lib/ul-msg-box-adapter/ul-msg-box-adapter.component.mjs +0 -119
  240. package/esm2022/lib/ul-notify-popup/ul-notify-popup.component.mjs +0 -32
  241. package/esm2022/lib/ul-toast-adapter/ul-toast-adapter.component.mjs +0 -48
  242. package/esm2022/lib/ulv-column-settings/ulv-column-settings.component.mjs +0 -53
  243. package/esm2022/lib/ulv-context-menu/ulv-context-menu.component.mjs +0 -116
  244. package/esm2022/lib/ulv-filter-settings/ulv-filter-settings.component.mjs +0 -43
  245. package/esm2022/lib/ulv-form-multi-select/ulv-form-multi-select.component.mjs +0 -196
  246. package/esm2022/lib/ulv-groupby-settings/ulv-groupby-settings.component.mjs +0 -44
  247. package/esm2022/lib/ulv-paging/ulv-paging.component.mjs +0 -84
  248. package/esm2022/lib/ulv-selection/ulv-selection.component.mjs +0 -65
  249. package/esm2022/lib/ulv-settings/ulv-settings.component.mjs +0 -116
  250. package/esm2022/lib/ulv-sort-settings/ulv-sort-settings.component.mjs +0 -54
  251. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +0 -177
  252. package/esm2022/lib/upload-file-status.pipe.mjs +0 -29
  253. package/esm2022/lib/util-chat-time-badge.pipe.mjs +0 -18
  254. package/esm2022/lib/util-date-to-hh-mm.pipe.mjs +0 -23
  255. package/esm2022/lib/wizard-layout.directive.mjs +0 -104
  256. package/esm2022/public-api.mjs +0 -242
@@ -1,70 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { FormToolbarBaseComponent, getDeviceIsMobile } from 'barsa-novin-ray-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/cdk/overlay";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "barsa-novin-ray-core";
7
- import * as i4 from "@fundamental-ngx/core/bar";
8
- import * as i5 from "@fundamental-ngx/core/button";
9
- import * as i6 from "@fundamental-ngx/core/menu";
10
- import * as i7 from "@fundamental-ngx/core/popover";
11
- export class LayoutActionsComponent extends FormToolbarBaseComponent {
12
- constructor(_overlay) {
13
- super();
14
- this._overlay = _overlay;
15
- this.workflowChoiceSelect = new EventEmitter();
16
- this.autoClose = false;
17
- this.mobileBottomBar = false;
18
- this.hasButtons = false;
19
- this.scrollThrottle = 0;
20
- }
21
- ngOnInit() {
22
- super.ngOnInit();
23
- this.hasButtons = this.workflowButtons.length > 0 || this.buttons.length > 0;
24
- this.isMobile = getDeviceIsMobile();
25
- this.mobileBottomBar = this.isMobile && !this.standalone && this.hasButtons;
26
- this.repositionScrollStrategy = this._overlay.scrollStrategies.reposition({
27
- autoClose: this.autoClose,
28
- scrollThrottle: this.scrollThrottle
29
- });
30
- const workflowButtons = this.workflowButtons;
31
- // this.workflowButtonsComboMode = true;
32
- if (workflowButtons.length > 0) {
33
- this.buttons.forEach((c) => {
34
- if (typeof c === 'object') {
35
- c.design = 'standard';
36
- }
37
- });
38
- const lastButton = workflowButtons[workflowButtons.length - 1];
39
- if (lastButton.Choice) {
40
- lastButton.design = 'emphasized';
41
- }
42
- }
43
- }
44
- onAcceptWorkflow() {
45
- this.onToolClick(this.selectedWorkflowButton);
46
- }
47
- onWorkflowButtonSelected(workflowButton) {
48
- this.selectedWorkflowButton = workflowButton;
49
- this.workflowChoiceSelect.emit(workflowButton.Data);
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutActionsComponent, deps: [{ token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutActionsComponent, selector: "bsu-layout-actions", inputs: { workflowButtons: "workflowButtons", workflowButtonsComboMode: "workflowButtonsComboMode", canSend: "canSend", simple: "simple", footerDesign: "footerDesign" }, outputs: { workflowChoiceSelect: "workflowChoiceSelect" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"simple ? buttonsMode : defaultTemplate\"> </ng-container>\r\n<ng-template #defaultTemplate>\r\n @if (visible) { @if (hasButtons) {\r\n <div fd-bar [barDesign]=\"footerDesign ? footerDesign : 'footer'\" [inPage]=\"true\">\r\n @if (canSend && false) {\r\n <div fd-bar-left>\r\n <fd-bar-element class=\"forward\">\r\n <fd-popover\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n [scrollStrategy]=\"repositionScrollStrategy\"\r\n #forwardPopover\r\n >\r\n <fd-popover-control class=\"forward\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'Forward' | bbbTranslate\"></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 30vw; max-width: 30vw; min-height: 30vh\">\r\n <div fd-popover-body-header>\r\n <div fd-bar barDesign=\"header\" [cozy]=\"true\">\r\n <div fd-bar-right>\r\n <fd-bar-element\r\n ><button\r\n fd-button\r\n (click)=\"forwardPopover.close()\"\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"'decline'\"\r\n ></button>\r\n </fd-bar-element>\r\n <div fd-bar-left>\r\n <fd-bar-element>\u0627\u0631\u062C\u0627\u0639 \u0641\u0631\u0645 \u0628\u0647 \u0634\u062E\u0635 \u062F\u06CC\u06AF\u0631 </fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <bnrc-form-new\r\n class=\"form-erja\"\r\n [settings]=\"{\r\n MetaTypeDef: { Id: '', $Caption: '' },\r\n MetaView: { Id: '', $Caption: '' },\r\n DisableGenerateId: true\r\n }\"\r\n ></bnrc-form-new>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\" [cozy]=\"true\">\r\n <div fd-bar-right>\r\n <fd-button-bar [label]=\"'Send' | bbbTranslate\" fdType=\"emphasized\"></fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"forwardPopover.close()\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right>\r\n @if (workflowButtonsComboMode && workflowButtons.length) { @if(workflowButtons.length === 1){\r\n <fd-button-bar\r\n [fdType]=\"'emphasized'\"\r\n [label]=\"workflowButtons[0].text | bbbTranslate\"\r\n [glyph]=\"'accept'\"\r\n (click)=\"onWorkflowButtonSelected(workflowButtons[0]); onAcceptWorkflow()\"\r\n ></fd-button-bar>\r\n } @else{\r\n <button\r\n fd-button\r\n [fdMenu]=\"true\"\r\n fdType=\"emphasized\"\r\n [label]=\"selectedWorkflowButton?.text || 'Select' | bbbTranslate\"\r\n [ariaLabel]=\"selectedWorkflowButton?.text || 'Select' | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n <fd-menu #menu>\r\n @for (btn of workflowButtons; track btn) {\r\n <li fd-menu-item (click)=\"menu.close(); onWorkflowButtonSelected(btn)\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btn.text }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n <fd-button-bar\r\n [fdType]=\"'positive'\"\r\n [label]=\"'Send' | bbbTranslate\"\r\n [disabled]=\"!selectedWorkflowButton\"\r\n [glyph]=\"'accept'\"\r\n (click)=\"onAcceptWorkflow()\"\r\n ></fd-button-bar>\r\n } }@for (btn of buttons; track btn; let i = $index) { @if (btn.Data?.CustomUi?.Selector) {\r\n <bnrc-dynamic-form-toolbaritem\r\n class=\"fd-bar__element\"\r\n [component]=\"btn.Data.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n (btnClick)=\"onToolClick(btn)\"\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } @if (btn !== '-' && !btn.Data?.CustomUi?.Selector) {\r\n <fd-button-bar\r\n [fdType]=\"btn.design ? btn.design : btn.Data?.JsonExtraProp?.Design\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [glyph]=\"btn.newIcon ? btn.newIcon : btn.Data?.JsonExtraProp?.Icon\"\r\n (click)=\"onToolClick(btn)\"\r\n ></fd-button-bar>\r\n } }\r\n </div>\r\n </div>\r\n } } @if (mobileBottomBar) {\r\n <div style=\"background-color: transparent; height: 4rem\"></div>\r\n }\r\n</ng-template>\r\n<ng-template #buttonsMode>\r\n @for (btn of workflowButtons; track btn; let i = $index) { @if (btn !== '-') {\r\n <fd-button-bar\r\n [attr.workflowButton]=\"true\"\r\n [fdType]=\"btn.design ? btn.design : btn.Data?.JsonExtraProp?.Design\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [glyph]=\"btn.newIcon ? btn.newIcon : btn.Data?.JsonExtraProp?.Icon\"\r\n (click)=\"onToolClick(btn)\"\r\n ></fd-button-bar>\r\n } }\r\n</ng-template>\r\n", styles: [":host[rtl=true] fd-split-button{margin-left:.5rem}:host[rtl=false] fd-split-button{margin-right:.5rem}.forward button{min-width:6rem}.form-erja{padding-top:1rem;padding-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.FormNewComponent, selector: "bnrc-form-new", inputs: ["settings"] }, { kind: "component", type: i3.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "deviceSize", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "component", type: i4.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i4.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i4.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i4.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "component", type: i4.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i6.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i6.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i6.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i6.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: i6.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i7.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i7.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "directive", type: i7.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i7.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i7.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll"] }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutActionsComponent, decorators: [{
55
- type: Component,
56
- args: [{ selector: 'bsu-layout-actions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container *ngTemplateOutlet=\"simple ? buttonsMode : defaultTemplate\"> </ng-container>\r\n<ng-template #defaultTemplate>\r\n @if (visible) { @if (hasButtons) {\r\n <div fd-bar [barDesign]=\"footerDesign ? footerDesign : 'footer'\" [inPage]=\"true\">\r\n @if (canSend && false) {\r\n <div fd-bar-left>\r\n <fd-bar-element class=\"forward\">\r\n <fd-popover\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [closeOnOutsideClick]=\"false\"\r\n [scrollStrategy]=\"repositionScrollStrategy\"\r\n #forwardPopover\r\n >\r\n <fd-popover-control class=\"forward\">\r\n <button fd-button [fdType]=\"'standard'\" [label]=\"'Forward' | bbbTranslate\"></button>\r\n </fd-popover-control>\r\n <fd-popover-body style=\"min-width: 30vw; max-width: 30vw; min-height: 30vh\">\r\n <div fd-popover-body-header>\r\n <div fd-bar barDesign=\"header\" [cozy]=\"true\">\r\n <div fd-bar-right>\r\n <fd-bar-element\r\n ><button\r\n fd-button\r\n (click)=\"forwardPopover.close()\"\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"'decline'\"\r\n ></button>\r\n </fd-bar-element>\r\n <div fd-bar-left>\r\n <fd-bar-element>\u0627\u0631\u062C\u0627\u0639 \u0641\u0631\u0645 \u0628\u0647 \u0634\u062E\u0635 \u062F\u06CC\u06AF\u0631 </fd-bar-element>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <bnrc-form-new\r\n class=\"form-erja\"\r\n [settings]=\"{\r\n MetaTypeDef: { Id: '', $Caption: '' },\r\n MetaView: { Id: '', $Caption: '' },\r\n DisableGenerateId: true\r\n }\"\r\n ></bnrc-form-new>\r\n <div fd-popover-body-footer>\r\n <div fd-bar barDesign=\"footer\" [cozy]=\"true\">\r\n <div fd-bar-right>\r\n <fd-button-bar [label]=\"'Send' | bbbTranslate\" fdType=\"emphasized\"></fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Cancel' | bbbTranslate\"\r\n [fdType]=\"'transparent'\"\r\n (click)=\"forwardPopover.close()\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n </fd-popover>\r\n </fd-bar-element>\r\n </div>\r\n }\r\n <div fd-bar-right>\r\n @if (workflowButtonsComboMode && workflowButtons.length) { @if(workflowButtons.length === 1){\r\n <fd-button-bar\r\n [fdType]=\"'emphasized'\"\r\n [label]=\"workflowButtons[0].text | bbbTranslate\"\r\n [glyph]=\"'accept'\"\r\n (click)=\"onWorkflowButtonSelected(workflowButtons[0]); onAcceptWorkflow()\"\r\n ></fd-button-bar>\r\n } @else{\r\n <button\r\n fd-button\r\n [fdMenu]=\"true\"\r\n fdType=\"emphasized\"\r\n [label]=\"selectedWorkflowButton?.text || 'Select' | bbbTranslate\"\r\n [ariaLabel]=\"selectedWorkflowButton?.text || 'Select' | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n ></button>\r\n <fd-menu #menu>\r\n @for (btn of workflowButtons; track btn) {\r\n <li fd-menu-item (click)=\"menu.close(); onWorkflowButtonSelected(btn)\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btn.text }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n <fd-button-bar\r\n [fdType]=\"'positive'\"\r\n [label]=\"'Send' | bbbTranslate\"\r\n [disabled]=\"!selectedWorkflowButton\"\r\n [glyph]=\"'accept'\"\r\n (click)=\"onAcceptWorkflow()\"\r\n ></fd-button-bar>\r\n } }@for (btn of buttons; track btn; let i = $index) { @if (btn.Data?.CustomUi?.Selector) {\r\n <bnrc-dynamic-form-toolbaritem\r\n class=\"fd-bar__element\"\r\n [component]=\"btn.Data.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n (btnClick)=\"onToolClick(btn)\"\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } @if (btn !== '-' && !btn.Data?.CustomUi?.Selector) {\r\n <fd-button-bar\r\n [fdType]=\"btn.design ? btn.design : btn.Data?.JsonExtraProp?.Design\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [glyph]=\"btn.newIcon ? btn.newIcon : btn.Data?.JsonExtraProp?.Icon\"\r\n (click)=\"onToolClick(btn)\"\r\n ></fd-button-bar>\r\n } }\r\n </div>\r\n </div>\r\n } } @if (mobileBottomBar) {\r\n <div style=\"background-color: transparent; height: 4rem\"></div>\r\n }\r\n</ng-template>\r\n<ng-template #buttonsMode>\r\n @for (btn of workflowButtons; track btn; let i = $index) { @if (btn !== '-') {\r\n <fd-button-bar\r\n [attr.workflowButton]=\"true\"\r\n [fdType]=\"btn.design ? btn.design : btn.Data?.JsonExtraProp?.Design\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [glyph]=\"btn.newIcon ? btn.newIcon : btn.Data?.JsonExtraProp?.Icon\"\r\n (click)=\"onToolClick(btn)\"\r\n ></fd-button-bar>\r\n } }\r\n</ng-template>\r\n", styles: [":host[rtl=true] fd-split-button{margin-left:.5rem}:host[rtl=false] fd-split-button{margin-right:.5rem}.forward button{min-width:6rem}.form-erja{padding-top:1rem;padding-bottom:1rem}\n"] }]
57
- }], ctorParameters: () => [{ type: i1.Overlay }], propDecorators: { workflowButtons: [{
58
- type: Input
59
- }], workflowButtonsComboMode: [{
60
- type: Input
61
- }], canSend: [{
62
- type: Input
63
- }], simple: [{
64
- type: Input
65
- }], footerDesign: [{
66
- type: Input
67
- }], workflowChoiceSelect: [{
68
- type: Output
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWFjdGlvbnMvbGF5b3V0LWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWFjdGlvbnMvbGF5b3V0LWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBUW5GLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx3QkFBd0I7SUFjaEUsWUFBc0IsUUFBaUI7UUFDbkMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBUjdCLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJekQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO0lBR25CLENBQUM7SUFDRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzVFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztZQUN0RSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3RDLENBQUMsQ0FBQztRQUNILE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDN0Msd0NBQXdDO1FBQ3hDLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN2QixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN4QixDQUFDLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztnQkFDMUIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUNELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELHdCQUF3QixDQUFDLGNBQWM7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGNBQWMsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOytHQTlDUSxzQkFBc0I7bUdBQXRCLHNCQUFzQixzVENabkMsNDRNQThIQTs7NEZEbEhhLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLOzRFQUdSLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFyRGVzaWduVHlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBGb3JtVG9vbGJhckJhc2VDb21wb25lbnQsIGdldERldmljZUlzTW9iaWxlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWxheW91dC1hY3Rpb25zJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sYXlvdXQtYWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0QWN0aW9uc0NvbXBvbmVudCBleHRlbmRzIEZvcm1Ub29sYmFyQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSB3b3JrZmxvd0J1dHRvbnM6IGFueVtdO1xyXG4gICAgQElucHV0KCkgd29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2FuU2VuZDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHNpbXBsZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGZvb3RlckRlc2lnbjogQmFyRGVzaWduVHlwZTtcclxuICAgIEBPdXRwdXQoKSB3b3JrZmxvd0Nob2ljZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgc2VsZWN0ZWRXb3JrZmxvd0J1dHRvbjogYW55O1xyXG4gICAgaXNNb2JpbGU6IGJvb2xlYW47XHJcbiAgICByZXBvc2l0aW9uU2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5O1xyXG4gICAgYXV0b0Nsb3NlID0gZmFsc2U7XHJcbiAgICBtb2JpbGVCb3R0b21CYXIgPSBmYWxzZTtcclxuICAgIGhhc0J1dHRvbnMgPSBmYWxzZTtcclxuICAgIHNjcm9sbFRocm90dGxlID0gMDtcclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfb3ZlcmxheTogT3ZlcmxheSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMuaGFzQnV0dG9ucyA9IHRoaXMud29ya2Zsb3dCdXR0b25zLmxlbmd0aCA+IDAgfHwgdGhpcy5idXR0b25zLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVCb3R0b21CYXIgPSB0aGlzLmlzTW9iaWxlICYmICF0aGlzLnN0YW5kYWxvbmUgJiYgdGhpcy5oYXNCdXR0b25zO1xyXG4gICAgICAgIHRoaXMucmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe1xyXG4gICAgICAgICAgICBhdXRvQ2xvc2U6IHRoaXMuYXV0b0Nsb3NlLFxyXG4gICAgICAgICAgICBzY3JvbGxUaHJvdHRsZTogdGhpcy5zY3JvbGxUaHJvdHRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHdvcmtmbG93QnV0dG9ucyA9IHRoaXMud29ya2Zsb3dCdXR0b25zO1xyXG4gICAgICAgIC8vIHRoaXMud29ya2Zsb3dCdXR0b25zQ29tYm9Nb2RlID0gdHJ1ZTtcclxuICAgICAgICBpZiAod29ya2Zsb3dCdXR0b25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25zLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjLmRlc2lnbiA9ICdzdGFuZGFyZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0QnV0dG9uID0gd29ya2Zsb3dCdXR0b25zW3dvcmtmbG93QnV0dG9ucy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgaWYgKGxhc3RCdXR0b24uQ2hvaWNlKSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0QnV0dG9uLmRlc2lnbiA9ICdlbXBoYXNpemVkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uQWNjZXB0V29ya2Zsb3coKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvb2xDbGljayh0aGlzLnNlbGVjdGVkV29ya2Zsb3dCdXR0b24pO1xyXG4gICAgfVxyXG4gICAgb25Xb3JrZmxvd0J1dHRvblNlbGVjdGVkKHdvcmtmbG93QnV0dG9uKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdvcmtmbG93QnV0dG9uID0gd29ya2Zsb3dCdXR0b247XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nob2ljZVNlbGVjdC5lbWl0KHdvcmtmbG93QnV0dG9uLkRhdGEpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW1wbGUgPyBidXR0b25zTW9kZSA6IGRlZmF1bHRUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XHJcbiAgICBAaWYgKHZpc2libGUpIHsgQGlmIChoYXNCdXR0b25zKSB7XHJcbiAgICA8ZGl2IGZkLWJhciBbYmFyRGVzaWduXT1cImZvb3RlckRlc2lnbiA/IGZvb3RlckRlc2lnbiA6ICdmb290ZXInXCIgW2luUGFnZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgQGlmIChjYW5TZW5kICYmIGZhbHNlKSB7XHJcbiAgICAgICAgPGRpdiBmZC1iYXItbGVmdD5cclxuICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50IGNsYXNzPVwiZm9yd2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgPGZkLXBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsU3RyYXRlZ3ldPVwicmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5XCJcclxuICAgICAgICAgICAgICAgICAgICAjZm9yd2FyZFBvcG92ZXJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sIGNsYXNzPVwiZm9yd2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGZkLWJ1dHRvbiBbZmRUeXBlXT1cIidzdGFuZGFyZCdcIiBbbGFiZWxdPVwiJ0ZvcndhcmQnIHwgYmJiVHJhbnNsYXRlXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBzdHlsZT1cIm1pbi13aWR0aDogMzB2dzsgbWF4LXdpZHRoOiAzMHZ3OyBtaW4taGVpZ2h0OiAzMHZoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtcG9wb3Zlci1ib2R5LWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImhlYWRlclwiIFtjb3p5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3J3YXJkUG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInZGVjbGluZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJhci1lbGVtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1sZWZ0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50Ptin2LHYrNin2Lkg2YHYsdmFINio2Ycg2LTYrti1INiv24zar9ixIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Ym5yYy1mb3JtLW5ld1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWVyamFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldHRpbmdzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhVHlwZURlZjogeyBJZDogJycsICRDYXB0aW9uOiAnJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFWaWV3OiB7IElkOiAnJywgJENhcHRpb246ICcnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZUdlbmVyYXRlSWQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9ibnJjLWZvcm0tbmV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLXBvcG92ZXItYm9keS1mb290ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJmb290ZXJcIiBbY296eV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyIFtsYWJlbF09XCInU2VuZCcgfCBiYmJUcmFuc2xhdGVcIiBmZFR5cGU9XCJlbXBoYXNpemVkXCI+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDYW5jZWwnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9yd2FyZFBvcG92ZXIuY2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDwvZmQtYmFyLWVsZW1lbnQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxyXG4gICAgICAgICAgICBAaWYgKHdvcmtmbG93QnV0dG9uc0NvbWJvTW9kZSAmJiB3b3JrZmxvd0J1dHRvbnMubGVuZ3RoKSB7IEBpZih3b3JrZmxvd0J1dHRvbnMubGVuZ3RoID09PSAxKXtcclxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ2VtcGhhc2l6ZWQnXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ3b3JrZmxvd0J1dHRvbnNbMF0udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2FjY2VwdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uV29ya2Zsb3dCdXR0b25TZWxlY3RlZCh3b3JrZmxvd0J1dHRvbnNbMF0pOyBvbkFjY2VwdFdvcmtmbG93KClcIlxyXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICB9IEBlbHNle1xyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmZC1idXR0b25cclxuICAgICAgICAgICAgICAgIFtmZE1lbnVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcclxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzZWxlY3RlZFdvcmtmbG93QnV0dG9uPy50ZXh0IHx8ICdTZWxlY3QnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwic2VsZWN0ZWRXb3JrZmxvd0J1dHRvbj8udGV4dCB8fCAnU2VsZWN0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcclxuICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZmQtbWVudSAjbWVudT5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGJ0biBvZiB3b3JrZmxvd0J1dHRvbnM7IHRyYWNrIGJ0bikge1xyXG4gICAgICAgICAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSAoY2xpY2spPVwibWVudS5jbG9zZSgpOyBvbldvcmtmbG93QnV0dG9uU2VsZWN0ZWQoYnRuKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyBidG4udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZmQtbWVudT5cclxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcclxuICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3Bvc2l0aXZlJ1wiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbmQnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRXb3JrZmxvd0J1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2FjY2VwdCdcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWNjZXB0V29ya2Zsb3coKVwiXHJcbiAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICAgICAgICAgIH0gfUBmb3IgKGJ0biBvZiBidXR0b25zOyB0cmFjayBidG47IGxldCBpID0gJGluZGV4KSB7IEBpZiAoYnRuLkRhdGE/LkN1c3RvbVVpPy5TZWxlY3Rvcikge1xyXG4gICAgICAgICAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcclxuICAgICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiYnRuLkRhdGEuQ3VzdG9tVWlcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiYnRuXCJcclxuICAgICAgICAgICAgICAgIFtpc0VuYWJsZV09XCJidG4uQ29tbWFuZD8uX2lzRW5hYmxlXCJcclxuICAgICAgICAgICAgICAgIChidG5DbGljayk9XCJvblRvb2xDbGljayhidG4pXCJcclxuICAgICAgICAgICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XHJcbiAgICAgICAgICAgIH0gQGlmIChidG4gIT09ICctJyAmJiAhYnRuLkRhdGE/LkN1c3RvbVVpPy5TZWxlY3Rvcikge1xyXG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxyXG4gICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJidG4uZGVzaWduID8gYnRuLmRlc2lnbiA6IGJ0bi5EYXRhPy5Kc29uRXh0cmFQcm9wPy5EZXNpZ25cIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogYnRuLkRhdGE/Lkpzb25FeHRyYVByb3A/Lkljb25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9vbENsaWNrKGJ0bilcIlxyXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgfSB9IEBpZiAobW9iaWxlQm90dG9tQmFyKSB7XHJcbiAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGhlaWdodDogNHJlbVwiPjwvZGl2PlxyXG4gICAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2J1dHRvbnNNb2RlPlxyXG4gICAgQGZvciAoYnRuIG9mIHdvcmtmbG93QnV0dG9uczsgdHJhY2sgYnRuOyBsZXQgaSA9ICRpbmRleCkgeyBAaWYgKGJ0biAhPT0gJy0nKSB7XHJcbiAgICA8ZmQtYnV0dG9uLWJhclxyXG4gICAgICAgIFthdHRyLndvcmtmbG93QnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgIFtmZFR5cGVdPVwiYnRuLmRlc2lnbiA/IGJ0bi5kZXNpZ24gOiBidG4uRGF0YT8uSnNvbkV4dHJhUHJvcD8uRGVzaWduXCJcclxuICAgICAgICBbbGFiZWxdPVwiYnRuLnRleHQgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtnbHlwaF09XCJidG4ubmV3SWNvbiA/IGJ0bi5uZXdJY29uIDogYnRuLkRhdGE/Lkpzb25FeHRyYVByb3A/Lkljb25cIlxyXG4gICAgICAgIChjbGljayk9XCJvblRvb2xDbGljayhidG4pXCJcclxuICAgID48L2ZkLWJ1dHRvbi1iYXI+XHJcbiAgICB9IH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,320 +0,0 @@
1
- import { Component, ElementRef, HostBinding, Input, ViewChild, ChangeDetectionStrategy, SkipSelf, Output, EventEmitter } from '@angular/core';
2
- import { BarsaApi, LayoutItemBaseComponent, LayoutService, getDeviceIsMobile, measureText, getLabelWidth } from 'barsa-novin-ray-core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "barsa-novin-ray-core";
5
- import * as i2 from "@fundamental-ngx/core";
6
- import * as i3 from "@angular/platform-browser";
7
- import * as i4 from "../ly-label/ly-label.component";
8
- import * as i5 from "@angular/common";
9
- export class LayoutControlComponent extends LayoutItemBaseComponent {
10
- constructor(formPanelService, el, _contentDensityService, domSanitizer, _cdr, _ngZone, _renderer2, _bbbTranslate, _parentLayoutService) {
11
- super(formPanelService, _cdr);
12
- this.formPanelService = formPanelService;
13
- this.el = el;
14
- this.domSanitizer = domSanitizer;
15
- this._cdr = _cdr;
16
- this._ngZone = _ngZone;
17
- this._renderer2 = _renderer2;
18
- this._bbbTranslate = _bbbTranslate;
19
- this._parentLayoutService = _parentLayoutService;
20
- this.layoutControlClass = true;
21
- this.isContainer = true;
22
- this.readonlyiswraped = false;
23
- this._labelNotInRow = false;
24
- this.minHeight = '2.25rem';
25
- this.controlIsReadonly = false;
26
- this.isMobile = getDeviceIsMobile();
27
- this.events = new EventEmitter();
28
- this.hide = true;
29
- this.emptyText = this.domSanitizer.bypassSecurityTrustHtml('&#8203;');
30
- this.checkboxWidth = 'fit-content';
31
- /* eslint-disable */
32
- this.RefreshLabel = () => {
33
- this._refreshLabel();
34
- this.events.emit({ title: 'refreshLabel', data: this.config });
35
- this._cdr.markForCheck();
36
- };
37
- /* eslint-disable */
38
- this.SetVisible = (visible, refresh) => {
39
- this._ngZone.run(() => {
40
- this.config.FieldUi.Setting.IsVisible = visible;
41
- this._setHide(!visible);
42
- // this.config.FieldUi.Setting.$BRuleHide = !visible;
43
- this._cdr.detectChanges();
44
- });
45
- };
46
- if (this.contentDensity === 'compact') {
47
- this.minHeight = '2rem';
48
- }
49
- }
50
- ngOnChanges(changes) {
51
- super.ngOnChanges(changes);
52
- const { flex, maxLabelWidth } = changes;
53
- if (flex) {
54
- this._setFlex(flex.currentValue);
55
- }
56
- if (maxLabelWidth && !maxLabelWidth.firstChange) {
57
- this._setLabelWidth(maxLabelWidth.currentValue);
58
- }
59
- }
60
- ngOnInit() {
61
- super.ngOnInit();
62
- this.formHeight$ = this.formPanelService.formHeight$;
63
- this._setFlex(this.flex);
64
- this.layoutControlWidth = this.el.nativeElement.clientWidth;
65
- const config = this.config;
66
- const minHeightAuto = BarsaApi.Common.Util.TryGetValue(config, 'FieldUi.Setting.CustomUi.Parameters.MinHeightAuto', false);
67
- if (this.inlineEdit || minHeightAuto || this.isMobile) {
68
- this.minHeight = 'auto';
69
- }
70
- if (config.FieldUi.originalXtype === 'Ui.UlvMainUi') {
71
- this.isUlv = true;
72
- this._renderer2.addClass(this.el.nativeElement, 'isUlv');
73
- }
74
- this.attrCaption = config.Caption.replace(':', '');
75
- this.attrControlId = config.ControlId;
76
- this.isButton = config.FieldUi.originalXtype === 'Ui.Button';
77
- this._refreshLabel();
78
- this.isRowDirection = config.TextLocation === 'Right' || config.TextLocation === 'Default';
79
- this.isRowReverseDirection = config.TextLocation === 'Left';
80
- this.isColumnDirection = config.TextLocation === 'Top' || this.isSearchPanel;
81
- this.isColumnReverseDirection = config.TextLocation === 'Bottom';
82
- this._labelNotInRow = config.TextLocation === 'Top' || config.TextLocation === 'Bottom';
83
- config.FieldUi.LayoutControl = this;
84
- this.helpDescription = BarsaApi.Common.Util.TryGetValue(config.FieldUi, 'Setting.HelpDescription', '');
85
- this.fieldIcon = config.FieldUi.Setting.FieldIcon;
86
- this.controlIsReadonly = config.FieldUi.Setting.ControlIsReadOnly;
87
- this.controlIsReadonly =
88
- this.controlIsReadonly ||
89
- config.FieldUi.Setting.InnerCtrlr?.IsReadOnly ||
90
- config.FieldUi.Setting.InnerCtrlr?.xtype === 'Ul.ReadOnlyFieldCtrlr';
91
- this.originalXtype = config.FieldUi.originalXtype;
92
- this.textVisible = config.TextVisible;
93
- if (this.controlIsReadonly) {
94
- const x = measureText(config.FieldUi.value);
95
- if (x > this.el.nativeElement.offsetWidth && this.isMobile) {
96
- this.readonlyiswraped = true;
97
- }
98
- }
99
- if (config.FieldUi.originalXtype === 'Ui.SearchCommandInfoUi') {
100
- this.labelCaption = '&#8203;';
101
- this.labelVisible = true;
102
- this.textVisible = true;
103
- }
104
- this.prepareMinAndMaxSize();
105
- this._setLabelWidth(this.maxLabelWidth);
106
- }
107
- _refreshLabel() {
108
- const config = this.config;
109
- const labelCaption = config.Caption;
110
- // if (config.FieldUi.Setting?.IsMandatory) {
111
- // if (labelCaption.indexOf('*') < 0) {
112
- // labelCaption = labelCaption + ' *';
113
- // }
114
- // } else {
115
- // labelCaption = labelCaption.replace('*', '');
116
- // }
117
- this.isCheckbox = config.FieldUi.originalXtype === 'Ui.CheckBox';
118
- if (this.isCheckbox) {
119
- const x = measureText(labelCaption);
120
- if (x < this.maxLabelWidth && !this.isMobile) {
121
- this.checkboxWidth = `${this.maxLabelWidth}px`;
122
- }
123
- }
124
- this.isSinglePicture = config.FieldUi.originalXtype === 'Ui.SinglePicture';
125
- const colonLabel = this.formPanelService.ColonInLabel ? ':' : '';
126
- let translateCaption = `${this._bbbTranslate.transform(labelCaption)}${this.isSearchPanel || labelCaption === '&zwnj;' ? '' : colonLabel}`;
127
- this.isMandatory = config.FieldUi.Setting?.IsMandatory;
128
- if (this.isMandatory) {
129
- translateCaption = translateCaption.replace('*', '');
130
- translateCaption += `<strong class="field-mandatory">*</strong>`;
131
- }
132
- this.translateCaption = translateCaption;
133
- this.labelCaption = this.domSanitizer.bypassSecurityTrustHtml(translateCaption);
134
- this.labelVisible = config.TextVisible && this.showLabel !== false;
135
- const controlWidth = getLabelWidth(this.config);
136
- if (controlWidth && controlWidth > this.maxLabelWidth) {
137
- this._parentLayoutService.setMaxWidth(controlWidth);
138
- }
139
- this._setHide(config.FieldUi.Setting.IsVisible === false ? true : false);
140
- }
141
- _setLabelWidth(maxLabelWidth) {
142
- if (!this.tempLabelRef) {
143
- return;
144
- }
145
- const val = this.config.CaptionSetting?.AlignMode === 'AutoSize' ||
146
- (this.isMobile && (this.isCheckbox || this.controlIsReadonly))
147
- ? 'auto'
148
- : this.isColumnDirection || this.isColumnReverseDirection
149
- ? '100%'
150
- : maxLabelWidth + 'px';
151
- this._renderer2.setStyle(this.tempLabelRef.nativeElement, 'width', val);
152
- const minWidth = this.isCheckbox
153
- ? this.checkboxWidth
154
- : this.config.CaptionSetting?.AlignMode === 'AutoSize' || (this.isMobile && this.controlIsReadonly)
155
- ? 'fit-content'
156
- : this.isColumnDirection || this.isColumnReverseDirection
157
- ? '100%'
158
- : maxLabelWidth + 'px';
159
- this._renderer2.setStyle(this.tempLabelRef.nativeElement, 'min-width', minWidth);
160
- }
161
- _resizeUlvByDevice(device) {
162
- if (!this.isUlv) {
163
- return;
164
- }
165
- let deviceHeight = 'DesktopHeight';
166
- switch (device) {
167
- case 's':
168
- deviceHeight = 'MobileHeight';
169
- break;
170
- case 'm':
171
- deviceHeight = 'TabletHeight';
172
- break;
173
- }
174
- this.height = BarsaApi.Common.Util.TryGetValue(this.config, 'FieldUi.Setting.ClassNames.CustomUi.Parameters.' + deviceHeight, 'auto');
175
- this._cdr.detectChanges();
176
- }
177
- prepareMinAndMaxSize() {
178
- const config = this.config;
179
- const layoutInfo = config;
180
- const isButton = this.isButton;
181
- const isSinglePicture = this.isSinglePicture;
182
- const isCheckbox = this.isCheckbox;
183
- if (!this.inlineEdit && layoutInfo && (isButton || isCheckbox || isSinglePicture)) {
184
- this.attrMinWidth = config.Bounds.width;
185
- let extraVal = 0;
186
- if (((isButton || isCheckbox) && layoutInfo.FieldUi.Setting?.FieldIcon) ||
187
- layoutInfo.FieldUi.Setting.JsonExtraProp?.Glyph) {
188
- extraVal = 18;
189
- }
190
- const { MaxSize, MinSize } = layoutInfo;
191
- if (MaxSize?.width > 0 && !this.isCheckbox) {
192
- this.maxWidth = MaxSize.width + extraVal + 'px';
193
- }
194
- if (MinSize?.width > 0) {
195
- this.minWidth = MinSize.width + extraVal + 'px';
196
- }
197
- }
198
- if (this.isSearchPanel) {
199
- this.attrMinWidth = this.maxLabelWidth + 200;
200
- if (!this.isSearcPanelInSideContent) {
201
- this.maxWidth = '320px';
202
- }
203
- }
204
- if (this.isMobile) {
205
- this.minWidth = null;
206
- }
207
- }
208
- _setHide(hide) {
209
- hide = this.config.FieldUi.Setting.HideSearchCommandInfoUi === true ? true : hide; // hide default buttons of search panel
210
- this.hide = hide;
211
- if (hide) {
212
- this._renderer2.addClass(this.el.nativeElement, 'hide-form-item');
213
- }
214
- else {
215
- this._renderer2.removeClass(this.el.nativeElement, 'hide-form-item');
216
- }
217
- }
218
- _setFlex(flex) {
219
- if (typeof flex !== 'undefined') {
220
- if (!this.isMobile || this.config.FieldUi.originalXtype !== 'Ui.TextArea')
221
- this._renderer2.setStyle(this.el.nativeElement, 'flex', flex);
222
- }
223
- }
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutControlComponent, deps: [{ token: i1.FormPanelService }, { token: i0.ElementRef }, { token: i2.ContentDensityService }, { token: i3.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.BbbTranslatePipe }, { token: i1.LayoutService, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutControlComponent, selector: "bsu-layout-control", inputs: { inlineEdit: "inlineEdit", cellEdit: "cellEdit", caption: "caption", focusControl: "focusControl", showLabel: "showLabel", maxLabelWidth: "maxLabelWidth", hasHorizontalText: "hasHorizontalText", contentDensity: "contentDensity", flex: "flex", RefreshLabel: "RefreshLabel", SetVisible: "SetVisible" }, outputs: { events: "events" }, host: { properties: { "class.layout-control": "this.layoutControlClass", "class.row-direction": "this.isRowDirection", "class.row-reverse-direction": "this.isRowReverseDirection", "class.column-direction": "this.isColumnDirection", "class.column-reverse-direction": "this.isColumnReverseDirection", "class.container-field": "this.isContainer", "class.readonlyiswraped": "this.readonlyiswraped", "class.labelnotinrow": "this._labelNotInRow", "style.max-width": "this.maxWidth", "style.min-width": "this.minWidth", "style.min-height": "this.minHeight", "style.height": "this.height", "attr.isCheckbox": "this.isCheckbox", "attr.controlIsReadonly": "this.controlIsReadonly", "attr.isButton": "this.isButton", "attr.issinglepicture": "this.isSinglePicture", "attr.minWidth": "this.attrMinWidth", "attr.ismobile": "this.isMobile", "attr.controlId": "this.attrControlId", "attr.caption": "this.attrCaption" } }, providers: [LayoutService], viewQueries: [{ propertyName: "tempLabelRef", first: true, predicate: ["tempLabelRef"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!hide) { @if (labelVisible) {\r\n<bsu-ly-label\r\n [attr.labelWidth]=\"labelWidth\"\r\n [attrRtl]\r\n #tempLabelRef\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [config]=\"config\"\r\n [caption]=\"labelCaption\"\r\n [translateCaption]=\"translateCaption\"\r\n [originalWidth]=\"labelWidth\"\r\n [style.min-width]=\"\r\n isCheckbox\r\n ? checkboxWidth\r\n : (config.CaptionSetting?.AlignMode === 'AutoSize' && !isMobile) || (isMobile && controlIsReadonly)\r\n ? 'fit-content'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [style.width]=\"\r\n (config.CaptionSetting?.AlignMode === 'AutoSize' && !isMobile) || (isMobile && (isCheckbox || controlIsReadonly))\r\n ? 'auto'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [isMandatory]=\"isMandatory\"\r\n [fieldIcon]=\"fieldIcon\"\r\n [attr.autosize]=\"config.CaptionSetting?.AlignMode ? true:null\"\r\n [helpDescription]=\"helpDescription\"\r\n [originalXtype]=\"originalXtype\"\r\n [textVisible]=\"textVisible\"\r\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\r\n></bsu-ly-label>\r\n}\r\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\r\n<bnrc-field-ui\r\n [attr.xtype]=\"config.FieldUi.originalXtype\"\r\n [attr.fieldWidth]=\"layoutControlWidth\"\r\n [attr.isCheckbox]=\"isCheckbox\"\r\n [attr.isbutton]=\"isButton\"\r\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [customField]=\"config.FieldUi\"\r\n [layoutInfo]=\"config\"\r\n [inlineEdit]=\"inlineEdit\"\r\n [cellEdit]=\"cellEdit\"\r\n [formHeight]=\"(formHeight$ | async)!!\"\r\n [focusControl]=\"focusControl\"\r\n [isSearchPanel]=\"isSearchPanel\"\r\n [style.height]=\"isUlv ? '100%' : 'auto'\"\r\n [attr.isulv]=\"isUlv\"\r\n></bnrc-field-ui>\r\n}\r\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bsu-ly-label[autosize=true]{margin:inherit}:host[ismobile=true] bsu-ly-label{margin:inherit}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"], dependencies: [{ kind: "component", type: i1.FieldUiComponent, selector: "bnrc-field-ui", inputs: ["isSearchPanel", "customField", "componentUi", "layoutInfo", "inlineEdit", "focusControl", "cellEdit", "formHeight"] }, { kind: "directive", type: i1.AttrRtlDirective, selector: "[attrRtl]", inputs: ["attrRtl"] }, { kind: "component", type: i4.LyLabelComponent, selector: "bsu-ly-label", inputs: ["originalWidth", "minWidth", "translateCaption", "caption", "captionIcon", "helpDescription", "isColumn", "isMandatory", "fieldIcon", "originalXtype", "textVisible"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
226
- }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutControlComponent, decorators: [{
228
- type: Component,
229
- args: [{ selector: 'bsu-layout-control', providers: [LayoutService], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "@if (!hide) { @if (labelVisible) {\r\n<bsu-ly-label\r\n [attr.labelWidth]=\"labelWidth\"\r\n [attrRtl]\r\n #tempLabelRef\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [config]=\"config\"\r\n [caption]=\"labelCaption\"\r\n [translateCaption]=\"translateCaption\"\r\n [originalWidth]=\"labelWidth\"\r\n [style.min-width]=\"\r\n isCheckbox\r\n ? checkboxWidth\r\n : (config.CaptionSetting?.AlignMode === 'AutoSize' && !isMobile) || (isMobile && controlIsReadonly)\r\n ? 'fit-content'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [style.width]=\"\r\n (config.CaptionSetting?.AlignMode === 'AutoSize' && !isMobile) || (isMobile && (isCheckbox || controlIsReadonly))\r\n ? 'auto'\r\n : isColumnDirection || isColumnReverseDirection\r\n ? '100%'\r\n : maxLabelWidth + 'px'\r\n \"\r\n [isMandatory]=\"isMandatory\"\r\n [fieldIcon]=\"fieldIcon\"\r\n [attr.autosize]=\"config.CaptionSetting?.AlignMode ? true:null\"\r\n [helpDescription]=\"helpDescription\"\r\n [originalXtype]=\"originalXtype\"\r\n [textVisible]=\"textVisible\"\r\n [isColumn]=\"isColumnDirection || isColumnReverseDirection\"\r\n></bsu-ly-label>\r\n}\r\n<label [attr.visible]=\"labelVisible\" class=\"horizontal-label\" [innerHtml]=\"emptyText\"></label>\r\n<bnrc-field-ui\r\n [attr.xtype]=\"config.FieldUi.originalXtype\"\r\n [attr.fieldWidth]=\"layoutControlWidth\"\r\n [attr.isCheckbox]=\"isCheckbox\"\r\n [attr.isbutton]=\"isButton\"\r\n [style.flex-grow]=\"isCheckbox ? 1 : 0\"\r\n [class.no-padding]=\"config.Padding[0] === 0\"\r\n [customField]=\"config.FieldUi\"\r\n [layoutInfo]=\"config\"\r\n [inlineEdit]=\"inlineEdit\"\r\n [cellEdit]=\"cellEdit\"\r\n [formHeight]=\"(formHeight$ | async)!!\"\r\n [focusControl]=\"focusControl\"\r\n [isSearchPanel]=\"isSearchPanel\"\r\n [style.height]=\"isUlv ? '100%' : 'auto'\"\r\n [attr.isulv]=\"isUlv\"\r\n></bnrc-field-ui>\r\n}\r\n", styles: [":host{width:100%;display:flex}:host[ismobile=true].isUlv{width:100%!important}.form-item-label-container{display:flex;position:relative}.lbl-temp{position:absolute;visibility:hidden}bsu-ly-label{padding:0 5px;margin:auto}bsu-ly-label[autosize=true]{margin:inherit}:host[ismobile=true] bsu-ly-label{margin:inherit}bnrc-field-ui[xtype=\"Ui.CheckBox\"]{padding:0}@media screen and (max-width: 599px){:host{height:auto}:host:not([isbutton=true]){min-width:7rem}bnrc-field-ui:not([isbutton=true]){height:auto!important}}\n"] }]
230
- }], ctorParameters: () => [{ type: i1.FormPanelService }, { type: i0.ElementRef }, { type: i2.ContentDensityService }, { type: i3.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.BbbTranslatePipe }, { type: i1.LayoutService, decorators: [{
231
- type: SkipSelf
232
- }] }], propDecorators: { tempLabelRef: [{
233
- type: ViewChild,
234
- args: ['tempLabelRef', { read: ElementRef }]
235
- }], layoutControlClass: [{
236
- type: HostBinding,
237
- args: ['class.layout-control']
238
- }], isRowDirection: [{
239
- type: HostBinding,
240
- args: ['class.row-direction']
241
- }], isRowReverseDirection: [{
242
- type: HostBinding,
243
- args: ['class.row-reverse-direction']
244
- }], isColumnDirection: [{
245
- type: HostBinding,
246
- args: ['class.column-direction']
247
- }], isColumnReverseDirection: [{
248
- type: HostBinding,
249
- args: ['class.column-reverse-direction']
250
- }], isContainer: [{
251
- type: HostBinding,
252
- args: ['class.container-field']
253
- }], readonlyiswraped: [{
254
- type: HostBinding,
255
- args: ['class.readonlyiswraped']
256
- }], _labelNotInRow: [{
257
- type: HostBinding,
258
- args: ['class.labelnotinrow']
259
- }], maxWidth: [{
260
- type: HostBinding,
261
- args: ['style.max-width']
262
- }], minWidth: [{
263
- type: HostBinding,
264
- args: ['style.min-width']
265
- }], minHeight: [{
266
- type: HostBinding,
267
- args: ['style.min-height']
268
- }], height: [{
269
- type: HostBinding,
270
- args: ['style.height']
271
- }], isCheckbox: [{
272
- type: HostBinding,
273
- args: ['attr.isCheckbox']
274
- }], controlIsReadonly: [{
275
- type: HostBinding,
276
- args: ['attr.controlIsReadonly']
277
- }], isButton: [{
278
- type: HostBinding,
279
- args: ['attr.isButton']
280
- }], isSinglePicture: [{
281
- type: HostBinding,
282
- args: ['attr.issinglepicture']
283
- }], attrMinWidth: [{
284
- type: HostBinding,
285
- args: ['attr.minWidth']
286
- }], isMobile: [{
287
- type: HostBinding,
288
- args: ['attr.ismobile']
289
- }], attrControlId: [{
290
- type: HostBinding,
291
- args: ['attr.controlId']
292
- }], attrCaption: [{
293
- type: HostBinding,
294
- args: ['attr.caption']
295
- }], inlineEdit: [{
296
- type: Input
297
- }], cellEdit: [{
298
- type: Input
299
- }], caption: [{
300
- type: Input
301
- }], focusControl: [{
302
- type: Input
303
- }], showLabel: [{
304
- type: Input
305
- }], maxLabelWidth: [{
306
- type: Input
307
- }], hasHorizontalText: [{
308
- type: Input
309
- }], contentDensity: [{
310
- type: Input
311
- }], flex: [{
312
- type: Input
313
- }], events: [{
314
- type: Output
315
- }], RefreshLabel: [{
316
- type: Input
317
- }], SetVisible: [{
318
- type: Input
319
- }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvbGF5b3V0LWNvbnRyb2wvbGF5b3V0LWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsdUJBQXVCLEVBTXZCLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLGFBQWEsRUFFYixpQkFBaUIsRUFFakIsV0FBVyxFQUNYLGFBQWEsRUFDaEIsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7OztBQVU5QixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsdUJBQXVCO0lBdUQvRCxZQUNjLGdCQUFrQyxFQUNyQyxFQUFjLEVBQ3JCLHNCQUE2QyxFQUNuQyxZQUEwQixFQUMxQixJQUF1QixFQUN2QixPQUFlLEVBQ2YsVUFBcUIsRUFDckIsYUFBK0IsRUFDbkIsb0JBQW1DO1FBRXpELEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQVZwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3JDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFFWCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUNyQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDbkIs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O3VCQUFDLGNBQWM7Z0JBQ0ssVUFBVTtzQkFBekMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ1MsaUJBQWlCO3NCQUF2RCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFDUCxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ1MsZUFBZTtzQkFBbkQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ0wsWUFBWTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQUNFLFFBQVE7c0JBQXJDLFdBQVc7dUJBQUMsZUFBZTtnQkFDRyxhQUFhO3NCQUEzQyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFDQSxXQUFXO3NCQUF2QyxXQUFXO3VCQUFDLGNBQWM7Z0JBQ2xCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkF5TkUsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIE5nWm9uZSxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIE9uSW5pdCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIE91dHB1dCxcclxuICAgIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgQ29udGVudERlbnNpdHlTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBCYXJzYUFwaSxcclxuICAgIExheW91dEl0ZW1CYXNlQ29tcG9uZW50LFxyXG4gICAgTGF5b3V0U2VydmljZSxcclxuICAgIEZvcm1QYW5lbFNlcnZpY2UsXHJcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcclxuICAgIEJiYlRyYW5zbGF0ZVBpcGUsXHJcbiAgICBtZWFzdXJlVGV4dCxcclxuICAgIGdldExhYmVsV2lkdGhcclxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LWxheW91dC1jb250cm9sJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9sYXlvdXQtY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbTGF5b3V0U2VydmljZV0sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb250cm9sQ29tcG9uZW50IGV4dGVuZHMgTGF5b3V0SXRlbUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgndGVtcExhYmVsUmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICB0ZW1wTGFiZWxSZWY6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXlvdXQtY29udHJvbCcpIGxheW91dENvbnRyb2xDbGFzcyA9IHRydWU7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJvdy1kaXJlY3Rpb24nKSBpc1Jvd0RpcmVjdGlvbjtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3Mucm93LXJldmVyc2UtZGlyZWN0aW9uJykgaXNSb3dSZXZlcnNlRGlyZWN0aW9uO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2x1bW4tZGlyZWN0aW9uJykgaXNDb2x1bW5EaXJlY3Rpb247XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvbHVtbi1yZXZlcnNlLWRpcmVjdGlvbicpIGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvbjtcclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuY29udGFpbmVyLWZpZWxkJykgaXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZWFkb25seWlzd3JhcGVkJykgcmVhZG9ubHlpc3dyYXBlZCA9IGZhbHNlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYWJlbG5vdGlucm93JykgX2xhYmVsTm90SW5Sb3cgPSBmYWxzZTtcclxuICAgIC8vIEBIb3N0QmluZGluZygnc3R5bGUudmlzaWJpbGl0eScpIHZpc2liaWxpdHk6IHN0cmluZztcclxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJykgbWF4V2lkdGg7XHJcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi13aWR0aCcpIG1pbldpZHRoO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4taGVpZ2h0JykgbWluSGVpZ2h0ID0gJzIuMjVyZW0nO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBoZWlnaHQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaXNDaGVja2JveCcpIGlzQ2hlY2tib3g7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuY29udHJvbElzUmVhZG9ubHknKSBjb250cm9sSXNSZWFkb25seSA9IGZhbHNlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzQnV0dG9uJykgaXNCdXR0b247XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaXNzaW5nbGVwaWN0dXJlJykgaXNTaW5nbGVQaWN0dXJlO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLm1pbldpZHRoJykgYXR0ck1pbldpZHRoO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlzbW9iaWxlJykgaXNNb2JpbGUgPSBnZXREZXZpY2VJc01vYmlsZSgpO1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmNvbnRyb2xJZCcpIGF0dHJDb250cm9sSWQ7XHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuY2FwdGlvbicpIGF0dHJDYXB0aW9uO1xyXG4gICAgQElucHV0KCkgaW5saW5lRWRpdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGNlbGxFZGl0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2FwdGlvbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZm9jdXNDb250cm9sOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgbWF4TGFiZWxXaWR0aDogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgaGFzSG9yaXpvbnRhbFRleHQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XHJcbiAgICBASW5wdXQoKSBmbGV4OiBzdHJpbmc7XHJcbiAgICBAT3V0cHV0KCkgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGRhdGE/OiBhbnkgfT4oKTtcclxuXHJcbiAgICBoaWRlID0gdHJ1ZTtcclxuICAgIGxheW91dFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgd3JhcENvbnRlbnQ6IGJvb2xlYW47XHJcbiAgICBsYWJlbFdpZHRoOiBudW1iZXI7XHJcbiAgICBsYWJlbENhcHRpb246IHN0cmluZyB8IFNhZmVIdG1sO1xyXG4gICAgbGFiZWxWaXNpYmxlPzogYm9vbGVhbjtcclxuICAgIGxheW91dFNldFNpemU6IGJvb2xlYW47XHJcbiAgICBydGwkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gICAgaXNVbHY6IGJvb2xlYW47XHJcbiAgICBpc01hbmRhdG9yeTogYm9vbGVhbjtcclxuICAgIGZpZWxkSWNvbjogc3RyaW5nO1xyXG4gICAgb3JpZ2luYWxYdHlwZTogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRlQ2FwdGlvbjogc3RyaW5nO1xyXG4gICAgdGV4dFZpc2libGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgICBlbXB0eVRleHQgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgnJiM4MjAzOycpO1xyXG4gICAgbGF5b3V0Q29udHJvbFdpZHRoOiBudW1iZXI7XHJcbiAgICBmb3JtSGVpZ2h0JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xyXG4gICAgY2hlY2tib3hXaWR0aCA9ICdmaXQtY29udGVudCc7XHJcbiAgICBoZWxwRGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBmb3JtUGFuZWxTZXJ2aWNlOiBGb3JtUGFuZWxTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcclxuICAgICAgICBfY29udGVudERlbnNpdHlTZXJ2aWNlOiBDb250ZW50RGVuc2l0eVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcm90ZWN0ZWQgX25nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByb3RlY3RlZCBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9iYmJUcmFuc2xhdGU6IEJiYlRyYW5zbGF0ZVBpcGUsXHJcbiAgICAgICAgQFNraXBTZWxmKCkgcHJvdGVjdGVkIF9wYXJlbnRMYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihmb3JtUGFuZWxTZXJ2aWNlLCBfY2RyKTtcclxuICAgICAgICBpZiAodGhpcy5jb250ZW50RGVuc2l0eSA9PT0gJ2NvbXBhY3QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluSGVpZ2h0ID0gJzJyZW0nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IGZsZXgsIG1heExhYmVsV2lkdGggfSA9IGNoYW5nZXM7XHJcbiAgICAgICAgaWYgKGZsZXgpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0RmxleChmbGV4LmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtYXhMYWJlbFdpZHRoICYmICFtYXhMYWJlbFdpZHRoLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldExhYmVsV2lkdGgobWF4TGFiZWxXaWR0aC5jdXJyZW50VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtSGVpZ2h0JCA9IHRoaXMuZm9ybVBhbmVsU2VydmljZS5mb3JtSGVpZ2h0JDtcclxuICAgICAgICB0aGlzLl9zZXRGbGV4KHRoaXMuZmxleCk7XHJcblxyXG4gICAgICAgIHRoaXMubGF5b3V0Q29udHJvbFdpZHRoID0gKHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50V2lkdGg7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0QXV0byA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICAgICdGaWVsZFVpLlNldHRpbmcuQ3VzdG9tVWkuUGFyYW1ldGVycy5NaW5IZWlnaHRBdXRvJyxcclxuICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLmlubGluZUVkaXQgfHwgbWluSGVpZ2h0QXV0byB8fCB0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWluSGVpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZSA9PT0gJ1VpLlVsdk1haW5VaScpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1VsdiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpc1VsdicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmF0dHJDYXB0aW9uID0gY29uZmlnLkNhcHRpb24ucmVwbGFjZSgnOicsICcnKTtcclxuICAgICAgICB0aGlzLmF0dHJDb250cm9sSWQgPSBjb25maWcuQ29udHJvbElkO1xyXG4gICAgICAgIHRoaXMuaXNCdXR0b24gPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuQnV0dG9uJztcclxuICAgICAgICB0aGlzLl9yZWZyZXNoTGFiZWwoKTtcclxuXHJcbiAgICAgICAgdGhpcy5pc1Jvd0RpcmVjdGlvbiA9IGNvbmZpZy5UZXh0TG9jYXRpb24gPT09ICdSaWdodCcgfHwgY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0RlZmF1bHQnO1xyXG4gICAgICAgIHRoaXMuaXNSb3dSZXZlcnNlRGlyZWN0aW9uID0gY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0xlZnQnO1xyXG4gICAgICAgIHRoaXMuaXNDb2x1bW5EaXJlY3Rpb24gPSBjb25maWcuVGV4dExvY2F0aW9uID09PSAnVG9wJyB8fCB0aGlzLmlzU2VhcmNoUGFuZWw7XHJcbiAgICAgICAgdGhpcy5pc0NvbHVtblJldmVyc2VEaXJlY3Rpb24gPSBjb25maWcuVGV4dExvY2F0aW9uID09PSAnQm90dG9tJztcclxuICAgICAgICB0aGlzLl9sYWJlbE5vdEluUm93ID0gY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ1RvcCcgfHwgY29uZmlnLlRleHRMb2NhdGlvbiA9PT0gJ0JvdHRvbSc7XHJcblxyXG4gICAgICAgIGNvbmZpZy5GaWVsZFVpLkxheW91dENvbnRyb2wgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuaGVscERlc2NyaXB0aW9uID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoY29uZmlnLkZpZWxkVWksICdTZXR0aW5nLkhlbHBEZXNjcmlwdGlvbicsICcnKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEljb24gPSBjb25maWcuRmllbGRVaS5TZXR0aW5nLkZpZWxkSWNvbjtcclxuICAgICAgICB0aGlzLmNvbnRyb2xJc1JlYWRvbmx5ID0gY29uZmlnLkZpZWxkVWkuU2V0dGluZy5Db250cm9sSXNSZWFkT25seTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xJc1JlYWRvbmx5ID1cclxuICAgICAgICAgICAgdGhpcy5jb250cm9sSXNSZWFkb25seSB8fFxyXG4gICAgICAgICAgICBjb25maWcuRmllbGRVaS5TZXR0aW5nLklubmVyQ3RybHI/LklzUmVhZE9ubHkgfHxcclxuICAgICAgICAgICAgY29uZmlnLkZpZWxkVWkuU2V0dGluZy5Jbm5lckN0cmxyPy54dHlwZSA9PT0gJ1VsLlJlYWRPbmx5RmllbGRDdHJscic7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFh0eXBlID0gY29uZmlnLkZpZWxkVWkub3JpZ2luYWxYdHlwZTtcclxuICAgICAgICB0aGlzLnRleHRWaXNpYmxlID0gY29uZmlnLlRleHRWaXNpYmxlO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2xJc1JlYWRvbmx5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBtZWFzdXJlVGV4dChjb25maWcuRmllbGRVaS52YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmICh4ID4gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICYmIHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVhZG9ubHlpc3dyYXBlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5TZWFyY2hDb21tYW5kSW5mb1VpJykge1xyXG4gICAgICAgICAgICB0aGlzLmxhYmVsQ2FwdGlvbiA9ICcmIzgyMDM7JztcclxuICAgICAgICAgICAgdGhpcy5sYWJlbFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnRleHRWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlTWluQW5kTWF4U2l6ZSgpO1xyXG4gICAgICAgIHRoaXMuX3NldExhYmVsV2lkdGgodGhpcy5tYXhMYWJlbFdpZHRoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3JlZnJlc2hMYWJlbCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZztcclxuICAgICAgICBjb25zdCBsYWJlbENhcHRpb24gPSBjb25maWcuQ2FwdGlvbjtcclxuICAgICAgICAvLyBpZiAoY29uZmlnLkZpZWxkVWkuU2V0dGluZz8uSXNNYW5kYXRvcnkpIHtcclxuICAgICAgICAvLyAgICAgaWYgKGxhYmVsQ2FwdGlvbi5pbmRleE9mKCcqJykgPCAwKSB7XHJcbiAgICAgICAgLy8gICAgICAgICBsYWJlbENhcHRpb24gPSBsYWJlbENhcHRpb24gKyAnIConO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgbGFiZWxDYXB0aW9uID0gbGFiZWxDYXB0aW9uLnJlcGxhY2UoJyonLCAnJyk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICB0aGlzLmlzQ2hlY2tib3ggPSBjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlID09PSAnVWkuQ2hlY2tCb3gnO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgY29uc3QgeCA9IG1lYXN1cmVUZXh0KGxhYmVsQ2FwdGlvbik7XHJcbiAgICAgICAgICAgIGlmICh4IDwgdGhpcy5tYXhMYWJlbFdpZHRoICYmICF0aGlzLmlzTW9iaWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94V2lkdGggPSBgJHt0aGlzLm1heExhYmVsV2lkdGh9cHhgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU2luZ2xlUGljdHVyZSA9IGNvbmZpZy5GaWVsZFVpLm9yaWdpbmFsWHR5cGUgPT09ICdVaS5TaW5nbGVQaWN0dXJlJztcclxuICAgICAgICBjb25zdCBjb2xvbkxhYmVsID0gdGhpcy5mb3JtUGFuZWxTZXJ2aWNlLkNvbG9uSW5MYWJlbCA/ICc6JyA6ICcnO1xyXG4gICAgICAgIGxldCB0cmFuc2xhdGVDYXB0aW9uID0gYCR7dGhpcy5fYmJiVHJhbnNsYXRlLnRyYW5zZm9ybShsYWJlbENhcHRpb24pfSR7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZWFyY2hQYW5lbCB8fCBsYWJlbENhcHRpb24gPT09ICcmenduajsnID8gJycgOiBjb2xvbkxhYmVsXHJcbiAgICAgICAgfWA7XHJcbiAgICAgICAgdGhpcy5pc01hbmRhdG9yeSA9IGNvbmZpZy5GaWVsZFVpLlNldHRpbmc/LklzTWFuZGF0b3J5O1xyXG4gICAgICAgIGlmICh0aGlzLmlzTWFuZGF0b3J5KSB7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZUNhcHRpb24gPSB0cmFuc2xhdGVDYXB0aW9uLnJlcGxhY2UoJyonLCAnJyk7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZUNhcHRpb24gKz0gYDxzdHJvbmcgY2xhc3M9XCJmaWVsZC1tYW5kYXRvcnlcIj4qPC9zdHJvbmc+YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVDYXB0aW9uID0gdHJhbnNsYXRlQ2FwdGlvbjtcclxuICAgICAgICB0aGlzLmxhYmVsQ2FwdGlvbiA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRyYW5zbGF0ZUNhcHRpb24pO1xyXG4gICAgICAgIHRoaXMubGFiZWxWaXNpYmxlID0gY29uZmlnLlRleHRWaXNpYmxlICYmIHRoaXMuc2hvd0xhYmVsICE9PSBmYWxzZTtcclxuICAgICAgICBjb25zdCBjb250cm9sV2lkdGggPSBnZXRMYWJlbFdpZHRoKHRoaXMuY29uZmlnKTtcclxuICAgICAgICBpZiAoY29udHJvbFdpZHRoICYmIGNvbnRyb2xXaWR0aCA+IHRoaXMubWF4TGFiZWxXaWR0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXJlbnRMYXlvdXRTZXJ2aWNlLnNldE1heFdpZHRoKGNvbnRyb2xXaWR0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3NldEhpZGUoY29uZmlnLkZpZWxkVWkuU2V0dGluZy5Jc1Zpc2libGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlKTtcclxuICAgIH1cclxuICAgIF9zZXRMYWJlbFdpZHRoKG1heExhYmVsV2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy50ZW1wTGFiZWxSZWYpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2YWwgPVxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5DYXB0aW9uU2V0dGluZz8uQWxpZ25Nb2RlID09PSAnQXV0b1NpemUnIHx8XHJcbiAgICAgICAgICAgICh0aGlzLmlzTW9iaWxlICYmICh0aGlzLmlzQ2hlY2tib3ggfHwgdGhpcy5jb250cm9sSXNSZWFkb25seSkpXHJcbiAgICAgICAgICAgICAgICA/ICdhdXRvJ1xyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmlzQ29sdW1uRGlyZWN0aW9uIHx8IHRoaXMuaXNDb2x1bW5SZXZlcnNlRGlyZWN0aW9uXHJcbiAgICAgICAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgICAgICAgOiBtYXhMYWJlbFdpZHRoICsgJ3B4JztcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50ZW1wTGFiZWxSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdmFsKTtcclxuXHJcbiAgICAgICAgY29uc3QgbWluV2lkdGggPSB0aGlzLmlzQ2hlY2tib3hcclxuICAgICAgICAgICAgPyB0aGlzLmNoZWNrYm94V2lkdGhcclxuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy5DYXB0aW9uU2V0dGluZz8uQWxpZ25Nb2RlID09PSAnQXV0b1NpemUnIHx8ICh0aGlzLmlzTW9iaWxlICYmIHRoaXMuY29udHJvbElzUmVhZG9ubHkpXHJcbiAgICAgICAgICAgID8gJ2ZpdC1jb250ZW50J1xyXG4gICAgICAgICAgICA6IHRoaXMuaXNDb2x1bW5EaXJlY3Rpb24gfHwgdGhpcy5pc0NvbHVtblJldmVyc2VEaXJlY3Rpb25cclxuICAgICAgICAgICAgPyAnMTAwJSdcclxuICAgICAgICAgICAgOiBtYXhMYWJlbFdpZHRoICsgJ3B4JztcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50ZW1wTGFiZWxSZWYubmF0aXZlRWxlbWVudCwgJ21pbi13aWR0aCcsIG1pbldpZHRoKTtcclxuICAgIH1cclxuICAgIF9yZXNpemVVbHZCeURldmljZShkZXZpY2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNVbHYpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGV2aWNlSGVpZ2h0ID0gJ0Rlc2t0b3BIZWlnaHQnO1xyXG4gICAgICAgIHN3aXRjaCAoZGV2aWNlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgICAgICAgICAgZGV2aWNlSGVpZ2h0ID0gJ01vYmlsZUhlaWdodCc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgICAgICAgICBkZXZpY2VIZWlnaHQgPSAnVGFibGV0SGVpZ2h0JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhlaWdodCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyxcclxuICAgICAgICAgICAgJ0ZpZWxkVWkuU2V0dGluZy5DbGFzc05hbWVzLkN1c3RvbVVpLlBhcmFtZXRlcnMuJyArIGRldmljZUhlaWdodCxcclxuICAgICAgICAgICAgJ2F1dG8nXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgcHJlcGFyZU1pbkFuZE1heFNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWc7XHJcbiAgICAgICAgY29uc3QgbGF5b3V0SW5mbyA9IGNvbmZpZztcclxuICAgICAgICBjb25zdCBpc0J1dHRvbiA9IHRoaXMuaXNCdXR0b247XHJcbiAgICAgICAgY29uc3QgaXNTaW5nbGVQaWN0dXJlID0gdGhpcy5pc1NpbmdsZVBpY3R1cmU7XHJcbiAgICAgICAgY29uc3QgaXNDaGVja2JveCA9IHRoaXMuaXNDaGVja2JveDtcclxuICAgICAgICBpZiAoIXRoaXMuaW5saW5lRWRpdCAmJiBsYXlvdXRJbmZvICYmIChpc0J1dHRvbiB8fCBpc0NoZWNrYm94IHx8IGlzU2luZ2xlUGljdHVyZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5hdHRyTWluV2lkdGggPSBjb25maWcuQm91bmRzLndpZHRoO1xyXG4gICAgICAgICAgICBsZXQgZXh0cmFWYWwgPSAwO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAoKGlzQnV0dG9uIHx8IGlzQ2hlY2tib3gpICYmIGxheW91dEluZm8uRmllbGRVaS5TZXR0aW5nPy5GaWVsZEljb24pIHx8XHJcbiAgICAgICAgICAgICAgICBsYXlvdXRJbmZvLkZpZWxkVWkuU2V0dGluZy5Kc29uRXh0cmFQcm9wPy5HbHlwaFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGV4dHJhVmFsID0gMTg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgeyBNYXhTaXplLCBNaW5TaXplIH0gPSBsYXlvdXRJbmZvO1xyXG4gICAgICAgICAgICBpZiAoTWF4U2l6ZT8ud2lkdGggPiAwICYmICF0aGlzLmlzQ2hlY2tib3gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF4V2lkdGggPSBNYXhTaXplLndpZHRoICsgZXh0cmFWYWwgKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChNaW5TaXplPy53aWR0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWluV2lkdGggPSBNaW5TaXplLndpZHRoICsgZXh0cmFWYWwgKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlzU2VhcmNoUGFuZWwpIHtcclxuICAgICAgICAgICAgdGhpcy5hdHRyTWluV2lkdGggPSB0aGlzLm1heExhYmVsV2lkdGggKyAyMDA7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhXaWR0aCA9ICczMjBweCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5taW5XaWR0aCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIFJlZnJlc2hMYWJlbCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLl9yZWZyZXNoTGFiZWwoKTtcclxuICAgICAgICB0aGlzLmV2ZW50cy5lbWl0KHsgdGl0bGU6ICdyZWZyZXNoTGFiZWwnLCBkYXRhOiB0aGlzLmNvbmZpZyB9KTtcclxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9O1xyXG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cclxuICAgIEBJbnB1dCgpIFNldFZpc2libGUgPSAodmlzaWJsZSwgcmVmcmVzaCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5GaWVsZFVpLlNldHRpbmcuSXNWaXNpYmxlID0gdmlzaWJsZTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0SGlkZSghdmlzaWJsZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuY29uZmlnLkZpZWxkVWkuU2V0dGluZy4kQlJ1bGVIaWRlID0gIXZpc2libGU7XHJcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBfc2V0SGlkZShoaWRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaGlkZSA9IHRoaXMuY29uZmlnLkZpZWxkVWkuU2V0dGluZy5IaWRlU2VhcmNoQ29tbWFuZEluZm9VaSA9PT0gdHJ1ZSA/IHRydWUgOiBoaWRlOyAvLyBoaWRlIGRlZmF1bHQgYnV0dG9ucyBvZiBzZWFyY2ggcGFuZWxcclxuICAgICAgICB0aGlzLmhpZGUgPSBoaWRlO1xyXG4gICAgICAgIGlmIChoaWRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRlLWZvcm0taXRlbScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdoaWRlLWZvcm0taXRlbScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldEZsZXgoZmxleDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBmbGV4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgfHwgdGhpcy5jb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlICE9PSAnVWkuVGV4dEFyZWEnKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2ZsZXgnLCBmbGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiQGlmICghaGlkZSkgeyBAaWYgKGxhYmVsVmlzaWJsZSkge1xyXG48YnN1LWx5LWxhYmVsXHJcbiAgICBbYXR0ci5sYWJlbFdpZHRoXT1cImxhYmVsV2lkdGhcIlxyXG4gICAgW2F0dHJSdGxdXHJcbiAgICAjdGVtcExhYmVsUmVmXHJcbiAgICBbY2xhc3Mubm8tcGFkZGluZ109XCJjb25maWcuUGFkZGluZ1swXSA9PT0gMFwiXHJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbiAgICBbY2FwdGlvbl09XCJsYWJlbENhcHRpb25cIlxyXG4gICAgW3RyYW5zbGF0ZUNhcHRpb25dPVwidHJhbnNsYXRlQ2FwdGlvblwiXHJcbiAgICBbb3JpZ2luYWxXaWR0aF09XCJsYWJlbFdpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGhdPVwiXHJcbiAgICAgICAgaXNDaGVja2JveFxyXG4gICAgICAgICAgICA/IGNoZWNrYm94V2lkdGhcclxuICAgICAgICAgICAgOiAoY29uZmlnLkNhcHRpb25TZXR0aW5nPy5BbGlnbk1vZGUgPT09ICdBdXRvU2l6ZScgJiYgIWlzTW9iaWxlKSB8fCAoaXNNb2JpbGUgJiYgY29udHJvbElzUmVhZG9ubHkpXHJcbiAgICAgICAgICAgID8gJ2ZpdC1jb250ZW50J1xyXG4gICAgICAgICAgICA6IGlzQ29sdW1uRGlyZWN0aW9uIHx8IGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvblxyXG4gICAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgICA6IG1heExhYmVsV2lkdGggKyAncHgnXHJcbiAgICBcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cIlxyXG4gICAgICAgIChjb25maWcuQ2FwdGlvblNldHRpbmc/LkFsaWduTW9kZSA9PT0gJ0F1dG9TaXplJyAmJiAhaXNNb2JpbGUpIHx8IChpc01vYmlsZSAmJiAoaXNDaGVja2JveCB8fCBjb250cm9sSXNSZWFkb25seSkpXHJcbiAgICAgICAgICAgID8gJ2F1dG8nXHJcbiAgICAgICAgICAgIDogaXNDb2x1bW5EaXJlY3Rpb24gfHwgaXNDb2x1bW5SZXZlcnNlRGlyZWN0aW9uXHJcbiAgICAgICAgICAgID8gJzEwMCUnXHJcbiAgICAgICAgICAgIDogbWF4TGFiZWxXaWR0aCArICdweCdcclxuICAgIFwiXHJcbiAgICBbaXNNYW5kYXRvcnldPVwiaXNNYW5kYXRvcnlcIlxyXG4gICAgW2ZpZWxkSWNvbl09XCJmaWVsZEljb25cIlxyXG4gICAgW2F0dHIuYXV0b3NpemVdPVwiY29uZmlnLkNhcHRpb25TZXR0aW5nPy5BbGlnbk1vZGUgPyB0cnVlOm51bGxcIlxyXG4gICAgW2hlbHBEZXNjcmlwdGlvbl09XCJoZWxwRGVzY3JpcHRpb25cIlxyXG4gICAgW29yaWdpbmFsWHR5cGVdPVwib3JpZ2luYWxYdHlwZVwiXHJcbiAgICBbdGV4dFZpc2libGVdPVwidGV4dFZpc2libGVcIlxyXG4gICAgW2lzQ29sdW1uXT1cImlzQ29sdW1uRGlyZWN0aW9uIHx8IGlzQ29sdW1uUmV2ZXJzZURpcmVjdGlvblwiXHJcbj48L2JzdS1seS1sYWJlbD5cclxufVxyXG48bGFiZWwgW2F0dHIudmlzaWJsZV09XCJsYWJlbFZpc2libGVcIiBjbGFzcz1cImhvcml6b250YWwtbGFiZWxcIiBbaW5uZXJIdG1sXT1cImVtcHR5VGV4dFwiPjwvbGFiZWw+XHJcbjxibnJjLWZpZWxkLXVpXHJcbiAgICBbYXR0ci54dHlwZV09XCJjb25maWcuRmllbGRVaS5vcmlnaW5hbFh0eXBlXCJcclxuICAgIFthdHRyLmZpZWxkV2lkdGhdPVwibGF5b3V0Q29udHJvbFdpZHRoXCJcclxuICAgIFthdHRyLmlzQ2hlY2tib3hdPVwiaXNDaGVja2JveFwiXHJcbiAgICBbYXR0ci5pc2J1dHRvbl09XCJpc0J1dHRvblwiXHJcbiAgICBbc3R5bGUuZmxleC1ncm93XT1cImlzQ2hlY2tib3ggPyAxIDogMFwiXHJcbiAgICBbY2xhc3Mubm8tcGFkZGluZ109XCJjb25maWcuUGFkZGluZ1swXSA9PT0gMFwiXHJcbiAgICBbY3VzdG9tRmllbGRdPVwiY29uZmlnLkZpZWxkVWlcIlxyXG4gICAgW2xheW91dEluZm9dPVwiY29uZmlnXCJcclxuICAgIFtpbmxpbmVFZGl0XT1cImlubGluZUVkaXRcIlxyXG4gICAgW2NlbGxFZGl0XT1cImNlbGxFZGl0XCJcclxuICAgIFtmb3JtSGVpZ2h0XT1cIihmb3JtSGVpZ2h0JCB8IGFzeW5jKSEhXCJcclxuICAgIFtmb2N1c0NvbnRyb2xdPVwiZm9jdXNDb250cm9sXCJcclxuICAgIFtpc1NlYXJjaFBhbmVsXT1cImlzU2VhcmNoUGFuZWxcIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJpc1VsdiA/ICcxMDAlJyA6ICdhdXRvJ1wiXHJcbiAgICBbYXR0ci5pc3Vsdl09XCJpc1VsdlwiXHJcbj48L2JucmMtZmllbGQtdWk+XHJcbn1cclxuIl19