@wavemaker/app-ng-runtime 11.8.0-rc.5680 → 11.8.1-next.45204

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