igniteui-angular 16.0.0-beta.2 → 16.0.0-beta.3

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 (348) hide show
  1. package/esm2022/lib/accordion/accordion.component.mjs +4 -4
  2. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  3. package/esm2022/lib/action-strip/action-strip.component.mjs +7 -7
  4. package/esm2022/lib/action-strip/action-strip.module.mjs +5 -5
  5. package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +4 -4
  6. package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +4 -4
  7. package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +4 -4
  8. package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +4 -4
  9. package/esm2022/lib/avatar/avatar.component.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.module.mjs +5 -5
  11. package/esm2022/lib/badge/badge.component.mjs +4 -4
  12. package/esm2022/lib/badge/badge.module.mjs +5 -5
  13. package/esm2022/lib/banner/banner.component.mjs +4 -4
  14. package/esm2022/lib/banner/banner.directives.mjs +4 -4
  15. package/esm2022/lib/banner/banner.module.mjs +5 -5
  16. package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +4 -4
  17. package/esm2022/lib/buttonGroup/buttongroup.module.mjs +5 -5
  18. package/esm2022/lib/calendar/calendar-base.mjs +4 -4
  19. package/esm2022/lib/calendar/calendar.component.mjs +4 -4
  20. package/esm2022/lib/calendar/calendar.directives.mjs +16 -16
  21. package/esm2022/lib/calendar/calendar.module.mjs +5 -5
  22. package/esm2022/lib/calendar/days-view/day-item.component.mjs +4 -4
  23. package/esm2022/lib/calendar/days-view/days-view.component.mjs +4 -4
  24. package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +4 -4
  25. package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +4 -4
  26. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +4 -4
  27. package/esm2022/lib/calendar/months-view/months-view.component.mjs +4 -4
  28. package/esm2022/lib/calendar/months-view.pipe.mjs +7 -7
  29. package/esm2022/lib/calendar/years-view/years-view.component.mjs +7 -7
  30. package/esm2022/lib/card/card.component.mjs +28 -28
  31. package/esm2022/lib/card/card.module.mjs +5 -5
  32. package/esm2022/lib/carousel/carousel.component.mjs +7 -7
  33. package/esm2022/lib/carousel/carousel.directives.mjs +10 -10
  34. package/esm2022/lib/carousel/carousel.module.mjs +5 -5
  35. package/esm2022/lib/carousel/slide.component.mjs +4 -4
  36. package/esm2022/lib/checkbox/checkbox.component.mjs +4 -4
  37. package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
  38. package/esm2022/lib/chips/chip.component.mjs +4 -4
  39. package/esm2022/lib/chips/chips-area.component.mjs +4 -4
  40. package/esm2022/lib/chips/chips.module.mjs +5 -5
  41. package/esm2022/lib/combo/combo-add-item.component.mjs +4 -4
  42. package/esm2022/lib/combo/combo-dropdown.component.mjs +4 -4
  43. package/esm2022/lib/combo/combo-item.component.mjs +4 -4
  44. package/esm2022/lib/combo/combo.api.mjs +4 -4
  45. package/esm2022/lib/combo/combo.common.mjs +4 -4
  46. package/esm2022/lib/combo/combo.component.mjs +4 -4
  47. package/esm2022/lib/combo/combo.directives.mjs +25 -25
  48. package/esm2022/lib/combo/combo.module.mjs +5 -5
  49. package/esm2022/lib/combo/combo.pipes.mjs +7 -7
  50. package/esm2022/lib/core/density.mjs +4 -4
  51. package/esm2022/lib/core/navigation/directives.mjs +7 -7
  52. package/esm2022/lib/core/navigation/nav.service.mjs +4 -4
  53. package/esm2022/lib/core/selection.mjs +4 -4
  54. package/esm2022/lib/core/touch.mjs +4 -4
  55. package/esm2022/lib/core/utils.mjs +4 -4
  56. package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +4 -4
  57. package/esm2022/lib/date-common/picker-base.directive.mjs +4 -4
  58. package/esm2022/lib/date-common/picker-icons.common.mjs +10 -10
  59. package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
  60. package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
  61. package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +16 -16
  62. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +4 -4
  63. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
  64. package/esm2022/lib/dialog/dialog.component.mjs +4 -4
  65. package/esm2022/lib/dialog/dialog.directives.mjs +7 -7
  66. package/esm2022/lib/dialog/dialog.module.mjs +5 -5
  67. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +4 -4
  68. package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +5 -5
  69. package/esm2022/lib/directives/button/button.directive.mjs +4 -4
  70. package/esm2022/lib/directives/button/button.module.mjs +5 -5
  71. package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +4 -4
  72. package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +5 -5
  73. package/esm2022/lib/directives/divider/divider.directive.mjs +4 -4
  74. package/esm2022/lib/directives/divider/divider.module.mjs +5 -5
  75. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +13 -13
  76. package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +5 -5
  77. package/esm2022/lib/directives/filter/filter.directive.mjs +7 -7
  78. package/esm2022/lib/directives/filter/filter.module.mjs +5 -5
  79. package/esm2022/lib/directives/focus/focus.directive.mjs +4 -4
  80. package/esm2022/lib/directives/focus/focus.module.mjs +5 -5
  81. package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +4 -4
  82. package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +5 -5
  83. package/esm2022/lib/directives/for-of/base.helper.component.mjs +4 -4
  84. package/esm2022/lib/directives/for-of/display.container.mjs +4 -4
  85. package/esm2022/lib/directives/for-of/for_of.directive.mjs +7 -7
  86. package/esm2022/lib/directives/for-of/for_of.module.mjs +5 -5
  87. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +7 -7
  88. package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +4 -4
  89. package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +4 -4
  90. package/esm2022/lib/directives/form-control/form-control.directive.mjs +4 -4
  91. package/esm2022/lib/directives/form-control/form-control.module.mjs +5 -5
  92. package/esm2022/lib/directives/hint/hint.directive.mjs +4 -4
  93. package/esm2022/lib/directives/input/input.directive.mjs +4 -4
  94. package/esm2022/lib/directives/label/label.directive.mjs +4 -4
  95. package/esm2022/lib/directives/layout/layout.directive.mjs +7 -7
  96. package/esm2022/lib/directives/layout/layout.module.mjs +5 -5
  97. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -4
  98. package/esm2022/lib/directives/mask/mask.directive.mjs +4 -4
  99. package/esm2022/lib/directives/mask/mask.module.mjs +5 -5
  100. package/esm2022/lib/directives/notification/notifications.directive.mjs +4 -4
  101. package/esm2022/lib/directives/prefix/prefix.directive.mjs +4 -4
  102. package/esm2022/lib/directives/radio/radio-group.directive.mjs +4 -4
  103. package/esm2022/lib/directives/radio/radio-group.module.mjs +5 -5
  104. package/esm2022/lib/directives/ripple/ripple.directive.mjs +4 -4
  105. package/esm2022/lib/directives/ripple/ripple.module.mjs +5 -5
  106. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +4 -4
  107. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +5 -5
  108. package/esm2022/lib/directives/suffix/suffix.directive.mjs +4 -4
  109. package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +4 -4
  110. package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +4 -4
  111. package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +5 -5
  112. package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +4 -4
  113. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +5 -5
  114. package/esm2022/lib/directives/toggle/toggle.directive.mjs +10 -10
  115. package/esm2022/lib/directives/toggle/toggle.module.mjs +5 -5
  116. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +4 -4
  117. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +4 -4
  118. package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +4 -4
  119. package/esm2022/lib/directives/tooltip/tooltip.module.mjs +5 -5
  120. package/esm2022/lib/drop-down/drop-down-group.component.mjs +4 -4
  121. package/esm2022/lib/drop-down/drop-down-item.base.mjs +4 -4
  122. package/esm2022/lib/drop-down/drop-down-item.component.mjs +4 -4
  123. package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +4 -4
  124. package/esm2022/lib/drop-down/drop-down.base.mjs +4 -4
  125. package/esm2022/lib/drop-down/drop-down.component.mjs +4 -4
  126. package/esm2022/lib/drop-down/drop-down.module.mjs +5 -5
  127. package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +4 -4
  128. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +4 -4
  129. package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +4 -4
  130. package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +4 -4
  131. package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +10 -10
  132. package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +5 -5
  133. package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +4 -4
  134. package/esm2022/lib/grids/api.service.mjs +4 -4
  135. package/esm2022/lib/grids/cell.component.mjs +4 -4
  136. package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +4 -4
  137. package/esm2022/lib/grids/column-actions/column-actions.component.mjs +13 -13
  138. package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +4 -4
  139. package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +4 -4
  140. package/esm2022/lib/grids/column-actions/public_api.mjs +13 -0
  141. package/esm2022/lib/grids/columns/column-group.component.mjs +4 -4
  142. package/esm2022/lib/grids/columns/column-layout.component.mjs +4 -4
  143. package/esm2022/lib/grids/columns/column.component.mjs +4 -4
  144. package/esm2022/lib/grids/columns/templates.directive.mjs +25 -25
  145. package/esm2022/lib/grids/columns/validators.directive.mjs +22 -22
  146. package/esm2022/lib/grids/common/crud.service.mjs +4 -4
  147. package/esm2022/lib/grids/common/pipes.mjs +55 -55
  148. package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +4 -4
  149. package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +4 -4
  150. package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +4 -4
  151. package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +4 -4
  152. package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +4 -4
  153. package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +4 -4
  154. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +4 -4
  155. package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +4 -4
  156. package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +4 -4
  157. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +10 -10
  158. package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +4 -4
  159. package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +4 -4
  160. package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +4 -4
  161. package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +4 -4
  162. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +7 -7
  163. package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +4 -4
  164. package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +4 -4
  165. package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +4 -4
  166. package/esm2022/lib/grids/grid/expandable-cell.component.mjs +4 -4
  167. package/esm2022/lib/grids/grid/grid-api.service.mjs +4 -4
  168. package/esm2022/lib/grids/grid/grid-row.component.mjs +4 -4
  169. package/esm2022/lib/grids/grid/grid-validation.service.mjs +4 -4
  170. package/esm2022/lib/grids/grid/grid.component.mjs +4 -4
  171. package/esm2022/lib/grids/grid/grid.details.pipe.mjs +4 -4
  172. package/esm2022/lib/grids/grid/grid.directives.mjs +34 -34
  173. package/esm2022/lib/grids/grid/grid.module.mjs +27 -24
  174. package/esm2022/lib/grids/grid/grid.pipes.mjs +13 -13
  175. package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +4 -4
  176. package/esm2022/lib/grids/grid/groupby-row.component.mjs +4 -4
  177. package/esm2022/lib/grids/grid-base.directive.mjs +4 -4
  178. package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +4 -4
  179. package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +4 -4
  180. package/esm2022/lib/grids/grid-navigation.service.mjs +4 -4
  181. package/esm2022/lib/grids/grid.common.mjs +4 -4
  182. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +16 -16
  183. package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +4 -4
  184. package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +7 -7
  185. package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +4 -4
  186. package/esm2022/lib/grids/headers/grid-header-group.component.mjs +4 -4
  187. package/esm2022/lib/grids/headers/grid-header-row.component.mjs +4 -4
  188. package/esm2022/lib/grids/headers/grid-header.component.mjs +4 -4
  189. package/esm2022/lib/grids/headers/pipes.mjs +10 -10
  190. package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +4 -4
  191. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +4 -4
  192. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +4 -4
  193. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +4 -4
  194. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +7 -7
  195. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +27 -24
  196. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +7 -7
  197. package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +4 -4
  198. package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +4 -4
  199. package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +4 -4
  200. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +4 -4
  201. package/esm2022/lib/grids/moving/moving.drop.directive.mjs +4 -4
  202. package/esm2022/lib/grids/moving/moving.service.mjs +4 -4
  203. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +4 -4
  204. package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +4 -4
  205. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +4 -4
  206. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +4 -4
  207. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +4 -4
  208. package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +27 -24
  209. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +31 -31
  210. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +4 -4
  211. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +4 -4
  212. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +4 -4
  213. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +4 -4
  214. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +4 -4
  215. package/esm2022/lib/grids/public_api.mjs +5 -2
  216. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +4 -4
  217. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +4 -4
  218. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +4 -4
  219. package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +4 -4
  220. package/esm2022/lib/grids/resizing/resizer.component.mjs +4 -4
  221. package/esm2022/lib/grids/resizing/resizer.directive.mjs +4 -4
  222. package/esm2022/lib/grids/resizing/resizing.service.mjs +4 -4
  223. package/esm2022/lib/grids/row-drag.directive.mjs +10 -10
  224. package/esm2022/lib/grids/row.directive.mjs +4 -4
  225. package/esm2022/lib/grids/selection/drag-select.directive.mjs +4 -4
  226. package/esm2022/lib/grids/selection/row-selectors.mjs +10 -10
  227. package/esm2022/lib/grids/selection/selection.service.mjs +4 -4
  228. package/esm2022/lib/grids/state.directive.mjs +4 -4
  229. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +4 -4
  230. package/esm2022/lib/grids/summaries/grid-summary.service.mjs +4 -4
  231. package/esm2022/lib/grids/summaries/summary-cell.component.mjs +4 -4
  232. package/esm2022/lib/grids/summaries/summary-row.component.mjs +4 -4
  233. package/esm2022/lib/grids/toolbar/common.mjs +16 -16
  234. package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +4 -4
  235. package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +4 -4
  236. package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +4 -4
  237. package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +4 -4
  238. package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +7 -7
  239. package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +4 -4
  240. package/esm2022/lib/grids/tree-grid/public_api.mjs +4 -1
  241. package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +4 -4
  242. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +4 -4
  243. package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +4 -4
  244. package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +4 -4
  245. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +4 -4
  246. package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +4 -4
  247. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +4 -4
  248. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +4 -4
  249. package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +43 -39
  250. package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +22 -22
  251. package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +4 -4
  252. package/esm2022/lib/icon/icon.component.mjs +4 -4
  253. package/esm2022/lib/icon/icon.module.mjs +5 -5
  254. package/esm2022/lib/icon/icon.service.mjs +4 -4
  255. package/esm2022/lib/input-group/input-group.component.mjs +4 -4
  256. package/esm2022/lib/input-group/input-group.module.mjs +5 -5
  257. package/esm2022/lib/list/list-item.component.mjs +4 -4
  258. package/esm2022/lib/list/list.common.mjs +16 -16
  259. package/esm2022/lib/list/list.component.mjs +19 -19
  260. package/esm2022/lib/list/list.module.mjs +5 -5
  261. package/esm2022/lib/navbar/navbar.component.mjs +10 -10
  262. package/esm2022/lib/navbar/navbar.module.mjs +5 -5
  263. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +4 -4
  264. package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +10 -10
  265. package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +5 -5
  266. package/esm2022/lib/paginator/paginator-interfaces.mjs +4 -4
  267. package/esm2022/lib/paginator/paginator.component.mjs +13 -13
  268. package/esm2022/lib/paginator/paginator.module.mjs +5 -5
  269. package/esm2022/lib/progressbar/progressbar.common.mjs +7 -7
  270. package/esm2022/lib/progressbar/progressbar.component.mjs +10 -10
  271. package/esm2022/lib/progressbar/progressbar.module.mjs +5 -5
  272. package/esm2022/lib/query-builder/query-builder-header.component.mjs +4 -4
  273. package/esm2022/lib/query-builder/query-builder.component.mjs +7 -7
  274. package/esm2022/lib/query-builder/query-builder.module.mjs +5 -5
  275. package/esm2022/lib/radio/radio.component.mjs +4 -4
  276. package/esm2022/lib/select/select-group.component.mjs +4 -4
  277. package/esm2022/lib/select/select-item.component.mjs +4 -4
  278. package/esm2022/lib/select/select-navigation.directive.mjs +4 -4
  279. package/esm2022/lib/select/select.component.mjs +13 -13
  280. package/esm2022/lib/select/select.module.mjs +5 -5
  281. package/esm2022/lib/services/animation/angular-animation-service.mjs +4 -4
  282. package/esm2022/lib/services/csv/csv-exporter.mjs +4 -4
  283. package/esm2022/lib/services/direction/directionality.mjs +4 -4
  284. package/esm2022/lib/services/excel/excel-exporter.mjs +4 -4
  285. package/esm2022/lib/services/overlay/overlay.mjs +4 -4
  286. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +7 -7
  287. package/esm2022/lib/simple-combo/simple-combo.component.mjs +4 -4
  288. package/esm2022/lib/simple-combo/simple-combo.module.mjs +5 -5
  289. package/esm2022/lib/slider/label/thumb-label.component.mjs +4 -4
  290. package/esm2022/lib/slider/slider.common.mjs +10 -10
  291. package/esm2022/lib/slider/slider.component.mjs +4 -4
  292. package/esm2022/lib/slider/slider.module.mjs +5 -5
  293. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +4 -4
  294. package/esm2022/lib/slider/ticks/tick.pipe.mjs +4 -4
  295. package/esm2022/lib/slider/ticks/ticks.component.mjs +4 -4
  296. package/esm2022/lib/snackbar/snackbar.component.mjs +4 -4
  297. package/esm2022/lib/snackbar/snackbar.module.mjs +5 -5
  298. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +4 -4
  299. package/esm2022/lib/splitter/splitter.component.mjs +7 -7
  300. package/esm2022/lib/splitter/splitter.module.mjs +5 -5
  301. package/esm2022/lib/stepper/step/step.component.mjs +4 -4
  302. package/esm2022/lib/stepper/stepper.component.mjs +4 -4
  303. package/esm2022/lib/stepper/stepper.directive.mjs +22 -22
  304. package/esm2022/lib/stepper/stepper.module.mjs +5 -5
  305. package/esm2022/lib/stepper/stepper.service.mjs +4 -4
  306. package/esm2022/lib/switch/switch.component.mjs +4 -4
  307. package/esm2022/lib/switch/switch.module.mjs +5 -5
  308. package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +4 -4
  309. package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +4 -4
  310. package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +4 -4
  311. package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +4 -4
  312. package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +7 -7
  313. package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +5 -5
  314. package/esm2022/lib/tabs/tab-content.directive.mjs +4 -4
  315. package/esm2022/lib/tabs/tab-header.directive.mjs +4 -4
  316. package/esm2022/lib/tabs/tab-item.directive.mjs +4 -4
  317. package/esm2022/lib/tabs/tabs/tab-content.component.mjs +4 -4
  318. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +4 -4
  319. package/esm2022/lib/tabs/tabs/tab-item.component.mjs +4 -4
  320. package/esm2022/lib/tabs/tabs/tabs.component.mjs +4 -4
  321. package/esm2022/lib/tabs/tabs/tabs.directives.mjs +7 -7
  322. package/esm2022/lib/tabs/tabs/tabs.module.mjs +5 -5
  323. package/esm2022/lib/tabs/tabs.directive.mjs +4 -4
  324. package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
  325. package/esm2022/lib/time-picker/time-picker.directives.mjs +7 -7
  326. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  327. package/esm2022/lib/time-picker/time-picker.pipes.mjs +7 -7
  328. package/esm2022/lib/toast/toast.component.mjs +4 -4
  329. package/esm2022/lib/toast/toast.module.mjs +5 -5
  330. package/esm2022/lib/tree/tree-navigation.service.mjs +4 -4
  331. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +7 -7
  332. package/esm2022/lib/tree/tree-selection.service.mjs +4 -4
  333. package/esm2022/lib/tree/tree.component.mjs +10 -10
  334. package/esm2022/lib/tree/tree.module.mjs +5 -5
  335. package/esm2022/lib/tree/tree.service.mjs +4 -4
  336. package/fesm2022/igniteui-angular.mjs +2330 -2321
  337. package/fesm2022/igniteui-angular.mjs.map +1 -1
  338. package/lib/grids/column-actions/public_api.d.ts +7 -0
  339. package/lib/grids/grid/grid.module.d.ts +23 -20
  340. package/lib/grids/grid/public_api.d.ts +1 -1
  341. package/lib/grids/hierarchical-grid/hierarchical-grid.module.d.ts +23 -20
  342. package/lib/grids/hierarchical-grid/public_api.d.ts +1 -1
  343. package/lib/grids/pivot-grid/pivot-grid.module.d.ts +23 -20
  344. package/lib/grids/pivot-grid/public_api.d.ts +1 -1
  345. package/lib/grids/public_api.d.ts +2 -1
  346. package/lib/grids/tree-grid/public_api.d.ts +3 -1
  347. package/lib/grids/tree-grid/tree-grid.module.d.ts +39 -35
  348. package/package.json +6 -6
@@ -808,8 +808,8 @@ export class IgxCalendarComponent extends IgxMonthPickerBaseDirective {
808
808
  month.nativeElement.focus();
809
809
  }
810
810
  }
811
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
812
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarComponent, isStandalone: true, selector: "igx-calendar", inputs: { id: "id", hasHeader: "hasHeader", vertical: "vertical", monthsViewNumber: "monthsViewNumber", showWeekNumbers: "showWeekNumbers", animationAction: "animationAction" }, host: { listeners: { "keydown.pagedown": "onKeydownPageDown($event)", "keydown.pageup": "onKeydownPageDown($event)", "keydown.shift.pageup": "onKeydownShiftPageUp($event)", "keydown.shift.pagedown": "onKeydownShiftPageUp($event)", "keydown.home": "onKeydownHome($event)", "keydown.end": "onKeydownEnd($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "attr.id": "this.id", "class.igx-calendar--vertical": "this.styleVerticalClass", "class.igx-calendar": "this.styleClass" } }, providers: [
811
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarComponent, isStandalone: true, selector: "igx-calendar", inputs: { id: "id", hasHeader: "hasHeader", vertical: "vertical", monthsViewNumber: "monthsViewNumber", showWeekNumbers: "showWeekNumbers", animationAction: "animationAction" }, host: { listeners: { "keydown.pagedown": "onKeydownPageDown($event)", "keydown.pageup": "onKeydownPageDown($event)", "keydown.shift.pageup": "onKeydownShiftPageUp($event)", "keydown.shift.pagedown": "onKeydownShiftPageUp($event)", "keydown.home": "onKeydownHome($event)", "keydown.end": "onKeydownEnd($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "attr.id": "this.id", "class.igx-calendar--vertical": "this.styleVerticalClass", "class.igx-calendar": "this.styleClass" } }, providers: [
813
813
  {
814
814
  multi: true,
815
815
  provide: NG_VALUE_ACCESSOR,
@@ -839,7 +839,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBaseDirective {
839
839
  ])
840
840
  ] }); }
841
841
  }
842
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarComponent, decorators: [{
842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarComponent, decorators: [{
843
843
  type: Component,
844
844
  args: [{ providers: [
845
845
  {
@@ -940,4 +940,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
940
940
  type: HostListener,
941
941
  args: ['document:mouseup', ['$event']]
942
942
  }] } });
943
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFHZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLHFDQUFxQyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkosT0FBTyxFQUFpQixlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0s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LElBQUksRUFBRztnQkFrRDlILGlCQUFpQjtzQkFGdkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0ZuQyxvQkFBb0I7c0JBRjFCLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMvQyxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTREM0MsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY2pDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWNoQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmFuc2l0aW9uLCB0cmlnZ2VyLCB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmYWRlSW4sIHNjYWxlSW5DZW50ZXIsIHNsaWRlSW5MZWZ0LCBzbGlkZUluUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL21haW4nO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgSWd4Q2FsZW5kYXJTdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgSWd4Q2FsZW5kYXJTY3JvbGxNb250aERpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXIuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJQ2FsZW5kYXJEYXRlLCBJZ3hDYWxlbmRhclZpZXcsIFNjcm9sbE1vbnRoLCBtb250aFJhbmdlIH0gZnJvbSAnLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBJZ3hNb250aFBpY2tlckJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL21vbnRoLXBpY2tlci9tb250aC1waWNrZXItYmFzZSc7XG5pbXBvcnQgeyBJZ3hNb250aHNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IElneERheXNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlLCBza2lwTGFzdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVZpZXdDaGFuZ2luZ0V2ZW50QXJncyB9IGZyb20gJy4vZGF5cy12aWV3L2RheXMtdmlldy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4TW9udGhWaWV3U2xvdHNDYWxlbmRhciwgSWd4R2V0Vmlld0RhdGVDYWxlbmRhciB9IGZyb20gJy4vbW9udGhzLXZpZXcucGlwZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ1N0eWxlLCBOZ0ZvciwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbi8qKlxuICogQ2FsZW5kYXIgcHJvdmlkZXMgYSB3YXkgdG8gZGlzcGxheSBkYXRlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q2FsZW5kYXJNb2R1bGVcbiAqXG4gKiBAaWd4VGhlbWUgaWd4LWNhbGVuZGFyLXRoZW1lLCBpZ3gtaWNvbi10aGVtZVxuICpcbiAqIEBpZ3hLZXl3b3JkcyBjYWxlbmRhciwgZGF0ZXBpY2tlciwgc2NoZWR1bGUsIGRhdGVcbiAqXG4gKiBAaWd4R3JvdXAgU2NoZWR1bGluZ1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIENhbGVuZGFyIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGRpc3BsYXkgYSBjYWxlbmRhciBhbmQgYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGRhdGVzIHVzaW5nIHNpbmdsZSwgbXVsdGlwbGVcbiAqIG9yIHJhbmdlIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtY2FsZW5kYXIgc2VsZWN0aW9uPVwicmFuZ2VcIj48L2lneC1jYWxlbmRhcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ3hDYWxlbmRhckNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGVWaWV3JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAwJywgdXNlQW5pbWF0aW9uKGZhZGVJbikpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgdXNlQW5pbWF0aW9uKHNjYWxlSW5DZW50ZXIsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ICcuMnMnLFxuICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IC45XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdhbmltYXRlQ2hhbmdlJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiBwcmV2JywgdXNlQW5pbWF0aW9uKHNsaWRlSW5MZWZ0LCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogJ3RyYW5zbGF0ZVgoLTMwJSknXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiBuZXh0JywgdXNlQW5pbWF0aW9uKHNsaWRlSW5SaWdodCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246ICd0cmFuc2xhdGVYKDMwJSknXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdjYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgSWd4Q2FsZW5kYXJTY3JvbGxNb250aERpcmVjdGl2ZSwgTmdTdHlsZSwgSWd4SWNvbkNvbXBvbmVudCwgTmdGb3IsIElneERheXNWaWV3Q29tcG9uZW50LCBJZ3hNb250aHNWaWV3Q29tcG9uZW50LCBJZ3hZZWFyc1ZpZXdDb21wb25lbnQsIERhdGVQaXBlLCBJZ3hNb250aFZpZXdTbG90c0NhbGVuZGFyLCBJZ3hHZXRWaWV3RGF0ZUNhbGVuZGFyXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIElneE1vbnRoUGlja2VyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBjYWxlbmRhci5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1jYWxlbmRhci0wXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBpZD1cIm15LWZpcnN0LWNhbGVuZGFyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtY2FsZW5kYXItJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjYWxlbmRhciBoYXMgaGVhZGVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbaGFzSGVhZGVyXT1cImZhbHNlXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGFzSGVhZGVyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjYWxlbmRhciBoZWFkZXIgd2lsbCBiZSBpbiB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhbGVuZGFyIFt2ZXJ0aWNhbF0gPSBcInRydWVcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2ZXJ0aWNhbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBudW1iZXIgb2YgbW9udGggdmlld3MgZGlzcGxheWVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYDFgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbbW9udGhzVmlld051bWJlcl09XCIyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1vbnRoc1ZpZXdOdW1iZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb250aHNWaWV3TnVtYmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgbW9udGhzVmlld051bWJlcih2YWw6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsIDwgMSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1ZpZXdOdW1iZXIgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdy9oaWRlIHdlZWsgbnVtYmVyc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbc2hvd1dlZWtOdW1iZXJzXT1cInRydWVcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQXBwbHkgdGhlIGRpZmZlcmVudCBzdGF0ZXMgZm9yIHRoZSB0cmFuc2l0aW9ucyBvZiBhbmltYXRlQ2hhbmdlXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYW5pbWF0aW9uQWN0aW9uOiBhbnkgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGNzcyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXItLXZlcnRpY2FsJylcbiAgICBwdWJsaWMgZ2V0IHN0eWxlVmVydGljYWxDbGFzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVydGljYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgY3NzIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcicpXG4gICAgcHVibGljIHN0eWxlQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVmlld0NoaWxkIHRoYXQgcmVwcmVzZW50cyB0aGUgbW9udGhzIHZpZXcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbW9udGhzJywgeyByZWFkOiBJZ3hNb250aHNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIG1vbnRoc1ZpZXc6IElneE1vbnRoc1ZpZXdDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBNb250aCBidXR0b24sIHRoYXQgZGlzcGxheXMgdGhlIG1vbnRocyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ21vbnRoc0J0bicpXG4gICAgcHVibGljIG1vbnRoc0J0bnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIC8qKlxuICAgICAqIFZpZXdDaGlsZCB0aGF0IHJlcHJlc2VudHMgdGhlIGRlY2FkZSB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlY2FkZScsIHsgcmVhZDogSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRhY2FkZVZpZXc6IElneFllYXJzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFZpZXdDaGlsZCB0aGF0IHJlcHJlc2VudHMgdGhlIGRheXMgdmlldy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkYXlzJywgeyByZWFkOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBkYXlzVmlldzogSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3Q2hpbGRyZW5kZW4gcmVwcmVzZW50aW5nIGFsbCBvZiB0aGUgcmVuZGVyZWQgZGF5cyB2aWV3cy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkcmVuKCdkYXlzJywgeyByZWFkOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBtb250aFZpZXdzOiBRdWVyeUxpc3Q8SWd4RGF5c1ZpZXdDb21wb25lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGZvciBwcmV2aW91cyBtb250aC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwcmV2TW9udGhCdG4nKVxuICAgIHB1YmxpYyBwcmV2TW9udGhCdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBCdXR0b24gZm9yIG5leHQgbW9udGguXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbmV4dE1vbnRoQnRuJylcbiAgICBwdWJsaWMgbmV4dE1vbnRoQnRuOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogRGVub3RlIGlmIHRoZSB5ZWFyIHZpZXcgaXMgYWN0aXZlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNZZWFyVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gSWd4Q2FsZW5kYXJWaWV3LlllYXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGVhZGVyIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGhlYWRlclRlbXBsYXRlID0gIHRoaXMuY2FsZW5kYXIuaGVhZGVyVGVhbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGVhZGVyVGVtcGxhdGUoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLnRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FsZW5kYXIgaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgPSBcImlneENhbGVuZGFySGVhZGVyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHNldCBoZWFkZXJUZW1wbGF0ZShkaXJlY3RpdmU6IGFueSkge1xuICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN1YmhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBzdWJoZWFkZXJUZW1wbGF0ZSA9IHRoaXMuY2FsZW5kYXIuc3ViaGVhZGVyVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdWJoZWFkZXJUZW1wbGF0ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5zdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3ViaGVhZGVyIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBzdWJoZWFkZXJUZW1wbGF0ZSA9IFwiaWd4Q2FsZW5kYXJTdWJoZWFkZXJcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHN1YmhlYWRlclRlbXBsYXRlKGRpcmVjdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHRlbXBsYXRlIG1hcmtlZCB3aXRoIHRoZSBgaWd4Q2FsZW5kYXJIZWFkZXJgIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBoZWFkZXJDb250ZXh0ID0gIHRoaXMuY2FsZW5kYXIuaGVhZGVyQ29udGV4dDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhlYWRlckNvbnRleHQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSB0aGlzLmhlYWRlckRhdGU7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ29udGV4dChkYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgdGVtcGxhdGUgbWFya2VkIHdpdGggZWl0aGVyIGBpZ3hDYWxlbmRhclN1YkhlYWRlck1vbnRoYFxuICAgICAqIG9yIGBpZ3hDYWxlbmRhclN1YkhlYWRlclllYXJgIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjb250ZXh0ID0gIHRoaXMuY2FsZW5kYXIuY29udGV4dDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbnRleHQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUNvbnRleHQoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGF0ZSBkaXNwbGF5ZWQgaW4gaGVhZGVyXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWFkZXJEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVzID8gdGhpcy5zZWxlY3RlZERhdGVzIDogbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IElneENhbGVuZGFySGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpLCB7IHJlYWQ6IElneENhbGVuZGFySGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSAgfSlcbiAgICBwcml2YXRlIGhlYWRlclRlbXBsYXRlRGlyZWN0aXZlOiBJZ3hDYWxlbmRhckhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IElneENhbGVuZGFyU3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpLCB7IHJlYWQ6IElneENhbGVuZGFyU3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSAgfSlcbiAgICBwcml2YXRlIHN1YmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlOiBJZ3hDYWxlbmRhclN1YmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBhY3RpdmVEYXRlID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYXBwbHkgdGhlIGFjdGl2ZSBkYXRlIHdoZW4gdGhlIGNhbGVuZGFyIHZpZXcgaXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZXh0RGF0ZTogRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIERlbm90ZSBpZiB0aGUgY2FsZW5kYXIgdmlldyB3YXMgY2hhbmdlZCB3aXRoIHRoZSBrZXlib2FyZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0tleWRvd25UcmlnZ2VyID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbGxiYWNrOiAobmV4dCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb250aHNWaWV3TnVtYmVyID0gMTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW9udGhWaWV3c0NoYW5nZXMkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZWRvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZXVwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duUGFnZURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUGFnZURvd24gPSBldmVudC5rZXkgPT09ICdQYWdlRG93bic7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBpc1BhZ2VEb3duID8gMSA6IC0xO1xuICAgICAgICBsZXQgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgbGV0IGFjdGl2ZURhdGU7XG5cbiAgICAgICAgd2hpbGUgKCFhY3RpdmVEYXRlICYmIG1vbnRoVmlldykge1xuICAgICAgICAgICAgYWN0aXZlRGF0ZSA9IG1vbnRoVmlldy5kYXRlcy5maW5kKChkYXRlKSA9PiBkYXRlLm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZSA9IG5ldyBEYXRlKGFjdGl2ZURhdGUuZGF0ZS5kYXRlKTtcblxuICAgICAgICAgICAgbGV0IHllYXIgPSB0aGlzLm5leHREYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgICAgICAgIGxldCBtb250aCA9IHRoaXMubmV4dERhdGUuZ2V0TW9udGgoKSArIHN0ZXA7XG4gICAgICAgICAgICBpZiAoaXNQYWdlRG93bikge1xuICAgICAgICAgICAgICAgIGlmIChtb250aCA+IDExKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoID0gMDsgeWVhciArPSBzdGVwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbnRoIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtb250aCA9IDExOyB5ZWFyICs9IHN0ZXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IG1vbnRoUmFuZ2UodGhpcy5uZXh0RGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCk7XG5cbiAgICAgICAgICAgIGxldCBkYXkgPSB0aGlzLm5leHREYXRlLmdldERhdGUoKTtcbiAgICAgICAgICAgIGlmIChkYXkgPiByYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgIGRheSA9IHJhbmdlWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5leHREYXRlLnNldERhdGUoZGF5KTtcbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUuc2V0TW9udGgobW9udGgpO1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IChuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZGF5SXRlbTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKCFkYXlJdGVtICYmIG1vbnRoVmlldykgfHwgKGRheUl0ZW0gJiYgIWRheUl0ZW0uaXNDdXJyZW50TW9udGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0gPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZCkgPT4gZC5kYXRlLmRhdGUuZ2V0VGltZSgpID09PSBuZXh0LmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF5SXRlbSAmJiBkYXlJdGVtLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNQYWdlRG93bikge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnJlcGVhdCkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm5leHRNb250aCh0cnVlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnJlcGVhdCkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnByZXZpb3VzTW9udGgodHJ1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTW9udGgodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc2hpZnQucGFnZXVwJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNoaWZ0LnBhZ2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duU2hpZnRQYWdlVXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNQYWdlRG93biA9IGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJztcbiAgICAgICAgY29uc3Qgc3RlcCA9IGlzUGFnZURvd24gPyAxIDogLTE7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwudGltZWRlbHRhKHRoaXMudmlld0RhdGUsICd5ZWFyJywgc3RlcCk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25BY3Rpb24gPSBpc1BhZ2VEb3duID8gU2Nyb2xsTW9udGguTkVYVCA6IFNjcm9sbE1vbnRoLlBSRVY7XG4gICAgICAgIHRoaXMuaXNLZXlkb3duVHJpZ2dlciA9IHRydWU7XG5cbiAgICAgICAgbGV0IG1vbnRoVmlldyA9IHRoaXMuZGF5c1ZpZXcgYXMgSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG4gICAgICAgIGxldCBhY3RpdmVEYXRlO1xuXG4gICAgICAgIHdoaWxlICghYWN0aXZlRGF0ZSAmJiBtb250aFZpZXcpIHtcbiAgICAgICAgICAgIGFjdGl2ZURhdGUgPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZGF0ZSkgPT4gZGF0ZS5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGl2ZURhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUgPSBuZXcgRGF0ZShhY3RpdmVEYXRlLmRhdGUuZGF0ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLm5leHREYXRlLmdldEZ1bGxZZWFyKCkgKyBzdGVwO1xuXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IG1vbnRoUmFuZ2UoeWVhciwgdGhpcy5uZXh0RGF0ZS5nZXRNb250aCgpKTtcblxuICAgICAgICAgICAgbGV0IGRheSA9IHRoaXMubmV4dERhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgaWYgKGRheSA+IHJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgZGF5ID0gcmFuZ2VbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUuc2V0RGF0ZShkYXkpO1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IChuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZGF5SXRlbTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKCFkYXlJdGVtICYmIG1vbnRoVmlldykgfHwgKGRheUl0ZW0gJiYgIWRheUl0ZW0uaXNDdXJyZW50TW9udGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0gPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZCkgPT4gZC5kYXRlLmRhdGUuZ2V0VGltZSgpID09PSBuZXh0LmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF5SXRlbSAmJiBkYXlJdGVtLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF5c1ZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGF5c1ZpZXcub25LZXlkb3duSG9tZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW5kJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duRW5kKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRheXNWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLmRheXNWaWV3Lm9uS2V5ZG93bkVuZChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9wIGNvbnRpbnVvdXMgbmF2aWdhdGlvbiBvbiBtb3VzZXVwIGV2ZW50XG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiAhPT0gU2Nyb2xsTW9udGguTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wTW9udGhTY3JvbGwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRTaWJsaW5nTW9udGhzKHRoaXMubW9udGhWaWV3cyk7XG4gICAgICAgIHRoaXMuX21vbnRoVmlld3NDaGFuZ2VzJCA9IHRoaXMubW9udGhWaWV3cy5jaGFuZ2VzLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2libGluZ01vbnRocyhjKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdGFydE1vbnRoU2Nyb2xsJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3RvcE1vbnRoU2Nyb2xsJCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zY3JvbGxNb250aCQucGlwZShcbiAgICAgICAgICAgICAgICBza2lwTGFzdCgxKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZSgoKSA9PiBpbnRlcnZhbCgzMDApKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdG9wTW9udGhTY3JvbGwkKVxuICAgICAgICAgICAgKSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2Nyb2xsTW9udGguUFJFVjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNNb250aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2Nyb2xsTW9udGguTkVYVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBTY3JvbGxNb250aC5OT05FOlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2NhbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vbnRoIGluIHRoZSBtb250aCB2aWV3IGlmIGVuYWJsZWQsXG4gICAgICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIGRlZmF1bHQgYERhdGUuZ2V0TW9udGgoKWAgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdHRlZE1vbnRoKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0Vmlld3MubW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlck1vbnRoLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlLmdldE1vbnRoKCl9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdG8gcHJldmlvdXMgbW9udGhcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlvdXNNb250aChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzS2V5ZG93blRyaWdnZXIgJiYgdGhpcy5hbmltYXRpb25BY3Rpb24gPT09IFNjcm9sbE1vbnRoLk5FWFQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXZpb3VzVmlld0RhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gdGhpcy5jYWxlbmRhck1vZGVsLmdldFByZXZNb250aCh0aGlzLnZpZXdEYXRlKTtcbiAgICAgICAgdGhpcy5hbmltYXRpb25BY3Rpb24gPSBTY3JvbGxNb250aC5QUkVWO1xuICAgICAgICB0aGlzLmlzS2V5ZG93blRyaWdnZXIgPSBpc0tleWRvd25UcmlnZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXBwcmVzc0JsdXIoKSB7XG4gICAgICAgIHRoaXMubW9udGhWaWV3cz8uZm9yRWFjaChkID0+IGQuc2hvdWxkUmVzZXREYXRlID0gZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5kYXlzVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYXlzVmlldy5zaG91bGRSZXNldERhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0byBuZXh0IG1vbnRoXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5leHRNb250aChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzS2V5ZG93blRyaWdnZXIgJiYgdGhpcy5hbmltYXRpb25BY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNLZXlkb3duVHJpZ2dlciA9IGlzS2V5ZG93blRyaWdnZXI7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0TmV4dE1vbnRoKHRoaXMudmlld0RhdGUpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLk5FWFQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udGluaW91cyBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIHByZXZpb3VzIG1vbnRoc1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydFByZXZNb250aFNjcm9sbCA9IChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdGFydE1vbnRoU2Nyb2xsJC5uZXh0KCk7XG4gICAgICAgIHRoaXMubW9udGhTY3JvbGxEaXJlY3Rpb24gPSBTY3JvbGxNb250aC5QUkVWO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLlBSRVY7XG4gICAgICAgIHRoaXMucHJldmlvdXNNb250aChpc0tleWRvd25UcmlnZ2VyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29udGluaW91cyBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIG5leHQgbW9udGhzXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0TmV4dE1vbnRoU2Nyb2xsID0gKGlzS2V5ZG93blRyaWdnZXIgPSBmYWxzZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0TW9udGhTY3JvbGwkLm5leHQoKTtcbiAgICAgICAgdGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbE1vbnRoLk5FWFQ7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQWN0aW9uID0gU2Nyb2xsTW9udGguTkVYVDtcbiAgICAgICAgdGhpcy5uZXh0TW9udGgoaXNLZXlkb3duVHJpZ2dlcik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFN0b3AgY29udGludW91cyBuYXZpZ2F0aW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHN0b3BNb250aFNjcm9sbCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAvLyBnZW5lcmFsbHkgdGhlIHNjcm9sbGluZyBpcyBidWlsdCBvbiB0aGUgY2FsZW5kYXIgY29tcG9uZW50XG4gICAgICAgIC8vIGFuZCBhbGwgc3RhcnQvc3RvcCBzY3JvbGxpbmcgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBjYWxlbmRhclxuICAgICAgICAvLyBpZiB3ZSBjaGFuZ2UgYmVsb3cgbGluZXMgdG8gY2FsbCBzdG9wTW9udGhTY3JvbGwkIG9uIHRoZSBjYWxlbmRhciBpbnN0ZWFkIG9mIG9uIHRoZSB2aWV3cyxcbiAgICAgICAgLy8gc3RyYW5nZSBidWcgaXMgaW50cm9kdWNlZCAtLT4gYWZ0ZXIgY2hhbmdpbmcgbnVtYmVyIG9mIG1vbnRocywgY29udGludW91cyBzY3JvbGxpbmcgb24gbW91c2UgY2xpY2sgZG9lcyBub3QgaGFwcGVuXG4gICAgICAgIHRoaXMuZGF5c1ZpZXcuc3RvcE1vbnRoU2Nyb2xsJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRheXNWaWV3LnN0b3BNb250aFNjcm9sbCQuY29tcGxldGUoKTtcblxuXG4gICAgICAgIGlmICh0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uID09PSBTY3JvbGxNb250aC5QUkVWKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZNb250aEJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiA9PT0gU2Nyb2xsTW9udGguTkVYVCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0TW9udGhCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzQWN0aXZhdGlvbktleShldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uID0gU2Nyb2xsTW9udGguTk9ORTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGUoYXJnczogRGF0ZSwgYWN0aXZlVmlld0lkeDogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyLmFjdGl2ZVZpZXdEZWNhZGUoYWN0aXZlVmlld0lkeCk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYWNhZGVWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5jYWxlbmRhckRpci5maW5kKGRhdGUgPT4gZGF0ZS5pc0N1cnJlbnRZZWFyKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BY3RpdmVWaWV3RGVjYWRlS0IoZXZlbnQsIGFyZ3M6IERhdGUsIGFjdGl2ZVZpZXdJZHg6IG51bWJlcikge1xuICAgICAgICBzdXBlci5hY3RpdmVWaWV3RGVjYWRlS0IoZXZlbnQsIGFjdGl2ZVZpZXdJZHgpO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYWNhZGVWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5jYWxlbmRhckRpci5maW5kKGRhdGUgPT4gZGF0ZS5pc0N1cnJlbnRZZWFyKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkRGF0ZSgpOiB7IHdlZWtkYXk6IHN0cmluZzsgbW9udGhkYXk6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuaGVhZGVyRGF0ZTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9udGhkYXk6IHRoaXMuZm9ybWF0dGVyTW9udGhkYXkuZm9ybWF0KGRhdGUpLFxuICAgICAgICAgICAgd2Vla2RheTogdGhpcy5mb3JtYXR0ZXJXZWVrZGF5LmZvcm1hdChkYXRlKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGludm9rZWQgb24gZGF0ZSBzZWxlY3Rpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hpbGRDbGlja2VkKGluc3RhbmNlOiBJQ2FsZW5kYXJEYXRlKSB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5pc1ByZXZNb250aCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c01vbnRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5zdGFuY2UuaXNOZXh0TW9udGgpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZWxlY3REYXRlRnJvbUNsaWVudCBpcyBjYWxsZWQgYm90aCBoZXJlIGFuZCBpbiBkYXlzLXZpZXcuY29tcG9uZW50XG4gICAgICAgIC8vIHdoZW4gbXVsdGlwbGUgbW9udGhzIGFyZSBpbiB2aWV3LCAnc2hpZnRLZXknIGFuZCAnbGFzdFNlbGVjdGVkRGF0ZSdcbiAgICAgICAgLy8gc2hvdWxkIGJlIHNldCBiZWZvcmUgYW5kIGFmdGVyIHNlbGVjdERhdGVGcm9tQ2xpZW50XG4gICAgICAgIC8vIGluIG9yZGVyIGFsbCB2aWV3cyB0byBoYXZlIHRoZSBzYW1lIHZhbHVlcyBmb3IgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICB0aGlzLm1vbnRoVmlld3MuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG0uc2hpZnRLZXkgPSB0aGlzLnNoaWZ0S2V5O1xuICAgICAgICAgICAgbS5sYXN0U2VsZWN0ZWREYXRlID0gdGhpcy5sYXN0U2VsZWN0ZWREYXRlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdERhdGVGcm9tQ2xpZW50KGluc3RhbmNlLmRhdGUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aScgJiYgdGhpcy5fZGVzZWxlY3REYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0RGF0ZUluTW9udGhWaWV3cyhpbnN0YW5jZS5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGVzKTtcblxuICAgICAgICB0aGlzLm1vbnRoVmlld3MuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG0uc2hpZnRLZXkgPSB0aGlzLnNoaWZ0S2V5O1xuICAgICAgICAgICAgbS5sYXN0U2VsZWN0ZWREYXRlID0gdGhpcy5sYXN0U2VsZWN0ZWREYXRlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHZpZXdDaGFuZ2luZyhhcmdzOiBJVmlld0NoYW5naW5nRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQWN0aW9uID0gYXJncy5tb250aEFjdGlvbjtcbiAgICAgICAgdGhpcy5pc0tleWRvd25UcmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5uZXh0RGF0ZSA9IGFyZ3MubmV4dERhdGU7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5kYXlzVmlldy5kYXRlcy5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGUuZGF0ZS5nZXRUaW1lKCkgPT09IG5leHQuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIGlmIChkYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRheXNWaWV3LmRheXNOYXZTZXJ2aWNlLmZvY3VzTmV4dERhdGUoZGF5Lm5hdGl2ZUVsZW1lbnQsIGFyZ3Mua2V5LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IHRoaXMubmV4dERhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlbmFsXG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZU1vbnRoKGV2ZW50OiBEYXRlKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0Rmlyc3RWaWV3RGF0ZShldmVudCwgJ21vbnRoJywgdGhpcy5hY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gSWd4Q2FsZW5kYXJWaWV3Lk1vbnRoO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5tb250aHNCdG5zLmZpbmQoKGU6IEVsZW1lbnRSZWYsIGlkeDogbnVtYmVyKSA9PiBpZHggPT09IHRoaXMuYWN0aXZlVmlld0lkeCk7XG4gICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIGVsZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uQWN0aXZlVmlld1llYXIoYXJnczogRGF0ZSwgYWN0aXZlVmlld0lkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IElneENhbGVuZGFyVmlldy5ZZWFyO1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdJZHggPSBhY3RpdmVWaWV3SWR4O1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vbnRoKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BY3RpdmVWaWV3WWVhcktCKGFyZ3M6IERhdGUsIGV2ZW50OiBLZXlib2FyZEV2ZW50LCBhY3RpdmVWaWV3SWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGxhdGZvcm0uaXNBY3RpdmF0aW9uS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25BY3RpdmVWaWV3WWVhcihhcmdzLCBhY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0cyBkYXRlKHMpIChiYXNlZCBvbiB0aGUgc2VsZWN0aW9uIHR5cGUpLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMuY2FsZW5kYXIuZGVzZWxlY3REYXRlKG5ldyBEYXRlKGAyMDE4LTA2LTEyYCkpO1xuICAgICAqIGBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGVzZWxlY3REYXRlKHZhbHVlPzogRGF0ZSB8IERhdGVbXSkge1xuICAgICAgICBzdXBlci5kZXNlbGVjdERhdGUodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgICAgICAgICB2aWV3LnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXM7XG4gICAgICAgICAgICB2aWV3LnJhbmdlU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld0RhdGUoaTogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwudGltZWRlbHRhKHRoaXMudmlld0RhdGUsICdtb250aCcsIGkpO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSBjb250ZXh0IG9iamVjdCBpbnNpZGUgdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udGV4dChpOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0Vmlld0RhdGUoaSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ29udGV4dChkYXRlLCBpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFuaW1hdGlvbkRvbmUoZXZlbnQpIHtcbiAgICAgICAgaWYgKChldmVudC5mcm9tU3RhdGUgPT09IFNjcm9sbE1vbnRoLk5PTkUgJiYgKGV2ZW50LnRvU3RhdGUgPT09IFNjcm9sbE1vbnRoLlBSRVYgfHwgZXZlbnQudG9TdGF0ZSA9PT0gU2Nyb2xsTW9udGguTkVYVCkpIHx8XG4gICAgICAgICAgICAgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ3ZvaWQnICYmIGV2ZW50LnRvU3RhdGUgPT09IFNjcm9sbE1vbnRoLk5PTkUpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlQ2hhbmdlZC5lbWl0KHsgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLCBjdXJyZW50VmFsdWU6IHRoaXMudmlld0RhdGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzS2V5ZG93blRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiAhPT0gU2Nyb2xsTW9udGguTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxNb250aCQubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtb250aFZpZXcgPSB0aGlzLmRheXNWaWV3IGFzIElneERheXNWaWV3Q29tcG9uZW50O1xuICAgICAgICBsZXQgZGF0ZSA9IG1vbnRoVmlldz8uZGF0ZXMuZmluZCgoZCkgPT4gZC5zZWxlY3RlZCk7XG5cbiAgICAgICAgd2hpbGUgKCFkYXRlICYmIG1vbnRoVmlldz8ubmV4dE1vbnRoVmlldykge1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgICAgICBkYXRlID0gbW9udGhWaWV3LmRhdGVzLmZpbmQoKGQpID0+IGQuc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlICYmIGRhdGUuaXNGb2N1c2FibGUgJiYgIXRoaXMuaXNLZXlkb3duVHJpZ2dlcikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGF0ZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9LCBwYXJzZUludChzbGlkZUluUmlnaHQub3B0aW9ucy5wYXJhbXMuZHVyYXRpb24sIDEwKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYWxsYmFjayAmJiAoZXZlbnQudG9TdGF0ZSA9PT0gU2Nyb2xsTW9udGguTkVYVCB8fCBldmVudC50b1N0YXRlID09PSBTY3JvbGxNb250aC5QUkVWKSkge1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLm5leHREYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLk5PTkU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB2aWV3UmVuZGVyZWQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2VkLmVtaXQodGhpcy5hY3RpdmVWaWV3KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldEFjdGl2ZURhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5tb250aFZpZXdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGVzID0gW107XG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5tYXAobXYgPT4gbXYuZGF0ZXMpLmZvckVhY2goZGF5cyA9PiB7XG4gICAgICAgICAgICBkYXRlcyA9IGRhdGVzLmNvbmNhdChkYXlzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkYXRlID0gZGF0ZXMuZmluZChkYXkgPT4gZGF5LnNlbGVjdGVkICYmIGRheS5pc0N1cnJlbnRNb250aCkgfHwgZGF0ZXMuZmluZChkYXkgPT4gZGF5LmlzVG9kYXkgJiYgZGF5LmlzQ3VycmVudE1vbnRoKVxuICAgICAgICAgICAgfHwgZGF0ZXMuZmluZChkID0+IGQuaXNGb2N1c2FibGUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gZGF0ZS5kYXRlLmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhWaWV3c0NoYW5nZXMkKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aFZpZXdzQ2hhbmdlcyQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJldk1vbnRoKGRhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJNb2RlbC5nZXRQcmV2TW9udGgoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXh0TW9udGgoZGF0ZSwgdmlld0luZGV4KTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0RGF0ZUJ5VmlldyhkYXRlLCAnTW9udGgnLCB2aWV3SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgYnVpbGRpbmcgYW5kIHJldHVybmluZyB0aGUgY29udGV4dCBvYmplY3QgaW5zaWRlXG4gICAgICogdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlQ29udGV4dCh2YWx1ZTogRGF0ZSwgaT86IG51bWJlcikge1xuICAgICAgICBjb25zdCBmb3JtYXRPYmplY3QgPSB7XG4gICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgIG1vbnRoVmlldzogKCkgPT4gdGhpcy5vbkFjdGl2ZVZpZXdZZWFyKHZhbHVlLCBpKSxcbiAgICAgICAgICAgIHllYXJWaWV3OiAoKSA9PiB0aGlzLm9uQWN0aXZlVmlld0RlY2FkZSh2YWx1ZSwgaSksXG4gICAgICAgICAgICAuLi50aGlzLmNhbGVuZGFyTW9kZWwuZm9ybWF0VG9QYXJ0cyh2YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMuZm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBbJ2VyYScsICd5ZWFyJywgJ21vbnRoJywgJ2RheScsICd3ZWVrZGF5J10pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7ICRpbXBsaWNpdDogZm9ybWF0T2JqZWN0IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCB0aGF0IHNldHMgcmVmZXJlbmNlcyBmb3IgcHJldi9uZXh0IG1vbnRocyBmb3IgZWFjaCBtb250aCBpbiB0aGUgdmlld1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0U2libGluZ01vbnRocyhtb250aFZpZXdzOiBRdWVyeUxpc3Q8SWd4RGF5c1ZpZXdDb21wb25lbnQ+KSB7XG4gICAgICAgIG1vbnRoVmlld3MuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZNb250aFZpZXcgPSB0aGlzLmdldE1vbnRoVmlldyhpbmRleCAtIDEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE1vbnRoVmlldyA9IHRoaXMuZ2V0TW9udGhWaWV3KGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpdGVtLm5leHRNb250aFZpZXcgPSBuZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgaXRlbS5wcmV2TW9udGhWaWV3ID0gcHJldk1vbnRoVmlldztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCByZXR1cm5pbmcgcHJldmlvdXMvbmV4dCBkYXkgdmlld3NcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1vbnRoVmlldyhpbmRleDogbnVtYmVyKTogSWd4RGF5c1ZpZXdDb21wb25lbnQge1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xIHx8IGluZGV4ID09PSB0aGlzLm1vbnRoVmlld3MubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tb250aFZpZXdzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgbWV0aG9kIHRoYXQgZG9lcyBkZXNlbGVjdGlvbiBmb3IgYWxsIG1vbnRoIHZpZXdzIHdoZW4gc2VsZWN0aW9uIGlzIFwibXVsdGlcIlxuICAgICAqIElmIG5vdCBjYWxsZWQsIHNlbGVjdGlvbiBpbiBvdGhlciBtb250aCB2aWV3cyBzdGF5c1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgZGVzZWxlY3REYXRlSW5Nb250aFZpZXdzKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICAgICAgbS5kZXNlbGVjdE11bHRpcGxlSW5Nb250aCh2YWx1ZSk7XG4gICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTW9udGgoKSB7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5tb250aHNWaWV3Lm1vbnRoc1JlZi5maW5kKChlKSA9PlxuICAgICAgICAgICAgZS5pbmRleCA9PT0gdGhpcy5tb250aHNWaWV3LmRhdGUuZ2V0TW9udGgoKSk7XG4gICAgICAgIGlmIChtb250aCkge1xuICAgICAgICAgICAgbW9udGgubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1yZXN1bHQgI2RlZmF1bHRIZWFkZXI+XG4gICAgPHNwYW4+e3sgZ2V0Rm9ybWF0dGVkRGF0ZSgpLndlZWtkYXkgfX0sJm5ic3A7PC9zcGFuPlxuICAgIDxzcGFuPnt7IGdldEZvcm1hdHRlZERhdGUoKS5tb250aGRheSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtcmVzdWx0ICNkZWZhdWx0TW9udGggbGV0LW9iaj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtb250aHNWaWV3TnVtYmVyIDwgMiB8fCBvYmouaW5kZXggPCAxXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciA+IDEgPyAocmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9maXJzdF9waWNrZXJfb2YucmVwbGFjZSgnezB9JywgbW9udGhzVmlld051bWJlci50b1N0cmluZygpKSAgKyAnICcgKyAoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSB8IGRhdGU6ICdMTExMIHl5eXknKSkgOiByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3NlbGVjdGVkX21vbnRoX2lzICsgKGdldFZpZXdEYXRlKG9iai5pbmRleCkgfCBkYXRlOiAnTExMTCB5eXl5Jyl9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihnZXRWaWV3RGF0ZShvYmouaW5kZXgpIHwgZGF0ZTogJ0xMTEwnKSArICcgJyArIHJlc291cmNlU3RyaW5ncy5pZ3hfY2FsZW5kYXJfc2VsZWN0X21vbnRoXCJcbiAgICAgICAgICAgICNtb250aHNCdG5cbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQWN0aXZlVmlld1llYXJLQihnZXRWaWV3RGF0ZShvYmouaW5kZXgpLCAkZXZlbnQsIG9iai5pbmRleClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aXZlVmlld1llYXIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSwgb2JqLmluZGV4KVwiXG4gICAgICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZE1vbnRoKGdldFZpZXdEYXRlKG9iai5pbmRleCkpIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSB8IGRhdGU6ICd5eXl5JykgKyAnICcgKyByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3NlbGVjdF95ZWFyXCJcbiAgICAgICAgICAgICN5ZWFyc0J0blxuICAgICAgICAgICAgKGtleWRvd24pPVwib25BY3RpdmVWaWV3RGVjYWRlS0IoJGV2ZW50LCBnZXRWaWV3RGF0ZShvYmouaW5kZXgpLCBvYmouaW5kZXgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGl2ZVZpZXdEZWNhZGUoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSwgb2JqLmluZGV4KVwiXG4gICAgICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZFllYXIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSkgfX1cbiAgICAgICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGhlYWRlclxuICAgIGFyaWEtbGFiZWxsZWRieT1cImlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLW1vbnRoIGlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLXllYXJcIlxuICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19oZWFkZXJcIlxuICAgICpuZ0lmPVwic2VsZWN0aW9uID09PSAnc2luZ2xlJyAmJiBoYXNIZWFkZXJcIj5cblxuICAgIDxoNSBpZD1cImlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLXllYXJcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9faGVhZGVyLXllYXJcIj5cbiAgICAgICAge3sgZm9ybWF0dGVkWWVhcihoZWFkZXJEYXRlKSB9fVxuICAgIDwvaDU+XG5cbiAgICA8aDIgaWQ9XCJpZ3gtYXJpYS1jYWxlbmRhci10aXRsZS1tb250aFwiIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19oZWFkZXItZGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGUgPyBoZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRIZWFkZXI7IGNvbnRleHQ6IGhlYWRlckNvbnRleHRcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9oMj5cbjwvaGVhZGVyPlxuXG48ZGl2ICpuZ0lmPVwiaXNEZWZhdWx0Vmlld1wiICBjbGFzcz1cImlneC1jYWxlbmRhcl9fYm9keVwiIFtAYW5pbWF0ZVZpZXddPVwiYWN0aXZlVmlld1wiIChAYW5pbWF0ZVZpZXcuZG9uZSk9XCJ2aWV3UmVuZGVyZWQoJGV2ZW50KVwiIChzd2lwZXJpZ2h0KT1cInByZXZpb3VzTW9udGgoKVwiXG4gICAgKHN3aXBlbGVmdCk9XCJuZXh0TW9udGgoKVwiIChwb2ludGVyZG93bik9XCJzdXBwcmVzc0JsdXIoKVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlclwiPlxuICAgICAgICA8c3BhbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fYXJpYS1vZmYtc2NyZWVuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAnbXVsdGknXCI+XG4gICAgICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciAmJiBtb250aHNWaWV3TnVtYmVyID4gMSA/ICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX211bHRpX3NlbGVjdGlvbi5yZXBsYWNlKCd7MH0nLCBtb250aHNWaWV3TnVtYmVyLnRvU3RyaW5nKCkpIDogcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5ndWxhcl9tdWx0aV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciAmJiBtb250aHNWaWV3TnVtYmVyID4gMSA/ICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3JhbmdlX3NlbGVjdGlvbi5yZXBsYWNlKCd7MH0nLCBtb250aHNWaWV3TnVtYmVyLnRvU3RyaW5nKCkpIDogcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5ndWxhcl9yYW5nZV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAnc2luZ2xlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IG1vbnRoc1ZpZXdOdW1iZXIgJiYgbW9udGhzVmlld051bWJlciA+IDEgPyAgcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5nbGVfc2VsZWN0aW9uLnJlcGxhY2UoJ3swfScsIG1vbnRoc1ZpZXdOdW1iZXIudG9TdHJpbmcoKSkgOiByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3Npbmd1bGFyX3NpbmdsZV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fcHJldlwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9wcmV2aW91c19tb250aCArICcsICcgKyAoZ2V0UHJldk1vbnRoKHZpZXdEYXRlKSB8IGRhdGU6ICdMTExMJylcIlxuICAgICAgICAgICAgZGF0YS1hY3Rpb249XCJwcmV2XCJcbiAgICAgICAgICAgICNwcmV2TW9udGhCdG5cbiAgICAgICAgICAgIGlneENhbGVuZGFyU2Nyb2xsTW9udGhcbiAgICAgICAgICAgIFtzdGFydFNjcm9sbF09XCJzdGFydFByZXZNb250aFNjcm9sbFwiXG4gICAgICAgICAgICBbc3RvcFNjcm9sbF09XCJzdG9wTW9udGhTY3JvbGxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLXdpZHRoLiUnOiAxMDAvKG1vbnRoc1ZpZXdOdW1iZXIqNyl9XCI+XG4gICAgICAgICAgICA8aWd4LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvaWd4LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZXNcIlxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIG1vbnRoc1ZpZXdOdW1iZXIgfCBJZ3hNb250aFZpZXdTbG90czsgaW5kZXggYXMgaTtcIlxuICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIjEwMC9tb250aHNWaWV3TnVtYmVyXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLW1vbnRoXT1cImkgfCBJZ3hHZXRWaWV3RGF0ZTp2aWV3RGF0ZTpmYWxzZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YmhlYWRlclRlbXBsYXRlID8gc3ViaGVhZGVyVGVtcGxhdGUgOiBkZWZhdWx0TW9udGg7IGNvbnRleHQ6IGdldENvbnRleHQoaSlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fbmV4dFwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9uZXh0X21vbnRoICsgJywgJyArICAoZ2V0TmV4dE1vbnRoKHZpZXdEYXRlLCBtb250aHNWaWV3TnVtYmVyKSB8IGRhdGU6ICdMTExMJylcIlxuICAgICAgICAgICAgZGF0YS1hY3Rpb249XCJuZXh0XCJcbiAgICAgICAgICAgICNuZXh0TW9udGhCdG5cbiAgICAgICAgICAgIGlneENhbGVuZGFyU2Nyb2xsTW9udGhcbiAgICAgICAgICAgIFtzdGFydFNjcm9sbF09XCJzdGFydE5leHRNb250aFNjcm9sbFwiXG4gICAgICAgICAgICBbc3RvcFNjcm9sbF09XCJzdG9wTW9udGhTY3JvbGxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydtaW4td2lkdGguJSc6IDEwMC8obW9udGhzVmlld051bWJlcio3KX1cIj5cbiAgICAgICAgICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvaWd4LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIHN0eWxlPVwiZGlzcGxheTogZmxleFwiXG4gICAgICAgIFtAYW5pbWF0ZUNoYW5nZV09XCJhbmltYXRpb25BY3Rpb25cIlxuICAgICAgICAoQGFuaW1hdGVDaGFuZ2UuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cbiAgICAgICAgPGlneC1kYXlzLXZpZXcgcm9sZT1cImdyaWRcIiAqbmdGb3I9XCJsZXQgdmlldyBvZiBtb250aHNWaWV3TnVtYmVyIHwgSWd4TW9udGhWaWV3U2xvdHM7IGluZGV4IGFzIGk7XCIgW2NoYW5nZURheXNWaWV3XT1cInRydWVcIiAjZGF5c1xuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbKGFjdGl2ZURhdGUpXT1cImFjdGl2ZURhdGVcIlxuICAgICAgICAgICAgICAgIFt2aWV3RGF0ZV09XCJpIHwgSWd4R2V0Vmlld0RhdGU6dmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFt3ZWVrU3RhcnRdPVwid2Vla1N0YXJ0XCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0T3B0aW9uc109XCJmb3JtYXRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld3NdPVwiZm9ybWF0Vmlld3NcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICAgICAgICAgIFtzcGVjaWFsRGF0ZXNdPVwic3BlY2lhbERhdGVzXCJcbiAgICAgICAgICAgICAgICBbaGlkZU91dHNpZGVEYXlzXT1cImhpZGVPdXRzaWRlRGF5c1wiXG4gICAgICAgICAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJzaG93V2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICAgICh2aWV3Q2hhbmdpbmcpPVwidmlld0NoYW5naW5nKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0aW9uKT1cImNoaWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW9udGhzVmlld0JsdXIpPVwicmVzZXRBY3RpdmVEYXRlKClcIj5cbiAgICAgICAgPC9pZ3gtZGF5cy12aWV3PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48aWd4LW1vbnRocy12aWV3ICpuZ0lmPVwiaXNZZWFyVmlld1wiXG4gICAgICAgICAgICAgICAgIFtAYW5pbWF0ZVZpZXddPVwiYWN0aXZlVmlld1wiXG4gICAgICAgICAgICAgICAgICNtb250aHNcbiAgICAgICAgICAgICAgICAgKEBhbmltYXRlVmlldy5kb25lKT1cInZpZXdSZW5kZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgICAgICAgIFtmb3JtYXRWaWV3XT1cImZvcm1hdFZpZXdzLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAgW21vbnRoRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMubW9udGhcIlxuICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiY2hhbmdlTW9udGgoJGV2ZW50KVwiPlxuPC9pZ3gtbW9udGhzLXZpZXc+XG5cbjxpZ3gteWVhcnMtdmlldyAqbmdJZj1cImlzRGVjYWRlVmlld1wiXG4gICAgICAgICAgICAgICAgW0BhbmltYXRlVmlld109XCJhY3RpdmVWaWV3XCJcbiAgICAgICAgICAgICAgICAjZGVjYWRlXG4gICAgICAgICAgICAgICAgKEBhbmltYXRlVmlldy5kb25lKT1cInZpZXdSZW5kZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgICAgICAgIFtmb3JtYXRWaWV3XT1cImZvcm1hdFZpZXdzLnllYXJcIlxuICAgICAgICAgICAgICAgIFt5ZWFyRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMueWVhclwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImNoYW5nZVllYXIoJGV2ZW50KVwiPlxuPC9pZ3gteWVhcnMtdmlldz5cbiJdfQ==
943
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUdULFlBQVksRUFHZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLHFDQUFxQyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkosT0FBTyxFQUFpQixlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0s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LElBQUksRUFBRztnQkFrRDlILGlCQUFpQjtzQkFGdkIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0ZuQyxvQkFBb0I7c0JBRjFCLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUMvQyxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTREM0MsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY2pDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWNoQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmFuc2l0aW9uLCB0cmlnZ2VyLCB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmYWRlSW4sIHNjYWxlSW5DZW50ZXIsIHNsaWRlSW5MZWZ0LCBzbGlkZUluUmlnaHQgfSBmcm9tICcuLi9hbmltYXRpb25zL21haW4nO1xuaW1wb3J0IHsgSWd4Q2FsZW5kYXJIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgSWd4Q2FsZW5kYXJTdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgSWd4Q2FsZW5kYXJTY3JvbGxNb250aERpcmVjdGl2ZSB9IGZyb20gJy4vY2FsZW5kYXIuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJQ2FsZW5kYXJEYXRlLCBJZ3hDYWxlbmRhclZpZXcsIFNjcm9sbE1vbnRoLCBtb250aFJhbmdlIH0gZnJvbSAnLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBJZ3hNb250aFBpY2tlckJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL21vbnRoLXBpY2tlci9tb250aC1waWNrZXItYmFzZSc7XG5pbXBvcnQgeyBJZ3hNb250aHNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9tb250aHMtdmlldy9tb250aHMtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi95ZWFycy12aWV3L3llYXJzLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IElneERheXNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9kYXlzLXZpZXcvZGF5cy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGRlYm91bmNlLCBza2lwTGFzdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVZpZXdDaGFuZ2luZ0V2ZW50QXJncyB9IGZyb20gJy4vZGF5cy12aWV3L2RheXMtdmlldy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4TW9udGhWaWV3U2xvdHNDYWxlbmRhciwgSWd4R2V0Vmlld0RhdGVDYWxlbmRhciB9IGZyb20gJy4vbW9udGhzLXZpZXcucGlwZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ1N0eWxlLCBOZ0ZvciwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbi8qKlxuICogQ2FsZW5kYXIgcHJvdmlkZXMgYSB3YXkgdG8gZGlzcGxheSBkYXRlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q2FsZW5kYXJNb2R1bGVcbiAqXG4gKiBAaWd4VGhlbWUgaWd4LWNhbGVuZGFyLXRoZW1lLCBpZ3gtaWNvbi10aGVtZVxuICpcbiAqIEBpZ3hLZXl3b3JkcyBjYWxlbmRhciwgZGF0ZXBpY2tlciwgc2NoZWR1bGUsIGRhdGVcbiAqXG4gKiBAaWd4R3JvdXAgU2NoZWR1bGluZ1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIENhbGVuZGFyIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGRpc3BsYXkgYSBjYWxlbmRhciBhbmQgYWxsb3cgdXNlcnMgdG8gc2VsZWN0IGRhdGVzIHVzaW5nIHNpbmdsZSwgbXVsdGlwbGVcbiAqIG9yIHJhbmdlIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtY2FsZW5kYXIgc2VsZWN0aW9uPVwicmFuZ2VcIj48L2lneC1jYWxlbmRhcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBJZ3hDYWxlbmRhckNvbXBvbmVudFxuICAgICAgICB9XG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGVWaWV3JywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAwJywgdXNlQW5pbWF0aW9uKGZhZGVJbikpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgdXNlQW5pbWF0aW9uKHNjYWxlSW5DZW50ZXIsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ICcuMnMnLFxuICAgICAgICAgICAgICAgICAgICBmcm9tU2NhbGU6IC45XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdhbmltYXRlQ2hhbmdlJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiBwcmV2JywgdXNlQW5pbWF0aW9uKHNsaWRlSW5MZWZ0LCB7XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb21Qb3NpdGlvbjogJ3RyYW5zbGF0ZVgoLTMwJSknXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiBuZXh0JywgdXNlQW5pbWF0aW9uKHNsaWRlSW5SaWdodCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tUG9zaXRpb246ICd0cmFuc2xhdGVYKDMwJSknXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICdjYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgSWd4Q2FsZW5kYXJTY3JvbGxNb250aERpcmVjdGl2ZSwgTmdTdHlsZSwgSWd4SWNvbkNvbXBvbmVudCwgTmdGb3IsIElneERheXNWaWV3Q29tcG9uZW50LCBJZ3hNb250aHNWaWV3Q29tcG9uZW50LCBJZ3hZZWFyc1ZpZXdDb21wb25lbnQsIERhdGVQaXBlLCBJZ3hNb250aFZpZXdTbG90c0NhbGVuZGFyLCBJZ3hHZXRWaWV3RGF0ZUNhbGVuZGFyXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIElneE1vbnRoUGlja2VyQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBjYWxlbmRhci5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgd2lsbCBoYXZlIHZhbHVlIGBcImlneC1jYWxlbmRhci0wXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBpZD1cIm15LWZpcnN0LWNhbGVuZGFyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtY2FsZW5kYXItJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjYWxlbmRhciBoYXMgaGVhZGVyLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYHRydWVgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbaGFzSGVhZGVyXT1cImZhbHNlXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGFzSGVhZGVyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjYWxlbmRhciBoZWFkZXIgd2lsbCBiZSBpbiB2ZXJ0aWNhbCBwb3NpdGlvbi5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNhbGVuZGFyIFt2ZXJ0aWNhbF0gPSBcInRydWVcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2ZXJ0aWNhbCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBudW1iZXIgb2YgbW9udGggdmlld3MgZGlzcGxheWVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYDFgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbbW9udGhzVmlld051bWJlcl09XCIyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1vbnRoc1ZpZXdOdW1iZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb250aHNWaWV3TnVtYmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgbW9udGhzVmlld051bWJlcih2YWw6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsIDwgMSApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21vbnRoc1ZpZXdOdW1iZXIgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdy9oaWRlIHdlZWsgbnVtYmVyc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBbc2hvd1dlZWtOdW1iZXJzXT1cInRydWVcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQXBwbHkgdGhlIGRpZmZlcmVudCBzdGF0ZXMgZm9yIHRoZSB0cmFuc2l0aW9ucyBvZiBhbmltYXRlQ2hhbmdlXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYW5pbWF0aW9uQWN0aW9uOiBhbnkgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGNzcyBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXItLXZlcnRpY2FsJylcbiAgICBwdWJsaWMgZ2V0IHN0eWxlVmVydGljYWxDbGFzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVydGljYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgY3NzIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcicpXG4gICAgcHVibGljIHN0eWxlQ2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVmlld0NoaWxkIHRoYXQgcmVwcmVzZW50cyB0aGUgbW9udGhzIHZpZXcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbW9udGhzJywgeyByZWFkOiBJZ3hNb250aHNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIG1vbnRoc1ZpZXc6IElneE1vbnRoc1ZpZXdDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBNb250aCBidXR0b24sIHRoYXQgZGlzcGxheXMgdGhlIG1vbnRocyB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ21vbnRoc0J0bicpXG4gICAgcHVibGljIG1vbnRoc0J0bnM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIC8qKlxuICAgICAqIFZpZXdDaGlsZCB0aGF0IHJlcHJlc2VudHMgdGhlIGRlY2FkZSB2aWV3LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlY2FkZScsIHsgcmVhZDogSWd4WWVhcnNWaWV3Q29tcG9uZW50IH0pXG4gICAgcHVibGljIGRhY2FkZVZpZXc6IElneFllYXJzVmlld0NvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFZpZXdDaGlsZCB0aGF0IHJlcHJlc2VudHMgdGhlIGRheXMgdmlldy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkYXlzJywgeyByZWFkOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBkYXlzVmlldzogSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3Q2hpbGRyZW5kZW4gcmVwcmVzZW50aW5nIGFsbCBvZiB0aGUgcmVuZGVyZWQgZGF5cyB2aWV3cy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkcmVuKCdkYXlzJywgeyByZWFkOiBJZ3hEYXlzVmlld0NvbXBvbmVudCB9KVxuICAgIHB1YmxpYyBtb250aFZpZXdzOiBRdWVyeUxpc3Q8SWd4RGF5c1ZpZXdDb21wb25lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGZvciBwcmV2aW91cyBtb250aC5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwcmV2TW9udGhCdG4nKVxuICAgIHB1YmxpYyBwcmV2TW9udGhCdG46IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBCdXR0b24gZm9yIG5leHQgbW9udGguXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbmV4dE1vbnRoQnRuJylcbiAgICBwdWJsaWMgbmV4dE1vbnRoQnRuOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogRGVub3RlIGlmIHRoZSB5ZWFyIHZpZXcgaXMgYWN0aXZlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNZZWFyVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gSWd4Q2FsZW5kYXJWaWV3LlllYXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGVhZGVyIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGhlYWRlclRlbXBsYXRlID0gIHRoaXMuY2FsZW5kYXIuaGVhZGVyVGVhbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hDYWxlbmRhckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaGVhZGVyVGVtcGxhdGUoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLnRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2FsZW5kYXIgaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgPSBcImlneENhbGVuZGFySGVhZGVyXCI+PC9pZ3gtY2FsZW5kYXI+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneENhbGVuZGFyQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIHNldCBoZWFkZXJUZW1wbGF0ZShkaXJlY3RpdmU6IGFueSkge1xuICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN1YmhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBzdWJoZWFkZXJUZW1wbGF0ZSA9IHRoaXMuY2FsZW5kYXIuc3ViaGVhZGVyVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdWJoZWFkZXJUZW1wbGF0ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5zdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3ViaGVhZGVyIHRlbXBsYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jYWxlbmRhciBzdWJoZWFkZXJUZW1wbGF0ZSA9IFwiaWd4Q2FsZW5kYXJTdWJoZWFkZXJcIj48L2lneC1jYWxlbmRhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4Q2FsZW5kYXJDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHN1YmhlYWRlclRlbXBsYXRlKGRpcmVjdGl2ZTogYW55KSB7XG4gICAgICAgIHRoaXMuc3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgPSBkaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgY29udGV4dCBmb3IgdGhlIHRlbXBsYXRlIG1hcmtlZCB3aXRoIHRoZSBgaWd4Q2FsZW5kYXJIZWFkZXJgIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBoZWFkZXJDb250ZXh0ID0gIHRoaXMuY2FsZW5kYXIuaGVhZGVyQ29udGV4dDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhlYWRlckNvbnRleHQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSB0aGlzLmhlYWRlckRhdGU7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ29udGV4dChkYXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb250ZXh0IGZvciB0aGUgdGVtcGxhdGUgbWFya2VkIHdpdGggZWl0aGVyIGBpZ3hDYWxlbmRhclN1YkhlYWRlck1vbnRoYFxuICAgICAqIG9yIGBpZ3hDYWxlbmRhclN1YkhlYWRlclllYXJgIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjb250ZXh0ID0gIHRoaXMuY2FsZW5kYXIuY29udGV4dDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbnRleHQoKSB7XG4gICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUNvbnRleHQoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGF0ZSBkaXNwbGF5ZWQgaW4gaGVhZGVyXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBoZWFkZXJEYXRlKCk6IERhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVzID8gdGhpcy5zZWxlY3RlZERhdGVzIDogbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IElneENhbGVuZGFySGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpLCB7IHJlYWQ6IElneENhbGVuZGFySGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSAgfSlcbiAgICBwcml2YXRlIGhlYWRlclRlbXBsYXRlRGlyZWN0aXZlOiBJZ3hDYWxlbmRhckhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IElneENhbGVuZGFyU3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpLCB7IHJlYWQ6IElneENhbGVuZGFyU3ViaGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSAgfSlcbiAgICBwcml2YXRlIHN1YmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlOiBJZ3hDYWxlbmRhclN1YmhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBhY3RpdmVEYXRlID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gYXBwbHkgdGhlIGFjdGl2ZSBkYXRlIHdoZW4gdGhlIGNhbGVuZGFyIHZpZXcgaXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZXh0RGF0ZTogRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIERlbm90ZSBpZiB0aGUgY2FsZW5kYXIgdmlldyB3YXMgY2hhbmdlZCB3aXRoIHRoZSBrZXlib2FyZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0tleWRvd25UcmlnZ2VyID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbGxiYWNrOiAobmV4dCkgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9tb250aHNWaWV3TnVtYmVyID0gMTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbW9udGhWaWV3c0NoYW5nZXMkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZWRvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24ucGFnZXVwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duUGFnZURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUGFnZURvd24gPSBldmVudC5rZXkgPT09ICdQYWdlRG93bic7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBpc1BhZ2VEb3duID8gMSA6IC0xO1xuICAgICAgICBsZXQgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgbGV0IGFjdGl2ZURhdGU7XG5cbiAgICAgICAgd2hpbGUgKCFhY3RpdmVEYXRlICYmIG1vbnRoVmlldykge1xuICAgICAgICAgICAgYWN0aXZlRGF0ZSA9IG1vbnRoVmlldy5kYXRlcy5maW5kKChkYXRlKSA9PiBkYXRlLm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aXZlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZSA9IG5ldyBEYXRlKGFjdGl2ZURhdGUuZGF0ZS5kYXRlKTtcblxuICAgICAgICAgICAgbGV0IHllYXIgPSB0aGlzLm5leHREYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgICAgICAgIGxldCBtb250aCA9IHRoaXMubmV4dERhdGUuZ2V0TW9udGgoKSArIHN0ZXA7XG4gICAgICAgICAgICBpZiAoaXNQYWdlRG93bikge1xuICAgICAgICAgICAgICAgIGlmIChtb250aCA+IDExKSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoID0gMDsgeWVhciArPSBzdGVwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbnRoIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBtb250aCA9IDExOyB5ZWFyICs9IHN0ZXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IG1vbnRoUmFuZ2UodGhpcy5uZXh0RGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCk7XG5cbiAgICAgICAgICAgIGxldCBkYXkgPSB0aGlzLm5leHREYXRlLmdldERhdGUoKTtcbiAgICAgICAgICAgIGlmIChkYXkgPiByYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgIGRheSA9IHJhbmdlWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5leHREYXRlLnNldERhdGUoZGF5KTtcbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUuc2V0TW9udGgobW9udGgpO1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IChuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZGF5SXRlbTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKCFkYXlJdGVtICYmIG1vbnRoVmlldykgfHwgKGRheUl0ZW0gJiYgIWRheUl0ZW0uaXNDdXJyZW50TW9udGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0gPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZCkgPT4gZC5kYXRlLmRhdGUuZ2V0VGltZSgpID09PSBuZXh0LmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF5SXRlbSAmJiBkYXlJdGVtLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNQYWdlRG93bikge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnJlcGVhdCkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm5leHRNb250aCh0cnVlKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnJlcGVhdCkge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLnByZXZpb3VzTW9udGgodHJ1ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzTW9udGgodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uc2hpZnQucGFnZXVwJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLnNoaWZ0LnBhZ2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duU2hpZnRQYWdlVXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNEZWZhdWx0Vmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNQYWdlRG93biA9IGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJztcbiAgICAgICAgY29uc3Qgc3RlcCA9IGlzUGFnZURvd24gPyAxIDogLTE7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwudGltZWRlbHRhKHRoaXMudmlld0RhdGUsICd5ZWFyJywgc3RlcCk7XG5cbiAgICAgICAgdGhpcy5hbmltYXRpb25BY3Rpb24gPSBpc1BhZ2VEb3duID8gU2Nyb2xsTW9udGguTkVYVCA6IFNjcm9sbE1vbnRoLlBSRVY7XG4gICAgICAgIHRoaXMuaXNLZXlkb3duVHJpZ2dlciA9IHRydWU7XG5cbiAgICAgICAgbGV0IG1vbnRoVmlldyA9IHRoaXMuZGF5c1ZpZXcgYXMgSWd4RGF5c1ZpZXdDb21wb25lbnQ7XG4gICAgICAgIGxldCBhY3RpdmVEYXRlO1xuXG4gICAgICAgIHdoaWxlICghYWN0aXZlRGF0ZSAmJiBtb250aFZpZXcpIHtcbiAgICAgICAgICAgIGFjdGl2ZURhdGUgPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZGF0ZSkgPT4gZGF0ZS5uYXRpdmVFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFjdGl2ZURhdGUpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUgPSBuZXcgRGF0ZShhY3RpdmVEYXRlLmRhdGUuZGF0ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLm5leHREYXRlLmdldEZ1bGxZZWFyKCkgKyBzdGVwO1xuXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IG1vbnRoUmFuZ2UoeWVhciwgdGhpcy5uZXh0RGF0ZS5nZXRNb250aCgpKTtcblxuICAgICAgICAgICAgbGV0IGRheSA9IHRoaXMubmV4dERhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICAgICAgaWYgKGRheSA+IHJhbmdlWzFdKSB7XG4gICAgICAgICAgICAgICAgZGF5ID0gcmFuZ2VbMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubmV4dERhdGUuc2V0RGF0ZShkYXkpO1xuICAgICAgICAgICAgdGhpcy5uZXh0RGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcblxuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayA9IChuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3ID0gdGhpcy5kYXlzVmlldyBhcyBJZ3hEYXlzVmlld0NvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBsZXQgZGF5SXRlbTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKCFkYXlJdGVtICYmIG1vbnRoVmlldykgfHwgKGRheUl0ZW0gJiYgIWRheUl0ZW0uaXNDdXJyZW50TW9udGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0gPSBtb250aFZpZXcuZGF0ZXMuZmluZCgoZCkgPT4gZC5kYXRlLmRhdGUuZ2V0VGltZSgpID09PSBuZXh0LmdldFRpbWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoVmlldyA9IG1vbnRoVmlldy5uZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGF5SXRlbSAmJiBkYXlJdGVtLmlzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRheUl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uaG9tZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bkhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF5c1ZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMuZGF5c1ZpZXcub25LZXlkb3duSG9tZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLZXlib2FyZCBuYXZpZ2F0aW9uIG9mIHRoZSBjYWxlbmRhclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW5kJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlkb3duRW5kKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRheXNWaWV3KSB7XG4gICAgICAgICAgICB0aGlzLmRheXNWaWV3Lm9uS2V5ZG93bkVuZChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9wIGNvbnRpbnVvdXMgbmF2aWdhdGlvbiBvbiBtb3VzZXVwIGV2ZW50XG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiAhPT0gU2Nyb2xsTW9udGguTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wTW9udGhTY3JvbGwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRTaWJsaW5nTW9udGhzKHRoaXMubW9udGhWaWV3cyk7XG4gICAgICAgIHRoaXMuX21vbnRoVmlld3NDaGFuZ2VzJCA9IHRoaXMubW9udGhWaWV3cy5jaGFuZ2VzLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2libGluZ01vbnRocyhjKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdGFydE1vbnRoU2Nyb2xsJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3RvcE1vbnRoU2Nyb2xsJCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zY3JvbGxNb250aCQucGlwZShcbiAgICAgICAgICAgICAgICBza2lwTGFzdCgxKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZSgoKSA9PiBpbnRlcnZhbCgzMDApKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5zdG9wTW9udGhTY3JvbGwkKVxuICAgICAgICAgICAgKSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2Nyb2xsTW9udGguUFJFVjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNNb250aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2Nyb2xsTW9udGguTkVYVDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBTY3JvbGxNb250aC5OT05FOlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBsb2NhbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vbnRoIGluIHRoZSBtb250aCB2aWV3IGlmIGVuYWJsZWQsXG4gICAgICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIGRlZmF1bHQgYERhdGUuZ2V0TW9udGgoKWAgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdHRlZE1vbnRoKHZhbHVlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybWF0Vmlld3MubW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlck1vbnRoLmZvcm1hdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3ZhbHVlLmdldE1vbnRoKCl9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdG8gcHJldmlvdXMgbW9udGhcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlvdXNNb250aChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzS2V5ZG93blRyaWdnZXIgJiYgdGhpcy5hbmltYXRpb25BY3Rpb24gPT09IFNjcm9sbE1vbnRoLk5FWFQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXZpb3VzVmlld0RhdGUgPSB0aGlzLnZpZXdEYXRlO1xuICAgICAgICB0aGlzLnZpZXdEYXRlID0gdGhpcy5jYWxlbmRhck1vZGVsLmdldFByZXZNb250aCh0aGlzLnZpZXdEYXRlKTtcbiAgICAgICAgdGhpcy5hbmltYXRpb25BY3Rpb24gPSBTY3JvbGxNb250aC5QUkVWO1xuICAgICAgICB0aGlzLmlzS2V5ZG93blRyaWdnZXIgPSBpc0tleWRvd25UcmlnZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdXBwcmVzc0JsdXIoKSB7XG4gICAgICAgIHRoaXMubW9udGhWaWV3cz8uZm9yRWFjaChkID0+IGQuc2hvdWxkUmVzZXREYXRlID0gZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5kYXlzVmlldykge1xuICAgICAgICAgICAgdGhpcy5kYXlzVmlldy5zaG91bGRSZXNldERhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0byBuZXh0IG1vbnRoXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5leHRNb250aChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzS2V5ZG93blRyaWdnZXIgJiYgdGhpcy5hbmltYXRpb25BY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNLZXlkb3duVHJpZ2dlciA9IGlzS2V5ZG93blRyaWdnZXI7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0TmV4dE1vbnRoKHRoaXMudmlld0RhdGUpO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLk5FWFQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udGluaW91cyBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIHByZXZpb3VzIG1vbnRoc1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydFByZXZNb250aFNjcm9sbCA9IChpc0tleWRvd25UcmlnZ2VyID0gZmFsc2UpID0+IHtcbiAgICAgICAgdGhpcy5zdGFydE1vbnRoU2Nyb2xsJC5uZXh0KCk7XG4gICAgICAgIHRoaXMubW9udGhTY3JvbGxEaXJlY3Rpb24gPSBTY3JvbGxNb250aC5QUkVWO1xuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLlBSRVY7XG4gICAgICAgIHRoaXMucHJldmlvdXNNb250aChpc0tleWRvd25UcmlnZ2VyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29udGluaW91cyBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIG5leHQgbW9udGhzXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0TmV4dE1vbnRoU2Nyb2xsID0gKGlzS2V5ZG93blRyaWdnZXIgPSBmYWxzZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXJ0TW9udGhTY3JvbGwkLm5leHQoKTtcbiAgICAgICAgdGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiA9IFNjcm9sbE1vbnRoLk5FWFQ7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQWN0aW9uID0gU2Nyb2xsTW9udGguTkVYVDtcbiAgICAgICAgdGhpcy5uZXh0TW9udGgoaXNLZXlkb3duVHJpZ2dlcik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFN0b3AgY29udGludW91cyBuYXZpZ2F0aW9uXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHN0b3BNb250aFNjcm9sbCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAvLyBnZW5lcmFsbHkgdGhlIHNjcm9sbGluZyBpcyBidWlsdCBvbiB0aGUgY2FsZW5kYXIgY29tcG9uZW50XG4gICAgICAgIC8vIGFuZCBhbGwgc3RhcnQvc3RvcCBzY3JvbGxpbmcgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBjYWxlbmRhclxuICAgICAgICAvLyBpZiB3ZSBjaGFuZ2UgYmVsb3cgbGluZXMgdG8gY2FsbCBzdG9wTW9udGhTY3JvbGwkIG9uIHRoZSBjYWxlbmRhciBpbnN0ZWFkIG9mIG9uIHRoZSB2aWV3cyxcbiAgICAgICAgLy8gc3RyYW5nZSBidWcgaXMgaW50cm9kdWNlZCAtLT4gYWZ0ZXIgY2hhbmdpbmcgbnVtYmVyIG9mIG1vbnRocywgY29udGludW91cyBzY3JvbGxpbmcgb24gbW91c2UgY2xpY2sgZG9lcyBub3QgaGFwcGVuXG4gICAgICAgIHRoaXMuZGF5c1ZpZXcuc3RvcE1vbnRoU2Nyb2xsJC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRheXNWaWV3LnN0b3BNb250aFNjcm9sbCQuY29tcGxldGUoKTtcblxuXG4gICAgICAgIGlmICh0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uID09PSBTY3JvbGxNb250aC5QUkVWKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZNb250aEJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiA9PT0gU2Nyb2xsTW9udGguTkVYVCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0TW9udGhCdG4ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzQWN0aXZhdGlvbktleShldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vbnRoU2Nyb2xsRGlyZWN0aW9uID0gU2Nyb2xsTW9udGguTk9ORTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFjdGl2ZVZpZXdEZWNhZGUoYXJnczogRGF0ZSwgYWN0aXZlVmlld0lkeDogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyLmFjdGl2ZVZpZXdEZWNhZGUoYWN0aXZlVmlld0lkeCk7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYWNhZGVWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5jYWxlbmRhckRpci5maW5kKGRhdGUgPT4gZGF0ZS5pc0N1cnJlbnRZZWFyKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BY3RpdmVWaWV3RGVjYWRlS0IoZXZlbnQsIGFyZ3M6IERhdGUsIGFjdGl2ZVZpZXdJZHg6IG51bWJlcikge1xuICAgICAgICBzdXBlci5hY3RpdmVWaWV3RGVjYWRlS0IoZXZlbnQsIGFjdGl2ZVZpZXdJZHgpO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYWNhZGVWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYWNhZGVWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgICAgIHRoaXMuZGFjYWRlVmlldy5jYWxlbmRhckRpci5maW5kKGRhdGUgPT4gZGF0ZS5pc0N1cnJlbnRZZWFyKS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkRGF0ZSgpOiB7IHdlZWtkYXk6IHN0cmluZzsgbW9udGhkYXk6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuaGVhZGVyRGF0ZTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbW9udGhkYXk6IHRoaXMuZm9ybWF0dGVyTW9udGhkYXkuZm9ybWF0KGRhdGUpLFxuICAgICAgICAgICAgd2Vla2RheTogdGhpcy5mb3JtYXR0ZXJXZWVrZGF5LmZvcm1hdChkYXRlKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGludm9rZWQgb24gZGF0ZSBzZWxlY3Rpb25cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hpbGRDbGlja2VkKGluc3RhbmNlOiBJQ2FsZW5kYXJEYXRlKSB7XG4gICAgICAgIGlmIChpbnN0YW5jZS5pc1ByZXZNb250aCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c01vbnRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5zdGFuY2UuaXNOZXh0TW9udGgpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dE1vbnRoKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZWxlY3REYXRlRnJvbUNsaWVudCBpcyBjYWxsZWQgYm90aCBoZXJlIGFuZCBpbiBkYXlzLXZpZXcuY29tcG9uZW50XG4gICAgICAgIC8vIHdoZW4gbXVsdGlwbGUgbW9udGhzIGFyZSBpbiB2aWV3LCAnc2hpZnRLZXknIGFuZCAnbGFzdFNlbGVjdGVkRGF0ZSdcbiAgICAgICAgLy8gc2hvdWxkIGJlIHNldCBiZWZvcmUgYW5kIGFmdGVyIHNlbGVjdERhdGVGcm9tQ2xpZW50XG4gICAgICAgIC8vIGluIG9yZGVyIGFsbCB2aWV3cyB0byBoYXZlIHRoZSBzYW1lIHZhbHVlcyBmb3IgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICB0aGlzLm1vbnRoVmlld3MuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG0uc2hpZnRLZXkgPSB0aGlzLnNoaWZ0S2V5O1xuICAgICAgICAgICAgbS5sYXN0U2VsZWN0ZWREYXRlID0gdGhpcy5sYXN0U2VsZWN0ZWREYXRlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdERhdGVGcm9tQ2xpZW50KGluc3RhbmNlLmRhdGUpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24gPT09ICdtdWx0aScgJiYgdGhpcy5fZGVzZWxlY3REYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0RGF0ZUluTW9udGhWaWV3cyhpbnN0YW5jZS5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGVzKTtcblxuICAgICAgICB0aGlzLm1vbnRoVmlld3MuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG0uc2hpZnRLZXkgPSB0aGlzLnNoaWZ0S2V5O1xuICAgICAgICAgICAgbS5sYXN0U2VsZWN0ZWREYXRlID0gdGhpcy5sYXN0U2VsZWN0ZWREYXRlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHZpZXdDaGFuZ2luZyhhcmdzOiBJVmlld0NoYW5naW5nRXZlbnRBcmdzKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQWN0aW9uID0gYXJncy5tb250aEFjdGlvbjtcbiAgICAgICAgdGhpcy5pc0tleWRvd25UcmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5uZXh0RGF0ZSA9IGFyZ3MubmV4dERhdGU7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5kYXlzVmlldy5kYXRlcy5maW5kKChpdGVtKSA9PiBpdGVtLmRhdGUuZGF0ZS5nZXRUaW1lKCkgPT09IG5leHQuZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIGlmIChkYXkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRheXNWaWV3LmRheXNOYXZTZXJ2aWNlLmZvY3VzTmV4dERhdGUoZGF5Lm5hdGl2ZUVsZW1lbnQsIGFyZ3Mua2V5LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZpZXdEYXRlID0gdGhpcy52aWV3RGF0ZTtcbiAgICAgICAgdGhpcy52aWV3RGF0ZSA9IHRoaXMubmV4dERhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlbmFsXG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZU1vbnRoKGV2ZW50OiBEYXRlKSB7XG4gICAgICAgIHRoaXMucHJldmlvdXNWaWV3RGF0ZSA9IHRoaXMudmlld0RhdGU7XG4gICAgICAgIHRoaXMudmlld0RhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0Rmlyc3RWaWV3RGF0ZShldmVudCwgJ21vbnRoJywgdGhpcy5hY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gSWd4Q2FsZW5kYXJWaWV3Lk1vbnRoO1xuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5tb250aHNCdG5zLmZpbmQoKGU6IEVsZW1lbnRSZWYsIGlkeDogbnVtYmVyKSA9PiBpZHggPT09IHRoaXMuYWN0aXZlVmlld0lkeCk7XG4gICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgIGVsZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uQWN0aXZlVmlld1llYXIoYXJnczogRGF0ZSwgYWN0aXZlVmlld0lkeDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IElneENhbGVuZGFyVmlldy5ZZWFyO1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdJZHggPSBhY3RpdmVWaWV3SWR4O1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb250aHNWaWV3LmRhdGUgPSBhcmdzO1xuICAgICAgICAgICAgdGhpcy5mb2N1c01vbnRoKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BY3RpdmVWaWV3WWVhcktCKGFyZ3M6IERhdGUsIGV2ZW50OiBLZXlib2FyZEV2ZW50LCBhY3RpdmVWaWV3SWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGxhdGZvcm0uaXNBY3RpdmF0aW9uS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25BY3RpdmVWaWV3WWVhcihhcmdzLCBhY3RpdmVWaWV3SWR4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0cyBkYXRlKHMpIChiYXNlZCBvbiB0aGUgc2VsZWN0aW9uIHR5cGUpLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMuY2FsZW5kYXIuZGVzZWxlY3REYXRlKG5ldyBEYXRlKGAyMDE4LTA2LTEyYCkpO1xuICAgICAqIGBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZGVzZWxlY3REYXRlKHZhbHVlPzogRGF0ZSB8IERhdGVbXSkge1xuICAgICAgICBzdXBlci5kZXNlbGVjdERhdGUodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5mb3JFYWNoKCh2aWV3KSA9PiB7XG4gICAgICAgICAgICB2aWV3LnNlbGVjdGVkRGF0ZXMgPSB0aGlzLnNlbGVjdGVkRGF0ZXM7XG4gICAgICAgICAgICB2aWV3LnJhbmdlU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld0RhdGUoaTogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNhbGVuZGFyTW9kZWwudGltZWRlbHRhKHRoaXMudmlld0RhdGUsICdtb250aCcsIGkpO1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSBjb250ZXh0IG9iamVjdCBpbnNpZGUgdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udGV4dChpOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0Vmlld0RhdGUoaSk7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ29udGV4dChkYXRlLCBpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGFuaW1hdGlvbkRvbmUoZXZlbnQpIHtcbiAgICAgICAgaWYgKChldmVudC5mcm9tU3RhdGUgPT09IFNjcm9sbE1vbnRoLk5PTkUgJiYgKGV2ZW50LnRvU3RhdGUgPT09IFNjcm9sbE1vbnRoLlBSRVYgfHwgZXZlbnQudG9TdGF0ZSA9PT0gU2Nyb2xsTW9udGguTkVYVCkpIHx8XG4gICAgICAgICAgICAgKGV2ZW50LmZyb21TdGF0ZSA9PT0gJ3ZvaWQnICYmIGV2ZW50LnRvU3RhdGUgPT09IFNjcm9sbE1vbnRoLk5PTkUpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdEYXRlQ2hhbmdlZC5lbWl0KHsgcHJldmlvdXNWYWx1ZTogdGhpcy5wcmV2aW91c1ZpZXdEYXRlLCBjdXJyZW50VmFsdWU6IHRoaXMudmlld0RhdGUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzS2V5ZG93blRyaWdnZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRBY3RpdmVEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb250aFNjcm9sbERpcmVjdGlvbiAhPT0gU2Nyb2xsTW9udGguTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxNb250aCQubmV4dCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtb250aFZpZXcgPSB0aGlzLmRheXNWaWV3IGFzIElneERheXNWaWV3Q29tcG9uZW50O1xuICAgICAgICBsZXQgZGF0ZSA9IG1vbnRoVmlldz8uZGF0ZXMuZmluZCgoZCkgPT4gZC5zZWxlY3RlZCk7XG5cbiAgICAgICAgd2hpbGUgKCFkYXRlICYmIG1vbnRoVmlldz8ubmV4dE1vbnRoVmlldykge1xuICAgICAgICAgICAgbW9udGhWaWV3ID0gbW9udGhWaWV3Lm5leHRNb250aFZpZXc7XG4gICAgICAgICAgICBkYXRlID0gbW9udGhWaWV3LmRhdGVzLmZpbmQoKGQpID0+IGQuc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRlICYmIGRhdGUuaXNGb2N1c2FibGUgJiYgIXRoaXMuaXNLZXlkb3duVHJpZ2dlcikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZGF0ZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9LCBwYXJzZUludChzbGlkZUluUmlnaHQub3B0aW9ucy5wYXJhbXMuZHVyYXRpb24sIDEwKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYWxsYmFjayAmJiAoZXZlbnQudG9TdGF0ZSA9PT0gU2Nyb2xsTW9udGguTkVYVCB8fCBldmVudC50b1N0YXRlID09PSBTY3JvbGxNb250aC5QUkVWKSkge1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayh0aGlzLm5leHREYXRlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFuaW1hdGlvbkFjdGlvbiA9IFNjcm9sbE1vbnRoLk5PTkU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB2aWV3UmVuZGVyZWQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2VkLmVtaXQodGhpcy5hY3RpdmVWaWV3KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0QWN0aXZlRGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldEFjdGl2ZURhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5tb250aFZpZXdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGVzID0gW107XG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5tYXAobXYgPT4gbXYuZGF0ZXMpLmZvckVhY2goZGF5cyA9PiB7XG4gICAgICAgICAgICBkYXRlcyA9IGRhdGVzLmNvbmNhdChkYXlzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkYXRlID0gZGF0ZXMuZmluZChkYXkgPT4gZGF5LnNlbGVjdGVkICYmIGRheS5pc0N1cnJlbnRNb250aCkgfHwgZGF0ZXMuZmluZChkYXkgPT4gZGF5LmlzVG9kYXkgJiYgZGF5LmlzQ3VycmVudE1vbnRoKVxuICAgICAgICAgICAgfHwgZGF0ZXMuZmluZChkID0+IGQuaXNGb2N1c2FibGUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gZGF0ZS5kYXRlLmRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhWaWV3c0NoYW5nZXMkKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aFZpZXdzQ2hhbmdlcyQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJldk1vbnRoKGRhdGUpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJNb2RlbC5nZXRQcmV2TW9udGgoZGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXROZXh0TW9udGgoZGF0ZSwgdmlld0luZGV4KTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGVuZGFyTW9kZWwuZ2V0RGF0ZUJ5VmlldyhkYXRlLCAnTW9udGgnLCB2aWV3SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgYnVpbGRpbmcgYW5kIHJldHVybmluZyB0aGUgY29udGV4dCBvYmplY3QgaW5zaWRlXG4gICAgICogdGhlIGNhbGVuZGFyIHRlbXBsYXRlcy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdlbmVyYXRlQ29udGV4dCh2YWx1ZTogRGF0ZSwgaT86IG51bWJlcikge1xuICAgICAgICBjb25zdCBmb3JtYXRPYmplY3QgPSB7XG4gICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgIG1vbnRoVmlldzogKCkgPT4gdGhpcy5vbkFjdGl2ZVZpZXdZZWFyKHZhbHVlLCBpKSxcbiAgICAgICAgICAgIHllYXJWaWV3OiAoKSA9PiB0aGlzLm9uQWN0aXZlVmlld0RlY2FkZSh2YWx1ZSwgaSksXG4gICAgICAgICAgICAuLi50aGlzLmNhbGVuZGFyTW9kZWwuZm9ybWF0VG9QYXJ0cyh2YWx1ZSwgdGhpcy5sb2NhbGUsIHRoaXMuZm9ybWF0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBbJ2VyYScsICd5ZWFyJywgJ21vbnRoJywgJ2RheScsICd3ZWVrZGF5J10pXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB7ICRpbXBsaWNpdDogZm9ybWF0T2JqZWN0IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCB0aGF0IHNldHMgcmVmZXJlbmNlcyBmb3IgcHJldi9uZXh0IG1vbnRocyBmb3IgZWFjaCBtb250aCBpbiB0aGUgdmlld1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0U2libGluZ01vbnRocyhtb250aFZpZXdzOiBRdWVyeUxpc3Q8SWd4RGF5c1ZpZXdDb21wb25lbnQ+KSB7XG4gICAgICAgIG1vbnRoVmlld3MuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZNb250aFZpZXcgPSB0aGlzLmdldE1vbnRoVmlldyhpbmRleCAtIDEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dE1vbnRoVmlldyA9IHRoaXMuZ2V0TW9udGhWaWV3KGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpdGVtLm5leHRNb250aFZpZXcgPSBuZXh0TW9udGhWaWV3O1xuICAgICAgICAgICAgaXRlbS5wcmV2TW9udGhWaWV3ID0gcHJldk1vbnRoVmlldztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGVscGVyIG1ldGhvZCByZXR1cm5pbmcgcHJldmlvdXMvbmV4dCBkYXkgdmlld3NcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1vbnRoVmlldyhpbmRleDogbnVtYmVyKTogSWd4RGF5c1ZpZXdDb21wb25lbnQge1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xIHx8IGluZGV4ID09PSB0aGlzLm1vbnRoVmlld3MubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tb250aFZpZXdzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgbWV0aG9kIHRoYXQgZG9lcyBkZXNlbGVjdGlvbiBmb3IgYWxsIG1vbnRoIHZpZXdzIHdoZW4gc2VsZWN0aW9uIGlzIFwibXVsdGlcIlxuICAgICAqIElmIG5vdCBjYWxsZWQsIHNlbGVjdGlvbiBpbiBvdGhlciBtb250aCB2aWV3cyBzdGF5c1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgZGVzZWxlY3REYXRlSW5Nb250aFZpZXdzKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMubW9udGhWaWV3cy5mb3JFYWNoKG0gPT4ge1xuICAgICAgICAgICAgbS5kZXNlbGVjdE11bHRpcGxlSW5Nb250aCh2YWx1ZSk7XG4gICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTW9udGgoKSB7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5tb250aHNWaWV3Lm1vbnRoc1JlZi5maW5kKChlKSA9PlxuICAgICAgICAgICAgZS5pbmRleCA9PT0gdGhpcy5tb250aHNWaWV3LmRhdGUuZ2V0TW9udGgoKSk7XG4gICAgICAgIGlmIChtb250aCkge1xuICAgICAgICAgICAgbW9udGgubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGxldC1yZXN1bHQgI2RlZmF1bHRIZWFkZXI+XG4gICAgPHNwYW4+e3sgZ2V0Rm9ybWF0dGVkRGF0ZSgpLndlZWtkYXkgfX0sJm5ic3A7PC9zcGFuPlxuICAgIDxzcGFuPnt7IGdldEZvcm1hdHRlZERhdGUoKS5tb250aGRheSB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtcmVzdWx0ICNkZWZhdWx0TW9udGggbGV0LW9iaj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtb250aHNWaWV3TnVtYmVyIDwgMiB8fCBvYmouaW5kZXggPCAxXCIgY2xhc3M9XCJpZ3gtY2FsZW5kYXJfX2FyaWEtb2ZmLXNjcmVlblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciA+IDEgPyAocmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9maXJzdF9waWNrZXJfb2YucmVwbGFjZSgnezB9JywgbW9udGhzVmlld051bWJlci50b1N0cmluZygpKSAgKyAnICcgKyAoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSB8IGRhdGU6ICdMTExMIHl5eXknKSkgOiByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3NlbGVjdGVkX21vbnRoX2lzICsgKGdldFZpZXdEYXRlKG9iai5pbmRleCkgfCBkYXRlOiAnTExMTCB5eXl5Jyl9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihnZXRWaWV3RGF0ZShvYmouaW5kZXgpIHwgZGF0ZTogJ0xMTEwnKSArICcgJyArIHJlc291cmNlU3RyaW5ncy5pZ3hfY2FsZW5kYXJfc2VsZWN0X21vbnRoXCJcbiAgICAgICAgICAgICNtb250aHNCdG5cbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uQWN0aXZlVmlld1llYXJLQihnZXRWaWV3RGF0ZShvYmouaW5kZXgpLCAkZXZlbnQsIG9iai5pbmRleClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aXZlVmlld1llYXIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSwgb2JqLmluZGV4KVwiXG4gICAgICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZE1vbnRoKGdldFZpZXdEYXRlKG9iai5pbmRleCkpIH19XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSB8IGRhdGU6ICd5eXl5JykgKyAnICcgKyByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3NlbGVjdF95ZWFyXCJcbiAgICAgICAgICAgICN5ZWFyc0J0blxuICAgICAgICAgICAgKGtleWRvd24pPVwib25BY3RpdmVWaWV3RGVjYWRlS0IoJGV2ZW50LCBnZXRWaWV3RGF0ZShvYmouaW5kZXgpLCBvYmouaW5kZXgpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGl2ZVZpZXdEZWNhZGUoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSwgb2JqLmluZGV4KVwiXG4gICAgICAgICAgICBjbGFzcz1cImlneC1jYWxlbmRhci1waWNrZXJfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZFllYXIoZ2V0Vmlld0RhdGUob2JqLmluZGV4KSkgfX1cbiAgICAgICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGhlYWRlclxuICAgIGFyaWEtbGFiZWxsZWRieT1cImlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLW1vbnRoIGlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLXllYXJcIlxuICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19oZWFkZXJcIlxuICAgICpuZ0lmPVwic2VsZWN0aW9uID09PSAnc2luZ2xlJyAmJiBoYXNIZWFkZXJcIj5cblxuICAgIDxoNSBpZD1cImlneC1hcmlhLWNhbGVuZGFyLXRpdGxlLXllYXJcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9faGVhZGVyLXllYXJcIj5cbiAgICAgICAge3sgZm9ybWF0dGVkWWVhcihoZWFkZXJEYXRlKSB9fVxuICAgIDwvaDU+XG5cbiAgICA8aDIgaWQ9XCJpZ3gtYXJpYS1jYWxlbmRhci10aXRsZS1tb250aFwiIGNsYXNzPVwiaWd4LWNhbGVuZGFyX19oZWFkZXItZGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGUgPyBoZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRIZWFkZXI7IGNvbnRleHQ6IGhlYWRlckNvbnRleHRcIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9oMj5cbjwvaGVhZGVyPlxuXG48ZGl2ICpuZ0lmPVwiaXNEZWZhdWx0Vmlld1wiICBjbGFzcz1cImlneC1jYWxlbmRhcl9fYm9keVwiIFtAYW5pbWF0ZVZpZXddPVwiYWN0aXZlVmlld1wiIChAYW5pbWF0ZVZpZXcuZG9uZSk9XCJ2aWV3UmVuZGVyZWQoJGV2ZW50KVwiIChzd2lwZXJpZ2h0KT1cInByZXZpb3VzTW9udGgoKVwiXG4gICAgKHN3aXBlbGVmdCk9XCJuZXh0TW9udGgoKVwiIChwb2ludGVyZG93bik9XCJzdXBwcmVzc0JsdXIoKVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlclwiPlxuICAgICAgICA8c3BhbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImlneC1jYWxlbmRhcl9fYXJpYS1vZmYtc2NyZWVuXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAnbXVsdGknXCI+XG4gICAgICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciAmJiBtb250aHNWaWV3TnVtYmVyID4gMSA/ICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX211bHRpX3NlbGVjdGlvbi5yZXBsYWNlKCd7MH0nLCBtb250aHNWaWV3TnVtYmVyLnRvU3RyaW5nKCkpIDogcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5ndWxhcl9tdWx0aV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAge3sgbW9udGhzVmlld051bWJlciAmJiBtb250aHNWaWV3TnVtYmVyID4gMSA/ICByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3JhbmdlX3NlbGVjdGlvbi5yZXBsYWNlKCd7MH0nLCBtb250aHNWaWV3TnVtYmVyLnRvU3RyaW5nKCkpIDogcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5ndWxhcl9yYW5nZV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0aW9uID09PSAnc2luZ2xlJ1wiPlxuICAgICAgICAgICAgICAgIHt7IG1vbnRoc1ZpZXdOdW1iZXIgJiYgbW9udGhzVmlld051bWJlciA+IDEgPyAgcmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9zaW5nbGVfc2VsZWN0aW9uLnJlcGxhY2UoJ3swfScsIG1vbnRoc1ZpZXdOdW1iZXIudG9TdHJpbmcoKSkgOiByZXNvdXJjZVN0cmluZ3MuaWd4X2NhbGVuZGFyX3Npbmd1bGFyX3NpbmdsZV9zZWxlY3Rpb259fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fcHJldlwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9wcmV2aW91c19tb250aCArICcsICcgKyAoZ2V0UHJldk1vbnRoKHZpZXdEYXRlKSB8IGRhdGU6ICdMTExMJylcIlxuICAgICAgICAgICAgZGF0YS1hY3Rpb249XCJwcmV2XCJcbiAgICAgICAgICAgICNwcmV2TW9udGhCdG5cbiAgICAgICAgICAgIGlneENhbGVuZGFyU2Nyb2xsTW9udGhcbiAgICAgICAgICAgIFtzdGFydFNjcm9sbF09XCJzdGFydFByZXZNb250aFNjcm9sbFwiXG4gICAgICAgICAgICBbc3RvcFNjcm9sbF09XCJzdG9wTW9udGhTY3JvbGxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLXdpZHRoLiUnOiAxMDAvKG1vbnRoc1ZpZXdOdW1iZXIqNyl9XCI+XG4gICAgICAgICAgICA8aWd4LWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCI+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvaWd4LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fZGF0ZXNcIlxuICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIG1vbnRoc1ZpZXdOdW1iZXIgfCBJZ3hNb250aFZpZXdTbG90czsgaW5kZXggYXMgaTtcIlxuICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIjEwMC9tb250aHNWaWV3TnVtYmVyXCJcbiAgICAgICAgICAgICBbYXR0ci5kYXRhLW1vbnRoXT1cImkgfCBJZ3hHZXRWaWV3RGF0ZTp2aWV3RGF0ZTpmYWxzZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YmhlYWRlclRlbXBsYXRlID8gc3ViaGVhZGVyVGVtcGxhdGUgOiBkZWZhdWx0TW9udGg7IGNvbnRleHQ6IGdldENvbnRleHQoaSlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWNhbGVuZGFyLXBpY2tlcl9fbmV4dFwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jYWxlbmRhcl9uZXh0X21vbnRoICsgJywgJyArICAoZ2V0TmV4dE1vbnRoKHZpZXdEYXRlLCBtb250aHNWaWV3TnVtYmVyKSB8IGRhdGU6ICdMTExMJylcIlxuICAgICAgICAgICAgZGF0YS1hY3Rpb249XCJuZXh0XCJcbiAgICAgICAgICAgICNuZXh0TW9udGhCdG5cbiAgICAgICAgICAgIGlneENhbGVuZGFyU2Nyb2xsTW9udGhcbiAgICAgICAgICAgIFtzdGFydFNjcm9sbF09XCJzdGFydE5leHRNb250aFNjcm9sbFwiXG4gICAgICAgICAgICBbc3RvcFNjcm9sbF09XCJzdG9wTW9udGhTY3JvbGxcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieydtaW4td2lkdGguJSc6IDEwMC8obW9udGhzVmlld051bWJlcio3KX1cIj5cbiAgICAgICAgICAgIDxpZ3gtaWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIj5rZXlib2FyZF9hcnJvd19yaWdodDwvaWd4LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIHN0eWxlPVwiZGlzcGxheTogZmxleFwiXG4gICAgICAgIFtAYW5pbWF0ZUNoYW5nZV09XCJhbmltYXRpb25BY3Rpb25cIlxuICAgICAgICAoQGFuaW1hdGVDaGFuZ2UuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cbiAgICAgICAgPGlneC1kYXlzLXZpZXcgcm9sZT1cImdyaWRcIiAqbmdGb3I9XCJsZXQgdmlldyBvZiBtb250aHNWaWV3TnVtYmVyIHwgSWd4TW9udGhWaWV3U2xvdHM7IGluZGV4IGFzIGk7XCIgW2NoYW5nZURheXNWaWV3XT1cInRydWVcIiAjZGF5c1xuICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbKGFjdGl2ZURhdGUpXT1cImFjdGl2ZURhdGVcIlxuICAgICAgICAgICAgICAgIFt2aWV3RGF0ZV09XCJpIHwgSWd4R2V0Vmlld0RhdGU6dmlld0RhdGVcIlxuICAgICAgICAgICAgICAgIFt3ZWVrU3RhcnRdPVwid2Vla1N0YXJ0XCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0T3B0aW9uc109XCJmb3JtYXRPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbZm9ybWF0Vmlld3NdPVwiZm9ybWF0Vmlld3NcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxuICAgICAgICAgICAgICAgIFtzcGVjaWFsRGF0ZXNdPVwic3BlY2lhbERhdGVzXCJcbiAgICAgICAgICAgICAgICBbaGlkZU91dHNpZGVEYXlzXT1cImhpZGVPdXRzaWRlRGF5c1wiXG4gICAgICAgICAgICAgICAgW3Nob3dXZWVrTnVtYmVyc109XCJzaG93V2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICAgICh2aWV3Q2hhbmdpbmcpPVwidmlld0NoYW5naW5nKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0aW9uKT1cImNoaWxkQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobW9udGhzVmlld0JsdXIpPVwicmVzZXRBY3RpdmVEYXRlKClcIj5cbiAgICAgICAgPC9pZ3gtZGF5cy12aWV3PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuXG48aWd4LW1vbnRocy12aWV3ICpuZ0lmPVwiaXNZZWFyVmlld1wiXG4gICAgICAgICAgICAgICAgIFtAYW5pbWF0ZVZpZXddPVwiYWN0aXZlVmlld1wiXG4gICAgICAgICAgICAgICAgICNtb250aHNcbiAgICAgICAgICAgICAgICAgKEBhbmltYXRlVmlldy5kb25lKT1cInZpZXdSZW5kZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgW2RhdGVdPVwidmlld0RhdGVcIlxuICAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgICAgICAgIFtmb3JtYXRWaWV3XT1cImZvcm1hdFZpZXdzLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAgW21vbnRoRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMubW9udGhcIlxuICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiY2hhbmdlTW9udGgoJGV2ZW50KVwiPlxuPC9pZ3gtbW9udGhzLXZpZXc+XG5cbjxpZ3gteWVhcnMtdmlldyAqbmdJZj1cImlzRGVjYWRlVmlld1wiXG4gICAgICAgICAgICAgICAgW0BhbmltYXRlVmlld109XCJhY3RpdmVWaWV3XCJcbiAgICAgICAgICAgICAgICAjZGVjYWRlXG4gICAgICAgICAgICAgICAgKEBhbmltYXRlVmlldy5kb25lKT1cInZpZXdSZW5kZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZV09XCJ2aWV3RGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgICAgICAgIFtmb3JtYXRWaWV3XT1cImZvcm1hdFZpZXdzLnllYXJcIlxuICAgICAgICAgICAgICAgIFt5ZWFyRm9ybWF0XT1cImZvcm1hdE9wdGlvbnMueWVhclwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cImNoYW5nZVllYXIoJGV2ZW50KVwiPlxuPC9pZ3gteWVhcnMtdmlldz5cbiJdfQ==
@@ -39,10 +39,10 @@ export class IgxCalendarYearDirective {
39
39
  onClick() {
40
40
  this.yearSelection.emit(this.value);
41
41
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarYearDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
43
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarYearDirective, isStandalone: true, selector: "[igxCalendarYear]", inputs: { value: ["igxCalendarYear", "value"], date: "date" }, outputs: { yearSelection: "yearSelection" }, host: { listeners: { "click": "onClick()" }, properties: { "class.igx-calendar__year--current": "this.currentCSS", "attr.role": "this.role", "attr.aria-valuenow": "this.valuenow", "attr.tabindex": "this.tabIndex" } }, ngImport: i0 }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarYearDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
43
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarYearDirective, isStandalone: true, selector: "[igxCalendarYear]", inputs: { value: ["igxCalendarYear", "value"], date: "date" }, outputs: { yearSelection: "yearSelection" }, host: { listeners: { "click": "onClick()" }, properties: { "class.igx-calendar__year--current": "this.currentCSS", "attr.role": "this.role", "attr.aria-valuenow": "this.valuenow", "attr.tabindex": "this.tabIndex" } }, ngImport: i0 }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarYearDirective, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarYearDirective, decorators: [{
46
46
  type: Directive,
47
47
  args: [{
48
48
  selector: '[igxCalendarYear]',
@@ -89,10 +89,10 @@ export class IgxCalendarMonthDirective {
89
89
  const date = new Date(this.value.getFullYear(), this.value.getMonth(), this.date.getDate());
90
90
  this.monthSelection.emit(date);
91
91
  }
92
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarMonthDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
93
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarMonthDirective, isStandalone: true, selector: "[igxCalendarMonth]", inputs: { value: ["igxCalendarMonth", "value"], date: "date", index: "index" }, outputs: { monthSelection: "monthSelection" }, host: { listeners: { "click": "onClick()" }, properties: { "class.igx-calendar__month--current": "this.currentCSS" } }, ngImport: i0 }); }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarMonthDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarMonthDirective, isStandalone: true, selector: "[igxCalendarMonth]", inputs: { value: ["igxCalendarMonth", "value"], date: "date", index: "index" }, outputs: { monthSelection: "monthSelection" }, host: { listeners: { "click": "onClick()" }, properties: { "class.igx-calendar__month--current": "this.currentCSS" } }, ngImport: i0 }); }
94
94
  }
95
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarMonthDirective, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarMonthDirective, decorators: [{
96
96
  type: Directive,
97
97
  args: [{
98
98
  selector: '[igxCalendarMonth]',
@@ -121,10 +121,10 @@ export class IgxCalendarHeaderTemplateDirective {
121
121
  constructor(template) {
122
122
  this.template = template;
123
123
  }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
125
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarHeaderTemplateDirective, isStandalone: true, selector: "[igxCalendarHeader]", ngImport: i0 }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
125
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarHeaderTemplateDirective, isStandalone: true, selector: "[igxCalendarHeader]", ngImport: i0 }); }
126
126
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarHeaderTemplateDirective, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarHeaderTemplateDirective, decorators: [{
128
128
  type: Directive,
129
129
  args: [{
130
130
  selector: '[igxCalendarHeader]',
@@ -138,10 +138,10 @@ export class IgxCalendarSubheaderTemplateDirective {
138
138
  constructor(template) {
139
139
  this.template = template;
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarSubheaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
142
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarSubheaderTemplateDirective, isStandalone: true, selector: "[igxCalendarSubheader]", ngImport: i0 }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarSubheaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
142
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarSubheaderTemplateDirective, isStandalone: true, selector: "[igxCalendarSubheader]", ngImport: i0 }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarSubheaderTemplateDirective, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarSubheaderTemplateDirective, decorators: [{
145
145
  type: Directive,
146
146
  args: [{
147
147
  selector: '[igxCalendarSubheader]',
@@ -200,10 +200,10 @@ export class IgxCalendarScrollMonthDirective {
200
200
  this.destroy$.next(true);
201
201
  this.destroy$.complete();
202
202
  }
203
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarScrollMonthDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Directive }); }
204
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxCalendarScrollMonthDirective, isStandalone: true, selector: "[igxCalendarScrollMonth]", inputs: { startScroll: "startScroll", stopScroll: "stopScroll" }, host: { listeners: { "mousedown": "onMouseDown()", "mouseup": "onMouseUp($event)" } }, ngImport: i0 }); }
203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarScrollMonthDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Directive }); }
204
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: IgxCalendarScrollMonthDirective, isStandalone: true, selector: "[igxCalendarScrollMonth]", inputs: { startScroll: "startScroll", stopScroll: "stopScroll" }, host: { listeners: { "mousedown": "onMouseDown()", "mouseup": "onMouseUp($event)" } }, ngImport: i0 }); }
205
205
  }
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarScrollMonthDirective, decorators: [{
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarScrollMonthDirective, decorators: [{
207
207
  type: Directive,
208
208
  args: [{
209
209
  selector: '[igxCalendarScrollMonth]',
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
220
220
  type: HostListener,
221
221
  args: ['mouseup', ['$event']]
222
222
  }] } });
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFNVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUcxRDs7R0FFRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFXakMsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFDVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFD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dXNlZCBieSB0aGUgQGxpbmsgSWd4Q2FsZW5kYXJDb21wb25lbnQuXG4gKiBFeGNlcHQgZm9yIHRoZSBkaXJlY3RpdmVzIHdoaWNoIGFyZSB1c2VkIGZvciB0ZW1wbGF0aW5nIHRoZSBjYWxlbmRhciBpdHNlbGZcbiAqIHlvdSBzaG91bGQgZ2VuZXJhbGx5IG5vdCB1c2UgdGhlbSBkaXJlY3RseS5cbiAqXG4gKiBAcHJlZmVycmVkXG4gKi9cbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgTmdab25lXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhclllYXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyWWVhckRpcmVjdGl2ZSB7XG5cbiAgICBASW5wdXQoJ2lneENhbGVuZGFyWWVhcicpXG4gICAgcHVibGljIHZhbHVlOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogRGF0ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB5ZWFyU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX3llYXItLWN1cnJlbnQnKVxuICAgIHB1YmxpYyBnZXQgY3VycmVudENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50WWVhcjtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIGdldCByb2xlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyAnc3BpbmJ1dHRvbicgOiBudWxsO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXZhbHVlbm93JylcbiAgICBwdWJsaWMgZ2V0IHZhbHVlbm93KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyAwIDogLTE7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgZ2V0IGlzQ3VycmVudFllYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy52YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb25DbGljaygpIHtcbiAgICAgICAgdGhpcy55ZWFyU2VsZWN0aW9uLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhck1vbnRoXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhck1vbnRoRGlyZWN0aXZlIHtcblxuICAgIEBJbnB1dCgnaWd4Q2FsZW5kYXJNb250aCcpXG4gICAgcHVibGljIHZhbHVlOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vbnRoU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX21vbnRoLS1jdXJyZW50JylcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNDdXJyZW50TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0TW9udGgoKSA9PT0gdGhpcy52YWx1ZS5nZXRNb250aCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb25DbGljaygpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKSwgdGhpcy52YWx1ZS5nZXRNb250aCgpLCB0aGlzLmRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy5tb250aFNlbGVjdGlvbi5lbWl0KGRhdGUpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhbGVuZGFySGVhZGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhckhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhclN1YmhlYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FsZW5kYXJTdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7IH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhbGVuZGFyU2Nyb2xsTW9udGhdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyU2Nyb2xsTW9udGhEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gbW9udGggaW5jcmVtZW50L2RlY3JlbWVudCBzdGFydHMuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RhcnRTY3JvbGw6IChrZXlkb3duPzogYm9vbGVhbikgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIG1vbnRoIGluY3JlbWVudC9kZWNyZW1lbnQgc3RvcHMuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RvcFNjcm9sbDogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgem9uZTogTmdab25lLCBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgICBwdWJsaWMgb25Nb3VzZURvd24oKSB7XG4gICAgICAgIHRoaXMuc3RhcnRTY3JvbGwoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGwoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlKCgpID0+IGludGVydmFsKDEwMCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsKGV2ZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGxhdGZvcm0uaXNBY3RpdmF0aW9uS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2UoKCkgPT4gaW50ZXJ2YWwoMTAwKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0FjdGl2YXRpb25LZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5zdGFydFNjcm9sbCh0cnVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci5kaXJlY3RpdmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFNVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUcxRDs7R0FFRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFXakMsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFDVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBR0QsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFD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dXNlZCBieSB0aGUgQGxpbmsgSWd4Q2FsZW5kYXJDb21wb25lbnQuXG4gKiBFeGNlcHQgZm9yIHRoZSBkaXJlY3RpdmVzIHdoaWNoIGFyZSB1c2VkIGZvciB0ZW1wbGF0aW5nIHRoZSBjYWxlbmRhciBpdHNlbGZcbiAqIHlvdSBzaG91bGQgZ2VuZXJhbGx5IG5vdCB1c2UgdGhlbSBkaXJlY3RseS5cbiAqXG4gKiBAcHJlZmVycmVkXG4gKi9cbmltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgTmdab25lXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCBkZWJvdW5jZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhclllYXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyWWVhckRpcmVjdGl2ZSB7XG5cbiAgICBASW5wdXQoJ2lneENhbGVuZGFyWWVhcicpXG4gICAgcHVibGljIHZhbHVlOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogRGF0ZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB5ZWFyU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX3llYXItLWN1cnJlbnQnKVxuICAgIHB1YmxpYyBnZXQgY3VycmVudENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50WWVhcjtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIGdldCByb2xlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyAnc3BpbmJ1dHRvbicgOiBudWxsO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXZhbHVlbm93JylcbiAgICBwdWJsaWMgZ2V0IHZhbHVlbm93KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcbiAgICBwdWJsaWMgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFllYXIgPyAwIDogLTE7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgZ2V0IGlzQ3VycmVudFllYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gdGhpcy52YWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb25DbGljaygpIHtcbiAgICAgICAgdGhpcy55ZWFyU2VsZWN0aW9uLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhck1vbnRoXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhck1vbnRoRGlyZWN0aXZlIHtcblxuICAgIEBJbnB1dCgnaWd4Q2FsZW5kYXJNb250aCcpXG4gICAgcHVibGljIHZhbHVlOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vbnRoU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX21vbnRoLS1jdXJyZW50JylcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNDdXJyZW50TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuZ2V0TW9udGgoKSA9PT0gdGhpcy52YWx1ZS5nZXRNb250aCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb25DbGljaygpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUuZ2V0RnVsbFllYXIoKSwgdGhpcy52YWx1ZS5nZXRNb250aCgpLCB0aGlzLmRhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy5tb250aFNlbGVjdGlvbi5lbWl0KGRhdGUpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhbGVuZGFySGVhZGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDYWxlbmRhckhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PikgeyB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hDYWxlbmRhclN1YmhlYWRlcl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Q2FsZW5kYXJTdWJoZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7IH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneENhbGVuZGFyU2Nyb2xsTW9udGhdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyU2Nyb2xsTW9udGhEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gbW9udGggaW5jcmVtZW50L2RlY3JlbWVudCBzdGFydHMuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RhcnRTY3JvbGw6IChrZXlkb3duPzogYm9vbGVhbikgPT4gdm9pZDtcblxuICAgIC8qKlxuICAgICAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIG1vbnRoIGluY3JlbWVudC9kZWNyZW1lbnQgc3RvcHMuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3RvcFNjcm9sbDogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgem9uZTogTmdab25lLCBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgICBwdWJsaWMgb25Nb3VzZURvd24oKSB7XG4gICAgICAgIHRoaXMuc3RhcnRTY3JvbGwoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uTW91c2VVcChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnN0b3BTY3JvbGwoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlKCgpID0+IGludGVydmFsKDEwMCkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2Nyb2xsKGV2ZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGxhdGZvcm0uaXNBY3RpdmF0aW9uS2V5KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2UoKCkgPT4gaW50ZXJ2YWwoMTAwKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0FjdGl2YXRpb25LZXkoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5zdGFydFNjcm9sbCh0cnVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
@@ -12,11 +12,11 @@ import * as i6 from "./calendar.directives";
12
12
  * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
13
13
  */
14
14
  export class IgxCalendarModule {
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarModule, imports: [i1.IgxCalendarComponent, i2.IgxDaysViewComponent, i3.IgxMonthsViewComponent, i4.IgxYearsViewComponent, i5.IgxMonthPickerComponent, i6.IgxCalendarHeaderTemplateDirective, i6.IgxCalendarMonthDirective, i6.IgxCalendarYearDirective, i6.IgxCalendarSubheaderTemplateDirective], exports: [i1.IgxCalendarComponent, i2.IgxDaysViewComponent, i3.IgxMonthsViewComponent, i4.IgxYearsViewComponent, i5.IgxMonthPickerComponent, i6.IgxCalendarHeaderTemplateDirective, i6.IgxCalendarMonthDirective, i6.IgxCalendarYearDirective, i6.IgxCalendarSubheaderTemplateDirective] }); }
17
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarModule }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarModule, imports: [i1.IgxCalendarComponent, i2.IgxDaysViewComponent, i3.IgxMonthsViewComponent, i4.IgxYearsViewComponent, i5.IgxMonthPickerComponent, i6.IgxCalendarHeaderTemplateDirective, i6.IgxCalendarMonthDirective, i6.IgxCalendarYearDirective, i6.IgxCalendarSubheaderTemplateDirective], exports: [i1.IgxCalendarComponent, i2.IgxDaysViewComponent, i3.IgxMonthsViewComponent, i4.IgxYearsViewComponent, i5.IgxMonthPickerComponent, i6.IgxCalendarHeaderTemplateDirective, i6.IgxCalendarMonthDirective, i6.IgxCalendarYearDirective, i6.IgxCalendarSubheaderTemplateDirective] }); }
17
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarModule }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxCalendarModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: IgxCalendarModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
27
27
  ]
28
28
  }]
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFFdkQ7OztHQUdHO0FBU0gsTUFBTSxPQUFPLGlCQUFpQjttSEFBakIsaUJBQWlCO29IQUFqQixpQkFBaUI7b0hBQWpCLGlCQUFpQjs7Z0dBQWpCLGlCQUFpQjtrQkFSN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsR0FBRyx1QkFBdUI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxHQUFHLHVCQUF1QjtxQkFDN0I7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX0NBTEVOREFSX0RJUkVDVElWRVMgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLi4uSUdYX0NBTEVOREFSX0RJUkVDVElWRVNcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgLi4uSUdYX0NBTEVOREFSX0RJUkVDVElWRVNcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyTW9kdWxlIHsgfVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFFdkQ7OztHQUdHO0FBU0gsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFSN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsR0FBRyx1QkFBdUI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxHQUFHLHVCQUF1QjtxQkFDN0I7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX0NBTEVOREFSX0RJUkVDVElWRVMgfSBmcm9tICcuL3B1YmxpY19hcGknO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIElNUE9SVEFOVDogVGhlIGZvbGxvd2luZyBpcyBOZ01vZHVsZSBleHBvcnRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgYmVmb3JlIHN0YW5kYWxvbmUgY29tcG9uZW50c1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLi4uSUdYX0NBTEVOREFSX0RJUkVDVElWRVNcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgLi4uSUdYX0NBTEVOREFSX0RJUkVDVElWRVNcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENhbGVuZGFyTW9kdWxlIHsgfVxuIl19