@wavemaker/app-ng-runtime 12.0.0-next.45001 → 12.0.0-next.45005

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 (1480) hide show
  1. app-ng-runtime/build-task/.npmignore +2 -0
  2. app-ng-runtime/build-task/bundles/index.umd.js +341 -344
  3. app-ng-runtime/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +5 -3
  4. app-ng-runtime/build-task/esm2022/advanced/carousel/carousel.build.mjs +1 -1
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +1 -1
  6. app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  7. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +1 -1
  8. app-ng-runtime/build-task/esm2022/containers/repeat-template.build.mjs +5 -3
  9. app-ng-runtime/build-task/esm2022/containers/tabs/tabs.build.mjs +1 -1
  10. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +1 -1
  11. app-ng-runtime/build-task/esm2022/data/form/form.build.mjs +5 -2
  12. app-ng-runtime/build-task/esm2022/data/list/list.build.mjs +1 -1
  13. app-ng-runtime/build-task/esm2022/data/media-list/media-list.build.mjs +1 -1
  14. app-ng-runtime/build-task/esm2022/data/table/table-column/table-column.build.mjs +1 -1
  15. app-ng-runtime/build-task/esm2022/data/table/table.build.mjs +1 -1
  16. app-ng-runtime/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +1 -1
  17. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +1 -1
  18. app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +8 -3
  19. app-ng-runtime/build-task/esm2022/navigation/popover/popover.build.mjs +1 -1
  20. app-ng-runtime/build-task/esm2022/page/page-content/page-content.build.mjs +1 -1
  21. app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
  22. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -2
  23. app-ng-runtime/build-task/esm2022/utils/utils.mjs +1 -1
  24. app-ng-runtime/build-task/fesm2022/index.mjs +340 -341
  25. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  26. app-ng-runtime/build-task/public_api.d.ts +0 -1
  27. app-ng-runtime/components/advanced/carousel/.npmignore +2 -0
  28. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +29 -18
  29. app-ng-runtime/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +3 -3
  30. app-ng-runtime/components/advanced/carousel/carousel.directive.d.ts +2 -2
  31. app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +15 -9
  32. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  33. app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +12 -7
  34. app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
  35. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +28 -16
  36. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  37. app-ng-runtime/components/advanced/custom/.npmignore +2 -0
  38. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +31 -94
  39. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +2 -0
  40. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
  41. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +4 -5
  42. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +21 -13
  43. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +5 -2
  44. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +5 -5
  45. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +2 -9
  46. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +1 -2
  47. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +31 -93
  48. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  49. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -1
  50. app-ng-runtime/components/advanced/login/.npmignore +2 -0
  51. app-ng-runtime/components/advanced/login/bundles/index.umd.js +19 -13
  52. app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +17 -10
  53. app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
  54. app-ng-runtime/components/advanced/login/fesm2022/index.mjs +18 -11
  55. app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
  56. app-ng-runtime/components/advanced/login/login.component.d.ts +2 -2
  57. app-ng-runtime/components/advanced/marquee/.npmignore +2 -0
  58. app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +11 -6
  59. app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +12 -7
  60. app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
  61. app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +13 -8
  62. app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  63. app-ng-runtime/components/advanced/marquee/marquee.directive.d.ts +2 -2
  64. app-ng-runtime/components/base/.npmignore +2 -0
  65. app-ng-runtime/components/base/bundles/index.umd.js +400 -312
  66. app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +3 -6
  67. app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
  68. app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +13 -15
  69. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +35 -34
  70. app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
  71. app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -3
  72. app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -3
  73. app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  74. app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
  75. app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
  76. app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +48 -42
  77. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
  78. app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
  79. app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +8 -7
  80. app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +23 -22
  81. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +63 -42
  82. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +4 -4
  83. app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +52 -18
  84. app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +6 -5
  85. app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +3 -3
  86. app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -3
  87. app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +12 -7
  88. app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +5 -4
  89. app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +12 -7
  90. app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +14 -7
  91. app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +16 -10
  92. app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +14 -8
  93. app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +9 -8
  94. app-ng-runtime/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -1
  95. app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +4 -4
  96. app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +15 -9
  97. app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +11 -10
  98. app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  99. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  100. app-ng-runtime/components/base/esm2022/widgets/framework/styler.mjs +1 -1
  101. app-ng-runtime/components/base/esm2022/widgets/framework/widget-props.mjs +1 -1
  102. app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  103. app-ng-runtime/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
  104. app-ng-runtime/components/base/fesm2022/index.mjs +405 -315
  105. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  106. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  107. app-ng-runtime/components/base/public_api.d.ts +1 -0
  108. app-ng-runtime/components/base/utils/data-utils.d.ts +1 -0
  109. app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
  110. app-ng-runtime/components/base/widgets/common/base/base-container.component.d.ts +1 -1
  111. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  112. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +22 -4
  113. app-ng-runtime/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +1 -1
  114. app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  115. app-ng-runtime/components/base/widgets/common/container/container.directive.d.ts +2 -2
  116. app-ng-runtime/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -2
  117. app-ng-runtime/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +2 -2
  118. app-ng-runtime/components/base/widgets/common/message/message.component.d.ts +2 -2
  119. app-ng-runtime/components/base/widgets/common/partial/partial.directive.d.ts +2 -2
  120. app-ng-runtime/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +3 -3
  121. app-ng-runtime/components/basic/default/.npmignore +2 -0
  122. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +2 -2
  123. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +2 -2
  124. app-ng-runtime/components/basic/default/bundles/index.umd.js +158 -115
  125. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +31 -27
  126. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +13 -7
  127. app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
  128. app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +13 -8
  129. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +19 -14
  130. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +15 -9
  131. app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +15 -9
  132. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +12 -7
  133. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
  134. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +34 -30
  135. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +21 -17
  136. app-ng-runtime/components/basic/default/fesm2022/index.mjs +157 -113
  137. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  138. app-ng-runtime/components/basic/default/html/html.directive.d.ts +2 -2
  139. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +2 -2
  140. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +2 -2
  141. app-ng-runtime/components/basic/default/label/label.directive.d.ts +2 -2
  142. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -2
  143. app-ng-runtime/components/basic/default/spinner/spinner.component.d.ts +2 -2
  144. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -2
  145. app-ng-runtime/components/basic/progress/.npmignore +2 -0
  146. app-ng-runtime/components/basic/progress/bundles/index.umd.js +40 -28
  147. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +22 -15
  148. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +17 -10
  149. app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
  150. app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
  151. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +39 -26
  152. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -2
  154. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +2 -2
  155. app-ng-runtime/components/basic/rich-text-editor/.npmignore +2 -0
  156. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +19 -13
  157. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +17 -10
  158. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
  159. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +18 -11
  160. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  162. app-ng-runtime/components/basic/search/.npmignore +2 -0
  163. app-ng-runtime/components/basic/search/bundles/index.umd.js +186 -175
  164. app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  165. app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  166. app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  167. app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
  168. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +148 -138
  169. app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
  170. app-ng-runtime/components/basic/search/fesm2022/index.mjs +186 -174
  171. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/basic/search/search.component.d.ts +2 -2
  173. app-ng-runtime/components/basic/tree/.npmignore +2 -0
  174. app-ng-runtime/components/basic/tree/bundles/index.umd.js +23 -17
  175. app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +21 -14
  176. app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
  177. app-ng-runtime/components/basic/tree/fesm2022/index.mjs +22 -15
  178. app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
  179. app-ng-runtime/components/basic/tree/tree.component.d.ts +2 -2
  180. app-ng-runtime/components/chart/.npmignore +2 -0
  181. app-ng-runtime/components/chart/bundles/index.umd.js +97 -84
  182. app-ng-runtime/components/chart/chart.component.d.ts +3 -3
  183. app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
  184. app-ng-runtime/components/chart/esm2022/chart.component.mjs +82 -68
  185. app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
  186. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
  187. app-ng-runtime/components/chart/fesm2022/index.mjs +95 -81
  188. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  189. app-ng-runtime/components/containers/accordion/.npmignore +2 -0
  190. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -2
  191. app-ng-runtime/components/containers/accordion/accordion.directive.d.ts +2 -2
  192. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +51 -40
  193. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +23 -17
  194. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +4 -4
  195. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +25 -19
  196. app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
  197. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +50 -38
  198. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  199. app-ng-runtime/components/containers/layout-grid/.npmignore +2 -0
  200. app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +32 -17
  201. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +13 -8
  202. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +12 -7
  203. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +12 -7
  204. app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
  205. app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +34 -19
  206. app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  207. app-ng-runtime/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +2 -2
  208. app-ng-runtime/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +2 -2
  209. app-ng-runtime/components/containers/layout-grid/layout-grid.directive.d.ts +2 -2
  210. app-ng-runtime/components/containers/linear-layout/.npmignore +2 -0
  211. app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +21 -11
  212. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +12 -7
  213. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +12 -7
  214. app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
  215. app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +23 -13
  216. app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  217. app-ng-runtime/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +2 -2
  218. app-ng-runtime/components/containers/linear-layout/linear-layout.directive.d.ts +2 -2
  219. app-ng-runtime/components/containers/panel/.npmignore +2 -0
  220. app-ng-runtime/components/containers/panel/bundles/index.umd.js +85 -85
  221. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +83 -82
  222. app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
  223. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +84 -83
  224. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  225. app-ng-runtime/components/containers/panel/panel.component.d.ts +3 -3
  226. app-ng-runtime/components/containers/tabs/.npmignore +2 -0
  227. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +74 -63
  228. app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +14 -8
  229. app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +4 -4
  230. app-ng-runtime/components/containers/tabs/esm2022/tabs.animator.mjs +1 -1
  231. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +57 -51
  232. app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
  233. app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +1 -1
  234. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +73 -61
  235. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  236. app-ng-runtime/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -2
  237. app-ng-runtime/components/containers/tabs/tabs.component.d.ts +2 -2
  238. app-ng-runtime/components/containers/tile/.npmignore +2 -0
  239. app-ng-runtime/components/containers/tile/bundles/index.umd.js +11 -6
  240. app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +12 -7
  241. app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
  242. app-ng-runtime/components/containers/tile/fesm2022/index.mjs +13 -8
  243. app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
  244. app-ng-runtime/components/containers/tile/tile.directive.d.ts +2 -2
  245. app-ng-runtime/components/containers/wizard/.npmignore +2 -0
  246. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +102 -98
  247. app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +13 -8
  248. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +92 -93
  249. app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
  250. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +104 -100
  251. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  252. app-ng-runtime/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +2 -2
  253. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +2 -2
  254. app-ng-runtime/components/data/card/.npmignore +2 -0
  255. app-ng-runtime/components/data/card/bundles/index.umd.js +70 -50
  256. app-ng-runtime/components/data/card/card-actions/card-actions.directive.d.ts +2 -2
  257. app-ng-runtime/components/data/card/card-content/card-content.component.d.ts +2 -2
  258. app-ng-runtime/components/data/card/card-footer/card-footer.directive.d.ts +2 -2
  259. app-ng-runtime/components/data/card/card.component.d.ts +2 -2
  260. app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +12 -7
  261. app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +15 -9
  262. app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +12 -7
  263. app-ng-runtime/components/data/card/esm2022/card.component.mjs +38 -34
  264. app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
  265. app-ng-runtime/components/data/card/fesm2022/index.mjs +72 -52
  266. app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
  267. app-ng-runtime/components/data/form/.npmignore +2 -0
  268. app-ng-runtime/components/data/form/bundles/index.umd.js +197 -184
  269. app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +15 -9
  270. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +21 -15
  271. app-ng-runtime/components/data/form/esm2022/form-field/form-field.props.mjs +1 -1
  272. app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +4 -4
  273. app-ng-runtime/components/data/form/esm2022/form.component.mjs +138 -134
  274. app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
  275. app-ng-runtime/components/data/form/esm2022/form.props.mjs +1 -1
  276. app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +4 -4
  277. app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +4 -4
  278. app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +7 -6
  279. app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +14 -13
  280. app-ng-runtime/components/data/form/fesm2022/index.mjs +201 -187
  281. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  282. app-ng-runtime/components/data/form/form-action/form-action.directive.d.ts +2 -2
  283. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -2
  284. app-ng-runtime/components/data/form/form.component.d.ts +4 -4
  285. app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
  286. app-ng-runtime/components/data/list/.npmignore +2 -0
  287. app-ng-runtime/components/data/list/bundles/index.umd.js +829 -818
  288. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +9 -4
  289. app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
  290. app-ng-runtime/components/data/list/esm2022/list.component.mjs +817 -810
  291. app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
  292. app-ng-runtime/components/data/list/fesm2022/index.mjs +828 -816
  293. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  294. app-ng-runtime/components/data/list/list-item.directive.d.ts +4 -0
  295. app-ng-runtime/components/data/list/list.component.d.ts +55 -54
  296. app-ng-runtime/components/data/live-table/.npmignore +2 -0
  297. app-ng-runtime/components/data/live-table/bundles/index.umd.js +13 -7
  298. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +14 -8
  299. app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
  300. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +15 -9
  301. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  302. app-ng-runtime/components/data/live-table/live-table.component.d.ts +2 -2
  303. app-ng-runtime/components/data/pagination/.npmignore +2 -0
  304. app-ng-runtime/components/data/pagination/bundles/index.umd.js +113 -110
  305. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +111 -107
  306. app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
  307. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +112 -108
  308. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  309. app-ng-runtime/components/data/pagination/pagination.component.d.ts +2 -2
  310. app-ng-runtime/components/data/table/.npmignore +2 -0
  311. app-ng-runtime/components/data/table/bundles/index.umd.js +314 -269
  312. app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +15 -9
  313. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +40 -25
  314. app-ng-runtime/components/data/table/esm2022/table-column/table-column.props.mjs +2 -2
  315. app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +13 -8
  316. app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +10 -9
  317. app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +56 -58
  318. app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +13 -8
  319. app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +14 -8
  320. app-ng-runtime/components/data/table/esm2022/table.component.mjs +165 -150
  321. app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
  322. app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -2
  323. app-ng-runtime/components/data/table/fesm2022/index.mjs +313 -267
  324. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  325. app-ng-runtime/components/data/table/table-action/table-action.directive.d.ts +2 -2
  326. app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +8 -8
  327. app-ng-runtime/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -2
  328. app-ng-runtime/components/data/table/table-row/table-row.directive.d.ts +2 -2
  329. app-ng-runtime/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -2
  330. app-ng-runtime/components/data/table/table.component.d.ts +4 -4
  331. app-ng-runtime/components/dialogs/alert-dialog/.npmignore +2 -0
  332. app-ng-runtime/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -2
  333. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +15 -9
  334. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +16 -10
  335. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
  336. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +17 -11
  337. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  338. app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +2 -0
  339. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +17 -11
  340. app-ng-runtime/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -2
  341. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +18 -12
  342. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
  343. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +19 -13
  344. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  345. app-ng-runtime/components/dialogs/default/.npmignore +2 -0
  346. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +2 -2
  347. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +75 -71
  348. app-ng-runtime/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +2 -2
  349. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +14 -9
  350. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +4 -4
  351. app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +12 -7
  352. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +49 -55
  353. app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
  354. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +76 -72
  355. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  356. app-ng-runtime/components/dialogs/design-dialog/.npmignore +2 -0
  357. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +20 -14
  358. app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -2
  359. app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
  360. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +21 -15
  361. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +22 -16
  362. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  363. app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +2 -0
  364. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -14
  365. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -15
  366. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
  367. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +22 -16
  368. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  369. app-ng-runtime/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -2
  370. app-ng-runtime/components/dialogs/login-dialog/.npmignore +2 -0
  371. app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +4 -4
  372. app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +4 -4
  373. app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
  374. app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +4 -4
  375. app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  376. app-ng-runtime/components/dialogs/partial-dialog/.npmignore +2 -0
  377. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +16 -10
  378. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +17 -11
  379. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
  380. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +18 -12
  381. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  382. app-ng-runtime/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -2
  383. app-ng-runtime/components/input/calendar/.npmignore +2 -0
  384. app-ng-runtime/components/input/calendar/bundles/index.umd.js +46 -38
  385. app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -2
  386. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +44 -35
  387. app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
  388. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +45 -36
  389. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  390. app-ng-runtime/components/input/chips/.npmignore +2 -0
  391. app-ng-runtime/components/input/chips/bundles/index.umd.js +69 -61
  392. app-ng-runtime/components/input/chips/chips.component.d.ts +3 -3
  393. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +67 -58
  394. app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
  395. app-ng-runtime/components/input/chips/fesm2022/index.mjs +67 -58
  396. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  397. app-ng-runtime/components/input/color-picker/.npmignore +2 -0
  398. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +25 -12
  399. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +2 -2
  400. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +26 -13
  401. app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
  402. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +26 -13
  403. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  404. app-ng-runtime/components/input/currency/.npmignore +2 -0
  405. app-ng-runtime/components/input/currency/bundles/index.umd.js +18 -11
  406. app-ng-runtime/components/input/currency/currency.component.d.ts +2 -2
  407. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +19 -12
  408. app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
  409. app-ng-runtime/components/input/currency/fesm2022/index.mjs +19 -12
  410. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  411. app-ng-runtime/components/input/default/.npmignore +2 -0
  412. app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
  413. app-ng-runtime/components/input/default/bundles/index.umd.js +583 -450
  414. app-ng-runtime/components/input/default/button/button.component.d.ts +2 -2
  415. app-ng-runtime/components/input/default/button-group/button-group.directive.d.ts +2 -2
  416. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +3 -2
  417. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +2 -2
  418. app-ng-runtime/components/input/default/composite/composite.directive.d.ts +2 -2
  419. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
  420. app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +3 -3
  421. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +17 -11
  422. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +32 -28
  423. app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +12 -7
  424. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +5 -4
  425. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +27 -17
  426. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +107 -103
  427. app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +12 -7
  428. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +32 -26
  429. app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
  430. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +17 -10
  431. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +105 -102
  432. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +43 -32
  433. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +38 -31
  434. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +18 -11
  435. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +23 -12
  436. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +23 -12
  437. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +20 -11
  438. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +35 -24
  439. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +21 -12
  440. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +20 -11
  441. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +21 -12
  442. app-ng-runtime/components/input/default/fesm2022/index.mjs +586 -451
  443. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  444. app-ng-runtime/components/input/default/number/number.component.d.ts +2 -2
  445. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +2 -2
  446. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -2
  447. app-ng-runtime/components/input/default/switch/switch.component.d.ts +2 -2
  448. app-ng-runtime/components/input/default/text/base/base-input.d.ts +3 -2
  449. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +2 -2
  450. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +2 -2
  451. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +2 -2
  452. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -1
  453. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +2 -2
  454. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +2 -2
  455. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +2 -2
  456. app-ng-runtime/components/input/epoch/.npmignore +2 -0
  457. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -2
  458. app-ng-runtime/components/input/epoch/bundles/index.umd.js +200 -163
  459. app-ng-runtime/components/input/epoch/date/date.component.d.ts +2 -2
  460. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -2
  461. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +44 -36
  462. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +29 -21
  463. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -2
  464. app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +1 -1
  465. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +42 -41
  466. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +49 -37
  467. app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
  468. app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +7 -5
  469. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +35 -24
  470. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +197 -159
  471. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  472. app-ng-runtime/components/input/epoch/time/time.component.d.ts +2 -2
  473. app-ng-runtime/components/input/file-upload/.npmignore +2 -0
  474. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +133 -135
  475. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +131 -132
  476. app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  477. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +132 -133
  478. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  479. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +2 -2
  480. app-ng-runtime/components/input/rating/.npmignore +2 -0
  481. app-ng-runtime/components/input/rating/bundles/index.umd.js +60 -51
  482. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +58 -48
  483. app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
  484. app-ng-runtime/components/input/rating/fesm2022/index.mjs +58 -48
  485. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  486. app-ng-runtime/components/input/rating/rating.component.d.ts +2 -2
  487. app-ng-runtime/components/input/slider/.npmignore +2 -0
  488. app-ng-runtime/components/input/slider/bundles/index.umd.js +23 -13
  489. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +24 -14
  490. app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
  491. app-ng-runtime/components/input/slider/fesm2022/index.mjs +24 -14
  492. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  493. app-ng-runtime/components/input/slider/slider.component.d.ts +2 -2
  494. app-ng-runtime/components/navigation/breadcrumb/.npmignore +2 -0
  495. app-ng-runtime/components/navigation/breadcrumb/breadcrumb.component.d.ts +2 -2
  496. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +33 -28
  497. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +34 -29
  498. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
  499. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +35 -30
  500. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  501. app-ng-runtime/components/navigation/menu/.npmignore +2 -0
  502. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +160 -145
  503. app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +13 -7
  504. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +5 -4
  505. app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +27 -26
  506. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +44 -40
  507. app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +4 -3
  508. app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +14 -8
  509. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +63 -63
  510. app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
  511. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +160 -144
  512. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  513. app-ng-runtime/components/navigation/menu/menu-adapator.component.d.ts +1 -1
  514. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  515. app-ng-runtime/components/navigation/menu/menu.component.d.ts +2 -2
  516. app-ng-runtime/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -3
  517. app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +3 -4
  518. app-ng-runtime/components/navigation/navbar/.npmignore +2 -0
  519. app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +29 -22
  520. app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +30 -23
  521. app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
  522. app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +31 -24
  523. app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  524. app-ng-runtime/components/navigation/navbar/navbar.component.d.ts +2 -2
  525. app-ng-runtime/components/navigation/popover/.npmignore +2 -0
  526. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +18 -11
  527. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +19 -12
  528. app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
  529. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +20 -13
  530. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  531. app-ng-runtime/components/navigation/popover/popover.component.d.ts +2 -2
  532. app-ng-runtime/components/page/default/.npmignore +2 -0
  533. app-ng-runtime/components/page/default/bundles/index.umd.js +63 -31
  534. app-ng-runtime/components/page/default/content/content.component.d.ts +2 -2
  535. app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +13 -7
  536. app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +12 -7
  537. app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +13 -7
  538. app-ng-runtime/components/page/default/esm2022/page.directive.mjs +12 -7
  539. app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
  540. app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +12 -7
  541. app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +12 -7
  542. app-ng-runtime/components/page/default/fesm2022/index.mjs +65 -33
  543. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  544. app-ng-runtime/components/page/default/layout.directive.d.ts +2 -2
  545. app-ng-runtime/components/page/default/page-content/page-content.component.d.ts +2 -2
  546. app-ng-runtime/components/page/default/page.directive.d.ts +2 -2
  547. app-ng-runtime/components/page/default/router-outlet.directive.d.ts +2 -2
  548. app-ng-runtime/components/page/default/spa-page.directive.d.ts +2 -2
  549. app-ng-runtime/components/page/footer/.npmignore +2 -0
  550. app-ng-runtime/components/page/footer/bundles/index.umd.js +11 -6
  551. app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +12 -7
  552. app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
  553. app-ng-runtime/components/page/footer/fesm2022/index.mjs +13 -8
  554. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  555. app-ng-runtime/components/page/footer/footer.directive.d.ts +2 -2
  556. app-ng-runtime/components/page/header/.npmignore +2 -0
  557. app-ng-runtime/components/page/header/bundles/index.umd.js +12 -6
  558. app-ng-runtime/components/page/header/esm2022/header.component.mjs +13 -7
  559. app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
  560. app-ng-runtime/components/page/header/fesm2022/index.mjs +14 -8
  561. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  562. app-ng-runtime/components/page/header/header.component.d.ts +2 -2
  563. app-ng-runtime/components/page/left-panel/.npmignore +2 -0
  564. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +12 -7
  565. app-ng-runtime/components/page/left-panel/esm2022/left-panel.animator.mjs +1 -1
  566. app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +13 -8
  567. app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  568. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +14 -9
  569. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  570. app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
  571. app-ng-runtime/components/page/right-panel/.npmignore +2 -0
  572. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +11 -6
  573. app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +12 -7
  574. app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
  575. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +13 -8
  576. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  577. app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
  578. app-ng-runtime/components/page/top-nav/.npmignore +2 -0
  579. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +11 -6
  580. app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +12 -7
  581. app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
  582. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +13 -8
  583. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  584. app-ng-runtime/components/page/top-nav/top-nav.directive.d.ts +2 -2
  585. app-ng-runtime/components/prefab/.npmignore +2 -0
  586. app-ng-runtime/components/prefab/bundles/index.umd.js +28 -18
  587. app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +14 -8
  588. app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +15 -9
  589. app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
  590. app-ng-runtime/components/prefab/fesm2022/index.mjs +26 -15
  591. app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
  592. app-ng-runtime/components/prefab/prefab-container/prefab-container.directive.d.ts +2 -2
  593. app-ng-runtime/components/prefab/prefab.directive.d.ts +2 -2
  594. app-ng-runtime/core/.npmignore +2 -0
  595. app-ng-runtime/core/bundles/index.umd.js +158 -146
  596. app-ng-runtime/core/esm2022/core.module.mjs +2 -2
  597. app-ng-runtime/core/esm2022/public_api.mjs +3 -2
  598. app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
  599. app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
  600. app-ng-runtime/core/esm2022/services/field-type.service.mjs +5 -4
  601. app-ng-runtime/core/esm2022/services/field-widget.service.mjs +5 -4
  602. app-ng-runtime/core/esm2022/services/pagination.service.mjs +8 -7
  603. app-ng-runtime/core/esm2022/services/script-loader.service.mjs +3 -3
  604. app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +18 -17
  605. app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
  606. app-ng-runtime/core/esm2022/services/utils.service.mjs +5 -4
  607. app-ng-runtime/core/esm2022/services/viewport.service.mjs +5 -4
  608. app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
  609. app-ng-runtime/core/esm2022/utils/dom.mjs +1 -1
  610. app-ng-runtime/core/esm2022/utils/event-notifier.mjs +1 -1
  611. app-ng-runtime/core/esm2022/utils/expression-parser.mjs +6 -5
  612. app-ng-runtime/core/esm2022/utils/id-generator.mjs +1 -1
  613. app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
  614. app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
  615. app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
  616. app-ng-runtime/core/esm2022/utils/wm-project-properties.mjs +1 -1
  617. app-ng-runtime/core/fesm2022/index.mjs +158 -142
  618. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  619. app-ng-runtime/core/public_api.d.ts +2 -1
  620. app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
  621. app-ng-runtime/core/services/pagination.service.d.ts +1 -1
  622. app-ng-runtime/core/utils/utils.d.ts +5 -9
  623. app-ng-runtime/http/.npmignore +2 -0
  624. app-ng-runtime/http/bundles/index.umd.js +10 -10
  625. app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
  626. app-ng-runtime/http/esm2022/http.service.mjs +7 -6
  627. app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
  628. app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
  629. app-ng-runtime/http/fesm2022/index.mjs +7 -6
  630. app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
  631. app-ng-runtime/locales/angular/global/af-na.js +4 -4
  632. app-ng-runtime/locales/angular/global/af.js +4 -4
  633. app-ng-runtime/locales/angular/global/agq.js +4 -4
  634. app-ng-runtime/locales/angular/global/ak.js +4 -4
  635. app-ng-runtime/locales/angular/global/am.js +4 -4
  636. app-ng-runtime/locales/angular/global/ar-ae.js +4 -4
  637. app-ng-runtime/locales/angular/global/ar-bh.js +4 -4
  638. app-ng-runtime/locales/angular/global/ar-dj.js +4 -4
  639. app-ng-runtime/locales/angular/global/ar-dz.js +4 -4
  640. app-ng-runtime/locales/angular/global/ar-eg.js +4 -4
  641. app-ng-runtime/locales/angular/global/ar-eh.js +4 -4
  642. app-ng-runtime/locales/angular/global/ar-er.js +4 -4
  643. app-ng-runtime/locales/angular/global/ar-il.js +4 -4
  644. app-ng-runtime/locales/angular/global/ar-iq.js +4 -4
  645. app-ng-runtime/locales/angular/global/ar-jo.js +4 -4
  646. app-ng-runtime/locales/angular/global/ar-km.js +4 -4
  647. app-ng-runtime/locales/angular/global/ar-kw.js +4 -4
  648. app-ng-runtime/locales/angular/global/ar-lb.js +4 -4
  649. app-ng-runtime/locales/angular/global/ar-ly.js +4 -4
  650. app-ng-runtime/locales/angular/global/ar-ma.js +4 -4
  651. app-ng-runtime/locales/angular/global/ar-mr.js +4 -4
  652. app-ng-runtime/locales/angular/global/ar-om.js +4 -4
  653. app-ng-runtime/locales/angular/global/ar-ps.js +4 -4
  654. app-ng-runtime/locales/angular/global/ar-qa.js +4 -4
  655. app-ng-runtime/locales/angular/global/ar-sa.js +4 -4
  656. app-ng-runtime/locales/angular/global/ar-sd.js +4 -4
  657. app-ng-runtime/locales/angular/global/ar-so.js +4 -4
  658. app-ng-runtime/locales/angular/global/ar-ss.js +4 -4
  659. app-ng-runtime/locales/angular/global/ar-sy.js +4 -4
  660. app-ng-runtime/locales/angular/global/ar-td.js +4 -4
  661. app-ng-runtime/locales/angular/global/ar-tn.js +4 -4
  662. app-ng-runtime/locales/angular/global/ar-ye.js +4 -4
  663. app-ng-runtime/locales/angular/global/ar.js +4 -4
  664. app-ng-runtime/locales/angular/global/as.js +4 -4
  665. app-ng-runtime/locales/angular/global/asa.js +4 -4
  666. app-ng-runtime/locales/angular/global/ast.js +4 -4
  667. app-ng-runtime/locales/angular/global/az-cyrl.js +4 -4
  668. app-ng-runtime/locales/angular/global/az-latn.js +4 -4
  669. app-ng-runtime/locales/angular/global/az.js +4 -4
  670. app-ng-runtime/locales/angular/global/bas.js +4 -4
  671. app-ng-runtime/locales/angular/global/be-tarask.js +4 -4
  672. app-ng-runtime/locales/angular/global/be.js +4 -4
  673. app-ng-runtime/locales/angular/global/bem.js +4 -4
  674. app-ng-runtime/locales/angular/global/bez.js +4 -4
  675. app-ng-runtime/locales/angular/global/bg.js +4 -4
  676. app-ng-runtime/locales/angular/global/bm.js +4 -4
  677. app-ng-runtime/locales/angular/global/bn-in.js +4 -4
  678. app-ng-runtime/locales/angular/global/bn.js +4 -4
  679. app-ng-runtime/locales/angular/global/bo-in.js +4 -4
  680. app-ng-runtime/locales/angular/global/bo.js +4 -4
  681. app-ng-runtime/locales/angular/global/br.js +4 -4
  682. app-ng-runtime/locales/angular/global/brx.js +4 -4
  683. app-ng-runtime/locales/angular/global/bs-cyrl.js +4 -4
  684. app-ng-runtime/locales/angular/global/bs-latn.js +4 -4
  685. app-ng-runtime/locales/angular/global/bs.js +4 -4
  686. app-ng-runtime/locales/angular/global/ca-ad.js +4 -4
  687. app-ng-runtime/locales/angular/global/ca-es-valencia.js +4 -4
  688. app-ng-runtime/locales/angular/global/ca-fr.js +4 -4
  689. app-ng-runtime/locales/angular/global/ca-it.js +4 -4
  690. app-ng-runtime/locales/angular/global/ca.js +4 -4
  691. app-ng-runtime/locales/angular/global/ccp-in.js +4 -4
  692. app-ng-runtime/locales/angular/global/ccp.js +4 -4
  693. app-ng-runtime/locales/angular/global/ce.js +4 -4
  694. app-ng-runtime/locales/angular/global/ceb.js +4 -4
  695. app-ng-runtime/locales/angular/global/cgg.js +4 -4
  696. app-ng-runtime/locales/angular/global/chr.js +4 -4
  697. app-ng-runtime/locales/angular/global/ckb-ir.js +4 -4
  698. app-ng-runtime/locales/angular/global/ckb.js +4 -4
  699. app-ng-runtime/locales/angular/global/cs.js +4 -4
  700. app-ng-runtime/locales/angular/global/cy.js +4 -4
  701. app-ng-runtime/locales/angular/global/da-gl.js +4 -4
  702. app-ng-runtime/locales/angular/global/da.js +4 -4
  703. app-ng-runtime/locales/angular/global/dav.js +4 -4
  704. app-ng-runtime/locales/angular/global/de-at.js +4 -4
  705. app-ng-runtime/locales/angular/global/de-be.js +4 -4
  706. app-ng-runtime/locales/angular/global/de-ch.js +4 -4
  707. app-ng-runtime/locales/angular/global/de-it.js +4 -4
  708. app-ng-runtime/locales/angular/global/de-li.js +4 -4
  709. app-ng-runtime/locales/angular/global/de-lu.js +4 -4
  710. app-ng-runtime/locales/angular/global/de.js +4 -4
  711. app-ng-runtime/locales/angular/global/dje.js +4 -4
  712. app-ng-runtime/locales/angular/global/doi.js +4 -4
  713. app-ng-runtime/locales/angular/global/dsb.js +4 -4
  714. app-ng-runtime/locales/angular/global/dua.js +4 -4
  715. app-ng-runtime/locales/angular/global/dyo.js +4 -4
  716. app-ng-runtime/locales/angular/global/dz.js +4 -4
  717. app-ng-runtime/locales/angular/global/ebu.js +4 -4
  718. app-ng-runtime/locales/angular/global/ee-tg.js +4 -4
  719. app-ng-runtime/locales/angular/global/ee.js +4 -4
  720. app-ng-runtime/locales/angular/global/el-cy.js +4 -4
  721. app-ng-runtime/locales/angular/global/el.js +4 -4
  722. app-ng-runtime/locales/angular/global/en-001.js +4 -4
  723. app-ng-runtime/locales/angular/global/en-150.js +4 -4
  724. app-ng-runtime/locales/angular/global/en-ae.js +4 -4
  725. app-ng-runtime/locales/angular/global/en-ag.js +4 -4
  726. app-ng-runtime/locales/angular/global/en-ai.js +4 -4
  727. app-ng-runtime/locales/angular/global/en-as.js +4 -4
  728. app-ng-runtime/locales/angular/global/en-at.js +4 -4
  729. app-ng-runtime/locales/angular/global/en-au.js +4 -4
  730. app-ng-runtime/locales/angular/global/en-bb.js +4 -4
  731. app-ng-runtime/locales/angular/global/en-be.js +4 -4
  732. app-ng-runtime/locales/angular/global/en-bi.js +4 -4
  733. app-ng-runtime/locales/angular/global/en-bm.js +4 -4
  734. app-ng-runtime/locales/angular/global/en-bs.js +4 -4
  735. app-ng-runtime/locales/angular/global/en-bw.js +4 -4
  736. app-ng-runtime/locales/angular/global/en-bz.js +4 -4
  737. app-ng-runtime/locales/angular/global/en-ca.js +4 -4
  738. app-ng-runtime/locales/angular/global/en-cc.js +4 -4
  739. app-ng-runtime/locales/angular/global/en-ch.js +4 -4
  740. app-ng-runtime/locales/angular/global/en-ck.js +4 -4
  741. app-ng-runtime/locales/angular/global/en-cm.js +4 -4
  742. app-ng-runtime/locales/angular/global/en-cx.js +4 -4
  743. app-ng-runtime/locales/angular/global/en-cy.js +4 -4
  744. app-ng-runtime/locales/angular/global/en-de.js +4 -4
  745. app-ng-runtime/locales/angular/global/en-dg.js +4 -4
  746. app-ng-runtime/locales/angular/global/en-dk.js +4 -4
  747. app-ng-runtime/locales/angular/global/en-dm.js +4 -4
  748. app-ng-runtime/locales/angular/global/en-er.js +4 -4
  749. app-ng-runtime/locales/angular/global/en-fi.js +4 -4
  750. app-ng-runtime/locales/angular/global/en-fj.js +4 -4
  751. app-ng-runtime/locales/angular/global/en-fk.js +4 -4
  752. app-ng-runtime/locales/angular/global/en-fm.js +4 -4
  753. app-ng-runtime/locales/angular/global/en-gb.js +4 -4
  754. app-ng-runtime/locales/angular/global/en-gd.js +4 -4
  755. app-ng-runtime/locales/angular/global/en-gg.js +4 -4
  756. app-ng-runtime/locales/angular/global/en-gh.js +4 -4
  757. app-ng-runtime/locales/angular/global/en-gi.js +4 -4
  758. app-ng-runtime/locales/angular/global/en-gm.js +4 -4
  759. app-ng-runtime/locales/angular/global/en-gu.js +4 -4
  760. app-ng-runtime/locales/angular/global/en-gy.js +4 -4
  761. app-ng-runtime/locales/angular/global/en-hk.js +4 -4
  762. app-ng-runtime/locales/angular/global/en-ie.js +4 -4
  763. app-ng-runtime/locales/angular/global/en-il.js +4 -4
  764. app-ng-runtime/locales/angular/global/en-im.js +4 -4
  765. app-ng-runtime/locales/angular/global/en-in.js +4 -4
  766. app-ng-runtime/locales/angular/global/en-io.js +4 -4
  767. app-ng-runtime/locales/angular/global/en-je.js +4 -4
  768. app-ng-runtime/locales/angular/global/en-jm.js +4 -4
  769. app-ng-runtime/locales/angular/global/en-ke.js +4 -4
  770. app-ng-runtime/locales/angular/global/en-ki.js +4 -4
  771. app-ng-runtime/locales/angular/global/en-kn.js +4 -4
  772. app-ng-runtime/locales/angular/global/en-ky.js +4 -4
  773. app-ng-runtime/locales/angular/global/en-lc.js +4 -4
  774. app-ng-runtime/locales/angular/global/en-lr.js +4 -4
  775. app-ng-runtime/locales/angular/global/en-ls.js +4 -4
  776. app-ng-runtime/locales/angular/global/en-mg.js +4 -4
  777. app-ng-runtime/locales/angular/global/en-mh.js +4 -4
  778. app-ng-runtime/locales/angular/global/en-mo.js +4 -4
  779. app-ng-runtime/locales/angular/global/en-mp.js +4 -4
  780. app-ng-runtime/locales/angular/global/en-ms.js +4 -4
  781. app-ng-runtime/locales/angular/global/en-mt.js +4 -4
  782. app-ng-runtime/locales/angular/global/en-mu.js +4 -4
  783. app-ng-runtime/locales/angular/global/en-mv.js +4 -4
  784. app-ng-runtime/locales/angular/global/en-mw.js +4 -4
  785. app-ng-runtime/locales/angular/global/en-my.js +4 -4
  786. app-ng-runtime/locales/angular/global/en-na.js +4 -4
  787. app-ng-runtime/locales/angular/global/en-nf.js +4 -4
  788. app-ng-runtime/locales/angular/global/en-ng.js +4 -4
  789. app-ng-runtime/locales/angular/global/en-nl.js +4 -4
  790. app-ng-runtime/locales/angular/global/en-nr.js +4 -4
  791. app-ng-runtime/locales/angular/global/en-nu.js +4 -4
  792. app-ng-runtime/locales/angular/global/en-nz.js +4 -4
  793. app-ng-runtime/locales/angular/global/en-pg.js +4 -4
  794. app-ng-runtime/locales/angular/global/en-ph.js +4 -4
  795. app-ng-runtime/locales/angular/global/en-pk.js +4 -4
  796. app-ng-runtime/locales/angular/global/en-pn.js +4 -4
  797. app-ng-runtime/locales/angular/global/en-pr.js +4 -4
  798. app-ng-runtime/locales/angular/global/en-pw.js +4 -4
  799. app-ng-runtime/locales/angular/global/en-rw.js +4 -4
  800. app-ng-runtime/locales/angular/global/en-sb.js +4 -4
  801. app-ng-runtime/locales/angular/global/en-sc.js +4 -4
  802. app-ng-runtime/locales/angular/global/en-sd.js +4 -4
  803. app-ng-runtime/locales/angular/global/en-se.js +4 -4
  804. app-ng-runtime/locales/angular/global/en-sg.js +4 -4
  805. app-ng-runtime/locales/angular/global/en-sh.js +4 -4
  806. app-ng-runtime/locales/angular/global/en-si.js +4 -4
  807. app-ng-runtime/locales/angular/global/en-sl.js +4 -4
  808. app-ng-runtime/locales/angular/global/en-ss.js +4 -4
  809. app-ng-runtime/locales/angular/global/en-sx.js +4 -4
  810. app-ng-runtime/locales/angular/global/en-sz.js +4 -4
  811. app-ng-runtime/locales/angular/global/en-tc.js +4 -4
  812. app-ng-runtime/locales/angular/global/en-tk.js +4 -4
  813. app-ng-runtime/locales/angular/global/en-to.js +4 -4
  814. app-ng-runtime/locales/angular/global/en-tt.js +4 -4
  815. app-ng-runtime/locales/angular/global/en-tv.js +4 -4
  816. app-ng-runtime/locales/angular/global/en-tz.js +4 -4
  817. app-ng-runtime/locales/angular/global/en-ug.js +4 -4
  818. app-ng-runtime/locales/angular/global/en-um.js +4 -4
  819. app-ng-runtime/locales/angular/global/en-vc.js +4 -4
  820. app-ng-runtime/locales/angular/global/en-vg.js +4 -4
  821. app-ng-runtime/locales/angular/global/en-vi.js +4 -4
  822. app-ng-runtime/locales/angular/global/en-vu.js +4 -4
  823. app-ng-runtime/locales/angular/global/en-ws.js +4 -4
  824. app-ng-runtime/locales/angular/global/en-za.js +4 -4
  825. app-ng-runtime/locales/angular/global/en-zm.js +4 -4
  826. app-ng-runtime/locales/angular/global/en-zw.js +4 -4
  827. app-ng-runtime/locales/angular/global/en.js +4 -4
  828. app-ng-runtime/locales/angular/global/eo.js +4 -4
  829. app-ng-runtime/locales/angular/global/es-419.js +4 -4
  830. app-ng-runtime/locales/angular/global/es-ar.js +4 -4
  831. app-ng-runtime/locales/angular/global/es-bo.js +4 -4
  832. app-ng-runtime/locales/angular/global/es-br.js +4 -4
  833. app-ng-runtime/locales/angular/global/es-bz.js +4 -4
  834. app-ng-runtime/locales/angular/global/es-cl.js +4 -4
  835. app-ng-runtime/locales/angular/global/es-co.js +4 -4
  836. app-ng-runtime/locales/angular/global/es-cr.js +4 -4
  837. app-ng-runtime/locales/angular/global/es-cu.js +4 -4
  838. app-ng-runtime/locales/angular/global/es-do.js +4 -4
  839. app-ng-runtime/locales/angular/global/es-ea.js +4 -4
  840. app-ng-runtime/locales/angular/global/es-ec.js +4 -4
  841. app-ng-runtime/locales/angular/global/es-gq.js +4 -4
  842. app-ng-runtime/locales/angular/global/es-gt.js +4 -4
  843. app-ng-runtime/locales/angular/global/es-hn.js +4 -4
  844. app-ng-runtime/locales/angular/global/es-ic.js +4 -4
  845. app-ng-runtime/locales/angular/global/es-mx.js +4 -4
  846. app-ng-runtime/locales/angular/global/es-ni.js +4 -4
  847. app-ng-runtime/locales/angular/global/es-pa.js +4 -4
  848. app-ng-runtime/locales/angular/global/es-pe.js +4 -4
  849. app-ng-runtime/locales/angular/global/es-ph.js +4 -4
  850. app-ng-runtime/locales/angular/global/es-pr.js +4 -4
  851. app-ng-runtime/locales/angular/global/es-py.js +4 -4
  852. app-ng-runtime/locales/angular/global/es-sv.js +4 -4
  853. app-ng-runtime/locales/angular/global/es-us.js +4 -4
  854. app-ng-runtime/locales/angular/global/es-uy.js +4 -4
  855. app-ng-runtime/locales/angular/global/es-ve.js +4 -4
  856. app-ng-runtime/locales/angular/global/es.js +4 -4
  857. app-ng-runtime/locales/angular/global/et.js +4 -4
  858. app-ng-runtime/locales/angular/global/eu.js +4 -4
  859. app-ng-runtime/locales/angular/global/ewo.js +4 -4
  860. app-ng-runtime/locales/angular/global/fa-af.js +4 -4
  861. app-ng-runtime/locales/angular/global/fa.js +4 -4
  862. app-ng-runtime/locales/angular/global/ff-adlm-bf.js +4 -4
  863. app-ng-runtime/locales/angular/global/ff-adlm-cm.js +4 -4
  864. app-ng-runtime/locales/angular/global/ff-adlm-gh.js +4 -4
  865. app-ng-runtime/locales/angular/global/ff-adlm-gm.js +4 -4
  866. app-ng-runtime/locales/angular/global/ff-adlm-gw.js +4 -4
  867. app-ng-runtime/locales/angular/global/ff-adlm-lr.js +4 -4
  868. app-ng-runtime/locales/angular/global/ff-adlm-mr.js +4 -4
  869. app-ng-runtime/locales/angular/global/ff-adlm-ne.js +4 -4
  870. app-ng-runtime/locales/angular/global/ff-adlm-ng.js +4 -4
  871. app-ng-runtime/locales/angular/global/ff-adlm-sl.js +4 -4
  872. app-ng-runtime/locales/angular/global/ff-adlm-sn.js +4 -4
  873. app-ng-runtime/locales/angular/global/ff-adlm.js +4 -4
  874. app-ng-runtime/locales/angular/global/ff-cm.js +58 -44
  875. app-ng-runtime/locales/angular/global/ff-gn.js +58 -44
  876. app-ng-runtime/locales/angular/global/ff-latn-bf.js +4 -4
  877. app-ng-runtime/locales/angular/global/ff-latn-cm.js +4 -4
  878. app-ng-runtime/locales/angular/global/ff-latn-gh.js +4 -4
  879. app-ng-runtime/locales/angular/global/ff-latn-gm.js +4 -4
  880. app-ng-runtime/locales/angular/global/ff-latn-gn.js +4 -4
  881. app-ng-runtime/locales/angular/global/ff-latn-gw.js +4 -4
  882. app-ng-runtime/locales/angular/global/ff-latn-lr.js +4 -4
  883. app-ng-runtime/locales/angular/global/ff-latn-mr.js +4 -4
  884. app-ng-runtime/locales/angular/global/ff-latn-ne.js +4 -4
  885. app-ng-runtime/locales/angular/global/ff-latn-ng.js +4 -4
  886. app-ng-runtime/locales/angular/global/ff-latn-sl.js +4 -4
  887. app-ng-runtime/locales/angular/global/ff-latn.js +4 -4
  888. app-ng-runtime/locales/angular/global/ff-mr.js +58 -44
  889. app-ng-runtime/locales/angular/global/ff.js +4 -4
  890. app-ng-runtime/locales/angular/global/fi.js +4 -4
  891. app-ng-runtime/locales/angular/global/fil.js +4 -4
  892. app-ng-runtime/locales/angular/global/fo-dk.js +4 -4
  893. app-ng-runtime/locales/angular/global/fo.js +4 -4
  894. app-ng-runtime/locales/angular/global/fr-be.js +4 -4
  895. app-ng-runtime/locales/angular/global/fr-bf.js +4 -4
  896. app-ng-runtime/locales/angular/global/fr-bi.js +4 -4
  897. app-ng-runtime/locales/angular/global/fr-bj.js +4 -4
  898. app-ng-runtime/locales/angular/global/fr-bl.js +4 -4
  899. app-ng-runtime/locales/angular/global/fr-ca.js +4 -4
  900. app-ng-runtime/locales/angular/global/fr-cd.js +4 -4
  901. app-ng-runtime/locales/angular/global/fr-cf.js +4 -4
  902. app-ng-runtime/locales/angular/global/fr-cg.js +4 -4
  903. app-ng-runtime/locales/angular/global/fr-ch.js +4 -4
  904. app-ng-runtime/locales/angular/global/fr-ci.js +4 -4
  905. app-ng-runtime/locales/angular/global/fr-cm.js +4 -4
  906. app-ng-runtime/locales/angular/global/fr-dj.js +4 -4
  907. app-ng-runtime/locales/angular/global/fr-dz.js +4 -4
  908. app-ng-runtime/locales/angular/global/fr-ga.js +4 -4
  909. app-ng-runtime/locales/angular/global/fr-gf.js +4 -4
  910. app-ng-runtime/locales/angular/global/fr-gn.js +4 -4
  911. app-ng-runtime/locales/angular/global/fr-gp.js +4 -4
  912. app-ng-runtime/locales/angular/global/fr-gq.js +4 -4
  913. app-ng-runtime/locales/angular/global/fr-ht.js +4 -4
  914. app-ng-runtime/locales/angular/global/fr-km.js +4 -4
  915. app-ng-runtime/locales/angular/global/fr-lu.js +4 -4
  916. app-ng-runtime/locales/angular/global/fr-ma.js +4 -4
  917. app-ng-runtime/locales/angular/global/fr-mc.js +4 -4
  918. app-ng-runtime/locales/angular/global/fr-mf.js +4 -4
  919. app-ng-runtime/locales/angular/global/fr-mg.js +4 -4
  920. app-ng-runtime/locales/angular/global/fr-ml.js +4 -4
  921. app-ng-runtime/locales/angular/global/fr-mq.js +4 -4
  922. app-ng-runtime/locales/angular/global/fr-mr.js +4 -4
  923. app-ng-runtime/locales/angular/global/fr-mu.js +4 -4
  924. app-ng-runtime/locales/angular/global/fr-nc.js +4 -4
  925. app-ng-runtime/locales/angular/global/fr-ne.js +4 -4
  926. app-ng-runtime/locales/angular/global/fr-pf.js +4 -4
  927. app-ng-runtime/locales/angular/global/fr-pm.js +4 -4
  928. app-ng-runtime/locales/angular/global/fr-re.js +4 -4
  929. app-ng-runtime/locales/angular/global/fr-rw.js +4 -4
  930. app-ng-runtime/locales/angular/global/fr-sc.js +4 -4
  931. app-ng-runtime/locales/angular/global/fr-sn.js +4 -4
  932. app-ng-runtime/locales/angular/global/fr-sy.js +4 -4
  933. app-ng-runtime/locales/angular/global/fr-td.js +4 -4
  934. app-ng-runtime/locales/angular/global/fr-tg.js +4 -4
  935. app-ng-runtime/locales/angular/global/fr-tn.js +4 -4
  936. app-ng-runtime/locales/angular/global/fr-vu.js +4 -4
  937. app-ng-runtime/locales/angular/global/fr-wf.js +4 -4
  938. app-ng-runtime/locales/angular/global/fr-yt.js +4 -4
  939. app-ng-runtime/locales/angular/global/fr.js +4 -4
  940. app-ng-runtime/locales/angular/global/fur.js +4 -4
  941. app-ng-runtime/locales/angular/global/fy.js +4 -4
  942. app-ng-runtime/locales/angular/global/ga-gb.js +4 -4
  943. app-ng-runtime/locales/angular/global/ga.js +4 -4
  944. app-ng-runtime/locales/angular/global/gd.js +4 -4
  945. app-ng-runtime/locales/angular/global/gl.js +4 -4
  946. app-ng-runtime/locales/angular/global/gsw-fr.js +4 -4
  947. app-ng-runtime/locales/angular/global/gsw-li.js +4 -4
  948. app-ng-runtime/locales/angular/global/gsw.js +4 -4
  949. app-ng-runtime/locales/angular/global/gu.js +4 -4
  950. app-ng-runtime/locales/angular/global/guz.js +4 -4
  951. app-ng-runtime/locales/angular/global/gv.js +4 -4
  952. app-ng-runtime/locales/angular/global/ha-gh.js +4 -4
  953. app-ng-runtime/locales/angular/global/ha-ne.js +4 -4
  954. app-ng-runtime/locales/angular/global/ha.js +4 -4
  955. app-ng-runtime/locales/angular/global/haw.js +4 -4
  956. app-ng-runtime/locales/angular/global/he.js +4 -4
  957. app-ng-runtime/locales/angular/global/hi-latn.js +4 -4
  958. app-ng-runtime/locales/angular/global/hi.js +4 -4
  959. app-ng-runtime/locales/angular/global/hr-ba.js +4 -4
  960. app-ng-runtime/locales/angular/global/hr.js +4 -4
  961. app-ng-runtime/locales/angular/global/hsb.js +4 -4
  962. app-ng-runtime/locales/angular/global/hu.js +4 -4
  963. app-ng-runtime/locales/angular/global/hy.js +4 -4
  964. app-ng-runtime/locales/angular/global/ia.js +4 -4
  965. app-ng-runtime/locales/angular/global/id.js +4 -4
  966. app-ng-runtime/locales/angular/global/ig.js +4 -4
  967. app-ng-runtime/locales/angular/global/ii.js +4 -4
  968. app-ng-runtime/locales/angular/global/is.js +4 -4
  969. app-ng-runtime/locales/angular/global/it-ch.js +4 -4
  970. app-ng-runtime/locales/angular/global/it-sm.js +4 -4
  971. app-ng-runtime/locales/angular/global/it-va.js +4 -4
  972. app-ng-runtime/locales/angular/global/it.js +4 -4
  973. app-ng-runtime/locales/angular/global/ja.js +4 -4
  974. app-ng-runtime/locales/angular/global/jgo.js +4 -4
  975. app-ng-runtime/locales/angular/global/jmc.js +4 -4
  976. app-ng-runtime/locales/angular/global/jv.js +4 -4
  977. app-ng-runtime/locales/angular/global/ka.js +4 -4
  978. app-ng-runtime/locales/angular/global/kab.js +4 -4
  979. app-ng-runtime/locales/angular/global/kam.js +4 -4
  980. app-ng-runtime/locales/angular/global/kde.js +4 -4
  981. app-ng-runtime/locales/angular/global/kea.js +4 -4
  982. app-ng-runtime/locales/angular/global/kgp.js +4 -4
  983. app-ng-runtime/locales/angular/global/khq.js +4 -4
  984. app-ng-runtime/locales/angular/global/ki.js +4 -4
  985. app-ng-runtime/locales/angular/global/kk.js +4 -4
  986. app-ng-runtime/locales/angular/global/kkj.js +4 -4
  987. app-ng-runtime/locales/angular/global/kl.js +4 -4
  988. app-ng-runtime/locales/angular/global/kln.js +4 -4
  989. app-ng-runtime/locales/angular/global/km.js +4 -4
  990. app-ng-runtime/locales/angular/global/kn.js +4 -4
  991. app-ng-runtime/locales/angular/global/ko-kp.js +4 -4
  992. app-ng-runtime/locales/angular/global/ko.js +4 -4
  993. app-ng-runtime/locales/angular/global/kok.js +4 -4
  994. app-ng-runtime/locales/angular/global/ks-arab.js +4 -4
  995. app-ng-runtime/locales/angular/global/ks-deva.js +4 -4
  996. app-ng-runtime/locales/angular/global/ks.js +4 -4
  997. app-ng-runtime/locales/angular/global/ksb.js +4 -4
  998. app-ng-runtime/locales/angular/global/ksf.js +4 -4
  999. app-ng-runtime/locales/angular/global/ksh.js +4 -4
  1000. app-ng-runtime/locales/angular/global/ku.js +4 -4
  1001. app-ng-runtime/locales/angular/global/kw.js +4 -4
  1002. app-ng-runtime/locales/angular/global/ky.js +4 -4
  1003. app-ng-runtime/locales/angular/global/lag.js +4 -4
  1004. app-ng-runtime/locales/angular/global/lb.js +4 -4
  1005. app-ng-runtime/locales/angular/global/lg.js +4 -4
  1006. app-ng-runtime/locales/angular/global/lkt.js +4 -4
  1007. app-ng-runtime/locales/angular/global/ln-ao.js +4 -4
  1008. app-ng-runtime/locales/angular/global/ln-cf.js +4 -4
  1009. app-ng-runtime/locales/angular/global/ln-cg.js +4 -4
  1010. app-ng-runtime/locales/angular/global/ln.js +4 -4
  1011. app-ng-runtime/locales/angular/global/lo.js +4 -4
  1012. app-ng-runtime/locales/angular/global/lrc-iq.js +4 -4
  1013. app-ng-runtime/locales/angular/global/lrc.js +4 -4
  1014. app-ng-runtime/locales/angular/global/lt.js +4 -4
  1015. app-ng-runtime/locales/angular/global/lu.js +4 -4
  1016. app-ng-runtime/locales/angular/global/luo.js +4 -4
  1017. app-ng-runtime/locales/angular/global/luy.js +4 -4
  1018. app-ng-runtime/locales/angular/global/lv.js +4 -4
  1019. app-ng-runtime/locales/angular/global/mai.js +4 -4
  1020. app-ng-runtime/locales/angular/global/mas-tz.js +4 -4
  1021. app-ng-runtime/locales/angular/global/mas.js +4 -4
  1022. app-ng-runtime/locales/angular/global/mer.js +4 -4
  1023. app-ng-runtime/locales/angular/global/mfe.js +4 -4
  1024. app-ng-runtime/locales/angular/global/mg.js +4 -4
  1025. app-ng-runtime/locales/angular/global/mgh.js +4 -4
  1026. app-ng-runtime/locales/angular/global/mgo.js +4 -4
  1027. app-ng-runtime/locales/angular/global/mi.js +4 -4
  1028. app-ng-runtime/locales/angular/global/mk.js +4 -4
  1029. app-ng-runtime/locales/angular/global/ml.js +4 -4
  1030. app-ng-runtime/locales/angular/global/mn.js +4 -4
  1031. app-ng-runtime/locales/angular/global/mni-beng.js +4 -4
  1032. app-ng-runtime/locales/angular/global/mni.js +4 -4
  1033. app-ng-runtime/locales/angular/global/mr.js +4 -4
  1034. app-ng-runtime/locales/angular/global/ms-bn.js +4 -4
  1035. app-ng-runtime/locales/angular/global/ms-id.js +4 -4
  1036. app-ng-runtime/locales/angular/global/ms-sg.js +4 -4
  1037. app-ng-runtime/locales/angular/global/ms.js +4 -4
  1038. app-ng-runtime/locales/angular/global/mt.js +4 -4
  1039. app-ng-runtime/locales/angular/global/mua.js +4 -4
  1040. app-ng-runtime/locales/angular/global/my.js +4 -4
  1041. app-ng-runtime/locales/angular/global/mzn.js +4 -4
  1042. app-ng-runtime/locales/angular/global/naq.js +4 -4
  1043. app-ng-runtime/locales/angular/global/nb-sj.js +4 -4
  1044. app-ng-runtime/locales/angular/global/nb.js +4 -4
  1045. app-ng-runtime/locales/angular/global/nd.js +4 -4
  1046. app-ng-runtime/locales/angular/global/nds-nl.js +4 -4
  1047. app-ng-runtime/locales/angular/global/nds.js +4 -4
  1048. app-ng-runtime/locales/angular/global/ne-in.js +4 -4
  1049. app-ng-runtime/locales/angular/global/ne.js +4 -4
  1050. app-ng-runtime/locales/angular/global/nl-aw.js +4 -4
  1051. app-ng-runtime/locales/angular/global/nl-be.js +4 -4
  1052. app-ng-runtime/locales/angular/global/nl-bq.js +4 -4
  1053. app-ng-runtime/locales/angular/global/nl-cw.js +4 -4
  1054. app-ng-runtime/locales/angular/global/nl-sr.js +4 -4
  1055. app-ng-runtime/locales/angular/global/nl-sx.js +4 -4
  1056. app-ng-runtime/locales/angular/global/nl.js +4 -4
  1057. app-ng-runtime/locales/angular/global/nmg.js +4 -4
  1058. app-ng-runtime/locales/angular/global/nn.js +4 -4
  1059. app-ng-runtime/locales/angular/global/nnh.js +4 -4
  1060. app-ng-runtime/locales/angular/global/no.js +4 -4
  1061. app-ng-runtime/locales/angular/global/nus.js +4 -4
  1062. app-ng-runtime/locales/angular/global/nyn.js +4 -4
  1063. app-ng-runtime/locales/angular/global/om-ke.js +4 -4
  1064. app-ng-runtime/locales/angular/global/om.js +4 -4
  1065. app-ng-runtime/locales/angular/global/or.js +4 -4
  1066. app-ng-runtime/locales/angular/global/os-ru.js +4 -4
  1067. app-ng-runtime/locales/angular/global/os.js +4 -4
  1068. app-ng-runtime/locales/angular/global/pa-arab.js +4 -4
  1069. app-ng-runtime/locales/angular/global/pa-guru.js +4 -4
  1070. app-ng-runtime/locales/angular/global/pa.js +4 -4
  1071. app-ng-runtime/locales/angular/global/pcm.js +4 -4
  1072. app-ng-runtime/locales/angular/global/pl.js +4 -4
  1073. app-ng-runtime/locales/angular/global/ps-pk.js +4 -4
  1074. app-ng-runtime/locales/angular/global/ps.js +4 -4
  1075. app-ng-runtime/locales/angular/global/pt-ao.js +4 -4
  1076. app-ng-runtime/locales/angular/global/pt-ch.js +4 -4
  1077. app-ng-runtime/locales/angular/global/pt-cv.js +4 -4
  1078. app-ng-runtime/locales/angular/global/pt-gq.js +4 -4
  1079. app-ng-runtime/locales/angular/global/pt-gw.js +4 -4
  1080. app-ng-runtime/locales/angular/global/pt-lu.js +4 -4
  1081. app-ng-runtime/locales/angular/global/pt-mo.js +4 -4
  1082. app-ng-runtime/locales/angular/global/pt-mz.js +4 -4
  1083. app-ng-runtime/locales/angular/global/pt-pt.js +4 -4
  1084. app-ng-runtime/locales/angular/global/pt-st.js +4 -4
  1085. app-ng-runtime/locales/angular/global/pt-tl.js +4 -4
  1086. app-ng-runtime/locales/angular/global/pt.js +4 -4
  1087. app-ng-runtime/locales/angular/global/qu-bo.js +4 -4
  1088. app-ng-runtime/locales/angular/global/qu-ec.js +4 -4
  1089. app-ng-runtime/locales/angular/global/qu.js +4 -4
  1090. app-ng-runtime/locales/angular/global/rm.js +4 -4
  1091. app-ng-runtime/locales/angular/global/rn.js +4 -4
  1092. app-ng-runtime/locales/angular/global/ro-md.js +4 -4
  1093. app-ng-runtime/locales/angular/global/ro.js +4 -4
  1094. app-ng-runtime/locales/angular/global/rof.js +4 -4
  1095. app-ng-runtime/locales/angular/global/ru-by.js +4 -4
  1096. app-ng-runtime/locales/angular/global/ru-kg.js +4 -4
  1097. app-ng-runtime/locales/angular/global/ru-kz.js +4 -4
  1098. app-ng-runtime/locales/angular/global/ru-md.js +4 -4
  1099. app-ng-runtime/locales/angular/global/ru-ua.js +4 -4
  1100. app-ng-runtime/locales/angular/global/ru.js +4 -4
  1101. app-ng-runtime/locales/angular/global/rw.js +4 -4
  1102. app-ng-runtime/locales/angular/global/rwk.js +4 -4
  1103. app-ng-runtime/locales/angular/global/sa.js +4 -4
  1104. app-ng-runtime/locales/angular/global/sah.js +4 -4
  1105. app-ng-runtime/locales/angular/global/saq.js +4 -4
  1106. app-ng-runtime/locales/angular/global/sat-olck.js +4 -4
  1107. app-ng-runtime/locales/angular/global/sat.js +4 -4
  1108. app-ng-runtime/locales/angular/global/sbp.js +4 -4
  1109. app-ng-runtime/locales/angular/global/sc.js +4 -4
  1110. app-ng-runtime/locales/angular/global/sd-arab.js +4 -4
  1111. app-ng-runtime/locales/angular/global/sd-deva.js +4 -4
  1112. app-ng-runtime/locales/angular/global/sd.js +4 -4
  1113. app-ng-runtime/locales/angular/global/se-fi.js +4 -4
  1114. app-ng-runtime/locales/angular/global/se-se.js +4 -4
  1115. app-ng-runtime/locales/angular/global/se.js +4 -4
  1116. app-ng-runtime/locales/angular/global/seh.js +4 -4
  1117. app-ng-runtime/locales/angular/global/ses.js +4 -4
  1118. app-ng-runtime/locales/angular/global/sg.js +4 -4
  1119. app-ng-runtime/locales/angular/global/shi-latn.js +4 -4
  1120. app-ng-runtime/locales/angular/global/shi-tfng.js +4 -4
  1121. app-ng-runtime/locales/angular/global/shi.js +4 -4
  1122. app-ng-runtime/locales/angular/global/si.js +4 -4
  1123. app-ng-runtime/locales/angular/global/sk.js +4 -4
  1124. app-ng-runtime/locales/angular/global/sl.js +4 -4
  1125. app-ng-runtime/locales/angular/global/smn.js +4 -4
  1126. app-ng-runtime/locales/angular/global/sn.js +4 -4
  1127. app-ng-runtime/locales/angular/global/so-dj.js +4 -4
  1128. app-ng-runtime/locales/angular/global/so-et.js +4 -4
  1129. app-ng-runtime/locales/angular/global/so-ke.js +4 -4
  1130. app-ng-runtime/locales/angular/global/so.js +4 -4
  1131. app-ng-runtime/locales/angular/global/sq-mk.js +4 -4
  1132. app-ng-runtime/locales/angular/global/sq-xk.js +4 -4
  1133. app-ng-runtime/locales/angular/global/sq.js +4 -4
  1134. app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +4 -4
  1135. app-ng-runtime/locales/angular/global/sr-cyrl-me.js +4 -4
  1136. app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +4 -4
  1137. app-ng-runtime/locales/angular/global/sr-cyrl.js +4 -4
  1138. app-ng-runtime/locales/angular/global/sr-latn-ba.js +4 -4
  1139. app-ng-runtime/locales/angular/global/sr-latn-me.js +4 -4
  1140. app-ng-runtime/locales/angular/global/sr-latn-xk.js +4 -4
  1141. app-ng-runtime/locales/angular/global/sr-latn.js +4 -4
  1142. app-ng-runtime/locales/angular/global/sr.js +4 -4
  1143. app-ng-runtime/locales/angular/global/su-latn.js +4 -4
  1144. app-ng-runtime/locales/angular/global/su.js +4 -4
  1145. app-ng-runtime/locales/angular/global/sv-ax.js +4 -4
  1146. app-ng-runtime/locales/angular/global/sv-fi.js +4 -4
  1147. app-ng-runtime/locales/angular/global/sv.js +4 -4
  1148. app-ng-runtime/locales/angular/global/sw-cd.js +4 -4
  1149. app-ng-runtime/locales/angular/global/sw-ke.js +4 -4
  1150. app-ng-runtime/locales/angular/global/sw-ug.js +4 -4
  1151. app-ng-runtime/locales/angular/global/sw.js +4 -4
  1152. app-ng-runtime/locales/angular/global/ta-lk.js +4 -4
  1153. app-ng-runtime/locales/angular/global/ta-my.js +4 -4
  1154. app-ng-runtime/locales/angular/global/ta-sg.js +4 -4
  1155. app-ng-runtime/locales/angular/global/ta.js +4 -4
  1156. app-ng-runtime/locales/angular/global/te.js +4 -4
  1157. app-ng-runtime/locales/angular/global/teo-ke.js +4 -4
  1158. app-ng-runtime/locales/angular/global/teo.js +4 -4
  1159. app-ng-runtime/locales/angular/global/tg.js +4 -4
  1160. app-ng-runtime/locales/angular/global/th.js +4 -4
  1161. app-ng-runtime/locales/angular/global/ti-er.js +4 -4
  1162. app-ng-runtime/locales/angular/global/ti.js +4 -4
  1163. app-ng-runtime/locales/angular/global/tk.js +4 -4
  1164. app-ng-runtime/locales/angular/global/to.js +4 -4
  1165. app-ng-runtime/locales/angular/global/tr-cy.js +4 -4
  1166. app-ng-runtime/locales/angular/global/tr.js +4 -4
  1167. app-ng-runtime/locales/angular/global/tt.js +4 -4
  1168. app-ng-runtime/locales/angular/global/twq.js +4 -4
  1169. app-ng-runtime/locales/angular/global/tzm.js +4 -4
  1170. app-ng-runtime/locales/angular/global/ug.js +4 -4
  1171. app-ng-runtime/locales/angular/global/uk.js +4 -4
  1172. app-ng-runtime/locales/angular/global/und.js +4 -4
  1173. app-ng-runtime/locales/angular/global/ur-in.js +4 -4
  1174. app-ng-runtime/locales/angular/global/ur.js +4 -4
  1175. app-ng-runtime/locales/angular/global/uz-arab.js +4 -4
  1176. app-ng-runtime/locales/angular/global/uz-cyrl.js +4 -4
  1177. app-ng-runtime/locales/angular/global/uz-latn.js +4 -4
  1178. app-ng-runtime/locales/angular/global/uz.js +4 -4
  1179. app-ng-runtime/locales/angular/global/vai-latn.js +4 -4
  1180. app-ng-runtime/locales/angular/global/vai-vaii.js +4 -4
  1181. app-ng-runtime/locales/angular/global/vai.js +4 -4
  1182. app-ng-runtime/locales/angular/global/vi.js +4 -4
  1183. app-ng-runtime/locales/angular/global/vun.js +4 -4
  1184. app-ng-runtime/locales/angular/global/wae.js +4 -4
  1185. app-ng-runtime/locales/angular/global/wo.js +4 -4
  1186. app-ng-runtime/locales/angular/global/xh.js +4 -4
  1187. app-ng-runtime/locales/angular/global/xog.js +4 -4
  1188. app-ng-runtime/locales/angular/global/yav.js +4 -4
  1189. app-ng-runtime/locales/angular/global/yi.js +4 -4
  1190. app-ng-runtime/locales/angular/global/yo-bj.js +4 -4
  1191. app-ng-runtime/locales/angular/global/yo.js +4 -4
  1192. app-ng-runtime/locales/angular/global/yrl-co.js +4 -4
  1193. app-ng-runtime/locales/angular/global/yrl-ve.js +4 -4
  1194. app-ng-runtime/locales/angular/global/yrl.js +4 -4
  1195. app-ng-runtime/locales/angular/global/yue-hans.js +4 -4
  1196. app-ng-runtime/locales/angular/global/yue-hant.js +4 -4
  1197. app-ng-runtime/locales/angular/global/yue.js +4 -4
  1198. app-ng-runtime/locales/angular/global/zgh.js +4 -4
  1199. app-ng-runtime/locales/angular/global/zh-hans-hk.js +4 -4
  1200. app-ng-runtime/locales/angular/global/zh-hans-mo.js +4 -4
  1201. app-ng-runtime/locales/angular/global/zh-hans-sg.js +4 -4
  1202. app-ng-runtime/locales/angular/global/zh-hans.js +4 -4
  1203. app-ng-runtime/locales/angular/global/zh-hant-hk.js +4 -4
  1204. app-ng-runtime/locales/angular/global/zh-hant-mo.js +4 -4
  1205. app-ng-runtime/locales/angular/global/zh-hant.js +4 -4
  1206. app-ng-runtime/locales/angular/global/zh.js +4 -4
  1207. app-ng-runtime/locales/angular/global/zu.js +4 -4
  1208. app-ng-runtime/mobile/components/basic/default/.npmignore +2 -0
  1209. app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +148 -143
  1210. app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +8 -7
  1211. app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +7 -6
  1212. app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
  1213. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +47 -43
  1214. app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +7 -5
  1215. app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +6 -5
  1216. app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +49 -47
  1217. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
  1218. app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +31 -32
  1219. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +146 -140
  1220. app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  1221. app-ng-runtime/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +2 -2
  1222. app-ng-runtime/mobile/components/basic/search/.npmignore +2 -0
  1223. app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +3 -3
  1224. app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +3 -3
  1225. app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
  1226. app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +3 -3
  1227. app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
  1228. app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +2 -0
  1229. app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +42 -30
  1230. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +14 -8
  1231. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +28 -21
  1232. app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
  1233. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +41 -28
  1234. app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  1235. app-ng-runtime/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +2 -2
  1236. app-ng-runtime/mobile/components/containers/segmented-control/segmented-control.component.d.ts +2 -2
  1237. app-ng-runtime/mobile/components/data/media-list/.npmignore +2 -0
  1238. app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +53 -48
  1239. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
  1240. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +48 -42
  1241. app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
  1242. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +50 -44
  1243. app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  1244. app-ng-runtime/mobile/components/data/media-list/media-list.component.d.ts +2 -2
  1245. app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +2 -0
  1246. app-ng-runtime/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +2 -2
  1247. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +14 -8
  1248. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +15 -9
  1249. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
  1250. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +16 -10
  1251. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  1252. app-ng-runtime/mobile/components/device/camera/.npmignore +2 -0
  1253. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +15 -9
  1254. app-ng-runtime/mobile/components/device/camera/camera.component.d.ts +2 -2
  1255. app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +16 -10
  1256. app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
  1257. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +17 -11
  1258. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  1259. app-ng-runtime/mobile/components/input/file-upload/.npmignore +2 -0
  1260. app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +3 -3
  1261. app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +3 -3
  1262. app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  1263. app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +3 -3
  1264. app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  1265. app-ng-runtime/mobile/components/page/default/.npmignore +2 -0
  1266. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +11 -10
  1267. app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +4 -3
  1268. app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +5 -4
  1269. app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
  1270. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +8 -6
  1271. app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  1272. app-ng-runtime/mobile/components/page/left-panel/.npmignore +2 -0
  1273. app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +3 -3
  1274. app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -3
  1275. app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  1276. app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +3 -3
  1277. app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  1278. app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +2 -0
  1279. app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +40 -35
  1280. app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +41 -36
  1281. app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
  1282. app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +41 -36
  1283. app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
  1284. app-ng-runtime/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +2 -2
  1285. app-ng-runtime/mobile/components/page/tab-bar/.npmignore +2 -0
  1286. app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +52 -46
  1287. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
  1288. app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +50 -43
  1289. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +51 -44
  1290. app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  1291. app-ng-runtime/mobile/components/page/tab-bar/tabbar.component.d.ts +2 -2
  1292. app-ng-runtime/mobile/core/.npmignore +2 -0
  1293. app-ng-runtime/mobile/core/bundles/index.umd.js +43 -43
  1294. app-ng-runtime/mobile/core/esm2022/core.module.mjs +3 -3
  1295. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +1 -1
  1296. app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +3 -3
  1297. app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +7 -6
  1298. app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +5 -4
  1299. app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +6 -5
  1300. app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +8 -7
  1301. app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +5 -4
  1302. app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +7 -6
  1303. app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +11 -10
  1304. app-ng-runtime/mobile/core/fesm2022/index.mjs +40 -39
  1305. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  1306. app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
  1307. app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
  1308. app-ng-runtime/mobile/offline/.npmignore +2 -0
  1309. app-ng-runtime/mobile/offline/bundles/index.umd.js +176 -159
  1310. app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  1311. app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +3 -3
  1312. app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +9 -8
  1313. app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +39 -37
  1314. app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +56 -47
  1315. app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +7 -6
  1316. app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
  1317. app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +3 -3
  1318. app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  1319. app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  1320. app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +3 -3
  1321. app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  1322. app-ng-runtime/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
  1323. app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  1324. app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  1325. app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  1326. app-ng-runtime/mobile/offline/esm2022/utils/utils.mjs +1 -1
  1327. app-ng-runtime/mobile/offline/fesm2022/index.mjs +171 -153
  1328. app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
  1329. app-ng-runtime/mobile/placeholder/runtime/.npmignore +2 -0
  1330. app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +3 -2
  1331. app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +3 -2
  1332. app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
  1333. app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +3 -2
  1334. app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
  1335. app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +2 -0
  1336. app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
  1337. app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1338. app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
  1339. app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1340. app-ng-runtime/mobile/runtime/.npmignore +2 -0
  1341. app-ng-runtime/mobile/runtime/bundles/index.umd.js +21 -17
  1342. app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +4 -3
  1343. app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +5 -4
  1344. app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +7 -3
  1345. app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +6 -5
  1346. app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
  1347. app-ng-runtime/mobile/runtime/fesm2022/index.mjs +18 -13
  1348. app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
  1349. app-ng-runtime/mobile/runtime-dynamic/.npmignore +2 -0
  1350. app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +5 -5
  1351. app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1352. app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +5 -5
  1353. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +5 -5
  1354. app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1355. app-ng-runtime/mobile/variables/.npmignore +2 -0
  1356. app-ng-runtime/mobile/variables/bundles/index.umd.js +28 -21
  1357. app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +5 -5
  1358. app-ng-runtime/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
  1359. app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  1360. app-ng-runtime/mobile/variables/esm2022/services/device-service/device-service.mjs +1 -1
  1361. app-ng-runtime/mobile/variables/esm2022/services/device-service/location-service.mjs +1 -1
  1362. app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
  1363. app-ng-runtime/mobile/variables/esm2022/services/scan-service.mjs +1 -1
  1364. app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +3 -3
  1365. app-ng-runtime/mobile/variables/fesm2022/index.mjs +24 -16
  1366. app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
  1367. app-ng-runtime/oAuth/.npmignore +2 -0
  1368. app-ng-runtime/oAuth/bundles/index.umd.js +15 -15
  1369. app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
  1370. app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +6 -5
  1371. app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
  1372. app-ng-runtime/oAuth/fesm2022/index.mjs +12 -11
  1373. app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
  1374. app-ng-runtime/package.json +1 -1
  1375. app-ng-runtime/runtime/base/.npmignore +2 -0
  1376. app-ng-runtime/runtime/base/bundles/index.umd.js +263 -247
  1377. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +3 -1
  1378. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +1 -1
  1379. app-ng-runtime/runtime/base/directives/accessroles.directive.d.ts +4 -3
  1380. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +34 -30
  1381. app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +9 -8
  1382. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +5 -5
  1383. app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +5 -4
  1384. app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +16 -15
  1385. app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +15 -14
  1386. app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +17 -16
  1387. app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +16 -15
  1388. app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +17 -15
  1389. app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
  1390. app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -3
  1391. app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +24 -16
  1392. app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +4 -4
  1393. app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +3 -3
  1394. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
  1395. app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +3 -3
  1396. app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +5 -4
  1397. app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +4 -4
  1398. app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +5 -5
  1399. app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +3 -3
  1400. app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +3 -3
  1401. app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +3 -3
  1402. app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +3 -3
  1403. app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +3 -3
  1404. app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +3 -3
  1405. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +3 -3
  1406. app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +3 -3
  1407. app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +19 -16
  1408. app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +9 -8
  1409. app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +5 -4
  1410. app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -5
  1411. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +15 -13
  1412. app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +10 -9
  1413. app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +3 -3
  1414. app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +3 -3
  1415. app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +5 -4
  1416. app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +9 -8
  1417. app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +8 -7
  1418. app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
  1419. app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +7 -8
  1420. app-ng-runtime/runtime/base/fesm2022/index.mjs +273 -256
  1421. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  1422. app-ng-runtime/runtime/base/overrides/wm_dom_renderer.d.ts +2 -2
  1423. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  1424. app-ng-runtime/runtime/dynamic/.npmignore +2 -0
  1425. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +22 -21
  1426. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
  1427. app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +4 -3
  1428. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +3 -3
  1429. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +3 -3
  1430. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +3 -3
  1431. app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +3 -3
  1432. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +6 -5
  1433. app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
  1434. app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
  1435. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +21 -19
  1436. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  1437. app-ng-runtime/scripts/datatable/datatable.js +2 -2
  1438. app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  1439. app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  1440. app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  1441. app-ng-runtime/security/.npmignore +2 -0
  1442. app-ng-runtime/security/bundles/index.umd.js +17 -17
  1443. app-ng-runtime/security/esm2022/security.module.mjs +2 -2
  1444. app-ng-runtime/security/esm2022/security.service.mjs +14 -13
  1445. app-ng-runtime/security/fesm2022/index.mjs +14 -13
  1446. app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
  1447. app-ng-runtime/security/security.service.d.ts +1 -1
  1448. app-ng-runtime/swipey/.npmignore +2 -0
  1449. app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
  1450. app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
  1451. app-ng-runtime/transpiler/.npmignore +2 -0
  1452. app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
  1453. app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
  1454. app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
  1455. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  1456. app-ng-runtime/variables/.npmignore +2 -0
  1457. app-ng-runtime/variables/bundles/index.umd.js +160 -150
  1458. app-ng-runtime/variables/esm2022/factory/variable.factory.mjs +1 -1
  1459. app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  1460. app-ng-runtime/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
  1461. app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  1462. app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  1463. app-ng-runtime/variables/esm2022/manager/variable/device-variable-manager.mjs +1 -1
  1464. app-ng-runtime/variables/esm2022/manager/variable/device-variable-service.mjs +1 -1
  1465. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  1466. app-ng-runtime/variables/esm2022/model/action/notification-action.mjs +1 -1
  1467. app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +3 -3
  1468. app-ng-runtime/variables/esm2022/service/variables.service.mjs +9 -8
  1469. app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  1470. app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  1471. app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  1472. app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  1473. app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
  1474. app-ng-runtime/variables/fesm2022/index.mjs +174 -163
  1475. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  1476. app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
  1477. app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +0 -2
  1478. app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +0 -10
  1479. app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +0 -20
  1480. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +0 -70
@@ -1,26 +1,28 @@
1
- import { Component, EventEmitter, Inject, Injector, Output, SkipSelf } from '@angular/core';
1
+ import { Component, EventEmitter, Inject, Injector, Output, SkipSelf, Optional } from '@angular/core';
2
2
  import { $appDigest, $watch, AppConstants, DataSource, debounce, isDefined, switchClass, triggerFn } from '@wm/core';
3
3
  import { DEBOUNCE_TIMES, getOrderByExpr, provideAsWidgetRef, StylableComponent, styler, WidgetRef, unsupportedStatePersistenceTypes } from '@wm/components/base';
4
4
  import { registerProps } from './pagination.props';
5
+ import { forEach, get, isArray, isEmpty, isNull, isString } from "lodash-es";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
7
8
  import * as i2 from "@angular/forms";
8
9
  import * as i3 from "ngx-bootstrap/pagination";
9
10
  const _c0 = ["wmPagination", ""];
11
+ const _c1 = a0 => ({ "disabled": a0 });
12
+ const _c2 = () => ({ standalone: true });
10
13
  function PaginationComponent_ul_0_li_31_Template(rf, ctx) { if (rf & 1) {
11
14
  i0.ɵɵelementStart(0, "li", 23)(1, "a", 24);
12
15
  i0.ɵɵtext(2);
13
16
  i0.ɵɵelementEnd()();
14
17
  } if (rf & 2) {
15
- const ctx_r10 = i0.ɵɵnextContext(2);
18
+ const ctx_r1 = i0.ɵɵnextContext(2);
16
19
  i0.ɵɵadvance(2);
17
- i0.ɵɵtextInterpolate2("", ctx_r10.appLocale.LABEL_TOTAL_RECORDS, ": ", ctx_r10.dataSize, "");
20
+ i0.ɵɵtextInterpolate2("", ctx_r1.appLocale.LABEL_TOTAL_RECORDS, ": ", ctx_r1.dataSize, "");
18
21
  } }
19
- const _c1 = function (a0) { return { "disabled": a0 }; };
20
22
  function PaginationComponent_ul_0_Template(rf, ctx) { if (rf & 1) {
21
- const _r12 = i0.ɵɵgetCurrentView();
23
+ const _r1 = i0.ɵɵgetCurrentView();
22
24
  i0.ɵɵelementStart(0, "ul")(1, "li", 6)(2, "a", 7);
23
- i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.navigatePage("first", $event)); });
25
+ i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("first", $event)); });
24
26
  i0.ɵɵelementStart(3, "span", 8);
25
27
  i0.ɵɵelement(4, "i", 9);
26
28
  i0.ɵɵelementEnd();
@@ -28,7 +30,7 @@ function PaginationComponent_ul_0_Template(rf, ctx) { if (rf & 1) {
28
30
  i0.ɵɵtext(6);
29
31
  i0.ɵɵelementEnd()()();
30
32
  i0.ɵɵelementStart(7, "li", 6)(8, "a", 11);
31
- i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_8_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.navigatePage("prev", $event)); });
33
+ i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_8_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("prev", $event)); });
32
34
  i0.ɵɵelementStart(9, "span", 8);
33
35
  i0.ɵɵelement(10, "i", 12);
34
36
  i0.ɵɵelementEnd();
@@ -36,13 +38,14 @@ function PaginationComponent_ul_0_Template(rf, ctx) { if (rf & 1) {
36
38
  i0.ɵɵtext(12);
37
39
  i0.ɵɵelementEnd()()();
38
40
  i0.ɵɵelementStart(13, "li", 13)(14, "a", 14)(15, "input", 15);
39
- i0.ɵɵlistener("ngModelChange", function PaginationComponent_ul_0_Template_input_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.dn.currentPage = $event); })("keydown", function PaginationComponent_ul_0_Template_input_keydown_15_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.onKeyDown($event)); })("change", function PaginationComponent_ul_0_Template_input_change_15_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.onModelChange($event)); });
41
+ i0.ɵɵtwoWayListener("ngModelChange", function PaginationComponent_ul_0_Template_input_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.dn.currentPage, $event) || (ctx_r1.dn.currentPage = $event); return i0.ɵɵresetView($event); });
42
+ i0.ɵɵlistener("keydown", function PaginationComponent_ul_0_Template_input_keydown_15_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeyDown($event)); })("change", function PaginationComponent_ul_0_Template_input_change_15_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onModelChange($event)); });
40
43
  i0.ɵɵelementEnd()()();
41
44
  i0.ɵɵelementStart(16, "li", 16)(17, "a", 17);
42
45
  i0.ɵɵtext(18);
43
46
  i0.ɵɵelementEnd()();
44
47
  i0.ɵɵelementStart(19, "li", 6)(20, "a", 18);
45
- i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_20_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.navigatePage("next", $event)); });
48
+ i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_20_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("next", $event)); });
46
49
  i0.ɵɵelementStart(21, "span", 8);
47
50
  i0.ɵɵelement(22, "i", 19);
48
51
  i0.ɵɵelementEnd();
@@ -50,7 +53,7 @@ function PaginationComponent_ul_0_Template(rf, ctx) { if (rf & 1) {
50
53
  i0.ɵɵtext(24);
51
54
  i0.ɵɵelementEnd()()();
52
55
  i0.ɵɵelementStart(25, "li", 6)(26, "a", 20);
53
- i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_26_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.navigatePage("last", $event)); });
56
+ i0.ɵɵlistener("click", function PaginationComponent_ul_0_Template_a_click_26_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("last", $event)); });
54
57
  i0.ɵɵelementStart(27, "span", 8);
55
58
  i0.ɵɵelement(28, "i", 21);
56
59
  i0.ɵɵelementEnd();
@@ -60,50 +63,51 @@ function PaginationComponent_ul_0_Template(rf, ctx) { if (rf & 1) {
60
63
  i0.ɵɵtemplate(31, PaginationComponent_ul_0_li_31_Template, 3, 2, "li", 22);
61
64
  i0.ɵɵelementEnd();
62
65
  } if (rf & 2) {
63
- const ctx_r0 = i0.ɵɵnextContext();
64
- i0.ɵɵclassMapInterpolate1("pagination advanced ", ctx_r0.navigationClass, "");
65
- i0.ɵɵadvance(1);
66
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c1, ctx_r0.isDisableFirst));
67
- i0.ɵɵadvance(1);
68
- i0.ɵɵproperty("title", ctx_r0.appLocale.LABEL_FIRST);
69
- i0.ɵɵattribute("aria-disabled", ctx_r0.isDisableFirst);
66
+ const ctx_r1 = i0.ɵɵnextContext();
67
+ i0.ɵɵclassMapInterpolate1("pagination advanced ", ctx_r1.navigationClass, "");
68
+ i0.ɵɵadvance();
69
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(26, _c1, ctx_r1.isDisableFirst));
70
+ i0.ɵɵadvance();
71
+ i0.ɵɵproperty("title", ctx_r1.appLocale.LABEL_FIRST);
72
+ i0.ɵɵattribute("aria-disabled", ctx_r1.isDisableFirst);
70
73
  i0.ɵɵadvance(4);
71
- i0.ɵɵtextInterpolate1("Go to first page ", ctx_r0.isDisableFirst ? " , Disabled" : "", "");
72
- i0.ɵɵadvance(1);
73
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(27, _c1, ctx_r0.isDisablePrevious));
74
- i0.ɵɵadvance(1);
75
- i0.ɵɵproperty("title", ctx_r0.appLocale.LABEL_PREVIOUS);
76
- i0.ɵɵattribute("aria-disabled", ctx_r0.isDisablePrevious);
74
+ i0.ɵɵtextInterpolate1("Go to first page ", ctx_r1.isDisableFirst ? " , Disabled" : "", "");
75
+ i0.ɵɵadvance();
76
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(28, _c1, ctx_r1.isDisablePrevious));
77
+ i0.ɵɵadvance();
78
+ i0.ɵɵproperty("title", ctx_r1.appLocale.LABEL_PREVIOUS);
79
+ i0.ɵɵattribute("aria-disabled", ctx_r1.isDisablePrevious);
77
80
  i0.ɵɵadvance(4);
78
- i0.ɵɵtextInterpolate1("Go to previous page ", ctx_r0.isDisablePrevious ? ", Disabled" : "", "");
81
+ i0.ɵɵtextInterpolate1("Go to previous page ", ctx_r1.isDisablePrevious ? ", Disabled" : "", "");
79
82
  i0.ɵɵadvance(3);
80
- i0.ɵɵproperty("disabled", ctx_r0.isDisableCurrent)("ngModel", ctx_r0.dn.currentPage);
81
- i0.ɵɵattribute("aria-label", "Showing Page " + ctx_r0.dn.currentPage + " of " + ctx_r0.pageCount);
83
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.dn.currentPage);
84
+ i0.ɵɵproperty("disabled", ctx_r1.isDisableCurrent)("ngModelOptions", i0.ɵɵpureFunction0(30, _c2));
85
+ i0.ɵɵattribute("aria-label", "Showing Page " + ctx_r1.dn.currentPage + " of " + ctx_r1.pageCount);
82
86
  i0.ɵɵadvance(2);
83
- i0.ɵɵproperty("hidden", ctx_r0.isDisableCount);
84
- i0.ɵɵadvance(1);
85
- i0.ɵɵtextInterpolate1(" / ", ctx_r0.pageCount, "");
86
- i0.ɵɵadvance(1);
87
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(29, _c1, ctx_r0.isDisableNext));
88
- i0.ɵɵadvance(1);
89
- i0.ɵɵproperty("title", ctx_r0.appLocale.LABEL_NEXT);
90
- i0.ɵɵattribute("aria-disabled", ctx_r0.isDisableNext);
87
+ i0.ɵɵproperty("hidden", ctx_r1.isDisableCount);
88
+ i0.ɵɵadvance();
89
+ i0.ɵɵtextInterpolate1(" / ", ctx_r1.pageCount, "");
90
+ i0.ɵɵadvance();
91
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(31, _c1, ctx_r1.isDisableNext));
92
+ i0.ɵɵadvance();
93
+ i0.ɵɵproperty("title", ctx_r1.appLocale.LABEL_NEXT);
94
+ i0.ɵɵattribute("aria-disabled", ctx_r1.isDisableNext);
91
95
  i0.ɵɵadvance(4);
92
- i0.ɵɵtextInterpolate1("Go to next page ", ctx_r0.isDisableNext ? " , Disabled" : "", "");
93
- i0.ɵɵadvance(1);
94
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(31, _c1, ctx_r0.isDisableLast));
95
- i0.ɵɵadvance(1);
96
- i0.ɵɵproperty("title", ctx_r0.appLocale.LABEL_LAST);
97
- i0.ɵɵattribute("aria-disabled", ctx_r0.isDisableLast);
96
+ i0.ɵɵtextInterpolate1("Go to next page ", ctx_r1.isDisableNext ? " , Disabled" : "", "");
97
+ i0.ɵɵadvance();
98
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(33, _c1, ctx_r1.isDisableLast));
99
+ i0.ɵɵadvance();
100
+ i0.ɵɵproperty("title", ctx_r1.appLocale.LABEL_LAST);
101
+ i0.ɵɵattribute("aria-disabled", ctx_r1.isDisableLast);
98
102
  i0.ɵɵadvance(4);
99
- i0.ɵɵtextInterpolate1("Go to last page ", ctx_r0.isDisableLast ? " , Disabled" : "", "");
100
- i0.ɵɵadvance(1);
101
- i0.ɵɵproperty("ngIf", ctx_r0.showrecordcount);
103
+ i0.ɵɵtextInterpolate1("Go to last page ", ctx_r1.isDisableLast ? " , Disabled" : "", "");
104
+ i0.ɵɵadvance();
105
+ i0.ɵɵproperty("ngIf", ctx_r1.showrecordcount);
102
106
  } }
103
107
  function PaginationComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
104
- const _r20 = i0.ɵɵgetCurrentView();
108
+ const _r3 = i0.ɵɵgetCurrentView();
105
109
  i0.ɵɵelementStart(0, "ul")(1, "li", 25)(2, "a", 26);
106
- i0.ɵɵlistener("click", function PaginationComponent_ul_1_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.navigatePage("prev", $event)); });
110
+ i0.ɵɵlistener("click", function PaginationComponent_ul_1_Template_a_click_2_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("prev", $event)); });
107
111
  i0.ɵɵelementStart(3, "span", 8);
108
112
  i0.ɵɵelement(4, "i", 12);
109
113
  i0.ɵɵelementEnd();
@@ -112,7 +116,7 @@ function PaginationComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
112
116
  i0.ɵɵtext(7);
113
117
  i0.ɵɵelementEnd()()();
114
118
  i0.ɵɵelementStart(8, "li", 27)(9, "a", 26);
115
- i0.ɵɵlistener("click", function PaginationComponent_ul_1_Template_a_click_9_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r21.navigatePage("next", $event)); });
119
+ i0.ɵɵlistener("click", function PaginationComponent_ul_1_Template_a_click_9_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.navigatePage("next", $event)); });
116
120
  i0.ɵɵelementStart(10, "span", 8);
117
121
  i0.ɵɵelement(11, "i", 19);
118
122
  i0.ɵɵelementEnd();
@@ -123,17 +127,17 @@ function PaginationComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
123
127
  } if (rf & 2) {
124
128
  const ctx_r1 = i0.ɵɵnextContext();
125
129
  i0.ɵɵclassMapInterpolate1("pager ", ctx_r1.navigationClass, "");
126
- i0.ɵɵadvance(1);
130
+ i0.ɵɵadvance();
127
131
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(11, _c1, ctx_r1.isDisablePrevious));
128
- i0.ɵɵadvance(1);
132
+ i0.ɵɵadvance();
129
133
  i0.ɵɵattribute("aria-disabled", ctx_r1.isDisablePrevious);
130
134
  i0.ɵɵadvance(3);
131
135
  i0.ɵɵtextInterpolate1(" ", ctx_r1.appLocale.LABEL_PREVIOUS, " ");
132
136
  i0.ɵɵadvance(2);
133
137
  i0.ɵɵtextInterpolate(ctx_r1.isDisablePrevious ? " , Disabled" : "");
134
- i0.ɵɵadvance(1);
138
+ i0.ɵɵadvance();
135
139
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1, ctx_r1.isDisableNext));
136
- i0.ɵɵadvance(1);
140
+ i0.ɵɵadvance();
137
141
  i0.ɵɵattribute("aria-disabled", ctx_r1.isDisableNext);
138
142
  i0.ɵɵadvance(3);
139
143
  i0.ɵɵtextInterpolate1(" ", ctx_r1.appLocale.LABEL_NEXT, " ");
@@ -141,36 +145,36 @@ function PaginationComponent_ul_1_Template(rf, ctx) { if (rf & 1) {
141
145
  i0.ɵɵtextInterpolate(ctx_r1.isDisableNext ? " , Disabled" : "");
142
146
  } }
143
147
  function PaginationComponent_pagination_2_Template(rf, ctx) { if (rf & 1) {
144
- const _r23 = i0.ɵɵgetCurrentView();
148
+ const _r4 = i0.ɵɵgetCurrentView();
145
149
  i0.ɵɵelementStart(0, "pagination", 28);
146
- i0.ɵɵlistener("pageChanged", function PaginationComponent_pagination_2_Template_pagination_pageChanged_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r22.pageChanged($event)); });
150
+ i0.ɵɵlistener("pageChanged", function PaginationComponent_pagination_2_Template_pagination_pageChanged_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.pageChanged($event)); });
147
151
  i0.ɵɵelementEnd();
148
152
  } if (rf & 2) {
149
- const ctx_r2 = i0.ɵɵnextContext();
150
- const _r6 = i0.ɵɵreference(7);
151
- const _r8 = i0.ɵɵreference(9);
152
- const _r4 = i0.ɵɵreference(5);
153
- i0.ɵɵproperty("ngClass", ctx_r2.navigationClass)("itemsPerPage", ctx_r2.maxResults)("totalItems", ctx_r2.dataSize)("ngModel", ctx_r2.dn.currentPage)("boundaryLinks", ctx_r2.boundarylinks)("maxSize", ctx_r2.maxsize)("directionLinks", ctx_r2.directionlinks)("customPreviousTemplate", _r6)("customNextTemplate", _r8)("customPageTemplate", _r4);
154
- i0.ɵɵattribute("aria-label", "Showing Page " + ctx_r2.dn.currentPage + " of " + ctx_r2.pageCount + " pages");
153
+ const ctx_r1 = i0.ɵɵnextContext();
154
+ const pageTemplate_r5 = i0.ɵɵreference(5);
155
+ const prevTemplate_r6 = i0.ɵɵreference(7);
156
+ const nextTemplate_r7 = i0.ɵɵreference(9);
157
+ i0.ɵɵproperty("ngClass", ctx_r1.navigationClass)("itemsPerPage", ctx_r1.maxResults)("totalItems", ctx_r1.dataSize)("ngModelOptions", i0.ɵɵpureFunction0(12, _c2))("ngModel", ctx_r1.dn.currentPage)("boundaryLinks", ctx_r1.boundarylinks)("maxSize", ctx_r1.maxsize)("directionLinks", ctx_r1.directionlinks)("customPreviousTemplate", prevTemplate_r6)("customNextTemplate", nextTemplate_r7)("customPageTemplate", pageTemplate_r5);
158
+ i0.ɵɵattribute("aria-label", "Showing Page " + ctx_r1.dn.currentPage + " of " + ctx_r1.pageCount + " pages");
155
159
  } }
156
160
  function PaginationComponent_ul_3_Template(rf, ctx) { if (rf & 1) {
157
161
  i0.ɵɵelementStart(0, "ul", 29)(1, "li", 30)(2, "a", 24);
158
162
  i0.ɵɵtext(3);
159
163
  i0.ɵɵelementEnd()()();
160
164
  } if (rf & 2) {
161
- const ctx_r3 = i0.ɵɵnextContext();
165
+ const ctx_r1 = i0.ɵɵnextContext();
162
166
  i0.ɵɵadvance(3);
163
- i0.ɵɵtextInterpolate2("", ctx_r3.appLocale.LABEL_TOTAL_RECORDS, ": ", ctx_r3.dataSize, "");
167
+ i0.ɵɵtextInterpolate2("", ctx_r1.appLocale.LABEL_TOTAL_RECORDS, ": ", ctx_r1.dataSize, "");
164
168
  } }
165
169
  function PaginationComponent_ng_template_4_span_3_Template(rf, ctx) { if (rf & 1) {
166
170
  i0.ɵɵelementStart(0, "span", 10);
167
171
  i0.ɵɵtext(1);
168
172
  i0.ɵɵelementEnd();
169
173
  } if (rf & 2) {
170
- const page_r24 = i0.ɵɵnextContext().$implicit;
171
- const ctx_r25 = i0.ɵɵnextContext();
172
- i0.ɵɵadvance(1);
173
- i0.ɵɵtextInterpolate1(" ", ", Showing page " + page_r24.number + " of " + ctx_r25.pageCount, "");
174
+ const page_r8 = i0.ɵɵnextContext().$implicit;
175
+ const ctx_r1 = i0.ɵɵnextContext();
176
+ i0.ɵɵadvance();
177
+ i0.ɵɵtextInterpolate1(" ", ", Showing page " + page_r8.number + " of " + ctx_r1.pageCount, "");
174
178
  } }
175
179
  function PaginationComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
176
180
  i0.ɵɵelementStart(0, "span", 10);
@@ -179,34 +183,34 @@ function PaginationComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
179
183
  i0.ɵɵtext(2);
180
184
  i0.ɵɵtemplate(3, PaginationComponent_ng_template_4_span_3_Template, 2, 1, "span", 31);
181
185
  } if (rf & 2) {
182
- const page_r24 = ctx.$implicit;
183
- i0.ɵɵattribute("data-isacitvepage", page_r24.active);
184
- i0.ɵɵadvance(1);
186
+ const page_r8 = ctx.$implicit;
187
+ i0.ɵɵattribute("data-isacitvepage", page_r8.active);
188
+ i0.ɵɵadvance();
185
189
  i0.ɵɵtextInterpolate("Page ");
186
- i0.ɵɵadvance(1);
187
- i0.ɵɵtextInterpolate1(" ", page_r24.number, " ");
188
- i0.ɵɵadvance(1);
189
- i0.ɵɵproperty("ngIf", page_r24.active);
190
+ i0.ɵɵadvance();
191
+ i0.ɵɵtextInterpolate1(" ", page_r8.number, " ");
192
+ i0.ɵɵadvance();
193
+ i0.ɵɵproperty("ngIf", page_r8.active);
190
194
  } }
191
195
  function PaginationComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
192
196
  i0.ɵɵelementStart(0, "span", 10);
193
197
  i0.ɵɵtext(1);
194
198
  i0.ɵɵelementEnd();
195
199
  } if (rf & 2) {
196
- const disabled_r27 = ctx.disabled;
197
- i0.ɵɵattribute("data-isdisabled", disabled_r27);
198
- i0.ɵɵadvance(1);
199
- i0.ɵɵtextInterpolate1("Go to Previous page ", disabled_r27 ? ", Disabled" : "", "");
200
+ const disabled_r9 = ctx.disabled;
201
+ i0.ɵɵattribute("data-isdisabled", disabled_r9);
202
+ i0.ɵɵadvance();
203
+ i0.ɵɵtextInterpolate1("Go to Previous page ", disabled_r9 ? ", Disabled" : "", "");
200
204
  } }
201
205
  function PaginationComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
202
206
  i0.ɵɵelementStart(0, "span", 10);
203
207
  i0.ɵɵtext(1);
204
208
  i0.ɵɵelementEnd();
205
209
  } if (rf & 2) {
206
- const disabled_r28 = ctx.disabled;
207
- i0.ɵɵattribute("data-isdisabled", disabled_r28);
208
- i0.ɵɵadvance(1);
209
- i0.ɵɵtextInterpolate1("Go to Next page ", disabled_r28 ? ", Disabled" : "", "");
210
+ const disabled_r10 = ctx.disabled;
211
+ i0.ɵɵattribute("data-isdisabled", disabled_r10);
212
+ i0.ɵɵadvance();
213
+ i0.ɵɵtextInterpolate1("Go to Next page ", disabled_r10 ? ", Disabled" : "", "");
210
214
  } }
211
215
  const DEFAULT_CLS = 'app-datanavigator clearfix';
212
216
  const WIDGET_CONFIG = { widgetType: 'wm-pagination', hostClass: DEFAULT_CLS };
@@ -227,7 +231,7 @@ const sizeClasses = {
227
231
  export class PaginationComponent extends StylableComponent {
228
232
  static { this.initializeProps = registerProps(); }
229
233
  _setAriaForBasicNavigation() {
230
- _.forEach(this.nativeElement.getElementsByTagName('a'), (item) => {
234
+ forEach(this.nativeElement.getElementsByTagName('a'), (item) => {
231
235
  item.setAttribute('href', 'javascript:void(0);');
232
236
  const childNode = item.querySelector('span');
233
237
  if (childNode?.dataset.isacitvepage === "true") {
@@ -241,8 +245,8 @@ export class PaginationComponent extends StylableComponent {
241
245
  }
242
246
  });
243
247
  }
244
- constructor(inj, parent) {
245
- super(inj, WIDGET_CONFIG);
248
+ constructor(inj, parent, explicitContext) {
249
+ super(inj, WIDGET_CONFIG, explicitContext);
246
250
  this.parent = parent;
247
251
  this.resultEmitter = new EventEmitter();
248
252
  this.maxResultsEmitter = new EventEmitter();
@@ -359,11 +363,11 @@ export class PaginationComponent extends StylableComponent {
359
363
  // Set the result for client side pagination
360
364
  setNonPageableData(newVal) {
361
365
  let dataSize, maxResults, currentPage, startIndex;
362
- dataSize = _.isArray(newVal) ? newVal.length : (_.isEmpty(newVal) ? 0 : 1);
366
+ dataSize = isArray(newVal) ? newVal.length : (isEmpty(newVal) ? 0 : 1);
363
367
  maxResults = (this.options && this.options.maxResults) || dataSize;
364
368
  // For static variable, keep the current page. For other variables without pagination reset the page to 1
365
369
  // Fix for [WMS-23263]: gridOptions.isNextPageData flag is false when dataset is changed from script, so setting current page to 1
366
- if (this.datasource && (this.datasource.execute(DataSource.Operation.IS_API_AWARE) || (this.parent.widgetType === 'wm-table' && (this.parent.gridOptions.isNavTypeScrollOrOndemand() && (_.get(this.parent, 'gridOptions.lastActionPerformed') === this.parent.gridOptions.ACTIONS.DATASET_UPDATE || !_.get(this.parent, 'gridOptions.isNextPageData')))))) {
370
+ if (this.datasource && (this.datasource.execute(DataSource.Operation.IS_API_AWARE) || (this.parent.widgetType === 'wm-table' && (this.parent.gridOptions.isNavTypeScrollOrOndemand() && (get(this.parent, 'gridOptions.lastActionPerformed') === this.parent.gridOptions.ACTIONS.DATASET_UPDATE || !get(this.parent, 'gridOptions.isNextPageData')))))) {
367
371
  currentPage = 1;
368
372
  }
369
373
  else {
@@ -372,7 +376,7 @@ export class PaginationComponent extends StylableComponent {
372
376
  this.setDefaultPagingValues(dataSize, maxResults, currentPage);
373
377
  this.disableNavigation();
374
378
  startIndex = (this.dn.currentPage - 1) * this.maxResults;
375
- this.setResult(_.isArray(newVal) ? newVal.slice(startIndex, startIndex + this.maxResults) : newVal);
379
+ this.setResult(isArray(newVal) ? newVal.slice(startIndex, startIndex + this.maxResults) : newVal);
376
380
  }
377
381
  /*Function to set the values needed for pagination*/
378
382
  setPagingValues(newVal) {
@@ -392,7 +396,7 @@ export class PaginationComponent extends StylableComponent {
392
396
  this.filterFields = variableOptions.filterFields || {};
393
397
  this.logicalOp = variableOptions.logicalOp || '';
394
398
  this.sortOptions = variableOptions.orderBy ||
395
- (_.isArray(this.pagination.sort) ? getOrderByExpr(this.pagination.sort) : '');
399
+ (isArray(this.pagination.sort) ? getOrderByExpr(this.pagination.sort) : '');
396
400
  dataSize = this.pagination.totalElements;
397
401
  maxResults = this.pagination.size;
398
402
  if (this.pagination.numberOfElements > 0) {
@@ -410,7 +414,7 @@ export class PaginationComponent extends StylableComponent {
410
414
  this.checkDataSize(dataSize, this.pagination.numberOfElements, this.pagination.size);
411
415
  this.setResult(newVal);
412
416
  }
413
- else if (!_.isString(newVal)) {
417
+ else if (!isString(newVal)) {
414
418
  this.setNonPageableData(newVal);
415
419
  }
416
420
  }
@@ -423,7 +427,7 @@ export class PaginationComponent extends StylableComponent {
423
427
  }
424
428
  }
425
429
  else {
426
- if (newVal && !_.isString(newVal)) {
430
+ if (newVal && !isString(newVal)) {
427
431
  this.setNonPageableData(newVal);
428
432
  }
429
433
  }
@@ -520,7 +524,7 @@ export class PaginationComponent extends StylableComponent {
520
524
  else {
521
525
  startIndex = (this.dn.currentPage - 1) * this.maxResults;
522
526
  }
523
- data = _.isArray(this.__fullData) ? this.__fullData.slice(startIndex, startIndex + this.maxResults) : this.__fullData;
527
+ data = isArray(this.__fullData) ? this.__fullData.slice(startIndex, startIndex + this.maxResults) : this.__fullData;
524
528
  this.setResult(data);
525
529
  this.onPageDataReady(event, data, callback);
526
530
  }
@@ -553,7 +557,7 @@ export class PaginationComponent extends StylableComponent {
553
557
  In case of valid input, return true.*/
554
558
  validateCurrentPage(event, callback) {
555
559
  /*If the value entered is greater than the last page number or invalid value, then highlighting the field showing error.*/
556
- if (event && (isNaN(this.dn.currentPage) || this.dn.currentPage <= 0 || (this.pageCount && (this.dn.currentPage > this.pageCount || _.isNull(this.dn.currentPage))))) {
560
+ if (event && (isNaN(this.dn.currentPage) || this.dn.currentPage <= 0 || (this.pageCount && (this.dn.currentPage > this.pageCount || isNull(this.dn.currentPage))))) {
557
561
  if (this.dn.currentPage <= 0) {
558
562
  this.dn.currentPage = 1;
559
563
  }
@@ -728,40 +732,40 @@ export class PaginationComponent extends StylableComponent {
728
732
  event.stopPropagation();
729
733
  };
730
734
  }
731
- static { this.ɵfac = function PaginationComponent_Factory(t) { return new (t || PaginationComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(WidgetRef, 4)); }; }
735
+ static { this.ɵfac = function PaginationComponent_Factory(t) { return new (t || PaginationComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(WidgetRef, 4), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
732
736
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaginationComponent, selectors: [["", "wmPagination", ""]], outputs: { resultEmitter: "resultEmitter", maxResultsEmitter: "maxResultsEmitter" }, features: [i0.ɵɵProvidersFeature([
733
737
  provideAsWidgetRef(PaginationComponent)
734
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, decls: 10, vars: 4, consts: [[3, "class", 4, "ngIf"], ["class", "pagination basic", "role", "navigation", "firstText", "Firtst", "lastText", "Last", 3, "ngClass", "itemsPerPage", "totalItems", "ngModel", "boundaryLinks", "maxSize", "directionLinks", "customPreviousTemplate", "customNextTemplate", "customPageTemplate", "pageChanged", 4, "ngIf"], ["class", "pagination", 4, "ngIf"], ["pageTemplate", ""], ["prevTemplate", ""], ["nextTemplate", ""], [3, "ngClass"], ["name", "first", "href", "javascript:void(0);", 3, "title", "click"], ["aria-hidden", "true"], [1, "wi", "wi-first-page"], [1, "sr-only"], ["name", "prev", "href", "javascript:void(0);", 3, "title", "click"], [1, "wi", "wi-chevron-left"], [1, "pagecount", "disabled"], ["href", "javascript:void(0);"], ["type", "number", 1, "form-control", 3, "disabled", "ngModel", "ngModelChange", "keydown", "change"], [1, "disabled"], [3, "hidden"], ["name", "next", "href", "javascript:void(0);", 3, "title", "click"], [1, "wi", "wi-chevron-right"], ["name", "last", "href", "javascript:void(0);", 3, "title", "click"], [1, "wi", "wi-last-page"], ["class", "totalcount disabled", 4, "ngIf"], [1, "totalcount", "disabled"], ["href", "javascript:void(0);", "tabindex", "-1", "aria-disabled", "true"], [1, "previous", 3, "ngClass"], ["href", "javascript:void(0);", 3, "click"], [1, "next", 3, "ngClass"], ["role", "navigation", "firstText", "Firtst", "lastText", "Last", 1, "pagination", "basic", 3, "ngClass", "itemsPerPage", "totalItems", "ngModel", "boundaryLinks", "maxSize", "directionLinks", "customPreviousTemplate", "customNextTemplate", "customPageTemplate", "pageChanged"], [1, "pagination"], [1, "totalcount", "disabled", "basiccount"], ["class", "sr-only", 4, "ngIf"]], template: function PaginationComponent_Template(rf, ctx) { if (rf & 1) {
735
- i0.ɵɵtemplate(0, PaginationComponent_ul_0_Template, 32, 33, "ul", 0);
736
- i0.ɵɵtemplate(1, PaginationComponent_ul_1_Template, 15, 15, "ul", 0);
737
- i0.ɵɵtemplate(2, PaginationComponent_pagination_2_Template, 1, 11, "pagination", 1);
738
- i0.ɵɵtemplate(3, PaginationComponent_ul_3_Template, 4, 2, "ul", 2);
739
- i0.ɵɵtemplate(4, PaginationComponent_ng_template_4_Template, 4, 4, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
740
- i0.ɵɵtemplate(6, PaginationComponent_ng_template_6_Template, 2, 2, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
741
- i0.ɵɵtemplate(8, PaginationComponent_ng_template_8_Template, 2, 2, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
738
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0, decls: 10, vars: 4, consts: [["pageTemplate", ""], ["prevTemplate", ""], ["nextTemplate", ""], [3, "class", 4, "ngIf"], ["class", "pagination basic", "role", "navigation", "firstText", "Firtst", "lastText", "Last", 3, "ngClass", "itemsPerPage", "totalItems", "ngModelOptions", "ngModel", "boundaryLinks", "maxSize", "directionLinks", "customPreviousTemplate", "customNextTemplate", "customPageTemplate", "pageChanged", 4, "ngIf"], ["class", "pagination", 4, "ngIf"], [3, "ngClass"], ["name", "first", "href", "javascript:void(0);", 3, "click", "title"], ["aria-hidden", "true"], [1, "wi", "wi-first-page"], [1, "sr-only"], ["name", "prev", "href", "javascript:void(0);", 3, "click", "title"], [1, "wi", "wi-chevron-left"], [1, "pagecount", "disabled"], ["href", "javascript:void(0);"], ["type", "number", 1, "form-control", 3, "ngModelChange", "keydown", "change", "ngModel", "disabled", "ngModelOptions"], [1, "disabled"], [3, "hidden"], ["name", "next", "href", "javascript:void(0);", 3, "click", "title"], [1, "wi", "wi-chevron-right"], ["name", "last", "href", "javascript:void(0);", 3, "click", "title"], [1, "wi", "wi-last-page"], ["class", "totalcount disabled", 4, "ngIf"], [1, "totalcount", "disabled"], ["href", "javascript:void(0);", "tabindex", "-1", "aria-disabled", "true"], [1, "previous", 3, "ngClass"], ["href", "javascript:void(0);", 3, "click"], [1, "next", 3, "ngClass"], ["role", "navigation", "firstText", "Firtst", "lastText", "Last", 1, "pagination", "basic", 3, "pageChanged", "ngClass", "itemsPerPage", "totalItems", "ngModelOptions", "ngModel", "boundaryLinks", "maxSize", "directionLinks", "customPreviousTemplate", "customNextTemplate", "customPageTemplate"], [1, "pagination"], [1, "totalcount", "disabled", "basiccount"], ["class", "sr-only", 4, "ngIf"]], template: function PaginationComponent_Template(rf, ctx) { if (rf & 1) {
739
+ i0.ɵɵtemplate(0, PaginationComponent_ul_0_Template, 32, 35, "ul", 3)(1, PaginationComponent_ul_1_Template, 15, 15, "ul", 3)(2, PaginationComponent_pagination_2_Template, 1, 13, "pagination", 4)(3, PaginationComponent_ul_3_Template, 4, 2, "ul", 5)(4, PaginationComponent_ng_template_4_Template, 4, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(6, PaginationComponent_ng_template_6_Template, 2, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(8, PaginationComponent_ng_template_8_Template, 2, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
742
740
  } if (rf & 2) {
743
741
  i0.ɵɵproperty("ngIf", ctx.navcontrols === "Classic");
744
- i0.ɵɵadvance(1);
742
+ i0.ɵɵadvance();
745
743
  i0.ɵɵproperty("ngIf", ctx.navcontrols === "Pager");
746
- i0.ɵɵadvance(1);
744
+ i0.ɵɵadvance();
747
745
  i0.ɵɵproperty("ngIf", ctx.navcontrols === "Basic");
748
- i0.ɵɵadvance(1);
746
+ i0.ɵɵadvance();
749
747
  i0.ɵɵproperty("ngIf", ctx.navcontrols === "Basic" && ctx.showrecordcount);
750
748
  } }, dependencies: [i1.NgClass, i1.NgIf, i2.DefaultValueAccessor, i2.NumberValueAccessor, i2.NgControlStatus, i2.NgModel, i3.PaginationComponent], encapsulation: 2 }); }
751
749
  }
752
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationComponent, [{
750
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaginationComponent, [{
753
751
  type: Component,
754
752
  args: [{ selector: '[wmPagination]', providers: [
755
753
  provideAsWidgetRef(PaginationComponent)
756
- ], template: "\n<ul class=\"pagination advanced {{navigationClass}}\" *ngIf=\"navcontrols === 'Classic'\">\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\">\n <input type=\"number\" [disabled]=\"isDisableCurrent\" [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li *ngIf=\"showrecordcount\" class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n</ul>\n<ul class=\"pager {{navigationClass}}\" *ngIf=\"navcontrols === 'Pager'\">\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n</ul>\n\n<pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" *ngIf=\"navcontrols === 'Basic'\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n [ngModel]=\"dn.currentPage\" (pageChanged)=\"pageChanged($event)\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n\n<ul *ngIf=\"navcontrols === 'Basic' && showrecordcount\" class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n</ul>\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n <span class=\"sr-only\" *ngIf=\"page.active\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n" }]
757
- }], function () { return [{ type: i0.Injector }, { type: undefined, decorators: [{
754
+ ], template: "\n<ul class=\"pagination advanced {{navigationClass}}\" *ngIf=\"navcontrols === 'Classic'\">\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\">\n <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n [ngModelOptions]=\"{standalone: true}\"\n type=\"number\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li *ngIf=\"showrecordcount\" class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n</ul>\n<ul class=\"pager {{navigationClass}}\" *ngIf=\"navcontrols === 'Pager'\">\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n</ul>\n\n<pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" *ngIf=\"navcontrols === 'Basic'\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n\n<ul *ngIf=\"navcontrols === 'Basic' && showrecordcount\" class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n</ul>\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n <span class=\"sr-only\" *ngIf=\"page.active\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n" }]
755
+ }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
758
756
  type: SkipSelf
759
757
  }, {
760
758
  type: Inject,
761
759
  args: [WidgetRef]
762
- }] }]; }, { resultEmitter: [{
760
+ }] }, { type: undefined, decorators: [{
761
+ type: Inject,
762
+ args: ['EXPLICIT_CONTEXT']
763
+ }, {
764
+ type: Optional
765
+ }] }], { resultEmitter: [{
763
766
  type: Output
764
767
  }], maxResultsEmitter: [{
765
768
  type: Output
766
769
  }] }); })();
767
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9wYWdpbmF0aW9uL3NyYy9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3BhZ2luYXRpb24vc3JjL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQ0gsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdDQUFnQyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDaEssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0lDOEIvQyw4QkFBd0QsWUFBQTtJQUNhLFlBQStDO0lBQUEsaUJBQUksRUFBQTs7O0lBQW5ELGVBQStDO0lBQS9DLDRGQUErQzs7Ozs7SUEzQ3hILDBCQUFzRixZQUFBLFdBQUE7SUFJM0Usa0tBQVMsZUFBQSxxQkFBYSxPQUFPLFNBQVMsQ0FBQSxJQUFDO0lBQ3RDLCtCQUF5QjtJQUFBLHVCQUFnQztJQUFBLGlCQUFPO0lBQ2hFLGdDQUFzQjtJQUFBLFlBQXlEO0lBQUEsaUJBQU8sRUFBQSxFQUFBO0lBRzlGLDZCQUErQyxZQUFBO0lBR3ZDLGtLQUFTLGVBQUEscUJB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TSxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxNQUFNLGNBQWMsR0FBSSxJQUFJLENBQUMsYUFBNEIsQ0FBQztRQUMxRCxjQUFjLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDL0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQztJQUNOLENBQUM7b0ZBcGpCUSxtQkFBbUIsMERBd0VtQixTQUFTO29FQXhFL0MsbUJBQW1CLCtKQUpqQjtnQkFDUCxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQzthQUMxQztZQ3RDTCxvRUE2Q0s7WUFDTCxvRUFpQks7WUFFTCxtRkFTNkQ7WUFFN0Qsa0VBSUs7WUFFTCxxSEFJYztZQUNkLHFIQUVjO1lBQ2QscUhBRWM7O1lBNUZ1QyxvREFBK0I7WUE4QzdDLGVBQTZCO1lBQTdCLGtEQUE2QjtZQW1CRixlQUE2QjtZQUE3QixrREFBNkI7WUFXMUYsZUFBZ0Q7WUFBaEQseUVBQWdEOzs7dUZEcEN4QyxtQkFBbUI7Y0FQL0IsU0FBUzsyQkFDSSxnQkFBZ0IsYUFFZjtvQkFDUCxrQkFBa0IscUJBQXFCO2lCQUMxQzs7c0JBMEUyQixRQUFROztzQkFBSSxNQUFNO3VCQUFDLFNBQVM7d0JBdEU5QyxhQUFhO2tCQUF0QixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RvciwgT3V0cHV0LCBTa2lwU2VsZiwgQWZ0ZXJWaWV3SW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgICRhcHBEaWdlc3QsXG4gICAgJHdhdGNoLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBEYXRhU291cmNlLFxuICAgIGRlYm91bmNlLFxuICAgIGlzRGVmaW5lZCxcbiAgICBzd2l0Y2hDbGFzcyxcbiAgICB0cmlnZ2VyRm5cbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgREVCT1VOQ0VfVElNRVMsIGdldE9yZGVyQnlFeHByLCBwcm92aWRlQXNXaWRnZXRSZWYsIFN0eWxhYmxlQ29tcG9uZW50LCBzdHlsZXIsIFdpZGdldFJlZiwgdW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXN9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vcGFnaW5hdGlvbi5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWRhdGFuYXZpZ2F0b3IgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tcGFnaW5hdGlvbicsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5jb25zdCBzaXplQ2xhc3NlcyA9IHtcbiAgICAnUGFnZXInOiB7XG4gICAgICAgICdzbWFsbCc6ICdwYWdlci1zbScsXG4gICAgICAgICdsYXJnZSc6ICdwYWdlci1sZydcbiAgICB9LFxuICAgICdCYXNpYyc6IHtcbiAgICAgICAgJ3NtYWxsJzogJ3BhZ2luYXRpb24tc20nLFxuICAgICAgICAnbGFyZ2UnOiAncGFnaW5hdGlvbi1sZydcbiAgICB9LFxuICAgICdDbGFzc2ljJzoge1xuICAgICAgICAnc21hbGwnOiAncGFnaW5hdGlvbi1zbScsXG4gICAgICAgICdsYXJnZSc6ICdwYWdpbmF0aW9uLWxnJ1xuICAgIH1cbn07XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1t3bVBhZ2luYXRpb25dJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihQYWdpbmF0aW9uQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBAT3V0cHV0KCkgcmVzdWx0RW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG1heFJlc3VsdHNFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIGRhdGFzb3VyY2U7XG4gICAgbWF4UmVzdWx0cztcbiAgICBuYXZpZ2F0aW9uc2l6ZTtcbiAgICBzaG93cmVjb3JkY291bnQ7XG5cbiAgICBuYXZjb250cm9scztcbiAgICBuYXZpZ2F0aW9uO1xuXG4gICAgYm91bmRhcnlsaW5rcztcbiAgICBkaXJlY3Rpb25saW5rcztcblxuICAgIG5hdmlnYXRpb25DbGFzcztcbiAgICBkbiA9IHtcbiAgICAgICAgY3VycmVudFBhZ2U6IDFcbiAgICB9O1xuXG4gICAgcGFnZUNvdW50ID0gMDtcbiAgICBpc0Rpc2FibGVOZXh0ID0gdHJ1ZTtcbiAgICBpc0Rpc2FibGVQcmV2aW91cyA9IHRydWU7XG4gICAgaXNEaXNhYmxlRmlyc3QgPSB0cnVlO1xuICAgIGlzRGlzYWJsZUxhc3QgPSB0cnVlO1xuICAgIGlzRGlzYWJsZUN1cnJlbnQ7XG4gICAgZGF0YVNpemU7XG4gICAgcHJldnNob3dyZWNvcmRjb3VudDtcbiAgICBpc0Rpc2FibGVDb3VudDtcbiAgICBmaXJzdFJvdztcbiAgICByZXN1bHQ7XG4gICAgX19mdWxsRGF0YTtcbiAgICBkYXRhc2V0O1xuICAgIG9wdGlvbnM7XG4gICAgc3RhdGVoYW5kbGVyO1xuICAgIGZpbHRlckZpZWxkcztcbiAgICBzb3J0T3B0aW9ucztcbiAgICBiaW5kZGF0YXNldDtcbiAgICBwYWdpbmF0aW9uO1xuICAgIGxvZ2ljYWxPcDtcblxuICAgIHByaXZhdGUgX2RlYm91bmNlZEFwcGx5RGF0YXNldCA9IGRlYm91bmNlKCgpID0+IHRoaXMud2lkZ2V0LmRhdGFzZXQgPSB0aGlzLmRhdGFzZXQsIERFQk9VTkNFX1RJTUVTLlBBR0lOQVRJT05fREVCT1VOQ0VfVElNRSk7XG4gICAgcHJpdmF0ZSBfZGVib3VuY2VkUGFnZUNoYW5nZWQgPSBkZWJvdW5jZShldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZXZlbnQgJiYgZXZlbnQucGFnZTtcbiAgICAgICAgLy8gRG8gbm90IGNhbGwgZ29Ub1BhZ2UgaWYgcGFnZSBoYXMgbm90IGNoYW5nZWRcbiAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSB0aGlzLmRuLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0ID0gKHRoaXMgYXMgYW55KS5wYXJlbnQgfHwgdGhpcztcbiAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZTtcbiAgICAgICAgICAgIGluc3QuaW52b2tlRXZlbnRDYWxsYmFjaygncGFnaW5hdGlvbmNoYW5nZScsIHskZXZlbnQ6IHVuZGVmaW5lZCwgJGluZGV4OiB0aGlzLmRuLmN1cnJlbnRQYWdlfSk7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uID09PSAnQmFzaWMnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0QXJpYUZvckJhc2ljTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FKTtcblxuICAgIHByaXZhdGUgX3NldEFyaWFGb3JCYXNpY05hdmlnYXRpb24oKSB7XG4gICAgICAgIF8uZm9yRWFjaCh0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2EnKSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdocmVmJywgJ2phdmFzY3JpcHQ6dm9pZCgwKTsnKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGl0ZW0ucXVlcnlTZWxlY3Rvcignc3BhbicpO1xuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZT8uZGF0YXNldC5pc2FjaXR2ZXBhZ2UgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihjaGlsZE5vZGU/LmRhdGFzZXQuaXNkaXNhYmxlZCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBTa2lwU2VsZigpIEBJbmplY3QoV2lkZ2V0UmVmKSBwdWJsaWMgcGFyZW50KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRyk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIHNldFJlc3VsdChyZXN1bHQpIHtcbiAgICAgICAgLy8gVE9ETzogRW1pdCBldmVudCBvbmx5IGlmIHJlc3VsdCBpcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnJlc3VsdEVtaXR0ZXIuZW1pdCh0aGlzLnJlc3VsdCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIG5hdmlnYXRpb25DbGFzcyBiYXNlZCBvbiBuYXZpZ2F0aW9uIGFuZCBuYXZpZ2F0aW9uU2l6ZSBwcm9wc1xuICAgIHByaXZhdGUgdXBkYXRlTmF2U2l6ZSgpIHtcbiAgICAgICAgY29uc3Qgc2l6ZUNscyA9IHNpemVDbGFzc2VzW3RoaXMubmF2Y29udHJvbHNdO1xuICAgICAgICBpZiAoc2l6ZUNscyAmJiB0aGlzLm5hdmlnYXRpb25zaXplKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25DbGFzcyA9IHNpemVDbHNbdGhpcy5uYXZpZ2F0aW9uc2l6ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25DbGFzcyA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdG8gcmVzZXQgdGhlIHBhZ2luZyB2YWx1ZXMgdG8gZGVmYXVsdC5cbiAgICByZXNldFBhZ2VOYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB0aGlzLmRhdGFTaXplID0gMDtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgcGFnaW5nIHZhbHVlcy4qL1xuICAgIGNhbGN1bGF0ZVBhZ2luZ1ZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAodGhpcy5kYXRhU2l6ZSA+IHRoaXMubWF4UmVzdWx0cykgPyAoTWF0aC5jZWlsKHRoaXMuZGF0YVNpemUgLyB0aGlzLm1heFJlc3VsdHMpKSA6ICh0aGlzLmRhdGFTaXplIDwgMCA/IDAgOiAxKTtcbiAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2UgfHwgMTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIHNldCBkZWZhdWx0IHZhbHVlcyB0byB0aGUgcGFnaW5nIHBhcmFtZXRlcnMqL1xuICAgIHNldERlZmF1bHRQYWdpbmdWYWx1ZXMoZGF0YVNpemUsIG1heFJlc3VsdHMsIGN1cnJlbnRQYWdlKSB7XG4gICAgICAgIC8qSWYgbmVpdGhlciAnZGF0YVNpemUnIG5vciAnbWF4UmVzdWx0cycgaXMgc2V0LCB0aGVuIHNldCBkZWZhdWx0IHZhbHVlcyB0byB0aGUgcGFnaW5nIHBhcmFtZXRlcnMuKi9cbiAgICAgICAgaWYgKCFkYXRhU2l6ZSAmJiAhbWF4UmVzdWx0cykge1xuICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAxO1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICB0aGlzLm1heFJlc3VsdHMgPSBkYXRhU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNpemUgPSBkYXRhU2l6ZTtcbiAgICAgICAgfSBlbHNlIHsgLypFbHNlLCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZXMgYW5kIHJlY2FsY3VsYXRlIHBhZ2luZyBwYXJhbWV0ZXJzLiovXG4gICAgICAgICAgICB0aGlzLm1heFJlc3VsdHMgPSBtYXhSZXN1bHRzIHx8IHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgICAgIHRoaXMuZGF0YVNpemUgPSBpc0RlZmluZWQoZGF0YVNpemUpID8gZGF0YVNpemUgOiB0aGlzLmRhdGFTaXplO1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlIHx8IHRoaXMuZG4uY3VycmVudFBhZ2U7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2luZ1ZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF4UmVzdWx0c0VtaXR0ZXIuZW1pdCh0aGlzLm1heFJlc3VsdHMpO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gY2hlY2sgdGhlIGRhdGFTaXplIGFuZCBtYW5pcHVsYXRlIHRoZSBuYXZpZ2F0b3IgYWNjb3JkaW5nbHkuKi9cbiAgICBjaGVja0RhdGFTaXplKGRhdGFTaXplLCBudW1iZXJPZkVsZW1lbnRzPywgc2l6ZT8pIHtcbiAgICAgICAgLypJZiB0aGUgZGF0YVNpemUgaXMgLTEgb3IgSW50ZWdlci5NQVhfVkFMVUUoIHdoaWNoIGlzIDIxNDc0ODM2NDcpLCB0aGVuIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcyBpcyBub3Qga25vd24uXG4gICAgICAgICAqIEhlbmNlLFxuICAgICAgICAgKiAxLiBIaWRlIHRoZSAnVG90YWwgUmVjb3JkIENvdW50Jy5cbiAgICAgICAgICogMi4gRGlzYWJsZSB0aGUgJ0dvVG9MYXN0UGFnZScgbGluayBhcyB0aGUgcGFnZSBudW1iZXIgb2YgdGhlIGxhc3QgcGFnZSBpcyBub3Qga25vd24uKi9cbiAgICAgICAgaWYgKGRhdGFTaXplID09PSAtMSB8fCBkYXRhU2l6ZSA9PT0gQXBwQ29uc3RhbnRzLklOVF9NQVhfVkFMVUUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldnNob3dyZWNvcmRjb3VudCA9IHRoaXMuc2hvd3JlY29yZGNvdW50O1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVMYXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlQ291bnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG93cmVjb3JkY291bnQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIElmIG51bWJlciBvZiByZWNvcmRzIGluIGN1cnJlbnQgcGFnZSBpcyBsZXNzIHRoYW4gdGhlIG1heCByZWNvcmRzIHNpemUsIHRoaXMgaXMgdGhlIGxhc3QgcGFnZS4gU28gZGlzYWJsZSBuZXh0IGJ1dHRvbi5cbiAgICAgICAgICAgIGlmIChudW1iZXJPZkVsZW1lbnRzIDwgc2l6ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUNvdW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNob3dyZWNvcmRjb3VudCA9IHRoaXMucHJldnNob3dyZWNvcmRjb3VudCB8fCB0aGlzLnNob3dyZWNvcmRjb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gZGlzYWJsZSBuYXZpZ2F0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IGFuZCB0b3RhbCBwYWdlcy4qL1xuICAgIGRpc2FibGVOYXZpZ2F0aW9uKCkge1xuICAgICAgICBjb25zdCBpc0N1cnJlbnRQYWdlRmlyc3QgPSAodGhpcy5kbi5jdXJyZW50UGFnZSA9PT0gMSksXG4gICAgICAgICAgICBpc0N1cnJlbnRQYWdlTGFzdCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uPy5uZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUZpcnN0ID0gdGhpcy5pc0Rpc2FibGVQcmV2aW91cyA9IGlzQ3VycmVudFBhZ2VGaXJzdDtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTmV4dCA9IHRoaXMuaXNEaXNhYmxlTGFzdCA9IGlzQ3VycmVudFBhZ2VMYXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gV01TLTE4ODY3OiBJbiBjYXNlIG9mIHNlcnZlciBzaWRlIHBhZ2luYXRpb24sIGZvciBwYWdlciB0eXBlIHBhZ2luYXRpb24gZGVwZW5kIG9uIHByZXYgYW5kIG5leHQgZmxhZ3Mgd2hpY2ggYXJlIHNldCBieSBkZXZlbG9wZXJcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlRmlyc3QgPSB0aGlzLmlzRGlzYWJsZVByZXZpb3VzID0gIXRoaXMucGFnaW5hdGlvbi5wcmV2O1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVOZXh0ID0gdGhpcy5pc0Rpc2FibGVMYXN0ID0gIXRoaXMucGFnaW5hdGlvbi5uZXh0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlQ3VycmVudCA9IGlzQ3VycmVudFBhZ2VGaXJzdCAmJiBpc0N1cnJlbnRQYWdlTGFzdDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBjbGllbnQgc2lkZSBwYWdpbmF0aW9uLCB3aGVuIGxvYWQgbW9yZSByZWFjaGVzIGxhc3QgcGFnZSBoaWRlIHRoZSBvbi1kZW1hbmQgZ3JpZCBlbGVcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldCAmJiB0aGlzLmRhdGFzZXQubGVuZ3RoICYmIHRoaXMuaXNEaXNhYmxlTmV4dCAmJiB0aGlzLnBhcmVudC5vbkRlbWFuZExvYWQgJiYgdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJykge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2FsbERhdGFHcmlkTWV0aG9kKCdoaWRlTG9hZGluZ0luZGljYXRvcicsIHRoaXMuaXNEaXNhYmxlTmV4dCwgdGhpcy5wYXJlbnQuaW5mU2Nyb2xsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGJvdW5kIHRvIHRoZSBkYXRhLW5hdmlnYXRvciBoYXMgcGFnaW5nLiovXG4gICAgaXNEYXRhU291cmNlSGFzUGFnaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHJlc3VsdCBmb3IgY2xpZW50IHNpZGUgcGFnaW5hdGlvblxuICAgIHNldE5vblBhZ2VhYmxlRGF0YShuZXdWYWwpIHtcbiAgICAgICAgbGV0IGRhdGFTaXplLFxuICAgICAgICAgICAgbWF4UmVzdWx0cyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc3RhcnRJbmRleDtcbiAgICAgICAgZGF0YVNpemUgPSBfLmlzQXJyYXkobmV3VmFsKSA/IG5ld1ZhbC5sZW5ndGggOiAoXy5pc0VtcHR5KG5ld1ZhbCkgPyAwIDogMSk7XG4gICAgICAgIG1heFJlc3VsdHMgPSAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tYXhSZXN1bHRzKSB8fCBkYXRhU2l6ZTtcblxuICAgICAgICAvLyBGb3Igc3RhdGljIHZhcmlhYmxlLCBrZWVwIHRoZSBjdXJyZW50IHBhZ2UuIEZvciBvdGhlciB2YXJpYWJsZXMgd2l0aG91dCBwYWdpbmF0aW9uIHJlc2V0IHRoZSBwYWdlIHRvIDFcbiAgICAgICAgLy8gRml4IGZvciBbV01TLTIzMjYzXTogZ3JpZE9wdGlvbnMuaXNOZXh0UGFnZURhdGEgZmxhZyBpcyBmYWxzZSB3aGVuIGRhdGFzZXQgaXMgY2hhbmdlZCBmcm9tIHNjcmlwdCwgc28gc2V0dGluZyBjdXJyZW50IHBhZ2UgdG8gMVxuICAgICAgICBpZiAodGhpcy5kYXRhc291cmNlICYmICh0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUpIHx8ICh0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmICh0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkgJiYgKF8uZ2V0KHRoaXMucGFyZW50LCAnZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCcpID09PSB0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRBVEFTRVRfVVBEQVRFIHx8ICFfLmdldCh0aGlzLnBhcmVudCwgJ2dyaWRPcHRpb25zLmlzTmV4dFBhZ2VEYXRhJykpKSkpKSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2UgfHwgMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBhZ2luZ1ZhbHVlcyhkYXRhU2l6ZSwgbWF4UmVzdWx0cywgY3VycmVudFBhZ2UpO1xuICAgICAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uKCk7XG5cbiAgICAgICAgc3RhcnRJbmRleCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgIHRoaXMuc2V0UmVzdWx0KF8uaXNBcnJheShuZXdWYWwpID8gbmV3VmFsLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMpIDogbmV3VmFsKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIHNldCB0aGUgdmFsdWVzIG5lZWRlZCBmb3IgcGFnaW5hdGlvbiovXG4gICAgcHJpdmF0ZSBzZXRQYWdpbmdWYWx1ZXMobmV3VmFsKSB7XG4gICAgICAgIGxldCBkYXRhU2l6ZSxcbiAgICAgICAgICAgIG1heFJlc3VsdHMsXG4gICAgICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U7XG4gICAgICAgIGxldCB2YXJpYWJsZU9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAvLyBTdG9yZSB0aGUgZGF0YSBpbiBfX2Z1bGxEYXRhLiBUaGlzIGlzIHVzZWQgZm9yIGNsaWVudCBzaWRlIHNlYXJjaGluZyB3aXR2YWggb3V0IG1vZGlmeWluZyB0aGUgYWN0dWFsIGRhdGFzZXQuXG4gICAgICAgIHRoaXMuX19mdWxsRGF0YSA9IG5ld1ZhbDtcbiAgICAgICAgLypDaGVjayBmb3Igc2FuaXR5Ki9cbiAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzZXQpIHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2UgPSB0aGlzLmRhdGFzb3VyY2UgfHwge307XG4gICAgICAgICAgICB2YXJpYWJsZU9wdGlvbnMgPSBkYXRhU291cmNlLl9vcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgLypDaGVjayBmb3IgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBkYXRhIHNldCovXG4gICAgICAgICAgICBpZiAobmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlSGFzUGFnaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uID0gdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1BBR0lOR19PUFRJT05TKSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgXCJmaWx0ZXJGaWVsZHNcIiBhbmQgXCJzb3J0T3B0aW9uc1wiIGhhdmUgYmVlbiBzZXQsIHRoZW4gc2V0IHRoZW0gc28gdGhhdCB0aGUgZmlsdGVycyBjYW4gYmUgcmV0YWluZWQgd2hpbGUgZmV0Y2hpbmcgZGF0YSB1cG9uIHBhZ2UgbmF2aWdhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSB2YXJpYWJsZU9wdGlvbnMuZmlsdGVyRmllbGRzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2ljYWxPcCA9IHZhcmlhYmxlT3B0aW9ucy5sb2dpY2FsT3AgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSB2YXJpYWJsZU9wdGlvbnMub3JkZXJCeSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKF8uaXNBcnJheSh0aGlzLnBhZ2luYXRpb24uc29ydCkgPyBnZXRPcmRlckJ5RXhwcih0aGlzLnBhZ2luYXRpb24uc29ydCkgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTaXplID0gdGhpcy5wYWdpbmF0aW9uLnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIG1heFJlc3VsdHMgPSB0aGlzLnBhZ2luYXRpb24uc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbi5udW1iZXJPZkVsZW1lbnRzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnBhZ2luYXRpb24ubnVtYmVyKSkgeyAvLyBudW1iZXIgaXMgcGFnZSBudW1iZXIgcmVjZWl2ZWQgZnJvbSBiYWNrZW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbi5udW1iZXIgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2UgPSB0aGlzLmRuLmN1cnJlbnRQYWdlIHx8IDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyogU2VuZGluZyBwYWdlQ291bnQgdW5kZWZpbmVkIHRvIGNhbGN1bGF0ZSBpdCBhZ2FpbiBmb3IgcXVlcnkuKi9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0UGFnaW5nVmFsdWVzKGRhdGFTaXplLCBtYXhSZXN1bHRzLCBjdXJyZW50UGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0RhdGFTaXplKGRhdGFTaXplLCB0aGlzLnBhZ2luYXRpb24ubnVtYmVyT2ZFbGVtZW50cywgdGhpcy5wYWdpbmF0aW9uLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlc3VsdChuZXdWYWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIV8uaXNTdHJpbmcobmV3VmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5vblBhZ2VhYmxlRGF0YShuZXdWYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQobmV3VmFsKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0UGFnZU5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm5hdmlnYXRpb24gPT09ICdCYXNpYycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRBcmlhRm9yQmFzaWNOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobmV3VmFsICYmICFfLmlzU3RyaW5nKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE5vblBhZ2VhYmxlRGF0YShuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgY3VycmVudCBwYWdlIGlzIHRoZSBmaXJzdCBwYWdlKi9cbiAgICBpc0ZpcnN0UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSAxIHx8ICF0aGlzLmRuLmN1cnJlbnRQYWdlKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGxhc3QgcGFnZSovXG4gICAgaXNMYXN0UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2VDb3VudCk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgbGFzdCBwYWdlKi9cbiAgICBnb1RvTGFzdFBhZ2UoaXNSZWZyZXNoLCBldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTGFzdFBhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMucGFnZUNvdW50O1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZShldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUmVmcmVzaCkge1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZShldmVudCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgZmlyc3QgcGFnZSovXG4gICAgZ29Ub0ZpcnN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdFBhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIHRoZSBjdXJyZW50IHBhZ2UqL1xuICAgIGdvVG9QYWdlKGV2ZW50PywgY2FsbGJhY2s/KSB7XG4gICAgICAgIHRoaXMuZmlyc3RSb3cgPSAodGhpcy5kbi5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5tYXhSZXN1bHRzO1xuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmIChtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKSAhPT0gJ25vbmUnICYmICh0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnIHx8IHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS1saXN0JykpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Ll9zZWxlY3RlZEl0ZW1zRXhpc3QgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaXJzdFBhZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcy5wYXJlbnQsICdwYWdpbmF0aW9uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcy5pbmRleE9mKHRoaXMucGFyZW50Lm5hdmlnYXRpb24pIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMucGFyZW50LCB7cGFnaW5hdGlvbjogdGhpcy5kbi5jdXJyZW50UGFnZX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLWxpc3QnIHx8dGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdSZXRhaW4gU3RhdGUgaGFuZGxpbmcgb24gV2lkZ2V0ICcgKyB0aGlzLnBhcmVudC5uYW1lICsgJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBjdXJyZW50IHBhZ2luYXRpb24gdHlwZS4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2FsbCBnZXRQYWdlRGF0YSBhZnRlciBjaGVja2luZyBzdGF0ZSBjb25maWcgc28gdGhhdCBTdGF0aWMgVmFyaWFibGVzIGNhbiB1c2UgaXRcbiAgICAgICAgdGhpcy5nZXRQYWdlRGF0YShldmVudCwgY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUgZGF0YSBvZiB0aGUgcGFnZSBoYXMgYmVlbiBmZXRjaGVkLiovXG4gICAgb25QYWdlRGF0YVJlYWR5KGV2ZW50LCBkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaW52b2tlU2V0UmVjb3JkKGV2ZW50LCBkYXRhKTtcbiAgICAgICAgdHJpZ2dlckZuKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGdldCBkYXRhIGZvciB0aGUgY3VycmVudCBwYWdlKi9cbiAgICBnZXRQYWdlRGF0YShldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgbGV0IGRhdGEsXG4gICAgICAgICAgICBzdGFydEluZGV4O1xuXG4gICAgICAgIGlmICh0aGlzLmlzRGF0YVNvdXJjZUhhc1BhZ2luZygpKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHRhYmxlIGNvbXBvbmVudCwgaW4gY2FzZSBvZiBvbiBkZW1hbmQgYW5kIHNjcm9sbCBwYWdpbmF0aW9uXG4gICAgICAgICAgICAgKiBXaGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluIGRhdGEgaXRlbSB3aGljaCBpcyBub3QgaW4gY3VycmVudCBwYWdlXG4gICAgICAgICAgICAgKiBGZXRjaCB0aGUgaXRlbXMgb2YgdGhlIHBhZ2Ugd2hlcmUgdGhlIGNoYW5nZSBpcyBtYWRlXG4gICAgICAgICAgICAgKiAqL1xuICAgICAgICAgICAgbGV0IHBhZ2VJbmRleCA9IHRoaXMuZG4uY3VycmVudFBhZ2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkgJiYgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCAhPT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSB0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uTElTVF9SRUNPUkRTLCB7XG4gICAgICAgICAgICAgICAgJ3BhZ2UnOiBwYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgJ2ZpbHRlckZpZWxkcyc6IHRoaXMuZmlsdGVyRmllbGRzLFxuICAgICAgICAgICAgICAgICdvcmRlckJ5JzogdGhpcy5zb3J0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAnbG9naWNhbE9wJzogdGhpcy5sb2dpY2FsT3AsXG4gICAgICAgICAgICAgICAgJ21hdGNoTW9kZSc6ICdhbnl3aGVyZWlnbm9yZWNhc2UnXG4gICAgICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUGFnZURhdGFSZWFkeShldmVudCwgcmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiBlcnJvciBpcyB1bmRlZmluZWQsIGRvIG5vdCBzaG93IGFueSBtZXNzYWdlIGFzIHRoaXMgbWF5IGJlIGRpc2NhcmRlZCByZXF1ZXN0XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBFcnJvclxuICAgICAgICAgICAgICAgICAgICAvLyB3bVRvYXN0ZXIuc2hvdygnZXJyb3InLCAnRVJST1InLCAnVW5hYmxlIHRvIGdldCBkYXRhIG9mIHBhZ2UgLScgKyB0aGlzLmRuLmN1cnJlbnRQYWdlICsgJzonICsgZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0Tm90SW5DdXJyZW50UGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9ICh0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAodGhpcy5kbi5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5tYXhSZXN1bHRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YSA9IF8uaXNBcnJheSh0aGlzLl9fZnVsbERhdGEpID8gdGhpcy5fX2Z1bGxEYXRhLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMpIDogdGhpcy5fX2Z1bGxEYXRhO1xuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm9uUGFnZURhdGFSZWFkeShldmVudCwgZGF0YSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZWRpdCBhY3Rpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBwcmV2aW91cyBwYWdlIGRhdGEgb2YgdGhlIHRhYmxlXG4gICAgKi9cbiAgICBpc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSB0aGlzLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyAmJiBwYWdlSW5kZXggPT09IHRoaXMucGFyZW50LmN1cnJlbnRQYWdlICYmXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlICYmIHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2UgPCBwYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgaW52b2tlU2V0UmVjb3JkKGV2ZW50LCBkYXRhKSB7XG4gICAgICAgIC8vIFRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIgaWYgZXhpc3RzLlxuICAgICAgICBjb25zdCBwYWdlSW5mbyA9IHtcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmRuLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy5tYXhSZXN1bHRzLFxuICAgICAgICAgICAgdG90YWxFbGVtZW50czogdGhpcy5kYXRhU2l6ZSxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRoaXMucGFnZUNvdW50XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW52b2tlRXZlbnRDYWxsYmFjaygnc2V0cmVjb3JkJywgeyRldmVudDogZXZlbnQsICRkYXRhOiBkYXRhLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2UsIHBhZ2VJbmZvLCBkYXRhfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NldHJlY29yZCcsIHskZXZlbnQ6IGV2ZW50LCAkZGF0YTogZGF0YSwgJGluZGV4OiB0aGlzLmRuLmN1cnJlbnRQYWdlLCBwYWdlSW5mbywgZGF0YX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgcGFnZSBpbnB1dC5cbiAgICAgSW4gY2FzZSBvZiBpbnZhbGlkIGlucHV0LCBuYXZpZ2F0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcGFnZTsgYWxzbyByZXR1cm4gZmFsc2UuXG4gICAgIEluIGNhc2Ugb2YgdmFsaWQgaW5wdXQsIHJldHVybiB0cnVlLiovXG4gICAgdmFsaWRhdGVDdXJyZW50UGFnZShldmVudCwgY2FsbGJhY2s/KSB7XG4gICAgICAgIC8qSWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IHBhZ2UgbnVtYmVyIG9yIGludmFsaWQgdmFsdWUsIHRoZW4gaGlnaGxpZ2h0aW5nIHRoZSBmaWVsZCBzaG93aW5nIGVycm9yLiovXG4gICAgICAgIGlmICggZXZlbnQgJiYgKGlzTmFOKHRoaXMuZG4uY3VycmVudFBhZ2UpIHx8IHRoaXMuZG4uY3VycmVudFBhZ2UgPD0gMCB8fCAodGhpcy5wYWdlQ291bnQgJiYgKHRoaXMuZG4uY3VycmVudFBhZ2UgPiB0aGlzLnBhZ2VDb3VudCB8fCBfLmlzTnVsbCh0aGlzLmRuLmN1cnJlbnRQYWdlKSkpKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZG4uY3VycmVudFBhZ2UgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRuLmN1cnJlbnRQYWdlID4gdGhpcy5wYWdlQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDdXJyZW50UGFnZShldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlID0gJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2EnKTtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdLZXlFJykge1xuICAgICAgICAgICAgdGFyZ2V0RWxlLmFkZENsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0RWxlLnJlbW92ZUNsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHBhZ2VDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICB0aGlzLl9kZWJvdW5jZWRQYWdlQ2hhbmdlZChldmVudCk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgcmVzcGVjdGl2ZSBwYWdlcy4qL1xuICAgIG5hdmlnYXRlUGFnZShpbmRleCwgZXZlbnQsIGlzUmVmcmVzaCwgY2FsbGJhY2spIHtcbiAgICAgICAgLy8gd2hlbiBuYXZpZ2F0ZWQgdG8gbmV4dCBwYWdlIHR1cm4gb24gdGhlIGlzRGF0YUxvYWRpbmcgZmxhZyB0byBzaG93IHRoZSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMucGFyZW50LmlzRGF0YUxvYWRpbmcpICYmICF0aGlzLmlzRGlzYWJsZU5leHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmlzRGF0YUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBpbmZpbml0ZSBzY3JvbGwgY2FsbGluZyB0aGUgc2hvd0xvYWRpbmdJbmRpY2F0b3IgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgbG9hZGluZyBtZXNzYWdlIGltbWVkaWF0ZWx5IHdoZW4gbmF2aWdhdGVkIHRvIG5leHQgcGFnZVxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LmluZlNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnZhcmlhYmxlSW5mbGlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmNhbGxEYXRhR3JpZE1ldGhvZCgnc2hvd0xvYWRpbmdJbmRpY2F0b3InLCB0aGlzLnBhcmVudC5sb2FkaW5nZGF0YW1zZywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVzZXQgdGhlIGxhc3QgYWN0aW9uIHBlcmZvcm1lZCB0byBcInNjcm9sbFwiIGFuZCBpc0RhdGFzZXRVcGRhdGVkIHRvIGZhbHNlXG4gICAgICAgIGlmICh0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIHRoaXMucGFyZW50LmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRFRkFVTFQpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuc2V0SXNEYXRhc2V0VXBkYXRlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwYWdpbmF0aW9uY2hhbmdlJywgeyRldmVudDogdW5kZWZpbmVkLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2V9KTtcblxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBjdXJyZW50IHBhZ2UgdG8gYSB2YWxpZCBwYWdlIG51bWJlci5cbiAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9ICt0aGlzLmRuLmN1cnJlbnRQYWdlO1xuXG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ZpcnN0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9GaXJzdFBhZ2UoaXNSZWZyZXNoLCBldmVudCwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXYnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGZpcnN0IHBhZ2UuKi9cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbj8ubmV4dCAmJiAodGhpcy5pc0ZpcnN0UGFnZSgpIHx8ICF0aGlzLnZhbGlkYXRlQ3VycmVudFBhZ2UoZXZlbnQsIGNhbGxiYWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYWdpbmF0aW9uPy5uZXh0KSB7IC8vIFdNUy0xODg2NzogRm9yIHNlcnZlciBzaWRlIHBhZ2luYXRpb24sIHNraXBwaW5nIHRoZSByZWd1bGFyIGZsb3cgYW5kIGVuYWJsaW5nIGlzTmV4dCBmbGFnIGluIHBhZ2luYXRpb24gbWV0YWRhdGFcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLnBhZ2luYXRpb24uaXNOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qRGVjcmVtZW50IHRoZSBjdXJyZW50IHBhZ2UgYnkgMS4qL1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgLT0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGxhc3QgcGFnZS4qL1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uPy5uZXh0ICYmICh0aGlzLmlzTGFzdFBhZ2UoKSB8fCAhdGhpcy52YWxpZGF0ZUN1cnJlbnRQYWdlKGV2ZW50LCBjYWxsYmFjaykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucGFnaW5hdGlvbj8ubmV4dCkgeyAvLyBXTVMtMTg4Njc6IEZvciBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uLCBza2lwcGluZyB0aGUgcmVndWxhciBmbG93IGFuZCBlbmFibGluZyBpc1ByZXYgZmxhZyBpbiBwYWdpbmF0aW9uIG1ldGFkYXRhXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzTmV4dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKkluY3JlbWVudCB0aGUgY3VycmVudCBwYWdlIGJ5IDEuKi9cbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlICs9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qTmF2aWdhdGUgdG8gdGhlIGN1cnJlbnQgcGFnZS4qL1xuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgc2V0QmluZERhdGFTZXQoYmluZGRhdGFzZXQsIHBhcmVudCwgZGF0YVNvdXJjZSwgZGF0YXNldD8sIGJpbmRkYXRhc291cmNlPywgZGF0YXNldEJvdW5kRXhwcj8sIHN0YXRlaGFuZGxlcj8pIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBiaW5kZGF0YXNldC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgYmluZFBhZ2luZ09wdGlvbnM7XG4gICAgICAgIHRoaXMuc3RhdGVoYW5kbGVyID0gc3RhdGVoYW5kbGVyO1xuICAgICAgICBpZiAocGFydHNbMF0gPT09ICdWYXJpYWJsZXMnIHx8IHBhcnRzWzBdID09PSAnV2lkZ2V0cycpIHtcbiAgICAgICAgICAgIGJpbmRQYWdpbmdPcHRpb25zID0gYCR7cGFydHNbMF19LiR7cGFydHNbMV19LnBhZ2luYXRpb25gO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYmluZGRhdGFzb3VyY2UgJiYgZGF0YXNldCAmJiAhZGF0YXNldEJvdW5kRXhwcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gZGF0YXNldDtcbiAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlZEFwcGx5RGF0YXNldCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZGRhdGFzZXQgPSBiaW5kZGF0YXNldDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyB3YXRjaGluZyBmb3IgZGF0YXNldCBjaGFuZ2VzIGV2ZW4gd2hlbiBkYXRhc2V0IGlzIGJvdW5kIHRvIFwiaXRlbS5cIiAoaS5lLiBieSBjaGVja2luZyBmb3IgZGF0YXNldEJvdW5kRXhwcilcbiAgICAgICAgICAgIC8vIGl0ZW0gY29udGV4dCBpcyBwYXNzZWQgYXMgZGF0YVNvdXJjZSBoZXJlXG4gICAgICAgICAgICAvLyBbVG9kby1DU1BdOiBjaGVjayBpZiBzYW1lIGV4cHIgZm4gaXMgZ2VuZXJhdGVkIGJ5IHBhcmVudCB3aWRnZXQgKGxpc3QsIHRhYmxlKVxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgIGJpbmRkYXRhc2V0LFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXRCb3VuZEV4cHIgPyBkYXRhU291cmNlIDoge30sXG4gICAgICAgICAgICAgICAgICAgIG52ID0+ICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFzZXQgPSBudjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMTkyODU6IFNldHRpbmcgZGF0YXNldCBvbiBwcm94eSBvbmx5IHRvIGhhbmRsZSBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGNhbGwgZm9yIHVuZGVmaW5lZCBjYXNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0LmRhdGFzZXQgPSBudjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGEgd2F0Y2ggb24gcGFnaW5nIG9wdGlvbnMuIENhbGwgZGF0YXNldCBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlciBldmVuIGlmIHBhZ2luZyBvcHRpb25zIGNoYW5nZXMgdG8gcmVmbGVjdCBwYWdpbmF0aW9uIHN0YXRlXG4gICAgICAgICAgICBpZiAoIWJpbmRQYWdpbmdPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9bVG9kby1DU1BdOiBlaXRoZXIgZ2VuZXJhdGUgd2F0Y2ggZXhwciBmbiBvciByZWdpc3RlciBhbiBldmVudCBmcm9tIHRoZSBkYXRhc291cmNlIGl0c2VsZlxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgIGJpbmRQYWdpbmdPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhcHBseSBkYXRhc291cmNlIG9ubHkgd2hlbiBkYXRhc2V0IGlzIG5vdCBib3VuZCB0byBcIml0ZW0uRklFTERcIlxuICAgICAgICBpZiAoIWRhdGFzZXRCb3VuZEV4cHIpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGRhdGFzb3VyY2Ugb2YgcGFnaW5hdGlvbiBmcm9tIHRoZSBwYXJlbnQgd2lkZ2V0XG4gICAgc2V0RGF0YVNvdXJjZShkYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnYsIG92KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQub25EYXRhTmF2aWdhdG9yRGF0YVNldENoYW5nZSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLnBhcmVudC5vbkRhdGFOYXZpZ2F0b3JEYXRhU2V0Q2hhbmdlKG52KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IG52O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2V0IGxhc3QgYWN0aW9uIHBlcmZvcm1lZCB0byBcImRhdGFzZXRfdXBkYXRlXCIgd2hlbmV2ZXIgZGF0YXNldCBpcyBjaGFuZ2VkIGluIHRhYmxlIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5fdHJpZ2dlcmVkQnlVc2VyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBkYXRhc2V0IGlzIG5vdCBpbiBjdXJyZW50IHBhZ2UsIGJ1dCBpbiBwcmV2aW91cyBvbmVzIGRpcmVjdGx5IHNldCB0aGUgcmVzdWx0IHdpdGhvdXQgc2V0dGluZyBwYWdlIHZhbHVlc1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0Tm90SW5DdXJyZW50UGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5nVmFsdWVzKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hdmlnYXRpb24nKSB7XG4gICAgICAgICAgICBpZiAobnYgPT09ICdBZHZhbmNlZCcpIHsgLy8gU3VwcG9ydCBmb3Igb2xkZXIgcHJvamVjdHMgd2hlcmUgbmF2aWdhdGlvbiB0eXBlIHdhcyBhZHZhbmNlZCBpbnN0ZWFkIG9mIGNsYXNpY1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9ICdDbGFzc2ljJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2U2l6ZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZjb250cm9scyA9IG52O1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hdmlnYXRpb25zaXplJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOYXZTaXplKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbmF2aWdhdGlvbmFsaWduJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgdGV4dC0ke252fWAsIGB0ZXh0LSR7b3Z9YCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbWF4UmVzdWx0cycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5nVmFsdWVzKHRoaXMuZGF0YXNldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbkVsZW0gPSAgdGhpcy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBwYWdpbmF0aW9uRWxlbS5vbmNsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJcbjx1bCBjbGFzcz1cInBhZ2luYXRpb24gYWR2YW5jZWQge3tuYXZpZ2F0aW9uQ2xhc3N9fVwiICpuZ0lmPVwibmF2Y29udHJvbHMgPT09ICdDbGFzc2ljJ1wiPlxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVGaXJzdH1cIj5cbiAgICAgICAgPGEgW3RpdGxlXT1cImFwcExvY2FsZS5MQUJFTF9GSVJTVFwiIG5hbWU9XCJmaXJzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVGaXJzdFwiXG4gICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ2ZpcnN0JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGkgY2xhc3M9XCJ3aSB3aS1maXJzdC1wYWdlXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdvIHRvIGZpcnN0IHBhZ2Uge3sgaXNEaXNhYmxlRmlyc3QgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZVByZXZpb3VzfVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX1BSRVZJT1VTXCIgbmFtZT1cInByZXZcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZVByZXZpb3VzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ3ByZXYnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tbGVmdFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBwcmV2aW91cyBwYWdlIHt7IGlzRGlzYWJsZVByZXZpb3VzID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzPVwicGFnZWNvdW50IGRpc2FibGVkXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVDdXJyZW50XCIgWyhuZ01vZGVsKV09XCJkbi5jdXJyZW50UGFnZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1Nob3dpbmcgUGFnZSAnICsgZG4uY3VycmVudFBhZ2UgKyAnIG9mICcgKyBwYWdlQ291bnRcIlxuICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiAoY2hhbmdlKT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIvPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGkgY2xhc3M9XCJkaXNhYmxlZFwiPlxuICAgICAgICA8YSBbaGlkZGVuXT1cImlzRGlzYWJsZUNvdW50XCI+IC8ge3twYWdlQ291bnR9fTwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVOZXh0fVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX05FWFRcIiBuYW1lPVwibmV4dFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVOZXh0XCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlUGFnZSgnbmV4dCcsICRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktY2hldnJvbi1yaWdodFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBuZXh0IHBhZ2Uge3sgaXNEaXNhYmxlTmV4dCA/ICcgLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGkgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6aXNEaXNhYmxlTGFzdH1cIj5cbiAgICAgICAgPGEgW3RpdGxlXT1cImFwcExvY2FsZS5MQUJFTF9MQVNUXCIgbmFtZT1cImxhc3RcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlTGFzdFwiXG4gICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ2xhc3QnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWxhc3QtcGFnZVwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBsYXN0IHBhZ2Uge3sgaXNEaXNhYmxlTGFzdCA/ICcgLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgPC9saT5cbiAgICA8bGkgKm5nSWY9XCJzaG93cmVjb3JkY291bnRcIiBjbGFzcz1cInRvdGFsY291bnQgZGlzYWJsZWRcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj57e2FwcExvY2FsZS5MQUJFTF9UT1RBTF9SRUNPUkRTfX06IHt7ZGF0YVNpemV9fTwvYT5cbiAgICA8L2xpPlxuPC91bD5cbjx1bCBjbGFzcz1cInBhZ2VyIHt7bmF2aWdhdGlvbkNsYXNzfX1cIiAqbmdJZj1cIm5hdmNvbnRyb2xzID09PSAnUGFnZXInXCI+XG4gICAgPGxpIGNsYXNzPVwicHJldmlvdXNcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVQcmV2aW91c31cIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwibmF2aWdhdGVQYWdlKCdwcmV2JywgJGV2ZW50KVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlUHJldmlvdXNcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktY2hldnJvbi1sZWZ0XCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIHt7YXBwTG9jYWxlLkxBQkVMX1BSRVZJT1VTfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7IGlzRGlzYWJsZVByZXZpb3VzID8gJyAsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBjbGFzcz1cIm5leHRcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVOZXh0fVwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ25leHQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVOZXh0XCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tcmlnaHRcIj48L2k+PC9zcGFuPlxuICAgICAgICAgICAge3thcHBMb2NhbGUuTEFCRUxfTkVYVH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj57eyBpc0Rpc2FibGVOZXh0ID8gJyAsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuPC91bD5cblxuPHBhZ2luYXRpb24gY2xhc3M9XCJwYWdpbmF0aW9uIGJhc2ljXCIgW25nQ2xhc3NdPVwibmF2aWdhdGlvbkNsYXNzXCIgKm5nSWY9XCJuYXZjb250cm9scyA9PT0gJ0Jhc2ljJ1wiIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwibWF4UmVzdWx0c1wiIFt0b3RhbEl0ZW1zXT1cImRhdGFTaXplXCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImRuLmN1cnJlbnRQYWdlXCIgKHBhZ2VDaGFuZ2VkKT1cInBhZ2VDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2hvd2luZyBQYWdlICcgKyBkbi5jdXJyZW50UGFnZSArICcgb2YgJyArIHBhZ2VDb3VudCArICcgcGFnZXMnXCJcbiAgICAgICAgICAgIFtib3VuZGFyeUxpbmtzXT1cImJvdW5kYXJ5bGlua3NcIiBbbWF4U2l6ZV09XCJtYXhzaXplXCJcbiAgICAgICAgICAgIFtkaXJlY3Rpb25MaW5rc109XCJkaXJlY3Rpb25saW5rc1wiXG4gICAgICAgICAgICBmaXJzdFRleHQ9XCJGaXJ0c3RcIiBsYXN0VGV4dD1cIkxhc3RcIlxuICAgICAgICAgICAgW2N1c3RvbVByZXZpb3VzVGVtcGxhdGVdPVwicHJldlRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtjdXN0b21OZXh0VGVtcGxhdGVdPVwibmV4dFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtjdXN0b21QYWdlVGVtcGxhdGVdPVwicGFnZVRlbXBsYXRlXCI+PC9wYWdpbmF0aW9uPlxuXG48dWwgKm5nSWY9XCJuYXZjb250cm9scyA9PT0gJ0Jhc2ljJyAmJiBzaG93cmVjb3JkY291bnRcIiBjbGFzcz1cInBhZ2luYXRpb25cIj5cbiAgICA8bGkgY2xhc3M9XCJ0b3RhbGNvdW50IGRpc2FibGVkIGJhc2ljY291bnRcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj57e2FwcExvY2FsZS5MQUJFTF9UT1RBTF9SRUNPUkRTfX06IHt7ZGF0YVNpemV9fTwvYT5cbiAgICA8L2xpPlxuPC91bD5cblxuPG5nLXRlbXBsYXRlICNwYWdlVGVtcGxhdGUgbGV0LXBhZ2U+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgW2F0dHIuZGF0YS1pc2FjaXR2ZXBhZ2VdPVwicGFnZS5hY3RpdmVcIj57eydQYWdlICd9fTwvc3Bhbj5cbiAgICB7e3BhZ2UubnVtYmVyfX1cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cInBhZ2UuYWN0aXZlXCI+IHt7JywgU2hvd2luZyBwYWdlICcgKyBwYWdlLm51bWJlciArICcgb2YgJyArIHBhZ2VDb3VudH19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJldlRlbXBsYXRlIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgW2F0dHIuZGF0YS1pc2Rpc2FibGVkXT1cImRpc2FibGVkXCI+R28gdG8gUHJldmlvdXMgcGFnZSB7e2Rpc2FibGVkID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25leHRUZW1wbGF0ZSBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiPlxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiIFthdHRyLmRhdGEtaXNkaXNhYmxlZF09XCJkaXNhYmxlZFwiPkdvIHRvIE5leHQgcGFnZSB7e2Rpc2FibGVkID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
770
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaginationComponent, { className: "PaginationComponent", filePath: "pagination.component.ts", lineNumber: 41 }); })();
771
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9wYWdpbmF0aW9uL3NyYy9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL3BhZ2luYXRpb24vc3JjL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFpQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUNILFVBQVUsRUFDVixNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hLLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7OztJQ2dDbkUsQUFESiw4QkFBd0QsWUFDYTtJQUFBLFlBQStDO0lBQ3BILEFBRG9ILGlCQUFJLEVBQ25IOzs7SUFEZ0UsZUFBK0M7SUFBL0MsMEZBQStDOzs7O0lBM0NoSCxBQURKLEFBREosMEJBQXNGLFlBQ3RDLFdBR0c7SUFBeEMsK0tBQVMsb0JBQWEsT0FBTyxTQUFTLEtBQUM7SUFD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O1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsTUFBTSxjQUFjLEdBQUksSUFBSSxDQUFDLGFBQTRCLENBQUM7UUFDMUQsY0FBYyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUM7SUFDTixDQUFDO29GQXBqQlEsbUJBQW1CLDBEQXdFbUIsU0FBUywyQkFBeUIsa0JBQWtCO29FQXhFMUYsbUJBQW1CLCtKQUpqQjtnQkFDUCxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQzthQUMxQztZQ3VETCxBQUhBLEFBTEEsQUFOQSxBQVhBLEFBbkJBLEFBaERBLG9FQUFzRix1REFnRGhCLHNFQTRCdEIscURBRTBCLHdHQU10Qyx3R0FLZSx3R0FHQTs7WUE1RkUsb0RBQStCO1lBZ0Q3QyxjQUE2QjtZQUE3QixrREFBNkI7WUFtQkYsY0FBNkI7WUFBN0Isa0RBQTZCO1lBVzFGLGNBQWdEO1lBQWhELHlFQUFnRDs7O2lGRHZDeEMsbUJBQW1CO2NBUC9CLFNBQVM7MkJBQ0ksZ0JBQWdCLGFBRWY7b0JBQ1Asa0JBQWtCLHFCQUFxQjtpQkFDMUM7O3NCQTBFMkIsUUFBUTs7c0JBQUksTUFBTTt1QkFBQyxTQUFTOztzQkFBa0IsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBdEVwRyxhQUFhO2tCQUF0QixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNOztrRkFIRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdG9yLCBPdXRwdXQsIFNraXBTZWxmLCBBZnRlclZpZXdJbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgJGFwcERpZ2VzdCxcbiAgICAkd2F0Y2gsXG4gICAgQXBwQ29uc3RhbnRzLFxuICAgIERhdGFTb3VyY2UsXG4gICAgZGVib3VuY2UsXG4gICAgaXNEZWZpbmVkLFxuICAgIHN3aXRjaENsYXNzLFxuICAgIHRyaWdnZXJGblxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBERUJPVU5DRV9USU1FUywgZ2V0T3JkZXJCeUV4cHIsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciwgV2lkZ2V0UmVmLCB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlc30gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9wYWdpbmF0aW9uLnByb3BzJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBpc0FycmF5LCBpc0VtcHR5LCBpc051bGwsIGlzU3RyaW5nfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2FwcC1kYXRhbmF2aWdhdG9yIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLXBhZ2luYXRpb24nLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTfTtcblxuY29uc3Qgc2l6ZUNsYXNzZXMgPSB7XG4gICAgJ1BhZ2VyJzoge1xuICAgICAgICAnc21hbGwnOiAncGFnZXItc20nLFxuICAgICAgICAnbGFyZ2UnOiAncGFnZXItbGcnXG4gICAgfSxcbiAgICAnQmFzaWMnOiB7XG4gICAgICAgICdzbWFsbCc6ICdwYWdpbmF0aW9uLXNtJyxcbiAgICAgICAgJ2xhcmdlJzogJ3BhZ2luYXRpb24tbGcnXG4gICAgfSxcbiAgICAnQ2xhc3NpYyc6IHtcbiAgICAgICAgJ3NtYWxsJzogJ3BhZ2luYXRpb24tc20nLFxuICAgICAgICAnbGFyZ2UnOiAncGFnaW5hdGlvbi1sZydcbiAgICB9XG59O1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdbd21QYWdpbmF0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUGFnaW5hdGlvbkNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgQE91dHB1dCgpIHJlc3VsdEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBtYXhSZXN1bHRzRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBkYXRhc291cmNlO1xuICAgIG1heFJlc3VsdHM7XG4gICAgbmF2aWdhdGlvbnNpemU7XG4gICAgc2hvd3JlY29yZGNvdW50O1xuXG4gICAgbmF2Y29udHJvbHM7XG4gICAgbmF2aWdhdGlvbjtcblxuICAgIGJvdW5kYXJ5bGlua3M7XG4gICAgZGlyZWN0aW9ubGlua3M7XG5cbiAgICBuYXZpZ2F0aW9uQ2xhc3M7XG4gICAgZG4gPSB7XG4gICAgICAgIGN1cnJlbnRQYWdlOiAxXG4gICAgfTtcblxuICAgIHBhZ2VDb3VudCA9IDA7XG4gICAgaXNEaXNhYmxlTmV4dCA9IHRydWU7XG4gICAgaXNEaXNhYmxlUHJldmlvdXMgPSB0cnVlO1xuICAgIGlzRGlzYWJsZUZpcnN0ID0gdHJ1ZTtcbiAgICBpc0Rpc2FibGVMYXN0ID0gdHJ1ZTtcbiAgICBpc0Rpc2FibGVDdXJyZW50O1xuICAgIGRhdGFTaXplO1xuICAgIHByZXZzaG93cmVjb3JkY291bnQ7XG4gICAgaXNEaXNhYmxlQ291bnQ7XG4gICAgZmlyc3RSb3c7XG4gICAgcmVzdWx0O1xuICAgIF9fZnVsbERhdGE7XG4gICAgZGF0YXNldDtcbiAgICBvcHRpb25zO1xuICAgIHN0YXRlaGFuZGxlcjtcbiAgICBmaWx0ZXJGaWVsZHM7XG4gICAgc29ydE9wdGlvbnM7XG4gICAgYmluZGRhdGFzZXQ7XG4gICAgcGFnaW5hdGlvbjtcbiAgICBsb2dpY2FsT3A7XG5cbiAgICBwcml2YXRlIF9kZWJvdW5jZWRBcHBseURhdGFzZXQgPSBkZWJvdW5jZSgoKSA9PiB0aGlzLndpZGdldC5kYXRhc2V0ID0gdGhpcy5kYXRhc2V0LCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUpO1xuICAgIHByaXZhdGUgX2RlYm91bmNlZFBhZ2VDaGFuZ2VkID0gZGVib3VuY2UoZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IGV2ZW50ICYmIGV2ZW50LnBhZ2U7XG4gICAgICAgIC8vIERvIG5vdCBjYWxsIGdvVG9QYWdlIGlmIHBhZ2UgaGFzIG5vdCBjaGFuZ2VkXG4gICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gdGhpcy5kbi5jdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgY29uc3QgaW5zdCA9ICh0aGlzIGFzIGFueSkucGFyZW50IHx8IHRoaXM7XG4gICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2U7XG4gICAgICAgICAgICBpbnN0Lmludm9rZUV2ZW50Q2FsbGJhY2soJ3BhZ2luYXRpb25jaGFuZ2UnLCB7JGV2ZW50OiB1bmRlZmluZWQsICRpbmRleDogdGhpcy5kbi5jdXJyZW50UGFnZX0pO1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbiA9PT0gJ0Jhc2ljJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEFyaWFGb3JCYXNpY05hdmlnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIERFQk9VTkNFX1RJTUVTLlBBR0lOQVRJT05fREVCT1VOQ0VfVElNRSk7XG5cbiAgICBwcml2YXRlIF9zZXRBcmlhRm9yQmFzaWNOYXZpZ2F0aW9uKCkge1xuICAgICAgICBmb3JFYWNoKHRoaXMubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnamF2YXNjcmlwdDp2b2lkKDApOycpO1xuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlID0gaXRlbS5xdWVyeVNlbGVjdG9yKCdzcGFuJyk7XG4gICAgICAgICAgICBpZiAoY2hpbGROb2RlPy5kYXRhc2V0LmlzYWNpdHZlcGFnZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JywgJ3RydWUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKGNoaWxkTm9kZT8uZGF0YXNldC5pc2Rpc2FibGVkID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQFNraXBTZWxmKCkgQEluamVjdChXaWRnZXRSZWYpIHB1YmxpYyBwYXJlbnQsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIHNldFJlc3VsdChyZXN1bHQpIHtcbiAgICAgICAgLy8gVE9ETzogRW1pdCBldmVudCBvbmx5IGlmIHJlc3VsdCBpcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnJlc3VsdEVtaXR0ZXIuZW1pdCh0aGlzLnJlc3VsdCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIG5hdmlnYXRpb25DbGFzcyBiYXNlZCBvbiBuYXZpZ2F0aW9uIGFuZCBuYXZpZ2F0aW9uU2l6ZSBwcm9wc1xuICAgIHByaXZhdGUgdXBkYXRlTmF2U2l6ZSgpIHtcbiAgICAgICAgY29uc3Qgc2l6ZUNscyA9IHNpemVDbGFzc2VzW3RoaXMubmF2Y29udHJvbHNdO1xuICAgICAgICBpZiAoc2l6ZUNscyAmJiB0aGlzLm5hdmlnYXRpb25zaXplKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25DbGFzcyA9IHNpemVDbHNbdGhpcy5uYXZpZ2F0aW9uc2l6ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25DbGFzcyA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdG8gcmVzZXQgdGhlIHBhZ2luZyB2YWx1ZXMgdG8gZGVmYXVsdC5cbiAgICByZXNldFBhZ2VOYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLnBhZ2VDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB0aGlzLmRhdGFTaXplID0gMDtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgcGFnaW5nIHZhbHVlcy4qL1xuICAgIGNhbGN1bGF0ZVBhZ2luZ1ZhbHVlcygpIHtcbiAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAodGhpcy5kYXRhU2l6ZSA+IHRoaXMubWF4UmVzdWx0cykgPyAoTWF0aC5jZWlsKHRoaXMuZGF0YVNpemUgLyB0aGlzLm1heFJlc3VsdHMpKSA6ICh0aGlzLmRhdGFTaXplIDwgMCA/IDAgOiAxKTtcbiAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMuZG4uY3VycmVudFBhZ2UgfHwgMTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIHNldCBkZWZhdWx0IHZhbHVlcyB0byB0aGUgcGFnaW5nIHBhcmFtZXRlcnMqL1xuICAgIHNldERlZmF1bHRQYWdpbmdWYWx1ZXMoZGF0YVNpemUsIG1heFJlc3VsdHMsIGN1cnJlbnRQYWdlKSB7XG4gICAgICAgIC8qSWYgbmVpdGhlciAnZGF0YVNpemUnIG5vciAnbWF4UmVzdWx0cycgaXMgc2V0LCB0aGVuIHNldCBkZWZhdWx0IHZhbHVlcyB0byB0aGUgcGFnaW5nIHBhcmFtZXRlcnMuKi9cbiAgICAgICAgaWYgKCFkYXRhU2l6ZSAmJiAhbWF4UmVzdWx0cykge1xuICAgICAgICAgICAgdGhpcy5wYWdlQ291bnQgPSAxO1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICB0aGlzLm1heFJlc3VsdHMgPSBkYXRhU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNpemUgPSBkYXRhU2l6ZTtcbiAgICAgICAgfSBlbHNlIHsgLypFbHNlLCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZXMgYW5kIHJlY2FsY3VsYXRlIHBhZ2luZyBwYXJhbWV0ZXJzLiovXG4gICAgICAgICAgICB0aGlzLm1heFJlc3VsdHMgPSBtYXhSZXN1bHRzIHx8IHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgICAgIHRoaXMuZGF0YVNpemUgPSBpc0RlZmluZWQoZGF0YVNpemUpID8gZGF0YVNpemUgOiB0aGlzLmRhdGFTaXplO1xuICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IGN1cnJlbnRQYWdlIHx8IHRoaXMuZG4uY3VycmVudFBhZ2U7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBhZ2luZ1ZhbHVlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF4UmVzdWx0c0VtaXR0ZXIuZW1pdCh0aGlzLm1heFJlc3VsdHMpO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gY2hlY2sgdGhlIGRhdGFTaXplIGFuZCBtYW5pcHVsYXRlIHRoZSBuYXZpZ2F0b3IgYWNjb3JkaW5nbHkuKi9cbiAgICBjaGVja0RhdGFTaXplKGRhdGFTaXplLCBudW1iZXJPZkVsZW1lbnRzPywgc2l6ZT8pIHtcbiAgICAgICAgLypJZiB0aGUgZGF0YVNpemUgaXMgLTEgb3IgSW50ZWdlci5NQVhfVkFMVUUoIHdoaWNoIGlzIDIxNDc0ODM2NDcpLCB0aGVuIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVjb3JkcyBpcyBub3Qga25vd24uXG4gICAgICAgICAqIEhlbmNlLFxuICAgICAgICAgKiAxLiBIaWRlIHRoZSAnVG90YWwgUmVjb3JkIENvdW50Jy5cbiAgICAgICAgICogMi4gRGlzYWJsZSB0aGUgJ0dvVG9MYXN0UGFnZScgbGluayBhcyB0aGUgcGFnZSBudW1iZXIgb2YgdGhlIGxhc3QgcGFnZSBpcyBub3Qga25vd24uKi9cbiAgICAgICAgaWYgKGRhdGFTaXplID09PSAtMSB8fCBkYXRhU2l6ZSA9PT0gQXBwQ29uc3RhbnRzLklOVF9NQVhfVkFMVUUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldnNob3dyZWNvcmRjb3VudCA9IHRoaXMuc2hvd3JlY29yZGNvdW50O1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVMYXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlQ291bnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG93cmVjb3JkY291bnQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIElmIG51bWJlciBvZiByZWNvcmRzIGluIGN1cnJlbnQgcGFnZSBpcyBsZXNzIHRoYW4gdGhlIG1heCByZWNvcmRzIHNpemUsIHRoaXMgaXMgdGhlIGxhc3QgcGFnZS4gU28gZGlzYWJsZSBuZXh0IGJ1dHRvbi5cbiAgICAgICAgICAgIGlmIChudW1iZXJPZkVsZW1lbnRzIDwgc2l6ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTmV4dCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUNvdW50ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNob3dyZWNvcmRjb3VudCA9IHRoaXMucHJldnNob3dyZWNvcmRjb3VudCB8fCB0aGlzLnNob3dyZWNvcmRjb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gZGlzYWJsZSBuYXZpZ2F0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50IGFuZCB0b3RhbCBwYWdlcy4qL1xuICAgIGRpc2FibGVOYXZpZ2F0aW9uKCkge1xuICAgICAgICBjb25zdCBpc0N1cnJlbnRQYWdlRmlyc3QgPSAodGhpcy5kbi5jdXJyZW50UGFnZSA9PT0gMSksXG4gICAgICAgICAgICBpc0N1cnJlbnRQYWdlTGFzdCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2VDb3VudCk7XG4gICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uPy5uZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlzYWJsZUZpcnN0ID0gdGhpcy5pc0Rpc2FibGVQcmV2aW91cyA9IGlzQ3VycmVudFBhZ2VGaXJzdDtcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlTmV4dCA9IHRoaXMuaXNEaXNhYmxlTGFzdCA9IGlzQ3VycmVudFBhZ2VMYXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gV01TLTE4ODY3OiBJbiBjYXNlIG9mIHNlcnZlciBzaWRlIHBhZ2luYXRpb24sIGZvciBwYWdlciB0eXBlIHBhZ2luYXRpb24gZGVwZW5kIG9uIHByZXYgYW5kIG5leHQgZmxhZ3Mgd2hpY2ggYXJlIHNldCBieSBkZXZlbG9wZXJcbiAgICAgICAgICAgIHRoaXMuaXNEaXNhYmxlRmlyc3QgPSB0aGlzLmlzRGlzYWJsZVByZXZpb3VzID0gIXRoaXMucGFnaW5hdGlvbi5wcmV2O1xuICAgICAgICAgICAgdGhpcy5pc0Rpc2FibGVOZXh0ID0gdGhpcy5pc0Rpc2FibGVMYXN0ID0gIXRoaXMucGFnaW5hdGlvbi5uZXh0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlQ3VycmVudCA9IGlzQ3VycmVudFBhZ2VGaXJzdCAmJiBpc0N1cnJlbnRQYWdlTGFzdDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBjbGllbnQgc2lkZSBwYWdpbmF0aW9uLCB3aGVuIGxvYWQgbW9yZSByZWFjaGVzIGxhc3QgcGFnZSBoaWRlIHRoZSBvbi1kZW1hbmQgZ3JpZCBlbGVcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldCAmJiB0aGlzLmRhdGFzZXQubGVuZ3RoICYmIHRoaXMuaXNEaXNhYmxlTmV4dCAmJiB0aGlzLnBhcmVudC5vbkRlbWFuZExvYWQgJiYgdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJykge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2FsbERhdGFHcmlkTWV0aG9kKCdoaWRlTG9hZGluZ0luZGljYXRvcicsIHRoaXMuaXNEaXNhYmxlTmV4dCwgdGhpcy5wYXJlbnQuaW5mU2Nyb2xsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGJvdW5kIHRvIHRoZSBkYXRhLW5hdmlnYXRvciBoYXMgcGFnaW5nLiovXG4gICAgaXNEYXRhU291cmNlSGFzUGFnaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHJlc3VsdCBmb3IgY2xpZW50IHNpZGUgcGFnaW5hdGlvblxuICAgIHNldE5vblBhZ2VhYmxlRGF0YShuZXdWYWwpIHtcbiAgICAgICAgbGV0IGRhdGFTaXplLFxuICAgICAgICAgICAgbWF4UmVzdWx0cyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc3RhcnRJbmRleDtcbiAgICAgICAgZGF0YVNpemUgPSBpc0FycmF5KG5ld1ZhbCkgPyBuZXdWYWwubGVuZ3RoIDogKGlzRW1wdHkobmV3VmFsKSA/IDAgOiAxKTtcbiAgICAgICAgbWF4UmVzdWx0cyA9ICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heFJlc3VsdHMpIHx8IGRhdGFTaXplO1xuXG4gICAgICAgIC8vIEZvciBzdGF0aWMgdmFyaWFibGUsIGtlZXAgdGhlIGN1cnJlbnQgcGFnZS4gRm9yIG90aGVyIHZhcmlhYmxlcyB3aXRob3V0IHBhZ2luYXRpb24gcmVzZXQgdGhlIHBhZ2UgdG8gMVxuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjMyNjNdOiBncmlkT3B0aW9ucy5pc05leHRQYWdlRGF0YSBmbGFnIGlzIGZhbHNlIHdoZW4gZGF0YXNldCBpcyBjaGFuZ2VkIGZyb20gc2NyaXB0LCBzbyBzZXR0aW5nIGN1cnJlbnQgcGFnZSB0byAxXG4gICAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2UgJiYgKHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSkgfHwgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgJiYgKHRoaXMucGFyZW50LmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSAmJiAoZ2V0KHRoaXMucGFyZW50LCAnZ3JpZE9wdGlvbnMubGFzdEFjdGlvblBlcmZvcm1lZCcpID09PSB0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRBVEFTRVRfVVBEQVRFIHx8ICFnZXQodGhpcy5wYXJlbnQsICdncmlkT3B0aW9ucy5pc05leHRQYWdlRGF0YScpKSkpKSkge1xuICAgICAgICAgICAgY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudFBhZ2UgPSB0aGlzLmRuLmN1cnJlbnRQYWdlIHx8IDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldERlZmF1bHRQYWdpbmdWYWx1ZXMoZGF0YVNpemUsIG1heFJlc3VsdHMsIGN1cnJlbnRQYWdlKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlTmF2aWdhdGlvbigpO1xuXG4gICAgICAgIHN0YXJ0SW5kZXggPSAodGhpcy5kbi5jdXJyZW50UGFnZSAtIDEpICogdGhpcy5tYXhSZXN1bHRzO1xuICAgICAgICB0aGlzLnNldFJlc3VsdChpc0FycmF5KG5ld1ZhbCkgPyBuZXdWYWwuc2xpY2Uoc3RhcnRJbmRleCwgc3RhcnRJbmRleCArIHRoaXMubWF4UmVzdWx0cykgOiBuZXdWYWwpO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gc2V0IHRoZSB2YWx1ZXMgbmVlZGVkIGZvciBwYWdpbmF0aW9uKi9cbiAgICBwcml2YXRlIHNldFBhZ2luZ1ZhbHVlcyhuZXdWYWwpIHtcbiAgICAgICAgbGV0IGRhdGFTaXplLFxuICAgICAgICAgICAgbWF4UmVzdWx0cyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgZGF0YVNvdXJjZTtcbiAgICAgICAgbGV0IHZhcmlhYmxlT3B0aW9uczogYW55ID0ge307XG4gICAgICAgIC8vIFN0b3JlIHRoZSBkYXRhIGluIF9fZnVsbERhdGEuIFRoaXMgaXMgdXNlZCBmb3IgY2xpZW50IHNpZGUgc2VhcmNoaW5nIHdpdHZhaCBvdXQgbW9kaWZ5aW5nIHRoZSBhY3R1YWwgZGF0YXNldC5cbiAgICAgICAgdGhpcy5fX2Z1bGxEYXRhID0gbmV3VmFsO1xuICAgICAgICAvKkNoZWNrIGZvciBzYW5pdHkqL1xuICAgICAgICBpZiAodGhpcy5iaW5kZGF0YXNldCkge1xuICAgICAgICAgICAgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YXNvdXJjZSB8fCB7fTtcbiAgICAgICAgICAgIHZhcmlhYmxlT3B0aW9ucyA9IGRhdGFTb3VyY2UuX29wdGlvbnMgfHwge307XG4gICAgICAgICAgICAvKkNoZWNrIGZvciBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGRhdGEgc2V0Ki9cbiAgICAgICAgICAgIGlmIChuZXdWYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0RhdGFTb3VyY2VIYXNQYWdpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfUEFHSU5HX09QVElPTlMpIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBcImZpbHRlckZpZWxkc1wiIGFuZCBcInNvcnRPcHRpb25zXCIgaGF2ZSBiZWVuIHNldCwgdGhlbiBzZXQgdGhlbSBzbyB0aGF0IHRoZSBmaWx0ZXJzIGNhbiBiZSByZXRhaW5lZCB3aGlsZSBmZXRjaGluZyBkYXRhIHVwb24gcGFnZSBuYXZpZ2F0aW9uLlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckZpZWxkcyA9IHZhcmlhYmxlT3B0aW9ucy5maWx0ZXJGaWVsZHMgfHwge307XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naWNhbE9wID0gdmFyaWFibGVPcHRpb25zLmxvZ2ljYWxPcCB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3J0T3B0aW9ucyA9IHZhcmlhYmxlT3B0aW9ucy5vcmRlckJ5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoaXNBcnJheSh0aGlzLnBhZ2luYXRpb24uc29ydCkgPyBnZXRPcmRlckJ5RXhwcih0aGlzLnBhZ2luYXRpb24uc29ydCkgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTaXplID0gdGhpcy5wYWdpbmF0aW9uLnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIG1heFJlc3VsdHMgPSB0aGlzLnBhZ2luYXRpb24uc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbi5udW1iZXJPZkVsZW1lbnRzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh0aGlzLnBhZ2luYXRpb24ubnVtYmVyKSkgeyAvLyBudW1iZXIgaXMgcGFnZSBudW1iZXIgcmVjZWl2ZWQgZnJvbSBiYWNrZW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9IHRoaXMucGFnaW5hdGlvbi5udW1iZXIgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2UgPSB0aGlzLmRuLmN1cnJlbnRQYWdlIHx8IDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLyogU2VuZGluZyBwYWdlQ291bnQgdW5kZWZpbmVkIHRvIGNhbGN1bGF0ZSBpdCBhZ2FpbiBmb3IgcXVlcnkuKi9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0UGFnaW5nVmFsdWVzKGRhdGFTaXplLCBtYXhSZXN1bHRzLCBjdXJyZW50UGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0RhdGFTaXplKGRhdGFTaXplLCB0aGlzLnBhZ2luYXRpb24ubnVtYmVyT2ZFbGVtZW50cywgdGhpcy5wYWdpbmF0aW9uLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlc3VsdChuZXdWYWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaW5nKG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXROb25QYWdlYWJsZURhdGEobmV3VmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVzdWx0KG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFBhZ2VOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uID09PSAnQmFzaWMnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0QXJpYUZvckJhc2ljTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5ld1ZhbCAmJiAhaXNTdHJpbmcobmV3VmFsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9uUGFnZWFibGVEYXRhKG5ld1ZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGZpcnN0IHBhZ2UqL1xuICAgIGlzRmlyc3RQYWdlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZG4uY3VycmVudFBhZ2UgPT09IDEgfHwgIXRoaXMuZG4uY3VycmVudFBhZ2UpO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgcGFnZSBpcyB0aGUgbGFzdCBwYWdlKi9cbiAgICBpc0xhc3RQYWdlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZG4uY3VycmVudFBhZ2UgPT09IHRoaXMucGFnZUNvdW50KTtcbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIHRoZSBsYXN0IHBhZ2UqL1xuICAgIGdvVG9MYXN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIXRoaXMuaXNMYXN0UGFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlQ291bnQ7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSZWZyZXNoKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKkZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIHRoZSBmaXJzdCBwYWdlKi9cbiAgICBnb1RvRmlyc3RQYWdlKGlzUmVmcmVzaCwgZXZlbnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpcnN0UGFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1BhZ2UoZXZlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1JlZnJlc2gpIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1BhZ2UoZXZlbnQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gbmF2aWdhdGUgdG8gdGhlIGN1cnJlbnQgcGFnZSovXG4gICAgZ29Ub1BhZ2UoZXZlbnQ/LCBjYWxsYmFjaz8pIHtcbiAgICAgICAgdGhpcy5maXJzdFJvdyA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLnBhcmVudC5zdGF0ZVBlcnNpc3RlbmNlLmNvbXB1dGVNb2RlKHRoaXMuc3RhdGVoYW5kbGVyKTtcbiAgICAgICAgaWYgKG1vZGUgJiYgbW9kZS50b0xvd2VyQ2FzZSgpICE9PSAnbm9uZScgJiYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScgfHwgdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLWxpc3QnKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpcnN0UGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc3RhdGVQZXJzaXN0ZW5jZS5yZW1vdmVXaWRnZXRTdGF0ZSh0aGlzLnBhcmVudCwgJ3BhZ2luYXRpb24nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLmluZGV4T2YodGhpcy5wYXJlbnQubmF2aWdhdGlvbikgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcy5wYXJlbnQsIHtwYWdpbmF0aW9uOiB0aGlzLmRuLmN1cnJlbnRQYWdlfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tbGlzdCcgfHx0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1JldGFpbiBTdGF0ZSBoYW5kbGluZyBvbiBXaWRnZXQgJyArIHRoaXMucGFyZW50Lm5hbWUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGN1cnJlbnQgcGFnaW5hdGlvbiB0eXBlLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjYWxsIGdldFBhZ2VEYXRhIGFmdGVyIGNoZWNraW5nIHN0YXRlIGNvbmZpZyBzbyB0aGF0IFN0YXRpYyBWYXJpYWJsZXMgY2FuIHVzZSBpdFxuICAgICAgICB0aGlzLmdldFBhZ2VEYXRhKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZSBkYXRhIG9mIHRoZSBwYWdlIGhhcyBiZWVuIGZldGNoZWQuKi9cbiAgICBvblBhZ2VEYXRhUmVhZHkoZXZlbnQsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pbnZva2VTZXRSZWNvcmQoZXZlbnQsIGRhdGEpO1xuICAgICAgICB0cmlnZ2VyRm4oY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qRnVuY3Rpb24gdG8gZ2V0IGRhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UqL1xuICAgIGdldFBhZ2VEYXRhKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICBsZXQgZGF0YSxcbiAgICAgICAgICAgIHN0YXJ0SW5kZXg7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlSGFzUGFnaW5nKCkpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSW4gdGFibGUgY29tcG9uZW50LCBpbiBjYXNlIG9mIG9uIGRlbWFuZCBhbmQgc2Nyb2xsIHBhZ2luYXRpb25cbiAgICAgICAgICAgICAqIFdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gZGF0YSBpdGVtIHdoaWNoIGlzIG5vdCBpbiBjdXJyZW50IHBhZ2VcbiAgICAgICAgICAgICAqIEZldGNoIHRoZSBpdGVtcyBvZiB0aGUgcGFnZSB3aGVyZSB0aGUgY2hhbmdlIGlzIG1hZGVcbiAgICAgICAgICAgICAqICovXG4gICAgICAgICAgICBsZXQgcGFnZUluZGV4ID0gdGhpcy5kbi5jdXJyZW50UGFnZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE5vdEluQ3VycmVudFBhZ2UoKSAmJiB0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5sYXN0QWN0aW9uUGVyZm9ybWVkICE9PSAnZGVsZXRlJykge1xuICAgICAgICAgICAgICAgIHBhZ2VJbmRleCA9IHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5MSVNUX1JFQ09SRFMsIHtcbiAgICAgICAgICAgICAgICAncGFnZSc6IHBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgICAnZmlsdGVyRmllbGRzJzogdGhpcy5maWx0ZXJGaWVsZHMsXG4gICAgICAgICAgICAgICAgJ29yZGVyQnknOiB0aGlzLnNvcnRPcHRpb25zLFxuICAgICAgICAgICAgICAgICdsb2dpY2FsT3AnOiB0aGlzLmxvZ2ljYWxPcCxcbiAgICAgICAgICAgICAgICAnbWF0Y2hNb2RlJzogJ2FueXdoZXJlaWdub3JlY2FzZSdcbiAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25QYWdlRGF0YVJlYWR5KGV2ZW50LCByZXNwb25zZSAmJiByZXNwb25zZS5kYXRhLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIC8vIElmIGVycm9yIGlzIHVuZGVmaW5lZCwgZG8gbm90IHNob3cgYW55IG1lc3NhZ2UgYXMgdGhpcyBtYXkgYmUgZGlzY2FyZGVkIHJlcXVlc3RcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSGFuZGxlIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIC8vIHdtVG9hc3Rlci5zaG93KCdlcnJvcicsICdFUlJPUicsICdVbmFibGUgdG8gZ2V0IGRhdGEgb2YgcGFnZSAtJyArIHRoaXMuZG4uY3VycmVudFBhZ2UgKyAnOicgKyBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkpIHtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gKHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2UgLSAxKSAqIHRoaXMubWF4UmVzdWx0cztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9ICh0aGlzLmRuLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLm1heFJlc3VsdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhID0gaXNBcnJheSh0aGlzLl9fZnVsbERhdGEpID8gdGhpcy5fX2Z1bGxEYXRhLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyB0aGlzLm1heFJlc3VsdHMpIDogdGhpcy5fX2Z1bGxEYXRhO1xuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm9uUGFnZURhdGFSZWFkeShldmVudCwgZGF0YSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZWRpdCBhY3Rpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBwcmV2aW91cyBwYWdlIGRhdGEgb2YgdGhlIHRhYmxlXG4gICAgKi9cbiAgICBpc0VkaXROb3RJbkN1cnJlbnRQYWdlKCkge1xuICAgICAgICBjb25zdCBwYWdlSW5kZXggPSB0aGlzLmRuLmN1cnJlbnRQYWdlO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQud2lkZ2V0VHlwZSA9PT0gJ3dtLXRhYmxlJyAmJiBwYWdlSW5kZXggPT09IHRoaXMucGFyZW50LmN1cnJlbnRQYWdlICYmXG4gICAgICAgICAgICB0aGlzLnBhcmVudC5hY3Rpb25Sb3dQYWdlICYmIHRoaXMucGFyZW50LmFjdGlvblJvd1BhZ2UgPCBwYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgaW52b2tlU2V0UmVjb3JkKGV2ZW50LCBkYXRhKSB7XG4gICAgICAgIC8vIFRyaWdnZXIgdGhlIGV2ZW50IGhhbmRsZXIgaWYgZXhpc3RzLlxuICAgICAgICBjb25zdCBwYWdlSW5mbyA9IHtcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmRuLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgc2l6ZTogdGhpcy5tYXhSZXN1bHRzLFxuICAgICAgICAgICAgdG90YWxFbGVtZW50czogdGhpcy5kYXRhU2l6ZSxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHRoaXMucGFnZUNvdW50XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW52b2tlRXZlbnRDYWxsYmFjaygnc2V0cmVjb3JkJywgeyRldmVudDogZXZlbnQsICRkYXRhOiBkYXRhLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2UsIHBhZ2VJbmZvLCBkYXRhfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NldHJlY29yZCcsIHskZXZlbnQ6IGV2ZW50LCAkZGF0YTogZGF0YSwgJGluZGV4OiB0aGlzLmRuLmN1cnJlbnRQYWdlLCBwYWdlSW5mbywgZGF0YX0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgcGFnZSBpbnB1dC5cbiAgICAgSW4gY2FzZSBvZiBpbnZhbGlkIGlucHV0LCBuYXZpZ2F0ZSB0byB0aGUgYXBwcm9wcmlhdGUgcGFnZTsgYWxzbyByZXR1cm4gZmFsc2UuXG4gICAgIEluIGNhc2Ugb2YgdmFsaWQgaW5wdXQsIHJldHVybiB0cnVlLiovXG4gICAgdmFsaWRhdGVDdXJyZW50UGFnZShldmVudCwgY2FsbGJhY2s/KSB7XG4gICAgICAgIC8qSWYgdGhlIHZhbHVlIGVudGVyZWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXN0IHBhZ2UgbnVtYmVyIG9yIGludmFsaWQgdmFsdWUsIHRoZW4gaGlnaGxpZ2h0aW5nIHRoZSBmaWVsZCBzaG93aW5nIGVycm9yLiovXG4gICAgICAgIGlmIChldmVudCAmJiAoaXNOYU4odGhpcy5kbi5jdXJyZW50UGFnZSkgfHwgdGhpcy5kbi5jdXJyZW50UGFnZSA8PSAwIHx8ICh0aGlzLnBhZ2VDb3VudCAmJiAodGhpcy5kbi5jdXJyZW50UGFnZSA+IHRoaXMucGFnZUNvdW50IHx8IGlzTnVsbCh0aGlzLmRuLmN1cnJlbnRQYWdlKSkpKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZG4uY3VycmVudFBhZ2UgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRuLmN1cnJlbnRQYWdlID4gdGhpcy5wYWdlQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlID0gdGhpcy5wYWdlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZShldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDdXJyZW50UGFnZShldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlID0gJChldmVudC50YXJnZXQpLmNsb3Nlc3QoJ2EnKTtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdLZXlFJykge1xuICAgICAgICAgICAgdGFyZ2V0RWxlLmFkZENsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0RWxlLnJlbW92ZUNsYXNzKCduZy1pbnZhbGlkJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHBhZ2VDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICB0aGlzLl9kZWJvdW5jZWRQYWdlQ2hhbmdlZChldmVudCk7XG4gICAgfVxuXG4gICAgLypGdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byB0aGUgcmVzcGVjdGl2ZSBwYWdlcy4qL1xuICAgIG5hdmlnYXRlUGFnZShpbmRleCwgZXZlbnQsIGlzUmVmcmVzaCwgY2FsbGJhY2spIHtcbiAgICAgICAgLy8gd2hlbiBuYXZpZ2F0ZWQgdG8gbmV4dCBwYWdlIHR1cm4gb24gdGhlIGlzRGF0YUxvYWRpbmcgZmxhZyB0byBzaG93IHRoZSBsb2FkaW5nIGluZGljYXRvclxuICAgICAgICBpZiAoaXNEZWZpbmVkKHRoaXMucGFyZW50LmlzRGF0YUxvYWRpbmcpICYmICF0aGlzLmlzRGlzYWJsZU5leHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmlzRGF0YUxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBpbmZpbml0ZSBzY3JvbGwgY2FsbGluZyB0aGUgc2hvd0xvYWRpbmdJbmRpY2F0b3IgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgbG9hZGluZyBtZXNzYWdlIGltbWVkaWF0ZWx5IHdoZW4gbmF2aWdhdGVkIHRvIG5leHQgcGFnZVxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LmluZlNjcm9sbCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnZhcmlhYmxlSW5mbGlnaHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmNhbGxEYXRhR3JpZE1ldGhvZCgnc2hvd0xvYWRpbmdJbmRpY2F0b3InLCB0aGlzLnBhcmVudC5sb2FkaW5nZGF0YW1zZywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVzZXQgdGhlIGxhc3QgYWN0aW9uIHBlcmZvcm1lZCB0byBcInNjcm9sbFwiIGFuZCBpc0RhdGFzZXRVcGRhdGVkIHRvIGZhbHNlXG4gICAgICAgIGlmICh0aGlzLnBhcmVudC53aWRnZXRUeXBlID09PSAnd20tdGFibGUnICYmIHRoaXMucGFyZW50LmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuc2V0TGFzdEFjdGlvblBlcmZvcm1lZCh0aGlzLnBhcmVudC5ncmlkT3B0aW9ucy5BQ1RJT05TLkRFRkFVTFQpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ3JpZE9wdGlvbnMuc2V0SXNEYXRhc2V0VXBkYXRlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwYWdpbmF0aW9uY2hhbmdlJywgeyRldmVudDogdW5kZWZpbmVkLCAkaW5kZXg6IHRoaXMuZG4uY3VycmVudFBhZ2V9KTtcblxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBjdXJyZW50IHBhZ2UgdG8gYSB2YWxpZCBwYWdlIG51bWJlci5cbiAgICAgICAgdGhpcy5kbi5jdXJyZW50UGFnZSA9ICt0aGlzLmRuLmN1cnJlbnRQYWdlO1xuXG4gICAgICAgIHN3aXRjaCAoaW5kZXgpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ZpcnN0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9GaXJzdFBhZ2UoaXNSZWZyZXNoLCBldmVudCwgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgJ3ByZXYnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGZpcnN0IHBhZ2UuKi9cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFnaW5hdGlvbj8ubmV4dCAmJiAodGhpcy5pc0ZpcnN0UGFnZSgpIHx8ICF0aGlzLnZhbGlkYXRlQ3VycmVudFBhZ2UoZXZlbnQsIGNhbGxiYWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wYWdpbmF0aW9uPy5uZXh0KSB7IC8vIFdNUy0xODg2NzogRm9yIHNlcnZlciBzaWRlIHBhZ2luYXRpb24sIHNraXBwaW5nIHRoZSByZWd1bGFyIGZsb3cgYW5kIGVuYWJsaW5nIGlzTmV4dCBmbGFnIGluIHBhZ2luYXRpb24gbWV0YWRhdGFcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhc291cmNlLnBhZ2luYXRpb24uaXNOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8qRGVjcmVtZW50IHRoZSBjdXJyZW50IHBhZ2UgYnkgMS4qL1xuICAgICAgICAgICAgICAgIHRoaXMuZG4uY3VycmVudFBhZ2UgLT0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIC8qUmV0dXJuIGlmIGFscmVhZHkgb24gdGhlIGxhc3QgcGFnZS4qL1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYWdpbmF0aW9uPy5uZXh0ICYmICh0aGlzLmlzTGFzdFBhZ2UoKSB8fCAhdGhpcy52YWxpZGF0ZUN1cnJlbnRQYWdlKGV2ZW50LCBjYWxsYmFjaykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucGFnaW5hdGlvbj8ubmV4dCkgeyAvLyBXTVMtMTg4Njc6IEZvciBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uLCBza2lwcGluZyB0aGUgcmVndWxhciBmbG93IGFuZCBlbmFibGluZyBpc1ByZXYgZmxhZyBpbiBwYWdpbmF0aW9uIG1ldGFkYXRhXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzTmV4dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5wYWdpbmF0aW9uLmlzUHJldiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKkluY3JlbWVudCB0aGUgY3VycmVudCBwYWdlIGJ5IDEuKi9cbiAgICAgICAgICAgICAgICB0aGlzLmRuLmN1cnJlbnRQYWdlICs9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0UGFnZShpc1JlZnJlc2gsIGV2ZW50LCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qTmF2aWdhdGUgdG8gdGhlIGN1cnJlbnQgcGFnZS4qL1xuICAgICAgICB0aGlzLmdvVG9QYWdlKGV2ZW50LCBjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgc2V0QmluZERhdGFTZXQoYmluZGRhdGFzZXQsIHBhcmVudCwgZGF0YVNvdXJjZSwgZGF0YXNldD8sIGJpbmRkYXRhc291cmNlPywgZGF0YXNldEJvdW5kRXhwcj8sIHN0YXRlaGFuZGxlcj8pIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBiaW5kZGF0YXNldC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgYmluZFBhZ2luZ09wdGlvbnM7XG4gICAgICAgIHRoaXMuc3RhdGVoYW5kbGVyID0gc3RhdGVoYW5kbGVyO1xuICAgICAgICBpZiAocGFydHNbMF0gPT09ICdWYXJpYWJsZXMnIHx8IHBhcnRzWzBdID09PSAnV2lkZ2V0cycpIHtcbiAgICAgICAgICAgIGJpbmRQYWdpbmdPcHRpb25zID0gYCR7cGFydHNbMF19LiR7cGFydHNbMV19LnBhZ2luYXRpb25gO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYmluZGRhdGFzb3VyY2UgJiYgZGF0YXNldCAmJiAhZGF0YXNldEJvdW5kRXhwcikge1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0ID0gZGF0YXNldDtcbiAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlZEFwcGx5RGF0YXNldCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZGRhdGFzZXQgPSBiaW5kZGF0YXNldDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyB3YXRjaGluZyBmb3IgZGF0YXNldCBjaGFuZ2VzIGV2ZW4gd2hlbiBkYXRhc2V0IGlzIGJvdW5kIHRvIFwiaXRlbS5cIiAoaS5lLiBieSBjaGVja2luZyBmb3IgZGF0YXNldEJvdW5kRXhwcilcbiAgICAgICAgICAgIC8vIGl0ZW0gY29udGV4dCBpcyBwYXNzZWQgYXMgZGF0YVNvdXJjZSBoZXJlXG4gICAgICAgICAgICAvLyBbVG9kby1DU1BdOiBjaGVjayBpZiBzYW1lIGV4cHIgZm4gaXMgZ2VuZXJhdGVkIGJ5IHBhcmVudCB3aWRnZXQgKGxpc3QsIHRhYmxlKVxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgIGJpbmRkYXRhc2V0LFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXRCb3VuZEV4cHIgPyBkYXRhU291cmNlIDoge30sXG4gICAgICAgICAgICAgICAgICAgIG52ID0+ICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobnYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFzZXQgPSBudjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMTkyODU6IFNldHRpbmcgZGF0YXNldCBvbiBwcm94eSBvbmx5IHRvIGhhbmRsZSBwcm9wZXJ0eWNoYW5nZSBoYW5kbGVyIGNhbGwgZm9yIHVuZGVmaW5lZCBjYXNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0LmRhdGFzZXQgPSBudjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGEgd2F0Y2ggb24gcGFnaW5nIG9wdGlvbnMuIENhbGwgZGF0YXNldCBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlciBldmVuIGlmIHBhZ2luZyBvcHRpb25zIGNoYW5nZXMgdG8gcmVmbGVjdCBwYWdpbmF0aW9uIHN0YXRlXG4gICAgICAgICAgICBpZiAoIWJpbmRQYWdpbmdPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9bVG9kby1DU1BdOiBlaXRoZXIgZ2VuZXJhdGUgd2F0Y2ggZXhwciBmbiBvciByZWdpc3RlciBhbiBldmVudCBmcm9tIHRoZSBkYXRhc291cmNlIGl0c2VsZlxuICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgICAgIGJpbmRQYWdpbmdPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLl9kZWJvdW5jZWRBcHBseURhdGFzZXQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhcHBseSBkYXRhc291cmNlIG9ubHkgd2hlbiBkYXRhc2V0IGlzIG5vdCBib3VuZCB0byBcIml0ZW0uRklFTERcIlxuICAgICAgICBpZiAoIWRhdGFzZXRCb3VuZEV4cHIpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGRhdGFzb3VyY2Ugb2YgcGFnaW5hdGlvbiBmcm9tIHRoZSBwYXJlbnQgd2lkZ2V0XG4gICAgc2V0RGF0YVNvdXJjZShkYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnYsIG92KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQub25EYXRhTmF2aWdhdG9yRGF0YVNldENoYW5nZSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLnBhcmVudC5vbkRhdGFOYXZpZ2F0b3JEYXRhU2V0Q2hhbmdlKG52KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IG52O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2V0IGxhc3QgYWN0aW9uIHBlcmZvcm1lZCB0byBcImRhdGFzZXRfdXBkYXRlXCIgd2hlbmV2ZXIgZGF0YXNldCBpcyBjaGFuZ2VkIGluIHRhYmxlIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LndpZGdldFR5cGUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5fdHJpZ2dlcmVkQnlVc2VyID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBkYXRhc2V0IGlzIG5vdCBpbiBjdXJyZW50IHBhZ2UsIGJ1dCBpbiBwcmV2aW91cyBvbmVzIGRpcmVjdGx5IHNldCB0aGUgcmVzdWx0IHdpdGhvdXQgc2V0dGluZyBwYWdlIHZhbHVlc1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNFZGl0Tm90SW5DdXJyZW50UGFnZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5nVmFsdWVzKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hdmlnYXRpb24nKSB7XG4gICAgICAgICAgICBpZiAobnYgPT09ICdBZHZhbmNlZCcpIHsgLy8gU3VwcG9ydCBmb3Igb2xkZXIgcHJvamVjdHMgd2hlcmUgbmF2aWdhdGlvbiB0eXBlIHdhcyBhZHZhbmNlZCBpbnN0ZWFkIG9mIGNsYXNpY1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9ICdDbGFzc2ljJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2U2l6ZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZjb250cm9scyA9IG52O1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hdmlnYXRpb25zaXplJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOYXZTaXplKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbmF2aWdhdGlvbmFsaWduJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgdGV4dC0ke252fWAsIGB0ZXh0LSR7b3Z9YCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbWF4UmVzdWx0cycpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnaW5nVmFsdWVzKHRoaXMuZGF0YXNldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbkVsZW0gPSAgdGhpcy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBwYWdpbmF0aW9uRWxlbS5vbmNsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCJcbjx1bCBjbGFzcz1cInBhZ2luYXRpb24gYWR2YW5jZWQge3tuYXZpZ2F0aW9uQ2xhc3N9fVwiICpuZ0lmPVwibmF2Y29udHJvbHMgPT09ICdDbGFzc2ljJ1wiPlxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVGaXJzdH1cIj5cbiAgICAgICAgPGEgW3RpdGxlXT1cImFwcExvY2FsZS5MQUJFTF9GSVJTVFwiIG5hbWU9XCJmaXJzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVGaXJzdFwiXG4gICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ2ZpcnN0JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGkgY2xhc3M9XCJ3aSB3aS1maXJzdC1wYWdlXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdvIHRvIGZpcnN0IHBhZ2Uge3sgaXNEaXNhYmxlRmlyc3QgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZVByZXZpb3VzfVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX1BSRVZJT1VTXCIgbmFtZT1cInByZXZcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZVByZXZpb3VzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ3ByZXYnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj48aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tbGVmdFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBwcmV2aW91cyBwYWdlIHt7IGlzRGlzYWJsZVByZXZpb3VzID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzPVwicGFnZWNvdW50IGRpc2FibGVkXCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+XG4gICAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09XCJkbi5jdXJyZW50UGFnZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1Nob3dpbmcgUGFnZSAnICsgZG4uY3VycmVudFBhZ2UgKyAnIG9mICcgKyBwYWdlQ291bnRcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIChjaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIi8+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBjbGFzcz1cImRpc2FibGVkXCI+XG4gICAgICAgIDxhIFtoaWRkZW5dPVwiaXNEaXNhYmxlQ291bnRcIj4gLyB7e3BhZ2VDb3VudH19PC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZU5leHR9XCI+XG4gICAgICAgIDxhIFt0aXRsZV09XCJhcHBMb2NhbGUuTEFCRUxfTkVYVFwiIG5hbWU9XCJuZXh0XCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZU5leHRcIlxuICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVQYWdlKCduZXh0JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGkgY2xhc3M9XCJ3aSB3aS1jaGV2cm9uLXJpZ2h0XCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdvIHRvIG5leHQgcGFnZSB7eyBpc0Rpc2FibGVOZXh0ID8gJyAsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzppc0Rpc2FibGVMYXN0fVwiPlxuICAgICAgICA8YSBbdGl0bGVdPVwiYXBwTG9jYWxlLkxBQkVMX0xBU1RcIiBuYW1lPVwibGFzdFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVMYXN0XCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlUGFnZSgnbGFzdCcsICRldmVudClcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktbGFzdC1wYWdlXCI+PC9pPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdvIHRvIGxhc3QgcGFnZSB7eyBpc0Rpc2FibGVMYXN0ID8gJyAsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuICAgIDxsaSAqbmdJZj1cInNob3dyZWNvcmRjb3VudFwiIGNsYXNzPVwidG90YWxjb3VudCBkaXNhYmxlZFwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPnt7YXBwTG9jYWxlLkxBQkVMX1RPVEFMX1JFQ09SRFN9fToge3tkYXRhU2l6ZX19PC9hPlxuICAgIDwvbGk+XG48L3VsPlxuPHVsIGNsYXNzPVwicGFnZXIge3tuYXZpZ2F0aW9uQ2xhc3N9fVwiICpuZ0lmPVwibmF2Y29udHJvbHMgPT09ICdQYWdlcidcIj5cbiAgICA8bGkgY2xhc3M9XCJwcmV2aW91c1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZVByZXZpb3VzfVwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJuYXZpZ2F0ZVBhZ2UoJ3ByZXYnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVQcmV2aW91c1wiPlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PGkgY2xhc3M9XCJ3aSB3aS1jaGV2cm9uLWxlZnRcIj48L2k+PC9zcGFuPlxuICAgICAgICAgICAge3thcHBMb2NhbGUuTEFCRUxfUFJFVklPVVN9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgaXNEaXNhYmxlUHJldmlvdXMgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzPVwibmV4dFwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOmlzRGlzYWJsZU5leHR9XCI+XG4gICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cIm5hdmlnYXRlUGFnZSgnbmV4dCcsICRldmVudClcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZU5leHRcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjxpIGNsYXNzPVwid2kgd2ktY2hldnJvbi1yaWdodFwiPjwvaT48L3NwYW4+XG4gICAgICAgICAgICB7e2FwcExvY2FsZS5MQUJFTF9ORVhUfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPnt7IGlzRGlzYWJsZU5leHQgPyAnICwgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG48L3VsPlxuXG48cGFnaW5hdGlvbiBjbGFzcz1cInBhZ2luYXRpb24gYmFzaWNcIiBbbmdDbGFzc109XCJuYXZpZ2F0aW9uQ2xhc3NcIiAqbmdJZj1cIm5hdmNvbnRyb2xzID09PSAnQmFzaWMnXCIgcm9sZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCJtYXhSZXN1bHRzXCIgW3RvdGFsSXRlbXNdPVwiZGF0YVNpemVcIlxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2VkKT1cInBhZ2VDaGFuZ2VkKCRldmVudClcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6dHJ1ZX1cIiBbbmdNb2RlbF09XCJkbi5jdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTaG93aW5nIFBhZ2UgJyArIGRuLmN1cnJlbnRQYWdlICsgJyBvZiAnICsgcGFnZUNvdW50ICsgJyBwYWdlcydcIlxuICAgICAgICAgICAgW2JvdW5kYXJ5TGlua3NdPVwiYm91bmRhcnlsaW5rc1wiIFttYXhTaXplXT1cIm1heHNpemVcIlxuICAgICAgICAgICAgW2RpcmVjdGlvbkxpbmtzXT1cImRpcmVjdGlvbmxpbmtzXCJcbiAgICAgICAgICAgIGZpcnN0VGV4dD1cIkZpcnRzdFwiIGxhc3RUZXh0PVwiTGFzdFwiXG4gICAgICAgICAgICBbY3VzdG9tUHJldmlvdXNUZW1wbGF0ZV09XCJwcmV2VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2N1c3RvbU5leHRUZW1wbGF0ZV09XCJuZXh0VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2N1c3RvbVBhZ2VUZW1wbGF0ZV09XCJwYWdlVGVtcGxhdGVcIj48L3BhZ2luYXRpb24+XG5cbjx1bCAqbmdJZj1cIm5hdmNvbnRyb2xzID09PSAnQmFzaWMnICYmIHNob3dyZWNvcmRjb3VudFwiIGNsYXNzPVwicGFnaW5hdGlvblwiPlxuICAgIDxsaSBjbGFzcz1cInRvdGFsY291bnQgZGlzYWJsZWQgYmFzaWNjb3VudFwiPlxuICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPnt7YXBwTG9jYWxlLkxBQkVMX1RPVEFMX1JFQ09SRFN9fToge3tkYXRhU2l6ZX19PC9hPlxuICAgIDwvbGk+XG48L3VsPlxuXG48bmctdGVtcGxhdGUgI3BhZ2VUZW1wbGF0ZSBsZXQtcGFnZT5cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBbYXR0ci5kYXRhLWlzYWNpdHZlcGFnZV09XCJwYWdlLmFjdGl2ZVwiPnt7J1BhZ2UgJ319PC9zcGFuPlxuICAgIHt7cGFnZS5udW1iZXJ9fVxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiICpuZ0lmPVwicGFnZS5hY3RpdmVcIj4ge3snLCBTaG93aW5nIHBhZ2UgJyArIHBhZ2UubnVtYmVyICsgJyBvZiAnICsgcGFnZUNvdW50fX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwcmV2VGVtcGxhdGUgbGV0LWRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBbYXR0ci5kYXRhLWlzZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5HbyB0byBQcmV2aW91cyBwYWdlIHt7ZGlzYWJsZWQgPyAnLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbmV4dFRlbXBsYXRlIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgW2F0dHIuZGF0YS1pc2Rpc2FibGVkXT1cImRpc2FibGVkXCI+R28gdG8gTmV4dCBwYWdlIHt7ZGlzYWJsZWQgPyAnLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==