ontimize-web-ngx 15.7.0 → 15.7.1

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 (384) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
  2. package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
  3. package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
  4. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
  5. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
  6. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
  7. package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
  8. package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
  9. package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
  10. package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
  11. package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
  12. package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
  13. package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
  14. package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
  15. package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
  16. package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
  17. package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
  18. package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
  19. package/esm2020/lib/components/button/o-button.component.mjs +4 -4
  20. package/esm2020/lib/components/button/o-button.module.mjs +5 -5
  21. package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
  22. package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
  23. package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
  24. package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
  25. package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
  26. package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
  27. package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
  28. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
  29. package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
  30. package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
  31. package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
  32. package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
  33. package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
  34. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
  35. package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
  36. package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
  37. package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
  38. package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
  39. package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
  40. package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
  41. package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
  42. package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
  43. package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
  44. package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
  45. package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
  46. package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
  47. package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
  48. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
  49. package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
  50. package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
  51. package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
  52. package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
  53. package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
  54. package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
  55. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
  56. package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
  57. package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
  58. package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
  59. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +4 -4
  60. package/esm2020/lib/components/form/o-form.component.mjs +4 -4
  61. package/esm2020/lib/components/form/o-form.module.mjs +5 -5
  62. package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
  63. package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
  64. package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
  65. package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
  66. package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
  67. package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
  68. package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
  69. package/esm2020/lib/components/grid/o-grid.component.mjs +4 -4
  70. package/esm2020/lib/components/grid/o-grid.module.mjs +5 -5
  71. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +4 -4
  72. package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
  73. package/esm2020/lib/components/image/o-image.component.mjs +4 -4
  74. package/esm2020/lib/components/image/o-image.module.mjs +5 -5
  75. package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
  76. package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
  77. package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
  78. package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
  79. package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
  80. package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
  81. package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
  82. package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
  83. package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
  84. package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
  85. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
  86. package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
  87. package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
  88. package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
  89. package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
  90. package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
  91. package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
  92. package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
  93. package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
  94. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.component.mjs +4 -4
  95. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.directive.mjs +4 -4
  96. package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.module.mjs +5 -5
  97. package/esm2020/lib/components/input/date-range-legacy/o-daterange-picker.component.mjs +4 -4
  98. package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
  99. package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
  100. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +4 -4
  101. package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
  102. package/esm2020/lib/components/input/hour-input/index.mjs +4 -0
  103. package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +38 -9
  104. package/esm2020/lib/components/input/hour-input/o-hour-input.directive.mjs +46 -0
  105. package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +8 -7
  106. package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
  107. package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
  108. package/esm2020/lib/components/input/index.mjs +2 -3
  109. package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
  110. package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
  111. package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
  112. package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
  113. package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
  114. package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
  115. package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
  116. package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
  117. package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
  118. package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
  119. package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
  120. package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
  121. package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
  122. package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
  123. package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -4
  124. package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
  125. package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
  126. package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
  127. package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
  128. package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
  129. package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
  130. package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
  131. package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
  132. package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
  133. package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
  134. package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
  135. package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
  136. package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
  137. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
  138. package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
  139. package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
  140. package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
  141. package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
  142. package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
  143. package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
  144. package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
  145. package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
  146. package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
  147. package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
  148. package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
  149. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
  150. package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
  151. package/esm2020/lib/components/list/o-list.component.mjs +4 -4
  152. package/esm2020/lib/components/list/o-list.module.mjs +5 -5
  153. package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
  154. package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
  155. package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
  156. package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
  157. package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
  158. package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
  159. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +4 -4
  160. package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
  161. package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
  162. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
  163. package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
  164. package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
  165. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +4 -4
  166. package/esm2020/lib/components/o-service-base-component.class.mjs +15 -10
  167. package/esm2020/lib/components/o-service-component.class.mjs +7 -7
  168. package/esm2020/lib/components/o-skeleton.component.mjs +4 -4
  169. package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
  170. package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
  171. package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
  172. package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
  173. package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
  174. package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +10 -4
  175. package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
  176. package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
  177. package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +26 -12
  178. package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
  179. package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
  180. package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
  181. package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
  182. package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
  183. package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
  184. package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
  185. package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
  186. package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
  187. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +4 -4
  188. package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
  189. package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
  190. package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
  191. package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
  192. package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +137 -66
  193. package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
  194. package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
  195. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
  196. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.mjs +4 -4
  197. package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
  198. package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
  199. package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
  200. package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
  201. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
  202. package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
  203. package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +6 -6
  204. package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +11 -14
  205. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
  206. package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
  207. package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
  208. package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
  209. package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
  210. package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
  211. package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
  212. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
  213. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
  214. package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
  215. package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
  216. package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +5 -5
  217. package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
  218. package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
  219. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
  220. package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
  221. package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
  222. package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
  223. package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +10 -4
  224. package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
  225. package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
  226. package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
  227. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +19 -19
  228. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +14 -7
  229. package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
  230. package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
  231. package/esm2020/lib/components/table/index.mjs +2 -1
  232. package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
  233. package/esm2020/lib/components/table/o-table-loading.service.mjs +113 -0
  234. package/esm2020/lib/components/table/o-table.component.mjs +66 -61
  235. package/esm2020/lib/components/table/o-table.module.mjs +12 -8
  236. package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +4 -4
  237. package/esm2020/lib/components/tree/o-tree-dao.service.mjs +4 -4
  238. package/esm2020/lib/components/tree/o-tree.component.mjs +4 -4
  239. package/esm2020/lib/components/tree/o-tree.module.mjs +5 -5
  240. package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +4 -4
  241. package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
  242. package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
  243. package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
  244. package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
  245. package/esm2020/lib/config/o-modules.mjs +5 -5
  246. package/esm2020/lib/directives/input-regulate.directive.mjs +4 -4
  247. package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
  248. package/esm2020/lib/directives/locker.directive.mjs +4 -4
  249. package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
  250. package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
  251. package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
  252. package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
  253. package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
  254. package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
  255. package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
  256. package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
  257. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
  258. package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
  259. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
  260. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
  261. package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
  262. package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
  263. package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
  264. package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
  265. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
  266. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
  267. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +4 -4
  268. package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
  269. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +4 -4
  270. package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
  271. package/esm2020/lib/ontimize-web-ngx.module.mjs +5 -5
  272. package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
  273. package/esm2020/lib/pipes/is-empty-value.pipe.mjs +4 -4
  274. package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
  275. package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
  276. package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
  277. package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
  278. package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
  279. package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
  280. package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
  281. package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
  282. package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
  283. package/esm2020/lib/services/app-menu.service.mjs +4 -4
  284. package/esm2020/lib/services/appearance.service.mjs +4 -4
  285. package/esm2020/lib/services/auth-guard.service.mjs +4 -4
  286. package/esm2020/lib/services/auth.service.mjs +4 -4
  287. package/esm2020/lib/services/base-service-response.adapter.mjs +4 -4
  288. package/esm2020/lib/services/base-service.class.mjs +4 -4
  289. package/esm2020/lib/services/currency.service.mjs +4 -4
  290. package/esm2020/lib/services/dialog.service.mjs +4 -4
  291. package/esm2020/lib/services/icon.service.mjs +4 -4
  292. package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +4 -4
  293. package/esm2020/lib/services/jsonapi/jsonapi-service-response.adapter.mjs +4 -4
  294. package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +4 -4
  295. package/esm2020/lib/services/local-storage.service.mjs +4 -4
  296. package/esm2020/lib/services/login-storage.service.mjs +4 -4
  297. package/esm2020/lib/services/moment.service.mjs +4 -4
  298. package/esm2020/lib/services/navigation.service.mjs +4 -4
  299. package/esm2020/lib/services/number.service.mjs +4 -4
  300. package/esm2020/lib/services/o-auth.service.mjs +4 -4
  301. package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
  302. package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
  303. package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
  304. package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
  305. package/esm2020/lib/services/o-user-info.service.mjs +4 -4
  306. package/esm2020/lib/services/ontimize/o-preference-response.adapter.mjs +4 -4
  307. package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +4 -4
  308. package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +4 -4
  309. package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +4 -4
  310. package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +4 -4
  311. package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +4 -4
  312. package/esm2020/lib/services/ontimize/ontimize-preferences.service.mjs +4 -4
  313. package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +4 -4
  314. package/esm2020/lib/services/ontimize/ontimize.service.mjs +4 -4
  315. package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
  316. package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
  317. package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
  318. package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
  319. package/esm2020/lib/services/pagination-context.service.mjs +4 -4
  320. package/esm2020/lib/services/parser/o-service-response.parser.mjs +4 -4
  321. package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -5
  322. package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
  323. package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
  324. package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
  325. package/esm2020/lib/services/permissions/permissions.service.mjs +4 -4
  326. package/esm2020/lib/services/remote-config.service.mjs +5 -5
  327. package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +4 -4
  328. package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +4 -4
  329. package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
  330. package/esm2020/lib/services/snackbar.service.mjs +4 -4
  331. package/esm2020/lib/services/state/o-app-menu-component-state.service.mjs +4 -4
  332. package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
  333. package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
  334. package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
  335. package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
  336. package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
  337. package/esm2020/lib/services/state/o-table-component-state.class.mjs +1 -1
  338. package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
  339. package/esm2020/lib/services/state/o-tree-component-state.service.mjs +4 -4
  340. package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
  341. package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
  342. package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
  343. package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
  344. package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
  345. package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
  346. package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
  347. package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
  348. package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
  349. package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
  350. package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
  351. package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
  352. package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
  353. package/esm2020/lib/shared/shared.module.mjs +5 -5
  354. package/esm2020/lib/types/aggregate-function.type.mjs +1 -1
  355. package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
  356. package/fesm2015/ontimize-web-ngx.mjs +1582 -1283
  357. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  358. package/fesm2020/ontimize-web-ngx.mjs +1567 -1280
  359. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  360. package/lib/components/dual-list-selector/o-dual-list-selector.component.d.ts +1 -1
  361. package/lib/components/input/hour-input/index.d.ts +3 -0
  362. package/lib/components/input/hour-input/o-hour-input.component.d.ts +6 -2
  363. package/lib/components/input/hour-input/o-hour-input.directive.d.ts +8 -0
  364. package/lib/components/input/hour-input/o-hour-input.module.d.ts +5 -4
  365. package/lib/components/input/index.d.ts +1 -2
  366. package/lib/components/o-service-base-component.class.d.ts +1 -0
  367. package/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.d.ts +5 -3
  368. package/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.d.ts +2 -2
  369. package/lib/components/table/extensions/default-o-table.datasource.d.ts +6 -1
  370. package/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.d.ts +1 -1
  371. package/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.d.ts +1 -1
  372. package/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.d.ts +1 -2
  373. package/lib/components/table/extensions/o-table-strategy.service.d.ts +2 -1
  374. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -0
  375. package/lib/components/table/extensions/sort/o-mat-sort-header.d.ts +5 -3
  376. package/lib/components/table/index.d.ts +1 -0
  377. package/lib/components/table/o-table-base.class.d.ts +3 -1
  378. package/lib/components/table/o-table-loading.service.d.ts +28 -0
  379. package/lib/components/table/o-table.component.d.ts +3 -1
  380. package/lib/components/table/o-table.module.d.ts +2 -1
  381. package/lib/services/state/o-table-component-state.class.d.ts +1 -1
  382. package/lib/types/aggregate-function.type.d.ts +2 -1
  383. package/lib/types/table/o-table-global-config.type.d.ts +4 -0
  384. package/package.json +2 -2
@@ -120,8 +120,8 @@ export class OTableCellEditorBooleanComponent extends OBaseTableCellEditor {
120
120
  this.commitEdition();
121
121
  }
122
122
  }
123
- OTableCellEditorBooleanComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorBooleanComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
124
- OTableCellEditorBooleanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableCellEditorBooleanComponent, selector: "o-table-cell-editor-boolean", inputs: { indeterminateOnNull: ["indeterminate-on-null", "indeterminateOnNull"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], autoCommit: ["auto-commit", "autoCommit"] }, viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-boolean o-table-cell-editor\" [formGroup]=\"formGroup\">\n <mat-checkbox #checkbox (click)=\"$event.stopPropagation()\" (change)=\"onChange($event)\" [indeterminate]=\"indeterminate\"\n [formControl]=\"formControl\" [class.hidden-checkbox]=\"autoCommit\">\n </mat-checkbox>\n </div>\n</ng-template>", styles: [".o-table-cell-editor-boolean{height:100%;display:flex;align-items:center;justify-content:center}.o-table-cell-editor-boolean .mat-mdc-checkbox-ripple,.o-table-cell-editor-boolean .mat-mdc-checkbox.hidden-checkbox{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
123
+ OTableCellEditorBooleanComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorBooleanComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
124
+ OTableCellEditorBooleanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellEditorBooleanComponent, selector: "o-table-cell-editor-boolean", inputs: { indeterminateOnNull: ["indeterminate-on-null", "indeterminateOnNull"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], autoCommit: ["auto-commit", "autoCommit"] }, viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-boolean o-table-cell-editor\" [formGroup]=\"formGroup\">\n <mat-checkbox #checkbox (click)=\"$event.stopPropagation()\" (change)=\"onChange($event)\" [indeterminate]=\"indeterminate\"\n [formControl]=\"formControl\" [class.hidden-checkbox]=\"autoCommit\">\n </mat-checkbox>\n </div>\n</ng-template>", styles: [".o-table-cell-editor-boolean{height:100%;display:flex;align-items:center;justify-content:center}.o-table-cell-editor-boolean .mat-mdc-checkbox-ripple,.o-table-cell-editor-boolean .mat-mdc-checkbox.hidden-checkbox{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
125
125
  __decorate([
126
126
  BooleanInputConverter(),
127
127
  __metadata("design:type", Boolean)
@@ -130,11 +130,11 @@ __decorate([
130
130
  BooleanInputConverter(),
131
131
  __metadata("design:type", Boolean)
132
132
  ], OTableCellEditorBooleanComponent.prototype, "autoCommit", void 0);
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorBooleanComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorBooleanComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'o-table-cell-editor-boolean', inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_BOOLEAN, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-boolean o-table-cell-editor\" [formGroup]=\"formGroup\">\n <mat-checkbox #checkbox (click)=\"$event.stopPropagation()\" (change)=\"onChange($event)\" [indeterminate]=\"indeterminate\"\n [formControl]=\"formControl\" [class.hidden-checkbox]=\"autoCommit\">\n </mat-checkbox>\n </div>\n</ng-template>", styles: [".o-table-cell-editor-boolean{height:100%;display:flex;align-items:center;justify-content:center}.o-table-cell-editor-boolean .mat-mdc-checkbox-ripple,.o-table-cell-editor-boolean .mat-mdc-checkbox.hidden-checkbox{display:none}\n"] }]
136
136
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { templateref: [{
137
137
  type: ViewChild,
138
138
  args: ['templateref', { read: TemplateRef, static: true }]
139
139
  }], indeterminateOnNull: [], autoCommit: [] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1ib29sZWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9ib29sZWFuL28tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvYm9vbGVhbi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHO0lBQ3hELDRDQUE0QztJQUU1Qyx1QkFBdUI7SUFFdkIseUJBQXlCO0lBRXpCLDJCQUEyQjtJQUMzQix5QkFBeUI7Q0FDMUIsQ0FBQztBQVdGLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxvQkFBb0I7SUFnQnhFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFaeEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFHL0Isd0JBQW1CLEdBQVks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QVUsQ0FBQztRQUM1RCxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsS0FBSyxRQUFRO2dCQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFzQjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OzZIQS9IVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx5WkFFVCxXQUFXLGtFQzdCL0MsNmFBTWM7QUQyQlo7SUFBQyxxQkFBcUIsRUFBRTs7NkVBQ2E7QUFNckM7SUFBQyxxQkFBcUIsRUFBRTs7b0VBQ0c7MkZBZGhCLGdDQUFnQztrQkFUNUMsU0FBUzsrQkFDRSw2QkFBNkIsVUFHL0IsMENBQTBDLG1CQUNqQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOytGQUtpQyxXQUFXO3NCQUFoRixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLN0QsbUJBQW1CLE1BT25CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Jhc2VUYWJsZUNlbGxFZGl0b3IgfSBmcm9tICcuLi9vLWJhc2UtdGFibGUtY2VsbC1lZGl0b3IuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX0VESVRPUl9CT09MRUFOID0gW1xuICAnaW5kZXRlcm1pbmF0ZU9uTnVsbDogaW5kZXRlcm1pbmF0ZS1vbi1udWxsJyxcbiAgLy8gdHJ1ZS12YWx1ZTogdHJ1ZSB2YWx1ZS4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3RydWVWYWx1ZTogdHJ1ZS12YWx1ZScsXG4gIC8vIGZhbHNlLXZhbHVlOiBmYWxzZSB2YWx1ZS4gRGVmYXVsdDogZmFsc2UuXG4gICdmYWxzZVZhbHVlOiBmYWxzZS12YWx1ZScsXG4gIC8vIGJvb2xlYW4tdHlwZSBbbnVtYmVyfGJvb2xlYW58c3RyaW5nXTogY2VsbERhdGEgdmFsdWUgdHlwZS4gRGVmYXVsdDogYm9vbGVhblxuICAnYm9vbGVhblR5cGU6IGJvb2xlYW4tdHlwZScsXG4gICdhdXRvQ29tbWl0OiBhdXRvLWNvbW1pdCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0JPT0xFQU4sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckJvb2xlYW5Db21wb25lbnQgZXh0ZW5kcyBPQmFzZVRhYmxlQ2VsbEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgaW5kZXRlcm1pbmF0ZU9uTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICB0cnVlVmFsdWU6IGFueTtcbiAgZmFsc2VWYWx1ZTogYW55O1xuXG4gIHByb3RlY3RlZCBfYm9vbGVhblR5cGU6IHN0cmluZyA9ICdib29sZWFuJztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXV0b0NvbW1pdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMucGFyc2VJbnB1dHMoKTtcbiAgfVxuXG4gIGdldCBib29sZWFuVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib29sZWFuVHlwZTtcbiAgfVxuXG4gIHNldCBib29sZWFuVHlwZShhcmc6IHN0cmluZykge1xuICAgIGFyZyA9IChhcmcgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKFsnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnc3RyaW5nJ10uaW5kZXhPZihhcmcpID09PSAtMSkge1xuICAgICAgYXJnID0gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICB0aGlzLl9ib29sZWFuVHlwZSA9IGFyZztcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUlucHV0cygpIHtcbiAgICBzd2l0Y2ggKHRoaXMuYm9vbGVhblR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHRoaXMucGFyc2VTdHJpbmdJbnB1dHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICB0aGlzLnBhcnNlTnVtYmVySW5wdXRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy50cnVlVmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLmZhbHNlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlU3RyaW5nSW5wdXRzKCkge1xuICAgIGlmICgodGhpcy50cnVlVmFsdWUgfHwgJycpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50cnVlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICgodGhpcy5mYWxzZVZhbHVlIHx8ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmFsc2VWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VOdW1iZXJJbnB1dHMoKSB7XG4gICAgdGhpcy50cnVlVmFsdWUgPSBwYXJzZUludCh0aGlzLnRydWVWYWx1ZSwgMTApO1xuICAgIGlmIChpc05hTih0aGlzLnRydWVWYWx1ZSkpIHtcbiAgICAgIHRoaXMudHJ1ZVZhbHVlID0gMTtcbiAgICB9XG4gICAgdGhpcy5mYWxzZVZhbHVlID0gcGFyc2VJbnQodGhpcy5mYWxzZVZhbHVlLCAxMCk7XG4gICAgaWYgKGlzTmFOKHRoaXMuZmFsc2VWYWx1ZSkpIHtcbiAgICAgIHRoaXMuZmFsc2VWYWx1ZSA9IDA7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRFZGl0aW9uKGRhdGE6IGFueSkge1xuICAgIHN1cGVyLnN0YXJ0RWRpdGlvbihkYXRhKTtcbiAgICAvLyB1c2luZyBzZXRUaW1lb3V0IHRvIGZvcmNlIHRoaXMgY29kZSBleGVjdXRpb24gYWZ0ZXIgc3VwZXIuYWN0aXZhdGVDb2x1bW5FZGl0aW9uIGNvbHVtbi5lZGl0aW5nID0gdHJ1ZSBsaW5lXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpc0N1cnJlbnRWYWx1ZVRydWUgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gdGhpcy50cnVlVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuYXV0b0NvbW1pdCkge1xuICAgICAgICAvLyBUb2dnbGluZyB2YWx1ZSAoYXV0b2NvbW1taXQgY2hhbmdlcyBjb21wb25lbnQgdmFsdWUgd2l0aG91dCBubyBmdXJ0aGVyIHVzZXIgaW50ZXJhY3Rpb24pXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaXNDdXJyZW50VmFsdWVUcnVlID8gdGhpcy5mYWxzZVZhbHVlIDogdGhpcy50cnVlVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jb21taXRFZGl0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGlzQ3VycmVudFZhbHVlVHJ1ZSA/IHRoaXMudHJ1ZVZhbHVlIDogdGhpcy5mYWxzZVZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRDZWxsRGF0YSgpIHtcbiAgICBsZXQgY2VsbERhdGEgPSBzdXBlci5nZXRDZWxsRGF0YSgpO1xuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuaW5kZXRlcm1pbmF0ZU9uTnVsbCAmJiAhVXRpbC5pc0RlZmluZWQoY2VsbERhdGEpO1xuICAgIGlmICghdGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICBjZWxsRGF0YSA9IHRoaXMucGFyc2VWYWx1ZUJ5VHlwZShjZWxsRGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBjZWxsRGF0YTtcbiAgfVxuXG4gIGhhc0NlbGxEYXRhVHJ1ZVZhbHVlKGNlbGxEYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjZWxsRGF0YSkpIHtcbiAgICAgIHJlc3VsdCA9IChjZWxsRGF0YSA9PT0gdGhpcy50cnVlVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuYm9vbGVhblR5cGUgPT09ICdzdHJpbmcnICYmICFVdGlsLmlzRGVmaW5lZCh0aGlzLnRydWVWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gVXRpbC5wYXJzZUJvb2xlYW4oY2VsbERhdGEsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVZhbHVlQnlUeXBlKHZhbDogYW55KTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHZhbDtcbiAgICBjb25zdCBjZWxsSXNUcnVlID0gdGhpcy5oYXNDZWxsRGF0YVRydWVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IHZhbHVlID0gY2VsbElzVHJ1ZSA/IHRoaXMudHJ1ZVZhbHVlIDogdGhpcy5mYWxzZVZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5ib29sZWFuVHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmVzdWx0ID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uQ2hhbmdlKGFyZzogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGFyZy5jaGVja2VkID8gdGhpcy50cnVlVmFsdWUgOiB0aGlzLmZhbHNlVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLmNvbW1pdEVkaXRpb24oKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cIm8tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbiBvLXRhYmxlLWNlbGwtZWRpdG9yXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICA8bWF0LWNoZWNrYm94ICNjaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbY2xhc3MuaGlkZGVuLWNoZWNrYm94XT1cImF1dG9Db21taXRcIj5cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1ib29sZWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9ib29sZWFuL28tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvYm9vbGVhbi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHO0lBQ3hELDRDQUE0QztJQUU1Qyx1QkFBdUI7SUFFdkIseUJBQXlCO0lBRXpCLDJCQUEyQjtJQUMzQix5QkFBeUI7Q0FDMUIsQ0FBQztBQVdGLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxvQkFBb0I7SUFnQnhFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFaeEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFHL0Isd0JBQW1CLEdBQVks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QVUsQ0FBQztRQUM1RCxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEIsS0FBSyxRQUFRO2dCQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFzQjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OzhIQS9IVSxnQ0FBZ0M7a0hBQWhDLGdDQUFnQyx5WkFFVCxXQUFXLGtFQzdCL0MsNmFBTWM7QUQyQlo7SUFBQyxxQkFBcUIsRUFBRTs7NkVBQ2E7QUFNckM7SUFBQyxxQkFBcUIsRUFBRTs7b0VBQ0c7NEZBZGhCLGdDQUFnQztrQkFUNUMsU0FBUzsrQkFDRSw2QkFBNkIsVUFHL0IsMENBQTBDLG1CQUNqQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOytGQUtpQyxXQUFXO3NCQUFoRixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLN0QsbUJBQW1CLE1BT25CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Jhc2VUYWJsZUNlbGxFZGl0b3IgfSBmcm9tICcuLi9vLWJhc2UtdGFibGUtY2VsbC1lZGl0b3IuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX0VESVRPUl9CT09MRUFOID0gW1xuICAnaW5kZXRlcm1pbmF0ZU9uTnVsbDogaW5kZXRlcm1pbmF0ZS1vbi1udWxsJyxcbiAgLy8gdHJ1ZS12YWx1ZTogdHJ1ZSB2YWx1ZS4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3RydWVWYWx1ZTogdHJ1ZS12YWx1ZScsXG4gIC8vIGZhbHNlLXZhbHVlOiBmYWxzZSB2YWx1ZS4gRGVmYXVsdDogZmFsc2UuXG4gICdmYWxzZVZhbHVlOiBmYWxzZS12YWx1ZScsXG4gIC8vIGJvb2xlYW4tdHlwZSBbbnVtYmVyfGJvb2xlYW58c3RyaW5nXTogY2VsbERhdGEgdmFsdWUgdHlwZS4gRGVmYXVsdDogYm9vbGVhblxuICAnYm9vbGVhblR5cGU6IGJvb2xlYW4tdHlwZScsXG4gICdhdXRvQ29tbWl0OiBhdXRvLWNvbW1pdCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWJvb2xlYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0JPT0xFQU4sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckJvb2xlYW5Db21wb25lbnQgZXh0ZW5kcyBPQmFzZVRhYmxlQ2VsbEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgaW5kZXRlcm1pbmF0ZU9uTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICB0cnVlVmFsdWU6IGFueTtcbiAgZmFsc2VWYWx1ZTogYW55O1xuXG4gIHByb3RlY3RlZCBfYm9vbGVhblR5cGU6IHN0cmluZyA9ICdib29sZWFuJztcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXV0b0NvbW1pdDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKSB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMucGFyc2VJbnB1dHMoKTtcbiAgfVxuXG4gIGdldCBib29sZWFuVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib29sZWFuVHlwZTtcbiAgfVxuXG4gIHNldCBib29sZWFuVHlwZShhcmc6IHN0cmluZykge1xuICAgIGFyZyA9IChhcmcgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKFsnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnc3RyaW5nJ10uaW5kZXhPZihhcmcpID09PSAtMSkge1xuICAgICAgYXJnID0gJ2Jvb2xlYW4nO1xuICAgIH1cbiAgICB0aGlzLl9ib29sZWFuVHlwZSA9IGFyZztcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUlucHV0cygpIHtcbiAgICBzd2l0Y2ggKHRoaXMuYm9vbGVhblR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHRoaXMucGFyc2VTdHJpbmdJbnB1dHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICB0aGlzLnBhcnNlTnVtYmVySW5wdXRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy50cnVlVmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLmZhbHNlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlU3RyaW5nSW5wdXRzKCkge1xuICAgIGlmICgodGhpcy50cnVlVmFsdWUgfHwgJycpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50cnVlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICgodGhpcy5mYWxzZVZhbHVlIHx8ICcnKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmFsc2VWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VOdW1iZXJJbnB1dHMoKSB7XG4gICAgdGhpcy50cnVlVmFsdWUgPSBwYXJzZUludCh0aGlzLnRydWVWYWx1ZSwgMTApO1xuICAgIGlmIChpc05hTih0aGlzLnRydWVWYWx1ZSkpIHtcbiAgICAgIHRoaXMudHJ1ZVZhbHVlID0gMTtcbiAgICB9XG4gICAgdGhpcy5mYWxzZVZhbHVlID0gcGFyc2VJbnQodGhpcy5mYWxzZVZhbHVlLCAxMCk7XG4gICAgaWYgKGlzTmFOKHRoaXMuZmFsc2VWYWx1ZSkpIHtcbiAgICAgIHRoaXMuZmFsc2VWYWx1ZSA9IDA7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRFZGl0aW9uKGRhdGE6IGFueSkge1xuICAgIHN1cGVyLnN0YXJ0RWRpdGlvbihkYXRhKTtcbiAgICAvLyB1c2luZyBzZXRUaW1lb3V0IHRvIGZvcmNlIHRoaXMgY29kZSBleGVjdXRpb24gYWZ0ZXIgc3VwZXIuYWN0aXZhdGVDb2x1bW5FZGl0aW9uIGNvbHVtbi5lZGl0aW5nID0gdHJ1ZSBsaW5lXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpc0N1cnJlbnRWYWx1ZVRydWUgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gdGhpcy50cnVlVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuYXV0b0NvbW1pdCkge1xuICAgICAgICAvLyBUb2dnbGluZyB2YWx1ZSAoYXV0b2NvbW1taXQgY2hhbmdlcyBjb21wb25lbnQgdmFsdWUgd2l0aG91dCBubyBmdXJ0aGVyIHVzZXIgaW50ZXJhY3Rpb24pXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoaXNDdXJyZW50VmFsdWVUcnVlID8gdGhpcy5mYWxzZVZhbHVlIDogdGhpcy50cnVlVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5jb21taXRFZGl0aW9uKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGlzQ3VycmVudFZhbHVlVHJ1ZSA/IHRoaXMudHJ1ZVZhbHVlIDogdGhpcy5mYWxzZVZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXRDZWxsRGF0YSgpIHtcbiAgICBsZXQgY2VsbERhdGEgPSBzdXBlci5nZXRDZWxsRGF0YSgpO1xuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuaW5kZXRlcm1pbmF0ZU9uTnVsbCAmJiAhVXRpbC5pc0RlZmluZWQoY2VsbERhdGEpO1xuICAgIGlmICghdGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICBjZWxsRGF0YSA9IHRoaXMucGFyc2VWYWx1ZUJ5VHlwZShjZWxsRGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBjZWxsRGF0YTtcbiAgfVxuXG4gIGhhc0NlbGxEYXRhVHJ1ZVZhbHVlKGNlbGxEYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjZWxsRGF0YSkpIHtcbiAgICAgIHJlc3VsdCA9IChjZWxsRGF0YSA9PT0gdGhpcy50cnVlVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuYm9vbGVhblR5cGUgPT09ICdzdHJpbmcnICYmICFVdGlsLmlzRGVmaW5lZCh0aGlzLnRydWVWYWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gVXRpbC5wYXJzZUJvb2xlYW4oY2VsbERhdGEsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVZhbHVlQnlUeXBlKHZhbDogYW55KTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHZhbDtcbiAgICBjb25zdCBjZWxsSXNUcnVlID0gdGhpcy5oYXNDZWxsRGF0YVRydWVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IHZhbHVlID0gY2VsbElzVHJ1ZSA/IHRoaXMudHJ1ZVZhbHVlIDogdGhpcy5mYWxzZVZhbHVlO1xuICAgIHN3aXRjaCAodGhpcy5ib29sZWFuVHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmVzdWx0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgcmVzdWx0ID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uQ2hhbmdlKGFyZzogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGFyZy5jaGVja2VkID8gdGhpcy50cnVlVmFsdWUgOiB0aGlzLmZhbHNlVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLmNvbW1pdEVkaXRpb24oKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cIm8tdGFibGUtY2VsbC1lZGl0b3ItYm9vbGVhbiBvLXRhYmxlLWNlbGwtZWRpdG9yXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICA8bWF0LWNoZWNrYm94ICNjaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW2luZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIiBbY2xhc3MuaGlkZGVuLWNoZWNrYm94XT1cImF1dG9Db21taXRcIj5cbiAgICA8L21hdC1jaGVja2JveD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -182,15 +182,15 @@ export class OTableCellEditorDateComponent extends OBaseTableCellEditor {
182
182
  }
183
183
  }
184
184
  }
185
- OTableCellEditorDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorDateComponent, deps: [{ token: i0.Injector }, { token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Component });
186
- OTableCellEditorDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableCellEditorDateComponent, selector: "o-table-cell-editor-date", inputs: { format: "format", locale: "locale", oStartView: ["start-view", "oStartView"], min: "min", max: "max", oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"] }, providers: [
185
+ OTableCellEditorDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorDateComponent, deps: [{ token: i0.Injector }, { token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Component });
186
+ OTableCellEditorDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellEditorDateComponent, selector: "o-table-cell-editor-date", inputs: { format: "format", locale: "locale", oStartView: ["start-view", "oStartView"], min: "min", max: "max", oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"] }, providers: [
187
187
  { provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }
188
188
  ], viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div [formGroup]=\"formGroup\" class=\"o-table-cell-editor-date o-table-cell-editor\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput [id]=\"cellEditorId\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n [required]=\"orequired\" [matDatepicker]=\"d\" [matDatepickerFilter]=\"filterDate\"\n (dateChange)=\"onDateChange($event)\" [min]=\"oMinDate\" [max]=\"oMaxDate\">\n\n <mat-datepicker #d [startView]=\"oStartView\" [startAt]=\"oStartAt\" [touchUi]=\"oTouchUi\" (closed)=\"onClosed()\">\n </mat-datepicker>\n\n <span class=\"icon-btn\" (click)=\"openDatepicker(d)\" matSuffix>\n <mat-icon svgIcon=\"ontimize:today\"></mat-icon>\n </span>\n\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('matDatepickerParse')\">\n {{ 'FORM_VALIDATION.DATE_PARSE' | oTranslate }} {{ format }}\n </mat-error>\n <mat-error *oMatError=\"hasError('matDatepickerFilter')\">\n {{ 'FORM_VALIDATION.DATE_FILTER' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('matDatepickerMin')\">\n {{ 'FORM_VALIDATION.DATE_MIN' | oTranslate }} {{ minDateString }}\n </mat-error>\n <mat-error *oMatError=\"hasError('matDatepickerMax')\">\n {{ 'FORM_VALIDATION.DATE_MAX' | oTranslate }} {{ maxDateString }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i10.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
189
189
  __decorate([
190
190
  BooleanInputConverter(),
191
191
  __metadata("design:type", Boolean)
192
192
  ], OTableCellEditorDateComponent.prototype, "oTouchUi", void 0);
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorDateComponent, decorators: [{
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorDateComponent, decorators: [{
194
194
  type: Component,
195
195
  args: [{ selector: 'o-table-cell-editor-date', inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_DATE, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
196
196
  { provide: DateAdapter, useClass: OntimizeMomentDateAdapter, deps: [MAT_DATE_LOCALE] }
@@ -199,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
199
199
  type: ViewChild,
200
200
  args: ['templateref', { read: TemplateRef, static: true }]
201
201
  }], oTouchUi: [] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9kYXRlL28tdGFibGUtY2VsbC1lZGl0b3ItZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZGF0ZS9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBRzdHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHO0lBQ3JELFFBQVE7SUFDUixRQUFRO0lBQ1Isd0JBQXdCO0lBQ3hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFJekIsZ0NBQWdDO0NBQ2pDLENBQUM7QUFlRixNQUFNLE9BQU8sNkJBQThCLFNBQVEsb0JBQW9CO0lBd0JyRSxZQUNZLFFBQWtCLEVBQ2xCLGlCQUF5RDtRQUVuRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFITixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBd0M7UUF0QnJFLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFFckIsZUFBVSxHQUFxQixPQUFPLENBQUM7UUFJdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixtQkFBYyxHQUFtQixXQUFXLENBQUM7UUFnQjNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUF5QixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEQ7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDO0lBRVMsV0FBVyxDQUFDLEtBQW9CO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN6QjthQUFNO1lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQztZQUNOLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDMUIsS0FBSyxRQUFRO29CQUNYLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0IsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQztnQkFDaEIsS0FBSyxXQUFXLENBQUM7Z0JBQ2pCO29CQUNFLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLE1BQU07YUFDVDtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckIsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyQjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhO1FBRVgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0M7U0FDRjtJQUNILENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsUUFBUSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzFCLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQztZQUNqQjtnQkFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNO1NBQ1Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQW1DO1FBQzlDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RSxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUM7WUFDakI7Z0JBQ0UsTUFBTTtTQUNUO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLHFCQUFxQixFQUFFLEtBQUs7WUFDNUIsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUFzQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7MEhBMUxVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLDJVQUw3QjtRQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDdkYsaUhBS2lDLFdBQVcsa0VDM0MvQyw4NERBd0NBO0FEVUU7SUFBQyxxQkFBcUIsRUFBRTs7K0RBQ0U7MkZBVmYsNkJBQTZCO2tCQVp6QyxTQUFTOytCQUNFLDBCQUEwQixVQUc1Qix1Q0FBdUMsaUJBQ2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtxQkFDdkY7eUhBS3FFLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVE3RCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1vbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9tb21lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21hdGVyaWFsL2RhdGUvb250aW1pemUtbW9tZW50LWRhdGUtYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbEVkaXRvciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0RBVEUgPSBbXG4gICdmb3JtYXQnLFxuICAnbG9jYWxlJyxcbiAgJ29TdGFydFZpZXc6IHN0YXJ0LXZpZXcnLFxuICAnbWluJyxcbiAgJ21heCcsXG4gICdvVG91Y2hVaTogdG91Y2gtdWknLFxuICAnc3RhcnRBdDogc3RhcnQtYXQnLFxuICAnZmlsdGVyRGF0ZTogZmlsdGVyLWRhdGUnLFxuICAvLyB2YWx1ZS10eXBlIFt0aW1lc3RhbXB8c3RyaW5nXTogdHlwZSBtdXN0IGJlIGRlZmluZWQgdG8gYmUgYWJsZSB0byBzYXZlIGl0cyB2YWx1ZSxcbiAgLy8gZS5nLiBjbGFzc2ljIG9udGltaXplIHNlcnZlciBkYXRlcyBjb21lIGFzIHRpbWVzdGFtcHMgKG51bWJlciksIGJ1dCB0byBiZSBhYmxlIHRvIHNhdmUgdGhlbSB0aGV5IGhhdmUgdG8gYmUgc2VuZCBhcyBzdHJpbmdzIHdpdGhcbiAgLy8gdGhlIGZvcm1hdCAnWVlZWS1NTS1ERCBISDptbTpzcydEZWZhdWx0OiB0aW1lc3RhbXAuXG4gICdkYXRlVmFsdWVUeXBlOiBkYXRlLXZhbHVlLXR5cGUnXG5dO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0RBVEUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogT250aW1pemVNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfVxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckRhdGVDb21wb25lbnQgZXh0ZW5kcyBPQmFzZVRhYmxlQ2VsbEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGZvcm1hdDogc3RyaW5nID0gJ0wnO1xuICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmc7XG4gIG9TdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgPSAnbW9udGgnO1xuICBwcm90ZWN0ZWQgbWluOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBtYXg6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIG9Ub3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdGFydEF0OiBzdHJpbmc7XG4gIGZpbHRlckRhdGU6IERhdGVGaWx0ZXJGdW5jdGlvbjtcbiAgX2RhdGVWYWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgb1N0YXJ0QXQ6IERhdGU7XG4gIG9NaW5EYXRlOiBEYXRlO1xuICBvTWF4RGF0ZTogRGF0ZTtcblxuICBwcml2YXRlIG1vbWVudFNydjogTW9tZW50U2VydmljZTtcbiAgbWluRGF0ZVN0cmluZzogc3RyaW5nO1xuICBtYXhEYXRlU3RyaW5nOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8RGF0ZT47XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG1vbWVudERhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyPlxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy5tb21lbnRTcnYgPSB0aGlzLmluamVjdG9yLmdldChNb21lbnRTZXJ2aWNlKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5tb21lbnRTcnYuZ2V0TG9jYWxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1hdCkge1xuICAgICAgKHRoaXMubW9tZW50RGF0ZUFkYXB0ZXIgYXMgYW55KS5vRm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gICAgfVxuXG4gICAgdGhpcy5tb21lbnREYXRlQWRhcHRlci5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIGlmICh0aGlzLnN0YXJ0QXQpIHtcbiAgICAgIHRoaXMub1N0YXJ0QXQgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0QXQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1pbikge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMubWluKTtcbiAgICAgIGNvbnN0IG1vbWVudEQgPSBtb21lbnQoZGF0ZSk7XG4gICAgICBpZiAobW9tZW50RC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5vTWluRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMubWluRGF0ZVN0cmluZyA9IG1vbWVudEQuZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXgpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1heCk7XG4gICAgICBjb25zdCBtb21lbnREID0gbW9tZW50KGRhdGUpO1xuICAgICAgaWYgKG1vbWVudEQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHRoaXMub01heERhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLm1heERhdGVTdHJpbmcgPSBtb21lbnRELmZvcm1hdCh0aGlzLmZvcm1hdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qgb0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uLmF0dHIpO1xuICAgIGlmICghb0NvbHVtbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW9Db2x1bW4uZWRpdGluZyAmJiB0aGlzLmRhdGVwaWNrZXIgJiYgdGhpcy5kYXRlcGlja2VyLm9wZW5lZCkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLmhhbmRsZUtleXVwKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBzdGFydEVkaXRpb24oZGF0YTogYW55KSB7XG4gICAgc3VwZXIuc3RhcnRFZGl0aW9uKGRhdGEpO1xuICAgIGlmICghdGhpcy5zdGFydEF0KSB7XG4gICAgICB0aGlzLm9TdGFydEF0ID0gdGhpcy5nZXRDZWxsRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxEYXRhKCk6IGFueSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdXBlci5nZXRDZWxsRGF0YSgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGxldCBtO1xuICAgICAgc3dpdGNoICh0aGlzLmRhdGVWYWx1ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBtID0gbW9tZW50KHZhbHVlLCB0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIGNhc2UgJ3RpbWVzdGFtcCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbSA9IG1vbWVudCh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbW1pdEVkaXRpb24oKSB7XG4gICAgLy8gIXRoaXMuZGF0ZXBpY2tlci5vcGVuZWQgJiZcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdO1xuICAgICAgdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl0gPSB0aGlzLmdldFZhbHVlQnlWYWx5VHlwZSgpO1xuICAgICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICAgIHRoaXMuZW5kRWRpdGlvbih0cnVlKTtcbiAgICAgICAgdGhpcy5lZGl0aW9uQ29tbWl0dGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlQnlWYWx5VHlwZSgpOiBhbnkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICAgIGNvbnN0IG0gPSBtb21lbnQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XG4gICAgc3dpdGNoICh0aGlzLmRhdGVWYWx1ZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJlc3VsdCA9IG0uZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUocmVzdWx0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIHJlc3VsdCA9IG0udG9JU09TdHJpbmcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzdWx0ID0gbS52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGV2ZW50LnZhbHVlICYmIGV2ZW50LnZhbHVlLmlzVmFsaWQgJiYgZXZlbnQudmFsdWUuaXNWYWxpZCgpO1xuICAgIGxldCB2YWwgPSBpc1ZhbGlkID8gZXZlbnQudmFsdWUudmFsdWVPZigpIDogZXZlbnQudmFsdWU7XG4gICAgY29uc3QgbSA9IG1vbWVudCh2YWwpO1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVmFsdWVUeXBlKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgdmFsID0gbS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHZhbCA9IG5ldyBEYXRlKHZhbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNvLTg2MDEnOlxuICAgICAgICB2YWwgPSBtLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsLCB7XG4gICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgb3BlbkRhdGVwaWNrZXIoZDogTWF0RGF0ZXBpY2tlcjxEYXRlPikge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGQ7XG4gICAgZC5vcGVuKCk7XG4gIH1cblxuICBzZXQgZGF0ZVZhbHVlVHlwZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX2RhdGVWYWx1ZVR5cGUgPSBVdGlsLmNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbCk7XG4gIH1cblxuICBnZXQgZGF0ZVZhbHVlVHlwZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kYXRlVmFsdWVUeXBlO1xuICB9XG5cbiAgb25DbG9zZWQoKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwiby10YWJsZS1jZWxsLWVkaXRvci1kYXRlIG8tdGFibGUtY2VsbC1lZGl0b3JcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIlxuICAgIFttYXRUb29sdGlwQ2xhc3NdPVwidG9vbHRpcENsYXNzXCJcbiAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXG4gICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXG4gICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjZGtGb2N1c0luaXRpYWw+XG4gICAgICA8aW5wdXQgI2lucHV0IG1hdElucHV0IFtpZF09XCJjZWxsRWRpdG9ySWRcIiBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJvcmVxdWlyZWRcIiBbbWF0RGF0ZXBpY2tlcl09XCJkXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVwiXG4gICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCIgW21pbl09XCJvTWluRGF0ZVwiIFttYXhdPVwib01heERhdGVcIj5cblxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkIFtzdGFydFZpZXddPVwib1N0YXJ0Vmlld1wiIFtzdGFydEF0XT1cIm9TdGFydEF0XCIgW3RvdWNoVWldPVwib1RvdWNoVWlcIiAoY2xvc2VkKT1cIm9uQ2xvc2VkKClcIj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1idG5cIiAoY2xpY2spPVwib3BlbkRhdGVwaWNrZXIoZClcIiBtYXRTdWZmaXg+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6dG9kYXlcIj48L21hdC1pY29uPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJQYXJzZScpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9QQVJTRScgfCBvVHJhbnNsYXRlIH19IHt7IGZvcm1hdCB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF0RGF0ZXBpY2tlckZpbHRlcicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9GSUxURVInIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9NSU4nIHwgb1RyYW5zbGF0ZSB9fSB7eyBtaW5EYXRlU3RyaW5nIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFX01BWCcgfCBvVHJhbnNsYXRlIH19IHt7IG1heERhdGVTdHJpbmcgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgb0Vycm9yIG9mIGdldEFjdGl2ZU9FcnJvcnMoKVwiPlxuICAgICAgICB7eyBnZXRFcnJvclRleHQob0Vycm9yKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9kYXRlL28tdGFibGUtY2VsbC1lZGl0b3ItZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZGF0ZS9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBRzdHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHO0lBQ3JELFFBQVE7SUFDUixRQUFRO0lBQ1Isd0JBQXdCO0lBQ3hCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFJekIsZ0NBQWdDO0NBQ2pDLENBQUM7QUFlRixNQUFNLE9BQU8sNkJBQThCLFNBQVEsb0JBQW9CO0lBd0JyRSxZQUNZLFFBQWtCLEVBQ2xCLGlCQUF5RDtRQUVuRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFITixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBd0M7UUF0QnJFLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFFckIsZUFBVSxHQUFxQixPQUFPLENBQUM7UUFJdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixtQkFBYyxHQUFtQixXQUFXLENBQUM7UUFnQjNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVU7UUFDUixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUF5QixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEQ7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDO0lBRVMsV0FBVyxDQUFDLEtBQW9CO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN6QjthQUFNO1lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUztRQUNwQixLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQztZQUNOLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDMUIsS0FBSyxRQUFRO29CQUNYLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0IsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsTUFBTTtnQkFDUixLQUFLLFVBQVUsQ0FBQztnQkFDaEIsS0FBSyxXQUFXLENBQUM7Z0JBQ2pCO29CQUNFLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLE1BQU07YUFDVDtZQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckIsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNyQjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhO1FBRVgsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0M7U0FDRjtJQUNILENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsUUFBUSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzFCLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQztZQUNqQjtnQkFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixNQUFNO1NBQ1Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQW1DO1FBQzlDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RSxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxHQUFHLEVBQUU7b0JBQ1AsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUM3QjtnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUM7WUFDakI7Z0JBQ0UsTUFBTTtTQUNUO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLHFCQUFxQixFQUFFLEtBQUs7WUFDNUIsU0FBUyxFQUFFLEtBQUs7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxDQUFzQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7MkhBMUxVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLDJVQUw3QjtRQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7S0FDdkYsaUhBS2lDLFdBQVcsa0VDM0MvQyw4NERBd0NBO0FEVUU7SUFBQyxxQkFBcUIsRUFBRTs7K0RBQ0U7NEZBVmYsNkJBQTZCO2tCQVp6QyxTQUFTOytCQUNFLDBCQUEwQixVQUc1Qix1Q0FBdUMsaUJBQ2hDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtxQkFDdkY7eUhBS3FFLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVE3RCxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1vbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9tb21lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL21hdGVyaWFsL2RhdGUvb250aW1pemUtbW9tZW50LWRhdGUtYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbEVkaXRvciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0RBVEUgPSBbXG4gICdmb3JtYXQnLFxuICAnbG9jYWxlJyxcbiAgJ29TdGFydFZpZXc6IHN0YXJ0LXZpZXcnLFxuICAnbWluJyxcbiAgJ21heCcsXG4gICdvVG91Y2hVaTogdG91Y2gtdWknLFxuICAnc3RhcnRBdDogc3RhcnQtYXQnLFxuICAnZmlsdGVyRGF0ZTogZmlsdGVyLWRhdGUnLFxuICAvLyB2YWx1ZS10eXBlIFt0aW1lc3RhbXB8c3RyaW5nXTogdHlwZSBtdXN0IGJlIGRlZmluZWQgdG8gYmUgYWJsZSB0byBzYXZlIGl0cyB2YWx1ZSxcbiAgLy8gZS5nLiBjbGFzc2ljIG9udGltaXplIHNlcnZlciBkYXRlcyBjb21lIGFzIHRpbWVzdGFtcHMgKG51bWJlciksIGJ1dCB0byBiZSBhYmxlIHRvIHNhdmUgdGhlbSB0aGV5IGhhdmUgdG8gYmUgc2VuZCBhcyBzdHJpbmdzIHdpdGhcbiAgLy8gdGhlIGZvcm1hdCAnWVlZWS1NTS1ERCBISDptbTpzcydEZWZhdWx0OiB0aW1lc3RhbXAuXG4gICdkYXRlVmFsdWVUeXBlOiBkYXRlLXZhbHVlLXR5cGUnXG5dO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0RBVEUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogT250aW1pemVNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfVxuICBdXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckRhdGVDb21wb25lbnQgZXh0ZW5kcyBPQmFzZVRhYmxlQ2VsbEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVyZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIHRlbXBsYXRlcmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGZvcm1hdDogc3RyaW5nID0gJ0wnO1xuICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmc7XG4gIG9TdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgPSAnbW9udGgnO1xuICBwcm90ZWN0ZWQgbWluOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBtYXg6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIG9Ub3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzdGFydEF0OiBzdHJpbmc7XG4gIGZpbHRlckRhdGU6IERhdGVGaWx0ZXJGdW5jdGlvbjtcbiAgX2RhdGVWYWx1ZVR5cGU6IE9EYXRlVmFsdWVUeXBlID0gJ3RpbWVzdGFtcCc7XG5cbiAgb1N0YXJ0QXQ6IERhdGU7XG4gIG9NaW5EYXRlOiBEYXRlO1xuICBvTWF4RGF0ZTogRGF0ZTtcblxuICBwcml2YXRlIG1vbWVudFNydjogTW9tZW50U2VydmljZTtcbiAgbWluRGF0ZVN0cmluZzogc3RyaW5nO1xuICBtYXhEYXRlU3RyaW5nOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGRhdGVwaWNrZXI6IE1hdERhdGVwaWNrZXI8RGF0ZT47XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG1vbWVudERhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxPbnRpbWl6ZU1vbWVudERhdGVBZGFwdGVyPlxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy5tb21lbnRTcnYgPSB0aGlzLmluamVjdG9yLmdldChNb21lbnRTZXJ2aWNlKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGlmICghdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5tb21lbnRTcnYuZ2V0TG9jYWxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1hdCkge1xuICAgICAgKHRoaXMubW9tZW50RGF0ZUFkYXB0ZXIgYXMgYW55KS5vRm9ybWF0ID0gdGhpcy5mb3JtYXQ7XG4gICAgfVxuXG4gICAgdGhpcy5tb21lbnREYXRlQWRhcHRlci5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgIGlmICh0aGlzLnN0YXJ0QXQpIHtcbiAgICAgIHRoaXMub1N0YXJ0QXQgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0QXQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1pbikge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMubWluKTtcbiAgICAgIGNvbnN0IG1vbWVudEQgPSBtb21lbnQoZGF0ZSk7XG4gICAgICBpZiAobW9tZW50RC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgdGhpcy5vTWluRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMubWluRGF0ZVN0cmluZyA9IG1vbWVudEQuZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXgpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1heCk7XG4gICAgICBjb25zdCBtb21lbnREID0gbW9tZW50KGRhdGUpO1xuICAgICAgaWYgKG1vbWVudEQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHRoaXMub01heERhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLm1heERhdGVTdHJpbmcgPSBtb21lbnRELmZvcm1hdCh0aGlzLmZvcm1hdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qgb0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uLmF0dHIpO1xuICAgIGlmICghb0NvbHVtbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIW9Db2x1bW4uZWRpdGluZyAmJiB0aGlzLmRhdGVwaWNrZXIgJiYgdGhpcy5kYXRlcGlja2VyLm9wZW5lZCkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLmhhbmRsZUtleXVwKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBzdGFydEVkaXRpb24oZGF0YTogYW55KSB7XG4gICAgc3VwZXIuc3RhcnRFZGl0aW9uKGRhdGEpO1xuICAgIGlmICghdGhpcy5zdGFydEF0KSB7XG4gICAgICB0aGlzLm9TdGFydEF0ID0gdGhpcy5nZXRDZWxsRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldENlbGxEYXRhKCk6IGFueSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdXBlci5nZXRDZWxsRGF0YSgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGxldCBtO1xuICAgICAgc3dpdGNoICh0aGlzLmRhdGVWYWx1ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICBtID0gbW9tZW50KHZhbHVlLCB0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIGNhc2UgJ3RpbWVzdGFtcCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgbSA9IG1vbWVudCh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbW1pdEVkaXRpb24oKSB7XG4gICAgLy8gIXRoaXMuZGF0ZXBpY2tlci5vcGVuZWQgJiZcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCkge1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdO1xuICAgICAgdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl0gPSB0aGlzLmdldFZhbHVlQnlWYWx5VHlwZSgpO1xuICAgICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICAgIHRoaXMuZW5kRWRpdGlvbih0cnVlKTtcbiAgICAgICAgdGhpcy5lZGl0aW9uQ29tbWl0dGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlQnlWYWx5VHlwZSgpOiBhbnkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuICAgIGNvbnN0IG0gPSBtb21lbnQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XG4gICAgc3dpdGNoICh0aGlzLmRhdGVWYWx1ZVR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJlc3VsdCA9IG0uZm9ybWF0KHRoaXMuZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUocmVzdWx0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpc28tODYwMSc6XG4gICAgICAgIHJlc3VsdCA9IG0udG9JU09TdHJpbmcoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzdWx0ID0gbS52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGV2ZW50OiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IGV2ZW50LnZhbHVlICYmIGV2ZW50LnZhbHVlLmlzVmFsaWQgJiYgZXZlbnQudmFsdWUuaXNWYWxpZCgpO1xuICAgIGxldCB2YWwgPSBpc1ZhbGlkID8gZXZlbnQudmFsdWUudmFsdWVPZigpIDogZXZlbnQudmFsdWU7XG4gICAgY29uc3QgbSA9IG1vbWVudCh2YWwpO1xuICAgIHN3aXRjaCAodGhpcy5kYXRlVmFsdWVUeXBlKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgdmFsID0gbS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHZhbCA9IG5ldyBEYXRlKHZhbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaXNvLTg2MDEnOlxuICAgICAgICB2YWwgPSBtLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsLCB7XG4gICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgb3BlbkRhdGVwaWNrZXIoZDogTWF0RGF0ZXBpY2tlcjxEYXRlPikge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGQ7XG4gICAgZC5vcGVuKCk7XG4gIH1cblxuICBzZXQgZGF0ZVZhbHVlVHlwZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX2RhdGVWYWx1ZVR5cGUgPSBVdGlsLmNvbnZlcnRUb09EYXRlVmFsdWVUeXBlKHZhbCk7XG4gIH1cblxuICBnZXQgZGF0ZVZhbHVlVHlwZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kYXRlVmFsdWVUeXBlO1xuICB9XG5cbiAgb25DbG9zZWQoKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwiby10YWJsZS1jZWxsLWVkaXRvci1kYXRlIG8tdGFibGUtY2VsbC1lZGl0b3JcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIlxuICAgIFttYXRUb29sdGlwQ2xhc3NdPVwidG9vbHRpcENsYXNzXCJcbiAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXG4gICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXG4gICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjZGtGb2N1c0luaXRpYWw+XG4gICAgICA8aW5wdXQgI2lucHV0IG1hdElucHV0IFtpZF09XCJjZWxsRWRpdG9ySWRcIiBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJvcmVxdWlyZWRcIiBbbWF0RGF0ZXBpY2tlcl09XCJkXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmlsdGVyRGF0ZVwiXG4gICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCIgW21pbl09XCJvTWluRGF0ZVwiIFttYXhdPVwib01heERhdGVcIj5cblxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkIFtzdGFydFZpZXddPVwib1N0YXJ0Vmlld1wiIFtzdGFydEF0XT1cIm9TdGFydEF0XCIgW3RvdWNoVWldPVwib1RvdWNoVWlcIiAoY2xvc2VkKT1cIm9uQ2xvc2VkKClcIj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1idG5cIiAoY2xpY2spPVwib3BlbkRhdGVwaWNrZXIoZClcIiBtYXRTdWZmaXg+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6dG9kYXlcIj48L21hdC1pY29uPlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJQYXJzZScpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9QQVJTRScgfCBvVHJhbnNsYXRlIH19IHt7IGZvcm1hdCB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF0RGF0ZXBpY2tlckZpbHRlcicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9GSUxURVInIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF0RGF0ZXBpY2tlck1pbicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uREFURV9NSU4nIHwgb1RyYW5zbGF0ZSB9fSB7eyBtaW5EYXRlU3RyaW5nIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5EQVRFX01BWCcgfCBvVHJhbnNsYXRlIH19IHt7IG1heERhdGVTdHJpbmcgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgb0Vycm9yIG9mIGdldEFjdGl2ZU9FcnJvcnMoKVwiPlxuICAgICAgICB7eyBnZXRFcnJvclRleHQob0Vycm9yKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -14,13 +14,13 @@ export class OTableCellEditorEmailComponent extends OBaseTableCellEditor {
14
14
  this.injector = injector;
15
15
  }
16
16
  }
17
- OTableCellEditorEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorEmailComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
- OTableCellEditorEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableCellEditorEmailComponent, selector: "o-table-cell-editor-email", viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-email o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"email\" [email]=\"true\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\" [id]=\"cellEditorId\"\n [required]=\"orequired\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('email')\">\n {{ 'FORM_VALIDATION.EMAIL_FORMAT' | oTranslate }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [".o-table-cell-editor-text .mat-mdc-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorEmailComponent, decorators: [{
17
+ OTableCellEditorEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorEmailComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18
+ OTableCellEditorEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellEditorEmailComponent, selector: "o-table-cell-editor-email", viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-email o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"email\" [email]=\"true\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\" [id]=\"cellEditorId\"\n [required]=\"orequired\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('email')\">\n {{ 'FORM_VALIDATION.EMAIL_FORMAT' | oTranslate }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [".o-table-cell-editor-text .mat-mdc-form-field{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorEmailComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{ selector: 'o-table-cell-editor-email', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-email o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"email\" [email]=\"true\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\" [id]=\"cellEditorId\"\n [required]=\"orequired\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('email')\">\n {{ 'FORM_VALIDATION.EMAIL_FORMAT' | oTranslate }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", styles: [".o-table-cell-editor-text .mat-mdc-form-field{width:100%}\n"] }]
22
22
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { templateref: [{
23
23
  type: ViewChild,
24
24
  args: ['templateref', { read: TemplateRef, static: true }]
25
25
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZW1haWwvby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZW1haWwvby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFDTCxvQkFBb0IsRUFDckIsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxvQkFBb0I7SUFJdEUsWUFBc0IsUUFBa0I7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUV4QyxDQUFDOzsySEFOVSw4QkFBOEI7K0dBQTlCLDhCQUE4Qix3SkFFUCxXQUFXLGtFQ2hCL0MsOGdDQXNCQTsyRkRSYSw4QkFBOEI7a0JBUjFDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOytGQUtpQyxXQUFXO3NCQUFoRixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBPQmFzZVRhYmxlQ2VsbEVkaXRvclxufSBmcm9tICcuLi9vLWJhc2UtdGFibGUtY2VsbC1lZGl0b3IuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLWNlbGwtZWRpdG9yLWVtYWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY2VsbC1lZGl0b3ItZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWVtYWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckVtYWlsQ29tcG9uZW50IGV4dGVuZHMgT0Jhc2VUYWJsZUNlbGxFZGl0b3Ige1xuXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlcmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZXJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cblxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cIm8tdGFibGUtY2VsbC1lZGl0b3ItZW1haWwgby10YWJsZS1jZWxsLWVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxuICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2RrRm9jdXNJbml0aWFsPlxuICAgICAgPGlucHV0ICNpbnB1dCBtYXRJbnB1dCB0eXBlPVwiZW1haWxcIiBbZW1haWxdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2lkXT1cImNlbGxFZGl0b3JJZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJvcmVxdWlyZWRcIj5cbiAgICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uUkVRVUlSRUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZW1haWwnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkVNQUlMX0ZPUk1BVCcgfCBvVHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JUZXh0KG9FcnJvcikgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZW1haWwvby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvZW1haWwvby10YWJsZS1jZWxsLWVkaXRvci1lbWFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFDTCxvQkFBb0IsRUFDckIsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxvQkFBb0I7SUFJdEUsWUFBc0IsUUFBa0I7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUV4QyxDQUFDOzs0SEFOVSw4QkFBOEI7Z0hBQTlCLDhCQUE4Qix3SkFFUCxXQUFXLGtFQ2hCL0MsOGdDQXNCQTs0RkRSYSw4QkFBOEI7a0JBUjFDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOytGQUtpQyxXQUFXO3NCQUFoRixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBPQmFzZVRhYmxlQ2VsbEVkaXRvclxufSBmcm9tICcuLi9vLWJhc2UtdGFibGUtY2VsbC1lZGl0b3IuY2xhc3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLWNlbGwtZWRpdG9yLWVtYWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtY2VsbC1lZGl0b3ItZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWVtYWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbEVkaXRvckVtYWlsQ29tcG9uZW50IGV4dGVuZHMgT0Jhc2VUYWJsZUNlbGxFZGl0b3Ige1xuXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlcmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZXJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cblxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cIm8tdGFibGUtY2VsbC1lZGl0b3ItZW1haWwgby10YWJsZS1jZWxsLWVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxuICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2RrRm9jdXNJbml0aWFsPlxuICAgICAgPGlucHV0ICNpbnB1dCBtYXRJbnB1dCB0eXBlPVwiZW1haWxcIiBbZW1haWxdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW2lkXT1cImNlbGxFZGl0b3JJZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJvcmVxdWlyZWRcIj5cbiAgICAgIDxtYXQtZXJyb3IgKm9NYXRFcnJvcj1cImhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uUkVRVUlSRUQnIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignZW1haWwnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLkVNQUlMX0ZPUk1BVCcgfCBvVHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JUZXh0KG9FcnJvcikgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -39,8 +39,8 @@ export class OTableCellEditorIntegerComponent extends OBaseTableCellEditor {
39
39
  return validators;
40
40
  }
41
41
  }
42
- OTableCellEditorIntegerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorIntegerComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
43
- OTableCellEditorIntegerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: OTableCellEditorIntegerComponent, selector: "o-table-cell-editor-integer", inputs: { min: "min", max: "max", step: "step" }, viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-integer o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"number\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n [required]=\"orequired\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [id]=\"cellEditorId\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'min') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
42
+ OTableCellEditorIntegerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorIntegerComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
43
+ OTableCellEditorIntegerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellEditorIntegerComponent, selector: "o-table-cell-editor-integer", inputs: { min: "min", max: "max", step: "step" }, viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-integer o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"number\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n [required]=\"orequired\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [id]=\"cellEditorId\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'min') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.OMatErrorDirective, selector: "[oMatError]", inputs: ["oMatError"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
44
  __decorate([
45
45
  NumberInputConverter(),
46
46
  __metadata("design:type", Number)
@@ -53,11 +53,11 @@ __decorate([
53
53
  NumberInputConverter(),
54
54
  __metadata("design:type", Number)
55
55
  ], OTableCellEditorIntegerComponent.prototype, "step", void 0);
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableCellEditorIntegerComponent, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellEditorIntegerComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'o-table-cell-editor-integer', changeDetection: ChangeDetectionStrategy.OnPush, inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR_INTEGER, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-editor-integer o-table-cell-editor\" [formGroup]=\"formGroup\"\n [matTooltip]=\"tooltip\"\n [matTooltipClass]=\"tooltipClass\"\n [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipShowDelay]=\"tooltipShowDelay\"\n [matTooltipHideDelay]=\"tooltipHideDelay\">\n <mat-form-field cdkFocusInitial>\n <input #input matInput type=\"number\" [placeholder]=\"getPlaceholder()\" [formControl]=\"formControl\"\n [required]=\"orequired\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [id]=\"cellEditorId\">\n <mat-error *oMatError=\"hasError('required')\">\n {{ 'FORM_VALIDATION.REQUIRED' | oTranslate }}\n </mat-error>\n <mat-error *oMatError=\"hasError('min')\">\n {{ 'FORM_VALIDATION.MIN_VALUE' | oTranslate }}: {{ getErrorValue('min', 'min') }}\n </mat-error>\n <mat-error *oMatError=\"hasError('max')\">\n {{ 'FORM_VALIDATION.MAX_VALUE' | oTranslate }}: {{ getErrorValue('max', 'max') }}\n </mat-error>\n <mat-error *ngFor=\"let oError of getActiveOErrors()\">\n {{ getErrorText(oError) }}\n </mat-error>\n </mat-form-field>\n </div>\n</ng-template>\n" }]
59
59
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { templateref: [{
60
60
  type: ViewChild,
61
61
  args: ['templateref', { read: TemplateRef, static: true }]
62
62
  }], min: [], max: [], step: [] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1pbnRlZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9pbnRlZ2VyL28tdGFibGUtY2VsbC1lZGl0b3ItaW50ZWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvaW50ZWdlci9vLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHO0lBQ3hELEtBQUs7SUFDTCxLQUFLO0lBQ0wsTUFBTTtDQUNQLENBQUM7QUFVRixNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsb0JBQW9CO0lBV3hFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGeEMsU0FBSSxHQUFXLENBQUMsQ0FBQztJQUlqQixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs2SEE5QlUsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsNE1BRVQsV0FBVyxrRUN2Qi9DLDJ1Q0F5QkE7QURBRTtJQUFDLG9CQUFvQixFQUFFOzs2REFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7OzZEQUNYO0FBQ1o7SUFBQyxvQkFBb0IsRUFBRTs7OERBQ047MkZBVE4sZ0NBQWdDO2tCQVA1QyxTQUFTOytCQUNFLDZCQUE2QixtQkFFdEIsdUJBQXVCLENBQUMsTUFBTSxVQUN2QywwQ0FBMEM7K0ZBS29CLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUc3RCxHQUFHLE1BRUgsR0FBRyxNQUVILElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbEVkaXRvciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0lOVEVHRVIgPSBbXG4gICdtaW4nLFxuICAnbWF4JyxcbiAgJ3N0ZXAnXG5dO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItaW50ZWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0lOVEVHRVJcbn0pXG5cbmV4cG9ydCBjbGFzcyBPVGFibGVDZWxsRWRpdG9ySW50ZWdlckNvbXBvbmVudCBleHRlbmRzIE9CYXNlVGFibGVDZWxsRWRpdG9yIHtcblxuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZXJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgdGVtcGxhdGVyZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBzdGVwOiBudW1iZXIgPSAxO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBnZXRDZWxsRGF0YSgpIHtcbiAgICBjb25zdCBjZWxsRGF0YSA9IHN1cGVyLmdldENlbGxEYXRhKCk7XG4gICAgY29uc3QgaW50VmFsdWUgPSBwYXJzZUludChjZWxsRGF0YSwgMTApO1xuICAgIHJldHVybiBpc05hTihpbnRWYWx1ZSkgPyB1bmRlZmluZWQgOiBpbnRWYWx1ZTtcbiAgfVxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm1pbikpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLm1pbikpO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5tYXgpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodGhpcy5tYXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVyZWYgbGV0LWNlbGx2YWx1ZT1cImNlbGx2YWx1ZVwiIGxldC1yb3d2YWx1ZT1cInJvd3ZhbHVlXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIgby10YWJsZS1jZWxsLWVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxuICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2RrRm9jdXNJbml0aWFsPlxuICAgICAgPGlucHV0ICNpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwib3JlcXVpcmVkXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtzdGVwXT1cInN0ZXBcIiBbaWRdPVwiY2VsbEVkaXRvcklkXCI+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21pbicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uTUlOX1ZBTFVFJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ21pbicsICdtaW4nKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF4JylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfVkFMVUUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4JywgJ21heCcpIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JUZXh0KG9FcnJvcikgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLWVkaXRvci1pbnRlZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9jZWxsLWVkaXRvci9pbnRlZ2VyL28tdGFibGUtY2VsbC1lZGl0b3ItaW50ZWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1lZGl0b3IvaW50ZWdlci9vLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7O0FBRXpFLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHO0lBQ3hELEtBQUs7SUFDTCxLQUFLO0lBQ0wsTUFBTTtDQUNQLENBQUM7QUFVRixNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsb0JBQW9CO0lBV3hFLFlBQXNCLFFBQWtCO1FBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURJLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGeEMsU0FBSSxHQUFXLENBQUMsQ0FBQztJQUlqQixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxVQUFVLEdBQWtCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs4SEE5QlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0MsNE1BRVQsV0FBVyxrRUN2Qi9DLDJ1Q0F5QkE7QURBRTtJQUFDLG9CQUFvQixFQUFFOzs2REFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7OzZEQUNYO0FBQ1o7SUFBQyxvQkFBb0IsRUFBRTs7OERBQ047NEZBVE4sZ0NBQWdDO2tCQVA1QyxTQUFTOytCQUNFLDZCQUE2QixtQkFFdEIsdUJBQXVCLENBQUMsTUFBTSxVQUN2QywwQ0FBMEM7K0ZBS29CLFdBQVc7c0JBQWhGLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUc3RCxHQUFHLE1BRUgsR0FBRyxNQUVILElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE51bWJlcklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPQmFzZVRhYmxlQ2VsbEVkaXRvciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0lOVEVHRVIgPSBbXG4gICdtaW4nLFxuICAnbWF4JyxcbiAgJ3N0ZXAnXG5dO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY2VsbC1lZGl0b3ItaW50ZWdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SX0lOVEVHRVJcbn0pXG5cbmV4cG9ydCBjbGFzcyBPVGFibGVDZWxsRWRpdG9ySW50ZWdlckNvbXBvbmVudCBleHRlbmRzIE9CYXNlVGFibGVDZWxsRWRpdG9yIHtcblxuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZXJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgdGVtcGxhdGVyZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluOiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIG1heDogbnVtYmVyO1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBzdGVwOiBudW1iZXIgPSAxO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBnZXRDZWxsRGF0YSgpIHtcbiAgICBjb25zdCBjZWxsRGF0YSA9IHN1cGVyLmdldENlbGxEYXRhKCk7XG4gICAgY29uc3QgaW50VmFsdWUgPSBwYXJzZUludChjZWxsRGF0YSwgMTApO1xuICAgIHJldHVybiBpc05hTihpbnRWYWx1ZSkgPyB1bmRlZmluZWQgOiBpbnRWYWx1ZTtcbiAgfVxuXG4gIHJlc29sdmVWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBzdXBlci5yZXNvbHZlVmFsaWRhdG9ycygpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm1pbikpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLm1pbikpO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5tYXgpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodGhpcy5tYXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVyZWYgbGV0LWNlbGx2YWx1ZT1cImNlbGx2YWx1ZVwiIGxldC1yb3d2YWx1ZT1cInJvd3ZhbHVlXCI+XG4gIDxkaXYgY2xhc3M9XCJvLXRhYmxlLWNlbGwtZWRpdG9yLWludGVnZXIgby10YWJsZS1jZWxsLWVkaXRvclwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICBbbWF0VG9vbHRpcENsYXNzXT1cInRvb2x0aXBDbGFzc1wiXG4gICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxuICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxuICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2RrRm9jdXNJbml0aWFsPlxuICAgICAgPGlucHV0ICNpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwib3JlcXVpcmVkXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtzdGVwXT1cInN0ZXBcIiBbaWRdPVwiY2VsbEVkaXRvcklkXCI+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICB7eyAnRk9STV9WQUxJREFUSU9OLlJFUVVJUkVEJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPG1hdC1lcnJvciAqb01hdEVycm9yPVwiaGFzRXJyb3IoJ21pbicpXCI+XG4gICAgICAgIHt7ICdGT1JNX1ZBTElEQVRJT04uTUlOX1ZBTFVFJyB8IG9UcmFuc2xhdGUgfX06IHt7IGdldEVycm9yVmFsdWUoJ21pbicsICdtaW4nKSB9fVxuICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICA8bWF0LWVycm9yICpvTWF0RXJyb3I9XCJoYXNFcnJvcignbWF4JylcIj5cbiAgICAgICAge3sgJ0ZPUk1fVkFMSURBVElPTi5NQVhfVkFMVUUnIHwgb1RyYW5zbGF0ZSB9fToge3sgZ2V0RXJyb3JWYWx1ZSgnbWF4JywgJ21heCcpIH19XG4gICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IG9FcnJvciBvZiBnZXRBY3RpdmVPRXJyb3JzKClcIj5cbiAgICAgICAge3sgZ2V0RXJyb3JUZXh0KG9FcnJvcikgfX1cbiAgICAgIDwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { ContentChildren, Directive, EventEmitter, HostListener, Injector, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core';
3
3
  import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
4
+ import { Subject } from 'rxjs';
4
5
  import { BooleanInputConverter } from '../../../../decorators/input-converter';
5
6
  import { OMatErrorDirective } from '../../../../directives/o-mat-error.directive';
6
7
  import { SnackBarService } from '../../../../services/snackbar.service';
@@ -45,6 +46,7 @@ export class OBaseTableCellEditor {
45
46
  this.editorCreated = new EventEmitter();
46
47
  this.registerInColumn = true;
47
48
  this.errorsData = [];
49
+ this.destroy$ = new Subject();
48
50
  this.tooltipPosition = 'below';
49
51
  this.tooltipShowDelay = 500;
50
52
  this.tooltipHideDelay = 0;
@@ -71,6 +73,10 @@ export class OBaseTableCellEditor {
71
73
  }
72
74
  }
73
75
  }
76
+ ngOnDestroy() {
77
+ this.destroy$.next();
78
+ this.destroy$.complete();
79
+ }
74
80
  initialize() {
75
81
  this.createFormControl();
76
82
  this.registerEditor();
@@ -311,8 +317,8 @@ export class OBaseTableCellEditor {
311
317
  return ErrorsUtils.getTooltipClasses(this);
312
318
  }
313
319
  }
314
- OBaseTableCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OBaseTableCellEditor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
315
- OBaseTableCellEditor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OBaseTableCellEditor, inputs: { orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled" }, outputs: { editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, host: { listeners: { "document:keyup": "onDocumentKeyup($event)" } }, queries: [{ propertyName: "validatorChildren", predicate: OValidatorComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "oMatErrorChildren", predicate: OMatErrorDirective, descendants: true }], usesOnChanges: true, ngImport: i0 });
320
+ OBaseTableCellEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OBaseTableCellEditor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
321
+ OBaseTableCellEditor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OBaseTableCellEditor, inputs: { orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled" }, outputs: { editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, host: { listeners: { "document:keyup": "onDocumentKeyup($event)" } }, queries: [{ propertyName: "validatorChildren", predicate: OValidatorComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "oMatErrorChildren", predicate: OMatErrorDirective, descendants: true }], usesOnChanges: true, ngImport: i0 });
316
322
  __decorate([
317
323
  BooleanInputConverter(),
318
324
  __metadata("design:type", Boolean)
@@ -329,7 +335,7 @@ __decorate([
329
335
  BooleanInputConverter(),
330
336
  __metadata("design:type", Boolean)
331
337
  ], OBaseTableCellEditor.prototype, "showNotificationOnEdit", void 0);
332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OBaseTableCellEditor, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OBaseTableCellEditor, decorators: [{
333
339
  type: Directive,
334
340
  args: [{
335
341
  inputs: DEFAULT_INPUTS_O_TABLE_CELL_EDITOR,
@@ -348,4 +354,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
348
354
  type: ViewChildren,
349
355
  args: [OMatErrorDirective]
350
356
  }] } });
351
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtZWRpdG9yL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBUSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQXdDLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUc7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LEtBQUssS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3BFLE9BQU8sU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2lIQWhaVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiwwbEJBNkNkLG1CQUFtQix1SkFhdEIsa0JBQWtCO0FBdERoQztJQUFDLHFCQUFxQixFQUFFOzt1REFDRztBQUMzQjtJQUFDLHFCQUFxQixFQUFFOzs2REFDUztBQUVqQztJQUFDLHFCQUFxQixFQUFFOztnRUFDVztBQUNuQztJQUFDLHFCQUFxQixFQUFFOztvRUFDZTsyRkFaNUIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNULE1BQU0sRUFBRSxrQ0FBa0M7b0JBQzFDLE9BQU8sRUFBRSxtQ0FBbUM7aUJBQzdDOytGQU1DLFNBQVMsTUFFVCxlQUFlLE1BR2Ysa0JBQWtCLE1BRWxCLHNCQUFzQixNQXNCWixRQUFRO3NCQURqQixTQUFTO3VCQUFDLE9BQU87Z0JBYWxCLGlCQUFpQjtzQkFEaEIsZUFBZTt1QkFBQyxtQkFBbUI7Z0JBS3BDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVMUMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE9NYXRFcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMvby1tYXQtZXJyb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPVmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvdmFsaWRhdGlvbi9vLXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXJyb3JEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvZXJyb3ItZGF0YS50eXBlJztcbmltcG9ydCB7IE9NYXRFcnJvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9vLW1hdC1lcnJvci50eXBlJztcbmltcG9ydCB7IE9ic2VydmFibGVXcmFwcGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9hc3luYyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50V2l0aFZhbGlkYXRvcnNBbmRFcnJvcnNEYXRhLCBFcnJvcnNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvZXJyb3JzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0NvbHVtbiB9IGZyb20gJy4uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SID0gW1xuICAnb3JlcXVpcmVkOiByZXF1aXJlZCcsXG4gICdzaG93UGxhY2VIb2xkZXI6IHNob3ctcGxhY2Vob2xkZXInLFxuICAnb2xhYmVsOiBsYWJlbCcsXG4gICd1cGRhdGVSZWNvcmRPbkVkaXQ6IHVwZGF0ZS1yZWNvcmQtb24tZWRpdCcsXG4gICdzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBzaG93LW5vdGlmaWNhdGlvbi1vbi1lZGl0JyxcbiAgJ2VuYWJsZWQnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1IgPSBbXG4gICdlZGl0aW9uU3RhcnRlZCcsXG4gICdlZGl0aW9uQ2FuY2VsbGVkJyxcbiAgJ2VkaXRpb25Db21taXR0ZWQnLFxuICAnb25Qb3N0VXBkYXRlUmVjb3JkJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DRUxMX0VESVRPUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ0VMTF9FRElUT1Jcbn0pXG5leHBvcnQgY2xhc3MgT0Jhc2VUYWJsZUNlbGxFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIENvbXBvbmVudFdpdGhWYWxpZGF0b3JzQW5kRXJyb3JzRGF0YSB7XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX3RhYmxlQ29sdW1uOiBPVGFibGVDb2x1bW47XG4gIHByb3RlY3RlZCBfdGFibGU6IE9UYWJsZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgX3Jvd0RhdGE6IGFueTtcblxuICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjb250cm9sQXJnczogYW55O1xuXG4gIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcblxuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgcHVibGljIGVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgaW5wdXRSZWY6IGFueTtcblxuICBwcm90ZWN0ZWQgdHlwZTogc3RyaW5nO1xuICByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogYW55O1xuICBjZWxsRWRpdG9ySWQ6IHN0cmluZztcblxuICBlcnJvcnNEYXRhOiBFcnJvckRhdGFbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAQ29udGVudENoaWxkcmVuKE9WYWxpZGF0b3JDb21wb25lbnQpXG4gIHZhbGlkYXRvckNoaWxkcmVuOiBRdWVyeUxpc3Q8T1ZhbGlkYXRvckNvbXBvbmVudD47XG4gIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5oYW5kbGVLZXl1cChldmVudCk7XG4gIH1cblxuICB0b29sdGlwUG9zaXRpb246IHN0cmluZyA9ICdiZWxvdyc7XG4gIHRvb2x0aXBTaG93RGVsYXk6IG51bWJlciA9IDUwMDtcbiAgdG9vbHRpcEhpZGVEZWxheTogbnVtYmVyID0gMDtcbiAgZXJyb3JPcHRpb25zOiBPTWF0RXJyb3JPcHRpb25zO1xuICBAVmlld0NoaWxkcmVuKE9NYXRFcnJvckRpcmVjdGl2ZSlcbiAgb01hdEVycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxPTWF0RXJyb3JEaXJlY3RpdmU+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLnNuYWNrQmFyU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PFNuYWNrQmFyU2VydmljZT4oU25hY2tCYXJTZXJ2aWNlIGFzIFR5cGU8U25hY2tCYXJTZXJ2aWNlPik7XG4gICAgdGhpcy50YWJsZUNvbHVtbiA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9UYWJsZUNvbHVtbkNvbXBvbmVudD4oT1RhYmxlQ29sdW1uQ29tcG9uZW50IGFzIFR5cGU8T1RhYmxlQ29sdW1uQ29tcG9uZW50Pik7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T1RyYW5zbGF0ZVNlcnZpY2U+KE9UcmFuc2xhdGVTZXJ2aWNlIGFzIFR5cGU8T1RyYW5zbGF0ZVNlcnZpY2U+KTtcbiAgICB0aGlzLmNlbGxFZGl0b3JJZCA9IFV0aWwucmFuZG9tTnVtYmVyKCkudG9TdHJpbmcoMzYpO1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLmluamVjdG9yLmdldDxSZW5kZXJlcjI+KFJlbmRlcmVyMiBhcyBUeXBlPFJlbmRlcmVyMj4pO1xuICAgIHRoaXMuZXJyb3JPcHRpb25zID0gRXJyb3JzVXRpbHMuZ2V0RXJyb3JPcHRpb25zKHRoaXMuaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4pIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yc1N1YnNjcmlwdGlvbiA9IHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNlbGwgZWRpdG9yXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm1Db250cm9sKCk7XG4gICAgdGhpcy5yZWdpc3RlckVkaXRvcigpO1xuICAgIHRoaXMuZWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qgb0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKCFvQ29sdW1uIHx8ICFvQ29sdW1uLmVkaXRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXNjQ2xpY2tlZCA9IHRoaXMuY2hlY2tLZXkoZXZlbnQsICdFc2NhcGUnLCAyNyk7XG4gICAgY29uc3QgZW50ZXJDbGlja2VkID0gdGhpcy5jaGVja0tleShldmVudCwgJ0VudGVyJywgMTMpO1xuICAgIGNvbnN0IHRhYkNsaWNrZWQgPSB0aGlzLmNoZWNrS2V5KGV2ZW50LCAnVGFiJywgOSk7XG4gICAgaWYgKCFlc2NDbGlja2VkICYmICFlbnRlckNsaWNrZWQgJiYgIXRhYkNsaWNrZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXNjQ2xpY2tlZCkge1xuICAgICAgdGhpcy5vbkVzY0NsaWNrZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS5lZGl0aW5nQ2VsbCAmJiAhdGhpcy50YWJsZS5lZGl0aW5nQ2VsbC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVudGVyQ2xpY2tlZCB8fCB0YWJDbGlja2VkKSB7XG4gICAgICB0aGlzLmNvbW1pdEVkaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGtleTogc3RyaW5nLCBrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKGV2ZW50LmtleSAmJiBldmVudC5rZXkgPT09IGtleSkgfHwgKGV2ZW50LmtleUNvZGUgJiYgZXZlbnQua2V5Q29kZSA9PT0ga2V5Q29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBmb3JtIGNvbnRyb2xcbiAgICovXG4gIGNyZWF0ZUZvcm1Db250cm9sKCkge1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IHRoaXMucmVzb2x2ZVZhbGlkYXRvcnMoKTtcbiAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gdGhpcy5yZXNvbHZlQXN5bmNWYWxpZGF0b3JzKCk7XG4gICAgICBjb25zdCBjZmcgPSB7XG4gICAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICAgIGRpc2FibGVkOiAhdGhpcy5lbmFibGVkXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChjZmcsIHZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9ycyk7XG5cbiAgICB9XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5jZWxsRWRpdG9ySWQpKSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmNlbGxFZGl0b3JJZCwgdGhpcy5mb3JtQ29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBlZGl0b3JcbiAgICovXG4gIHJlZ2lzdGVyRWRpdG9yKCkge1xuICAgIGlmICh0aGlzLnJlZ2lzdGVySW5Db2x1bW4gJiYgIVV0aWwuaXNEZWZpbmVkKHRoaXMudGFibGVDb2x1bW4uZWRpdG9yKSkge1xuICAgICAgdGhpcy50YWJsZUNvbHVtbi5yZWdpc3RlckVkaXRvcih0aGlzKTtcbiAgICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLnRhYmxlQ29sdW1uLnR5cGUpKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHRoaXMudGFibGVDb2x1bW4udHlwZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNlbGwgZGF0YVxuICAgKiBAcmV0dXJucyBjZWxsIGRhdGFcbiAgICovXG4gIGdldENlbGxEYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGVkaXRpb24gd2l0aCBnaXZlbiB0aGUgZGF0YVxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgc3RhcnRFZGl0aW9uKGRhdGE6IGFueSkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5yb3dEYXRhID0gZGF0YTtcbiAgICBpZiAoIXRoaXMuaXNTaWxlbnRDb250cm9sKCkpIHtcbiAgICAgIHRoaXMuZWRpdGlvblN0YXJ0ZWQuZW1pdCh0aGlzLl9yb3dEYXRhKTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAvLyBTZWxlY3RpbmcgdGV4dCBpZiB0aGUgdGVtcGxhdGUgaW5wdXQgZWxlbWVudCBoYXMgZGVmaW5lZCB0aGUgaWQ9Y2VsbEVkaXRvcklkXG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgKGlucHV0RWwgYXMgSFRNTElucHV0RWxlbWVudCkuc2VsZWN0KCk7XG4gICAgfVxuICAgIHRoaXMuc2V0RWRpdGluZ1Jvd0NsYXNzKHRydWUpXG4gIH1cblxuICAvKipcbiAgICogRW5kcyBlZGl0aW9uIHdpdGggdGhlIGFiaWxpdHkgdG8gc2tpcCBvciBzYXZlIGNoYW5nZXNcbiAgICogQHBhcmFtIHNhdmVDaGFuZ2VzXG4gICAqL1xuICBlbmRFZGl0aW9uKHNhdmVDaGFuZ2VzOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb0NvbHVtbjogT0NvbHVtbiA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLnRhYmxlQ29sdW1uQXR0cik7XG4gICAgaWYgKG9Db2x1bW4pIHtcbiAgICAgIGNvbnN0IHVwZGF0ZU9ic2VydmVyID0gdGhpcy50YWJsZS51cGRhdGVDZWxsRGF0YShvQ29sdW1uLCB0aGlzLl9yb3dEYXRhLCBzYXZlQ2hhbmdlcyk7XG4gICAgICBpZiAodXBkYXRlT2JzZXJ2ZXIpIHtcbiAgICAgICAgdXBkYXRlT2JzZXJ2ZXIuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5vblVwZGF0ZVN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmRhb1RhYmxlLnNldERhdGFBcnJheSh0aGlzLnRhYmxlLmRhb1RhYmxlLmRhdGEpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl0gPSB0aGlzLm9sZFZhbHVlO1xuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVNvdXJjZS51cGRhdGVSZW5kZXJlZFJvd0RhdGEodGhpcy5fcm93RGF0YSk7XG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93RGlhbG9nRXJyb3IoZXJyb3IsICdNRVNTQUdFUy5FUlJPUl9VUERBVEUnKTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDb21taXRzIGVkaXRpb25cbiAgICovXG4gIGNvbW1pdEVkaXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sLmludmFsaWQpIHtcbiAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLl9yb3dEYXRhW3RoaXMudGFibGVDb2x1bW5BdHRyXTtcbiAgICAgIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgIGlmICghdGhpcy5pc1NpbGVudENvbnRyb2woKSkge1xuICAgICAgICB0aGlzLmVuZEVkaXRpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuZWRpdGlvbkNvbW1pdHRlZC5lbWl0KHRoaXMuX3Jvd0RhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbigpOiBPVGFibGVDb2x1bW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbjtcbiAgfVxuXG4gIHNldCB0YWJsZUNvbHVtbihhcmc6IE9UYWJsZUNvbHVtbikge1xuICAgIHRoaXMuX3RhYmxlQ29sdW1uID0gYXJnO1xuICAgIGlmIChhcmcpIHtcbiAgICAgIHRoaXMuX3RhYmxlID0gYXJnLnRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0YWJsZUNvbHVtbkF0dHIoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdGFibGVDb2x1bW4pIHtcbiAgICAgIHJldHVybiB0aGlzLl90YWJsZUNvbHVtbi5hdHRyO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0IHRhYmxlKGFyZzogT1RhYmxlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fdGFibGUgPSBhcmc7XG4gIH1cblxuICBnZXQgdGFibGUoKTogT1RhYmxlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gIH1cblxuICBnZXQgcm93RGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yb3dEYXRhO1xuICB9XG5cbiAgc2V0IHJvd0RhdGEoYXJnOiBhbnkpIHtcbiAgICB0aGlzLl9yb3dEYXRhID0gYXJnO1xuICAgIGNvbnN0IGNlbGxEYXRhID0gdGhpcy5nZXRDZWxsRGF0YSgpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY2VsbERhdGEpO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdmFsaWRhdG9yc1xuICAgKiBAcmV0dXJucyB2YWxpZGF0b3JzXG4gICAqL1xuICByZXNvbHZlVmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbiAmJiB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbik7XG4gICAgICBFcnJvcnNVdGlscy5wdXNoVG9FcnJvcnNEYXRhKHRoaXMsIHRoaXMudGFibGVDb2x1bW4uYW5ndWxhclZhbGlkYXRvcnNGbkVycm9ycyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9yZXF1aXJlZCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIHJlc29sdmVBc3luY1ZhbGlkYXRvcnMoKTogQXN5bmNWYWxpZGF0b3JGbltdIHtcbiAgICBpZiAodGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gJiYgdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4ubGVuZ3RoID4gMCkge1xuICAgICAgRXJyb3JzVXRpbHMucHVzaFRvRXJyb3JzRGF0YSh0aGlzLCB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm4gfHwgW11cbiAgfVxuXG4gIGdldEFjdGl2ZU9FcnJvcnMoKSB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldEFjdGl2ZU9FcnJvcnModGhpcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXJyb3JUZXh0KG9FcnJvcjogYW55KSB7XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4gJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IgJiYgdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IuZXJyb3JzRGF0YSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnRhYmxlQ29sdW1uLmVkaXRvci5lcnJvcnNEYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gb0Vycm9yKTtcbiAgICAgIHJldHVybiBlcnJvciA/IGVycm9yLnRleHQgOiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIEVycm9yc1V0aWxzLnVwZGF0ZUZvcm1Db250cm9sVmFsaWRhdG9ycyh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZXJyb3IgaGFzXG4gICAqIEBwYXJhbSBlcnJvclxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGVycm9yXG4gICAqL1xuICBoYXNFcnJvcihlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmICh0aGlzLmhhc0Vycm9yRXhjbHVzaXZlKGVycm9yKSB8fCB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSk7XG4gIH1cblxuICBoYXNTb21lRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbnRyb2wgJiYgdGhpcy5mb3JtQ29udHJvbC50b3VjaGVkICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yRXhjbHVzaXZlKGVycm9yOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCBlcnJvcnNPcmRlciA9IFsnbWF0RGF0ZXBpY2tlck1heCcsICdtYXREYXRlcGlja2VyTWluJywgJ21hdERhdGVwaWNrZXJGaWx0ZXInLCAnbWF0RGF0ZXBpY2tlclBhcnNlJywgJ3JlcXVpcmVkJ107XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtQ29udHJvbC5lcnJvcnM7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGVycm9ycykpIHtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBlcnJvcnNPcmRlci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgIGhhc0Vycm9yID0gZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yc09yZGVyW2ldKTtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIGhhc0Vycm9yID0gKGVycm9yc09yZGVyW2ldID09PSBlcnJvcik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhc0Vycm9yO1xuICB9XG5cbiAgZ2V0RXJyb3JWYWx1ZShlcnJvcjogc3RyaW5nLCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLmhhc0Vycm9yKGVycm9yKSA/IHRoaXMuZm9ybUNvbnRyb2wuZ2V0RXJyb3IoZXJyb3IpW3Byb3BdID8/ICcnIDogJyc7XG4gIH1cblxuICBvbkVzY0NsaWNrZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICB0aGlzLmVuZEVkaXRpb24oZmFsc2UpO1xuICAgICAgdGhpcy5lZGl0aW9uQ2FuY2VsbGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzU2lsZW50Q29udHJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sQXJncyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbEFyZ3Muc2lsZW50O1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UGxhY2VIb2xkZXIgP1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLm9sYWJlbCB8fCB0aGlzLnRhYmxlQ29sdW1uID8gKHRoaXMudGFibGVDb2x1bW4udGl0bGUgfHwgdGhpcy50YWJsZUNvbHVtbkF0dHIpIDogdGhpcy50YWJsZUNvbHVtbkF0dHIpIDpcbiAgICAgIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblVwZGF0ZVN1Y2Nlc3MocmVzOiBhbnkpIHtcbiAgICBPYnNlcnZhYmxlV3JhcHBlci5jYWxsRW1pdCh0aGlzLm9uUG9zdFVwZGF0ZVJlY29yZCwgdGhpcy5fcm93RGF0YSk7XG4gICAgaWYgKHRoaXMuc2hvd05vdGlmaWNhdGlvbk9uRWRpdCkge1xuICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbignTUVTU0FHRVMuVVBEQVRFRCcsIHsgaWNvbjogJ2NoZWNrX2NpcmNsZScgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0IGVuYWJsZWQoYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IGFyZztcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA/IHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCkgOiB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIGdldEZvcm1Db250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sO1xuICB9XG5cbiAgc2V0RWRpdGluZ1Jvd0NsYXNzKGFkZENsYXNzOiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5wdXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2VsbEVkaXRvcklkKTtcbiAgICBpZiAoaW5wdXRFbCkge1xuICAgICAgY29uc3QgdGFibGVSb3dFbCA9IGlucHV0RWwuY2xvc2VzdCgndHInKTtcbiAgICAgIGlmICh0YWJsZVJvd0VsKSB7XG4gICAgICAgIGFkZENsYXNzID8gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0YWJsZVJvd0VsLCAnby10YWJsZS1lZGl0aW5nLXJvdycpIDpcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRhYmxlUm93RWwsICdvLXRhYmxlLWVkaXRpbmctcm93JylcbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaXRlRXJyb3IgPSB0aGlzLmVycm9yT3B0aW9ucy50eXBlID09PSBDb2Rlcy5PX01BVF9FUlJPUl9MSVRFO1xuICAgIHJldHVybiBsaXRlRXJyb3IgJiYgdGhpcy5oYXNTb21lRXJyb3IoKSA/IEVycm9yc1V0aWxzLmdldEVycm9yc1Rvb2x0aXBUZXh0KHRoaXMpIDogJyc7XG4gIH1cblxuICBnZXQgdG9vbHRpcENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEVycm9yc1V0aWxzLmdldFRvb2x0aXBDbGFzc2VzKHRoaXMpO1xuICB9XG59XG4iXX0=
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1iYXNlLXRhYmxlLWNlbGwtZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtZWRpdG9yL28tYmFzZS10YWJsZS1jZWxsLWVkaXRvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFnQyxTQUFTLEVBQUUsU0FBUyxFQUFRLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbk0sT0FBTyxFQUFvQixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFHckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBd0MsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZC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dCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFJlbmRlcmVyMiwgVHlwZSwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgT01hdEVycm9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9vLW1hdC1lcnJvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBPVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9WYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy92YWxpZGF0aW9uL28tdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFcnJvckRhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9lcnJvci1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgT01hdEVycm9yT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzL28tbWF0LWVycm9yLnR5cGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVdyYXBwZXIgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL2FzeW5jJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRXaXRoVmFsaWRhdG9yc0FuZEVycm9yc0RhdGEsIEVycm9yc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9lcnJvcnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPQ29sdW1uIH0gZnJvbSAnLi4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ0VMTF9FRElUT1IgPSBbXG4gICdvcmVxdWlyZWQ6IHJlcXVpcmVkJyxcbiAgJ3Nob3dQbGFjZUhvbGRlcjogc2hvdy1wbGFjZWhvbGRlcicsXG4gICdvbGFiZWw6IGxhYmVsJyxcbiAgJ3VwZGF0ZVJlY29yZE9uRWRpdDogdXBkYXRlLXJlY29yZC1vbi1lZGl0JyxcbiAgJ3Nob3dOb3RpZmljYXRpb25PbkVkaXQ6IHNob3ctbm90aWZpY2F0aW9uLW9uLWVkaXQnLFxuICAnZW5hYmxlZCdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DRUxMX0VESVRPUiA9IFtcbiAgJ2VkaXRpb25TdGFydGVkJyxcbiAgJ2VkaXRpb25DYW5jZWxsZWQnLFxuICAnZWRpdGlvbkNvbW1pdHRlZCcsXG4gICdvblBvc3RVcGRhdGVSZWNvcmQnXG5dO1xuXG5ARGlyZWN0aXZlKHtcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NFTExfRURJVE9SLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DRUxMX0VESVRPUlxufSlcbmV4cG9ydCBjbGFzcyBPQmFzZVRhYmxlQ2VsbEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbXBvbmVudFdpdGhWYWxpZGF0b3JzQW5kRXJyb3JzRGF0YSB7XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuXG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBvcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dQbGFjZUhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvbGFiZWw6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVwZGF0ZVJlY29yZE9uRWRpdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93Tm90aWZpY2F0aW9uT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIF9lbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgX3RhYmxlQ29sdW1uOiBPVGFibGVDb2x1bW47XG4gIHByb3RlY3RlZCBfdGFibGU6IE9UYWJsZUNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgX3Jvd0RhdGE6IGFueTtcblxuICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuICBjb250cm9sQXJnczogYW55O1xuXG4gIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHt9KTtcblxuICBlZGl0aW9uU3RhcnRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcbiAgZWRpdGlvbkNvbW1pdHRlZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBvblBvc3RVcGRhdGVSZWNvcmQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgcHVibGljIGVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwcm90ZWN0ZWQgaW5wdXRSZWY6IGFueTtcblxuICBwcm90ZWN0ZWQgdHlwZTogc3RyaW5nO1xuICByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogYW55O1xuICBjZWxsRWRpdG9ySWQ6IHN0cmluZztcblxuICBlcnJvcnNEYXRhOiBFcnJvckRhdGFbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsaWRhdG9yc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAQ29udGVudENoaWxkcmVuKE9WYWxpZGF0b3JDb21wb25lbnQpXG4gIHZhbGlkYXRvckNoaWxkcmVuOiBRdWVyeUxpc3Q8T1ZhbGlkYXRvckNvbXBvbmVudD47XG4gIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50S2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICB0aGlzLmhhbmRsZUtleXVwKGV2ZW50KTtcbiAgfVxuXG4gIHRvb2x0aXBQb3NpdGlvbjogc3RyaW5nID0gJ2JlbG93JztcbiAgdG9vbHRpcFNob3dEZWxheTogbnVtYmVyID0gNTAwO1xuICB0b29sdGlwSGlkZURlbGF5OiBudW1iZXIgPSAwO1xuICBlcnJvck9wdGlvbnM6IE9NYXRFcnJvck9wdGlvbnM7XG4gIEBWaWV3Q2hpbGRyZW4oT01hdEVycm9yRGlyZWN0aXZlKVxuICBvTWF0RXJyb3JDaGlsZHJlbjogUXVlcnlMaXN0PE9NYXRFcnJvckRpcmVjdGl2ZT47XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8U25hY2tCYXJTZXJ2aWNlPihTbmFja0JhclNlcnZpY2UgYXMgVHlwZTxTbmFja0JhclNlcnZpY2U+KTtcbiAgICB0aGlzLnRhYmxlQ29sdW1uID0gdGhpcy5pbmplY3Rvci5nZXQ8T1RhYmxlQ29sdW1uQ29tcG9uZW50PihPVGFibGVDb2x1bW5Db21wb25lbnQgYXMgVHlwZTxPVGFibGVDb2x1bW5Db21wb25lbnQ+KTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPVHJhbnNsYXRlU2VydmljZT4oT1RyYW5zbGF0ZVNlcnZpY2UgYXMgVHlwZTxPVHJhbnNsYXRlU2VydmljZT4pO1xuICAgIHRoaXMuY2VsbEVkaXRvcklkID0gVXRpbC5yYW5kb21OdW1iZXIoKS50b1N0cmluZygzNik7XG4gICAgdGhpcy5yZW5kZXJlciA9IHRoaXMuaW5qZWN0b3IuZ2V0PFJlbmRlcmVyMj4oUmVuZGVyZXIyIGFzIFR5cGU8UmVuZGVyZXIyPik7XG4gICAgdGhpcy5lcnJvck9wdGlvbnMgPSBFcnJvcnNVdGlscy5nZXRFcnJvck9wdGlvbnModGhpcy5pbmplY3Rvcik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoaWxkcmVuKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvcnNTdWJzY3JpcHRpb24gPSB0aGlzLnZhbGlkYXRvckNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRvckNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjZWxsIGVkaXRvclxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVGb3JtQ29udHJvbCgpO1xuICAgIHRoaXMucmVnaXN0ZXJFZGl0b3IoKTtcbiAgICB0aGlzLmVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IG9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy50YWJsZUNvbHVtbkF0dHIpO1xuICAgIGlmICghb0NvbHVtbiB8fCAhb0NvbHVtbi5lZGl0aW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVzY0NsaWNrZWQgPSB0aGlzLmNoZWNrS2V5KGV2ZW50LCAnRXNjYXBlJywgMjcpO1xuICAgIGNvbnN0IGVudGVyQ2xpY2tlZCA9IHRoaXMuY2hlY2tLZXkoZXZlbnQsICdFbnRlcicsIDEzKTtcbiAgICBjb25zdCB0YWJDbGlja2VkID0gdGhpcy5jaGVja0tleShldmVudCwgJ1RhYicsIDkpO1xuICAgIGlmICghZXNjQ2xpY2tlZCAmJiAhZW50ZXJDbGlja2VkICYmICF0YWJDbGlja2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVzY0NsaWNrZWQpIHtcbiAgICAgIHRoaXMub25Fc2NDbGlja2VkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGUuZWRpdGluZ0NlbGwgJiYgIXRoaXMudGFibGUuZWRpdGluZ0NlbGwuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbnRlckNsaWNrZWQgfHwgdGFiQ2xpY2tlZCkge1xuICAgICAgdGhpcy5jb21taXRFZGl0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBrZXk6IHN0cmluZywga2V5Q29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChldmVudC5rZXkgJiYgZXZlbnQua2V5ID09PSBrZXkpIHx8IChldmVudC5rZXlDb2RlICYmIGV2ZW50LmtleUNvZGUgPT09IGtleUNvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZm9ybSBjb250cm9sXG4gICAqL1xuICBjcmVhdGVGb3JtQ29udHJvbCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSB0aGlzLnJlc29sdmVWYWxpZGF0b3JzKCk7XG4gICAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSA9IHRoaXMucmVzb2x2ZUFzeW5jVmFsaWRhdG9ycygpO1xuICAgICAgY29uc3QgY2ZnID0ge1xuICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogIXRoaXMuZW5hYmxlZFxuICAgICAgfTtcblxuICAgICAgdGhpcy5mb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woY2ZnLCB2YWxpZGF0b3JzLCBhc3luY1ZhbGlkYXRvcnMpO1xuXG4gICAgfVxuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuY2VsbEVkaXRvcklkKSkpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2wodGhpcy5jZWxsRWRpdG9ySWQsIHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgZWRpdG9yXG4gICAqL1xuICByZWdpc3RlckVkaXRvcigpIHtcbiAgICBpZiAodGhpcy5yZWdpc3RlckluQ29sdW1uICYmICFVdGlsLmlzRGVmaW5lZCh0aGlzLnRhYmxlQ29sdW1uLmVkaXRvcikpIHtcbiAgICAgIHRoaXMudGFibGVDb2x1bW4ucmVnaXN0ZXJFZGl0b3IodGhpcyk7XG4gICAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMudHlwZSkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50YWJsZUNvbHVtbi50eXBlKSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLnRhYmxlQ29sdW1uLnR5cGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBjZWxsIGRhdGFcbiAgICogQHJldHVybnMgY2VsbCBkYXRhXG4gICAqL1xuICBnZXRDZWxsRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9yb3dEYXRhW3RoaXMudGFibGVDb2x1bW5BdHRyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBlZGl0aW9uIHdpdGggZ2l2ZW4gdGhlIGRhdGFcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHN0YXJ0RWRpdGlvbihkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIHRoaXMucm93RGF0YSA9IGRhdGE7XG4gICAgaWYgKCF0aGlzLmlzU2lsZW50Q29udHJvbCgpKSB7XG4gICAgICB0aGlzLmVkaXRpb25TdGFydGVkLmVtaXQodGhpcy5fcm93RGF0YSk7XG4gICAgfVxuICAgIHRoaXMudGFibGUuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gU2VsZWN0aW5nIHRleHQgaWYgdGhlIHRlbXBsYXRlIGlucHV0IGVsZW1lbnQgaGFzIGRlZmluZWQgdGhlIGlkPWNlbGxFZGl0b3JJZFxuICAgIGNvbnN0IGlucHV0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNlbGxFZGl0b3JJZCk7XG4gICAgaWYgKGlucHV0RWwpIHtcbiAgICAgIChpbnB1dEVsIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnNlbGVjdCgpO1xuICAgIH1cbiAgICB0aGlzLnNldEVkaXRpbmdSb3dDbGFzcyh0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEVuZHMgZWRpdGlvbiB3aXRoIHRoZSBhYmlsaXR5IHRvIHNraXAgb3Igc2F2ZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzYXZlQ2hhbmdlc1xuICAgKi9cbiAgZW5kRWRpdGlvbihzYXZlQ2hhbmdlczogYm9vbGVhbikge1xuICAgIGNvbnN0IG9Db2x1bW46IE9Db2x1bW4gPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy50YWJsZUNvbHVtbkF0dHIpO1xuICAgIGlmIChvQ29sdW1uKSB7XG4gICAgICBjb25zdCB1cGRhdGVPYnNlcnZlciA9IHRoaXMudGFibGUudXBkYXRlQ2VsbERhdGEob0NvbHVtbiwgdGhpcy5fcm93RGF0YSwgc2F2ZUNoYW5nZXMpO1xuICAgICAgaWYgKHVwZGF0ZU9ic2VydmVyKSB7XG4gICAgICAgIHVwZGF0ZU9ic2VydmVyLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMub25VcGRhdGVTdWNjZXNzKHJlcyk7XG4gICAgICAgICAgdGhpcy50YWJsZS5kYW9UYWJsZS5zZXREYXRhQXJyYXkodGhpcy50YWJsZS5kYW9UYWJsZS5kYXRhKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuX3Jvd0RhdGFbdGhpcy50YWJsZUNvbHVtbkF0dHJdID0gdGhpcy5vbGRWYWx1ZTtcbiAgICAgICAgICB0aGlzLnRhYmxlLmRhdGFTb3VyY2UudXBkYXRlUmVuZGVyZWRSb3dEYXRhKHRoaXMuX3Jvd0RhdGEpO1xuICAgICAgICAgIHRoaXMudGFibGUuc2hvd0RpYWxvZ0Vycm9yKGVycm9yLCAnTUVTU0FHRVMuRVJST1JfVVBEQVRFJyk7XG4gICAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQ29tbWl0cyBlZGl0aW9uXG4gICAqL1xuICBjb21taXRFZGl0aW9uKCkge1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy5fcm93RGF0YVt0aGlzLnRhYmxlQ29sdW1uQXR0cl07XG4gICAgICB0aGlzLl9yb3dEYXRhW3RoaXMudGFibGVDb2x1bW5BdHRyXSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAoIXRoaXMuaXNTaWxlbnRDb250cm9sKCkpIHtcbiAgICAgICAgdGhpcy5lbmRFZGl0aW9uKHRydWUpO1xuICAgICAgICB0aGlzLmVkaXRpb25Db21taXR0ZWQuZW1pdCh0aGlzLl9yb3dEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgdGFibGVDb2x1bW4oKTogT1RhYmxlQ29sdW1uIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVDb2x1bW47XG4gIH1cblxuICBzZXQgdGFibGVDb2x1bW4oYXJnOiBPVGFibGVDb2x1bW4pIHtcbiAgICB0aGlzLl90YWJsZUNvbHVtbiA9IGFyZztcbiAgICBpZiAoYXJnKSB7XG4gICAgICB0aGlzLl90YWJsZSA9IGFyZy50YWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFibGVDb2x1bW5BdHRyKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3RhYmxlQ29sdW1uKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdGFibGVDb2x1bW4uYXR0cjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHNldCB0YWJsZShhcmc6IE9UYWJsZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX3RhYmxlID0gYXJnO1xuICB9XG5cbiAgZ2V0IHRhYmxlKCk6IE9UYWJsZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICB9XG5cbiAgZ2V0IHJvd0RhdGEoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcm93RGF0YTtcbiAgfVxuXG4gIHNldCByb3dEYXRhKGFyZzogYW55KSB7XG4gICAgdGhpcy5fcm93RGF0YSA9IGFyZztcbiAgICBjb25zdCBjZWxsRGF0YSA9IHRoaXMuZ2V0Q2VsbERhdGEoKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGNlbGxEYXRhKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHZhbGlkYXRvcnNcbiAgICogQHJldHVybnMgdmFsaWRhdG9yc1xuICAgKi9cbiAgcmVzb2x2ZVZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIGlmICh0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm4gJiYgdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyVmFsaWRhdG9yc0ZuLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaCguLi50aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm4pO1xuICAgICAgRXJyb3JzVXRpbHMucHVzaFRvRXJyb3JzRGF0YSh0aGlzLCB0aGlzLnRhYmxlQ29sdW1uLmFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcmVxdWlyZWQpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cblxuICByZXNvbHZlQXN5bmNWYWxpZGF0b3JzKCk6IEFzeW5jVmFsaWRhdG9yRm5bXSB7XG4gICAgaWYgKHRoaXMudGFibGVDb2x1bW4uYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuICYmIHRoaXMudGFibGVDb2x1bW4uYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuLmxlbmd0aCA+IDApIHtcbiAgICAgIEVycm9yc1V0aWxzLnB1c2hUb0Vycm9yc0RhdGEodGhpcywgdGhpcy50YWJsZUNvbHVtbi5hbmd1bGFyVmFsaWRhdG9yc0ZuRXJyb3JzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGFibGVDb2x1bW4uYW5ndWxhckFzeW5jVmFsaWRhdG9yc0ZuIHx8IFtdXG4gIH1cblxuICBnZXRBY3RpdmVPRXJyb3JzKCkge1xuICAgIHJldHVybiBFcnJvcnNVdGlscy5nZXRBY3RpdmVPRXJyb3JzKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldEVycm9yVGV4dChvRXJyb3I6IGFueSkge1xuICAgIGlmICh0aGlzLnRhYmxlQ29sdW1uICYmIHRoaXMudGFibGVDb2x1bW4uZWRpdG9yICYmIHRoaXMudGFibGVDb2x1bW4uZWRpdG9yLmVycm9yc0RhdGEpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy50YWJsZUNvbHVtbi5lZGl0b3IuZXJyb3JzRGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG9FcnJvcik7XG4gICAgICByZXR1cm4gZXJyb3IgPyBlcnJvci50ZXh0IDogJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBFcnJvcnNVdGlscy51cGRhdGVGb3JtQ29udHJvbFZhbGlkYXRvcnModGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9yIGhhc1xuICAgKiBAcGFyYW0gZXJyb3JcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBlcnJvclxuICAgKi9cbiAgaGFzRXJyb3IoZXJyb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sICYmIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJiAodGhpcy5oYXNFcnJvckV4Y2x1c2l2ZShlcnJvcikgfHwgdGhpcy5mb3JtQ29udHJvbC5oYXNFcnJvcihlcnJvcikpO1xuICB9XG5cbiAgaGFzU29tZUVycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sICYmIHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm1Db250cm9sLmVycm9ycyk7XG4gIH1cblxuICBoYXNFcnJvckV4Y2x1c2l2ZShlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XG4gICAgY29uc3QgZXJyb3JzT3JkZXIgPSBbJ21hdERhdGVwaWNrZXJNYXgnLCAnbWF0RGF0ZXBpY2tlck1pbicsICdtYXREYXRlcGlja2VyRmlsdGVyJywgJ21hdERhdGVwaWNrZXJQYXJzZScsICdyZXF1aXJlZCddO1xuICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlcnJvcnMpKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGVycm9ycy5oYXNPd25Qcm9wZXJ0eShlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZXJyb3JzT3JkZXIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBoYXNFcnJvciA9IGVycm9ycy5oYXNPd25Qcm9wZXJ0eShlcnJvcnNPcmRlcltpXSk7XG4gICAgICAgICAgaWYgKGhhc0Vycm9yKSB7XG4gICAgICAgICAgICBoYXNFcnJvciA9IChlcnJvcnNPcmRlcltpXSA9PT0gZXJyb3IpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNFcnJvcjtcbiAgfVxuXG4gIGdldEVycm9yVmFsdWUoZXJyb3I6IHN0cmluZywgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbC5oYXNFcnJvcihlcnJvcikgPyB0aGlzLmZvcm1Db250cm9sLmdldEVycm9yKGVycm9yKVtwcm9wXSA/PyAnJyA6ICcnO1xuICB9XG5cbiAgb25Fc2NDbGlja2VkKCkge1xuICAgIGlmICghdGhpcy5pc1NpbGVudENvbnRyb2woKSkge1xuICAgICAgdGhpcy5lbmRFZGl0aW9uKGZhbHNlKTtcbiAgICAgIHRoaXMuZWRpdGlvbkNhbmNlbGxlZC5lbWl0KHRoaXMuX3Jvd0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc1NpbGVudENvbnRyb2woKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEFyZ3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbnRyb2xBcmdzLnNpbGVudDtcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1BsYWNlSG9sZGVyID9cbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQodGhpcy5vbGFiZWwgfHwgdGhpcy50YWJsZUNvbHVtbiA/ICh0aGlzLnRhYmxlQ29sdW1uLnRpdGxlIHx8IHRoaXMudGFibGVDb2x1bW5BdHRyKSA6IHRoaXMudGFibGVDb2x1bW5BdHRyKSA6XG4gICAgICB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25VcGRhdGVTdWNjZXNzKHJlczogYW55KSB7XG4gICAgT2JzZXJ2YWJsZVdyYXBwZXIuY2FsbEVtaXQodGhpcy5vblBvc3RVcGRhdGVSZWNvcmQsIHRoaXMuX3Jvd0RhdGEpO1xuICAgIGlmICh0aGlzLnNob3dOb3RpZmljYXRpb25PbkVkaXQpIHtcbiAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ01FU1NBR0VTLlVQREFURUQnLCB7IGljb246ICdjaGVja19jaXJjbGUnIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldCBlbmFibGVkKGFyZzogYm9vbGVhbikge1xuICAgIHRoaXMuX2VuYWJsZWQgPSBhcmc7XG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2VuYWJsZWQgPyB0aGlzLmZvcm1Db250cm9sLmVuYWJsZSgpIDogdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7XG4gIH1cblxuICBnZXRGb3JtQ29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbDtcbiAgfVxuXG4gIHNldEVkaXRpbmdSb3dDbGFzcyhhZGRDbGFzczogYm9vbGVhbikge1xuICAgIGNvbnN0IGlucHV0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNlbGxFZGl0b3JJZCk7XG4gICAgaWYgKGlucHV0RWwpIHtcbiAgICAgIGNvbnN0IHRhYmxlUm93RWwgPSBpbnB1dEVsLmNsb3Nlc3QoJ3RyJyk7XG4gICAgICBpZiAodGFibGVSb3dFbCkge1xuICAgICAgICBhZGRDbGFzcyA/IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGFibGVSb3dFbCwgJ28tdGFibGUtZWRpdGluZy1yb3cnKSA6XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0YWJsZVJvd0VsLCAnby10YWJsZS1lZGl0aW5nLXJvdycpXG4gICAgICAgIHRoaXMudGFibGUuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCB0b29sdGlwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGl0ZUVycm9yID0gdGhpcy5lcnJvck9wdGlvbnMudHlwZSA9PT0gQ29kZXMuT19NQVRfRVJST1JfTElURTtcbiAgICByZXR1cm4gbGl0ZUVycm9yICYmIHRoaXMuaGFzU29tZUVycm9yKCkgPyBFcnJvcnNVdGlscy5nZXRFcnJvcnNUb29sdGlwVGV4dCh0aGlzKSA6ICcnO1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBFcnJvcnNVdGlscy5nZXRUb29sdGlwQ2xhc3Nlcyh0aGlzKTtcbiAgfVxufVxuIl19