@zeedhi/common 3.0.6 → 3.1.0

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 (546) hide show
  1. package/coverage/clover.xml +5680 -0
  2. package/coverage/coverage-final.json +147 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +1331 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +210 -0
  11. package/coverage/lcov-report/src/components/index.html +116 -0
  12. package/coverage/lcov-report/src/components/index.ts.html +730 -0
  13. package/coverage/lcov-report/src/components/tek-grid/columns-searcher.ts.html +151 -0
  14. package/coverage/lcov-report/src/components/tek-grid/dynamic-filter-datasource-factory.ts.html +145 -0
  15. package/coverage/lcov-report/src/components/tek-grid/filter-helper.ts.html +145 -0
  16. package/coverage/lcov-report/src/components/tek-grid/grid-filter-button.ts.html +1351 -0
  17. package/coverage/lcov-report/src/components/tek-grid/grouped-data-manager.ts.html +1429 -0
  18. package/coverage/lcov-report/src/components/tek-grid/grouped-data-selector.ts.html +205 -0
  19. package/coverage/lcov-report/src/components/tek-grid/grouped-view-navigator.ts.html +340 -0
  20. package/coverage/lcov-report/src/components/tek-grid/index.html +326 -0
  21. package/coverage/lcov-report/src/components/tek-grid/index.ts.html +139 -0
  22. package/coverage/lcov-report/src/components/tek-grid/interfaces.ts.html +1072 -0
  23. package/coverage/lcov-report/src/components/tek-grid/keymap-grouped.ts.html +148 -0
  24. package/coverage/lcov-report/src/components/tek-grid/layout-options.ts.html +829 -0
  25. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.html +161 -0
  26. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.ts.html +94 -0
  27. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/interfaces.ts.html +193 -0
  28. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-memory-datasource.ts.html +1027 -0
  29. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-rest-datasource.ts.html +757 -0
  30. package/coverage/lcov-report/src/components/tek-grid/tek-grid-column.ts.html +664 -0
  31. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/index.html +131 -0
  32. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts.html +169 -0
  33. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts.html +196 -0
  34. package/coverage/lcov-report/src/components/tek-grid/tek-grid-controller.ts.html +505 -0
  35. package/coverage/lcov-report/src/components/tek-grid/tek-grid-events.ts.html +400 -0
  36. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts.html +163 -0
  37. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.html +146 -0
  38. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts.html +94 -0
  39. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts.html +340 -0
  40. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.html +131 -0
  41. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.ts.html +91 -0
  42. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts.html +1186 -0
  43. package/coverage/lcov-report/src/components/tek-grid/tek-grid.ts.html +3451 -0
  44. package/coverage/lcov-report/src/components/zd-alert/alert.ts.html +502 -0
  45. package/coverage/lcov-report/src/components/zd-alert/index.html +116 -0
  46. package/coverage/lcov-report/src/components/zd-badge/badge.ts.html +226 -0
  47. package/coverage/lcov-report/src/components/zd-badge/index.html +116 -0
  48. package/coverage/lcov-report/src/components/zd-breadcrumbs/breadcrumbs.ts.html +226 -0
  49. package/coverage/lcov-report/src/components/zd-breadcrumbs/index.html +116 -0
  50. package/coverage/lcov-report/src/components/zd-button/button.ts.html +706 -0
  51. package/coverage/lcov-report/src/components/zd-button/index.html +116 -0
  52. package/coverage/lcov-report/src/components/zd-button-group/button-group.ts.html +412 -0
  53. package/coverage/lcov-report/src/components/zd-button-group/index.html +116 -0
  54. package/coverage/lcov-report/src/components/zd-card/card.ts.html +748 -0
  55. package/coverage/lcov-report/src/components/zd-card/index.html +116 -0
  56. package/coverage/lcov-report/src/components/zd-carousel/carousel.ts.html +949 -0
  57. package/coverage/lcov-report/src/components/zd-carousel/index.html +116 -0
  58. package/coverage/lcov-report/src/components/zd-checkbox/checkbox.ts.html +148 -0
  59. package/coverage/lcov-report/src/components/zd-checkbox/index.html +116 -0
  60. package/coverage/lcov-report/src/components/zd-checkbox-multiple/checkbox-multiple.ts.html +313 -0
  61. package/coverage/lcov-report/src/components/zd-checkbox-multiple/index.html +116 -0
  62. package/coverage/lcov-report/src/components/zd-chip/chip.ts.html +352 -0
  63. package/coverage/lcov-report/src/components/zd-chip/index.html +116 -0
  64. package/coverage/lcov-report/src/components/zd-code-editor/code-editor.ts.html +1045 -0
  65. package/coverage/lcov-report/src/components/zd-code-editor/index.html +116 -0
  66. package/coverage/lcov-report/src/components/zd-code-viewer/code-viewer.ts.html +682 -0
  67. package/coverage/lcov-report/src/components/zd-code-viewer/index.html +116 -0
  68. package/coverage/lcov-report/src/components/zd-col/col.ts.html +250 -0
  69. package/coverage/lcov-report/src/components/zd-col/index.html +116 -0
  70. package/coverage/lcov-report/src/components/zd-collapse-card/collapse-card.ts.html +343 -0
  71. package/coverage/lcov-report/src/components/zd-collapse-card/index.html +116 -0
  72. package/coverage/lcov-report/src/components/zd-component/child-not-found.ts.html +109 -0
  73. package/coverage/lcov-report/src/components/zd-component/component-render.ts.html +160 -0
  74. package/coverage/lcov-report/src/components/zd-component/component.ts.html +1075 -0
  75. package/coverage/lcov-report/src/components/zd-component/index.html +146 -0
  76. package/coverage/lcov-report/src/components/zd-container/container.ts.html +289 -0
  77. package/coverage/lcov-report/src/components/zd-container/index.html +116 -0
  78. package/coverage/lcov-report/src/components/zd-currency/currency.ts.html +259 -0
  79. package/coverage/lcov-report/src/components/zd-currency/index.html +116 -0
  80. package/coverage/lcov-report/src/components/zd-date-input/date-input.ts.html +1441 -0
  81. package/coverage/lcov-report/src/components/zd-date-input/index.html +131 -0
  82. package/coverage/lcov-report/src/components/zd-date-input/utils.ts.html +136 -0
  83. package/coverage/lcov-report/src/components/zd-date-range/date-range.ts.html +1864 -0
  84. package/coverage/lcov-report/src/components/zd-date-range/index.html +131 -0
  85. package/coverage/lcov-report/src/components/zd-date-range/utils.ts.html +178 -0
  86. package/coverage/lcov-report/src/components/zd-dialog/dialog.ts.html +541 -0
  87. package/coverage/lcov-report/src/components/zd-dialog/index.html +116 -0
  88. package/coverage/lcov-report/src/components/zd-divider/divider.ts.html +178 -0
  89. package/coverage/lcov-report/src/components/zd-divider/index.html +116 -0
  90. package/coverage/lcov-report/src/components/zd-dropdown/dropdown.ts.html +460 -0
  91. package/coverage/lcov-report/src/components/zd-dropdown/index.html +116 -0
  92. package/coverage/lcov-report/src/components/zd-field-group/field-group.ts.html +325 -0
  93. package/coverage/lcov-report/src/components/zd-field-group/index.html +116 -0
  94. package/coverage/lcov-report/src/components/zd-footer/footer.ts.html +451 -0
  95. package/coverage/lcov-report/src/components/zd-footer/index.html +116 -0
  96. package/coverage/lcov-report/src/components/zd-form/form.ts.html +1075 -0
  97. package/coverage/lcov-report/src/components/zd-form/index.html +116 -0
  98. package/coverage/lcov-report/src/components/zd-frame/frame.ts.html +763 -0
  99. package/coverage/lcov-report/src/components/zd-frame/index.html +116 -0
  100. package/coverage/lcov-report/src/components/zd-frame-page/frame-page.ts.html +169 -0
  101. package/coverage/lcov-report/src/components/zd-frame-page/index.html +116 -0
  102. package/coverage/lcov-report/src/components/zd-grid/data-navigator.ts.html +304 -0
  103. package/coverage/lcov-report/src/components/zd-grid/data-selector.ts.html +532 -0
  104. package/coverage/lcov-report/src/components/zd-grid/grid-column.ts.html +709 -0
  105. package/coverage/lcov-report/src/components/zd-grid/grid-events.ts.html +244 -0
  106. package/coverage/lcov-report/src/components/zd-grid/grid.ts.html +1042 -0
  107. package/coverage/lcov-report/src/components/zd-grid/index.html +266 -0
  108. package/coverage/lcov-report/src/components/zd-grid/index.ts.html +118 -0
  109. package/coverage/lcov-report/src/components/zd-grid/iterable-table.ts.html +274 -0
  110. package/coverage/lcov-report/src/components/zd-grid/keymap-merger.ts.html +241 -0
  111. package/coverage/lcov-report/src/components/zd-grid/keymap-navigation.ts.html +313 -0
  112. package/coverage/lcov-report/src/components/zd-grid/table-action-builder.ts.html +427 -0
  113. package/coverage/lcov-report/src/components/zd-grid/view-navigator.ts.html +175 -0
  114. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor-with-add.ts.html +808 -0
  115. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor.ts.html +1570 -0
  116. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.html +146 -0
  117. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.ts.html +91 -0
  118. package/coverage/lcov-report/src/components/zd-grid-editable/errors/not-editing.ts.html +109 -0
  119. package/coverage/lcov-report/src/components/zd-grid-editable/errors/row-not-found.ts.html +109 -0
  120. package/coverage/lcov-report/src/components/zd-grid-editable/grid-column-editable.ts.html +130 -0
  121. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-controller.ts.html +145 -0
  122. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-events.ts.html +430 -0
  123. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable.ts.html +1507 -0
  124. package/coverage/lcov-report/src/components/zd-grid-editable/index.html +221 -0
  125. package/coverage/lcov-report/src/components/zd-grid-editable/index.ts.html +109 -0
  126. package/coverage/lcov-report/src/components/zd-grid-editable/keymap-editing.ts.html +139 -0
  127. package/coverage/lcov-report/src/components/zd-header/header.ts.html +502 -0
  128. package/coverage/lcov-report/src/components/zd-header/index.html +116 -0
  129. package/coverage/lcov-report/src/components/zd-icon/icon.ts.html +325 -0
  130. package/coverage/lcov-report/src/components/zd-icon/index.html +116 -0
  131. package/coverage/lcov-report/src/components/zd-image/image.ts.html +424 -0
  132. package/coverage/lcov-report/src/components/zd-image/index.html +116 -0
  133. package/coverage/lcov-report/src/components/zd-increment/increment.ts.html +436 -0
  134. package/coverage/lcov-report/src/components/zd-increment/index.html +116 -0
  135. package/coverage/lcov-report/src/components/zd-input/index.html +131 -0
  136. package/coverage/lcov-report/src/components/zd-input/input-factory.ts.html +130 -0
  137. package/coverage/lcov-report/src/components/zd-input/input.ts.html +1345 -0
  138. package/coverage/lcov-report/src/components/zd-iterable/column-not-found.ts.html +109 -0
  139. package/coverage/lcov-report/src/components/zd-iterable/column.ts.html +823 -0
  140. package/coverage/lcov-report/src/components/zd-iterable/conditions-manager.ts.html +523 -0
  141. package/coverage/lcov-report/src/components/zd-iterable/index.html +281 -0
  142. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button-controller.ts.html +136 -0
  143. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button.ts.html +313 -0
  144. package/coverage/lcov-report/src/components/zd-iterable/iterable-controller.ts.html +166 -0
  145. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-component.ts.html +244 -0
  146. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-info.ts.html +106 -0
  147. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-size.ts.html +421 -0
  148. package/coverage/lcov-report/src/components/zd-iterable/iterable-pagination.ts.html +208 -0
  149. package/coverage/lcov-report/src/components/zd-iterable/iterable.ts.html +934 -0
  150. package/coverage/lcov-report/src/components/zd-iterable/search.ts.html +343 -0
  151. package/coverage/lcov-report/src/components/zd-iterable-component-render/index.html +116 -0
  152. package/coverage/lcov-report/src/components/zd-iterable-component-render/iterable-component-render.ts.html +592 -0
  153. package/coverage/lcov-report/src/components/zd-layout/index.html +116 -0
  154. package/coverage/lcov-report/src/components/zd-layout/layout.ts.html +145 -0
  155. package/coverage/lcov-report/src/components/zd-list/index.html +161 -0
  156. package/coverage/lcov-report/src/components/zd-list/item-not-found.ts.html +109 -0
  157. package/coverage/lcov-report/src/components/zd-list/list-group.ts.html +241 -0
  158. package/coverage/lcov-report/src/components/zd-list/list-item.ts.html +298 -0
  159. package/coverage/lcov-report/src/components/zd-list/list.ts.html +460 -0
  160. package/coverage/lcov-report/src/components/zd-loading/index.html +116 -0
  161. package/coverage/lcov-report/src/components/zd-loading/loading.ts.html +217 -0
  162. package/coverage/lcov-report/src/components/zd-login/index.html +131 -0
  163. package/coverage/lcov-report/src/components/zd-login/login-button.ts.html +421 -0
  164. package/coverage/lcov-report/src/components/zd-login/login.ts.html +340 -0
  165. package/coverage/lcov-report/src/components/zd-main/index.html +116 -0
  166. package/coverage/lcov-report/src/components/zd-main/main.ts.html +133 -0
  167. package/coverage/lcov-report/src/components/zd-master-detail/detail-not-found.ts.html +118 -0
  168. package/coverage/lcov-report/src/components/zd-master-detail/index.html +146 -0
  169. package/coverage/lcov-report/src/components/zd-master-detail/master-detail.ts.html +331 -0
  170. package/coverage/lcov-report/src/components/zd-master-detail/master-not-found.ts.html +118 -0
  171. package/coverage/lcov-report/src/components/zd-menu/index.html +176 -0
  172. package/coverage/lcov-report/src/components/zd-menu/menu-button.ts.html +241 -0
  173. package/coverage/lcov-report/src/components/zd-menu/menu-group.ts.html +400 -0
  174. package/coverage/lcov-report/src/components/zd-menu/menu-link.ts.html +337 -0
  175. package/coverage/lcov-report/src/components/zd-menu/menu-separator.ts.html +106 -0
  176. package/coverage/lcov-report/src/components/zd-menu/menu.ts.html +1384 -0
  177. package/coverage/lcov-report/src/components/zd-modal/index.html +131 -0
  178. package/coverage/lcov-report/src/components/zd-modal/modal-close-button.ts.html +220 -0
  179. package/coverage/lcov-report/src/components/zd-modal/modal.ts.html +355 -0
  180. package/coverage/lcov-report/src/components/zd-month/index.html +116 -0
  181. package/coverage/lcov-report/src/components/zd-month/month.ts.html +352 -0
  182. package/coverage/lcov-report/src/components/zd-number-input/index.html +116 -0
  183. package/coverage/lcov-report/src/components/zd-number-input/number-input.ts.html +532 -0
  184. package/coverage/lcov-report/src/components/zd-password/index.html +116 -0
  185. package/coverage/lcov-report/src/components/zd-password/password.ts.html +220 -0
  186. package/coverage/lcov-report/src/components/zd-progress/index.html +116 -0
  187. package/coverage/lcov-report/src/components/zd-progress/progress.ts.html +262 -0
  188. package/coverage/lcov-report/src/components/zd-radio/index.html +116 -0
  189. package/coverage/lcov-report/src/components/zd-radio/radio.ts.html +289 -0
  190. package/coverage/lcov-report/src/components/zd-row/index.html +116 -0
  191. package/coverage/lcov-report/src/components/zd-row/row.ts.html +256 -0
  192. package/coverage/lcov-report/src/components/zd-select/index.html +116 -0
  193. package/coverage/lcov-report/src/components/zd-select/select.ts.html +2089 -0
  194. package/coverage/lcov-report/src/components/zd-select-multiple/index.html +116 -0
  195. package/coverage/lcov-report/src/components/zd-select-multiple/select-multiple.ts.html +1549 -0
  196. package/coverage/lcov-report/src/components/zd-svg-map/index.html +116 -0
  197. package/coverage/lcov-report/src/components/zd-svg-map/svg-map.ts.html +475 -0
  198. package/coverage/lcov-report/src/components/zd-switch/index.html +116 -0
  199. package/coverage/lcov-report/src/components/zd-switch/switch.ts.html +163 -0
  200. package/coverage/lcov-report/src/components/zd-table/index.html +116 -0
  201. package/coverage/lcov-report/src/components/zd-table/table.ts.html +280 -0
  202. package/coverage/lcov-report/src/components/zd-tabs/index.html +146 -0
  203. package/coverage/lcov-report/src/components/zd-tabs/tab-not-found.ts.html +127 -0
  204. package/coverage/lcov-report/src/components/zd-tabs/tab.ts.html +370 -0
  205. package/coverage/lcov-report/src/components/zd-tabs/tabs.ts.html +586 -0
  206. package/coverage/lcov-report/src/components/zd-tag/index.html +116 -0
  207. package/coverage/lcov-report/src/components/zd-tag/tag.ts.html +142 -0
  208. package/coverage/lcov-report/src/components/zd-text/index.html +116 -0
  209. package/coverage/lcov-report/src/components/zd-text/text.ts.html +136 -0
  210. package/coverage/lcov-report/src/components/zd-text-input/index.html +116 -0
  211. package/coverage/lcov-report/src/components/zd-text-input/text-input.ts.html +778 -0
  212. package/coverage/lcov-report/src/components/zd-textarea/index.html +116 -0
  213. package/coverage/lcov-report/src/components/zd-textarea/textarea.ts.html +436 -0
  214. package/coverage/lcov-report/src/components/zd-time/index.html +131 -0
  215. package/coverage/lcov-report/src/components/zd-time/time-format-selector.ts.html +157 -0
  216. package/coverage/lcov-report/src/components/zd-time/time.ts.html +1687 -0
  217. package/coverage/lcov-report/src/components/zd-toggleable/index.html +116 -0
  218. package/coverage/lcov-report/src/components/zd-toggleable/toggleable.ts.html +196 -0
  219. package/coverage/lcov-report/src/components/zd-tooltip/index.html +116 -0
  220. package/coverage/lcov-report/src/components/zd-tooltip/tooltip.ts.html +340 -0
  221. package/coverage/lcov-report/src/components/zd-tree/index.html +116 -0
  222. package/coverage/lcov-report/src/components/zd-tree/tree.ts.html +1849 -0
  223. package/coverage/lcov-report/src/components/zd-tree-grid/index.html +191 -0
  224. package/coverage/lcov-report/src/components/zd-tree-grid/index.ts.html +103 -0
  225. package/coverage/lcov-report/src/components/zd-tree-grid/iterable-tree.ts.html +202 -0
  226. package/coverage/lcov-report/src/components/zd-tree-grid/keymap-tree.ts.html +154 -0
  227. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-navigator.ts.html +235 -0
  228. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-selector.ts.html +448 -0
  229. package/coverage/lcov-report/src/components/zd-tree-grid/tree-grid.ts.html +1390 -0
  230. package/coverage/lcov-report/src/error/delete-rows.ts.html +124 -0
  231. package/coverage/lcov-report/src/error/index.html +161 -0
  232. package/coverage/lcov-report/src/error/index.ts.html +94 -0
  233. package/coverage/lcov-report/src/error/non-initialized.ts.html +118 -0
  234. package/coverage/lcov-report/src/error/tek-grid-delete-rows.ts.html +130 -0
  235. package/coverage/lcov-report/src/error/teknisa-common-error.ts.html +109 -0
  236. package/coverage/lcov-report/src/error/zeedhi-error.ts.html +109 -0
  237. package/coverage/lcov-report/src/index.html +116 -0
  238. package/coverage/lcov-report/src/index.ts.html +145 -0
  239. package/coverage/lcov-report/src/services/index.html +116 -0
  240. package/coverage/lcov-report/src/services/index.ts.html +97 -0
  241. package/coverage/lcov-report/src/services/zd-alert/alert-queue.ts.html +205 -0
  242. package/coverage/lcov-report/src/services/zd-alert/alert-replace.ts.html +220 -0
  243. package/coverage/lcov-report/src/services/zd-alert/alert-service.ts.html +316 -0
  244. package/coverage/lcov-report/src/services/zd-alert/alert-stack.ts.html +172 -0
  245. package/coverage/lcov-report/src/services/zd-alert/index.html +176 -0
  246. package/coverage/lcov-report/src/services/zd-alert/index.ts.html +100 -0
  247. package/coverage/lcov-report/src/services/zd-dialog/dialog-service.ts.html +205 -0
  248. package/coverage/lcov-report/src/services/zd-dialog/index.html +116 -0
  249. package/coverage/lcov-report/src/services/zd-loading/index.html +116 -0
  250. package/coverage/lcov-report/src/services/zd-loading/loading-service.ts.html +157 -0
  251. package/coverage/lcov-report/src/services/zd-modal/index.html +116 -0
  252. package/coverage/lcov-report/src/services/zd-modal/modal-service.ts.html +298 -0
  253. package/coverage/lcov-report/src/utils/data-value-out/data-value-out.ts.html +202 -0
  254. package/coverage/lcov-report/src/utils/data-value-out/index.html +131 -0
  255. package/coverage/lcov-report/src/utils/data-value-out/index.ts.html +91 -0
  256. package/coverage/lcov-report/src/utils/datasource-searcher/datasource-searcher.ts.html +241 -0
  257. package/coverage/lcov-report/src/utils/datasource-searcher/index.html +131 -0
  258. package/coverage/lcov-report/src/utils/datasource-searcher/index.ts.html +91 -0
  259. package/coverage/lcov-report/src/utils/date-utils/date-utils.ts.html +166 -0
  260. package/coverage/lcov-report/src/utils/date-utils/index.html +116 -0
  261. package/coverage/lcov-report/src/utils/icons/icons.ts.html +547 -0
  262. package/coverage/lcov-report/src/utils/icons/index.html +116 -0
  263. package/coverage/lcov-report/src/utils/index.html +116 -0
  264. package/coverage/lcov-report/src/utils/index.ts.html +106 -0
  265. package/coverage/lcov-report/src/utils/is-filled-object/index.html +116 -0
  266. package/coverage/lcov-report/src/utils/is-filled-object/is-filled-object.ts.html +100 -0
  267. package/coverage/lcov-report/src/utils/is-nil.ts.html +94 -0
  268. package/coverage/lcov-report/src/utils/omit/index.html +116 -0
  269. package/coverage/lcov-report/src/utils/omit/omit.ts.html +136 -0
  270. package/coverage/lcov-report/src/utils/theme/index.html +116 -0
  271. package/coverage/lcov-report/src/utils/theme/theme.ts.html +679 -0
  272. package/coverage/lcov-report/src/utils/tree-data-structure/index.html +131 -0
  273. package/coverage/lcov-report/src/utils/tree-data-structure/index.ts.html +91 -0
  274. package/coverage/lcov-report/src/utils/tree-data-structure/tree-data-structure.ts.html +1645 -0
  275. package/coverage/lcov-report/src/utils/unique-by/index.html +116 -0
  276. package/coverage/lcov-report/src/utils/unique-by/unique-by.ts.html +130 -0
  277. package/coverage/lcov-report/tests/unit/__helpers__/component-event-helper.ts.html +106 -0
  278. package/coverage/lcov-report/tests/unit/__helpers__/flush-promises-helper.ts.html +94 -0
  279. package/coverage/lcov-report/tests/unit/__helpers__/index.html +146 -0
  280. package/coverage/lcov-report/tests/unit/__helpers__/mock-http-get-helper.ts.html +172 -0
  281. package/coverage/lcov-report/tests/unit/components/zd-component/ComponentMock.ts.html +166 -0
  282. package/coverage/lcov-report/tests/unit/components/zd-component/index.html +116 -0
  283. package/coverage/lcov.info +10074 -0
  284. package/dist/style.css +1 -1
  285. package/dist/zd-common.d.mts +7843 -0
  286. package/dist/zd-common.iife.min.js +11 -0
  287. package/dist/zd-common.mjs +12325 -0
  288. package/package.json +16 -12
  289. package/src/components/zd-carousel/interfaces.ts +1 -1
  290. package/src/components/zd-component/component.ts +6 -9
  291. package/src/components/zd-component/interfaces.ts +2 -2
  292. package/src/components/zd-date-input/date-input.ts +40 -147
  293. package/src/components/zd-date-input/utils.ts +17 -0
  294. package/src/components/zd-date-range/date-range.ts +86 -210
  295. package/src/components/zd-date-range/utils.ts +31 -0
  296. package/src/components/zd-frame/frame.ts +2 -2
  297. package/src/components/zd-grid/interfaces.ts +1 -1
  298. package/src/components/zd-grid-editable/data-editor-with-add.ts +2 -8
  299. package/src/components/zd-grid-editable/data-editor.ts +2 -2
  300. package/src/components/zd-grid-editable/grid-editable-controller.ts +2 -0
  301. package/src/components/zd-grid-editable/grid-editable.ts +10 -0
  302. package/src/components/zd-grid-editable/interfaces.ts +1 -0
  303. package/src/components/zd-iterable-component-render/interfaces.ts +2 -2
  304. package/src/components/zd-list/interfaces.ts +1 -1
  305. package/src/components/zd-master-detail/interfaces.ts +1 -1
  306. package/src/components/zd-menu/interfaces.ts +13 -2
  307. package/src/components/zd-menu/menu-group.ts +2 -2
  308. package/src/components/zd-menu/menu-link.ts +2 -2
  309. package/src/components/zd-menu/menu.ts +1 -1
  310. package/src/components/zd-month/month.ts +19 -91
  311. package/src/components/zd-textarea/interfaces.ts +2 -1
  312. package/src/components/zd-textarea/textarea.ts +6 -0
  313. package/src/components/zd-tree/interfaces.ts +2 -2
  314. package/src/styles/_display.scss +3 -1
  315. package/src/styles/_elevation.scss +2 -1
  316. package/src/styles/_functions.scss +14 -11
  317. package/src/styles/_utilities.scss +67 -62
  318. package/src/styles/_variables.scss +17 -16
  319. package/src/styles/index.scss +5 -5
  320. package/src/utils/date-utils/date-utils.ts +9 -0
  321. package/src/utils/omit/omit.ts +7 -3
  322. package/src/utils/tree-data-structure/tree-data-structure.ts +1 -1
  323. package/tests/unit/components/zd-date-input/date-input.spec.ts +36 -281
  324. package/tests/unit/components/zd-date-range/date-range.spec.ts +372 -475
  325. package/tests/unit/components/zd-grid/grid-column.spec.ts +1 -1
  326. package/tests/unit/components/zd-grid-editable/grid-editable-controller.spec.ts +3 -0
  327. package/tests/unit/components/zd-menu/menu.spec.ts +1 -1
  328. package/tests/unit/components/zd-month/month.spec.ts +7 -334
  329. package/tests/unit/components/zd-select/select.spec.ts +1 -2
  330. package/tests/unit/utils/omit.spec.ts +15 -0
  331. package/tsdown.config.ts +74 -0
  332. package/dist/types/components/index.d.ts +0 -151
  333. package/dist/types/components/zd-alert/alert.d.ts +0 -94
  334. package/dist/types/components/zd-alert/interfaces.d.ts +0 -18
  335. package/dist/types/components/zd-badge/badge.d.ts +0 -28
  336. package/dist/types/components/zd-badge/interfaces.d.ts +0 -10
  337. package/dist/types/components/zd-breadcrumbs/breadcrumbs.d.ts +0 -32
  338. package/dist/types/components/zd-breadcrumbs/interfaces.d.ts +0 -24
  339. package/dist/types/components/zd-button/button.d.ts +0 -89
  340. package/dist/types/components/zd-button/interfaces.d.ts +0 -48
  341. package/dist/types/components/zd-button-group/button-group.d.ts +0 -67
  342. package/dist/types/components/zd-button-group/interfaces.d.ts +0 -25
  343. package/dist/types/components/zd-card/card.d.ts +0 -152
  344. package/dist/types/components/zd-card/interfaces.d.ts +0 -40
  345. package/dist/types/components/zd-carousel/carousel.d.ts +0 -163
  346. package/dist/types/components/zd-carousel/interfaces.d.ts +0 -49
  347. package/dist/types/components/zd-checkbox/checkbox.d.ts +0 -12
  348. package/dist/types/components/zd-checkbox/interfaces.d.ts +0 -5
  349. package/dist/types/components/zd-checkbox-multiple/checkbox-multiple.d.ts +0 -39
  350. package/dist/types/components/zd-checkbox-multiple/interfaces.d.ts +0 -13
  351. package/dist/types/components/zd-chip/chip.d.ts +0 -60
  352. package/dist/types/components/zd-chip/interfaces.d.ts +0 -18
  353. package/dist/types/components/zd-code-viewer/code-viewer.d.ts +0 -86
  354. package/dist/types/components/zd-code-viewer/interfaces.d.ts +0 -13
  355. package/dist/types/components/zd-col/col.d.ts +0 -33
  356. package/dist/types/components/zd-col/interfaces.d.ts +0 -15
  357. package/dist/types/components/zd-collapse-card/collapse-card.d.ts +0 -56
  358. package/dist/types/components/zd-collapse-card/interfaces.d.ts +0 -14
  359. package/dist/types/components/zd-component/child-not-found.d.ts +0 -6
  360. package/dist/types/components/zd-component/component-render.d.ts +0 -16
  361. package/dist/types/components/zd-component/component.d.ts +0 -120
  362. package/dist/types/components/zd-component/interfaces.d.ts +0 -74
  363. package/dist/types/components/zd-container/container.d.ts +0 -45
  364. package/dist/types/components/zd-container/interfaces.d.ts +0 -12
  365. package/dist/types/components/zd-currency/currency.d.ts +0 -12
  366. package/dist/types/components/zd-currency/interfaces.d.ts +0 -6
  367. package/dist/types/components/zd-date-input/date-input.d.ts +0 -152
  368. package/dist/types/components/zd-date-input/interfaces.d.ts +0 -27
  369. package/dist/types/components/zd-date-range/date-range.d.ts +0 -160
  370. package/dist/types/components/zd-date-range/interfaces.d.ts +0 -18
  371. package/dist/types/components/zd-dialog/dialog.d.ts +0 -76
  372. package/dist/types/components/zd-dialog/interfaces.d.ts +0 -13
  373. package/dist/types/components/zd-divider/divider.d.ts +0 -20
  374. package/dist/types/components/zd-divider/interfaces.d.ts +0 -8
  375. package/dist/types/components/zd-dropdown/dropdown.d.ts +0 -81
  376. package/dist/types/components/zd-dropdown/interfaces.d.ts +0 -23
  377. package/dist/types/components/zd-footer/footer.d.ts +0 -80
  378. package/dist/types/components/zd-footer/interfaces.d.ts +0 -26
  379. package/dist/types/components/zd-form/form.d.ts +0 -174
  380. package/dist/types/components/zd-form/interfaces.d.ts +0 -36
  381. package/dist/types/components/zd-frame/frame.d.ts +0 -81
  382. package/dist/types/components/zd-frame/interfaces.d.ts +0 -23
  383. package/dist/types/components/zd-frame-page/frame-page.d.ts +0 -14
  384. package/dist/types/components/zd-frame-page/interfaces.d.ts +0 -4
  385. package/dist/types/components/zd-grid/data-navigator.d.ts +0 -12
  386. package/dist/types/components/zd-grid/data-selector.d.ts +0 -25
  387. package/dist/types/components/zd-grid/grid-column.d.ts +0 -47
  388. package/dist/types/components/zd-grid/grid-events.d.ts +0 -26
  389. package/dist/types/components/zd-grid/grid.d.ts +0 -85
  390. package/dist/types/components/zd-grid/index.d.ts +0 -11
  391. package/dist/types/components/zd-grid/interfaces.d.ts +0 -148
  392. package/dist/types/components/zd-grid/iterable-table.d.ts +0 -28
  393. package/dist/types/components/zd-grid/keymap-merger.d.ts +0 -26
  394. package/dist/types/components/zd-grid/keymap-navigation.d.ts +0 -6
  395. package/dist/types/components/zd-grid/table-action-builder.d.ts +0 -19
  396. package/dist/types/components/zd-grid/view-navigator.d.ts +0 -10
  397. package/dist/types/components/zd-grid-editable/data-editor-with-add.d.ts +0 -35
  398. package/dist/types/components/zd-grid-editable/data-editor.d.ts +0 -64
  399. package/dist/types/components/zd-grid-editable/errors/index.d.ts +0 -2
  400. package/dist/types/components/zd-grid-editable/errors/not-editing.d.ts +0 -6
  401. package/dist/types/components/zd-grid-editable/errors/row-not-found.d.ts +0 -6
  402. package/dist/types/components/zd-grid-editable/grid-column-editable.d.ts +0 -9
  403. package/dist/types/components/zd-grid-editable/grid-editable-controller.d.ts +0 -8
  404. package/dist/types/components/zd-grid-editable/grid-editable-events.d.ts +0 -32
  405. package/dist/types/components/zd-grid-editable/grid-editable.d.ts +0 -124
  406. package/dist/types/components/zd-grid-editable/index.d.ts +0 -8
  407. package/dist/types/components/zd-grid-editable/interfaces.d.ts +0 -66
  408. package/dist/types/components/zd-grid-editable/keymap-editing.d.ts +0 -7
  409. package/dist/types/components/zd-header/header.d.ts +0 -94
  410. package/dist/types/components/zd-header/interfaces.d.ts +0 -29
  411. package/dist/types/components/zd-icon/icon.d.ts +0 -55
  412. package/dist/types/components/zd-icon/interfaces.d.ts +0 -13
  413. package/dist/types/components/zd-image/image.d.ts +0 -73
  414. package/dist/types/components/zd-image/interfaces.d.ts +0 -17
  415. package/dist/types/components/zd-increment/increment.d.ts +0 -56
  416. package/dist/types/components/zd-increment/interfaces.d.ts +0 -9
  417. package/dist/types/components/zd-input/input-factory.d.ts +0 -6
  418. package/dist/types/components/zd-input/input.d.ts +0 -223
  419. package/dist/types/components/zd-input/interfaces.d.ts +0 -38
  420. package/dist/types/components/zd-iterable/column-not-found.d.ts +0 -6
  421. package/dist/types/components/zd-iterable/column.d.ts +0 -78
  422. package/dist/types/components/zd-iterable/conditions-manager.d.ts +0 -49
  423. package/dist/types/components/zd-iterable/interfaces.d.ts +0 -103
  424. package/dist/types/components/zd-iterable/iterable-columns-button-controller.d.ts +0 -9
  425. package/dist/types/components/zd-iterable/iterable-columns-button.d.ts +0 -35
  426. package/dist/types/components/zd-iterable/iterable-controller.d.ts +0 -8
  427. package/dist/types/components/zd-iterable/iterable-page-component.d.ts +0 -27
  428. package/dist/types/components/zd-iterable/iterable-page-info.d.ts +0 -7
  429. package/dist/types/components/zd-iterable/iterable-page-size.d.ts +0 -62
  430. package/dist/types/components/zd-iterable/iterable-pagination.d.ts +0 -28
  431. package/dist/types/components/zd-iterable/iterable.d.ts +0 -86
  432. package/dist/types/components/zd-iterable/search.d.ts +0 -31
  433. package/dist/types/components/zd-iterable-component-render/interfaces.d.ts +0 -34
  434. package/dist/types/components/zd-iterable-component-render/iterable-component-render.d.ts +0 -84
  435. package/dist/types/components/zd-layout/interfaces.d.ts +0 -7
  436. package/dist/types/components/zd-layout/layout.d.ts +0 -9
  437. package/dist/types/components/zd-list/interfaces.d.ts +0 -44
  438. package/dist/types/components/zd-list/item-not-found.d.ts +0 -6
  439. package/dist/types/components/zd-list/list-group.d.ts +0 -30
  440. package/dist/types/components/zd-list/list-item.d.ts +0 -46
  441. package/dist/types/components/zd-list/list.d.ts +0 -81
  442. package/dist/types/components/zd-loading/interfaces.d.ts +0 -7
  443. package/dist/types/components/zd-loading/loading.d.ts +0 -21
  444. package/dist/types/components/zd-login/interfaces.d.ts +0 -25
  445. package/dist/types/components/zd-login/login-button.d.ts +0 -50
  446. package/dist/types/components/zd-login/login.d.ts +0 -54
  447. package/dist/types/components/zd-main/interfaces.d.ts +0 -5
  448. package/dist/types/components/zd-main/main.d.ts +0 -7
  449. package/dist/types/components/zd-master-detail/detail-not-found.d.ts +0 -7
  450. package/dist/types/components/zd-master-detail/interfaces.d.ts +0 -10
  451. package/dist/types/components/zd-master-detail/master-detail.d.ts +0 -18
  452. package/dist/types/components/zd-master-detail/master-not-found.d.ts +0 -7
  453. package/dist/types/components/zd-menu/interfaces.d.ts +0 -68
  454. package/dist/types/components/zd-menu/menu-button.d.ts +0 -29
  455. package/dist/types/components/zd-menu/menu-group.d.ts +0 -61
  456. package/dist/types/components/zd-menu/menu-link.d.ts +0 -50
  457. package/dist/types/components/zd-menu/menu-separator.d.ts +0 -7
  458. package/dist/types/components/zd-menu/menu.d.ts +0 -199
  459. package/dist/types/components/zd-modal/interfaces.d.ts +0 -35
  460. package/dist/types/components/zd-modal/modal-close-button.d.ts +0 -28
  461. package/dist/types/components/zd-modal/modal.d.ts +0 -53
  462. package/dist/types/components/zd-month/interfaces.d.ts +0 -6
  463. package/dist/types/components/zd-month/month.d.ts +0 -33
  464. package/dist/types/components/zd-number-input/interfaces.d.ts +0 -8
  465. package/dist/types/components/zd-number-input/number-input.d.ts +0 -43
  466. package/dist/types/components/zd-password/interfaces.d.ts +0 -6
  467. package/dist/types/components/zd-password/password.d.ts +0 -17
  468. package/dist/types/components/zd-progress/interfaces.d.ts +0 -10
  469. package/dist/types/components/zd-progress/progress.d.ts +0 -41
  470. package/dist/types/components/zd-radio/interfaces.d.ts +0 -11
  471. package/dist/types/components/zd-radio/radio.d.ts +0 -35
  472. package/dist/types/components/zd-row/interfaces.d.ts +0 -13
  473. package/dist/types/components/zd-row/row.d.ts +0 -39
  474. package/dist/types/components/zd-select/interfaces.d.ts +0 -24
  475. package/dist/types/components/zd-select/select.d.ts +0 -238
  476. package/dist/types/components/zd-select-multiple/interfaces.d.ts +0 -18
  477. package/dist/types/components/zd-select-multiple/select-multiple.d.ts +0 -113
  478. package/dist/types/components/zd-svg-map/interfaces.d.ts +0 -26
  479. package/dist/types/components/zd-svg-map/svg-map.d.ts +0 -35
  480. package/dist/types/components/zd-switch/interfaces.d.ts +0 -7
  481. package/dist/types/components/zd-switch/switch.d.ts +0 -16
  482. package/dist/types/components/zd-table/interfaces.d.ts +0 -25
  483. package/dist/types/components/zd-table/table.d.ts +0 -42
  484. package/dist/types/components/zd-tabs/interfaces.d.ts +0 -40
  485. package/dist/types/components/zd-tabs/tab-not-found.d.ts +0 -11
  486. package/dist/types/components/zd-tabs/tab.d.ts +0 -57
  487. package/dist/types/components/zd-tabs/tabs.d.ts +0 -86
  488. package/dist/types/components/zd-tag/interfaces.d.ts +0 -7
  489. package/dist/types/components/zd-tag/tag.d.ts +0 -13
  490. package/dist/types/components/zd-text/interfaces.d.ts +0 -9
  491. package/dist/types/components/zd-text/text.d.ts +0 -8
  492. package/dist/types/components/zd-text-input/interfaces.d.ts +0 -23
  493. package/dist/types/components/zd-text-input/text-input.d.ts +0 -91
  494. package/dist/types/components/zd-textarea/interfaces.d.ts +0 -21
  495. package/dist/types/components/zd-textarea/textarea.d.ts +0 -71
  496. package/dist/types/components/zd-time/interfaces.d.ts +0 -22
  497. package/dist/types/components/zd-time/time-format-selector.d.ts +0 -8
  498. package/dist/types/components/zd-time/time.d.ts +0 -149
  499. package/dist/types/components/zd-toggleable/interfaces.d.ts +0 -6
  500. package/dist/types/components/zd-toggleable/toggleable.d.ts +0 -21
  501. package/dist/types/components/zd-tooltip/interfaces.d.ts +0 -18
  502. package/dist/types/components/zd-tooltip/tooltip.d.ts +0 -57
  503. package/dist/types/components/zd-tree/interfaces.d.ts +0 -107
  504. package/dist/types/components/zd-tree/tree.d.ts +0 -161
  505. package/dist/types/components/zd-tree-grid/index.d.ts +0 -6
  506. package/dist/types/components/zd-tree-grid/interfaces.d.ts +0 -35
  507. package/dist/types/components/zd-tree-grid/iterable-tree.d.ts +0 -10
  508. package/dist/types/components/zd-tree-grid/keymap-tree.d.ts +0 -7
  509. package/dist/types/components/zd-tree-grid/tree-data-navigator.d.ts +0 -10
  510. package/dist/types/components/zd-tree-grid/tree-data-selector.d.ts +0 -18
  511. package/dist/types/components/zd-tree-grid/tree-grid.d.ts +0 -119
  512. package/dist/types/error/delete-rows.d.ts +0 -7
  513. package/dist/types/error/index.d.ts +0 -3
  514. package/dist/types/error/non-initialized.d.ts +0 -7
  515. package/dist/types/error/zeedhi-error.d.ts +0 -6
  516. package/dist/types/index.d.ts +0 -6
  517. package/dist/types/services/index.d.ts +0 -4
  518. package/dist/types/services/zd-alert/alert-queue.d.ts +0 -13
  519. package/dist/types/services/zd-alert/alert-replace.d.ts +0 -18
  520. package/dist/types/services/zd-alert/alert-service.d.ts +0 -45
  521. package/dist/types/services/zd-alert/alert-stack.d.ts +0 -9
  522. package/dist/types/services/zd-alert/index.d.ts +0 -5
  523. package/dist/types/services/zd-alert/interfaces.d.ts +0 -6
  524. package/dist/types/services/zd-dialog/dialog-service.d.ts +0 -24
  525. package/dist/types/services/zd-loading/loading-service.d.ts +0 -17
  526. package/dist/types/services/zd-modal/modal-service.d.ts +0 -39
  527. package/dist/types/utils/data-value-out/data-value-out.d.ts +0 -5
  528. package/dist/types/utils/data-value-out/index.d.ts +0 -2
  529. package/dist/types/utils/data-value-out/interfaces.d.ts +0 -8
  530. package/dist/types/utils/datasource-searcher/datasource-searcher.d.ts +0 -6
  531. package/dist/types/utils/datasource-searcher/index.d.ts +0 -2
  532. package/dist/types/utils/datasource-searcher/interfaces.d.ts +0 -5
  533. package/dist/types/utils/date-utils/date-utils.d.ts +0 -1
  534. package/dist/types/utils/icons/icons.d.ts +0 -24
  535. package/dist/types/utils/index.d.ts +0 -7
  536. package/dist/types/utils/omit/omit.d.ts +0 -11
  537. package/dist/types/utils/theme/theme.d.ts +0 -34
  538. package/dist/types/utils/tree-data-structure/index.d.ts +0 -2
  539. package/dist/types/utils/tree-data-structure/interfaces.d.ts +0 -30
  540. package/dist/types/utils/tree-data-structure/tree-data-structure.d.ts +0 -155
  541. package/dist/types/utils/unique-by/unique-by.d.ts +0 -3
  542. package/dist/zd-common.js +0 -13184
  543. package/dist/zd-common.min.js +0 -13184
  544. package/rollup.config.js +0 -27
  545. package/rollup.scss.config.js +0 -14
  546. package/tsconfig.build.json +0 -7
@@ -0,0 +1,1645 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/utils/tree-data-structure/tree-data-structure.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../index.html">All files</a> / <a href="index.html">src/utils/tree-data-structure</a> tree-data-structure.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>210/210</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>89/89</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>43/43</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>201/201</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a>
562
+ <a name='L497'></a><a href='#L497'>497</a>
563
+ <a name='L498'></a><a href='#L498'>498</a>
564
+ <a name='L499'></a><a href='#L499'>499</a>
565
+ <a name='L500'></a><a href='#L500'>500</a>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a>
581
+ <a name='L516'></a><a href='#L516'>516</a>
582
+ <a name='L517'></a><a href='#L517'>517</a>
583
+ <a name='L518'></a><a href='#L518'>518</a>
584
+ <a name='L519'></a><a href='#L519'>519</a>
585
+ <a name='L520'></a><a href='#L520'>520</a>
586
+ <a name='L521'></a><a href='#L521'>521</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-yes">95x</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-yes">59x</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-yes">59x</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-yes">59x</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-yes">59x</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-yes">59x</span>
621
+ <span class="cline-any cline-neutral">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-yes">59x</span>
629
+ <span class="cline-any cline-yes">59x</span>
630
+ <span class="cline-any cline-yes">59x</span>
631
+ <span class="cline-any cline-yes">59x</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-yes">249x</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-yes">2x</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-yes">1x</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-yes">54x</span>
650
+ <span class="cline-any cline-yes">54x</span>
651
+ <span class="cline-any cline-yes">54x</span>
652
+ <span class="cline-any cline-yes">54x</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-yes">59x</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-yes">54x</span>
663
+ <span class="cline-any cline-yes">86x</span>
664
+ <span class="cline-any cline-yes">86x</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-yes">86x</span>
667
+ <span class="cline-any cline-yes">32x</span>
668
+ <span class="cline-any cline-yes">17x</span>
669
+ <span class="cline-any cline-yes">15x</span>
670
+ <span class="cline-any cline-yes">5x</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-yes">86x</span>
675
+ <span class="cline-any cline-yes">1x</span>
676
+ <span class="cline-any cline-yes">1x</span>
677
+ <span class="cline-any cline-neutral">&nbsp;</span>
678
+ <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-yes">85x</span>
680
+ <span class="cline-any cline-yes">85x</span>
681
+ <span class="cline-any cline-yes">6x</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-yes">79x</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-yes">85x</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-neutral">&nbsp;</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-neutral">&nbsp;</span>
695
+ <span class="cline-any cline-yes">88x</span>
696
+ <span class="cline-any cline-yes">11x</span>
697
+ <span class="cline-any cline-yes">77x</span>
698
+ <span class="cline-any cline-yes">16x</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-yes">61x</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-yes">61x</span>
710
+ <span class="cline-any cline-yes">61x</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-yes">61x</span>
713
+ <span class="cline-any cline-yes">257x</span>
714
+ <span class="cline-any cline-yes">257x</span>
715
+ <span class="cline-any cline-yes">126x</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-yes">257x</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-yes">61x</span>
721
+ <span class="cline-any cline-yes">61x</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-yes">316x</span>
730
+ <span class="cline-any cline-yes">316x</span>
731
+ <span class="cline-any cline-yes">255x</span>
732
+ <span class="cline-any cline-yes">255x</span>
733
+ <span class="cline-any cline-yes">255x</span>
734
+ <span class="cline-any cline-yes">255x</span>
735
+ <span class="cline-any cline-yes">255x</span>
736
+ <span class="cline-any cline-yes">255x</span>
737
+ <span class="cline-any cline-yes">255x</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-yes">316x</span>
741
+ <span class="cline-any cline-yes">255x</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-yes">316x</span>
745
+ <span class="cline-any cline-yes">255x</span>
746
+ <span class="cline-any cline-yes">255x</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-yes">54x</span>
752
+ <span class="cline-any cline-yes">67x</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-yes">16x</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-yes">16x</span>
762
+ <span class="cline-any cline-yes">13x</span>
763
+ <span class="cline-any cline-yes">13x</span>
764
+ <span class="cline-any cline-yes">13x</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-yes">16x</span>
768
+ <span class="cline-any cline-yes">16x</span>
769
+ <span class="cline-any cline-yes">16x</span>
770
+ <span class="cline-any cline-yes">2x</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-yes">16x</span>
774
+ <span class="cline-any cline-yes">41x</span>
775
+ <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-neutral">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">41x</span>
784
+ <span class="cline-any cline-yes">2x</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-yes">41x</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-yes">16x</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-yes">8x</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-yes">16x</span>
796
+ <span class="cline-any cline-yes">14x</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-yes">2x</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-yes">16x</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-yes">64x</span>
809
+ <span class="cline-any cline-yes">64x</span>
810
+ <span class="cline-any cline-yes">64x</span>
811
+ <span class="cline-any cline-yes">7x</span>
812
+ <span class="cline-any cline-yes">7x</span>
813
+ <span class="cline-any cline-yes">7x</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-yes">64x</span>
817
+ <span class="cline-any cline-yes">64x</span>
818
+ <span class="cline-any cline-yes">64x</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-yes">134x</span>
831
+ <span class="cline-any cline-yes">141x</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-yes">134x</span>
834
+ <span class="cline-any cline-yes">270x</span>
835
+ <span class="cline-any cline-yes">270x</span>
836
+ <span class="cline-any cline-yes">270x</span>
837
+ <span class="cline-any cline-yes">270x</span>
838
+ <span class="cline-any cline-yes">70x</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-yes">142x</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-yes">142x</span>
866
+ <span class="cline-any cline-yes">123x</span>
867
+ <span class="cline-any cline-yes">123x</span>
868
+ <span class="cline-any cline-yes">1x</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-yes">122x</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-yes">19x</span>
873
+ <span class="cline-any cline-yes">16x</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-yes">3x</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-yes">11x</span>
885
+ <span class="cline-any cline-yes">11x</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-yes">11x</span>
888
+ <span class="cline-any cline-yes">11x</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-yes">3x</span>
898
+ <span class="cline-any cline-yes">3x</span>
899
+ <span class="cline-any cline-yes">2x</span>
900
+ <span class="cline-any cline-yes">2x</span>
901
+ <span class="cline-any cline-yes">2x</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-yes">3x</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-yes">2x</span>
914
+ <span class="cline-any cline-yes">2x</span>
915
+ <span class="cline-any cline-yes">1x</span>
916
+ <span class="cline-any cline-yes">1x</span>
917
+ <span class="cline-any cline-yes">1x</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-yes">2x</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-yes">9x</span>
930
+ <span class="cline-any cline-yes">9x</span>
931
+ <span class="cline-any cline-yes">9x</span>
932
+ <span class="cline-any cline-yes">9x</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-yes">2x</span>
939
+ <span class="cline-any cline-yes">2x</span>
940
+ <span class="cline-any cline-yes">1x</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-yes">2x</span>
943
+ <span class="cline-any cline-yes">2x</span>
944
+ <span class="cline-any cline-yes">2x</span>
945
+ <span class="cline-any cline-yes">2x</span>
946
+ <span class="cline-any cline-yes">2x</span>
947
+ <span class="cline-any cline-yes">2x</span>
948
+ <span class="cline-any cline-neutral">&nbsp;</span>
949
+ <span class="cline-any cline-yes">2x</span>
950
+ <span class="cline-any cline-neutral">&nbsp;</span>
951
+ <span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-yes">7x</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-yes">31x</span>
961
+ <span class="cline-any cline-yes">17x</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-yes">14x</span>
964
+ <span class="cline-any cline-yes">14x</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-yes">3x</span>
973
+ <span class="cline-any cline-yes">3x</span>
974
+ <span class="cline-any cline-yes">3x</span>
975
+ <span class="cline-any cline-yes">2x</span>
976
+ <span class="cline-any cline-yes">1x</span>
977
+ <span class="cline-any cline-yes">1x</span>
978
+ <span class="cline-any cline-yes">1x</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-neutral">&nbsp;</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-neutral">&nbsp;</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-yes">3x</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-neutral">&nbsp;</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-yes">17x</span>
996
+ <span class="cline-any cline-yes">17x</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-yes">70x</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-neutral">&nbsp;</span>
1004
+ <span class="cline-any cline-neutral">&nbsp;</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-neutral">&nbsp;</span>
1007
+ <span class="cline-any cline-yes">17x</span>
1008
+ <span class="cline-any cline-yes">17x</span>
1009
+ <span class="cline-any cline-neutral">&nbsp;</span>
1010
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-yes">1x</span>
1016
+ <span class="cline-any cline-yes">1x</span>
1017
+ <span class="cline-any cline-yes">1x</span>
1018
+ <span class="cline-any cline-yes">5x</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">5x</span>
1021
+ <span class="cline-any cline-yes">26x</span>
1022
+ <span class="cline-any cline-yes">26x</span>
1023
+ <span class="cline-any cline-yes">26x</span>
1024
+ <span class="cline-any cline-neutral">&nbsp;</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-yes">5x</span>
1027
+ <span class="cline-any cline-yes">5x</span>
1028
+ <span class="cline-any cline-yes">2x</span>
1029
+ <span class="cline-any cline-yes">2x</span>
1030
+ <span class="cline-any cline-yes">2x</span>
1031
+ <span class="cline-any cline-yes">1x</span>
1032
+ <span class="cline-any cline-yes">1x</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-neutral">&nbsp;</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-neutral">&nbsp;</span>
1037
+ <span class="cline-any cline-yes">1x</span>
1038
+ <span class="cline-any cline-neutral">&nbsp;</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-neutral">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-yes">298x</span>
1045
+ <span class="cline-any cline-yes">298x</span>
1046
+ <span class="cline-any cline-yes">298x</span>
1047
+ <span class="cline-any cline-yes">298x</span>
1048
+ <span class="cline-any cline-yes">298x</span>
1049
+ <span class="cline-any cline-yes">298x</span>
1050
+ <span class="cline-any cline-yes">298x</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span>
1057
+ <span class="cline-any cline-neutral">&nbsp;</span>
1058
+ <span class="cline-any cline-yes">45x</span>
1059
+ <span class="cline-any cline-yes">45x</span>
1060
+ <span class="cline-any cline-yes">45x</span>
1061
+ <span class="cline-any cline-yes">24x</span>
1062
+ <span class="cline-any cline-yes">24x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-yes">45x</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-neutral">&nbsp;</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-neutral">&nbsp;</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-yes">8x</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-yes">7x</span>
1076
+ <span class="cline-any cline-yes">7x</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-yes">7x</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-yes">3x</span>
1083
+ <span class="cline-any cline-yes">3x</span>
1084
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1087
+ <span class="cline-any cline-yes">3x</span>
1088
+ <span class="cline-any cline-yes">3x</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-yes">1x</span>
1091
+ <span class="cline-any cline-yes">1x</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-yes">7x</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-neutral">&nbsp;</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-yes">8x</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-neutral">&nbsp;</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-yes">2x</span>
1103
+ <span class="cline-any cline-yes">2x</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-neutral">&nbsp;</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Datasource, IDictionary } from '@zeedhi/core';
1107
+ import { ITreeComponent, ITreeDataStructure } from './interfaces';
1108
+ &nbsp;
1109
+ export class TreeDataStructure implements ITreeDataStructure {
1110
+ /**
1111
+ * Original datasource
1112
+ */
1113
+ private originalDatasource!: Datasource;
1114
+ &nbsp;
1115
+ /**
1116
+ * Parent field Name
1117
+ */
1118
+ private parentField: string;
1119
+ &nbsp;
1120
+ /**
1121
+ * Defines if the tree will be opened or not (true/false) or if it should open only until a specific level
1122
+ */
1123
+ public openLevelOnLoad: number | boolean = false;
1124
+ &nbsp;
1125
+ /**
1126
+ * Stores tree data
1127
+ */
1128
+ public treeData: IDictionary&lt;any&gt;[] = [];
1129
+ &nbsp;
1130
+ /**
1131
+ * Search returns no data
1132
+ */
1133
+ public searchHasNoData = false;
1134
+ &nbsp;
1135
+ /**
1136
+ * Stores tree structure
1137
+ */
1138
+ private treeStructure: any = {};
1139
+ &nbsp;
1140
+ public fieldHasChild?: string = '';
1141
+ &nbsp;
1142
+ /**
1143
+ * Tree component
1144
+ */
1145
+ private tree!: ITreeComponent;
1146
+ &nbsp;
1147
+ constructor(tree: ITreeComponent) {
1148
+ this.parentField = tree.parentField;
1149
+ this.openLevelOnLoad = tree.openLevelOnLoad;
1150
+ this.fieldHasChild = tree.fieldHasChild;
1151
+ this.tree = tree;
1152
+ }
1153
+ detach?: boolean | undefined;
1154
+ &nbsp;
1155
+ get fetchOnDemand() {
1156
+ return this.tree.fetchOnDemand || false;
1157
+ }
1158
+ &nbsp;
1159
+ set fetchOnDemand(value: boolean) {
1160
+ if (this.tree.fetchOnDemand === undefined) return;
1161
+ &nbsp;
1162
+ this.tree.fetchOnDemand = value;
1163
+ }
1164
+ &nbsp;
1165
+ /**
1166
+ * Creates properties and methods
1167
+ */
1168
+ public initialize() {
1169
+ this.originalDatasource = this.tree.datasource;
1170
+ const originalGetFunction = this.originalDatasource.get;
1171
+ this.originalDatasource.get = this.treeGetData(originalGetFunction);
1172
+ (this.originalDatasource as any).reloadAndUpdateSelectedRows = this.reloadAndUpdateSelectedRows.bind(this);
1173
+ }
1174
+ &nbsp;
1175
+ private searchValue = '';
1176
+ &nbsp;
1177
+ /**
1178
+ * Redefine get method
1179
+ * @param originalGet originalDatasource get function
1180
+ */
1181
+ private treeGetData(originalGet: () =&gt; Promise&lt;any&gt;) {
1182
+ return async () =&gt; {
1183
+ this.searchValue = this.originalDatasource.search;
1184
+ this.searchHasNoData = false;
1185
+ &nbsp;
1186
+ if (this.fetchOnDemand) {
1187
+ if (this.tree.detach || this.originalDatasource.search) {
1188
+ delete this.originalDatasource.filter[this.parentField];
1189
+ } else if (!this.originalDatasource.filter[this.parentField]) {
1190
+ this.originalDatasource.filter[this.parentField] = 'NULL';
1191
+ }
1192
+ }
1193
+ &nbsp;
1194
+ if (!this.tree.detach &amp;&amp; !this.fetchOnDemand &amp;&amp; this.searchValue) {
1195
+ this.searchAllData();
1196
+ return Promise.resolve(this.originalDatasource.data);
1197
+ }
1198
+ &nbsp;
1199
+ return originalGet.call(this.originalDatasource).then((data: IDictionary&lt;any&gt;[]) =&gt; {
1200
+ if (this.searchValue) {
1201
+ this.buildDetached();
1202
+ } else {
1203
+ this.buildTree();
1204
+ }
1205
+ &nbsp;
1206
+ return data;
1207
+ });
1208
+ };
1209
+ }
1210
+ &nbsp;
1211
+ /**
1212
+ * search data
1213
+ */
1214
+ public buildTree() {
1215
+ if (this.tree.detach) {
1216
+ this.buildDetached();
1217
+ } else if (this.fetchOnDemand) {
1218
+ this.buildOnDemand();
1219
+ } else {
1220
+ this.buildAllData();
1221
+ }
1222
+ }
1223
+ &nbsp;
1224
+ /**
1225
+ * Build tree without fetchOnDemand
1226
+ * @param data datasource data
1227
+ */
1228
+ private buildAllData() {
1229
+ this.treeData = [];
1230
+ this.treeStructure = {};
1231
+ &nbsp;
1232
+ this.originalDatasource.data.forEach((row) =&gt; {
1233
+ const parentKey = row[this.parentField] || 'no-parent';
1234
+ if (!this.treeStructure[parentKey]) {
1235
+ this.treeStructure[parentKey] = [];
1236
+ }
1237
+ this.treeStructure[parentKey].push({ ...row });
1238
+ });
1239
+ &nbsp;
1240
+ this.buildTreeData();
1241
+ this.sortData();
1242
+ }
1243
+ &nbsp;
1244
+ /**
1245
+ * Build tree data using a parent row
1246
+ * @param parentRow Parent row (undefined = build entire tree)
1247
+ */
1248
+ private buildTreeData(parentRow: any = undefined) {
1249
+ const parentKey = parentRow?.[this.originalDatasource.uniqueKey] || 'no-parent';
1250
+ const childrenData = (this.treeStructure[parentKey] || []).map((row: IDictionary&lt;any&gt;) =&gt; {
1251
+ const level = (parentRow?.tree__level || 0) + 1;
1252
+ row.tree__children = [{}];
1253
+ row.tree__opened = this.openLevelOnLoad === true || level &lt;= this.openLevelOnLoad;
1254
+ row.tree__parent = parentRow;
1255
+ row.tree__level = level;
1256
+ row.tree__searched = false;
1257
+ return row;
1258
+ });
1259
+ &nbsp;
1260
+ if (parentRow) {
1261
+ parentRow.tree__children = childrenData;
1262
+ }
1263
+ &nbsp;
1264
+ childrenData.forEach((row: any) =&gt; {
1265
+ this.treeData.push(row);
1266
+ this.buildTreeData(row);
1267
+ });
1268
+ }
1269
+ &nbsp;
1270
+ public findDataIndex(data: IDictionary&lt;any&gt;[], value: any) {
1271
+ const { uniqueKey } = this.originalDatasource;
1272
+ return data.findIndex((item) =&gt; item[uniqueKey] === value);
1273
+ }
1274
+ &nbsp;
1275
+ /**
1276
+ * Build tree with fetchOnDemand
1277
+ */
1278
+ private buildOnDemand() {
1279
+ let parentKey = this.originalDatasource.filter[this.parentField];
1280
+ &nbsp;
1281
+ if (parentKey === 'NULL') {
1282
+ parentKey = 'no-parent';
1283
+ this.treeData = [];
1284
+ this.treeStructure = {};
1285
+ }
1286
+ &nbsp;
1287
+ const parentIdx = this.findDataIndex(this.treeData, parentKey);
1288
+ const parent = parentIdx !== -1 ? this.treeData[parentIdx] : undefined;
1289
+ if (parent) {
1290
+ parent.tree__children = [];
1291
+ }
1292
+ &nbsp;
1293
+ const childData = this.originalDatasource.data.map((row) =&gt; {
1294
+ const item = {
1295
+ ...row,
1296
+ tree__children: [{}],
1297
+ tree__opened: false,
1298
+ tree__searched: false,
1299
+ tree__level: parent ? parent.tree__level + 1 : 1,
1300
+ tree__parent: parent,
1301
+ };
1302
+ &nbsp;
1303
+ if (parent) {
1304
+ parent.tree__children.push(item);
1305
+ }
1306
+ &nbsp;
1307
+ return item;
1308
+ });
1309
+ &nbsp;
1310
+ if (parent) {
1311
+ // remove all existing children to add new ones
1312
+ this.treeData = this.treeData.filter((item) =&gt; item.tree__parent !== parent);
1313
+ }
1314
+ &nbsp;
1315
+ if (!parent) {
1316
+ this.treeData = childData;
1317
+ } else {
1318
+ this.treeData.splice(parentIdx + 1, 0, ...childData);
1319
+ }
1320
+ &nbsp;
1321
+ this.treeStructure[parentKey] = [...childData];
1322
+ }
1323
+ &nbsp;
1324
+ /**
1325
+ * Sort data
1326
+ */
1327
+ private sortData() {
1328
+ const columns: string[] = [];
1329
+ const order: string[] = [];
1330
+ this.originalDatasource.order.forEach((value) =&gt; {
1331
+ const splitted = value.split('.');
1332
+ columns.push(splitted[0]);
1333
+ order.push(splitted[1]);
1334
+ });
1335
+ &nbsp;
1336
+ this.treeData = [];
1337
+ this.originalDatasource.data = [];
1338
+ this.sortTreeDataRows(this.treeStructure['no-parent'] || [], columns, order);
1339
+ }
1340
+ &nbsp;
1341
+ /**
1342
+ * Sort tree data rows
1343
+ * @param dataToSort Data to sort
1344
+ * @param columns Columns used to oreder the collection
1345
+ * @param types Order orientation. All values must be asc or desc
1346
+ * @param index Columns and types position
1347
+ * @returns Sorted data
1348
+ */
1349
+ private sortTreeDataRows(dataToSort: IDictionary&lt;any&gt;[], columns: string[], types: string[]) {
1350
+ const { uniqueKey } = this.originalDatasource;
1351
+ const childrenData = dataToSort.sort((row, nextRow) =&gt; this.sort(row, nextRow, columns, types));
1352
+ &nbsp;
1353
+ childrenData.forEach((row) =&gt; {
1354
+ this.treeData.push(row);
1355
+ this.originalDatasource.data.push(this.clearRow(row));
1356
+ const key = row[uniqueKey];
1357
+ if (this.treeStructure[key]?.length) {
1358
+ this.sortTreeDataRows(this.treeStructure[key], columns, types);
1359
+ }
1360
+ });
1361
+ }
1362
+ &nbsp;
1363
+ /**
1364
+ * Custom sort for collections
1365
+ * @param row Collection row
1366
+ * @param nextRow Next row from collection
1367
+ * @param columns Columns used to oreder the collection
1368
+ * @param types Order orientation. All values must be asc or desc
1369
+ * @param index Columns and types position
1370
+ * @returns Row's position
1371
+ */
1372
+ private sort(
1373
+ row: IDictionary&lt;any&gt;,
1374
+ nextRow: IDictionary&lt;any&gt;,
1375
+ columns: string[],
1376
+ types: string[],
1377
+ index = 0,
1378
+ ): number {
1379
+ const orderTypes: IDictionary&lt;number&gt; = {
1380
+ asc: 1,
1381
+ desc: -1,
1382
+ same: 0,
1383
+ };
1384
+ &nbsp;
1385
+ if (row[columns[index]] === nextRow[columns[index]]) {
1386
+ const nextIndex = index + 1;
1387
+ if (Object.hasOwn(columns, nextIndex)) {
1388
+ return this.sort(row, nextRow, columns, types, nextIndex);
1389
+ }
1390
+ return orderTypes.same;
1391
+ }
1392
+ if (row[columns[index]] &gt; nextRow[columns[index]]) {
1393
+ return orderTypes[types[index]];
1394
+ }
1395
+ return orderTypes[types[index]] * -1;
1396
+ }
1397
+ &nbsp;
1398
+ /**
1399
+ * Return if tree element and its parents are opened
1400
+ * @param row datasource row
1401
+ * @returns Element and parents are opened
1402
+ */
1403
+ public isOpened(row: IDictionary&lt;any&gt;): boolean {
1404
+ const rowData = this.getRowData(row);
1405
+ const isSearched = !this.searchValue || rowData.tree__searched;
1406
+ const isOpened =
1407
+ !rowData.tree__parent || (rowData.tree__parent.tree__opened &amp;&amp; this.isOpened(rowData.tree__parent));
1408
+ return isSearched &amp;&amp; isOpened;
1409
+ }
1410
+ &nbsp;
1411
+ /**
1412
+ * Return previous opened row index
1413
+ * @param rowIdx row index
1414
+ * @returns previous row index
1415
+ */
1416
+ public previousOpenedRow(rowIdx: number) {
1417
+ let result = -1;
1418
+ for (let i = rowIdx - 1; i &gt;= 0; i -= 1) {
1419
+ if (this.isOpened(this.treeData[i])) {
1420
+ result = i;
1421
+ break;
1422
+ }
1423
+ }
1424
+ return result;
1425
+ }
1426
+ &nbsp;
1427
+ /**
1428
+ * Return next opened row index
1429
+ * @param rowIdx row index
1430
+ * @returns next row index
1431
+ */
1432
+ public nextOpenedRow(rowIdx: number) {
1433
+ let result = -1;
1434
+ for (let i = rowIdx + 1; i &lt; this.treeData.length; i += 1) {
1435
+ if (this.isOpened(this.treeData[i])) {
1436
+ result = i;
1437
+ break;
1438
+ }
1439
+ }
1440
+ return result;
1441
+ }
1442
+ &nbsp;
1443
+ /**
1444
+ * Expands or collapses a row
1445
+ * @param row Row object
1446
+ * @param rowIndex Row index
1447
+ */
1448
+ public async toggleExpand(row: IDictionary&lt;any&gt;, rowIndex = -1) {
1449
+ const { uniqueKey } = this.originalDatasource;
1450
+ const rowData = this.getRowData(row);
1451
+ rowData.tree__opened = !rowData.tree__opened;
1452
+ if (
1453
+ rowData.tree__opened &amp;&amp;
1454
+ this.fetchOnDemand &amp;&amp;
1455
+ rowData.tree__children.length === 1 &amp;&amp;
1456
+ !rowData.tree__children[0][uniqueKey]
1457
+ ) {
1458
+ let index = rowIndex;
1459
+ if (index === -1) {
1460
+ index = this.findDataIndex(this.treeData, row[uniqueKey]);
1461
+ }
1462
+ const originalData = [...this.originalDatasource.data];
1463
+ const data: IDictionary&lt;any&gt;[] = await this.originalDatasource.addFilter(this.parentField, row[uniqueKey]);
1464
+ originalData.splice(index + 1, 0, ...data);
1465
+ this.originalDatasource.data = originalData;
1466
+ this.originalDatasource.currentRow = this.clearRow(row);
1467
+ delete this.originalDatasource.filter[this.parentField];
1468
+ &nbsp;
1469
+ return data;
1470
+ }
1471
+ &nbsp;
1472
+ return undefined;
1473
+ }
1474
+ &nbsp;
1475
+ /**
1476
+ * Return row with tree data
1477
+ * @param row datasource row
1478
+ */
1479
+ public getRowData(row: IDictionary&lt;any&gt;) {
1480
+ if (row.tree__opened !== undefined) {
1481
+ return row;
1482
+ }
1483
+ const rowIdx = this.findDataIndex(this.treeData, row[this.originalDatasource.uniqueKey]);
1484
+ return this.treeData[rowIdx];
1485
+ }
1486
+ &nbsp;
1487
+ /**
1488
+ * Toggle expand/collapse using navigation keys
1489
+ * @param collapse Should collapse
1490
+ */
1491
+ public navigateToggle(collapse: boolean) {
1492
+ const { currentRow } = this.originalDatasource;
1493
+ const rowData = this.getRowData(currentRow);
1494
+ if (rowData.tree__opened === collapse &amp;&amp; rowData.tree__children.length &gt; 0) {
1495
+ this.toggleExpand(rowData);
1496
+ } else if (collapse) {
1497
+ if (rowData.tree__parent) {
1498
+ this.originalDatasource.currentRow = this.clearRow(rowData.tree__parent);
1499
+ }
1500
+ }
1501
+ }
1502
+ &nbsp;
1503
+ /**
1504
+ * Updates selected rows, fetches and retrieves data collection
1505
+ * @returns Promise with data collection
1506
+ */
1507
+ private async reloadAndUpdateSelectedRows() {
1508
+ this.sortData();
1509
+ }
1510
+ &nbsp;
1511
+ /**
1512
+ * Arrange treeData in a uniform structure
1513
+ */
1514
+ public buildDetached() {
1515
+ this.treeData = [];
1516
+ this.treeStructure = {};
1517
+ &nbsp;
1518
+ const childData = this.originalDatasource.data.map((row) =&gt; ({
1519
+ ...row,
1520
+ tree__children: [],
1521
+ tree__opened: false,
1522
+ tree__searched: !!this.searchValue,
1523
+ tree__level: 1,
1524
+ tree__parent: undefined,
1525
+ }));
1526
+ &nbsp;
1527
+ this.treeData = childData;
1528
+ this.treeStructure['no-parent'] = childData;
1529
+ }
1530
+ &nbsp;
1531
+ /**
1532
+ * Search value against a memory datasource
1533
+ */
1534
+ private searchAllData() {
1535
+ this.searchHasNoData = true;
1536
+ const searchValue = this.searchValue.toLowerCase();
1537
+ this.treeData.forEach((row) =&gt; {
1538
+ let filtered = false;
1539
+ &nbsp;
1540
+ Object.keys(row).every((key) =&gt; {
1541
+ const rowValue = (row[key] || '').toString().toLowerCase();
1542
+ filtered = this.originalDatasource.searchIn.indexOf(key) !== -1 &amp;&amp; rowValue.indexOf(searchValue) !== -1;
1543
+ return !filtered;
1544
+ });
1545
+ &nbsp;
1546
+ row.tree__searched = filtered;
1547
+ if (filtered) {
1548
+ this.searchHasNoData = false;
1549
+ let parent = row.tree__parent;
1550
+ while (parent &amp;&amp; !parent.tree__searched) {
1551
+ parent.tree__searched = true;
1552
+ parent = parent.tree__parent;
1553
+ }
1554
+ }
1555
+ });
1556
+ &nbsp;
1557
+ this.searchHasNoData = !this.treeData.some((row) =&gt; row.tree__searched);
1558
+ }
1559
+ &nbsp;
1560
+ /**
1561
+ * Clear row removing 'tree__' props
1562
+ */
1563
+ public clearRow(row: IDictionary&lt;any&gt;) {
1564
+ const result = { ...row };
1565
+ result.tree__children = undefined;
1566
+ result.tree__level = undefined;
1567
+ result.tree__parent = undefined;
1568
+ result.tree__opened = undefined;
1569
+ result.tree__searched = undefined;
1570
+ return result;
1571
+ }
1572
+ &nbsp;
1573
+ /**
1574
+ * Get all children
1575
+ * @param row datasource row
1576
+ */
1577
+ public getChildren(row: IDictionary&lt;any&gt;) {
1578
+ let result: IDictionary&lt;any&gt;[] = [];
1579
+ const { uniqueKey } = this.originalDatasource;
1580
+ (this.treeStructure[row[uniqueKey]] || []).forEach((item: IDictionary&lt;any&gt;) =&gt; {
1581
+ result.push(this.clearRow(item));
1582
+ result = result.concat(this.getChildren(item));
1583
+ });
1584
+ return result;
1585
+ }
1586
+ &nbsp;
1587
+ /**
1588
+ * Checks if a row has async children that are yet to be loaded
1589
+ * @param row
1590
+ * @returns `false` if the row has no children to be loaded, `true` if it does or if fieldHasChild is not defined
1591
+ */
1592
+ public hasChildOnDemand(row: IDictionary&lt;any&gt;) {
1593
+ if (!this.fieldHasChild) return true;
1594
+ &nbsp;
1595
+ const rowHasChild: boolean | number | '0' | '1' = row[this.fieldHasChild];
1596
+ let isVisibleChevron = true;
1597
+ &nbsp;
1598
+ switch (rowHasChild) {
1599
+ case '0':
1600
+ case false:
1601
+ case 0:
1602
+ isVisibleChevron = false;
1603
+ break;
1604
+ case '1':
1605
+ case true:
1606
+ case 1:
1607
+ isVisibleChevron = true;
1608
+ break;
1609
+ default:
1610
+ isVisibleChevron = true;
1611
+ break;
1612
+ }
1613
+ &nbsp;
1614
+ return isVisibleChevron;
1615
+ }
1616
+ &nbsp;
1617
+ public getParentRow(row: IDictionary): IDictionary {
1618
+ return this.getRowData(row).tree__parent;
1619
+ }
1620
+ &nbsp;
1621
+ public resetTree() {
1622
+ this.treeData = [];
1623
+ this.buildTree();
1624
+ }
1625
+ }
1626
+ &nbsp;</pre></td></tr></table></pre>
1627
+
1628
+ <div class='push'></div><!-- for sticky footer -->
1629
+ </div><!-- /wrapper -->
1630
+ <div class='footer quiet pad2 space-top1 center small'>
1631
+ Code coverage generated by
1632
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1633
+ at 2026-07-03T14:17:58.205Z
1634
+ </div>
1635
+ <script src="../../../prettify.js"></script>
1636
+ <script>
1637
+ window.onload = function () {
1638
+ prettyPrint();
1639
+ };
1640
+ </script>
1641
+ <script src="../../../sorter.js"></script>
1642
+ <script src="../../../block-navigation.js"></script>
1643
+ </body>
1644
+ </html>
1645
+