@wavemaker/app-ng-runtime 11.8.0-next.141669 → 11.8.0-next.141671

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 (1448) hide show
  1. package/build-task/bundles/index.umd.js +33 -9
  2. package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +4 -2
  3. package/build-task/esm2022/advanced/carousel/carousel.build.mjs +1 -1
  4. package/build-task/esm2022/basic/default/label/label.build.mjs +1 -1
  5. package/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
  6. package/build-task/esm2022/containers/accordion/accordion.build.mjs +1 -1
  7. package/build-task/esm2022/containers/repeat-template.build.mjs +4 -2
  8. package/build-task/esm2022/containers/tabs/tabs.build.mjs +1 -1
  9. package/build-task/esm2022/data/form/form-field/form-field.build.mjs +1 -1
  10. package/build-task/esm2022/data/form/form.build.mjs +5 -2
  11. package/build-task/esm2022/data/list/list.build.mjs +1 -1
  12. package/build-task/esm2022/data/media-list/media-list.build.mjs +1 -1
  13. package/build-task/esm2022/data/table/table-column/table-column.build.mjs +1 -1
  14. package/build-task/esm2022/data/table/table.build.mjs +1 -1
  15. package/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +1 -1
  16. package/build-task/esm2022/input/file-upload/file-upload.build.mjs +1 -1
  17. package/build-task/esm2022/navigation/menu/menu.build.mjs +19 -2
  18. package/build-task/esm2022/navigation/popover/popover.build.mjs +1 -1
  19. package/build-task/esm2022/page/page-content/page-content.build.mjs +1 -1
  20. package/build-task/esm2022/page/page.build.mjs +3 -2
  21. package/build-task/esm2022/utils/utils.mjs +1 -1
  22. package/build-task/fesm2022/index.mjs +31 -6
  23. package/build-task/fesm2022/index.mjs.map +1 -1
  24. package/components/advanced/carousel/bundles/index.umd.js +26 -16
  25. package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +2 -2
  26. package/components/advanced/carousel/carousel.directive.d.ts +2 -2
  27. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +12 -7
  28. package/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
  29. package/components/advanced/carousel/esm2022/carousel.directive.mjs +12 -7
  30. package/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
  31. package/components/advanced/carousel/fesm2022/index.mjs +25 -14
  32. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  33. package/components/advanced/login/bundles/index.umd.js +19 -13
  34. package/components/advanced/login/esm2022/login.component.mjs +17 -10
  35. package/components/advanced/login/esm2022/login.module.mjs +2 -2
  36. package/components/advanced/login/fesm2022/index.mjs +18 -11
  37. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  38. package/components/advanced/login/login.component.d.ts +2 -2
  39. package/components/advanced/marquee/bundles/index.umd.js +11 -6
  40. package/components/advanced/marquee/esm2022/marquee.directive.mjs +12 -7
  41. package/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
  42. package/components/advanced/marquee/fesm2022/index.mjs +13 -8
  43. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  44. package/components/advanced/marquee/marquee.directive.d.ts +2 -2
  45. package/components/base/bundles/index.umd.js +357 -270
  46. package/components/base/esm2022/components.module.mjs +2 -2
  47. package/components/base/esm2022/directives/show-in-device.directive.mjs +4 -4
  48. package/components/base/esm2022/pipes/custom-pipes.mjs +35 -34
  49. package/components/base/esm2022/pipes/image.pipe.mjs +2 -2
  50. package/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -3
  51. package/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -3
  52. package/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
  53. package/components/base/esm2022/utils/data-utils.mjs +29 -28
  54. package/components/base/esm2022/utils/form-utils.mjs +48 -42
  55. package/components/base/esm2022/utils/live-utils.mjs +8 -7
  56. package/components/base/esm2022/utils/widget-utils.mjs +28 -27
  57. package/components/base/esm2022/widgets/common/base/base-container.component.mjs +8 -7
  58. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +24 -21
  59. package/components/base/esm2022/widgets/common/base/base.component.mjs +42 -16
  60. package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +52 -18
  61. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +6 -5
  62. package/components/base/esm2022/widgets/common/base/stylable.component.mjs +3 -3
  63. package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -3
  64. package/components/base/esm2022/widgets/common/container/container.directive.mjs +12 -7
  65. package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +5 -4
  66. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +12 -7
  67. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -3
  68. package/components/base/esm2022/widgets/common/message/message.component.mjs +16 -10
  69. package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +14 -8
  70. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +9 -8
  71. package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -1
  72. package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +4 -4
  73. package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +12 -7
  74. package/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +11 -10
  75. package/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
  76. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
  77. package/components/base/esm2022/widgets/framework/styler.mjs +1 -1
  78. package/components/base/esm2022/widgets/framework/widget-props.mjs +1 -1
  79. package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
  80. package/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
  81. package/components/base/fesm2022/index.mjs +362 -272
  82. package/components/base/fesm2022/index.mjs.map +1 -1
  83. package/components/base/pipes/custom-pipes.d.ts +1 -1
  84. package/components/base/utils/widget-utils.d.ts +2 -2
  85. package/components/base/widgets/common/base/base-container.component.d.ts +1 -1
  86. package/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  87. package/components/base/widgets/common/base/base.component.d.ts +4 -2
  88. package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +1 -1
  89. package/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  90. package/components/base/widgets/common/container/container.directive.d.ts +2 -2
  91. package/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -2
  92. package/components/base/widgets/common/message/message.component.d.ts +2 -2
  93. package/components/base/widgets/common/partial/partial.directive.d.ts +2 -2
  94. package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +2 -2
  95. package/components/basic/default/anchor/anchor.component.d.ts +2 -2
  96. package/components/basic/default/audio/audio.component.d.ts +3 -2
  97. package/components/basic/default/bundles/index.umd.js +163 -119
  98. package/components/basic/default/esm2022/anchor/anchor.component.mjs +31 -27
  99. package/components/basic/default/esm2022/audio/audio.component.mjs +18 -11
  100. package/components/basic/default/esm2022/basic.module.mjs +2 -2
  101. package/components/basic/default/esm2022/html/html.directive.mjs +13 -8
  102. package/components/basic/default/esm2022/icon/icon.component.mjs +19 -14
  103. package/components/basic/default/esm2022/iframe/iframe.component.mjs +15 -9
  104. package/components/basic/default/esm2022/label/label.directive.mjs +15 -9
  105. package/components/basic/default/esm2022/picture/picture.directive.mjs +12 -7
  106. package/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
  107. package/components/basic/default/esm2022/spinner/spinner.component.mjs +34 -30
  108. package/components/basic/default/esm2022/video/video.component.mjs +21 -17
  109. package/components/basic/default/fesm2022/index.mjs +162 -117
  110. package/components/basic/default/fesm2022/index.mjs.map +1 -1
  111. package/components/basic/default/html/html.directive.d.ts +2 -2
  112. package/components/basic/default/icon/icon.component.d.ts +2 -2
  113. package/components/basic/default/iframe/iframe.component.d.ts +2 -2
  114. package/components/basic/default/label/label.directive.d.ts +2 -2
  115. package/components/basic/default/picture/picture.directive.d.ts +2 -2
  116. package/components/basic/default/spinner/spinner.component.d.ts +2 -2
  117. package/components/basic/default/video/video.component.d.ts +2 -2
  118. package/components/basic/progress/bundles/index.umd.js +45 -32
  119. package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +24 -17
  120. package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +20 -12
  121. package/components/basic/progress/esm2022/progress.module.mjs +2 -2
  122. package/components/basic/progress/esm2022/utils.mjs +3 -3
  123. package/components/basic/progress/fesm2022/index.mjs +44 -30
  124. package/components/basic/progress/fesm2022/index.mjs.map +1 -1
  125. package/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -2
  126. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
  127. package/components/basic/rich-text-editor/bundles/index.umd.js +19 -13
  128. package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +17 -10
  129. package/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
  130. package/components/basic/rich-text-editor/fesm2022/index.mjs +18 -11
  131. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  132. package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
  133. package/components/basic/search/bundles/index.umd.js +185 -175
  134. package/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
  135. package/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
  136. package/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
  137. package/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
  138. package/components/basic/search/esm2022/search.component.mjs +147 -138
  139. package/components/basic/search/esm2022/search.module.mjs +2 -2
  140. package/components/basic/search/fesm2022/index.mjs +185 -174
  141. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  142. package/components/basic/search/search.component.d.ts +2 -2
  143. package/components/basic/tree/bundles/index.umd.js +23 -17
  144. package/components/basic/tree/esm2022/tree.component.mjs +21 -14
  145. package/components/basic/tree/esm2022/tree.module.mjs +2 -2
  146. package/components/basic/tree/fesm2022/index.mjs +22 -15
  147. package/components/basic/tree/fesm2022/index.mjs.map +1 -1
  148. package/components/basic/tree/tree.component.d.ts +2 -2
  149. package/components/chart/bundles/index.umd.js +97 -84
  150. package/components/chart/chart.component.d.ts +3 -3
  151. package/components/chart/chart.utils.d.ts +3 -3
  152. package/components/chart/esm2022/chart.component.mjs +82 -68
  153. package/components/chart/esm2022/chart.module.mjs +2 -2
  154. package/components/chart/esm2022/chart.utils.mjs +14 -13
  155. package/components/chart/fesm2022/index.mjs +95 -81
  156. package/components/chart/fesm2022/index.mjs.map +1 -1
  157. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -2
  158. package/components/containers/accordion/accordion.directive.d.ts +2 -2
  159. package/components/containers/accordion/bundles/index.umd.js +51 -40
  160. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +23 -17
  161. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +4 -4
  162. package/components/containers/accordion/esm2022/accordion.directive.mjs +25 -19
  163. package/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
  164. package/components/containers/accordion/fesm2022/index.mjs +50 -38
  165. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  166. package/components/containers/layout-grid/bundles/index.umd.js +32 -17
  167. package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +13 -8
  168. package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +12 -7
  169. package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +12 -7
  170. package/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
  171. package/components/containers/layout-grid/fesm2022/index.mjs +34 -19
  172. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  173. package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +2 -2
  174. package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +2 -2
  175. package/components/containers/layout-grid/layout-grid.directive.d.ts +2 -2
  176. package/components/containers/linear-layout/bundles/index.umd.js +21 -11
  177. package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +12 -7
  178. package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +12 -7
  179. package/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
  180. package/components/containers/linear-layout/fesm2022/index.mjs +23 -13
  181. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  182. package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +2 -2
  183. package/components/containers/linear-layout/linear-layout.directive.d.ts +2 -2
  184. package/components/containers/panel/bundles/index.umd.js +85 -85
  185. package/components/containers/panel/esm2022/panel.component.mjs +83 -82
  186. package/components/containers/panel/esm2022/panel.module.mjs +2 -2
  187. package/components/containers/panel/fesm2022/index.mjs +84 -83
  188. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  189. package/components/containers/panel/panel.component.d.ts +3 -3
  190. package/components/containers/tabs/bundles/index.umd.js +74 -63
  191. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +14 -8
  192. package/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +4 -4
  193. package/components/containers/tabs/esm2022/tabs.animator.mjs +1 -1
  194. package/components/containers/tabs/esm2022/tabs.component.mjs +57 -51
  195. package/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
  196. package/components/containers/tabs/esm2022/tabs.props.mjs +1 -1
  197. package/components/containers/tabs/fesm2022/index.mjs +73 -61
  198. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  199. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -2
  200. package/components/containers/tabs/tabs.component.d.ts +2 -2
  201. package/components/containers/tile/bundles/index.umd.js +11 -6
  202. package/components/containers/tile/esm2022/tile.directive.mjs +12 -7
  203. package/components/containers/tile/esm2022/tile.module.mjs +2 -2
  204. package/components/containers/tile/fesm2022/index.mjs +13 -8
  205. package/components/containers/tile/fesm2022/index.mjs.map +1 -1
  206. package/components/containers/tile/tile.directive.d.ts +2 -2
  207. package/components/containers/wizard/bundles/index.umd.js +102 -98
  208. package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +13 -8
  209. package/components/containers/wizard/esm2022/wizard.component.mjs +92 -93
  210. package/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
  211. package/components/containers/wizard/fesm2022/index.mjs +104 -100
  212. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  213. package/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +2 -2
  214. package/components/containers/wizard/wizard.component.d.ts +2 -2
  215. package/components/data/card/bundles/index.umd.js +70 -50
  216. package/components/data/card/card-actions/card-actions.directive.d.ts +2 -2
  217. package/components/data/card/card-content/card-content.component.d.ts +2 -2
  218. package/components/data/card/card-footer/card-footer.directive.d.ts +2 -2
  219. package/components/data/card/card.component.d.ts +2 -2
  220. package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +12 -7
  221. package/components/data/card/esm2022/card-content/card-content.component.mjs +15 -9
  222. package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +12 -7
  223. package/components/data/card/esm2022/card.component.mjs +38 -34
  224. package/components/data/card/esm2022/card.module.mjs +2 -2
  225. package/components/data/card/fesm2022/index.mjs +72 -52
  226. package/components/data/card/fesm2022/index.mjs.map +1 -1
  227. package/components/data/form/bundles/index.umd.js +202 -188
  228. package/components/data/form/esm2022/form-action/form-action.directive.mjs +15 -9
  229. package/components/data/form/esm2022/form-field/form-field.directive.mjs +21 -16
  230. package/components/data/form/esm2022/form-field/form-field.props.mjs +1 -1
  231. package/components/data/form/esm2022/form-widget.directive.mjs +4 -4
  232. package/components/data/form/esm2022/form.component.mjs +139 -135
  233. package/components/data/form/esm2022/form.module.mjs +2 -2
  234. package/components/data/form/esm2022/form.props.mjs +1 -1
  235. package/components/data/form/esm2022/live-actions/dependson.directive.mjs +4 -4
  236. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +4 -4
  237. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +7 -6
  238. package/components/data/form/esm2022/live-form/live-form.directive.mjs +18 -15
  239. package/components/data/form/fesm2022/index.mjs +206 -191
  240. package/components/data/form/fesm2022/index.mjs.map +1 -1
  241. package/components/data/form/form-action/form-action.directive.d.ts +2 -2
  242. package/components/data/form/form-field/form-field.directive.d.ts +2 -2
  243. package/components/data/form/form.component.d.ts +4 -4
  244. package/components/data/form/live-form/live-form.directive.d.ts +1 -1
  245. package/components/data/list/bundles/index.umd.js +826 -818
  246. package/components/data/list/esm2022/list-item.directive.mjs +4 -4
  247. package/components/data/list/esm2022/list.animator.mjs +5 -3
  248. package/components/data/list/esm2022/list.component.mjs +818 -810
  249. package/components/data/list/esm2022/list.module.mjs +2 -2
  250. package/components/data/list/fesm2022/index.mjs +825 -816
  251. package/components/data/list/fesm2022/index.mjs.map +1 -1
  252. package/components/data/list/list.component.d.ts +55 -54
  253. package/components/data/live-table/bundles/index.umd.js +13 -7
  254. package/components/data/live-table/esm2022/live-table.component.mjs +14 -8
  255. package/components/data/live-table/esm2022/live-table.module.mjs +2 -2
  256. package/components/data/live-table/fesm2022/index.mjs +15 -9
  257. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  258. package/components/data/live-table/live-table.component.d.ts +2 -2
  259. package/components/data/pagination/bundles/index.umd.js +111 -109
  260. package/components/data/pagination/esm2022/pagination.component.mjs +109 -106
  261. package/components/data/pagination/esm2022/pagination.module.mjs +2 -2
  262. package/components/data/pagination/fesm2022/index.mjs +110 -107
  263. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  264. package/components/data/pagination/pagination.component.d.ts +2 -2
  265. package/components/data/table/bundles/index.umd.js +311 -268
  266. package/components/data/table/esm2022/table-action/table-action.directive.mjs +15 -9
  267. package/components/data/table/esm2022/table-column/table-column.directive.mjs +40 -25
  268. package/components/data/table/esm2022/table-column/table-column.props.mjs +2 -2
  269. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +13 -8
  270. package/components/data/table/esm2022/table-cud.directive.mjs +10 -9
  271. package/components/data/table/esm2022/table-filter.directive.mjs +56 -58
  272. package/components/data/table/esm2022/table-row/table-row.directive.mjs +13 -8
  273. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +14 -8
  274. package/components/data/table/esm2022/table.component.mjs +162 -149
  275. package/components/data/table/esm2022/table.module.mjs +2 -2
  276. package/components/data/table/esm2022/table.props.mjs +2 -2
  277. package/components/data/table/fesm2022/index.mjs +310 -266
  278. package/components/data/table/fesm2022/index.mjs.map +1 -1
  279. package/components/data/table/table-action/table-action.directive.d.ts +2 -2
  280. package/components/data/table/table-column/table-column.directive.d.ts +8 -8
  281. package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -2
  282. package/components/data/table/table-row/table-row.directive.d.ts +2 -2
  283. package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -2
  284. package/components/data/table/table.component.d.ts +4 -4
  285. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -2
  286. package/components/dialogs/alert-dialog/bundles/index.umd.js +15 -9
  287. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +16 -10
  288. package/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
  289. package/components/dialogs/alert-dialog/fesm2022/index.mjs +17 -11
  290. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  291. package/components/dialogs/confirm-dialog/bundles/index.umd.js +17 -11
  292. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -2
  293. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +18 -12
  294. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
  295. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +19 -13
  296. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  297. package/components/dialogs/default/base-dialog.d.ts +2 -2
  298. package/components/dialogs/default/bundles/index.umd.js +75 -71
  299. package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +2 -2
  300. package/components/dialogs/default/esm2022/base-dialog.mjs +14 -9
  301. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +4 -4
  302. package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +12 -7
  303. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +49 -55
  304. package/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
  305. package/components/dialogs/default/fesm2022/index.mjs +76 -72
  306. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  307. package/components/dialogs/design-dialog/bundles/index.umd.js +20 -14
  308. package/components/dialogs/design-dialog/dialog.component.d.ts +2 -2
  309. package/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
  310. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +21 -15
  311. package/components/dialogs/design-dialog/fesm2022/index.mjs +22 -16
  312. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  313. package/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -14
  314. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -15
  315. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
  316. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +22 -16
  317. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  318. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -2
  319. package/components/dialogs/login-dialog/bundles/index.umd.js +4 -4
  320. package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +4 -4
  321. package/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
  322. package/components/dialogs/login-dialog/fesm2022/index.mjs +4 -4
  323. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  324. package/components/dialogs/partial-dialog/bundles/index.umd.js +16 -10
  325. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +17 -11
  326. package/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
  327. package/components/dialogs/partial-dialog/fesm2022/index.mjs +18 -12
  328. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  329. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -2
  330. package/components/input/calendar/bundles/index.umd.js +46 -38
  331. package/components/input/calendar/calendar.component.d.ts +2 -2
  332. package/components/input/calendar/esm2022/calendar.component.mjs +44 -35
  333. package/components/input/calendar/esm2022/calendar.module.mjs +2 -2
  334. package/components/input/calendar/fesm2022/index.mjs +45 -36
  335. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  336. package/components/input/chips/bundles/index.umd.js +69 -61
  337. package/components/input/chips/chips.component.d.ts +3 -3
  338. package/components/input/chips/esm2022/chips.component.mjs +67 -58
  339. package/components/input/chips/esm2022/chips.module.mjs +2 -2
  340. package/components/input/chips/fesm2022/index.mjs +67 -58
  341. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  342. package/components/input/color-picker/bundles/index.umd.js +24 -11
  343. package/components/input/color-picker/color-picker.component.d.ts +2 -2
  344. package/components/input/color-picker/esm2022/color-picker.component.mjs +25 -12
  345. package/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
  346. package/components/input/color-picker/fesm2022/index.mjs +25 -12
  347. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  348. package/components/input/currency/bundles/index.umd.js +18 -11
  349. package/components/input/currency/currency.component.d.ts +2 -2
  350. package/components/input/currency/esm2022/currency.component.mjs +19 -12
  351. package/components/input/currency/esm2022/currency.module.mjs +2 -2
  352. package/components/input/currency/fesm2022/index.mjs +19 -12
  353. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  354. package/components/input/default/base-form.component.d.ts +3 -3
  355. package/components/input/default/bundles/index.umd.js +600 -482
  356. package/components/input/default/button/button.component.d.ts +2 -2
  357. package/components/input/default/button-group/button-group.directive.d.ts +2 -2
  358. package/components/input/default/checkbox/checkbox.component.d.ts +3 -2
  359. package/components/input/default/checkboxset/checkboxset.component.d.ts +2 -2
  360. package/components/input/default/composite/composite.directive.d.ts +2 -2
  361. package/components/input/default/dataset-aware-form.component.d.ts +4 -4
  362. package/components/input/default/esm2022/base-form-custom.component.mjs +3 -3
  363. package/components/input/default/esm2022/base-form.component.mjs +17 -11
  364. package/components/input/default/esm2022/button/button.component.mjs +32 -28
  365. package/components/input/default/esm2022/button-group/button-group.directive.mjs +12 -7
  366. package/components/input/default/esm2022/caption-position.directive.mjs +6 -6
  367. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +24 -15
  368. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +107 -103
  369. package/components/input/default/esm2022/composite/composite.directive.mjs +12 -7
  370. package/components/input/default/esm2022/dataset-aware-form.component.mjs +32 -26
  371. package/components/input/default/esm2022/input.module.mjs +2 -2
  372. package/components/input/default/esm2022/number/number.component.mjs +17 -10
  373. package/components/input/default/esm2022/radioset/radioset.component.mjs +105 -102
  374. package/components/input/default/esm2022/select/select.component.mjs +69 -68
  375. package/components/input/default/esm2022/switch/switch.component.mjs +38 -31
  376. package/components/input/default/esm2022/text/base/base-input.mjs +16 -10
  377. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +21 -11
  378. package/components/input/default/esm2022/text/color/input-color.component.mjs +21 -11
  379. package/components/input/default/esm2022/text/email/input-email.component.mjs +20 -11
  380. package/components/input/default/esm2022/text/locale/number-locale.mjs +35 -24
  381. package/components/input/default/esm2022/text/number/input-number.component.mjs +21 -12
  382. package/components/input/default/esm2022/text/text/input-text.component.mjs +20 -11
  383. package/components/input/default/esm2022/textarea/textarea.component.mjs +21 -12
  384. package/components/input/default/fesm2022/index.mjs +603 -483
  385. package/components/input/default/fesm2022/index.mjs.map +1 -1
  386. package/components/input/default/number/number.component.d.ts +2 -2
  387. package/components/input/default/radioset/radioset.component.d.ts +2 -2
  388. package/components/input/default/select/select.component.d.ts +3 -4
  389. package/components/input/default/switch/switch.component.d.ts +2 -2
  390. package/components/input/default/text/base/base-input.d.ts +2 -2
  391. package/components/input/default/text/calendar/input-calendar.component.d.ts +2 -2
  392. package/components/input/default/text/color/input-color.component.d.ts +2 -2
  393. package/components/input/default/text/email/input-email.component.d.ts +2 -2
  394. package/components/input/default/text/locale/number-locale.d.ts +1 -1
  395. package/components/input/default/text/number/input-number.component.d.ts +2 -2
  396. package/components/input/default/text/text/input-text.component.d.ts +2 -2
  397. package/components/input/default/textarea/textarea.component.d.ts +2 -2
  398. package/components/input/epoch/base-date-time.component.d.ts +2 -2
  399. package/components/input/epoch/bundles/index.umd.js +221 -162
  400. package/components/input/epoch/date/date.component.d.ts +3 -2
  401. package/components/input/epoch/date-time/date-time.component.d.ts +2 -2
  402. package/components/input/epoch/esm2022/base-date-time.component.mjs +45 -36
  403. package/components/input/epoch/esm2022/date/date.component.mjs +48 -23
  404. package/components/input/epoch/esm2022/date/date.props.mjs +2 -2
  405. package/components/input/epoch/esm2022/date/imaskUtil.mjs +8 -2
  406. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +42 -41
  407. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +47 -36
  408. package/components/input/epoch/esm2022/epoch.module.mjs +2 -2
  409. package/components/input/epoch/esm2022/picker/picker.component.mjs +7 -5
  410. package/components/input/epoch/esm2022/time/time.component.mjs +33 -23
  411. package/components/input/epoch/fesm2022/index.mjs +219 -159
  412. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  413. package/components/input/epoch/time/time.component.d.ts +2 -2
  414. package/components/input/file-upload/bundles/index.umd.js +133 -135
  415. package/components/input/file-upload/esm2022/file-upload.component.mjs +131 -132
  416. package/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  417. package/components/input/file-upload/fesm2022/index.mjs +132 -133
  418. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  419. package/components/input/file-upload/file-upload.component.d.ts +2 -2
  420. package/components/input/rating/bundles/index.umd.js +57 -50
  421. package/components/input/rating/esm2022/rating.component.mjs +55 -47
  422. package/components/input/rating/esm2022/rating.module.mjs +2 -2
  423. package/components/input/rating/fesm2022/index.mjs +55 -47
  424. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  425. package/components/input/rating/rating.component.d.ts +2 -2
  426. package/components/input/slider/bundles/index.umd.js +21 -12
  427. package/components/input/slider/esm2022/slider.component.mjs +22 -13
  428. package/components/input/slider/esm2022/slider.module.mjs +2 -2
  429. package/components/input/slider/fesm2022/index.mjs +22 -13
  430. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  431. package/components/input/slider/slider.component.d.ts +2 -2
  432. package/components/navigation/breadcrumb/breadcrumb.component.d.ts +2 -2
  433. package/components/navigation/breadcrumb/bundles/index.umd.js +33 -28
  434. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +34 -29
  435. package/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
  436. package/components/navigation/breadcrumb/fesm2022/index.mjs +35 -30
  437. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  438. package/components/navigation/menu/bundles/index.umd.js +154 -137
  439. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +13 -7
  440. package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +5 -4
  441. package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +27 -26
  442. package/components/navigation/menu/esm2022/menu.component.mjs +44 -40
  443. package/components/navigation/menu/esm2022/menu.module.mjs +2 -2
  444. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +12 -7
  445. package/components/navigation/menu/esm2022/nav/nav.component.mjs +60 -56
  446. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
  447. package/components/navigation/menu/fesm2022/index.mjs +153 -135
  448. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  449. package/components/navigation/menu/menu-adapator.component.d.ts +1 -1
  450. package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
  451. package/components/navigation/menu/menu.component.d.ts +2 -2
  452. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +2 -2
  453. package/components/navigation/menu/nav/nav.component.d.ts +2 -2
  454. package/components/navigation/navbar/bundles/index.umd.js +29 -22
  455. package/components/navigation/navbar/esm2022/navbar.component.mjs +30 -23
  456. package/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
  457. package/components/navigation/navbar/fesm2022/index.mjs +31 -24
  458. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  459. package/components/navigation/navbar/navbar.component.d.ts +2 -2
  460. package/components/navigation/popover/bundles/index.umd.js +18 -11
  461. package/components/navigation/popover/esm2022/popover.component.mjs +19 -12
  462. package/components/navigation/popover/esm2022/popover.module.mjs +2 -2
  463. package/components/navigation/popover/fesm2022/index.mjs +20 -13
  464. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  465. package/components/navigation/popover/popover.component.d.ts +2 -2
  466. package/components/page/default/bundles/index.umd.js +63 -31
  467. package/components/page/default/content/content.component.d.ts +2 -2
  468. package/components/page/default/esm2022/content/content.component.mjs +13 -7
  469. package/components/page/default/esm2022/layout.directive.mjs +12 -7
  470. package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -7
  471. package/components/page/default/esm2022/page.directive.mjs +12 -7
  472. package/components/page/default/esm2022/page.module.mjs +2 -2
  473. package/components/page/default/esm2022/router-outlet.directive.mjs +12 -7
  474. package/components/page/default/esm2022/spa-page.directive.mjs +12 -7
  475. package/components/page/default/fesm2022/index.mjs +65 -33
  476. package/components/page/default/fesm2022/index.mjs.map +1 -1
  477. package/components/page/default/layout.directive.d.ts +2 -2
  478. package/components/page/default/page-content/page-content.component.d.ts +2 -2
  479. package/components/page/default/page.directive.d.ts +2 -2
  480. package/components/page/default/router-outlet.directive.d.ts +2 -2
  481. package/components/page/default/spa-page.directive.d.ts +2 -2
  482. package/components/page/footer/bundles/index.umd.js +11 -6
  483. package/components/page/footer/esm2022/footer.directive.mjs +12 -7
  484. package/components/page/footer/esm2022/footer.module.mjs +2 -2
  485. package/components/page/footer/fesm2022/index.mjs +13 -8
  486. package/components/page/footer/fesm2022/index.mjs.map +1 -1
  487. package/components/page/footer/footer.directive.d.ts +2 -2
  488. package/components/page/header/bundles/index.umd.js +12 -6
  489. package/components/page/header/esm2022/header.component.mjs +13 -7
  490. package/components/page/header/esm2022/header.module.mjs +2 -2
  491. package/components/page/header/fesm2022/index.mjs +14 -8
  492. package/components/page/header/fesm2022/index.mjs.map +1 -1
  493. package/components/page/header/header.component.d.ts +2 -2
  494. package/components/page/left-panel/bundles/index.umd.js +12 -7
  495. package/components/page/left-panel/esm2022/left-panel.animator.mjs +1 -1
  496. package/components/page/left-panel/esm2022/left-panel.directive.mjs +13 -8
  497. package/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  498. package/components/page/left-panel/fesm2022/index.mjs +14 -9
  499. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  500. package/components/page/left-panel/left-panel.directive.d.ts +2 -2
  501. package/components/page/right-panel/bundles/index.umd.js +11 -6
  502. package/components/page/right-panel/esm2022/right-panel.directive.mjs +12 -7
  503. package/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
  504. package/components/page/right-panel/fesm2022/index.mjs +13 -8
  505. package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  506. package/components/page/right-panel/right-panel.directive.d.ts +2 -2
  507. package/components/page/top-nav/bundles/index.umd.js +11 -6
  508. package/components/page/top-nav/esm2022/top-nav.directive.mjs +12 -7
  509. package/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
  510. package/components/page/top-nav/fesm2022/index.mjs +13 -8
  511. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  512. package/components/page/top-nav/top-nav.directive.d.ts +2 -2
  513. package/components/prefab/bundles/index.umd.js +28 -18
  514. package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +14 -8
  515. package/components/prefab/esm2022/prefab.directive.mjs +15 -9
  516. package/components/prefab/esm2022/prefab.module.mjs +2 -2
  517. package/components/prefab/fesm2022/index.mjs +26 -15
  518. package/components/prefab/fesm2022/index.mjs.map +1 -1
  519. package/components/prefab/prefab-container/prefab-container.directive.d.ts +2 -2
  520. package/components/prefab/prefab.directive.d.ts +2 -2
  521. package/core/bundles/index.umd.js +135 -146
  522. package/core/esm2022/core.module.mjs +2 -2
  523. package/core/esm2022/public_api.mjs +2 -2
  524. package/core/esm2022/services/constant.service.mjs +2 -2
  525. package/core/esm2022/services/field-type.service.mjs +5 -4
  526. package/core/esm2022/services/field-widget.service.mjs +5 -4
  527. package/core/esm2022/services/pagination.service.mjs +8 -7
  528. package/core/esm2022/services/script-loader.service.mjs +3 -3
  529. package/core/esm2022/services/state-persistence.service.mjs +18 -17
  530. package/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
  531. package/core/esm2022/services/utils.service.mjs +5 -4
  532. package/core/esm2022/services/viewport.service.mjs +5 -4
  533. package/core/esm2022/utils/build-utils.mjs +5 -4
  534. package/core/esm2022/utils/dom.mjs +1 -1
  535. package/core/esm2022/utils/event-notifier.mjs +1 -1
  536. package/core/esm2022/utils/expression-parser.mjs +6 -5
  537. package/core/esm2022/utils/id-generator.mjs +1 -1
  538. package/core/esm2022/utils/lru-cache.mjs +3 -2
  539. package/core/esm2022/utils/utils.mjs +79 -82
  540. package/core/esm2022/utils/watcher.mjs +9 -7
  541. package/core/esm2022/utils/wm-project-properties.mjs +1 -1
  542. package/core/fesm2022/index.mjs +134 -140
  543. package/core/fesm2022/index.mjs.map +1 -1
  544. package/core/public_api.d.ts +1 -1
  545. package/core/services/pagination.service.d.ts +1 -1
  546. package/core/utils/utils.d.ts +5 -9
  547. package/http/bundles/index.umd.js +10 -10
  548. package/http/esm2022/http-service.module.mjs +2 -2
  549. package/http/esm2022/http.service.mjs +7 -6
  550. package/http/esm2022/wm-http-request.mjs +1 -1
  551. package/http/esm2022/wm-http-response.mjs +1 -1
  552. package/http/fesm2022/index.mjs +7 -6
  553. package/http/fesm2022/index.mjs.map +1 -1
  554. package/locales/angular/global/af-na.js +4 -4
  555. package/locales/angular/global/af.js +4 -4
  556. package/locales/angular/global/agq.js +4 -4
  557. package/locales/angular/global/ak.js +4 -4
  558. package/locales/angular/global/am.js +4 -4
  559. package/locales/angular/global/ar-ae.js +4 -4
  560. package/locales/angular/global/ar-bh.js +4 -4
  561. package/locales/angular/global/ar-dj.js +4 -4
  562. package/locales/angular/global/ar-dz.js +4 -4
  563. package/locales/angular/global/ar-eg.js +4 -4
  564. package/locales/angular/global/ar-eh.js +4 -4
  565. package/locales/angular/global/ar-er.js +4 -4
  566. package/locales/angular/global/ar-il.js +4 -4
  567. package/locales/angular/global/ar-iq.js +4 -4
  568. package/locales/angular/global/ar-jo.js +4 -4
  569. package/locales/angular/global/ar-km.js +4 -4
  570. package/locales/angular/global/ar-kw.js +4 -4
  571. package/locales/angular/global/ar-lb.js +4 -4
  572. package/locales/angular/global/ar-ly.js +4 -4
  573. package/locales/angular/global/ar-ma.js +4 -4
  574. package/locales/angular/global/ar-mr.js +4 -4
  575. package/locales/angular/global/ar-om.js +4 -4
  576. package/locales/angular/global/ar-ps.js +4 -4
  577. package/locales/angular/global/ar-qa.js +4 -4
  578. package/locales/angular/global/ar-sa.js +4 -4
  579. package/locales/angular/global/ar-sd.js +4 -4
  580. package/locales/angular/global/ar-so.js +4 -4
  581. package/locales/angular/global/ar-ss.js +4 -4
  582. package/locales/angular/global/ar-sy.js +4 -4
  583. package/locales/angular/global/ar-td.js +4 -4
  584. package/locales/angular/global/ar-tn.js +4 -4
  585. package/locales/angular/global/ar-ye.js +4 -4
  586. package/locales/angular/global/ar.js +4 -4
  587. package/locales/angular/global/as.js +4 -4
  588. package/locales/angular/global/asa.js +4 -4
  589. package/locales/angular/global/ast.js +4 -4
  590. package/locales/angular/global/az-cyrl.js +4 -4
  591. package/locales/angular/global/az-latn.js +4 -4
  592. package/locales/angular/global/az.js +4 -4
  593. package/locales/angular/global/bas.js +4 -4
  594. package/locales/angular/global/be-tarask.js +4 -4
  595. package/locales/angular/global/be.js +4 -4
  596. package/locales/angular/global/bem.js +4 -4
  597. package/locales/angular/global/bez.js +4 -4
  598. package/locales/angular/global/bg.js +4 -4
  599. package/locales/angular/global/bm.js +4 -4
  600. package/locales/angular/global/bn-in.js +4 -4
  601. package/locales/angular/global/bn.js +4 -4
  602. package/locales/angular/global/bo-in.js +4 -4
  603. package/locales/angular/global/bo.js +4 -4
  604. package/locales/angular/global/br.js +4 -4
  605. package/locales/angular/global/brx.js +4 -4
  606. package/locales/angular/global/bs-cyrl.js +4 -4
  607. package/locales/angular/global/bs-latn.js +4 -4
  608. package/locales/angular/global/bs.js +4 -4
  609. package/locales/angular/global/ca-ad.js +4 -4
  610. package/locales/angular/global/ca-es-valencia.js +4 -4
  611. package/locales/angular/global/ca-fr.js +4 -4
  612. package/locales/angular/global/ca-it.js +4 -4
  613. package/locales/angular/global/ca.js +4 -4
  614. package/locales/angular/global/ccp-in.js +4 -4
  615. package/locales/angular/global/ccp.js +4 -4
  616. package/locales/angular/global/ce.js +4 -4
  617. package/locales/angular/global/ceb.js +4 -4
  618. package/locales/angular/global/cgg.js +4 -4
  619. package/locales/angular/global/chr.js +4 -4
  620. package/locales/angular/global/ckb-ir.js +4 -4
  621. package/locales/angular/global/ckb.js +4 -4
  622. package/locales/angular/global/cs.js +4 -4
  623. package/locales/angular/global/cy.js +4 -4
  624. package/locales/angular/global/da-gl.js +4 -4
  625. package/locales/angular/global/da.js +4 -4
  626. package/locales/angular/global/dav.js +4 -4
  627. package/locales/angular/global/de-at.js +4 -4
  628. package/locales/angular/global/de-be.js +4 -4
  629. package/locales/angular/global/de-ch.js +4 -4
  630. package/locales/angular/global/de-it.js +4 -4
  631. package/locales/angular/global/de-li.js +4 -4
  632. package/locales/angular/global/de-lu.js +4 -4
  633. package/locales/angular/global/de.js +4 -4
  634. package/locales/angular/global/dje.js +4 -4
  635. package/locales/angular/global/doi.js +4 -4
  636. package/locales/angular/global/dsb.js +4 -4
  637. package/locales/angular/global/dua.js +4 -4
  638. package/locales/angular/global/dyo.js +4 -4
  639. package/locales/angular/global/dz.js +4 -4
  640. package/locales/angular/global/ebu.js +4 -4
  641. package/locales/angular/global/ee-tg.js +4 -4
  642. package/locales/angular/global/ee.js +4 -4
  643. package/locales/angular/global/el-cy.js +4 -4
  644. package/locales/angular/global/el.js +4 -4
  645. package/locales/angular/global/en-001.js +4 -4
  646. package/locales/angular/global/en-150.js +4 -4
  647. package/locales/angular/global/en-ae.js +4 -4
  648. package/locales/angular/global/en-ag.js +4 -4
  649. package/locales/angular/global/en-ai.js +4 -4
  650. package/locales/angular/global/en-as.js +4 -4
  651. package/locales/angular/global/en-at.js +4 -4
  652. package/locales/angular/global/en-au.js +4 -4
  653. package/locales/angular/global/en-bb.js +4 -4
  654. package/locales/angular/global/en-be.js +4 -4
  655. package/locales/angular/global/en-bi.js +4 -4
  656. package/locales/angular/global/en-bm.js +4 -4
  657. package/locales/angular/global/en-bs.js +4 -4
  658. package/locales/angular/global/en-bw.js +4 -4
  659. package/locales/angular/global/en-bz.js +4 -4
  660. package/locales/angular/global/en-ca.js +4 -4
  661. package/locales/angular/global/en-cc.js +4 -4
  662. package/locales/angular/global/en-ch.js +4 -4
  663. package/locales/angular/global/en-ck.js +4 -4
  664. package/locales/angular/global/en-cm.js +4 -4
  665. package/locales/angular/global/en-cx.js +4 -4
  666. package/locales/angular/global/en-cy.js +4 -4
  667. package/locales/angular/global/en-de.js +4 -4
  668. package/locales/angular/global/en-dg.js +4 -4
  669. package/locales/angular/global/en-dk.js +4 -4
  670. package/locales/angular/global/en-dm.js +4 -4
  671. package/locales/angular/global/en-er.js +4 -4
  672. package/locales/angular/global/en-fi.js +4 -4
  673. package/locales/angular/global/en-fj.js +4 -4
  674. package/locales/angular/global/en-fk.js +4 -4
  675. package/locales/angular/global/en-fm.js +4 -4
  676. package/locales/angular/global/en-gb.js +4 -4
  677. package/locales/angular/global/en-gd.js +4 -4
  678. package/locales/angular/global/en-gg.js +4 -4
  679. package/locales/angular/global/en-gh.js +4 -4
  680. package/locales/angular/global/en-gi.js +4 -4
  681. package/locales/angular/global/en-gm.js +4 -4
  682. package/locales/angular/global/en-gu.js +4 -4
  683. package/locales/angular/global/en-gy.js +4 -4
  684. package/locales/angular/global/en-hk.js +4 -4
  685. package/locales/angular/global/en-ie.js +4 -4
  686. package/locales/angular/global/en-il.js +4 -4
  687. package/locales/angular/global/en-im.js +4 -4
  688. package/locales/angular/global/en-in.js +4 -4
  689. package/locales/angular/global/en-io.js +4 -4
  690. package/locales/angular/global/en-je.js +4 -4
  691. package/locales/angular/global/en-jm.js +4 -4
  692. package/locales/angular/global/en-ke.js +4 -4
  693. package/locales/angular/global/en-ki.js +4 -4
  694. package/locales/angular/global/en-kn.js +4 -4
  695. package/locales/angular/global/en-ky.js +4 -4
  696. package/locales/angular/global/en-lc.js +4 -4
  697. package/locales/angular/global/en-lr.js +4 -4
  698. package/locales/angular/global/en-ls.js +4 -4
  699. package/locales/angular/global/en-mg.js +4 -4
  700. package/locales/angular/global/en-mh.js +4 -4
  701. package/locales/angular/global/en-mo.js +4 -4
  702. package/locales/angular/global/en-mp.js +4 -4
  703. package/locales/angular/global/en-ms.js +4 -4
  704. package/locales/angular/global/en-mt.js +4 -4
  705. package/locales/angular/global/en-mu.js +4 -4
  706. package/locales/angular/global/en-mv.js +4 -4
  707. package/locales/angular/global/en-mw.js +4 -4
  708. package/locales/angular/global/en-my.js +4 -4
  709. package/locales/angular/global/en-na.js +4 -4
  710. package/locales/angular/global/en-nf.js +4 -4
  711. package/locales/angular/global/en-ng.js +4 -4
  712. package/locales/angular/global/en-nl.js +4 -4
  713. package/locales/angular/global/en-nr.js +4 -4
  714. package/locales/angular/global/en-nu.js +4 -4
  715. package/locales/angular/global/en-nz.js +4 -4
  716. package/locales/angular/global/en-pg.js +4 -4
  717. package/locales/angular/global/en-ph.js +4 -4
  718. package/locales/angular/global/en-pk.js +4 -4
  719. package/locales/angular/global/en-pn.js +4 -4
  720. package/locales/angular/global/en-pr.js +4 -4
  721. package/locales/angular/global/en-pw.js +4 -4
  722. package/locales/angular/global/en-rw.js +4 -4
  723. package/locales/angular/global/en-sb.js +4 -4
  724. package/locales/angular/global/en-sc.js +4 -4
  725. package/locales/angular/global/en-sd.js +4 -4
  726. package/locales/angular/global/en-se.js +4 -4
  727. package/locales/angular/global/en-sg.js +4 -4
  728. package/locales/angular/global/en-sh.js +4 -4
  729. package/locales/angular/global/en-si.js +4 -4
  730. package/locales/angular/global/en-sl.js +4 -4
  731. package/locales/angular/global/en-ss.js +4 -4
  732. package/locales/angular/global/en-sx.js +4 -4
  733. package/locales/angular/global/en-sz.js +4 -4
  734. package/locales/angular/global/en-tc.js +4 -4
  735. package/locales/angular/global/en-tk.js +4 -4
  736. package/locales/angular/global/en-to.js +4 -4
  737. package/locales/angular/global/en-tt.js +4 -4
  738. package/locales/angular/global/en-tv.js +4 -4
  739. package/locales/angular/global/en-tz.js +4 -4
  740. package/locales/angular/global/en-ug.js +4 -4
  741. package/locales/angular/global/en-um.js +4 -4
  742. package/locales/angular/global/en-vc.js +4 -4
  743. package/locales/angular/global/en-vg.js +4 -4
  744. package/locales/angular/global/en-vi.js +4 -4
  745. package/locales/angular/global/en-vu.js +4 -4
  746. package/locales/angular/global/en-ws.js +4 -4
  747. package/locales/angular/global/en-za.js +4 -4
  748. package/locales/angular/global/en-zm.js +4 -4
  749. package/locales/angular/global/en-zw.js +4 -4
  750. package/locales/angular/global/en.js +4 -4
  751. package/locales/angular/global/eo.js +4 -4
  752. package/locales/angular/global/es-419.js +4 -4
  753. package/locales/angular/global/es-ar.js +4 -4
  754. package/locales/angular/global/es-bo.js +4 -4
  755. package/locales/angular/global/es-br.js +4 -4
  756. package/locales/angular/global/es-bz.js +4 -4
  757. package/locales/angular/global/es-cl.js +4 -4
  758. package/locales/angular/global/es-co.js +4 -4
  759. package/locales/angular/global/es-cr.js +4 -4
  760. package/locales/angular/global/es-cu.js +4 -4
  761. package/locales/angular/global/es-do.js +4 -4
  762. package/locales/angular/global/es-ea.js +4 -4
  763. package/locales/angular/global/es-ec.js +4 -4
  764. package/locales/angular/global/es-gq.js +4 -4
  765. package/locales/angular/global/es-gt.js +4 -4
  766. package/locales/angular/global/es-hn.js +4 -4
  767. package/locales/angular/global/es-ic.js +4 -4
  768. package/locales/angular/global/es-mx.js +4 -4
  769. package/locales/angular/global/es-ni.js +4 -4
  770. package/locales/angular/global/es-pa.js +4 -4
  771. package/locales/angular/global/es-pe.js +4 -4
  772. package/locales/angular/global/es-ph.js +4 -4
  773. package/locales/angular/global/es-pr.js +4 -4
  774. package/locales/angular/global/es-py.js +4 -4
  775. package/locales/angular/global/es-sv.js +4 -4
  776. package/locales/angular/global/es-us.js +4 -4
  777. package/locales/angular/global/es-uy.js +4 -4
  778. package/locales/angular/global/es-ve.js +4 -4
  779. package/locales/angular/global/es.js +4 -4
  780. package/locales/angular/global/et.js +4 -4
  781. package/locales/angular/global/eu.js +4 -4
  782. package/locales/angular/global/ewo.js +4 -4
  783. package/locales/angular/global/fa-af.js +4 -4
  784. package/locales/angular/global/fa.js +4 -4
  785. package/locales/angular/global/ff-adlm-bf.js +4 -4
  786. package/locales/angular/global/ff-adlm-cm.js +4 -4
  787. package/locales/angular/global/ff-adlm-gh.js +4 -4
  788. package/locales/angular/global/ff-adlm-gm.js +4 -4
  789. package/locales/angular/global/ff-adlm-gw.js +4 -4
  790. package/locales/angular/global/ff-adlm-lr.js +4 -4
  791. package/locales/angular/global/ff-adlm-mr.js +4 -4
  792. package/locales/angular/global/ff-adlm-ne.js +4 -4
  793. package/locales/angular/global/ff-adlm-ng.js +4 -4
  794. package/locales/angular/global/ff-adlm-sl.js +4 -4
  795. package/locales/angular/global/ff-adlm-sn.js +4 -4
  796. package/locales/angular/global/ff-adlm.js +4 -4
  797. package/locales/angular/global/ff-cm.js +58 -44
  798. package/locales/angular/global/ff-gn.js +58 -44
  799. package/locales/angular/global/ff-latn-bf.js +4 -4
  800. package/locales/angular/global/ff-latn-cm.js +4 -4
  801. package/locales/angular/global/ff-latn-gh.js +4 -4
  802. package/locales/angular/global/ff-latn-gm.js +4 -4
  803. package/locales/angular/global/ff-latn-gn.js +4 -4
  804. package/locales/angular/global/ff-latn-gw.js +4 -4
  805. package/locales/angular/global/ff-latn-lr.js +4 -4
  806. package/locales/angular/global/ff-latn-mr.js +4 -4
  807. package/locales/angular/global/ff-latn-ne.js +4 -4
  808. package/locales/angular/global/ff-latn-ng.js +4 -4
  809. package/locales/angular/global/ff-latn-sl.js +4 -4
  810. package/locales/angular/global/ff-latn.js +4 -4
  811. package/locales/angular/global/ff-mr.js +58 -44
  812. package/locales/angular/global/ff.js +4 -4
  813. package/locales/angular/global/fi.js +4 -4
  814. package/locales/angular/global/fil.js +4 -4
  815. package/locales/angular/global/fo-dk.js +4 -4
  816. package/locales/angular/global/fo.js +4 -4
  817. package/locales/angular/global/fr-be.js +4 -4
  818. package/locales/angular/global/fr-bf.js +4 -4
  819. package/locales/angular/global/fr-bi.js +4 -4
  820. package/locales/angular/global/fr-bj.js +4 -4
  821. package/locales/angular/global/fr-bl.js +4 -4
  822. package/locales/angular/global/fr-ca.js +4 -4
  823. package/locales/angular/global/fr-cd.js +4 -4
  824. package/locales/angular/global/fr-cf.js +4 -4
  825. package/locales/angular/global/fr-cg.js +4 -4
  826. package/locales/angular/global/fr-ch.js +4 -4
  827. package/locales/angular/global/fr-ci.js +4 -4
  828. package/locales/angular/global/fr-cm.js +4 -4
  829. package/locales/angular/global/fr-dj.js +4 -4
  830. package/locales/angular/global/fr-dz.js +4 -4
  831. package/locales/angular/global/fr-ga.js +4 -4
  832. package/locales/angular/global/fr-gf.js +4 -4
  833. package/locales/angular/global/fr-gn.js +4 -4
  834. package/locales/angular/global/fr-gp.js +4 -4
  835. package/locales/angular/global/fr-gq.js +4 -4
  836. package/locales/angular/global/fr-ht.js +4 -4
  837. package/locales/angular/global/fr-km.js +4 -4
  838. package/locales/angular/global/fr-lu.js +4 -4
  839. package/locales/angular/global/fr-ma.js +4 -4
  840. package/locales/angular/global/fr-mc.js +4 -4
  841. package/locales/angular/global/fr-mf.js +4 -4
  842. package/locales/angular/global/fr-mg.js +4 -4
  843. package/locales/angular/global/fr-ml.js +4 -4
  844. package/locales/angular/global/fr-mq.js +4 -4
  845. package/locales/angular/global/fr-mr.js +4 -4
  846. package/locales/angular/global/fr-mu.js +4 -4
  847. package/locales/angular/global/fr-nc.js +4 -4
  848. package/locales/angular/global/fr-ne.js +4 -4
  849. package/locales/angular/global/fr-pf.js +4 -4
  850. package/locales/angular/global/fr-pm.js +4 -4
  851. package/locales/angular/global/fr-re.js +4 -4
  852. package/locales/angular/global/fr-rw.js +4 -4
  853. package/locales/angular/global/fr-sc.js +4 -4
  854. package/locales/angular/global/fr-sn.js +4 -4
  855. package/locales/angular/global/fr-sy.js +4 -4
  856. package/locales/angular/global/fr-td.js +4 -4
  857. package/locales/angular/global/fr-tg.js +4 -4
  858. package/locales/angular/global/fr-tn.js +4 -4
  859. package/locales/angular/global/fr-vu.js +4 -4
  860. package/locales/angular/global/fr-wf.js +4 -4
  861. package/locales/angular/global/fr-yt.js +4 -4
  862. package/locales/angular/global/fr.js +4 -4
  863. package/locales/angular/global/fur.js +4 -4
  864. package/locales/angular/global/fy.js +4 -4
  865. package/locales/angular/global/ga-gb.js +4 -4
  866. package/locales/angular/global/ga.js +4 -4
  867. package/locales/angular/global/gd.js +4 -4
  868. package/locales/angular/global/gl.js +4 -4
  869. package/locales/angular/global/gsw-fr.js +4 -4
  870. package/locales/angular/global/gsw-li.js +4 -4
  871. package/locales/angular/global/gsw.js +4 -4
  872. package/locales/angular/global/gu.js +4 -4
  873. package/locales/angular/global/guz.js +4 -4
  874. package/locales/angular/global/gv.js +4 -4
  875. package/locales/angular/global/ha-gh.js +4 -4
  876. package/locales/angular/global/ha-ne.js +4 -4
  877. package/locales/angular/global/ha.js +4 -4
  878. package/locales/angular/global/haw.js +4 -4
  879. package/locales/angular/global/he.js +4 -4
  880. package/locales/angular/global/hi-latn.js +4 -4
  881. package/locales/angular/global/hi.js +4 -4
  882. package/locales/angular/global/hr-ba.js +4 -4
  883. package/locales/angular/global/hr.js +4 -4
  884. package/locales/angular/global/hsb.js +4 -4
  885. package/locales/angular/global/hu.js +4 -4
  886. package/locales/angular/global/hy.js +4 -4
  887. package/locales/angular/global/ia.js +4 -4
  888. package/locales/angular/global/id.js +4 -4
  889. package/locales/angular/global/ig.js +4 -4
  890. package/locales/angular/global/ii.js +4 -4
  891. package/locales/angular/global/is.js +4 -4
  892. package/locales/angular/global/it-ch.js +4 -4
  893. package/locales/angular/global/it-sm.js +4 -4
  894. package/locales/angular/global/it-va.js +4 -4
  895. package/locales/angular/global/it.js +4 -4
  896. package/locales/angular/global/ja.js +4 -4
  897. package/locales/angular/global/jgo.js +4 -4
  898. package/locales/angular/global/jmc.js +4 -4
  899. package/locales/angular/global/jv.js +4 -4
  900. package/locales/angular/global/ka.js +4 -4
  901. package/locales/angular/global/kab.js +4 -4
  902. package/locales/angular/global/kam.js +4 -4
  903. package/locales/angular/global/kde.js +4 -4
  904. package/locales/angular/global/kea.js +4 -4
  905. package/locales/angular/global/kgp.js +4 -4
  906. package/locales/angular/global/khq.js +4 -4
  907. package/locales/angular/global/ki.js +4 -4
  908. package/locales/angular/global/kk.js +4 -4
  909. package/locales/angular/global/kkj.js +4 -4
  910. package/locales/angular/global/kl.js +4 -4
  911. package/locales/angular/global/kln.js +4 -4
  912. package/locales/angular/global/km.js +4 -4
  913. package/locales/angular/global/kn.js +4 -4
  914. package/locales/angular/global/ko-kp.js +4 -4
  915. package/locales/angular/global/ko.js +4 -4
  916. package/locales/angular/global/kok.js +4 -4
  917. package/locales/angular/global/ks-arab.js +4 -4
  918. package/locales/angular/global/ks-deva.js +4 -4
  919. package/locales/angular/global/ks.js +4 -4
  920. package/locales/angular/global/ksb.js +4 -4
  921. package/locales/angular/global/ksf.js +4 -4
  922. package/locales/angular/global/ksh.js +4 -4
  923. package/locales/angular/global/ku.js +4 -4
  924. package/locales/angular/global/kw.js +4 -4
  925. package/locales/angular/global/ky.js +4 -4
  926. package/locales/angular/global/lag.js +4 -4
  927. package/locales/angular/global/lb.js +4 -4
  928. package/locales/angular/global/lg.js +4 -4
  929. package/locales/angular/global/lkt.js +4 -4
  930. package/locales/angular/global/ln-ao.js +4 -4
  931. package/locales/angular/global/ln-cf.js +4 -4
  932. package/locales/angular/global/ln-cg.js +4 -4
  933. package/locales/angular/global/ln.js +4 -4
  934. package/locales/angular/global/lo.js +4 -4
  935. package/locales/angular/global/lrc-iq.js +4 -4
  936. package/locales/angular/global/lrc.js +4 -4
  937. package/locales/angular/global/lt.js +4 -4
  938. package/locales/angular/global/lu.js +4 -4
  939. package/locales/angular/global/luo.js +4 -4
  940. package/locales/angular/global/luy.js +4 -4
  941. package/locales/angular/global/lv.js +4 -4
  942. package/locales/angular/global/mai.js +4 -4
  943. package/locales/angular/global/mas-tz.js +4 -4
  944. package/locales/angular/global/mas.js +4 -4
  945. package/locales/angular/global/mer.js +4 -4
  946. package/locales/angular/global/mfe.js +4 -4
  947. package/locales/angular/global/mg.js +4 -4
  948. package/locales/angular/global/mgh.js +4 -4
  949. package/locales/angular/global/mgo.js +4 -4
  950. package/locales/angular/global/mi.js +4 -4
  951. package/locales/angular/global/mk.js +4 -4
  952. package/locales/angular/global/ml.js +4 -4
  953. package/locales/angular/global/mn.js +4 -4
  954. package/locales/angular/global/mni-beng.js +4 -4
  955. package/locales/angular/global/mni.js +4 -4
  956. package/locales/angular/global/mr.js +4 -4
  957. package/locales/angular/global/ms-bn.js +4 -4
  958. package/locales/angular/global/ms-id.js +4 -4
  959. package/locales/angular/global/ms-sg.js +4 -4
  960. package/locales/angular/global/ms.js +4 -4
  961. package/locales/angular/global/mt.js +4 -4
  962. package/locales/angular/global/mua.js +4 -4
  963. package/locales/angular/global/my.js +4 -4
  964. package/locales/angular/global/mzn.js +4 -4
  965. package/locales/angular/global/naq.js +4 -4
  966. package/locales/angular/global/nb-sj.js +4 -4
  967. package/locales/angular/global/nb.js +4 -4
  968. package/locales/angular/global/nd.js +4 -4
  969. package/locales/angular/global/nds-nl.js +4 -4
  970. package/locales/angular/global/nds.js +4 -4
  971. package/locales/angular/global/ne-in.js +4 -4
  972. package/locales/angular/global/ne.js +4 -4
  973. package/locales/angular/global/nl-aw.js +4 -4
  974. package/locales/angular/global/nl-be.js +4 -4
  975. package/locales/angular/global/nl-bq.js +4 -4
  976. package/locales/angular/global/nl-cw.js +4 -4
  977. package/locales/angular/global/nl-sr.js +4 -4
  978. package/locales/angular/global/nl-sx.js +4 -4
  979. package/locales/angular/global/nl.js +4 -4
  980. package/locales/angular/global/nmg.js +4 -4
  981. package/locales/angular/global/nn.js +4 -4
  982. package/locales/angular/global/nnh.js +4 -4
  983. package/locales/angular/global/no.js +4 -4
  984. package/locales/angular/global/nus.js +4 -4
  985. package/locales/angular/global/nyn.js +4 -4
  986. package/locales/angular/global/om-ke.js +4 -4
  987. package/locales/angular/global/om.js +4 -4
  988. package/locales/angular/global/or.js +4 -4
  989. package/locales/angular/global/os-ru.js +4 -4
  990. package/locales/angular/global/os.js +4 -4
  991. package/locales/angular/global/pa-arab.js +4 -4
  992. package/locales/angular/global/pa-guru.js +4 -4
  993. package/locales/angular/global/pa.js +4 -4
  994. package/locales/angular/global/pcm.js +4 -4
  995. package/locales/angular/global/pl.js +4 -4
  996. package/locales/angular/global/ps-pk.js +4 -4
  997. package/locales/angular/global/ps.js +4 -4
  998. package/locales/angular/global/pt-ao.js +4 -4
  999. package/locales/angular/global/pt-ch.js +4 -4
  1000. package/locales/angular/global/pt-cv.js +4 -4
  1001. package/locales/angular/global/pt-gq.js +4 -4
  1002. package/locales/angular/global/pt-gw.js +4 -4
  1003. package/locales/angular/global/pt-lu.js +4 -4
  1004. package/locales/angular/global/pt-mo.js +4 -4
  1005. package/locales/angular/global/pt-mz.js +4 -4
  1006. package/locales/angular/global/pt-pt.js +4 -4
  1007. package/locales/angular/global/pt-st.js +4 -4
  1008. package/locales/angular/global/pt-tl.js +4 -4
  1009. package/locales/angular/global/pt.js +4 -4
  1010. package/locales/angular/global/qu-bo.js +4 -4
  1011. package/locales/angular/global/qu-ec.js +4 -4
  1012. package/locales/angular/global/qu.js +4 -4
  1013. package/locales/angular/global/rm.js +4 -4
  1014. package/locales/angular/global/rn.js +4 -4
  1015. package/locales/angular/global/ro-md.js +4 -4
  1016. package/locales/angular/global/ro.js +4 -4
  1017. package/locales/angular/global/rof.js +4 -4
  1018. package/locales/angular/global/ru-by.js +4 -4
  1019. package/locales/angular/global/ru-kg.js +4 -4
  1020. package/locales/angular/global/ru-kz.js +4 -4
  1021. package/locales/angular/global/ru-md.js +4 -4
  1022. package/locales/angular/global/ru-ua.js +4 -4
  1023. package/locales/angular/global/ru.js +4 -4
  1024. package/locales/angular/global/rw.js +4 -4
  1025. package/locales/angular/global/rwk.js +4 -4
  1026. package/locales/angular/global/sa.js +4 -4
  1027. package/locales/angular/global/sah.js +4 -4
  1028. package/locales/angular/global/saq.js +4 -4
  1029. package/locales/angular/global/sat-olck.js +4 -4
  1030. package/locales/angular/global/sat.js +4 -4
  1031. package/locales/angular/global/sbp.js +4 -4
  1032. package/locales/angular/global/sc.js +4 -4
  1033. package/locales/angular/global/sd-arab.js +4 -4
  1034. package/locales/angular/global/sd-deva.js +4 -4
  1035. package/locales/angular/global/sd.js +4 -4
  1036. package/locales/angular/global/se-fi.js +4 -4
  1037. package/locales/angular/global/se-se.js +4 -4
  1038. package/locales/angular/global/se.js +4 -4
  1039. package/locales/angular/global/seh.js +4 -4
  1040. package/locales/angular/global/ses.js +4 -4
  1041. package/locales/angular/global/sg.js +4 -4
  1042. package/locales/angular/global/shi-latn.js +4 -4
  1043. package/locales/angular/global/shi-tfng.js +4 -4
  1044. package/locales/angular/global/shi.js +4 -4
  1045. package/locales/angular/global/si.js +4 -4
  1046. package/locales/angular/global/sk.js +4 -4
  1047. package/locales/angular/global/sl.js +4 -4
  1048. package/locales/angular/global/smn.js +4 -4
  1049. package/locales/angular/global/sn.js +4 -4
  1050. package/locales/angular/global/so-dj.js +4 -4
  1051. package/locales/angular/global/so-et.js +4 -4
  1052. package/locales/angular/global/so-ke.js +4 -4
  1053. package/locales/angular/global/so.js +4 -4
  1054. package/locales/angular/global/sq-mk.js +4 -4
  1055. package/locales/angular/global/sq-xk.js +4 -4
  1056. package/locales/angular/global/sq.js +4 -4
  1057. package/locales/angular/global/sr-cyrl-ba.js +4 -4
  1058. package/locales/angular/global/sr-cyrl-me.js +4 -4
  1059. package/locales/angular/global/sr-cyrl-xk.js +4 -4
  1060. package/locales/angular/global/sr-cyrl.js +4 -4
  1061. package/locales/angular/global/sr-latn-ba.js +4 -4
  1062. package/locales/angular/global/sr-latn-me.js +4 -4
  1063. package/locales/angular/global/sr-latn-xk.js +4 -4
  1064. package/locales/angular/global/sr-latn.js +4 -4
  1065. package/locales/angular/global/sr.js +4 -4
  1066. package/locales/angular/global/su-latn.js +4 -4
  1067. package/locales/angular/global/su.js +4 -4
  1068. package/locales/angular/global/sv-ax.js +4 -4
  1069. package/locales/angular/global/sv-fi.js +4 -4
  1070. package/locales/angular/global/sv.js +4 -4
  1071. package/locales/angular/global/sw-cd.js +4 -4
  1072. package/locales/angular/global/sw-ke.js +4 -4
  1073. package/locales/angular/global/sw-ug.js +4 -4
  1074. package/locales/angular/global/sw.js +4 -4
  1075. package/locales/angular/global/ta-lk.js +4 -4
  1076. package/locales/angular/global/ta-my.js +4 -4
  1077. package/locales/angular/global/ta-sg.js +4 -4
  1078. package/locales/angular/global/ta.js +4 -4
  1079. package/locales/angular/global/te.js +4 -4
  1080. package/locales/angular/global/teo-ke.js +4 -4
  1081. package/locales/angular/global/teo.js +4 -4
  1082. package/locales/angular/global/tg.js +4 -4
  1083. package/locales/angular/global/th.js +4 -4
  1084. package/locales/angular/global/ti-er.js +4 -4
  1085. package/locales/angular/global/ti.js +4 -4
  1086. package/locales/angular/global/tk.js +4 -4
  1087. package/locales/angular/global/to.js +4 -4
  1088. package/locales/angular/global/tr-cy.js +4 -4
  1089. package/locales/angular/global/tr.js +4 -4
  1090. package/locales/angular/global/tt.js +4 -4
  1091. package/locales/angular/global/twq.js +4 -4
  1092. package/locales/angular/global/tzm.js +4 -4
  1093. package/locales/angular/global/ug.js +4 -4
  1094. package/locales/angular/global/uk.js +4 -4
  1095. package/locales/angular/global/und.js +4 -4
  1096. package/locales/angular/global/ur-in.js +4 -4
  1097. package/locales/angular/global/ur.js +4 -4
  1098. package/locales/angular/global/uz-arab.js +4 -4
  1099. package/locales/angular/global/uz-cyrl.js +4 -4
  1100. package/locales/angular/global/uz-latn.js +4 -4
  1101. package/locales/angular/global/uz.js +4 -4
  1102. package/locales/angular/global/vai-latn.js +4 -4
  1103. package/locales/angular/global/vai-vaii.js +4 -4
  1104. package/locales/angular/global/vai.js +4 -4
  1105. package/locales/angular/global/vi.js +4 -4
  1106. package/locales/angular/global/vun.js +4 -4
  1107. package/locales/angular/global/wae.js +4 -4
  1108. package/locales/angular/global/wo.js +4 -4
  1109. package/locales/angular/global/xh.js +4 -4
  1110. package/locales/angular/global/xog.js +4 -4
  1111. package/locales/angular/global/yav.js +4 -4
  1112. package/locales/angular/global/yi.js +4 -4
  1113. package/locales/angular/global/yo-bj.js +4 -4
  1114. package/locales/angular/global/yo.js +4 -4
  1115. package/locales/angular/global/yrl-co.js +4 -4
  1116. package/locales/angular/global/yrl-ve.js +4 -4
  1117. package/locales/angular/global/yrl.js +4 -4
  1118. package/locales/angular/global/yue-hans.js +4 -4
  1119. package/locales/angular/global/yue-hant.js +4 -4
  1120. package/locales/angular/global/yue.js +4 -4
  1121. package/locales/angular/global/zgh.js +4 -4
  1122. package/locales/angular/global/zh-hans-hk.js +4 -4
  1123. package/locales/angular/global/zh-hans-mo.js +4 -4
  1124. package/locales/angular/global/zh-hans-sg.js +4 -4
  1125. package/locales/angular/global/zh-hans.js +4 -4
  1126. package/locales/angular/global/zh-hant-hk.js +4 -4
  1127. package/locales/angular/global/zh-hant-mo.js +4 -4
  1128. package/locales/angular/global/zh-hant.js +4 -4
  1129. package/locales/angular/global/zh.js +4 -4
  1130. package/locales/angular/global/zu.js +4 -4
  1131. package/mobile/components/basic/default/bundles/index.umd.js +148 -143
  1132. package/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +8 -7
  1133. package/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +7 -6
  1134. package/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
  1135. package/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +47 -43
  1136. package/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +7 -5
  1137. package/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +6 -5
  1138. package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +49 -47
  1139. package/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
  1140. package/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +31 -32
  1141. package/mobile/components/basic/default/fesm2022/index.mjs +146 -140
  1142. package/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
  1143. package/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +2 -2
  1144. package/mobile/components/basic/search/bundles/index.umd.js +3 -3
  1145. package/mobile/components/basic/search/esm2022/search.directive.mjs +3 -3
  1146. package/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
  1147. package/mobile/components/basic/search/fesm2022/index.mjs +3 -3
  1148. package/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
  1149. package/mobile/components/containers/segmented-control/bundles/index.umd.js +42 -30
  1150. package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +14 -8
  1151. package/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +28 -21
  1152. package/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
  1153. package/mobile/components/containers/segmented-control/fesm2022/index.mjs +41 -28
  1154. package/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
  1155. package/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +2 -2
  1156. package/mobile/components/containers/segmented-control/segmented-control.component.d.ts +2 -2
  1157. package/mobile/components/data/media-list/bundles/index.umd.js +53 -48
  1158. package/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
  1159. package/mobile/components/data/media-list/esm2022/media-list.component.mjs +48 -42
  1160. package/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
  1161. package/mobile/components/data/media-list/fesm2022/index.mjs +50 -44
  1162. package/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
  1163. package/mobile/components/data/media-list/media-list.component.d.ts +2 -2
  1164. package/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +2 -2
  1165. package/mobile/components/device/barcode-scanner/bundles/index.umd.js +14 -8
  1166. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +15 -9
  1167. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
  1168. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs +16 -10
  1169. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  1170. package/mobile/components/device/camera/bundles/index.umd.js +15 -9
  1171. package/mobile/components/device/camera/camera.component.d.ts +2 -2
  1172. package/mobile/components/device/camera/esm2022/camera.component.mjs +16 -10
  1173. package/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
  1174. package/mobile/components/device/camera/fesm2022/index.mjs +17 -11
  1175. package/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  1176. package/mobile/components/input/file-upload/bundles/index.umd.js +3 -3
  1177. package/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +3 -3
  1178. package/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
  1179. package/mobile/components/input/file-upload/fesm2022/index.mjs +3 -3
  1180. package/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  1181. package/mobile/components/page/default/bundles/index.umd.js +11 -10
  1182. package/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +4 -3
  1183. package/mobile/components/page/default/esm2022/page.directive.mjs +5 -4
  1184. package/mobile/components/page/default/esm2022/page.module.mjs +2 -2
  1185. package/mobile/components/page/default/fesm2022/index.mjs +8 -6
  1186. package/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
  1187. package/mobile/components/page/left-panel/bundles/index.umd.js +3 -3
  1188. package/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -3
  1189. package/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
  1190. package/mobile/components/page/left-panel/fesm2022/index.mjs +3 -3
  1191. package/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  1192. package/mobile/components/page/mobile-navbar/bundles/index.umd.js +40 -35
  1193. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +41 -36
  1194. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
  1195. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs +41 -36
  1196. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
  1197. package/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +2 -2
  1198. package/mobile/components/page/tab-bar/bundles/index.umd.js +52 -46
  1199. package/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
  1200. package/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +50 -43
  1201. package/mobile/components/page/tab-bar/fesm2022/index.mjs +51 -44
  1202. package/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
  1203. package/mobile/components/page/tab-bar/tabbar.component.d.ts +2 -2
  1204. package/mobile/core/bundles/index.umd.js +43 -43
  1205. package/mobile/core/esm2022/core.module.mjs +3 -3
  1206. package/mobile/core/esm2022/native.xhr.mjs +1 -1
  1207. package/mobile/core/esm2022/services/device-file-cache.service.mjs +3 -3
  1208. package/mobile/core/esm2022/services/device-file-download.service.mjs +7 -6
  1209. package/mobile/core/esm2022/services/device-file-opener.service.mjs +5 -4
  1210. package/mobile/core/esm2022/services/device-file-upload.service.mjs +6 -5
  1211. package/mobile/core/esm2022/services/device-file.service.mjs +8 -7
  1212. package/mobile/core/esm2022/services/device.service.mjs +5 -4
  1213. package/mobile/core/esm2022/services/ext-app-message.service.mjs +7 -6
  1214. package/mobile/core/esm2022/services/network.service.mjs +11 -10
  1215. package/mobile/core/fesm2022/index.mjs +40 -39
  1216. package/mobile/core/fesm2022/index.mjs.map +1 -1
  1217. package/mobile/core/services/ext-app-message.service.d.ts +1 -1
  1218. package/mobile/core/services/network.service.d.ts +7 -1
  1219. package/mobile/offline/bundles/index.umd.js +176 -159
  1220. package/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
  1221. package/mobile/offline/esm2022/offline.module.mjs +3 -3
  1222. package/mobile/offline/esm2022/services/change-log.service.mjs +9 -8
  1223. package/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +39 -37
  1224. package/mobile/offline/esm2022/services/local-db-management.service.mjs +56 -47
  1225. package/mobile/offline/esm2022/services/local-db.service.mjs +7 -6
  1226. package/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
  1227. package/mobile/offline/esm2022/services/push.service.mjs +3 -3
  1228. package/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
  1229. package/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
  1230. package/mobile/offline/esm2022/services/workers/id-resolver.mjs +3 -3
  1231. package/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
  1232. package/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
  1233. package/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
  1234. package/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
  1235. package/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
  1236. package/mobile/offline/esm2022/utils/utils.mjs +1 -1
  1237. package/mobile/offline/fesm2022/index.mjs +171 -153
  1238. package/mobile/offline/fesm2022/index.mjs.map +1 -1
  1239. package/mobile/placeholder/runtime/bundles/index.umd.js +3 -2
  1240. package/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +3 -2
  1241. package/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
  1242. package/mobile/placeholder/runtime/fesm2022/index.mjs +3 -2
  1243. package/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
  1244. package/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
  1245. package/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1246. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
  1247. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1248. package/mobile/runtime/bundles/index.umd.js +21 -17
  1249. package/mobile/runtime/esm2022/components/app-ext.component.mjs +4 -3
  1250. package/mobile/runtime/esm2022/mobile-runtime.module.mjs +5 -4
  1251. package/mobile/runtime/esm2022/services/cookie.service.mjs +7 -3
  1252. package/mobile/runtime/esm2022/services/http-interceptor.service.mjs +6 -5
  1253. package/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
  1254. package/mobile/runtime/fesm2022/index.mjs +18 -13
  1255. package/mobile/runtime/fesm2022/index.mjs.map +1 -1
  1256. package/mobile/runtime-dynamic/bundles/index.umd.js +5 -5
  1257. package/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
  1258. package/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +5 -5
  1259. package/mobile/runtime-dynamic/fesm2022/index.mjs +5 -5
  1260. package/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
  1261. package/mobile/variables/bundles/index.umd.js +28 -21
  1262. package/mobile/variables/esm2022/services/camera-service.mjs +5 -5
  1263. package/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
  1264. package/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
  1265. package/mobile/variables/esm2022/services/device-service/device-service.mjs +1 -1
  1266. package/mobile/variables/esm2022/services/device-service/location-service.mjs +1 -1
  1267. package/mobile/variables/esm2022/services/file-service.mjs +11 -3
  1268. package/mobile/variables/esm2022/services/scan-service.mjs +1 -1
  1269. package/mobile/variables/esm2022/variables.module.mjs +3 -3
  1270. package/mobile/variables/fesm2022/index.mjs +24 -16
  1271. package/mobile/variables/fesm2022/index.mjs.map +1 -1
  1272. package/oAuth/bundles/index.umd.js +15 -15
  1273. package/oAuth/esm2022/oAuth.module.mjs +2 -2
  1274. package/oAuth/esm2022/oAuth.service.mjs +6 -5
  1275. package/oAuth/esm2022/oAuth.utils.mjs +8 -7
  1276. package/oAuth/fesm2022/index.mjs +12 -11
  1277. package/oAuth/fesm2022/index.mjs.map +1 -1
  1278. package/package.json +1 -1
  1279. package/runtime/base/bundles/index.umd.js +243 -237
  1280. package/runtime/base/esm2022/components/app-component/app.component.mjs +27 -27
  1281. package/runtime/base/esm2022/components/app-spinner.component.mjs +9 -8
  1282. package/runtime/base/esm2022/components/base-layout.component.mjs +5 -4
  1283. package/runtime/base/esm2022/components/base-page.component.mjs +16 -15
  1284. package/runtime/base/esm2022/components/base-partial.component.mjs +15 -14
  1285. package/runtime/base/esm2022/components/base-prefab.component.mjs +17 -16
  1286. package/runtime/base/esm2022/components/base-spa-page.component.mjs +16 -15
  1287. package/runtime/base/esm2022/components/custom-toaster.component.mjs +17 -15
  1288. package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
  1289. package/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -3
  1290. package/runtime/base/esm2022/directives/accessroles.directive.mjs +13 -12
  1291. package/runtime/base/esm2022/directives/prefab.directive.mjs +4 -4
  1292. package/runtime/base/esm2022/guards/auth.guard.mjs +3 -3
  1293. package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
  1294. package/runtime/base/esm2022/guards/page-not-found.guard.mjs +3 -3
  1295. package/runtime/base/esm2022/guards/role.guard.mjs +5 -4
  1296. package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +4 -4
  1297. package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +5 -5
  1298. package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +3 -3
  1299. package/runtime/base/esm2022/resolves/app-js.resolve.mjs +3 -3
  1300. package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +3 -3
  1301. package/runtime/base/esm2022/resolves/i18n.resolve.mjs +3 -3
  1302. package/runtime/base/esm2022/resolves/metadata.resolve.mjs +3 -3
  1303. package/runtime/base/esm2022/resolves/security-config.resolve.mjs +3 -3
  1304. package/runtime/base/esm2022/runtime-base.module.mjs +3 -3
  1305. package/runtime/base/esm2022/services/app-defaults.service.mjs +3 -3
  1306. package/runtime/base/esm2022/services/app.manager.service.mjs +19 -16
  1307. package/runtime/base/esm2022/services/app.service.mjs +9 -8
  1308. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +5 -4
  1309. package/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -5
  1310. package/runtime/base/esm2022/services/i18n.service.mjs +15 -13
  1311. package/runtime/base/esm2022/services/navigation.service.mjs +10 -9
  1312. package/runtime/base/esm2022/services/pipe-provider.service.mjs +3 -3
  1313. package/runtime/base/esm2022/services/pipe.service.mjs +3 -3
  1314. package/runtime/base/esm2022/services/prefab-manager.service.mjs +5 -4
  1315. package/runtime/base/esm2022/services/spinner.service.mjs +9 -8
  1316. package/runtime/base/esm2022/services/toaster.service.mjs +8 -7
  1317. package/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
  1318. package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +7 -8
  1319. package/runtime/base/fesm2022/index.mjs +253 -247
  1320. package/runtime/base/fesm2022/index.mjs.map +1 -1
  1321. package/runtime/base/overrides/wm_dom_renderer.d.ts +2 -2
  1322. package/runtime/base/services/i18n.service.d.ts +1 -1
  1323. package/runtime/dynamic/bundles/index.umd.js +22 -21
  1324. package/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
  1325. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +4 -3
  1326. package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +3 -3
  1327. package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +3 -3
  1328. package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +3 -3
  1329. package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +3 -3
  1330. package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +6 -5
  1331. package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
  1332. package/runtime/dynamic/esm2022/main.mjs +3 -2
  1333. package/runtime/dynamic/fesm2022/index.mjs +21 -19
  1334. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  1335. package/scripts/datatable/datatable.js +2 -1
  1336. package/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
  1337. package/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
  1338. package/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
  1339. package/security/bundles/index.umd.js +17 -17
  1340. package/security/esm2022/security.module.mjs +2 -2
  1341. package/security/esm2022/security.service.mjs +14 -13
  1342. package/security/fesm2022/index.mjs +14 -13
  1343. package/security/fesm2022/index.mjs.map +1 -1
  1344. package/security/security.service.d.ts +1 -1
  1345. package/swipey/esm2022/swipe.animation.mjs +1 -1
  1346. package/swipey/fesm2022/index.mjs.map +1 -1
  1347. package/transpiler/bundles/index.umd.js +10 -9
  1348. package/transpiler/esm2022/build.mjs +8 -6
  1349. package/transpiler/fesm2022/index.mjs +7 -5
  1350. package/transpiler/fesm2022/index.mjs.map +1 -1
  1351. package/variables/bundles/index.umd.js +160 -150
  1352. package/variables/esm2022/factory/variable.factory.mjs +1 -1
  1353. package/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
  1354. package/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
  1355. package/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
  1356. package/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
  1357. package/variables/esm2022/manager/variable/device-variable-manager.mjs +1 -1
  1358. package/variables/esm2022/manager/variable/device-variable-service.mjs +1 -1
  1359. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
  1360. package/variables/esm2022/model/action/notification-action.mjs +1 -1
  1361. package/variables/esm2022/service/metadata-service/metadata.service.mjs +3 -3
  1362. package/variables/esm2022/service/variables.service.mjs +9 -8
  1363. package/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
  1364. package/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
  1365. package/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
  1366. package/variables/esm2022/util/variable/variables.utils.mjs +75 -70
  1367. package/variables/esm2022/variables.module.mjs +2 -2
  1368. package/variables/fesm2022/index.mjs +174 -163
  1369. package/variables/fesm2022/index.mjs.map +1 -1
  1370. package/variables/util/variable/service-variable.utils.d.ts +1 -1
  1371. package/build-task/package.json +0 -28
  1372. package/components/advanced/carousel/package.json +0 -23
  1373. package/components/advanced/login/package.json +0 -23
  1374. package/components/advanced/marquee/package.json +0 -23
  1375. package/components/base/package.json +0 -28
  1376. package/components/basic/default/package.json +0 -23
  1377. package/components/basic/progress/package.json +0 -23
  1378. package/components/basic/rich-text-editor/package.json +0 -23
  1379. package/components/basic/search/package.json +0 -23
  1380. package/components/basic/tree/package.json +0 -23
  1381. package/components/chart/package.json +0 -23
  1382. package/components/containers/accordion/package.json +0 -23
  1383. package/components/containers/layout-grid/package.json +0 -23
  1384. package/components/containers/linear-layout/package.json +0 -23
  1385. package/components/containers/panel/package.json +0 -23
  1386. package/components/containers/tabs/package.json +0 -23
  1387. package/components/containers/tile/package.json +0 -23
  1388. package/components/containers/wizard/package.json +0 -23
  1389. package/components/data/card/package.json +0 -23
  1390. package/components/data/form/package.json +0 -23
  1391. package/components/data/list/package.json +0 -23
  1392. package/components/data/live-table/package.json +0 -23
  1393. package/components/data/pagination/package.json +0 -23
  1394. package/components/data/table/package.json +0 -23
  1395. package/components/dialogs/alert-dialog/package.json +0 -23
  1396. package/components/dialogs/confirm-dialog/package.json +0 -23
  1397. package/components/dialogs/default/package.json +0 -23
  1398. package/components/dialogs/design-dialog/package.json +0 -23
  1399. package/components/dialogs/iframe-dialog/package.json +0 -23
  1400. package/components/dialogs/login-dialog/package.json +0 -23
  1401. package/components/dialogs/partial-dialog/package.json +0 -23
  1402. package/components/input/calendar/package.json +0 -23
  1403. package/components/input/chips/package.json +0 -23
  1404. package/components/input/color-picker/package.json +0 -23
  1405. package/components/input/currency/package.json +0 -23
  1406. package/components/input/default/package.json +0 -23
  1407. package/components/input/epoch/package.json +0 -23
  1408. package/components/input/file-upload/package.json +0 -23
  1409. package/components/input/rating/package.json +0 -23
  1410. package/components/input/slider/package.json +0 -23
  1411. package/components/navigation/breadcrumb/package.json +0 -23
  1412. package/components/navigation/menu/package.json +0 -23
  1413. package/components/navigation/navbar/package.json +0 -23
  1414. package/components/navigation/popover/package.json +0 -23
  1415. package/components/page/default/package.json +0 -23
  1416. package/components/page/footer/package.json +0 -23
  1417. package/components/page/header/package.json +0 -23
  1418. package/components/page/left-panel/package.json +0 -23
  1419. package/components/page/right-panel/package.json +0 -23
  1420. package/components/page/top-nav/package.json +0 -23
  1421. package/components/prefab/package.json +0 -23
  1422. package/core/package.json +0 -29
  1423. package/http/package.json +0 -28
  1424. package/mobile/components/basic/default/package.json +0 -23
  1425. package/mobile/components/basic/search/package.json +0 -23
  1426. package/mobile/components/containers/segmented-control/package.json +0 -23
  1427. package/mobile/components/data/media-list/package.json +0 -23
  1428. package/mobile/components/device/barcode-scanner/package.json +0 -23
  1429. package/mobile/components/device/camera/package.json +0 -23
  1430. package/mobile/components/input/file-upload/package.json +0 -23
  1431. package/mobile/components/page/default/package.json +0 -23
  1432. package/mobile/components/page/left-panel/package.json +0 -23
  1433. package/mobile/components/page/mobile-navbar/package.json +0 -23
  1434. package/mobile/components/page/tab-bar/package.json +0 -23
  1435. package/mobile/core/package.json +0 -28
  1436. package/mobile/offline/package.json +0 -28
  1437. package/mobile/placeholder/runtime/package.json +0 -27
  1438. package/mobile/placeholder/runtime-dynamic/package.json +0 -23
  1439. package/mobile/runtime/package.json +0 -28
  1440. package/mobile/runtime-dynamic/package.json +0 -23
  1441. package/mobile/variables/package.json +0 -28
  1442. package/oAuth/package.json +0 -28
  1443. package/runtime/base/package.json +0 -28
  1444. package/runtime/dynamic/package.json +0 -28
  1445. package/security/package.json +0 -28
  1446. package/swipey/package.json +0 -28
  1447. package/transpiler/package.json +0 -29
  1448. package/variables/package.json +0 -28
@@ -3,6 +3,7 @@ import { Subject } from 'rxjs';
3
3
  import { tap } from 'rxjs/operators';
4
4
  import { httpService, appManager } from '@wm/variables';
5
5
  import { WmHttpRequest, WmHttpResponse } from '@wm/http';
6
+ import { extend } from "lodash-es";
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * This Interceptor intercepts all network calls and if a network call fails
@@ -39,7 +40,7 @@ export class HttpCallInterceptor {
39
40
  if (modifiedResp) {
40
41
  // Convert the wm HttpResponse to angular HttpResponse
41
42
  modifiedResp = this.wmHttpResponse.wmToAngularResponse(modifiedResp);
42
- _.extend(response, modifiedResp);
43
+ extend(response, modifiedResp);
43
44
  }
44
45
  }
45
46
  }, error => {
@@ -55,7 +56,7 @@ export class HttpCallInterceptor {
55
56
  if (modifiedResp) {
56
57
  // Convert the wm HttpResponse to angular HttpResponse
57
58
  modifiedResp = this.wmHttpResponse.wmToAngularResponse(modifiedResp);
58
- _.extend(error, modifiedResp);
59
+ extend(error, modifiedResp);
59
60
  }
60
61
  }
61
62
  }));
@@ -63,7 +64,7 @@ export class HttpCallInterceptor {
63
64
  static { this.ɵfac = function HttpCallInterceptor_Factory(t) { return new (t || HttpCallInterceptor)(); }; }
64
65
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HttpCallInterceptor, factory: HttpCallInterceptor.ɵfac }); }
65
66
  }
66
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpCallInterceptor, [{
67
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpCallInterceptor, [{
67
68
  type: Injectable
68
- }], function () { return []; }, null); })();
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUl6RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBSzVCO1FBQ0ksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYTtRQUNULE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDbEQsSUFBSSxXQUFXLENBQUM7UUFDaEIsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLHNCQUFzQixFQUFFO1lBQ2pELG9EQUFvRDtZQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELG1FQUFtRTtZQUNuRSxXQUFXLEdBQUksVUFBVSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELElBQUksV0FBVyxFQUFFO2dCQUNiLG9EQUFvRDtnQkFDcEQsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pFLE9BQU8sR0FBRyxXQUFXLENBQUM7YUFDekI7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2QsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksVUFBVSxJQUFLLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRTtnQkFDbEYsc0RBQXNEO2dCQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvRCx1REFBdUQ7Z0JBQ3ZELFlBQVksR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxZQUFZLEVBQUU7b0JBQ2Qsc0RBQXNEO29CQUN0RCxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDckUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7aUJBQ3BDO2FBQ0o7UUFDTCxDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7WUFDSixLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDN0MsV0FBVyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDbkU7WUFDRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzVDLHNEQUFzRDtnQkFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QscURBQXFEO2dCQUNyRCxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzlELElBQUksWUFBWSxFQUFFO29CQUNkLHNEQUFzRDtvQkFDdEQsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO2lCQUNqQzthQUNKO1FBQ0wsQ0FBQyxDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7b0ZBNURRLG1CQUFtQjt1RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQjs7dUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGh0dHBTZXJ2aWNlLCBhcHBNYW5hZ2VyIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBXbUh0dHBSZXF1ZXN0LCBXbUh0dHBSZXNwb25zZSB9IGZyb20gJ0B3bS9odHRwJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG4vKipcbiAqIFRoaXMgSW50ZXJjZXB0b3IgaW50ZXJjZXB0cyBhbGwgbmV0d29yayBjYWxscyBhbmQgaWYgYSBuZXR3b3JrIGNhbGwgZmFpbHNcbiAqIGR1ZSB0byBzZXNzaW9uIHRpbWVvdXQsIHRoZW4gaXQgY2FsbHMgYSBmdW5jdGlvbiB0byBoYW5kbGUgc2Vzc2lvbiB0aW1lb3V0LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cENhbGxJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICB3bUh0dHBSZXF1ZXN0OiBhbnk7XG4gICAgd21IdHRwUmVzcG9uc2U6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLndtSHR0cFJlcXVlc3QgPSBuZXcgV21IdHRwUmVxdWVzdCgpO1xuICAgICAgICB0aGlzLndtSHR0cFJlc3BvbnNlID0gbmV3IFdtSHR0cFJlc3BvbnNlKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlU3ViamVjdCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuICAgIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgbGV0IG1vZGlmaWVkUmVxO1xuICAgICAgICBsZXQgbW9kaWZpZWRSZXNwO1xuICAgICAgICBpZiAoYXBwTWFuYWdlciAmJiBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlcXVlc3QgdG8gd20gSHR0cFJlcXVlc3RcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC5hbmd1bGFyVG9XbVJlcXVlc3QocmVxdWVzdCk7XG4gICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gb25CZWZvcmVTZXJ2aWNlQ2FsbCBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICBtb2RpZmllZFJlcSA9ICBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwocmVxKTtcbiAgICAgICAgICAgIGlmIChtb2RpZmllZFJlcSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHdtIEh0dHBSZXF1ZXN0IHRvIGFuZ3VsYXIgSHR0cFJlcXVlc3RcbiAgICAgICAgICAgICAgICBtb2RpZmllZFJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC53bVRvQW5ndWxhclJlcXVlc3QobW9kaWZpZWRSZXEpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtb2RpZmllZFJlcTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudHlwZSA9PT0gNCAmJiBhcHBNYW5hZ2VyICYmICBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlc3BvbnNlIHRvIHdtIEh0dHBSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcCA9IHRoaXMud21IdHRwUmVzcG9uc2UuYW5ndWxhclRvV21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gc3VjY2VzcyBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MocmVzcC5ib2R5LCByZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZFJlc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB3bSBIdHRwUmVzcG9uc2UgdG8gYW5ndWxhciBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSB0aGlzLndtSHR0cFJlc3BvbnNlLndtVG9Bbmd1bGFyUmVzcG9uc2UobW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmV4dGVuZChyZXNwb25zZSwgbW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5fNDAxU3Vic2NyaWJlciA9IHRoaXMuY3JlYXRlU3ViamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cFNlcnZpY2UuaXNQbGF0Zm9ybVNlc3Npb25UaW1lb3V0KGVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cFNlcnZpY2UuaGFuZGxlU2Vzc2lvblRpbWVvdXQocmVxdWVzdCwgZXJyb3IuXzQwMVN1YnNjcmliZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcHBNYW5hZ2VyICYmIGFwcE1hbmFnZXIuYXBwT25TZXJ2aWNlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlc3BvbnNlIHRvIHdtIEh0dHBSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyID0gdGhpcy53bUh0dHBSZXNwb25zZS5hbmd1bGFyVG9XbVJlc3BvbnNlKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgdGhlIGNvbW1vbiBlcnJvciBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZUVycm9yKGVyci5tZXNzYWdlLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVkUmVzcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHdtIEh0dHBSZXNwb25zZSB0byBhbmd1bGFyIEh0dHBSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkUmVzcCA9IHRoaXMud21IdHRwUmVzcG9uc2Uud21Ub0FuZ3VsYXJSZXNwb25zZShtb2RpZmllZFJlc3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uZXh0ZW5kKGVycm9yLCBtb2RpZmllZFJlc3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
69
+ }], () => [], null); })();
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBRWpDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFLNUI7UUFDSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNsRCxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLFlBQVksQ0FBQztRQUNqQixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNsRCxvREFBb0Q7WUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzRCxtRUFBbUU7WUFDbkUsV0FBVyxHQUFJLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNkLG9EQUFvRDtnQkFDcEQsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pFLE9BQU8sR0FBRyxXQUFXLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNkLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLFVBQVUsSUFBSyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDbkYsc0RBQXNEO2dCQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvRCx1REFBdUQ7Z0JBQ3ZELFlBQVksR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDZixzREFBc0Q7b0JBQ3RELFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyRSxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNKLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVDLElBQUksV0FBVyxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDN0Msc0RBQXNEO2dCQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxxREFBcUQ7Z0JBQ3JELFlBQVksR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDZixzREFBc0Q7b0JBQ3RELFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyRSxNQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FDSixDQUNKLENBQUM7SUFDTixDQUFDO29GQTVEUSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O2lGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBodHRwU2VydmljZSwgYXBwTWFuYWdlciB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHsgV21IdHRwUmVxdWVzdCwgV21IdHRwUmVzcG9uc2UgfSBmcm9tICdAd20vaHR0cCc7XG5pbXBvcnQge2V4dGVuZH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG4vKipcbiAqIFRoaXMgSW50ZXJjZXB0b3IgaW50ZXJjZXB0cyBhbGwgbmV0d29yayBjYWxscyBhbmQgaWYgYSBuZXR3b3JrIGNhbGwgZmFpbHNcbiAqIGR1ZSB0byBzZXNzaW9uIHRpbWVvdXQsIHRoZW4gaXQgY2FsbHMgYSBmdW5jdGlvbiB0byBoYW5kbGUgc2Vzc2lvbiB0aW1lb3V0LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cENhbGxJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG5cbiAgICB3bUh0dHBSZXF1ZXN0OiBhbnk7XG4gICAgd21IdHRwUmVzcG9uc2U6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLndtSHR0cFJlcXVlc3QgPSBuZXcgV21IdHRwUmVxdWVzdCgpO1xuICAgICAgICB0aGlzLndtSHR0cFJlc3BvbnNlID0gbmV3IFdtSHR0cFJlc3BvbnNlKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlU3ViamVjdCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuICAgIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgbGV0IG1vZGlmaWVkUmVxO1xuICAgICAgICBsZXQgbW9kaWZpZWRSZXNwO1xuICAgICAgICBpZiAoYXBwTWFuYWdlciAmJiBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlcXVlc3QgdG8gd20gSHR0cFJlcXVlc3RcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC5hbmd1bGFyVG9XbVJlcXVlc3QocmVxdWVzdCk7XG4gICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gb25CZWZvcmVTZXJ2aWNlQ2FsbCBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICBtb2RpZmllZFJlcSA9ICBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwocmVxKTtcbiAgICAgICAgICAgIGlmIChtb2RpZmllZFJlcSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHdtIEh0dHBSZXF1ZXN0IHRvIGFuZ3VsYXIgSHR0cFJlcXVlc3RcbiAgICAgICAgICAgICAgICBtb2RpZmllZFJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC53bVRvQW5ndWxhclJlcXVlc3QobW9kaWZpZWRSZXEpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtb2RpZmllZFJlcTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudHlwZSA9PT0gNCAmJiBhcHBNYW5hZ2VyICYmICBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlc3BvbnNlIHRvIHdtIEh0dHBSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcCA9IHRoaXMud21IdHRwUmVzcG9uc2UuYW5ndWxhclRvV21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gc3VjY2VzcyBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MocmVzcC5ib2R5LCByZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZFJlc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB3bSBIdHRwUmVzcG9uc2UgdG8gYW5ndWxhciBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSB0aGlzLndtSHR0cFJlc3BvbnNlLndtVG9Bbmd1bGFyUmVzcG9uc2UobW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzcG9uc2UsIG1vZGlmaWVkUmVzcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuXzQwMVN1YnNjcmliZXIgPSB0aGlzLmNyZWF0ZVN1YmplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBTZXJ2aWNlLmlzUGxhdGZvcm1TZXNzaW9uVGltZW91dChlcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBTZXJ2aWNlLmhhbmRsZVNlc3Npb25UaW1lb3V0KHJlcXVlc3QsIGVycm9yLl80MDFTdWJzY3JpYmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTWFuYWdlciAmJiBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhbmd1bGFyIEh0dHBSZXNwb25zZSB0byB3bSBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IHRoaXMud21IdHRwUmVzcG9uc2UuYW5ndWxhclRvV21SZXNwb25zZShlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gZXJyb3IgaGFuZGxlciBwcmVzZW50IGluIGFwcC5qc1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRSZXNwID0gYXBwTWFuYWdlci5hcHBPblNlcnZpY2VFcnJvcihlcnIubWVzc2FnZSwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZFJlc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB3bSBIdHRwUmVzcG9uc2UgdG8gYW5ndWxhciBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSB0aGlzLndtSHR0cFJlc3BvbnNlLndtVG9Bbmd1bGFyUmVzcG9uc2UobW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQoZXJyb3IsIG1vZGlmaWVkUmVzcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
@@ -4,6 +4,7 @@ import { defineLocale } from 'ngx-bootstrap/chronos';
4
4
  import { BsLocaleService } from 'ngx-bootstrap/datepicker';
5
5
  import { _WM_APP_PROJECT, AbstractI18nService, AppDefaults, getSessionStorageItem, getWmProjectProperties, isMobile, isMobileApp, loadScripts, replace, setCSS, setSessionStorageItem, App } from '@wm/core';
6
6
  import { CONSTANTS } from '@wm/variables';
7
+ import { find, forEach, get, includes, intersection, isObject, map, toLower } from "lodash-es";
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/common/http";
9
10
  import * as i2 from "ngx-bootstrap/datepicker";
@@ -150,15 +151,15 @@ export class I18nServiceImpl extends AbstractI18nService {
150
151
  let localeObj = locale;
151
152
  locale = localeObj['timezone'];
152
153
  const localeIndex = locale.indexOf('+');
153
- let localeStr;
154
154
  if (localeIndex > -1) {
155
155
  if (localeIndex > 0) {
156
156
  locale = locale.substr(localeIndex);
157
157
  }
158
- localeObj['timezone'] = _.find(moment.tz.names(), (timezoneName) => {
158
+ localeObj['timezone'] = find(moment.tz.names(), (timezoneName) => {
159
159
  return locale === moment.tz(timezoneName).format('Z');
160
160
  });
161
161
  }
162
+ moment.tz.setDefault(locale);
162
163
  const localeData = compInstance && compInstance.formatsByLocale ? compInstance.formatsByLocale : this.formatsByLocale;
163
164
  Object.assign(localeData, localeObj);
164
165
  resolve();
@@ -191,8 +192,8 @@ export class I18nServiceImpl extends AbstractI18nService {
191
192
  this.loadMomentTimeZoneBundle(locale, compInstance);
192
193
  }
193
194
  getTimezone(compInstance) {
194
- const pageConfig = _.get(this.app, 'activePage.formatsByLocale.timezone');
195
- const compConfig = _.get(compInstance, 'formatsByLocale.timezone');
195
+ const pageConfig = get(this.app, 'activePage.formatsByLocale.timezone');
196
+ const compConfig = get(compInstance, 'formatsByLocale.timezone');
196
197
  if (compConfig) {
197
198
  return compConfig;
198
199
  }
@@ -208,12 +209,13 @@ export class I18nServiceImpl extends AbstractI18nService {
208
209
  }
209
210
  setSelectedLocale(locale) {
210
211
  // check if the event is propagated from the select or any such widget
211
- if (_.isObject(locale)) {
212
+ if (isObject(locale)) {
213
+ // @ts-ignore
212
214
  locale = locale.datavalue;
213
215
  }
214
216
  const libLocale = getWmProjectProperties().supportedLanguages[locale];
215
217
  const supportedLocale = Object.keys(getWmProjectProperties().supportedLanguages);
216
- if (!_.includes(supportedLocale, locale)) {
218
+ if (!includes(supportedLocale, locale)) {
217
219
  return Promise.resolve();
218
220
  }
219
221
  if (!locale || locale === this.selectedLocale) {
@@ -259,8 +261,8 @@ export class I18nServiceImpl extends AbstractI18nService {
259
261
  */
260
262
  if (CONSTANTS.hasCordova) {
261
263
  let supportedLang = [];
262
- _.forEach(_acceptLang, function (lang) {
263
- let matchedLang = _.find(_supportedLang, (val) => lang === val) || _.find(_supportedLang, (val) => lang.startsWith(val));
264
+ forEach(_acceptLang, function (lang) {
265
+ let matchedLang = find(_supportedLang, (val) => lang === val) || find(_supportedLang, (val) => lang.startsWith(val));
264
266
  if (matchedLang) {
265
267
  supportedLang.push(matchedLang);
266
268
  }
@@ -268,7 +270,7 @@ export class I18nServiceImpl extends AbstractI18nService {
268
270
  _appSupportedLang = supportedLang[0];
269
271
  }
270
272
  // check for the session storage to load any pre-requested locale
271
- const _defaultLang = getSessionStorageItem('selectedLocale') || _selectedDefaultLang || _appSupportedLang || _.intersection(_acceptLang, _supportedLang)[0] || this.defaultSupportedLocale;
273
+ const _defaultLang = getSessionStorageItem('selectedLocale') || _selectedDefaultLang || _appSupportedLang || intersection(_acceptLang, _supportedLang)[0] || this.defaultSupportedLocale;
272
274
  // if the supportedLocale is not available set it to defaultLocale
273
275
  _supportedLang = _supportedLang || [_defaultLang];
274
276
  const defaultLanguage = _defaultLang || _supportedLang[0];
@@ -301,7 +303,7 @@ export class I18nServiceImpl extends AbstractI18nService {
301
303
  return locale.split(';')[0];
302
304
  });
303
305
  }
304
- return _.map(languages, _.toLower);
306
+ return map(languages, toLower);
305
307
  }
306
308
  initCalendarLocale() {
307
309
  if (this.selectedLocale !== 'en') {
@@ -326,7 +328,7 @@ export class I18nServiceImpl extends AbstractI18nService {
326
328
  static { this.ɵfac = function I18nServiceImpl_Factory(t) { return new (t || I18nServiceImpl)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.BsLocaleService), i0.ɵɵinject(i3.AppDefaults), i0.ɵɵinject(i0.Injector)); }; }
327
329
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: I18nServiceImpl, factory: I18nServiceImpl.ɵfac }); }
328
330
  }
329
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nServiceImpl, [{
331
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nServiceImpl, [{
330
332
  type: Injectable
331
- }], function () { return [{ type: i1.HttpClient }, { type: i2.BsLocaleService }, { type: i3.AppDefaults }, { type: i0.Injector }]; }, null); })();
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBSTFDLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSztJQUNySCxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxL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QUVNLHFCQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQU07UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLGVBQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTtZQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0wsQ0FBQztnRkF4V1EsZUFBZTt1RUFBZixlQUFlLFdBQWYsZUFBZTs7dUZBQWYsZUFBZTtjQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgZGVmaW5lTG9jYWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jaHJvbm9zJztcbmltcG9ydCB7IEJzTG9jYWxlU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5cbmltcG9ydCB7XG4gICAgX1dNX0FQUF9QUk9KRUNULFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQXBwRGVmYXVsdHMsXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNNb2JpbGUsXG4gICAgaXNNb2JpbGVBcHAsXG4gICAgbG9hZFNjcmlwdHMsXG4gICAgcmVwbGFjZSxcbiAgICBzZXRDU1MsXG4gICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIEFwcFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuZGVjbGFyZSBjb25zdCBfLCBtb21lbnQ7XG5cbmNvbnN0IEFQUF9MT0NBTEVfUk9PVF9QQVRIID0gJ3Jlc291cmNlcy9pMThuJztcbmNvbnN0IFJUTF9MQU5HVUFHRV9DT0RFUyA9IFsnYXInLCAnYXItMDAxJywgJ2FyLWFlJywgJ2FyLWJoJywgJ2FyLWR6JywgJ2FyLWVnJywgJ2FyLWlxJywgJ2FyLWpvJywgJ2FyLWt3JywgJ2FyLWxiJywgJ2FyLWx5JyxcbiAgICAnYXItbWEnLCAnYXItb20nLCAnYXItcWEnLCAnYXItc2EnLCAnYXItc2QnLCAnYXItc3knLCAnYXItdG4nLCAnYXIteWUnLCAnYXJjJywgJ2JjYycsICdicWknLCAnY2tiJywgJ2R2JywgJ2ZhJywgJ2dsaycsXG4gICAgJ2hlJywgJ2t1JywgJ216bicsICdwbmInLCAncHMnLCAnc2QnLCAndWcnLCAndXInLCAneWknXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlSW1wbCBleHRlbmRzIEFic3RyYWN0STE4blNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzZWxlY3RlZExvY2FsZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdFN1cHBvcnRlZExvY2FsZSA9ICdlbic7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBMb2NhbGU6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWZhYkxvY2FsZTogTWFwPFN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIG1lc3NhZ2VzOiBhbnk7XG4gICAgcHJpdmF0ZSBfaXNBbmd1bGFyTG9jYWxlTG9hZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJycsICdudW1iZXInOiAnJ307XG4gICAgcHJpdmF0ZSBnZXQgYXBwKCkgeyByZXR1cm4gdGhpcy5pbmouZ2V0KEFwcCkgfTtcblxuICAgIHByaXZhdGUgYnVuZGxlTG9hZGVkOntba2V5OnN0cmluZ10gOiBhbnl9ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBic0xvY2FsZVNlcnZpY2U6IEJzTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIHByaXZhdGUgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHt9O1xuICAgICAgICB0aGlzLnByZWZhYkxvY2FsZSA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZURpcmVjdGlvbigpIHtcbiAgICAgICAgbGV0IGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuICAgICAgICBpZiAoUlRMX0xBTkdVQUdFX0NPREVTLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAncnRsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHNldENTUyhkb2N1bWVudC5ib2R5LCAnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB7fTtcblxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5hcHBMb2NhbGUsIHRoaXMubWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdFN1cHBvcnRlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBMb2NhbGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmVmYWJMb2NhbGVCdW5kbGUocHJlZmFiTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnByZWZhYkxvY2FsZS5oYXMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFByZWZhYk1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMobWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpLmZvckVhY2goKHByZWZhYk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGJ1bmRsZSA9IHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICAgICAgICAgIGlmICghYnVuZGxlKSB7XG4gICAgICAgICAgICAgICAgYnVuZGxlID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIGJ1bmRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bmRsZSwgbWVzc2FnZXMucHJlZmFiTWVzc2FnZXNbcHJlZmFiTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZE1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VzLCBtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2UocGF0aCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRodHRwLmdldChwYXRoKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgbG9hZGluZyBsb2NhbGUgcmVzb3VyY2UgZnJvbSAke3BhdGh9YCk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQXBwTG9jYWxlQnVuZGxlKCkge1xuICAgICAgICB0aGlzLmxvYWRSZXNvdXJjZShgJHtBUFBfTE9DQUxFX1JPT1RfUEFUSH0vJHt0aGlzLnNlbGVjdGVkTG9jYWxlfS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKGJ1bmRsZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRNZXNzYWdlcyhidW5kbGUubWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kUHJlZmFiTWVzc2FnZXMoYnVuZGxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcERlZmF1bHRzLnNldEZvcm1hdHMoYnVuZGxlLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShtb21lbnRMb2NhbGUpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBfY2RuVXJsICsgYGxvY2FsZXMvbW9tZW50LyR7bW9tZW50TG9jYWxlfS5qc2A7XG4gICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcblxuICAgICAgICAgICAgLy8gRm9yIG5neCBib290c3RyYXAgbG9jYWxlLCBnZXQgdGhlIGNvbmZpZyBmcm9tIHNjcmlwdCBhbmQgYXBwbHkgbG9jYWxlXG4gICAgICAgICAgICAvLyBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpIHdpbGwgcmV0dXJuIG1vbWVudCBsb2NhbGUgaW5zdGFuY2UuIF9jb25maWcgaW5zaWRlIHdpbGwgaGF2ZSBhY3R1YWwgY29uZmlnXG4gICAgICAgICAgICBsZXQgX2NvbmZpZyA9IG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICBfY29uZmlnID0gX2NvbmZpZyAmJiBfY29uZmlnLl9jb25maWc7XG4gICAgICAgICAgICBkZWZpbmVMb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGFuZ0xvY2FsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2FuZ3VsYXIvZ2xvYmFsLyR7YW5nTG9jYWxlfS5qc2A7XG5cbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUoY2FsZW5kYXJMb2NhbGUsIGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKGNhbGVuZGFyTG9jYWxlKSB7XG4gICAgICAgICAgICBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2Z1bGxjYWxlbmRhci8ke2NhbGVuZGFyTG9jYWxlfS5qc2A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXR1cm4gaW4gY2FzZSBvZiBtb2JpbGUgYXBwIG9yIGlmIHNlbGVjdGVkIGxvY2FsZSBpcyBkZWZhdWx0IHN1cHBvcnRlZCBsb2NhbGUuXG4gICAgICAgIGlmICghZm9yY2UgJiYgKGlzTW9iaWxlKCkgfHwgaXNNb2JpbGVBcHAoKSB8fCB0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgc2NyaXB0LiBJbiBzY3JpcHQsIG1vbWVudCBkZWZpbmVzIHRoZSBsb2FkZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLmpzYDtcbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBpbiB0aGUgZm9ybSBvZiBvZmZzZXQgYW5kIG5vdCB0aW1lem9uZSBuYW1lLCBkZWR1Y2UgdGhlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogSWYgbG9jYWxlIGlzIHByb3ZpZGVkIGFzIEdNVCs5LCBuYW1lIHdpbGwgYmUgZGVkdWNlZCBhcyBBc2lhL1Rva3lvXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxlT2JqID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZU9ialsndGltZXpvbmUnXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVJbmRleCA9IGxvY2FsZS5pbmRleE9mKCcrJyk7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZVN0cjtcbiAgICAgICAgICAgICAgICBpZiAobG9jYWxlSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUuc3Vic3RyKGxvY2FsZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsb2NhbGVPYmpbJ3RpbWV6b25lJ10gPSBfLmZpbmQobW9tZW50LnR6Lm5hbWVzKCksICh0aW1lem9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT09IG1vbWVudC50eih0aW1lem9uZU5hbWUpLmZvcm1hdCgnWicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlRGF0YSA9ICBjb21wSW5zdGFuY2UgJiYgY29tcEluc3RhbmNlLmZvcm1hdHNCeUxvY2FsZSA/IGNvbXBJbnN0YW5jZS5mb3JtYXRzQnlMb2NhbGUgOiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGxvY2FsZURhdGEsIGxvY2FsZU9iaik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTG9jYWxlQnVuZGxlcyhsaWJMb2NhbGUpIHtcbiAgICAgICAgaWYgKGxpYkxvY2FsZS5tb21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1vbWVudExvY2FsZUJ1bmRsZShsaWJMb2NhbGUubW9tZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIHRoaXMuYnNMb2NhbGVTZXJ2aWNlLnVzZSh0aGlzLmdldFNlbGVjdGVkTG9jYWxlKCkgfHwgdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIgJiYgd2luZG93WydGdWxsQ2FsZW5kYXInXSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUobGliTG9jYWxlLmZ1bGxDYWxlbmRhcik/LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5hbmd1bGFyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBMb2NhbGVCdW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShsaWJMb2NhbGUuYW5ndWxhcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRpbWV6b25lKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICB0aGlzLmxvYWRNb21lbnRUaW1lWm9uZUJ1bmRsZShsb2NhbGUsIGNvbXBJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpbWV6b25lKGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgY29uc3QgcGFnZUNvbmZpZyA9IF8uZ2V0KHRoaXMuYXBwLCAnYWN0aXZlUGFnZS5mb3JtYXRzQnlMb2NhbGUudGltZXpvbmUnKTtcbiAgICAgICAgY29uc3QgY29tcENvbmZpZyA9IF8uZ2V0KGNvbXBJbnN0YW5jZSwgJ2Zvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBpZiAoY29tcENvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBDb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIHBhZ2VDb25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGVbJ3RpbWV6b25lJ107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0c0J5TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSkge1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBldmVudCBpcyBwcm9wYWdhdGVkIGZyb20gdGhlIHNlbGVjdCBvciBhbnkgc3VjaCB3aWRnZXRcbiAgICAgICAgaWYgKF8uaXNPYmplY3QobG9jYWxlKSkge1xuICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLmRhdGF2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpYkxvY2FsZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXNbbG9jYWxlXTtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgaWYgKCFfLmluY2x1ZGVzKHN1cHBvcnRlZExvY2FsZSwgbG9jYWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhbGUgfHwgbG9jYWxlID09PSB0aGlzLnNlbGVjdGVkTG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJywgbG9jYWxlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYWxlID0gbG9jYWxlO1xuXG4gICAgICAgIC8vIHJlc2V0IHRoZSBsb2NhbGVEYXRhIG9iamVjdFxuICAgICAgICB0aGlzLmluaXQoKTtcblxuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSA9IGxpYkxvY2FsZTtcblxuICAgICAgICAvLyBsb2FkIHRoZSBsb2NhbGUgYnVuZGxlcyBvZiB0aGUgc2VsZWN0ZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGVCdW5kbGVzKGxpYkxvY2FsZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsZURpcmVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUxvY2FsZUNoYW5nZWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWR1Y2VBcHBMb2NhbGUoKSB7XG4gICAgICAgIC8vIGNvbXB1dGF0aW9uIHRvIGZpbmQgYXBwIGRlZmF1bHQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9hY2NlcHRMYW5nID0gdGhpcy5nZXRBY2NlcHRlZExhbmd1YWdlcygpO1xuICAgICAgICBjb25zdCBfZGVmYXVsdExhbmd1YWdlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgX2FjY2VwdExhbmcucHVzaChfZGVmYXVsdExhbmd1YWdlKTtcblxuICAgICAgICAvLyBjaGVja3Mgd2hldGhlciB1c2VyIHByZWZlcmVuY2UgaXMgYmFzZWQgb24gYnJvd3NlciBzZXQgbGFuZ3VhZ2VzIG9yIGRlZmF1bHQgbGFuZ3VhZ2Ugc2V0IGluIHByb2plY3RcbiAgICAgICAgbGV0IHByZWZlckJyb3dzZXJMYW5nID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnByZWZlckJyb3dzZXJMYW5nO1xuICAgICAgICBpZiAoIXByZWZlckJyb3dzZXJMYW5nKSB7IC8vIHdoZW4gcHJlZmVyQnJvd3NlckxhbmcgaXMgbm90IGRlZmluZWQsIHNldCB0byBpdHMgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgcHJlZmVyQnJvd3NlckxhbmcgID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHsgLy8gY29udmVydCBzdHJpbmdpZmllZCBib29sZWFuIHZhbHVlcyByZWNpZXZlZCBmcm9tIEJFIHRvIGJvb2xlYW5zXG4gICAgICAgICAgICBwcmVmZXJCcm93c2VyTGFuZz0gKHByZWZlckJyb3dzZXJMYW5nID09PSAndHJ1ZScgfHwgcHJlZmVyQnJvd3NlckxhbmcgPT09IHRydWUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IF9zdXBwb3J0ZWRMYW5nID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcykgfHwgW3RoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZV07XG5cbiAgICAgICAgLy8gd2hlbiBwcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGJyb3dzZXIgc2V0IGxhbmd1YWdlcywgZG8gbm90IHBvcHVsYXRlIF9zZWxlY3RlZERlZmF1bHRMYW5nIHZhcmlhYmxlXG4gICAgICAgIGxldCBfc2VsZWN0ZWREZWZhdWx0TGFuZyA9IHByZWZlckJyb3dzZXJMYW5nID8gdW5kZWZpbmVkIDogX2RlZmF1bHRMYW5ndWFnZTtcblxuICAgICAgICBsZXQgX2FwcFN1cHBvcnRlZExhbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBmb3IgY29yZG92YSwgY2hlY2sgZm9yIGxhbmd1YWdlIGlnbm9yaW5nIHRoZSBsb2NhbGVcbiAgICAgICAgICogQXMgdGhlIG5hdmlnYXRvci5sYW5ndWFnZXMgYWx3YXlzIHJldHVybnMgdGhlIGxhbmd1YWdlIHdpdGggbG9jYWxlIChlbi11cylcbiAgICAgICAgICogVGhlIHN1cHBvcnRlZExhbmd1YWdlcyBmcm9tIEJFIGRvZXNuJ3QgaW5jbHVkZSBsb2NhbGUgKGVuKSB3aGljaCBsZWFkcyB0byBtaXNtYXRjaFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKENPTlNUQU5UUy5oYXNDb3Jkb3ZhKSB7XG4gICAgICAgICAgICBsZXQgc3VwcG9ydGVkTGFuZyA9IFtdO1xuICAgICAgICAgICAgXy5mb3JFYWNoKF9hY2NlcHRMYW5nLCBmdW5jdGlvbihsYW5nKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoZWRMYW5nID0gXy5maW5kKF9zdXBwb3J0ZWRMYW5nLCAodmFsKSA9PiBsYW5nID09PSB2YWwpIHx8IF8uZmluZChfc3VwcG9ydGVkTGFuZywgKHZhbCkgPT4gbGFuZy5zdGFydHNXaXRoKHZhbCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTGFuZykge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5nLnB1c2gobWF0Y2hlZExhbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgX2FwcFN1cHBvcnRlZExhbmcgPSBzdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciB0aGUgc2Vzc2lvbiBzdG9yYWdlIHRvIGxvYWQgYW55IHByZS1yZXF1ZXN0ZWQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZyA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCBfc2VsZWN0ZWREZWZhdWx0TGFuZyB8fCBfYXBwU3VwcG9ydGVkTGFuZyB8fCBfLmludGVyc2VjdGlvbihfYWNjZXB0TGFuZywgX3N1cHBvcnRlZExhbmcpWzBdIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICAgICAgLy8gaWYgdGhlIHN1cHBvcnRlZExvY2FsZSBpcyBub3QgYXZhaWxhYmxlIHNldCBpdCB0byBkZWZhdWx0TG9jYWxlXG4gICAgICAgIF9zdXBwb3J0ZWRMYW5nID0gX3N1cHBvcnRlZExhbmcgfHwgW19kZWZhdWx0TGFuZ107XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gX2RlZmF1bHRMYW5nIHx8IF9zdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICByZXR1cm4gZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRGVmYXVsdExvY2FsZSgpIHtcbiAgICAgICAgRGF0ZS5wcm90b3R5cGVbXCJtb250aFwiXSA9IERhdGUucHJvdG90eXBlLmdldE1vbnRoO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmRlZHVjZUFwcExvY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb2NhbGl6ZWRNZXNzYWdlKG1lc3NhZ2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UodGhpcy5hcHBMb2NhbGVbbWVzc2FnZV0sIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWNjZXB0ZWQgbGFuZ3VhZ2VzIGxpc3RcbiAgICBwdWJsaWMgZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZXM7XG4gICAgICAgIGlmIChDT05TVEFOVFMuaGFzQ29yZG92YSkge1xuICAgICAgICAgICAgbGFuZ3VhZ2VzID0gbmF2aWdhdG9yLmxhbmd1YWdlcyB8fCBbbmF2aWdhdG9yLmxhbmd1YWdlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IGRlY29kZVVSSUNvbXBvbmVudChnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVycmVkTGFuZ3VhZ2UgfHwgJycpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlcHQtTGFuZ3VhZ2UgSGVhZGVyIHdpbGwgY29udGFpbiBzZXQgb2Ygc3VwcG9ydGVkIGxvY2FsZSwgc28gdHJ5IHNwbGl0dGluZyB0aGUgc3RyaW5nIHRvIHByb3BlciBsb2NhbGUgc2V0XG4gICAgICAgICAgICAgKiBFeDogZW4sZW4tVVM7cT0wLjksZGU7cT0wLjYsYXI7cT0wLjIsaGlcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBTcGxpdCB0aGUgYWJvdmUgaW50byBbZW4sZW4tdXMsZGUsYXIsaGldXG4gICAgICAgICAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IGxhbmd1YWdlcy5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbihsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlLnNwbGl0KCc7JylbMF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXy5tYXAobGFuZ3VhZ2VzLCBfLnRvTG93ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2FsZW5kYXJMb2NhbGUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgIT09ICdlbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRDYWxlbmRhckxvY2FsZUJ1bmRsZSh0aGlzLnNlbGVjdGVkTG9jYWxlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
333
+ }], () => [{ type: i1.HttpClient }, { type: i2.BsLocaleService }, { type: i3.AppDefaults }, { type: i0.Injector }], null); })();
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdGLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxP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ICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBkZWZpbmVMb2NhbGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuaW1wb3J0IHsgQnNMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICByZXBsYWNlLFxuICAgIHNldENTUyxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgQXBwXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHtmaW5kLCBmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBpbnRlcnNlY3Rpb24sIGlzT2JqZWN0LCBtYXAsIHRvTG93ZXJ9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCBtb21lbnQ7XG5cbmNvbnN0IEFQUF9MT0NBTEVfUk9PVF9QQVRIID0gJ3Jlc291cmNlcy9pMThuJztcbmNvbnN0IFJUTF9MQU5HVUFHRV9DT0RFUyA9IFsnYXInLCAnYXItMDAxJywgJ2FyLWFlJywgJ2FyLWJoJywgJ2FyLWR6JywgJ2FyLWVnJywgJ2FyLWlxJywgJ2FyLWpvJywgJ2FyLWt3JywgJ2FyLWxiJywgJ2FyLWx5JyxcbiAgICAnYXItbWEnLCAnYXItb20nLCAnYXItcWEnLCAnYXItc2EnLCAnYXItc2QnLCAnYXItc3knLCAnYXItdG4nLCAnYXIteWUnLCAnYXJjJywgJ2JjYycsICdicWknLCAnY2tiJywgJ2R2JywgJ2ZhJywgJ2dsaycsXG4gICAgJ2hlJywgJ2t1JywgJ216bicsICdwbmInLCAncHMnLCAnc2QnLCAndWcnLCAndXInLCAneWknXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlSW1wbCBleHRlbmRzIEFic3RyYWN0STE4blNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzZWxlY3RlZExvY2FsZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdFN1cHBvcnRlZExvY2FsZSA9ICdlbic7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBMb2NhbGU6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWZhYkxvY2FsZTogTWFwPFN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIG1lc3NhZ2VzOiBhbnk7XG4gICAgcHJpdmF0ZSBfaXNBbmd1bGFyTG9jYWxlTG9hZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJycsICdudW1iZXInOiAnJ307XG4gICAgcHJpdmF0ZSBnZXQgYXBwKCkgeyByZXR1cm4gdGhpcy5pbmouZ2V0KEFwcCkgfTtcblxuICAgIHByaXZhdGUgYnVuZGxlTG9hZGVkOntba2V5OnN0cmluZ10gOiBhbnl9ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBic0xvY2FsZVNlcnZpY2U6IEJzTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIHByaXZhdGUgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHt9O1xuICAgICAgICB0aGlzLnByZWZhYkxvY2FsZSA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZURpcmVjdGlvbigpIHtcbiAgICAgICAgbGV0IGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuICAgICAgICBpZiAoUlRMX0xBTkdVQUdFX0NPREVTLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAncnRsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHNldENTUyhkb2N1bWVudC5ib2R5LCAnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB7fTtcblxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5hcHBMb2NhbGUsIHRoaXMubWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdFN1cHBvcnRlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBMb2NhbGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmVmYWJMb2NhbGVCdW5kbGUocHJlZmFiTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnByZWZhYkxvY2FsZS5oYXMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFByZWZhYk1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMobWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpLmZvckVhY2goKHByZWZhYk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGJ1bmRsZSA9IHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICAgICAgICAgIGlmICghYnVuZGxlKSB7XG4gICAgICAgICAgICAgICAgYnVuZGxlID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIGJ1bmRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bmRsZSwgbWVzc2FnZXMucHJlZmFiTWVzc2FnZXNbcHJlZmFiTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZE1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VzLCBtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2UocGF0aCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRodHRwLmdldChwYXRoKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgbG9hZGluZyBsb2NhbGUgcmVzb3VyY2UgZnJvbSAke3BhdGh9YCk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQXBwTG9jYWxlQnVuZGxlKCkge1xuICAgICAgICB0aGlzLmxvYWRSZXNvdXJjZShgJHtBUFBfTE9DQUxFX1JPT1RfUEFUSH0vJHt0aGlzLnNlbGVjdGVkTG9jYWxlfS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKGJ1bmRsZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRNZXNzYWdlcyhidW5kbGUubWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kUHJlZmFiTWVzc2FnZXMoYnVuZGxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcERlZmF1bHRzLnNldEZvcm1hdHMoYnVuZGxlLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShtb21lbnRMb2NhbGUpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBfY2RuVXJsICsgYGxvY2FsZXMvbW9tZW50LyR7bW9tZW50TG9jYWxlfS5qc2A7XG4gICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcblxuICAgICAgICAgICAgLy8gRm9yIG5neCBib290c3RyYXAgbG9jYWxlLCBnZXQgdGhlIGNvbmZpZyBmcm9tIHNjcmlwdCBhbmQgYXBwbHkgbG9jYWxlXG4gICAgICAgICAgICAvLyBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpIHdpbGwgcmV0dXJuIG1vbWVudCBsb2NhbGUgaW5zdGFuY2UuIF9jb25maWcgaW5zaWRlIHdpbGwgaGF2ZSBhY3R1YWwgY29uZmlnXG4gICAgICAgICAgICBsZXQgX2NvbmZpZyA9IG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICBfY29uZmlnID0gX2NvbmZpZyAmJiBfY29uZmlnLl9jb25maWc7XG4gICAgICAgICAgICBkZWZpbmVMb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGFuZ0xvY2FsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2FuZ3VsYXIvZ2xvYmFsLyR7YW5nTG9jYWxlfS5qc2A7XG5cbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUoY2FsZW5kYXJMb2NhbGUsIGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKGNhbGVuZGFyTG9jYWxlKSB7XG4gICAgICAgICAgICBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2Z1bGxjYWxlbmRhci8ke2NhbGVuZGFyTG9jYWxlfS5qc2A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXR1cm4gaW4gY2FzZSBvZiBtb2JpbGUgYXBwIG9yIGlmIHNlbGVjdGVkIGxvY2FsZSBpcyBkZWZhdWx0IHN1cHBvcnRlZCBsb2NhbGUuXG4gICAgICAgIGlmICghZm9yY2UgJiYgKGlzTW9iaWxlKCkgfHwgaXNNb2JpbGVBcHAoKSB8fCB0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgc2NyaXB0LiBJbiBzY3JpcHQsIG1vbWVudCBkZWZpbmVzIHRoZSBsb2FkZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLmpzYDtcbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBpbiB0aGUgZm9ybSBvZiBvZmZzZXQgYW5kIG5vdCB0aW1lem9uZSBuYW1lLCBkZWR1Y2UgdGhlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogSWYgbG9jYWxlIGlzIHByb3ZpZGVkIGFzIEdNVCs5LCBuYW1lIHdpbGwgYmUgZGVkdWNlZCBhcyBBc2lhL1Rva3lvXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxlT2JqID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZU9ialsndGltZXpvbmUnXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVJbmRleCA9IGxvY2FsZS5pbmRleE9mKCcrJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLnN1YnN0cihsb2NhbGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlT2JqWyd0aW1lem9uZSddID0gZmluZChtb21lbnQudHoubmFtZXMoKSwgKHRpbWV6b25lTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZSA9PT0gbW9tZW50LnR6KHRpbWV6b25lTmFtZSkuZm9ybWF0KCdaJyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb21lbnQudHouc2V0RGVmYXVsdChsb2NhbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZURhdGEgPSAgY29tcEluc3RhbmNlICYmIGNvbXBJbnN0YW5jZS5mb3JtYXRzQnlMb2NhbGUgPyBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlIDogdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihsb2NhbGVEYXRhLCBsb2NhbGVPYmopO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKSB7XG4gICAgICAgIGlmIChsaWJMb2NhbGUubW9tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb21lbnRMb2NhbGVCdW5kbGUobGliTG9jYWxlLm1vbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExvY2FsZSA9PT0gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKSB7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuZnVsbENhbGVuZGFyICYmIHdpbmRvd1snRnVsbENhbGVuZGFyJ10pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIpPy50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuYW5ndWxhcikge1xuICAgICAgICAgICAgdGhpcy5sb2FkQXBwTG9jYWxlQnVuZGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEFuZ3VsYXJMb2NhbGVCdW5kbGUobGliTG9jYWxlLmFuZ3VsYXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUaW1lem9uZShsb2NhbGUsIGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgdGhpcy5sb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaW1lem9uZShjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VDb25maWcgPSBnZXQodGhpcy5hcHAsICdhY3RpdmVQYWdlLmZvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBjb25zdCBjb21wQ29uZmlnID0gZ2V0KGNvbXBJbnN0YW5jZSwgJ2Zvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBpZiAoY29tcENvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBDb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIHBhZ2VDb25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGVbJ3RpbWV6b25lJ107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0c0J5TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSkge1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBldmVudCBpcyBwcm9wYWdhdGVkIGZyb20gdGhlIHNlbGVjdCBvciBhbnkgc3VjaCB3aWRnZXRcbiAgICAgICAgaWYgKGlzT2JqZWN0KGxvY2FsZSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5kYXRhdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaWJMb2NhbGUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzW2xvY2FsZV07XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpO1xuXG4gICAgICAgIGlmICghaW5jbHVkZXMoc3VwcG9ydGVkTG9jYWxlLCBsb2NhbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09IHRoaXMuc2VsZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnLCBsb2NhbGUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBsb2NhbGU7XG5cbiAgICAgICAgLy8gcmVzZXQgdGhlIGxvY2FsZURhdGEgb2JqZWN0XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYXBwID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubGliTG9jYWxlID0gbGliTG9jYWxlO1xuXG4gICAgICAgIC8vIGxvYWQgdGhlIGxvY2FsZSBidW5kbGVzIG9mIHRoZSBzZWxlY3RlZCBsb2NhbGVcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxlRGlyZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZHVjZUFwcExvY2FsZSgpIHtcbiAgICAgICAgLy8gY29tcHV0YXRpb24gdG8gZmluZCBhcHAgZGVmYXVsdCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2FjY2VwdExhbmcgPSB0aGlzLmdldEFjY2VwdGVkTGFuZ3VhZ2VzKCk7XG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZ3VhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICBfYWNjZXB0TGFuZy5wdXNoKF9kZWZhdWx0TGFuZ3VhZ2UpO1xuXG4gICAgICAgIC8vIGNoZWNrcyB3aGV0aGVyIHVzZXIgcHJlZmVyZW5jZSBpcyBiYXNlZCBvbiBicm93c2VyIHNldCBsYW5ndWFnZXMgb3IgZGVmYXVsdCBsYW5ndWFnZSBzZXQgaW4gcHJvamVjdFxuICAgICAgICBsZXQgcHJlZmVyQnJvd3NlckxhbmcgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVyQnJvd3Nlckxhbmc7XG4gICAgICAgIGlmICghcHJlZmVyQnJvd3NlckxhbmcpIHsgLy8gd2hlbiBwcmVmZXJCcm93c2VyTGFuZyBpcyBub3QgZGVmaW5lZCwgc2V0IHRvIGl0cyBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgICBwcmVmZXJCcm93c2VyTGFuZyAgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgeyAvLyBjb252ZXJ0IHN0cmluZ2lmaWVkIGJvb2xlYW4gdmFsdWVzIHJlY2lldmVkIGZyb20gQkUgdG8gYm9vbGVhbnNcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nPSAocHJlZmVyQnJvd3NlckxhbmcgPT09ICd0cnVlJyB8fCBwcmVmZXJCcm93c2VyTGFuZyA9PT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgX3N1cHBvcnRlZExhbmcgPSBPYmplY3Qua2V5cyhnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzKSB8fCBbdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlXTtcblxuICAgICAgICAvLyB3aGVuIHByZWZlcmVuY2UgaXMgZ2l2ZW4gdG8gYnJvd3NlciBzZXQgbGFuZ3VhZ2VzLCBkbyBub3QgcG9wdWxhdGUgX3NlbGVjdGVkRGVmYXVsdExhbmcgdmFyaWFibGVcbiAgICAgICAgbGV0IF9zZWxlY3RlZERlZmF1bHRMYW5nID0gcHJlZmVyQnJvd3NlckxhbmcgPyB1bmRlZmluZWQgOiBfZGVmYXVsdExhbmd1YWdlO1xuXG4gICAgICAgIGxldCBfYXBwU3VwcG9ydGVkTGFuZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGZvciBjb3Jkb3ZhLCBjaGVjayBmb3IgbGFuZ3VhZ2UgaWdub3JpbmcgdGhlIGxvY2FsZVxuICAgICAgICAgKiBBcyB0aGUgbmF2aWdhdG9yLmxhbmd1YWdlcyBhbHdheXMgcmV0dXJucyB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb2NhbGUgKGVuLXVzKVxuICAgICAgICAgKiBUaGUgc3VwcG9ydGVkTGFuZ3VhZ2VzIGZyb20gQkUgZG9lc24ndCBpbmNsdWRlIGxvY2FsZSAoZW4pIHdoaWNoIGxlYWRzIHRvIG1pc21hdGNoXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxldCBzdXBwb3J0ZWRMYW5nID0gW107XG4gICAgICAgICAgICBmb3JFYWNoKF9hY2NlcHRMYW5nLCBmdW5jdGlvbiAobGFuZykge1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaGVkTGFuZyA9IGZpbmQoX3N1cHBvcnRlZExhbmcsICh2YWwpID0+IGxhbmcgPT09IHZhbCkgfHwgZmluZChfc3VwcG9ydGVkTGFuZywgKHZhbCkgPT4gbGFuZy5zdGFydHNXaXRoKHZhbCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTGFuZykge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5nLnB1c2gobWF0Y2hlZExhbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgX2FwcFN1cHBvcnRlZExhbmcgPSBzdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciB0aGUgc2Vzc2lvbiBzdG9yYWdlIHRvIGxvYWQgYW55IHByZS1yZXF1ZXN0ZWQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZyA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCBfc2VsZWN0ZWREZWZhdWx0TGFuZyB8fCBfYXBwU3VwcG9ydGVkTGFuZyB8fCBpbnRlcnNlY3Rpb24oX2FjY2VwdExhbmcsIF9zdXBwb3J0ZWRMYW5nKVswXSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGU7XG4gICAgICAgIC8vIGlmIHRoZSBzdXBwb3J0ZWRMb2NhbGUgaXMgbm90IGF2YWlsYWJsZSBzZXQgaXQgdG8gZGVmYXVsdExvY2FsZVxuICAgICAgICBfc3VwcG9ydGVkTGFuZyA9IF9zdXBwb3J0ZWRMYW5nIHx8IFtfZGVmYXVsdExhbmddO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IF9kZWZhdWx0TGFuZyB8fCBfc3VwcG9ydGVkTGFuZ1swXTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZERlZmF1bHRMb2NhbGUoKSB7XG4gICAgICAgIERhdGUucHJvdG90eXBlW1wibW9udGhcIl0gPSBEYXRlLnByb3RvdHlwZS5nZXRNb250aDtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5kZWR1Y2VBcHBMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYWxpemVkTWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlKHRoaXMuYXBwTG9jYWxlW21lc3NhZ2VdLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjY2VwdGVkIGxhbmd1YWdlcyBsaXN0XG4gICAgcHVibGljIGdldEFjY2VwdGVkTGFuZ3VhZ2VzKCkge1xuICAgICAgICBsZXQgbGFuZ3VhZ2VzO1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgfHwgW25hdmlnYXRvci5sYW5ndWFnZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBkZWNvZGVVUklDb21wb25lbnQoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnByZWZlcnJlZExhbmd1YWdlIHx8ICcnKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZXB0LUxhbmd1YWdlIEhlYWRlciB3aWxsIGNvbnRhaW4gc2V0IG9mIHN1cHBvcnRlZCBsb2NhbGUsIHNvIHRyeSBzcGxpdHRpbmcgdGhlIHN0cmluZyB0byBwcm9wZXIgbG9jYWxlIHNldFxuICAgICAgICAgICAgICogRXg6IGVuLGVuLVVTO3E9MC45LGRlO3E9MC42LGFyO3E9MC4yLGhpXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogU3BsaXQgdGhlIGFib3ZlIGludG8gW2VuLGVuLXVzLGRlLGFyLGhpXVxuICAgICAgICAgICAgICogQHR5cGUge0FycmF5fVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZXMuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5zcGxpdCgnOycpWzBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcChsYW5ndWFnZXMsIHRvTG93ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2FsZW5kYXJMb2NhbGUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgIT09ICdlbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRDYWxlbmRhckxvY2FsZUJ1bmRsZSh0aGlzLnNlbGVjdGVkTG9jYWxlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -2,6 +2,7 @@ import { Injectable, NgZone } from '@angular/core';
2
2
  import { NavigationStart, Router } from '@angular/router';
3
3
  import { App } from '@wm/core';
4
4
  import { CONSTANTS } from '@wm/variables';
5
+ import { filter, isEmpty, isEqual } from "lodash-es";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@wm/core";
7
8
  import * as i2 from "@angular/router";
@@ -52,7 +53,7 @@ export class NavigationServiceImpl {
52
53
  });
53
54
  }
54
55
  getPageTransition() {
55
- if (_.isEmpty(this.transition) || _.isEqual('none', this.transition)) {
56
+ if (isEmpty(this.transition) || isEqual('none', this.transition)) {
56
57
  return null;
57
58
  }
58
59
  return this.transition;
@@ -85,7 +86,7 @@ export class NavigationServiceImpl {
85
86
  goToPrevious() {
86
87
  if (this.history.getPagesCount()) {
87
88
  this.transition = this.history.getCurrentPage().transition;
88
- if (!_.isEmpty(this.transition)) {
89
+ if (!isEmpty(this.transition)) {
89
90
  this.transition += '-exit';
90
91
  }
91
92
  this.history.pop();
@@ -192,8 +193,8 @@ export class NavigationServiceImpl {
192
193
  getViewElementInActivePage($el) {
193
194
  let selector;
194
195
  if ($el.length > 1) {
195
- selector = _.filter($el, (childSelector) => {
196
- if (_.isEmpty($(childSelector).closest('[data-role = "partial"]')) && _.isEmpty($(childSelector).closest('[wmprefabcontainer]'))) {
196
+ selector = filter($el, (childSelector) => {
197
+ if (isEmpty($(childSelector).closest('[data-role = "partial"]')) && isEmpty($(childSelector).closest('[wmprefabcontainer]'))) {
197
198
  return childSelector;
198
199
  }
199
200
  });
@@ -262,18 +263,18 @@ export class NavigationServiceImpl {
262
263
  static { this.ɵfac = function NavigationServiceImpl_Factory(t) { return new (t || NavigationServiceImpl)(i0.ɵɵinject(i1.App), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i0.NgZone)); }; }
263
264
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NavigationServiceImpl, factory: NavigationServiceImpl.ɵfac }); }
264
265
  }
265
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationServiceImpl, [{
266
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationServiceImpl, [{
266
267
  type: Injectable
267
- }], function () { return [{ type: i1.App }, { type: i2.Router }, { type: i0.NgZone }]; }, null); })();
268
+ }], () => [{ type: i1.App }, { type: i2.Router }, { type: i0.NgZone }], null); })();
268
269
  class PageInfo {
269
270
  constructor(name, urlParams, transition) {
270
271
  this.name = name;
271
272
  this.urlParams = urlParams;
272
273
  this.transition = transition;
273
- this.transition = _.isEmpty(this.transition) ? null : this.transition;
274
+ this.transition = isEmpty(this.transition) ? null : this.transition;
274
275
  }
275
276
  isEqual(page1) {
276
- return page1 && page1.name === this.name && _.isEqual(page1.urlParams, this.urlParams);
277
+ return page1 && page1.name === this.name && isEqual(page1.urlParams, this.urlParams);
277
278
  }
278
279
  }
279
280
  class History {
@@ -303,4 +304,4 @@ class History {
303
304
  return this.stack.length > 0 ? this.stack[this.stack.length - 1] : undefined;
304
305
  }
305
306
  }
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsR0FBRyxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTFDLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDO0FBR3hDLE1BQU0sT0FBTyxxQkFBcUI7SUFLOUIsWUFBb0IsR0FBUSxFQUFVLE1BQWMsRUFBUyxJQUFZO1FBQXJELFFBQUcsR0FBSCxHQUFHLENBQUs7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUpqRSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV4Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFHakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDbEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLFFBQVEsQ0FBQztnQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO29CQUNsQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdB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Q0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVNLEdBQUc7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQXBwLCBOYXZpZ2F0aW9uT3B0aW9ucywgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuXG5kZWNsYXJlIGNvbnN0IF8sICQ7XG5cbmNvbnN0IHBhcmVudFNlbGVjdG9yID0gJ2JvZHkgPmFwcC1yb290JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7XG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpc1BhZ2VBZGRlZFRvSGlzdG9yeSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHVibGljIHpvbmU6IE5nWm9uZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGV2ZW50LnVybDtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZU5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGFnZUFkZGVkVG9IaXN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYWdlQWRkZWRUb0hpc3RvcnkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwuc3Vic3RyKHVybC5pbmRleE9mKCc/JykgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnJicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0cyA9IHMuc3BsaXQoJz0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zW3NwbGl0c1swXV0gPSBzcGxpdHNbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlTmFtZSA9IHVybC5zdWJzdHIoMCwgdXJsLmluZGV4T2YoJz8nKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlTmFtZSA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZU5hbWVbMF0gPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWUgPSBwYWdlTmFtZS5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogQ29tbWVudGluZyB0aGlzIGNvZGUsIG9uZSBjbGllbnQgcHJvamVjdCBoYXMgSG9tZV9QYWdlIGNvbmZpZ3VyZWQgYXMgTG9naW4gUGFnZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNvIHJlZGlyZWN0aW9uIHRvIEhvbWVfUGFnZSBwb3N0IGxvZ2luIGlzIGZhaWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBsb2dpbiBwYWdlIGlzIGJlaW5nIGxvYWRlZCBhbmQgdXNlciBpcyBsb2dnZWQgaW4sIGNhbmNlbCB0aGF0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcnMuaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcExvZ2luUGFnZVBvc3RMb2dpbigkcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdXJsUGFyYW1zWyduYW1lJ107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG5ldyBQYWdlSW5mbyhwYWdlTmFtZSwgdXJsUGFyYW1zLCB0aGlzLnRyYW5zaXRpb24pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhZ2VUcmFuc2l0aW9uKCkge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KHRoaXMudHJhbnNpdGlvbikgfHwgXy5pc0VxdWFsKCdub25lJywgdGhpcy50cmFuc2l0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gcGFydGljdWxhciBwYWdlXG4gICAgICogQHBhcmFtIHBhZ2VOYW1lXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1BhZ2UocGFnZU5hbWU6IHN0cmluZywgb3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gb3B0aW9ucy50cmFuc2l0aW9uIHx8ICcnO1xuICAgICAgICAvLyBwYWdlIGlzIGFkZGVkIHRvIHN0YWNrIG9ubHkgd2hlbiBjdXJyZW50UGFnZSBpcyBhdmFpbGFibGUuXG4gICAgICAgIGlmICh0aGlzLmhpc3RvcnkuZ2V0Q3VycmVudFBhZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5pc1BhZ2VBZGRlZFRvSGlzdG9yeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2goIG5ldyBQYWdlSW5mbyhwYWdlTmFtZSwgb3B0aW9ucy51cmxQYXJhbXMsIHRoaXMudHJhbnNpdGlvbikpO1xuICAgICAgLyoqXG4gICAgICAgKiAgQnJvd3NlckFuaW1jYXRpb24gbW9kdWxlIGhhcyBpc3N1ZSB3aXRoIFJvdXRlck91dGxldFxuICAgICAgICAgIEluIHRoZSByZXN1bHQgZXZlcnkgcm91dGUgYXBwZW5kaW5nIHRvIHByZXZpb3VzIHJvdXRlIGluc3RlYWQgb2YgcmVwbGFjZS5cbiAgICAgICAgICBUbyBmaXggdGhlIGlzc3VlIHdlIGFyZSBuYXZpZ2F0aW5nIGluc2lkZSB0aGUgbmdab25lc1xuICAgICAgICogXG4gICAgICAgKiAgKi8gIFxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC8ke3BhZ2VOYW1lfWBdLCB7IHF1ZXJ5UGFyYW1zOiBvcHRpb25zLnVybFBhcmFtc30pO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBsYXN0IHZpc2l0ZWQgcGFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1ByZXZpb3VzKCkge1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5LmdldFBhZ2VzQ291bnQoKSkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uID0gdGhpcy5oaXN0b3J5LmdldEN1cnJlbnRQYWdlKCkudHJhbnNpdGlvbjtcbiAgICAgICAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMudHJhbnNpdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb24gKz0gJy1leGl0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGlzdG9yeS5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlQWRkZWRUb0hpc3RvcnkgPSB0cnVlO1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZG9bU2h1YmhhbV0gTmVlZCB0byBoYW5kbGUgZ290b0VsZW1lbnQgaW4gb3RoZXIgcGFydGlhbHNcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gcGFydGljdWxhciB2aWV3XG4gICAgICogQHBhcmFtIHZpZXdOYW1lXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1ZpZXcodmlld05hbWU6IHN0cmluZywgb3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMsIHZhcmlhYmxlOiBhbnkpIHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIGNvbnN0IHBhZ2VOYW1lID0gb3B0aW9ucy5wYWdlTmFtZTtcbiAgICAgICAgY29uc3QgdHJhbnNpdGlvbiA9IG9wdGlvbnMudHJhbnNpdGlvbiB8fCAnJztcbiAgICAgICAgY29uc3QgJGV2ZW50ID0gb3B0aW9ucy4kZXZlbnQ7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhZ2UgPSB0aGlzLmFwcC5hY3RpdmVQYWdlO1xuICAgICAgICBjb25zdCBwcmVmYWJOYW1lID0gdmFyaWFibGUgJiYgdmFyaWFibGUuX2NvbnRleHQgJiYgdmFyaWFibGUuX2NvbnRleHQucHJlZmFiTmFtZTtcblxuICAgICAgICAvLyBDaGVjayBpZiBhcHAgaXMgUHJlZmFiXG4gICAgICAgIGlmICh0aGlzLmFwcC5pc1ByZWZhYlR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub0VsZW1lbnRWaWV3KCQocGFyZW50U2VsZWN0b3IpLmZpbmQoJ1tuYW1lPVwiJyArIHZpZXdOYW1lICsgJ1wiXScpLCB2aWV3TmFtZSwgcGFnZU5hbWUsIHZhcmlhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNoZWNraW5nIGlmIHRoZSBlbGVtZW50IGlzIHByZXNlbnQgaW4gdGhlIHBhZ2Ugb3Igbm90LCBpZiBubyBzaG93IGFuIGVycm9yIHRvYXN0ZXJcbiAgICAgICAgICAgIC8vIGlmIHllcyBjaGVjayBpZiBpdCBpcyBpbnNpZGUgYSBwYXJ0aWFsL3ByZWZhYiBpbiB0aGUgcGFnZSBhbmQgdGhlbiBoaWdobGlnaHQgdGhlIHJlc3BlY3RpdmUgZWxlbWVudFxuICAgICAgICAgICAgLy8gZWxzZSBnb3RvIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBlbGVtZW50IGV4aXN0cyBhbmQgaGlnaGxpZ2h0IHRoZSBlbGVtZW50XG4gICAgICAgICAgICBpZiAocGFnZU5hbWUgIT09IGFjdGl2ZVBhZ2UuYWN0aXZlUGFnZU5hbWUgJiYgIXByZWZhYk5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcnRpYWxXaXRoTmFtZUV4aXN0cyhwYWdlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvRWxlbWVudFZpZXcoJCgnW3BhcnRpYWxjb250YWluZXJdW2NvbnRlbnQ9XCInICsgcGFnZU5hbWUgKyAnXCJdJykuZmluZCgnW25hbWU9XCInICsgdmlld05hbWUgKyAnXCJdJyksIHZpZXdOYW1lLCBwYWdlTmFtZSwgdmFyaWFibGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRvZG9bU2h1YmhhbV06IE1ha2UgYW4gQVBJIGNhbGwgdG8gZ2V0IGFsbCBwYWdlcyBhbmQgY2hlY2sgaWYgdGhlIHBhZ2UgbmFtZVxuICAgICAgICAgICAgICAgICAgICAvLyAgaXMgYSBwYWdlIGFuZCB0aGVuIGRvIHRoaXMgY2FsbCBlbHNlIHNob3cgYW4gZXJyb3IgYXM6XG4gICAgICAgICAgICAgICAgICAgIC8vICB0aGlzLmFwcC5ub3RpZnlBcHAoQ09OU1RBTlRTLldJREdFVF9ET0VTTlRfRVhJU1QsICdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9QYWdlKHBhZ2VOYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3TmFtZTogdmlld05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQ6ICRldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM6IG9wdGlvbnMudXJsUGFyYW1zXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBzdWJzY3JpYmUgdG8gYW4gZXZlbnQgbmFtZWQgcGFnZVJlYWR5IHdoaWNoIG5vdGlmaWVzIHRoaXMgc3Vic2NyaWJlclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGFsbCB3aWRnZXRzIGluIHBhZ2UgYXJlIGxvYWRlZCBpLmUgd2hlbiBwYWdlIGlzIHJlYWR5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VSZWFkeVN1YnNjcmliZXIgPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ3BhZ2VSZWFkeScsIChwYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKHBhcmVudFNlbGVjdG9yKS5maW5kKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKSwgdmlld05hbWUsIHBhZ2VOYW1lLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVhZHlTdWJzY3JpYmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlZmFiTmFtZSAmJiB0aGlzLmlzUHJlZmFiV2l0aE5hbWVFeGlzdHMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKCdbcHJlZmFiTmFtZT1cIicgKyBwcmVmYWJOYW1lICsgJ1wiXScpLmZpbmQoJ1tuYW1lPVwiJyArIHZpZXdOYW1lICsgJ1wiXScpLCB2aWV3TmFtZSwgcGFnZU5hbWUsIHZhcmlhYmxlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhZ2VOYW1lIHx8IHBhZ2VOYW1lID09PSBhY3RpdmVQYWdlLmFjdGl2ZVBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nb1RvRWxlbWVudFZpZXcoJChwYXJlbnRTZWxlY3RvcikuZmluZCgnW25hbWU9XCInICsgdmlld05hbWUgKyAnXCJdJyksIHZpZXdOYW1lLCBwYWdlTmFtZSwgdmFyaWFibGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnlBcHAoQ09OU1RBTlRTLldJREdFVF9ET0VTTlRfRVhJU1QsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBuYXZpZ2F0ZXMgdGhlIHVzZXIgdG8gYSB2aWV3IGVsZW1lbnQgd2l0aCBnaXZlbiBuYW1lXG4gICAgICogaWYgdGhlIGVsZW1lbnQgbm90IGZvdW5kIGluIHRoZSBjb21waWxlZCBtYXJrdXAsIHRoZSBzYW1lIGlzIHNlYXJjaGVkIGluIHRoZSBhdmFpbGFibGUgZGlhbG9ncyBpbiB0aGUgcGFnZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ29Ub0VsZW1lbnRWaWV3KHZpZXdFbGVtZW50LCB2aWV3TmFtZTogc3RyaW5nLCBwYWdlTmFtZTogc3RyaW5nLCB2YXJpYWJsZTogYW55KSB7XG4gICAgICAgIGxldCAkZWwsIHBhcmVudERpYWxvZztcbiAgICAgICAgY29uc3QgYWN0aXZlUGFnZSA9IHRoaXMuYXBwLmFjdGl2ZVBhZ2U7XG4gICAgICAgIGlmICh2aWV3RWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hcHAuaXNQcmVmYWJUeXBlICYmIHBhZ2VOYW1lID09PSBhY3RpdmVQYWdlLmFjdGl2ZVBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdmlld0VsZW1lbnQgPSB0aGlzLmdldFZpZXdFbGVtZW50SW5BY3RpdmVQYWdlKHZpZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJGVsID0gdmlld0VsZW1lbnRbMF0ud2lkZ2V0O1xuICAgICAgICAgICAgc3dpdGNoICgkZWwud2lkZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dtLWFjY29yZGlvbnBhbmUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbmNlc3RvcnModmlld0VsZW1lbnQsIHZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgJGVsLmV4cGFuZCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd3bS10YWJwYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QW5jZXN0b3JzKHZpZXdFbGVtZW50LCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICRlbC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnd20tc2VnbWVudC1jb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QW5jZXN0b3JzKHZpZXdFbGVtZW50LCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICRlbC5uYXZpZ2F0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd3bS1wYW5lbCc6XG4gICAgICAgICAgICAgICAgICAgIC8qIGZsaXAgdGhlIGFjdGl2ZSBmbGFnICovXG4gICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50RGlhbG9nID0gdGhpcy5zaG93QW5jZXN0b3JEaWFsb2codmlld05hbWUpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudERpYWxvZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKSwgdmlld05hbWUsIHBhZ2VOYW1lLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJZiBwYWdlIG5hbWUgaXMgZXF1YWwgdG8gYWN0aXZlIHBhZ2VOYW1lLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gdGhlIHBhZ2UuXG4gICAgIFRoZSBlbGVtZW50IGluIHRoZSBwYXJ0aWFsIHBhZ2UgaXMgbm90IHNlbGVjdGVkLiovXG4gICAgcHJpdmF0ZSBnZXRWaWV3RWxlbWVudEluQWN0aXZlUGFnZSgkZWwpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yO1xuICAgICAgICBpZiAoJGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gXy5maWx0ZXIoJGVsLCAoY2hpbGRTZWxlY3RvcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChfLmlzRW1wdHkoJChjaGlsZFNlbGVjdG9yKS5jbG9zZXN0KCdbZGF0YS1yb2xlID0gXCJwYXJ0aWFsXCJdJykpICYmIF8uaXNFbXB0eSgkKGNoaWxkU2VsZWN0b3IpLmNsb3Nlc3QoJ1t3bXByZWZhYmNvbnRhaW5lcl0nKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAkZWwgPSAkKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrcyBpZiB0aGUgcGFnZWNvbnRhaW5lciBoYXMgdGhlIHBhZ2VOYW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNQYXJ0aWFsV2l0aE5hbWVFeGlzdHMobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAkKCdbcGFydGlhbGNvbnRhaW5lcl1bY29udGVudD1cIicgKyBuYW1lICsgJ1wiXScpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3MgaWYgdGhlIHBhZ2Vjb250YWluZXIgaGFzIHRoZSBwcmVmYWIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1ByZWZhYldpdGhOYW1lRXhpc3RzKHByZWZhYk5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gJCgnW3ByZWZhYk5hbWU9XCInICsgcHJlZmFiTmFtZSArICdcIl0nKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBzaG93cyBhbGwgdGhlIHBhcmVudCBjb250YWluZXIgdmlldyBlbGVtZW50cyBmb3IgYSBnaXZlbiB2aWV3IGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dBbmNlc3RvcnMoZWxlbWVudCwgdmFyaWFibGUpIHtcbiAgICAgICAgY29uc3QgYW5jZXN0b3JTZWFyY2hRdWVyeSA9ICdbd20tbmF2aWdhYmxlLWVsZW1lbnQ9XCJ0cnVlXCJdJztcblxuICAgICAgICBlbGVtZW50XG4gICAgICAgICAgICAucGFyZW50cyhhbmNlc3RvclNlYXJjaFF1ZXJ5KVxuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZvckVhY2goKHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRlbCA9IHBhcmVudC53aWRnZXQ7XG4gICAgICAgICAgICAgICAgc3dpdGNoICgkZWwud2lkZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS1hY2NvcmRpb25wYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS10YWJwYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS1zZWdtZW50LWNvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgJGVsLm5hdmlnYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd20tcGFuZWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLyogZmxpcCB0aGUgYWN0aXZlIGZsYWcgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLypcbiAgICAgKiBzZWFyY2hlcyBmb3IgYSBnaXZlbiB2aWV3IGVsZW1lbnQgaW5zaWRlIHRoZSBhdmFpbGFibGUgZGlhbG9ncyBpbiBjdXJyZW50IHBhZ2VcbiAgICAgKiBpZiBmb3VuZCwgdGhlIGRpYWxvZyBpcyBkaXNwbGF5ZWQsIHRoZSBkaWFsb2cgaWQgaXMgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG93QW5jZXN0b3JEaWFsb2codmlld05hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgZGlhbG9nSWQ7XG4gICAgICAgICQoJ2FwcC1yb290IFtkaWFsb2d0eXBlXScpXG4gICAgICAgICAgICAuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoJChkaWFsb2cuaHRtbCgpKS5maW5kKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nSWQgPSBkaWFsb2cuYXR0cignbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkaWFsb2dJZDtcbiAgICB9XG59XG5cbmNsYXNzIFBhZ2VJbmZvIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lLCBwdWJsaWMgdXJsUGFyYW1zPywgcHVibGljIHRyYW5zaXRpb24/KSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbiA9IF8uaXNFbXB0eSh0aGlzLnRyYW5zaXRpb24pID8gbnVsbCA6IHRoaXMudHJhbnNpdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFcXVhbChwYWdlMTogUGFnZUluZm8pIHtcbiAgICAgICAgcmV0dXJuIHBhZ2UxICYmIHBhZ2UxLm5hbWUgPT09IHRoaXMubmFtZSAmJiBfLmlzRXF1YWwocGFnZTEudXJsUGFyYW1zLCB0aGlzLnVybFBhcmFtcyk7XG4gICAgfVxufVxuXG5jbGFzcyBIaXN0b3J5IHtcbiAgICBwcml2YXRlIHN0YWNrOiBBcnJheTxQYWdlSW5mbz4gPSBbXTtcbiAgICBwcml2YXRlIGN1cnJlbnRQYWdlOiBQYWdlSW5mbztcblxuICAgIHB1YmxpYyBnZXRDdXJyZW50UGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhZ2VzQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNMYXN0VmlzaXRlZFBhZ2UocGFnZTogUGFnZUluZm8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFzdFBhZ2UoKS5pc0VxdWFsKHBhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXNoKHBhZ2VJbmZvOiBQYWdlSW5mbykge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuY3VycmVudFBhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlSW5mbztcbiAgICB9XG5cbiAgICBwdWJsaWMgcG9wKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExhc3RQYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5sZW5ndGggPiAwID8gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdfQ==
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsR0FBRyxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7OztBQUluRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUd4QyxNQUFNLE9BQU8scUJBQXFCO0lBSzlCLFlBQW9CLEdBQVEsRUFBVSxNQUFjLEVBQVMsSUFBWTtRQUFyRCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVE7UUFKakUsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBR2pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQyxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLFFBQVEsQ0FBQztnQkFDYixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQzdCLElBQUks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QUFDO0lBOEJ4QyxDQUFDO0lBM0JVLGNBQWM7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxJQUFJLENBQUMsUUFBa0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUNoQyxDQUFDO0lBRU0sR0FBRztRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBcHAsIE5hdmlnYXRpb25PcHRpb25zLCBBYnN0cmFjdE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2ZpbHRlciwgaXNFbXB0eSwgaXNFcXVhbH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbmNvbnN0IHBhcmVudFNlbGVjdG9yID0gJ2JvZHkgPmFwcC1yb290JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgaGlzdG9yeSA9IG5ldyBIaXN0b3J5KCk7XG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpc1BhZ2VBZGRlZFRvSGlzdG9yeSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHVibGljIHpvbmU6IE5nWm9uZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGV2ZW50LnVybDtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSB7fTtcbiAgICAgICAgICAgICAgICBsZXQgcGFnZU5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzUGFnZUFkZGVkVG9IaXN0b3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNQYWdlQWRkZWRUb0hpc3RvcnkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwuc3Vic3RyKHVybC5pbmRleE9mKCc/JykgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnJicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0cyA9IHMuc3BsaXQoJz0nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsUGFyYW1zW3NwbGl0c1swXV0gPSBzcGxpdHNbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlTmFtZSA9IHVybC5zdWJzdHIoMCwgdXJsLmluZGV4T2YoJz8nKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlTmFtZSA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZU5hbWVbMF0gPT09ICcvJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWUgPSBwYWdlTmFtZS5zdWJzdHIoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICogQ29tbWVudGluZyB0aGlzIGNvZGUsIG9uZSBjbGllbnQgcHJvamVjdCBoYXMgSG9tZV9QYWdlIGNvbmZpZ3VyZWQgYXMgTG9naW4gUGFnZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNvIHJlZGlyZWN0aW9uIHRvIEhvbWVfUGFnZSBwb3N0IGxvZ2luIGlzIGZhaWxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBsb2dpbiBwYWdlIGlzIGJlaW5nIGxvYWRlZCBhbmQgdXNlciBpcyBsb2dnZWQgaW4sIGNhbmNlbCB0aGF0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcnMuaXNBcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcExvZ2luUGFnZVBvc3RMb2dpbigkcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdXJsUGFyYW1zWyduYW1lJ107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKG5ldyBQYWdlSW5mbyhwYWdlTmFtZSwgdXJsUGFyYW1zLCB0aGlzLnRyYW5zaXRpb24pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBhZ2VUcmFuc2l0aW9uKCkge1xuICAgICAgICBpZiAoaXNFbXB0eSh0aGlzLnRyYW5zaXRpb24pIHx8IGlzRXF1YWwoJ25vbmUnLCB0aGlzLnRyYW5zaXRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBwYXJ0aWN1bGFyIHBhZ2VcbiAgICAgKiBAcGFyYW0gcGFnZU5hbWVcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBnb1RvUGFnZShwYWdlTmFtZTogc3RyaW5nLCBvcHRpb25zOiBOYXZpZ2F0aW9uT3B0aW9ucykge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb24gPSBvcHRpb25zLnRyYW5zaXRpb24gfHwgJyc7XG4gICAgICAgIC8vIHBhZ2UgaXMgYWRkZWQgdG8gc3RhY2sgb25seSB3aGVuIGN1cnJlbnRQYWdlIGlzIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKHRoaXMuaGlzdG9yeS5nZXRDdXJyZW50UGFnZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGFnZUFkZGVkVG9IaXN0b3J5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaCggbmV3IFBhZ2VJbmZvKHBhZ2VOYW1lLCBvcHRpb25zLnVybFBhcmFtcywgdGhpcy50cmFuc2l0aW9uKSk7XG4gICAgICAvKipcbiAgICAgICAqICBCcm93c2VyQW5pbWNhdGlvbiBtb2R1bGUgaGFzIGlzc3VlIHdpdGggUm91dGVyT3V0bGV0XG4gICAgICAgICAgSW4gdGhlIHJlc3VsdCBldmVyeSByb3V0ZSBhcHBlbmRpbmcgdG8gcHJldmlvdXMgcm91dGUgaW5zdGVhZCBvZiByZXBsYWNlLlxuICAgICAgICAgIFRvIGZpeCB0aGUgaXNzdWUgd2UgYXJlIG5hdmlnYXRpbmcgaW5zaWRlIHRoZSBuZ1pvbmVzXG4gICAgICAgKlxuICAgICAgICogICovXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLyR7cGFnZU5hbWV9YF0sIHsgcXVlcnlQYXJhbXM6IG9wdGlvbnMudXJsUGFyYW1zfSk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIGxhc3QgdmlzaXRlZCBwYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnb1RvUHJldmlvdXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcnkuZ2V0UGFnZXNDb3VudCgpKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb24gPSB0aGlzLmhpc3RvcnkuZ2V0Q3VycmVudFBhZ2UoKS50cmFuc2l0aW9uO1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMudHJhbnNpdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb24gKz0gJy1leGl0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaGlzdG9yeS5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlQWRkZWRUb0hpc3RvcnkgPSB0cnVlO1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZG9bU2h1YmhhbV0gTmVlZCB0byBoYW5kbGUgZ290b0VsZW1lbnQgaW4gb3RoZXIgcGFydGlhbHNcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gcGFydGljdWxhciB2aWV3XG4gICAgICogQHBhcmFtIHZpZXdOYW1lXG4gICAgICogQHBhcmFtIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ29Ub1ZpZXcodmlld05hbWU6IHN0cmluZywgb3B0aW9uczogTmF2aWdhdGlvbk9wdGlvbnMsIHZhcmlhYmxlOiBhbnkpIHtcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIGNvbnN0IHBhZ2VOYW1lID0gb3B0aW9ucy5wYWdlTmFtZTtcbiAgICAgICAgY29uc3QgdHJhbnNpdGlvbiA9IG9wdGlvbnMudHJhbnNpdGlvbiB8fCAnJztcbiAgICAgICAgY29uc3QgJGV2ZW50ID0gb3B0aW9ucy4kZXZlbnQ7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhZ2UgPSB0aGlzLmFwcC5hY3RpdmVQYWdlO1xuICAgICAgICBjb25zdCBwcmVmYWJOYW1lID0gdmFyaWFibGUgJiYgdmFyaWFibGUuX2NvbnRleHQgJiYgdmFyaWFibGUuX2NvbnRleHQucHJlZmFiTmFtZTtcblxuICAgICAgICAvLyBDaGVjayBpZiBhcHAgaXMgUHJlZmFiXG4gICAgICAgIGlmICh0aGlzLmFwcC5pc1ByZWZhYlR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub0VsZW1lbnRWaWV3KCQocGFyZW50U2VsZWN0b3IpLmZpbmQoJ1tuYW1lPVwiJyArIHZpZXdOYW1lICsgJ1wiXScpLCB2aWV3TmFtZSwgcGFnZU5hbWUsIHZhcmlhYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNoZWNraW5nIGlmIHRoZSBlbGVtZW50IGlzIHByZXNlbnQgaW4gdGhlIHBhZ2Ugb3Igbm90LCBpZiBubyBzaG93IGFuIGVycm9yIHRvYXN0ZXJcbiAgICAgICAgICAgIC8vIGlmIHllcyBjaGVjayBpZiBpdCBpcyBpbnNpZGUgYSBwYXJ0aWFsL3ByZWZhYiBpbiB0aGUgcGFnZSBhbmQgdGhlbiBoaWdobGlnaHQgdGhlIHJlc3BlY3RpdmUgZWxlbWVudFxuICAgICAgICAgICAgLy8gZWxzZSBnb3RvIHRoZSBwYWdlIGluIHdoaWNoIHRoZSBlbGVtZW50IGV4aXN0cyBhbmQgaGlnaGxpZ2h0IHRoZSBlbGVtZW50XG4gICAgICAgICAgICBpZiAocGFnZU5hbWUgIT09IGFjdGl2ZVBhZ2UuYWN0aXZlUGFnZU5hbWUgJiYgIXByZWZhYk5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcnRpYWxXaXRoTmFtZUV4aXN0cyhwYWdlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvRWxlbWVudFZpZXcoJCgnW3BhcnRpYWxjb250YWluZXJdW2NvbnRlbnQ9XCInICsgcGFnZU5hbWUgKyAnXCJdJykuZmluZCgnW25hbWU9XCInICsgdmlld05hbWUgKyAnXCJdJyksIHZpZXdOYW1lLCBwYWdlTmFtZSwgdmFyaWFibGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRvZG9bU2h1YmhhbV06IE1ha2UgYW4gQVBJIGNhbGwgdG8gZ2V0IGFsbCBwYWdlcyBhbmQgY2hlY2sgaWYgdGhlIHBhZ2UgbmFtZVxuICAgICAgICAgICAgICAgICAgICAvLyAgaXMgYSBwYWdlIGFuZCB0aGVuIGRvIHRoaXMgY2FsbCBlbHNlIHNob3cgYW4gZXJyb3IgYXM6XG4gICAgICAgICAgICAgICAgICAgIC8vICB0aGlzLmFwcC5ub3RpZnlBcHAoQ09OU1RBTlRTLldJREdFVF9ET0VTTlRfRVhJU1QsICdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9QYWdlKHBhZ2VOYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3TmFtZTogdmlld05hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQ6ICRldmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxQYXJhbXM6IG9wdGlvbnMudXJsUGFyYW1zXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBzdWJzY3JpYmUgdG8gYW4gZXZlbnQgbmFtZWQgcGFnZVJlYWR5IHdoaWNoIG5vdGlmaWVzIHRoaXMgc3Vic2NyaWJlclxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGFsbCB3aWRnZXRzIGluIHBhZ2UgYXJlIGxvYWRlZCBpLmUgd2hlbiBwYWdlIGlzIHJlYWR5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VSZWFkeVN1YnNjcmliZXIgPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ3BhZ2VSZWFkeScsIChwYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKHBhcmVudFNlbGVjdG9yKS5maW5kKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKSwgdmlld05hbWUsIHBhZ2VOYW1lLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVhZHlTdWJzY3JpYmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlZmFiTmFtZSAmJiB0aGlzLmlzUHJlZmFiV2l0aE5hbWVFeGlzdHMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKCdbcHJlZmFiTmFtZT1cIicgKyBwcmVmYWJOYW1lICsgJ1wiXScpLmZpbmQoJ1tuYW1lPVwiJyArIHZpZXdOYW1lICsgJ1wiXScpLCB2aWV3TmFtZSwgcGFnZU5hbWUsIHZhcmlhYmxlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhZ2VOYW1lIHx8IHBhZ2VOYW1lID09PSBhY3RpdmVQYWdlLmFjdGl2ZVBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nb1RvRWxlbWVudFZpZXcoJChwYXJlbnRTZWxlY3RvcikuZmluZCgnW25hbWU9XCInICsgdmlld05hbWUgKyAnXCJdJyksIHZpZXdOYW1lLCBwYWdlTmFtZSwgdmFyaWFibGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnlBcHAoQ09OU1RBTlRTLldJREdFVF9ET0VTTlRfRVhJU1QsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBuYXZpZ2F0ZXMgdGhlIHVzZXIgdG8gYSB2aWV3IGVsZW1lbnQgd2l0aCBnaXZlbiBuYW1lXG4gICAgICogaWYgdGhlIGVsZW1lbnQgbm90IGZvdW5kIGluIHRoZSBjb21waWxlZCBtYXJrdXAsIHRoZSBzYW1lIGlzIHNlYXJjaGVkIGluIHRoZSBhdmFpbGFibGUgZGlhbG9ncyBpbiB0aGUgcGFnZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ29Ub0VsZW1lbnRWaWV3KHZpZXdFbGVtZW50LCB2aWV3TmFtZTogc3RyaW5nLCBwYWdlTmFtZTogc3RyaW5nLCB2YXJpYWJsZTogYW55KSB7XG4gICAgICAgIGxldCAkZWwsIHBhcmVudERpYWxvZztcbiAgICAgICAgY29uc3QgYWN0aXZlUGFnZSA9IHRoaXMuYXBwLmFjdGl2ZVBhZ2U7XG4gICAgICAgIGlmICh2aWV3RWxlbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hcHAuaXNQcmVmYWJUeXBlICYmIHBhZ2VOYW1lID09PSBhY3RpdmVQYWdlLmFjdGl2ZVBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdmlld0VsZW1lbnQgPSB0aGlzLmdldFZpZXdFbGVtZW50SW5BY3RpdmVQYWdlKHZpZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJGVsID0gdmlld0VsZW1lbnRbMF0ud2lkZ2V0O1xuICAgICAgICAgICAgc3dpdGNoICgkZWwud2lkZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3dtLWFjY29yZGlvbnBhbmUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dBbmNlc3RvcnModmlld0VsZW1lbnQsIHZhcmlhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgJGVsLmV4cGFuZCgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd3bS10YWJwYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QW5jZXN0b3JzKHZpZXdFbGVtZW50LCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICRlbC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnd20tc2VnbWVudC1jb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93QW5jZXN0b3JzKHZpZXdFbGVtZW50LCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICRlbC5uYXZpZ2F0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd3bS1wYW5lbCc6XG4gICAgICAgICAgICAgICAgICAgIC8qIGZsaXAgdGhlIGFjdGl2ZSBmbGFnICovXG4gICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50RGlhbG9nID0gdGhpcy5zaG93QW5jZXN0b3JEaWFsb2codmlld05hbWUpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudERpYWxvZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9FbGVtZW50VmlldygkKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKSwgdmlld05hbWUsIHBhZ2VOYW1lLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJZiBwYWdlIG5hbWUgaXMgZXF1YWwgdG8gYWN0aXZlIHBhZ2VOYW1lLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGVsZW1lbnQgaW4gdGhlIHBhZ2UuXG4gICAgIFRoZSBlbGVtZW50IGluIHRoZSBwYXJ0aWFsIHBhZ2UgaXMgbm90IHNlbGVjdGVkLiovXG4gICAgcHJpdmF0ZSBnZXRWaWV3RWxlbWVudEluQWN0aXZlUGFnZSgkZWwpIHtcbiAgICAgICAgbGV0IHNlbGVjdG9yO1xuICAgICAgICBpZiAoJGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHNlbGVjdG9yID0gZmlsdGVyKCRlbCwgKGNoaWxkU2VsZWN0b3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eSgkKGNoaWxkU2VsZWN0b3IpLmNsb3Nlc3QoJ1tkYXRhLXJvbGUgPSBcInBhcnRpYWxcIl0nKSkgJiYgaXNFbXB0eSgkKGNoaWxkU2VsZWN0b3IpLmNsb3Nlc3QoJ1t3bXByZWZhYmNvbnRhaW5lcl0nKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAkZWwgPSAkKHNlbGVjdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJGVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrcyBpZiB0aGUgcGFnZWNvbnRhaW5lciBoYXMgdGhlIHBhZ2VOYW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNQYXJ0aWFsV2l0aE5hbWVFeGlzdHMobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiAkKCdbcGFydGlhbGNvbnRhaW5lcl1bY29udGVudD1cIicgKyBuYW1lICsgJ1wiXScpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3MgaWYgdGhlIHBhZ2Vjb250YWluZXIgaGFzIHRoZSBwcmVmYWIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1ByZWZhYldpdGhOYW1lRXhpc3RzKHByZWZhYk5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gJCgnW3ByZWZhYk5hbWU9XCInICsgcHJlZmFiTmFtZSArICdcIl0nKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBzaG93cyBhbGwgdGhlIHBhcmVudCBjb250YWluZXIgdmlldyBlbGVtZW50cyBmb3IgYSBnaXZlbiB2aWV3IGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dBbmNlc3RvcnMoZWxlbWVudCwgdmFyaWFibGUpIHtcbiAgICAgICAgY29uc3QgYW5jZXN0b3JTZWFyY2hRdWVyeSA9ICdbd20tbmF2aWdhYmxlLWVsZW1lbnQ9XCJ0cnVlXCJdJztcblxuICAgICAgICBlbGVtZW50XG4gICAgICAgICAgICAucGFyZW50cyhhbmNlc3RvclNlYXJjaFF1ZXJ5KVxuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZvckVhY2goKHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRlbCA9IHBhcmVudC53aWRnZXQ7XG4gICAgICAgICAgICAgICAgc3dpdGNoICgkZWwud2lkZ2V0VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS1hY2NvcmRpb25wYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS10YWJwYW5lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd3bS1zZWdtZW50LWNvbnRlbnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgJGVsLm5hdmlnYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnd20tcGFuZWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgLyogZmxpcCB0aGUgYWN0aXZlIGZsYWcgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLypcbiAgICAgKiBzZWFyY2hlcyBmb3IgYSBnaXZlbiB2aWV3IGVsZW1lbnQgaW5zaWRlIHRoZSBhdmFpbGFibGUgZGlhbG9ncyBpbiBjdXJyZW50IHBhZ2VcbiAgICAgKiBpZiBmb3VuZCwgdGhlIGRpYWxvZyBpcyBkaXNwbGF5ZWQsIHRoZSBkaWFsb2cgaWQgaXMgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG93QW5jZXN0b3JEaWFsb2codmlld05hbWU6IHN0cmluZykge1xuICAgICAgICBsZXQgZGlhbG9nSWQ7XG4gICAgICAgICQoJ2FwcC1yb290IFtkaWFsb2d0eXBlXScpXG4gICAgICAgICAgICAuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlhbG9nID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoJChkaWFsb2cuaHRtbCgpKS5maW5kKCdbbmFtZT1cIicgKyB2aWV3TmFtZSArICdcIl0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nSWQgPSBkaWFsb2cuYXR0cignbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkaWFsb2dJZDtcbiAgICB9XG59XG5cbmNsYXNzIFBhZ2VJbmZvIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lLCBwdWJsaWMgdXJsUGFyYW1zPywgcHVibGljIHRyYW5zaXRpb24/KSB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbiA9IGlzRW1wdHkodGhpcy50cmFuc2l0aW9uKSA/IG51bGwgOiB0aGlzLnRyYW5zaXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWwocGFnZTE6IFBhZ2VJbmZvKSB7XG4gICAgICAgIHJldHVybiBwYWdlMSAmJiBwYWdlMS5uYW1lID09PSB0aGlzLm5hbWUgJiYgaXNFcXVhbChwYWdlMS51cmxQYXJhbXMsIHRoaXMudXJsUGFyYW1zKTtcbiAgICB9XG59XG5cbmNsYXNzIEhpc3Rvcnkge1xuICAgIHByaXZhdGUgc3RhY2s6IEFycmF5PFBhZ2VJbmZvPiA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFBhZ2U6IFBhZ2VJbmZvO1xuXG4gICAgcHVibGljIGdldEN1cnJlbnRQYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGFnZXNDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2subGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0xhc3RWaXNpdGVkUGFnZShwYWdlOiBQYWdlSW5mbykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRMYXN0UGFnZSgpLmlzRXF1YWwocGFnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHB1c2gocGFnZUluZm86IFBhZ2VJbmZvKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2VJbmZvO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3AoKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGFzdFBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aCA+IDAgPyB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19
@@ -114,10 +114,10 @@ export class PipeProvider {
114
114
  static { this.ɵfac = function PipeProvider_Factory(t) { return new (t || PipeProvider)(i0.ɵɵinject(i0.Compiler), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i1.DomSanitizer), i0.ɵɵinject(i2.AbstractI18nService)); }; }
115
115
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PipeProvider, factory: PipeProvider.ɵfac, providedIn: 'root' }); }
116
116
  }
117
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PipeProvider, [{
117
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PipeProvider, [{
118
118
  type: Injectable,
119
119
  args: [{
120
120
  providedIn: 'root'
121
121
  }]
122
- }], function () { return [{ type: i0.Compiler }, { type: i0.Injector }, { type: i1.DomSanitizer }, { type: i2.AbstractI18nService }]; }, null); })();
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZ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LEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQ3pDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxQjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ3BCO2FBQU07WUFDSCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbEI7WUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDTCxDQUFDOzZFQXpIUSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZULE1BQU07O3VGQUVULFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0aW9uVG9rZW4sIEtleVZhbHVlRGlmZmVycywgUGlwZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFzeW5jUGlwZSxcbiAgICBVcHBlckNhc2VQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgU2xpY2VQaXBlLFxuICAgIERlY2ltYWxQaXBlLFxuICAgIFBlcmNlbnRQaXBlLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gICAgQ3VycmVuY3lQaXBlLFxuICAgIERhdGVQaXBlLFxuICAgIEkxOG5QbHVyYWxQaXBlLFxuICAgIEkxOG5TZWxlY3RQaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBOZ0xvY2FsaXphdGlvblxufSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICAgIFN1ZmZpeFBpcGUsXG4gICAgVG9EYXRlUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFRpbWVGcm9tTm93UGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgU3RhdGVDbGFzc1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIEN1c3RvbVBpcGUsXG4gICAgVHJ1c3RBc1BpcGUsXG4gICAgU2FuaXRpemVQaXBlXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLCBDdXN0b21QaXBlTWFuYWdlciwgQWJzdHJhY3RJMThuU2VydmljZSB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVQcm92aWRlciB7XG4gICAgX3BpcGVNZXRhO1xuICAgIF9sb2NhbGUgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgJ2VuJztcbiAgICBmb3JtYXRzQnlMb2NhbGU7XG4gICAgcHJlcGFyZVBpcGVNZXRhID0gKFxuICAgICAgICByZWZlcmVuY2U6IFBpcGUsXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVyZTogYm9vbGVhbixcbiAgICAgICAgZGlEZXBzID0gW11cbiAgICApID0+ICh7XG4gICAgICAgIHR5cGU6IHsgcmVmZXJlbmNlLCBkaURlcHMgfSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgcHVyZVxuICAgIH0pO1xuICAgIF9waXBlRGF0YSA9IFtdO1xuXG4gICAgc2V0UGlwZURhdGEoKSB7XG4gICAgICAgIHRoaXMuX3BpcGVEYXRhID0gW1xuICAgICAgICAgICAgLy8gVE9ETyB8IE5FRUQgVE8gQkUgVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShBc3luY1BpcGUsICdhc3luYycsIGZhbHNlLCBbQ2hhbmdlRGV0ZWN0b3JSZWZdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFNsaWNlUGlwZSwgJ3NsaWNlJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUGVyY2VudFBpcGUsICdwZXJjZW50JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blBsdXJhbFBpcGUsICdpMThuUGx1cmFsJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIE5nTG9jYWxpemF0aW9uXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEkxOG5TZWxlY3RQaXBlLCAnaTE4blNlbGVjdCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoS2V5VmFsdWVQaXBlLCAna2V5dmFsdWUnLCBmYWxzZSwgW1xuICAgICAgICAgICAgICAgIEtleVZhbHVlRGlmZmVyc1xuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlSWNvbkNsYXNzUGlwZSwgJ2ZpbGVJY29uQ2xhc3MnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFxuICAgICAgICAgICAgICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgICAgICAgICAgICAgJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZScsXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0YXRlQ2xhc3NQaXBlLCAnc3RhdGVDbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsZVNpemVQaXBlLCAnZmlsZXNpemUnLCB0cnVlKSxcbiAgICAgICAgICAgIC8vIFRFU1RFRFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRmlsdGVyUGlwZSwgJ2ZpbHRlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVXBwZXJDYXNlUGlwZSwgJ3VwcGVyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoTG93ZXJDYXNlUGlwZSwgJ2xvd2VyY2FzZScsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSnNvblBpcGUsICdqc29uJywgZmFsc2UpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGVjaW1hbFBpcGUsICdudW1iZXInLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUaXRsZUNhc2VQaXBlLCAndGl0bGVjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXJyZW5jeVBpcGUsICdjdXJyZW5jeScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKERhdGVQaXBlLCAnZGF0ZScsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvRGF0ZVBpcGUsICd0b0RhdGUnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERhdGVQaXBlKHRoaXMuX2xvY2FsZSksIHVuZGVmaW5lZCwgdGhpcy5pbmplY3Rvci5nZXQoQ3VzdG9tUGlwZU1hbmFnZXIpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvTnVtYmVyUGlwZSwgJ3RvTnVtYmVyJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpLFxuICAgICAgICAgICAgICAgIHRoaXMuaTE4c2VydmljZVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShUb0N1cnJlbmN5UGlwZSwgJ3RvQ3VycmVuY3knLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFByZWZpeFBpcGUsICdwcmVmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN1ZmZpeFBpcGUsICdzdWZmaXgnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpbWVGcm9tTm93UGlwZSwgJ3RpbWVGcm9tTm93JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShOdW1iZXJUb1N0cmluZ1BpcGUsICdudW1iZXJUb1N0cmluZycsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTdHJpbmdUb051bWJlclBpcGUsICdzdHJpbmdUb051bWJlcicsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoQ3VzdG9tUGlwZSwgJ2N1c3RvbScsIHRydWUsIFt0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcildKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRydXN0QXNQaXBlLCAndHJ1c3RBcycsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2FuaXRpemVQaXBlLCAnc2FuaXRpemUnLCB0cnVlLCBbdGhpcy5kb21TYW5pdGl6ZXJdKVxuICAgICAgICBdO1xuICAgIH1cblxuXG4gICAgdW5rbm93blBpcGUobmFtZSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgVGhlIHBpcGUgJyR7bmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6RG9tU2FuaXRpemVyLCBwcml2YXRlIGkxOHNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fcGlwZU1ldGEgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc2V0UGlwZURhdGEoKTtcbiAgICAgICAgdGhpcy5fcGlwZURhdGEuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3BpcGVNZXRhLnNldCh2Lm5hbWUsIHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtYXRzQnlMb2NhbGUgPSB0aGlzLmkxOHNlcnZpY2U/IHRoaXMuaTE4c2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA6IHt9O1xuICAgIH1cblxuICAgIG1ldGEobmFtZSkge1xuICAgICAgICBjb25zdCBtZXRhID0gdGhpcy5fcGlwZU1ldGEuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAoIW1ldGEpIHtcbiAgICAgICAgICAgIHRoaXMudW5rbm93blBpcGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfVxuXG4gICAgZ2V0UGlwZU5hbWVWc0lzUHVyZU1hcCgpIHtcbiAgICAgICAgY29uc3QgX21hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fcGlwZU1ldGEuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgX21hcC5zZXQoaywgdi5wdXJlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfbWFwO1xuICAgIH1cblxuICAgIHJlc29sdmVEZXAoZGVwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChkZXAudG9rZW4uaWRlbnRpZmllci5yZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIGdldEluc3RhbmNlKG5hbWUpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdHlwZTogeyByZWZlcmVuY2U6IHJlZiwgZGlEZXBzOiBkZXBzIH1cbiAgICAgICAgfSA9IHRoaXMubWV0YShuYW1lKTtcbiAgICAgICAgaWYgKCFyZWYpIHtcbiAgICAgICAgICAgIHRoaXMudW5rbm93blBpcGUobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHJlZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChkZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
122
+ }], () => [{ type: i0.Compiler }, { type: i0.Injector }, { type: i1.DomSanitizer }, { type: i2.AbstractI18nService }], null); })();
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZ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LElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUN6QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7NkVBekhRLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBRlQsTUFBTTs7aUZBRVQsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3Rpb25Ub2tlbiwgS2V5VmFsdWVEaWZmZXJzLCBQaXBlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXN5bmNQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGUsXG4gICAgTG93ZXJDYXNlUGlwZSxcbiAgICBKc29uUGlwZSxcbiAgICBTbGljZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgUGVyY2VudFBpcGUsXG4gICAgVGl0bGVDYXNlUGlwZSxcbiAgICBDdXJyZW5jeVBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgSTE4blBsdXJhbFBpcGUsXG4gICAgSTE4blNlbGVjdFBpcGUsXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIE5nTG9jYWxpemF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gICAgU3VmZml4UGlwZSxcbiAgICBUb0RhdGVQaXBlLFxuICAgIEZpbGVJY29uQ2xhc3NQaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgRmlsdGVyUGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgVGltZUZyb21Ob3dQaXBlLFxuICAgIE51bWJlclRvU3RyaW5nUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBTdHJpbmdUb051bWJlclBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUcnVzdEFzUGlwZSxcbiAgICBTYW5pdGl6ZVBpcGVcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIEN1c3RvbVBpcGVNYW5hZ2VyLCBBYnN0cmFjdEkxOG5TZXJ2aWNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGlwZVByb3ZpZGVyIHtcbiAgICBfcGlwZU1ldGE7XG4gICAgX2xvY2FsZSA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCAnZW4nO1xuICAgIGZvcm1hdHNCeUxvY2FsZTtcbiAgICBwcmVwYXJlUGlwZU1ldGEgPSAoXG4gICAgICAgIHJlZmVyZW5jZTogUGlwZSxcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBwdXJlOiBib29sZWFuLFxuICAgICAgICBkaURlcHMgPSBbXVxuICAgICkgPT4gKHtcbiAgICAgICAgdHlwZTogeyByZWZlcmVuY2UsIGRpRGVwcyB9LFxuICAgICAgICBuYW1lLFxuICAgICAgICBwdXJlXG4gICAgfSk7XG4gICAgX3BpcGVEYXRhID0gW107XG5cbiAgICBzZXRQaXBlRGF0YSgpIHtcbiAgICAgICAgdGhpcy5fcGlwZURhdGEgPSBbXG4gICAgICAgICAgICAvLyBUT0RPIHwgTkVFRCBUTyBCRSBURVNURURcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEFzeW5jUGlwZSwgJ2FzeW5jJywgZmFsc2UsIFtDaGFuZ2VEZXRlY3RvclJlZl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2xpY2VQaXBlLCAnc2xpY2UnLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShQZXJjZW50UGlwZSwgJ3BlcmNlbnQnLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShJMThuUGx1cmFsUGlwZSwgJ2kxOG5QbHVyYWwnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgTmdMb2NhbGl6YXRpb25cbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blNlbGVjdFBpcGUsICdpMThuU2VsZWN0JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShLZXlWYWx1ZVBpcGUsICdrZXl2YWx1ZScsIGZhbHNlLCBbXG4gICAgICAgICAgICAgICAgS2V5VmFsdWVEaWZmZXJzXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEZpbGVJY29uQ2xhc3NQaXBlLCAnZmlsZUljb25DbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoXG4gICAgICAgICAgICAgICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICAgICAgICAgICAgICAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJyxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3RhdGVDbGFzc1BpcGUsICdzdGF0ZUNsYXNzJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlU2l6ZVBpcGUsICdmaWxlc2l6ZScsIHRydWUpLFxuICAgICAgICAgICAgLy8gVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWx0ZXJQaXBlLCAnZmlsdGVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShVcHBlckNhc2VQaXBlLCAndXBwZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShMb3dlckNhc2VQaXBlLCAnbG93ZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShKc29uUGlwZSwgJ2pzb24nLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShEZWNpbWFsUGlwZSwgJ251bWJlcicsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpdGxlQ2FzZVBpcGUsICd0aXRsZWNhc2UnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEN1cnJlbmN5UGlwZSwgJ2N1cnJlbmN5JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGF0ZVBpcGUsICdkYXRlJywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9EYXRlUGlwZSwgJ3RvRGF0ZScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZVBpcGUodGhpcy5fbG9jYWxlKSwgdW5kZWZpbmVkLCB0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcilcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9OdW1iZXJQaXBlLCAndG9OdW1iZXInLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvQ3VycmVuY3lQaXBlLCAndG9DdXJyZW5jeScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmkxOHNlcnZpY2VcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUHJlZml4UGlwZSwgJ3ByZWZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3VmZml4UGlwZSwgJ3N1ZmZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVGltZUZyb21Ob3dQaXBlLCAndGltZUZyb21Ob3cnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKE51bWJlclRvU3RyaW5nUGlwZSwgJ251bWJlclRvU3RyaW5nJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0cmluZ1RvTnVtYmVyUGlwZSwgJ3N0cmluZ1RvTnVtYmVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXN0b21QaXBlLCAnY3VzdG9tJywgdHJ1ZSwgW3RoaXMuaW5qZWN0b3IuZ2V0KEN1c3RvbVBpcGVNYW5hZ2VyKV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVHJ1c3RBc1BpcGUsICd0cnVzdEFzJywgdHJ1ZSwgW3RoaXMuZG9tU2FuaXRpemVyXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTYW5pdGl6ZVBpcGUsICdzYW5pdGl6ZScsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pXG4gICAgICAgIF07XG4gICAgfVxuXG5cbiAgICB1bmtub3duUGlwZShuYW1lKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBUaGUgcGlwZSAnJHtuYW1lfScgY291bGQgbm90IGJlIGZvdW5kYCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGRvbVNhbml0aXplcjpEb21TYW5pdGl6ZXIsIHByaXZhdGUgaTE4c2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgICAgICB0aGlzLl9waXBlTWV0YSA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zZXRQaXBlRGF0YSgpO1xuICAgICAgICB0aGlzLl9waXBlRGF0YS5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGlwZU1ldGEuc2V0KHYubmFtZSwgdik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZSA9IHRoaXMuaTE4c2VydmljZT8gdGhpcy5pMThzZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpIDoge307XG4gICAgfVxuXG4gICAgbWV0YShuYW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLl9waXBlTWV0YS5nZXQobmFtZSk7XG4gICAgICAgIGlmICghbWV0YSkge1xuICAgICAgICAgICAgdGhpcy51bmtub3duUGlwZShuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWV0YTtcbiAgICB9XG5cbiAgICBnZXRQaXBlTmFtZVZzSXNQdXJlTWFwKCkge1xuICAgICAgICBjb25zdCBfbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLl9waXBlTWV0YS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICBfbWFwLnNldChrLCB2LnB1cmUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9tYXA7XG4gICAgfVxuXG4gICAgcmVzb2x2ZURlcChkZXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KGRlcC50b2tlbi5pZGVudGlmaWVyLnJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgZ2V0SW5zdGFuY2UobmFtZSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0eXBlOiB7IHJlZmVyZW5jZTogcmVmLCBkaURlcHM6IGRlcHMgfVxuICAgICAgICB9ID0gdGhpcy5tZXRhKG5hbWUpO1xuICAgICAgICBpZiAoIXJlZikge1xuICAgICAgICAgICAgdGhpcy51bmtub3duUGlwZShuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKGRlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IHJlZiguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==