@theseam/ui-common 0.4.0-beta.4 → 0.4.0-beta.5

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 (538) hide show
  1. package/breadcrumbs/breadcrumb.d.ts +1 -1
  2. package/breadcrumbs/breadcrumbs-resolver.d.ts +1 -1
  3. package/core/common-behaviors/active.d.ts +1 -1
  4. package/core/common-behaviors/constructor.d.ts +1 -1
  5. package/core/common-behaviors/disabled.d.ts +1 -1
  6. package/core/common-behaviors/initialized.d.ts +1 -1
  7. package/core/common-behaviors/size.d.ts +1 -1
  8. package/core/common-behaviors/tabindex.d.ts +1 -1
  9. package/core/common-behaviors/theme.d.ts +1 -1
  10. package/data-exporter/data-exporter.d.ts +1 -1
  11. package/data-filters/data-filter.d.ts +3 -3
  12. package/data-filters/filters/data-filter-search/search-filter-options.d.ts +1 -1
  13. package/datatable/datatable-column/datatable-column.component.d.ts +1 -1
  14. package/datatable/models/preferences.d.ts +1 -1
  15. package/datatable/models/table-column.d.ts +1 -1
  16. package/datatable/services/columns-manager.service.d.ts +1 -1
  17. package/datatable-dynamic/datatable-dynamic-def.d.ts +3 -3
  18. package/datatable-dynamic/models/dynamic-datatable-action-menu-record.d.ts +1 -1
  19. package/dynamic/models/dynamic-value-base-type.d.ts +1 -1
  20. package/dynamic/models/dynamic-value-evaluatable-type.d.ts +1 -1
  21. package/dynamic/models/dynamic-value-primitive.d.ts +1 -1
  22. package/dynamic/models/dynamic-value.d.ts +1 -1
  23. package/dynamic/tokens/api-config.d.ts +1 -1
  24. package/esm2020/asset-reader/asset-reader-helper.service.mjs +3 -3
  25. package/esm2020/asset-reader/asset-reader.module.mjs +4 -4
  26. package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +12 -12
  27. package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +3 -3
  28. package/esm2020/breadcrumbs/breadcrumbs.module.mjs +4 -4
  29. package/esm2020/breadcrumbs/breadcrumbs.service.mjs +3 -3
  30. package/esm2020/buttons/badge-button/badge-button.component.mjs +6 -6
  31. package/esm2020/buttons/button/button.component.mjs +9 -9
  32. package/esm2020/buttons/buttons.module.mjs +4 -4
  33. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +3 -3
  34. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +5 -5
  35. package/esm2020/card/card-action/card-action.component.mjs +3 -3
  36. package/esm2020/card/card-body/card-body.component.mjs +3 -3
  37. package/esm2020/card/card-footer/card-footer.component.mjs +3 -3
  38. package/esm2020/card/card-header/card-header.component.mjs +3 -3
  39. package/esm2020/card/card.component.mjs +3 -3
  40. package/esm2020/card/card.module.mjs +4 -4
  41. package/esm2020/checkbox/checkbox.component.mjs +43 -43
  42. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  43. package/esm2020/checkbox/testing/checkbox.harness.mjs +1 -1
  44. package/esm2020/checkbox/testing/index.mjs +1 -1
  45. package/esm2020/confirm-dialog/confirm-click.directive.mjs +9 -9
  46. package/esm2020/confirm-dialog/confirm-dialog.component.mjs +3 -3
  47. package/esm2020/confirm-dialog/confirm-dialog.module.mjs +4 -4
  48. package/esm2020/confirm-dialog/confirm-dialog.service.mjs +3 -3
  49. package/esm2020/core/common-behaviors/active.mjs +3 -3
  50. package/esm2020/core/common-behaviors/disabled.mjs +3 -3
  51. package/esm2020/core/common-behaviors/size.mjs +6 -6
  52. package/esm2020/core/common-behaviors/tabindex.mjs +5 -5
  53. package/esm2020/core/common-behaviors/theme.mjs +6 -6
  54. package/esm2020/data-exporter/data-exporter.module.mjs +4 -4
  55. package/esm2020/data-exporter/exporters/csv-exporter.mjs +3 -3
  56. package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +3 -3
  57. package/esm2020/data-filters/data-filters.module.mjs +4 -4
  58. package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +10 -10
  59. package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +10 -10
  60. package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +11 -11
  61. package/esm2020/datatable/datatable/datatable.component.mjs +108 -108
  62. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +3 -3
  63. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +3 -3
  64. package/esm2020/datatable/datatable-column/datatable-column.component.mjs +7 -7
  65. package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +3 -3
  66. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +3 -3
  67. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +7 -7
  68. package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +3 -3
  69. package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +3 -3
  70. package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +8 -8
  71. package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +3 -3
  72. package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +3 -3
  73. package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +3 -3
  74. package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +3 -3
  75. package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +3 -3
  76. package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +3 -3
  77. package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +3 -3
  78. package/esm2020/datatable/datatable.module.mjs +4 -4
  79. package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +3 -3
  80. package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +11 -11
  81. package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +3 -3
  82. package/esm2020/datatable/directives/datatable-filter.directive.mjs +3 -3
  83. package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +3 -3
  84. package/esm2020/datatable/services/columns-alterations-manager.service.mjs +3 -3
  85. package/esm2020/datatable/services/columns-manager.service.mjs +3 -3
  86. package/esm2020/datatable/services/datatable-column-changes.service.mjs +3 -3
  87. package/esm2020/datatable/services/datatable-preferences.service.mjs +6 -6
  88. package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +3 -3
  89. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +12 -12
  90. package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +8 -8
  91. package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +6 -6
  92. package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +8 -8
  93. package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +4 -4
  94. package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +7 -7
  95. package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +3 -3
  96. package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +3 -3
  97. package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +3 -3
  98. package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +3 -3
  99. package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +3 -3
  100. package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +3 -3
  101. package/esm2020/dynamic/dynamic-value-helper.service.mjs +3 -3
  102. package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +3 -3
  103. package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +3 -3
  104. package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +4 -4
  105. package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +3 -3
  106. package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +3 -3
  107. package/esm2020/footer-bar/footer-bar.module.mjs +4 -4
  108. package/esm2020/form-field/form-field-error.directive.mjs +6 -6
  109. package/esm2020/form-field/form-field-help-text.directive.mjs +3 -3
  110. package/esm2020/form-field/form-field-label-tpl.directive.mjs +3 -3
  111. package/esm2020/form-field/form-field-required-indicator.component.mjs +3 -3
  112. package/esm2020/form-field/form-field-tokens.mjs +1 -1
  113. package/esm2020/form-field/form-field.component.mjs +48 -48
  114. package/esm2020/form-field/form-field.module.mjs +4 -4
  115. package/esm2020/form-field/input.directive.mjs +43 -43
  116. package/esm2020/form-field/testing/form-field-required-indicator.harness.mjs +1 -1
  117. package/esm2020/form-field/testing/index.mjs +1 -1
  118. package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +3 -3
  119. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +3 -3
  120. package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +3 -3
  121. package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +92 -92
  122. package/esm2020/form-field-error/form-field-error.module.mjs +4 -4
  123. package/esm2020/framework/base-layout/base-layout.component.mjs +6 -6
  124. package/esm2020/framework/base-layout/base-layout.module.mjs +4 -4
  125. package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +3 -3
  126. package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +3 -3
  127. package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +3 -3
  128. package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +10 -10
  129. package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +3 -3
  130. package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +3 -3
  131. package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +3 -3
  132. package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +3 -3
  133. package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +3 -3
  134. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +3 -3
  135. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +3 -3
  136. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +18 -18
  137. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +12 -12
  138. package/esm2020/framework/dashboard/dashboard-widgets-tokens.mjs +1 -1
  139. package/esm2020/framework/dashboard/dashboard.component.mjs +3 -3
  140. package/esm2020/framework/dashboard/dashboard.module.mjs +4 -4
  141. package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +4 -4
  142. package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +3 -3
  143. package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +3 -3
  144. package/esm2020/framework/schema-form/schema-form-framework.component.mjs +3 -3
  145. package/esm2020/framework/schema-form/schema-form-framework.mjs +3 -3
  146. package/esm2020/framework/schema-form/schema-form.module.mjs +4 -4
  147. package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +3 -3
  148. package/esm2020/framework/schema-form-controls/schema-form-controls.module.mjs +4 -4
  149. package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +3 -3
  150. package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +3 -3
  151. package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +3 -3
  152. package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +3 -3
  153. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +3 -3
  154. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +24 -24
  155. package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +3 -3
  156. package/esm2020/framework/side-nav/side-nav-tokens.mjs +1 -1
  157. package/esm2020/framework/side-nav/side-nav.component.mjs +17 -17
  158. package/esm2020/framework/side-nav/side-nav.module.mjs +4 -4
  159. package/esm2020/framework/side-nav/side-nav.service.mjs +3 -3
  160. package/esm2020/framework/top-bar/top-bar-item.directive.mjs +3 -3
  161. package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +3 -3
  162. package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +3 -3
  163. package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +3 -3
  164. package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +3 -3
  165. package/esm2020/framework/top-bar/top-bar.component.mjs +3 -3
  166. package/esm2020/framework/top-bar/top-bar.module.mjs +4 -4
  167. package/esm2020/google-maps/google-maps/google-maps.component.mjs +17 -17
  168. package/esm2020/google-maps/google-maps-controls.service.mjs +3 -3
  169. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +20 -20
  170. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +7 -7
  171. package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +7 -7
  172. package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +7 -7
  173. package/esm2020/google-maps/google-maps.module.mjs +4 -4
  174. package/esm2020/google-maps/google-maps.service.mjs +5 -5
  175. package/esm2020/google-maps/map-control.component.mjs +9 -9
  176. package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +3 -3
  177. package/esm2020/google-maps/map-value-manager.service.mjs +3 -3
  178. package/esm2020/graphql/datatable/datatable-graphql-query-ref.mjs +5 -5
  179. package/esm2020/graphql/datatable/datatable-graphql.service.mjs +3 -3
  180. package/esm2020/icon/icon/icon.component.mjs +3 -3
  181. package/esm2020/icon/icon-btn/icon-btn.component.mjs +24 -24
  182. package/esm2020/icon/icon-notification/icon-notification.component.mjs +3 -3
  183. package/esm2020/icon/icon.module.mjs +4 -4
  184. package/esm2020/layout/layout.module.mjs +4 -4
  185. package/esm2020/layout/layout.service.mjs +3 -3
  186. package/esm2020/loading/loading/loading.component.mjs +7 -7
  187. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  188. package/esm2020/loading/loading.module.mjs +4 -4
  189. package/esm2020/menu/menu-divider.component.mjs +3 -3
  190. package/esm2020/menu/menu-footer/menu-footer.component.mjs +3 -3
  191. package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +7 -7
  192. package/esm2020/menu/menu-header/menu-header.component.mjs +3 -3
  193. package/esm2020/menu/menu-item.component.mjs +3 -3
  194. package/esm2020/menu/menu-toggle.directive.mjs +42 -42
  195. package/esm2020/menu/menu.component.mjs +15 -15
  196. package/esm2020/menu/menu.module.mjs +4 -4
  197. package/esm2020/modal/directives/modal-close.directive.mjs +11 -11
  198. package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +3 -3
  199. package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +3 -3
  200. package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +3 -3
  201. package/esm2020/modal/directives/modal-title.directive.mjs +3 -3
  202. package/esm2020/modal/directives/modal.directive.mjs +3 -3
  203. package/esm2020/modal/modal/modal.component.mjs +19 -19
  204. package/esm2020/modal/modal-body/modal-body.component.mjs +3 -3
  205. package/esm2020/modal/modal-container/modal-container.component.mjs +12 -12
  206. package/esm2020/modal/modal-footer/modal-footer.component.mjs +3 -3
  207. package/esm2020/modal/modal-header/modal-header.component.mjs +3 -3
  208. package/esm2020/modal/modal.module.mjs +4 -4
  209. package/esm2020/modal/modal.service.mjs +16 -16
  210. package/esm2020/modal/route-modal/route-modal.component.mjs +3 -3
  211. package/esm2020/popover/popover/popover.component.mjs +18 -18
  212. package/esm2020/popover/popover.directive.mjs +32 -32
  213. package/esm2020/popover/popover.module.mjs +4 -4
  214. package/esm2020/progress/progress-circle/progress-circle.component.mjs +9 -9
  215. package/esm2020/progress/progress.module.mjs +4 -4
  216. package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +10 -10
  217. package/esm2020/scrollbar/overlay-scrollbars.service.mjs +3 -3
  218. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  219. package/esm2020/services/asset-loader.service.mjs +3 -3
  220. package/esm2020/services/font-loader.service.mjs +3 -3
  221. package/esm2020/services/router-helpers.service.mjs +3 -3
  222. package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +3 -3
  223. package/esm2020/shared/directives/auto-focus.directive.mjs +3 -3
  224. package/esm2020/shared/directives/click-outside.directive.mjs +9 -9
  225. package/esm2020/shared/directives/disable-control.directive.mjs +7 -7
  226. package/esm2020/shared/directives/elem-resized.directive.mjs +3 -3
  227. package/esm2020/shared/directives/hover-class-toggle.directive.mjs +10 -10
  228. package/esm2020/shared/directives/hover-class.directive.mjs +9 -9
  229. package/esm2020/shared/directives/ng-select-extra.directive.mjs +26 -26
  230. package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +10 -10
  231. package/esm2020/shared/pipes/mask-chars.pipe.mjs +3 -3
  232. package/esm2020/shared/pipes/truncate.pipe.mjs +3 -3
  233. package/esm2020/shared/shared.module.mjs +4 -4
  234. package/esm2020/storage/local-storage.service.mjs +3 -3
  235. package/esm2020/story-helpers/initial-route.service.mjs +3 -3
  236. package/esm2020/story-helpers/story-empty-with-route.component.mjs +3 -3
  237. package/esm2020/story-helpers/story-empty.component.mjs +3 -3
  238. package/esm2020/story-helpers/story-helper-components.module.mjs +4 -4
  239. package/esm2020/story-helpers/story-initial-route.mjs +4 -4
  240. package/esm2020/story-helpers/story-modal-container.component.mjs +6 -6
  241. package/esm2020/story-helpers/story-toastr.service.mjs +3 -3
  242. package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +3 -3
  243. package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +3 -3
  244. package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +3 -3
  245. package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +3 -3
  246. package/esm2020/tabbed/tabbed-models.mjs +1 -1
  247. package/esm2020/tabbed/tabbed.component.mjs +13 -13
  248. package/esm2020/tabbed/tabbed.module.mjs +4 -4
  249. package/esm2020/tabbed/tabbed.service.mjs +3 -3
  250. package/esm2020/table/table/table.component.mjs +11 -11
  251. package/esm2020/table/table.module.mjs +4 -4
  252. package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +3 -3
  253. package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +3 -3
  254. package/esm2020/table-cell-type/table-cell-type.module.mjs +4 -4
  255. package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +3 -3
  256. package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +3 -3
  257. package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +3 -3
  258. package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +31 -31
  259. package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +3 -3
  260. package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +6 -6
  261. package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +3 -3
  262. package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +3 -3
  263. package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +23 -23
  264. package/esm2020/table-cell-types/table-cell-types.module.mjs +4 -4
  265. package/esm2020/tel-input/phone-number.pipe.mjs +3 -3
  266. package/esm2020/tel-input/tel-input/tel-input.component.mjs +34 -34
  267. package/esm2020/tel-input/tel-input.directive.mjs +18 -18
  268. package/esm2020/tel-input/tel-input.module.mjs +4 -4
  269. package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +20 -20
  270. package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +6 -6
  271. package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +10 -10
  272. package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +3 -3
  273. package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +3 -3
  274. package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +3 -3
  275. package/esm2020/tiled-select/tiled-select.module.mjs +4 -4
  276. package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +3 -3
  277. package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +3 -3
  278. package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +3 -3
  279. package/esm2020/toggle-edit/toggle-edit.component.mjs +16 -16
  280. package/esm2020/toggle-edit/toggle-edit.module.mjs +4 -4
  281. package/esm2020/toggle-group/toggle-group-option.directive.mjs +12 -12
  282. package/esm2020/toggle-group/toggle-group.directive.mjs +3 -3
  283. package/esm2020/toggle-group/toggle-group.module.mjs +4 -4
  284. package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +3 -3
  285. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +3 -3
  286. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +3 -3
  287. package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +4 -4
  288. package/esm2020/utils/file-utils.mjs +2 -3
  289. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  290. package/esm2020/utils/geo-json/geo-json-to-area.mjs +1 -1
  291. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  292. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  293. package/esm2020/utils/geo-json/is-only-geometry-types.validator.mjs +1 -1
  294. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  295. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  296. package/esm2020/utils/geo-json/read-geo-file.mjs +5 -2
  297. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  298. package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +37 -37
  299. package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +4 -4
  300. package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +10 -10
  301. package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +3 -3
  302. package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +38 -38
  303. package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +4 -4
  304. package/esm2020/widget/directives/widget-drag-handle.directive.mjs +12 -12
  305. package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +3 -3
  306. package/esm2020/widget/directives/widget-title-tpl.directive.mjs +3 -3
  307. package/esm2020/widget/widget/widget.component.mjs +32 -35
  308. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +3 -3
  309. package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +4 -4
  310. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +3 -3
  311. package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +4 -4
  312. package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +3 -3
  313. package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +4 -4
  314. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +7 -7
  315. package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +4 -4
  316. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +3 -3
  317. package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +4 -4
  318. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +3 -3
  319. package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +4 -4
  320. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +3 -3
  321. package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +4 -4
  322. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +3 -3
  323. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +15 -15
  324. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +3 -3
  325. package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +4 -4
  326. package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +3 -3
  327. package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +4 -4
  328. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +3 -3
  329. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +8 -8
  330. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +3 -3
  331. package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +3 -3
  332. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +16 -16
  333. package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +4 -4
  334. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +3 -3
  335. package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +4 -4
  336. package/esm2020/widget/widget-footer/widget-footer.component.mjs +3 -3
  337. package/esm2020/widget/widget-registry.service.mjs +5 -5
  338. package/esm2020/widget/widget.module.mjs +10 -10
  339. package/fesm2015/theseam-ui-common-asset-reader.mjs +18 -18
  340. package/fesm2015/theseam-ui-common-asset-reader.mjs.map +1 -1
  341. package/fesm2015/theseam-ui-common-breadcrumbs.mjs +10 -10
  342. package/fesm2015/theseam-ui-common-buttons.mjs +26 -26
  343. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  344. package/fesm2015/theseam-ui-common-card.mjs +19 -19
  345. package/fesm2015/theseam-ui-common-checkbox.mjs +46 -46
  346. package/fesm2015/theseam-ui-common-checkbox.mjs.map +1 -1
  347. package/fesm2015/theseam-ui-common-confirm-dialog.mjs +18 -18
  348. package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  349. package/fesm2015/theseam-ui-common-core.mjs +18 -18
  350. package/fesm2015/theseam-ui-common-core.mjs.map +1 -1
  351. package/fesm2015/theseam-ui-common-data-exporter.mjs +10 -10
  352. package/fesm2015/theseam-ui-common-data-filters.mjs +32 -32
  353. package/fesm2015/theseam-ui-common-data-filters.mjs.map +1 -1
  354. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +46 -46
  355. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  356. package/fesm2015/theseam-ui-common-datatable.mjs +208 -208
  357. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  358. package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  359. package/fesm2015/theseam-ui-common-dynamic.mjs +21 -21
  360. package/fesm2015/theseam-ui-common-footer-bar.mjs +7 -7
  361. package/fesm2015/theseam-ui-common-form-field-error.mjs +104 -104
  362. package/fesm2015/theseam-ui-common-form-field-error.mjs.map +1 -1
  363. package/fesm2015/theseam-ui-common-form-field.mjs +107 -107
  364. package/fesm2015/theseam-ui-common-form-field.mjs.map +1 -1
  365. package/fesm2015/theseam-ui-common-framework.mjs +196 -196
  366. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  367. package/fesm2015/theseam-ui-common-google-maps.mjs +78 -78
  368. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  369. package/fesm2015/theseam-ui-common-graphql.mjs +7 -7
  370. package/fesm2015/theseam-ui-common-graphql.mjs.map +1 -1
  371. package/fesm2015/theseam-ui-common-icon.mjs +33 -33
  372. package/fesm2015/theseam-ui-common-icon.mjs.map +1 -1
  373. package/fesm2015/theseam-ui-common-layout.mjs +7 -7
  374. package/fesm2015/theseam-ui-common-loading.mjs +13 -13
  375. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  376. package/fesm2015/theseam-ui-common-menu.mjs +79 -79
  377. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  378. package/fesm2015/theseam-ui-common-modal.mjs +85 -85
  379. package/fesm2015/theseam-ui-common-modal.mjs.map +1 -1
  380. package/fesm2015/theseam-ui-common-popover.mjs +52 -52
  381. package/fesm2015/theseam-ui-common-popover.mjs.map +1 -1
  382. package/fesm2015/theseam-ui-common-progress.mjs +12 -12
  383. package/fesm2015/theseam-ui-common-progress.mjs.map +1 -1
  384. package/fesm2015/theseam-ui-common-scrollbar.mjs +16 -16
  385. package/fesm2015/theseam-ui-common-scrollbar.mjs.map +1 -1
  386. package/fesm2015/theseam-ui-common-services.mjs +9 -9
  387. package/fesm2015/theseam-ui-common-shared.mjs +84 -84
  388. package/fesm2015/theseam-ui-common-shared.mjs.map +1 -1
  389. package/fesm2015/theseam-ui-common-storage.mjs +3 -3
  390. package/fesm2015/theseam-ui-common-story-helpers.mjs +25 -25
  391. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  392. package/fesm2015/theseam-ui-common-tabbed.mjs +31 -31
  393. package/fesm2015/theseam-ui-common-tabbed.mjs.map +1 -1
  394. package/fesm2015/theseam-ui-common-table-cell-type.mjs +10 -10
  395. package/fesm2015/theseam-ui-common-table-cell-types.mjs +80 -80
  396. package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +1 -1
  397. package/fesm2015/theseam-ui-common-table.mjs +14 -14
  398. package/fesm2015/theseam-ui-common-table.mjs.map +1 -1
  399. package/fesm2015/theseam-ui-common-tel-input.mjs +59 -59
  400. package/fesm2015/theseam-ui-common-tel-input.mjs.map +1 -1
  401. package/fesm2015/theseam-ui-common-tiled-select.mjs +46 -46
  402. package/fesm2015/theseam-ui-common-tiled-select.mjs.map +1 -1
  403. package/fesm2015/theseam-ui-common-toggle-edit.mjs +28 -28
  404. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  405. package/fesm2015/theseam-ui-common-toggle-group.mjs +18 -18
  406. package/fesm2015/theseam-ui-common-toggle-group.mjs.map +1 -1
  407. package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  408. package/fesm2015/theseam-ui-common-utils.mjs +5 -4
  409. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  410. package/fesm2015/theseam-ui-common-viewers.mjs +93 -93
  411. package/fesm2015/theseam-ui-common-viewers.mjs.map +1 -1
  412. package/fesm2015/theseam-ui-common-widget.mjs +190 -193
  413. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  414. package/fesm2020/theseam-ui-common-asset-reader.mjs +18 -18
  415. package/fesm2020/theseam-ui-common-asset-reader.mjs.map +1 -1
  416. package/fesm2020/theseam-ui-common-breadcrumbs.mjs +10 -10
  417. package/fesm2020/theseam-ui-common-buttons.mjs +26 -26
  418. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  419. package/fesm2020/theseam-ui-common-card.mjs +19 -19
  420. package/fesm2020/theseam-ui-common-checkbox.mjs +46 -46
  421. package/fesm2020/theseam-ui-common-checkbox.mjs.map +1 -1
  422. package/fesm2020/theseam-ui-common-confirm-dialog.mjs +18 -18
  423. package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  424. package/fesm2020/theseam-ui-common-core.mjs +18 -18
  425. package/fesm2020/theseam-ui-common-core.mjs.map +1 -1
  426. package/fesm2020/theseam-ui-common-data-exporter.mjs +10 -10
  427. package/fesm2020/theseam-ui-common-data-filters.mjs +32 -32
  428. package/fesm2020/theseam-ui-common-data-filters.mjs.map +1 -1
  429. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +46 -46
  430. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  431. package/fesm2020/theseam-ui-common-datatable.mjs +208 -208
  432. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  433. package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +7 -7
  434. package/fesm2020/theseam-ui-common-dynamic.mjs +21 -21
  435. package/fesm2020/theseam-ui-common-footer-bar.mjs +7 -7
  436. package/fesm2020/theseam-ui-common-form-field-error.mjs +104 -104
  437. package/fesm2020/theseam-ui-common-form-field-error.mjs.map +1 -1
  438. package/fesm2020/theseam-ui-common-form-field.mjs +107 -107
  439. package/fesm2020/theseam-ui-common-form-field.mjs.map +1 -1
  440. package/fesm2020/theseam-ui-common-framework.mjs +196 -196
  441. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  442. package/fesm2020/theseam-ui-common-google-maps.mjs +78 -78
  443. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  444. package/fesm2020/theseam-ui-common-graphql.mjs +7 -7
  445. package/fesm2020/theseam-ui-common-graphql.mjs.map +1 -1
  446. package/fesm2020/theseam-ui-common-icon.mjs +33 -33
  447. package/fesm2020/theseam-ui-common-icon.mjs.map +1 -1
  448. package/fesm2020/theseam-ui-common-layout.mjs +7 -7
  449. package/fesm2020/theseam-ui-common-loading.mjs +13 -13
  450. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  451. package/fesm2020/theseam-ui-common-menu.mjs +77 -77
  452. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  453. package/fesm2020/theseam-ui-common-modal.mjs +85 -85
  454. package/fesm2020/theseam-ui-common-modal.mjs.map +1 -1
  455. package/fesm2020/theseam-ui-common-popover.mjs +52 -52
  456. package/fesm2020/theseam-ui-common-popover.mjs.map +1 -1
  457. package/fesm2020/theseam-ui-common-progress.mjs +12 -12
  458. package/fesm2020/theseam-ui-common-progress.mjs.map +1 -1
  459. package/fesm2020/theseam-ui-common-scrollbar.mjs +16 -16
  460. package/fesm2020/theseam-ui-common-scrollbar.mjs.map +1 -1
  461. package/fesm2020/theseam-ui-common-services.mjs +9 -9
  462. package/fesm2020/theseam-ui-common-shared.mjs +84 -84
  463. package/fesm2020/theseam-ui-common-shared.mjs.map +1 -1
  464. package/fesm2020/theseam-ui-common-storage.mjs +3 -3
  465. package/fesm2020/theseam-ui-common-story-helpers.mjs +25 -25
  466. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  467. package/fesm2020/theseam-ui-common-tabbed.mjs +31 -31
  468. package/fesm2020/theseam-ui-common-tabbed.mjs.map +1 -1
  469. package/fesm2020/theseam-ui-common-table-cell-type.mjs +10 -10
  470. package/fesm2020/theseam-ui-common-table-cell-types.mjs +80 -80
  471. package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +1 -1
  472. package/fesm2020/theseam-ui-common-table.mjs +14 -14
  473. package/fesm2020/theseam-ui-common-table.mjs.map +1 -1
  474. package/fesm2020/theseam-ui-common-tel-input.mjs +57 -57
  475. package/fesm2020/theseam-ui-common-tel-input.mjs.map +1 -1
  476. package/fesm2020/theseam-ui-common-tiled-select.mjs +46 -46
  477. package/fesm2020/theseam-ui-common-tiled-select.mjs.map +1 -1
  478. package/fesm2020/theseam-ui-common-toggle-edit.mjs +28 -28
  479. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  480. package/fesm2020/theseam-ui-common-toggle-group.mjs +18 -18
  481. package/fesm2020/theseam-ui-common-toggle-group.mjs.map +1 -1
  482. package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +13 -13
  483. package/fesm2020/theseam-ui-common-utils.mjs +5 -4
  484. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  485. package/fesm2020/theseam-ui-common-viewers.mjs +93 -93
  486. package/fesm2020/theseam-ui-common-viewers.mjs.map +1 -1
  487. package/fesm2020/theseam-ui-common-widget.mjs +190 -193
  488. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  489. package/framework/base-layout/base-layout-action.d.ts +1 -1
  490. package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +1 -1
  491. package/framework/side-nav/side-nav.models.d.ts +1 -1
  492. package/google-maps/map-value-manager.service.d.ts +1 -1
  493. package/graphql/datatable/datatable-graphql-query-ref.d.ts +2 -2
  494. package/graphql/datatable/datatable-graphql.service.d.ts +1 -1
  495. package/graphql/datatable/datatable-helpers.d.ts +2 -2
  496. package/graphql/datatable/map-filter-states.d.ts +2 -2
  497. package/graphql/datatable/map-page-info.d.ts +1 -1
  498. package/graphql/datatable/mapper-context.d.ts +1 -1
  499. package/graphql/models/gql-datatable-accessor.d.ts +1 -1
  500. package/graphql/models/hint-transformer.d.ts +1 -1
  501. package/icon/icon/icon.component.d.ts +1 -1
  502. package/icon/icon.d.ts +1 -1
  503. package/layout/breakpoint-aliases.d.ts +1 -1
  504. package/loading/loading.models.d.ts +1 -1
  505. package/modal/modal-config.d.ts +1 -1
  506. package/models/component-type.d.ts +1 -1
  507. package/models/size-prefixes.d.ts +1 -1
  508. package/models/size-types.d.ts +1 -1
  509. package/models/theme-prefixes.d.ts +1 -1
  510. package/models/theme-types.d.ts +2 -2
  511. package/package.json +1 -1
  512. package/scrollbar/overlay-scrollbars-config-model.d.ts +1 -1
  513. package/services/font-loader.service.d.ts +1 -1
  514. package/table/table/table.component.d.ts +1 -1
  515. package/table-cell-type/table-cell-type-models.d.ts +3 -3
  516. package/table-cell-type/table-cell-type-name.d.ts +1 -1
  517. package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +1 -1
  518. package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +1 -1
  519. package/table-cell-types/table-cell-type-date/table-cell-type-date.d.ts +1 -1
  520. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +1 -1
  521. package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +1 -1
  522. package/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.d.ts +1 -1
  523. package/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.d.ts +1 -1
  524. package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +1 -1
  525. package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +1 -1
  526. package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.d.ts +1 -1
  527. package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.d.ts +1 -1
  528. package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +1 -1
  529. package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +1 -1
  530. package/tel-input/utils/coerce-phone-number-format.d.ts +1 -1
  531. package/tiled-select/components/tiled-select/tiled-select.component.d.ts +1 -1
  532. package/tiled-select/tiled-select.models.d.ts +2 -2
  533. package/utils/file-utils.d.ts +1 -1
  534. package/utils/geo-json/read-geo-file.d.ts +1 -1
  535. package/utils/polling-ticker.d.ts +1 -1
  536. package/utils/subscriber-count.d.ts +1 -1
  537. package/widget/directives/widget-drag-handle.directive.d.ts +1 -1
  538. package/widget/widget/widget.component.d.ts +1 -6
@@ -13,33 +13,6 @@ import * as i6 from "@angular/router";
13
13
  import * as i7 from "@theseam/ui-common/icon";
14
14
  import * as i8 from "@theseam/ui-common/asset-reader";
15
15
  export class TableCellTypeIconComponent {
16
- get value() { return this._value; }
17
- set value(value) {
18
- this._value = value;
19
- this._icon = value ? getKnownIcon(value) || value : value;
20
- }
21
- get config() { return this._config; }
22
- set config(value) {
23
- this._config = value;
24
- if (value) {
25
- this.setAction(value.action);
26
- this._linkClass = this._parseConfigValue(value.linkClass);
27
- this._iconClass = this._parseConfigValue(value.iconClass);
28
- this._iconType = value.iconType;
29
- this._title = this._parseConfigValue(value.titleAttr);
30
- this._srOnly = this._parseConfigValue(value.srOnly);
31
- this._tooltip = this._parseConfigValue(value.tooltip);
32
- if (this._tooltip) {
33
- this._tooltipClass = this._parseConfigValue(value.tooltipClass);
34
- this._tooltipPlacement = this._parseConfigValue(value.tooltipPlacement) || 'auto';
35
- this._tooltipContainer = this._parseConfigValue(value.tooltipContainer);
36
- this._tooltipDisabled = false;
37
- }
38
- else {
39
- this._tooltipDisabled = true;
40
- }
41
- }
42
- }
43
16
  constructor(_cdf, _tableCellTypeHelpers, _datatable, _table, _tableData) {
44
17
  this._cdf = _cdf;
45
18
  this._tableCellTypeHelpers = _tableCellTypeHelpers;
@@ -93,6 +66,33 @@ export class TableCellTypeIconComponent {
93
66
  });
94
67
  }
95
68
  }
69
+ get value() { return this._value; }
70
+ set value(value) {
71
+ this._value = value;
72
+ this._icon = value ? getKnownIcon(value) || value : value;
73
+ }
74
+ get config() { return this._config; }
75
+ set config(value) {
76
+ this._config = value;
77
+ if (value) {
78
+ this.setAction(value.action);
79
+ this._linkClass = this._parseConfigValue(value.linkClass);
80
+ this._iconClass = this._parseConfigValue(value.iconClass);
81
+ this._iconType = value.iconType;
82
+ this._title = this._parseConfigValue(value.titleAttr);
83
+ this._srOnly = this._parseConfigValue(value.srOnly);
84
+ this._tooltip = this._parseConfigValue(value.tooltip);
85
+ if (this._tooltip) {
86
+ this._tooltipClass = this._parseConfigValue(value.tooltipClass);
87
+ this._tooltipPlacement = this._parseConfigValue(value.tooltipPlacement) || 'auto';
88
+ this._tooltipContainer = this._parseConfigValue(value.tooltipContainer);
89
+ this._tooltipDisabled = false;
90
+ }
91
+ else {
92
+ this._tooltipDisabled = true;
93
+ }
94
+ }
95
+ }
96
96
  ngOnInit() { }
97
97
  ngOnDestroy() {
98
98
  this._ngUnsubscribe.next(undefined);
@@ -150,9 +150,9 @@ export class TableCellTypeIconComponent {
150
150
  }
151
151
  }
152
152
  }
153
- TableCellTypeIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
154
- TableCellTypeIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypeIconComponent, selector: "seam-table-cell-type-icon", inputs: { value: "value", config: "config" }, host: { properties: { "class.datatable-cell-type": "this._isDatatable" } }, ngImport: i0, template: "<ng-container *ngIf=\"_icon\">\n <div *ngIf=\"!_tplType || _tplType === 'default'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass || ''\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n\n <div *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n</ng-container>\n", styles: [":host.datatable-cell-type ::ng-deep .seam-icon--img{max-height:40px}:host.datatable-cell-type a{max-height:40px}:host.datatable-cell-type button{max-height:40px}:host:not(.datatable-cell-type) ::ng-deep .seam-icon--img{max-height:20px}:host:not(.datatable-cell-type) a{max-height:20px}:host:not(.datatable-cell-type) button{max-height:20px}.datatable-icon-fix{margin-top:calc(-1px - .75rem);height:50px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i8.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeIconComponent, decorators: [{
153
+ TableCellTypeIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
154
+ TableCellTypeIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypeIconComponent, selector: "seam-table-cell-type-icon", inputs: { value: "value", config: "config" }, host: { properties: { "class.datatable-cell-type": "this._isDatatable" } }, ngImport: i0, template: "<ng-container *ngIf=\"_icon\">\n <div *ngIf=\"!_tplType || _tplType === 'default'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass || ''\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n\n <div *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n</ng-container>\n", styles: [":host.datatable-cell-type ::ng-deep .seam-icon--img{max-height:40px}:host.datatable-cell-type a{max-height:40px}:host.datatable-cell-type button{max-height:40px}:host:not(.datatable-cell-type) ::ng-deep .seam-icon--img{max-height:20px}:host:not(.datatable-cell-type) a{max-height:20px}:host:not(.datatable-cell-type) button{max-height:20px}.datatable-icon-fix{margin-top:calc(-1px - .75rem);height:50px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i8.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeIconComponent, decorators: [{
156
156
  type: Component,
157
157
  args: [{ selector: 'seam-table-cell-type-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"_icon\">\n <div *ngIf=\"!_tplType || _tplType === 'default'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass || ''\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </a>\n </div>\n\n <div *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n\n <div *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [ngbTooltip]=\"_tooltip\"\n [tooltipClass]=\"$any(_tooltipClass)\"\n [placement]=\"$any(_tooltipPlacement)\"\n [container]=\"$any(_tooltipContainer)\"\n [disableTooltip]=\"_tooltipDisabled\">\n <seam-icon *ngIf=\"_icon\" iconType=\"styled-square\" [icon]=\"_icon\" size=\"lg\" [iconType]=\"_iconType\" [iconClass]=\"_iconClass\"></seam-icon>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </button>\n </div>\n</ng-container>\n", styles: [":host.datatable-cell-type ::ng-deep .seam-icon--img{max-height:40px}:host.datatable-cell-type a{max-height:40px}:host.datatable-cell-type button{max-height:40px}:host:not(.datatable-cell-type) ::ng-deep .seam-icon--img{max-height:20px}:host:not(.datatable-cell-type) a{max-height:20px}:host:not(.datatable-cell-type) button{max-height:20px}.datatable-icon-fix{margin-top:calc(-1px - .75rem);height:50px}\n"] }]
158
158
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableCellTypesHelpersService }, { type: i2.DatatableComponent, decorators: [{
@@ -172,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
172
172
  type: HostBinding,
173
173
  args: ['class.datatable-cell-type']
174
174
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLWljb24vdGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLWljb24vdGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQTZCLE1BQU0seUJBQXlCLENBQUE7QUFFakYsT0FBTyxFQUFnQyxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTs7Ozs7Ozs7OztBQWFsRyxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLElBQ0ksS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLENBQUMsS0FBZ0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUMzRCxDQUFDO0lBR0QsSUFDSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBLENB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S0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUN6QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDbkMsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7O3VIQXZMVSwwQkFBMEIsK0xBcUVmLGVBQWU7MkdBckUxQiwwQkFBMEIsMkxDOUJ2Qyw4bElBMEZBOzJGRDVEYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFxRTVDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs0Q0FoRWpDLEtBQUs7c0JBRFIsS0FBSztnQkFTRixNQUFNO3NCQURULEtBQUs7Z0JBa0RvQyxZQUFZO3NCQUFyRCxXQUFXO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgZ2V0S25vd25JY29uLCBTZWFtSWNvbiwgVGhlU2VhbUljb25UeXBlIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZSdcbmltcG9ydCB7IFRhYmxlQ2VsbFR5cGVzSGVscGVyc1NlcnZpY2UsIFRBQkxFX0NFTExfREFUQSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGUnXG5pbXBvcnQgdHlwZSB7IFRhYmxlQ2VsbERhdGEsIFRoZVNlYW1UYWJsZUNvbHVtbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGUnXG5cbmltcG9ydCB7IFRhYmxlQ2VsbFR5cGVDb25maWdJY29uLCBUYWJsZUNlbGxUeXBlSWNvbkNvbmZpZ0FjdGlvbiB9IGZyb20gJy4vdGFibGUtY2VsbC10eXBlLWljb24tY29uZmlnJ1xuXG5leHBvcnQgdHlwZSBJY29uVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnIHwgJ2xpbmsnIHwgJ2xpbmstZXh0ZXJuYWwnIHwgJ2xpbmstZW5jcnlwdGVkJyB8ICdidXR0b24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLXR5cGUtaWNvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxUeXBlSWNvbkNvbXBvbmVudDxSID0gYW55LCBWID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZVxuICAgIHRoaXMuX2ljb24gPSB2YWx1ZSA/IGdldEtub3duSWNvbih2YWx1ZSkgfHwgdmFsdWUgOiB2YWx1ZVxuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbmZpZygpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZyB9XG4gIHNldCBjb25maWcodmFsdWU6IFRhYmxlQ2VsbFR5cGVDb25maWdJY29uIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldEFjdGlvbih2YWx1ZS5hY3Rpb24pXG4gICAgICB0aGlzLl9saW5rQ2xhc3MgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKHZhbHVlLmxpbmtDbGFzcylcbiAgICAgIHRoaXMuX2ljb25DbGFzcyA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUuaWNvbkNsYXNzKVxuICAgICAgdGhpcy5faWNvblR5cGUgPSB2YWx1ZS5pY29uVHlwZVxuICAgICAgdGhpcy5fdGl0bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKHZhbHVlLnRpdGxlQXR0cilcbiAgICAgIHRoaXMuX3NyT25seSA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUuc3JPbmx5KVxuICAgICAgdGhpcy5fdG9vbHRpcCA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUudG9vbHRpcClcbiAgICAgIGlmICh0aGlzLl90b29sdGlwKSB7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBDbGFzcyA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUudG9vbHRpcENsYXNzKVxuICAgICAgICB0aGlzLl90b29sdGlwUGxhY2VtZW50ID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS50b29sdGlwUGxhY2VtZW50KSB8fCAnYXV0bydcbiAgICAgICAgdGhpcy5fdG9vbHRpcENvbnRhaW5lciA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUudG9vbHRpcENvbnRhaW5lcilcbiAgICAgICAgdGhpcy5fdG9vbHRpcERpc2FibGVkID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3Rvb2x0aXBEaXNhYmxlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnOiBUYWJsZUNlbGxUeXBlQ29uZmlnSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBfaWNvbjogU2VhbUljb24gfCB1bmRlZmluZWQgfCBudWxsXG4gIF9saW5rPzogc3RyaW5nXG4gIF9xdWVyeVBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9XG4gIF90cGxUeXBlOiBJY29uVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnXG4gIF90aXRsZT86IHN0cmluZ1xuICBfc3JPbmx5Pzogc3RyaW5nXG4gIF9saW5rQ2xhc3M/OiBzdHJpbmdcbiAgX2ljb25DbGFzcz86IHN0cmluZ1xuICBfaWNvblR5cGU/OiBUaGVTZWFtSWNvblR5cGVcbiAgX3RhcmdldD86IHN0cmluZ1xuICBfdG9vbHRpcD86IHN0cmluZ1xuICBfdG9vbHRpcENsYXNzPzogc3RyaW5nXG4gIF90b29sdGlwUGxhY2VtZW50Pzogc3RyaW5nXG4gIF90b29sdGlwQ29udGFpbmVyPzogc3RyaW5nXG4gIF90b29sdGlwRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlXG5cbiAgX2J1dHRvbkFjdGlvbj86IFRhYmxlQ2VsbFR5cGVJY29uQ29uZmlnQWN0aW9uXG5cbiAgX3RhYmxlQ2VsbERhdGE/OiBUYWJsZUNlbGxEYXRhPCdpY29uJywgVGFibGVDZWxsVHlwZUNvbmZpZ0ljb24+XG4gIF9yb3c/OiBhbnlcbiAgX3Jvd0luZGV4PzogbnVtYmVyXG4gIF9jb2xEYXRhPzogVGhlU2VhbVRhYmxlQ29sdW1uPCdpY29uJywgVGFibGVDZWxsVHlwZUNvbmZpZ0ljb24+XG5cbiAgX2Rvd25sb2FkPzogYm9vbGVhblxuICBfZGV0ZWN0TWltZUNvbnRlbnQ/OiBib29sZWFuXG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRhdGFibGUtY2VsbC10eXBlJykgX2lzRGF0YXRhYmxlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZGY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3RhYmxlQ2VsbFR5cGVIZWxwZXJzOiBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGF0YWJsZT86IERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF90YWJsZT86IFRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFCTEVfQ0VMTF9EQVRBKSBfdGFibGVEYXRhPzogVGFibGVDZWxsRGF0YTwnaWNvbicsIFRhYmxlQ2VsbFR5cGVDb25maWdJY29uPlxuICApIHtcbiAgICBpZiAoX2RhdGF0YWJsZSkge1xuICAgICAgdGhpcy5faXNEYXRhdGFibGUgPSB0cnVlXG4gICAgICAvLyBjb25zb2xlLmxvZygnaXNEYXRhVGFibGUnKVxuICAgIH1cbiAgICAvLyBpZiAoX3RhYmxlKSB7XG4gICAgLy8gICBjb25zb2xlLmxvZygnaXNUYWJsZScpXG4gICAgLy8gfVxuXG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG4gICAgdGhpcy5fdGFibGVDZWxsRGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMuX3JvdyA9IF9kYXRhICYmIF9kYXRhLnJvd1xuICAgIHRoaXMuX3Jvd0luZGV4ID0gX2RhdGEgJiYgX2RhdGEucm93SW5kZXhcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIHRoaXMuX2NvbERhdGEgPSBfZGF0YSAmJiBfZGF0YS5jb2xEYXRhXG4gICAgaWYgKF9kYXRhICYmIF9kYXRhLmNvbERhdGEgJiYgKDxhbnk+X2RhdGEuY29sRGF0YSkuY2VsbFR5cGVDb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gKDxhbnk+X2RhdGEuY29sRGF0YSkuY2VsbFR5cGVDb25maWdcbiAgICB9XG5cbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmICh2LmNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LmNoYW5nZXMudmFsdWUuY3VycmVudFZhbHVlXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuX2NvbmZpZ1xuICAgICAgICAgICAgdGhpcy5fY2RmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93JykpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQodW5kZWZpbmVkKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbiAgcHVibGljIHNldEFjdGlvbihjb25maWdBY3Rpb24/OiBUYWJsZUNlbGxUeXBlSWNvbkNvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBJY29uVGVtcGxhdGVUeXBlID0gJ2RlZmF1bHQnXG4gICAgbGV0IGxpbms6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGxldCBkb3dubG9hZDogYm9vbGVhbiA9IGZhbHNlXG4gICAgbGV0IGRldGVjdE1pbWVDb250ZW50ID0gZmFsc2VcbiAgICBsZXQgdGFyZ2V0OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICBsZXQgcXVlcnlQYXJhbXM6IHsgW2w6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkXG5cbiAgICBpZiAoY29uZmlnQWN0aW9uKSB7XG4gICAgICBpZiAoY29uZmlnQWN0aW9uLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgICBsaW5rID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24ubGluaylcbiAgICAgICAgaWYgKGxpbmsgIT09IHVuZGVmaW5lZCAmJiBsaW5rICE9PSBudWxsKSB7XG4gICAgICAgICAgbmV3VHBsVHlwZSA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLmFzc2V0KVxuICAgICAgICAgICAgPyAnbGluay1lbmNyeXB0ZWQnXG4gICAgICAgICAgICA6IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLmV4dGVybmFsKSA/ICdsaW5rLWV4dGVybmFsJyA6ICdsaW5rJ1xuICAgICAgICAgIGRvd25sb2FkID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kb3dubG9hZClcbiAgICAgICAgICBkZXRlY3RNaW1lQ29udGVudCA9ICEhdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZGV0ZWN0TWltZUNvbnRlbnQpXG4gICAgICAgICAgdGFyZ2V0ID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24udGFyZ2V0KVxuICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24ucXVlcnlQYXJhbXMpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY29uZmlnQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgICAgbmV3VHBsVHlwZSA9ICdidXR0b24nXG4gICAgICAgIHRoaXMuX2J1dHRvbkFjdGlvbiA9IGNvbmZpZ0FjdGlvblxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3RwbFR5cGUgPSBuZXdUcGxUeXBlXG4gICAgdGhpcy5fbGluayA9IGxpbmtcbiAgICB0aGlzLl9kb3dubG9hZCA9IGRvd25sb2FkXG4gICAgdGhpcy5fZGV0ZWN0TWltZUNvbnRlbnQgPSBkZXRlY3RNaW1lQ29udGVudFxuICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldFxuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXNcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlQ29uZmlnVmFsdWUodmFsOiBhbnkpIHtcbiAgICBjb25zdCBjb250ZXh0Rm4gPSAoKSA9PiB0aGlzLl90YWJsZUNlbGxUeXBlSGVscGVycy5nZXRWYWx1ZUNvbnRleHQodmFsLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgIHJldHVybiB0aGlzLl90YWJsZUNlbGxUeXBlSGVscGVycy5wYXJzZVZhbHVlUHJvcCh2YWwsIGNvbnRleHRGbilcbiAgfVxuXG4gIF9kb0J1dHRvbkFjdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYnV0dG9uQWN0aW9uICYmIHRoaXMuX2J1dHRvbkFjdGlvbi50eXBlID09PSAnbW9kYWwnKSB7XG4gICAgICBjb25zdCBjb250ZXh0Rm4gPSAoKSA9PiB0aGlzLl90YWJsZUNlbGxUeXBlSGVscGVycy5nZXRWYWx1ZUNvbnRleHQodGhpcy52YWx1ZSwgdGhpcy5fdGFibGVDZWxsRGF0YSlcbiAgICAgIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmhhbmRsZU1vZGFsQWN0aW9uKHRoaXMuX2J1dHRvbkFjdGlvbiwgY29udGV4dEZuKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIHIgPT4ge30sXG4gICAgICAgICAgZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSxcbiAgICAgICAgICAoKSA9PiB0aGlzLl9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hY3Rpb25SZWZyZXNoUmVxdWVzdCgpIHtcbiAgICBpZiAodGhpcy5fZGF0YXRhYmxlKSB7XG4gICAgICB0aGlzLl9kYXRhdGFibGUudHJpZ2dlckFjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3RhYmxlKSB7XG4gICAgICB0aGlzLl90YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiX2ljb25cIj5cbiAgPGRpdiAqbmdJZj1cIiFfdHBsVHlwZSB8fCBfdHBsVHlwZSA9PT0gJ2RlZmF1bHQnXCJcbiAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1maXhdPVwiX2lzRGF0YXRhYmxlXCI+XG4gICAgPGEgY2xhc3M9XCJkLWJsb2NrIG0tYXV0b3t7IF9saW5rQ2xhc3MgPyAnICcgKyBfbGlua0NsYXNzIDogJycgfX1cIlxuICAgICAgW2F0dHIudGl0bGVdPVwiX3Rvb2x0aXBEaXNhYmxlZCA/IF90aXRsZSA6IHVuZGVmaW5lZFwiXG4gICAgICBbYXR0ci50YXJnZXRdPVwiX3RhcmdldFwiXG4gICAgICBbbmdiVG9vbHRpcF09XCJfdG9vbHRpcFwiXG4gICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkoX3Rvb2x0aXBDbGFzcylcIlxuICAgICAgW3BsYWNlbWVudF09XCIkYW55KF90b29sdGlwUGxhY2VtZW50KVwiXG4gICAgICBbY29udGFpbmVyXT1cIiRhbnkoX3Rvb2x0aXBDb250YWluZXIpXCJcbiAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJfdG9vbHRpcERpc2FibGVkXCI+XG4gICAgICA8c2VhbS1pY29uIFtpY29uXT1cIl9pY29uXCIgc2l6ZT1cImxnXCIgW2ljb25UeXBlXT1cIl9pY29uVHlwZVwiIFtpY29uQ2xhc3NdPVwiX2ljb25DbGFzcyB8fCAnJ1wiPjwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gKm5nSWY9XCJfc3JPbmx5XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgX3NyT25seSB9fTwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmsnXCJcbiAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1maXhdPVwiX2lzRGF0YXRhYmxlXCI+XG4gICAgPGEgY2xhc3M9XCJkLWJsb2NrIG0tYXV0b3t7IF9saW5rQ2xhc3MgPyAnICcgKyBfbGlua0NsYXNzIDogJycgfX1cIlxuICAgICAgW3JvdXRlckxpbmtdPVwiX2xpbmtcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIl9xdWVyeVBhcmFtc1wiXG4gICAgICBbYXR0ci50aXRsZV09XCJfdG9vbHRpcERpc2FibGVkID8gX3RpdGxlIDogdW5kZWZpbmVkXCJcbiAgICAgIFthdHRyLnRhcmdldF09XCJfdGFyZ2V0XCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIl90b29sdGlwXCJcbiAgICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShfdG9vbHRpcENsYXNzKVwiXG4gICAgICBbcGxhY2VtZW50XT1cIiRhbnkoX3Rvb2x0aXBQbGFjZW1lbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJGFueShfdG9vbHRpcENvbnRhaW5lcilcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIl90b29sdGlwRGlzYWJsZWRcIj5cbiAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJfaWNvblwiIFtpY29uXT1cIl9pY29uXCIgc2l6ZT1cImxnXCIgW2ljb25UeXBlXT1cIl9pY29uVHlwZVwiIFtpY29uQ2xhc3NdPVwiX2ljb25DbGFzc1wiPjwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gKm5nSWY9XCJfc3JPbmx5XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgX3NyT25seSB9fTwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZXh0ZXJuYWwnXCJcbiAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1maXhdPVwiX2lzRGF0YXRhYmxlXCI+XG4gICAgPGEgY2xhc3M9XCJkLWJsb2NrIG0tYXV0b3t7IF9saW5rQ2xhc3MgPyAnICcgKyBfbGlua0NsYXNzIDogJycgfX1cIlxuICAgICAgW2F0dHIuaHJlZl09XCJfbGlua1wiXG4gICAgICBbYXR0ci50aXRsZV09XCJfdG9vbHRpcERpc2FibGVkID8gX3RpdGxlIDogdW5kZWZpbmVkXCJcbiAgICAgIFthdHRyLnRhcmdldF09XCJfdGFyZ2V0XCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIl90b29sdGlwXCJcbiAgICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShfdG9vbHRpcENsYXNzKVwiXG4gICAgICBbcGxhY2VtZW50XT1cIiRhbnkoX3Rvb2x0aXBQbGFjZW1lbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJGFueShfdG9vbHRpcENvbnRhaW5lcilcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIl90b29sdGlwRGlzYWJsZWRcIj5cbiAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJfaWNvblwiIFtpY29uXT1cIl9pY29uXCIgc2l6ZT1cImxnXCIgW2ljb25UeXBlXT1cIl9pY29uVHlwZVwiIFtpY29uQ2xhc3NdPVwiX2ljb25DbGFzc1wiPjwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gKm5nSWY9XCJfc3JPbmx5XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgX3NyT25seSB9fTwvc3Bhbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZW5jcnlwdGVkJ1wiXG4gICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICBbY2xhc3MuZGF0YXRhYmxlLWljb24tZml4XT1cIl9pc0RhdGF0YWJsZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBtLWF1dG97eyBfbGlua0NsYXNzID8gJyAnICsgX2xpbmtDbGFzcyA6ICcnIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW3NlYW1FbmNyeXB0ZWRBc3NldExpbmtdPVwiX2xpbmtcIlxuICAgICAgW3NlYW1EZXRlY3RNaW1lRnJvbUNvbnRlbnRdPVwiX2RldGVjdE1pbWVDb250ZW50XCJcbiAgICAgIFtzZWFtRG93bmxvYWRBc3NldF09XCJfZG93bmxvYWRcIlxuICAgICAgW2F0dHIudGl0bGVdPVwiX3Rvb2x0aXBEaXNhYmxlZCA/IF90aXRsZSA6IHVuZGVmaW5lZFwiXG4gICAgICBbbmdiVG9vbHRpcF09XCJfdG9vbHRpcFwiXG4gICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkoX3Rvb2x0aXBDbGFzcylcIlxuICAgICAgW3BsYWNlbWVudF09XCIkYW55KF90b29sdGlwUGxhY2VtZW50KVwiXG4gICAgICBbY29udGFpbmVyXT1cIiRhbnkoX3Rvb2x0aXBDb250YWluZXIpXCJcbiAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJfdG9vbHRpcERpc2FibGVkXCI+XG4gICAgICA8c2VhbS1pY29uICpuZ0lmPVwiX2ljb25cIiBpY29uVHlwZT1cInN0eWxlZC1zcXVhcmVcIiBbaWNvbl09XCJfaWNvblwiIHNpemU9XCJsZ1wiIFtpY29uVHlwZV09XCJfaWNvblR5cGVcIiBbaWNvbkNsYXNzXT1cIl9pY29uQ2xhc3NcIj48L3NlYW0taWNvbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiX3NyT25seVwiIGNsYXNzPVwic3Itb25seVwiPnt7IF9zck9ubHkgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2J1dHRvbidcIlxuICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLWZpeF09XCJfaXNEYXRhdGFibGVcIlxuICAgIChjbGljayk9XCJfZG9CdXR0b25BY3Rpb24oKVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMCBtLWF1dG97eyBfbGlua0NsYXNzID8gJyAnICsgX2xpbmtDbGFzcyA6ICcnIH19XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIudGl0bGVdPVwiX3Rvb2x0aXBEaXNhYmxlZCA/IF90aXRsZSA6IHVuZGVmaW5lZFwiXG4gICAgICBbbmdiVG9vbHRpcF09XCJfdG9vbHRpcFwiXG4gICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkoX3Rvb2x0aXBDbGFzcylcIlxuICAgICAgW3BsYWNlbWVudF09XCIkYW55KF90b29sdGlwUGxhY2VtZW50KVwiXG4gICAgICBbY29udGFpbmVyXT1cIiRhbnkoX3Rvb2x0aXBDb250YWluZXIpXCJcbiAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJfdG9vbHRpcERpc2FibGVkXCI+XG4gICAgICA8c2VhbS1pY29uICpuZ0lmPVwiX2ljb25cIiBpY29uVHlwZT1cInN0eWxlZC1zcXVhcmVcIiBbaWNvbl09XCJfaWNvblwiIHNpemU9XCJsZ1wiIFtpY29uVHlwZV09XCJfaWNvblR5cGVcIiBbaWNvbkNsYXNzXT1cIl9pY29uQ2xhc3NcIj48L3NlYW0taWNvbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiX3NyT25seVwiIGNsYXNzPVwic3Itb25seVwiPnt7IF9zck9ubHkgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLWljb24vdGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLWljb24vdGFibGUtY2VsbC10eXBlLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQTZCLE1BQU0seUJBQXlCLENBQUE7QUFFakYsT0FBTyxFQUFnQyxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTs7Ozs7Ozs7OztBQWFsRyxNQUFNLE9BQU8sMEJBQTBCO0lBZ0VyQyxZQUNVLElBQXVCLEVBQ3ZCLHFCQUFtRCxFQUN2QyxVQUErQixFQUMvQixNQUF1QixFQUNOLFVBQTJEO1FBSnhGLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBOEI7UUFDdkMsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFsRTVCLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQXFDckQsYUFBUSxHQUFxQixTQUFTLENBQUE7UUFXdEMscUJBQWdCLEdBQVksSUFBSSxDQUFBO1FBWVUs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QyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ3pCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUNuQyxDQUFBO1NBQ0o7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixFQUFFLENBQUE7U0FDOUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzFDO0lBQ0gsQ0FBQzs7dUhBdkxVLDBCQUEwQiwrTEFxRWYsZUFBZTsyR0FyRTFCLDBCQUEwQiwyTEM5QnZDLDhsSUEwRkE7MkZENURhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXFFNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQWhFakMsS0FBSztzQkFEUixLQUFLO2dCQVNGLE1BQU07c0JBRFQsS0FBSztnQkFrRG9DLFlBQVk7c0JBQXJELFdBQVc7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGF0YWJsZUNvbXBvbmVudCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhdGFibGUnXG5pbXBvcnQgeyBnZXRLbm93bkljb24sIFNlYW1JY29uLCBUaGVTZWFtSWNvblR5cGUgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vaWNvbidcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RhYmxlJ1xuaW1wb3J0IHsgVGFibGVDZWxsVHlwZXNIZWxwZXJzU2VydmljZSwgVEFCTEVfQ0VMTF9EQVRBIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZSdcbmltcG9ydCB0eXBlIHsgVGFibGVDZWxsRGF0YSwgVGhlU2VhbVRhYmxlQ29sdW1uIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZSdcblxuaW1wb3J0IHsgVGFibGVDZWxsVHlwZUNvbmZpZ0ljb24sIFRhYmxlQ2VsbFR5cGVJY29uQ29uZmlnQWN0aW9uIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtaWNvbi1jb25maWcnXG5cbmV4cG9ydCB0eXBlIEljb25UZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCcgfCAnbGluaycgfCAnbGluay1leHRlcm5hbCcgfCAnbGluay1lbmNyeXB0ZWQnIHwgJ2J1dHRvbidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJsZS1jZWxsLXR5cGUtaWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNlbGwtdHlwZS1pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFR5cGVJY29uQ29tcG9uZW50PFIgPSBhbnksIFYgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWUgfVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlXG4gICAgdGhpcy5faWNvbiA9IHZhbHVlID8gZ2V0S25vd25JY29uKHZhbHVlKSB8fCB2YWx1ZSA6IHZhbHVlXG4gIH1cbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKVxuICBnZXQgY29uZmlnKCkgeyByZXR1cm4gdGhpcy5fY29uZmlnIH1cbiAgc2V0IGNvbmZpZyh2YWx1ZTogVGFibGVDZWxsVHlwZUNvbmZpZ0ljb24gfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29uZmlnID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0QWN0aW9uKHZhbHVlLmFjdGlvbilcbiAgICAgIHRoaXMuX2xpbmtDbGFzcyA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUubGlua0NsYXNzKVxuICAgICAgdGhpcy5faWNvbkNsYXNzID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS5pY29uQ2xhc3MpXG4gICAgICB0aGlzLl9pY29uVHlwZSA9IHZhbHVlLmljb25UeXBlXG4gICAgICB0aGlzLl90aXRsZSA9IHRoaXMuX3BhcnNlQ29uZmlnVmFsdWUodmFsdWUudGl0bGVBdHRyKVxuICAgICAgdGhpcy5fc3JPbmx5ID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS5zck9ubHkpXG4gICAgICB0aGlzLl90b29sdGlwID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS50b29sdGlwKVxuICAgICAgaWYgKHRoaXMuX3Rvb2x0aXApIHtcbiAgICAgICAgdGhpcy5fdG9vbHRpcENsYXNzID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS50b29sdGlwQ2xhc3MpXG4gICAgICAgIHRoaXMuX3Rvb2x0aXBQbGFjZW1lbnQgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKHZhbHVlLnRvb2x0aXBQbGFjZW1lbnQpIHx8ICdhdXRvJ1xuICAgICAgICB0aGlzLl90b29sdGlwQ29udGFpbmVyID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZSh2YWx1ZS50b29sdGlwQ29udGFpbmVyKVxuICAgICAgICB0aGlzLl90b29sdGlwRGlzYWJsZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdG9vbHRpcERpc2FibGVkID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb25maWc6IFRhYmxlQ2VsbFR5cGVDb25maWdJY29uIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIF9pY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcbiAgX2xpbms/OiBzdHJpbmdcbiAgX3F1ZXJ5UGFyYW1zPzogeyBbazogc3RyaW5nXTogYW55IH1cbiAgX3RwbFR5cGU6IEljb25UZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgX3RpdGxlPzogc3RyaW5nXG4gIF9zck9ubHk/OiBzdHJpbmdcbiAgX2xpbmtDbGFzcz86IHN0cmluZ1xuICBfaWNvbkNsYXNzPzogc3RyaW5nXG4gIF9pY29uVHlwZT86IFRoZVNlYW1JY29uVHlwZVxuICBfdGFyZ2V0Pzogc3RyaW5nXG4gIF90b29sdGlwPzogc3RyaW5nXG4gIF90b29sdGlwQ2xhc3M/OiBzdHJpbmdcbiAgX3Rvb2x0aXBQbGFjZW1lbnQ/OiBzdHJpbmdcbiAgX3Rvb2x0aXBDb250YWluZXI/OiBzdHJpbmdcbiAgX3Rvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiA9IHRydWVcblxuICBfYnV0dG9uQWN0aW9uPzogVGFibGVDZWxsVHlwZUljb25Db25maWdBY3Rpb25cblxuICBfdGFibGVDZWxsRGF0YT86IFRhYmxlQ2VsbERhdGE8J2ljb24nLCBUYWJsZUNlbGxUeXBlQ29uZmlnSWNvbj5cbiAgX3Jvdz86IGFueVxuICBfcm93SW5kZXg/OiBudW1iZXJcbiAgX2NvbERhdGE/OiBUaGVTZWFtVGFibGVDb2x1bW48J2ljb24nLCBUYWJsZUNlbGxUeXBlQ29uZmlnSWNvbj5cblxuICBfZG93bmxvYWQ/OiBib29sZWFuXG4gIF9kZXRlY3RNaW1lQ29udGVudD86IGJvb2xlYW5cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRhdGF0YWJsZS1jZWxsLXR5cGUnKSBfaXNEYXRhdGFibGUgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfdGFibGVDZWxsVHlwZUhlbHBlcnM6IFRhYmxlQ2VsbFR5cGVzSGVscGVyc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0YXRhYmxlPzogRGF0YXRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3RhYmxlPzogVGFibGVDb21wb25lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQUJMRV9DRUxMX0RBVEEpIF90YWJsZURhdGE/OiBUYWJsZUNlbGxEYXRhPCdpY29uJywgVGFibGVDZWxsVHlwZUNvbmZpZ0ljb24+XG4gICkge1xuICAgIGlmIChfZGF0YXRhYmxlKSB7XG4gICAgICB0aGlzLl9pc0RhdGF0YWJsZSA9IHRydWVcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdpc0RhdGFUYWJsZScpXG4gICAgfVxuICAgIC8vIGlmIChfdGFibGUpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdpc1RhYmxlJylcbiAgICAvLyB9XG5cbiAgICBjb25zdCBfZGF0YSA9IF90YWJsZURhdGFcbiAgICB0aGlzLl90YWJsZUNlbGxEYXRhID0gX3RhYmxlRGF0YVxuXG4gICAgdGhpcy5fcm93ID0gX2RhdGEgJiYgX2RhdGEucm93XG4gICAgdGhpcy5fcm93SW5kZXggPSBfZGF0YSAmJiBfZGF0YS5yb3dJbmRleFxuXG4gICAgdGhpcy52YWx1ZSA9IF9kYXRhICYmIF9kYXRhLnZhbHVlXG4gICAgdGhpcy5fY29sRGF0YSA9IF9kYXRhICYmIF9kYXRhLmNvbERhdGFcbiAgICBpZiAoX2RhdGEgJiYgX2RhdGEuY29sRGF0YSAmJiAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZ1xuICAgIH1cblxuICAgIGlmIChfZGF0YSkge1xuICAgICAgX2RhdGEuY2hhbmdlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5fY29uZmlnXG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodi5jaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb2xEYXRhJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbERhdGEgPSB2LmNoYW5nZXMuY29sRGF0YS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIGlmIChjb2xEYXRhICYmIGNvbERhdGEuY2VsbFR5cGVDb25maWcgIT09IHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gY29sRGF0YS5jZWxsVHlwZUNvbmZpZ1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodi5jaGFuZ2VzLmhhc093blByb3BlcnR5KCdyb3cnKSkge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlnXG4gICAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9uKGNvbmZpZ0FjdGlvbj86IFRhYmxlQ2VsbFR5cGVJY29uQ29uZmlnQWN0aW9uKSB7XG4gICAgbGV0IG5ld1RwbFR5cGU6IEljb25UZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkOiBib29sZWFuID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCB0YXJnZXQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbbDogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpXG4gICAgICAgICAgICA/ICdsaW5rLWVuY3J5cHRlZCdcbiAgICAgICAgICAgIDogdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZXh0ZXJuYWwpID8gJ2xpbmstZXh0ZXJuYWwnIDogJ2xpbmsnXG4gICAgICAgICAgZG93bmxvYWQgPSAhIXRoaXMuX3BhcnNlQ29uZmlnVmFsdWUoY29uZmlnQWN0aW9uLmRvd25sb2FkKVxuICAgICAgICAgIGRldGVjdE1pbWVDb250ZW50ID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kZXRlY3RNaW1lQ29udGVudClcbiAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi50YXJnZXQpXG4gICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5xdWVyeVBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgICBuZXdUcGxUeXBlID0gJ2J1dHRvbidcbiAgICAgICAgdGhpcy5fYnV0dG9uQWN0aW9uID0gY29uZmlnQWN0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHBsVHlwZSA9IG5ld1RwbFR5cGVcbiAgICB0aGlzLl9saW5rID0gbGlua1xuICAgIHRoaXMuX2Rvd25sb2FkID0gZG93bmxvYWRcbiAgICB0aGlzLl9kZXRlY3RNaW1lQ29udGVudCA9IGRldGVjdE1pbWVDb250ZW50XG4gICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWdWYWx1ZSh2YWw6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh2YWwsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLnBhcnNlVmFsdWVQcm9wKHZhbCwgY29udGV4dEZuKVxuICB9XG5cbiAgX2RvQnV0dG9uQWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9idXR0b25BY3Rpb24gJiYgdGhpcy5fYnV0dG9uQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh0aGlzLnZhbHVlLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgICAgdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuaGFuZGxlTW9kYWxBY3Rpb24odGhpcy5fYnV0dG9uQWN0aW9uLCBjb250ZXh0Rm4pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgciA9PiB7fSxcbiAgICAgICAgICBlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpLFxuICAgICAgICAgICgpID0+IHRoaXMuX2FjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIGlmICh0aGlzLl9kYXRhdGFibGUpIHtcbiAgICAgIHRoaXMuX2RhdGF0YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fdGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlLnRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJfaWNvblwiPlxuICA8ZGl2ICpuZ0lmPVwiIV90cGxUeXBlIHx8IF90cGxUeXBlID09PSAnZGVmYXVsdCdcIlxuICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLWZpeF09XCJfaXNEYXRhdGFibGVcIj5cbiAgICA8YSBjbGFzcz1cImQtYmxvY2sgbS1hdXRve3sgX2xpbmtDbGFzcyA/ICcgJyArIF9saW5rQ2xhc3MgOiAnJyB9fVwiXG4gICAgICBbYXR0ci50aXRsZV09XCJfdG9vbHRpcERpc2FibGVkID8gX3RpdGxlIDogdW5kZWZpbmVkXCJcbiAgICAgIFthdHRyLnRhcmdldF09XCJfdGFyZ2V0XCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIl90b29sdGlwXCJcbiAgICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShfdG9vbHRpcENsYXNzKVwiXG4gICAgICBbcGxhY2VtZW50XT1cIiRhbnkoX3Rvb2x0aXBQbGFjZW1lbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJGFueShfdG9vbHRpcENvbnRhaW5lcilcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIl90b29sdGlwRGlzYWJsZWRcIj5cbiAgICAgIDxzZWFtLWljb24gW2ljb25dPVwiX2ljb25cIiBzaXplPVwibGdcIiBbaWNvblR5cGVdPVwiX2ljb25UeXBlXCIgW2ljb25DbGFzc109XCJfaWNvbkNsYXNzIHx8ICcnXCI+PC9zZWFtLWljb24+XG4gICAgICA8c3BhbiAqbmdJZj1cIl9zck9ubHlcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBfc3JPbmx5IH19PC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluaydcIlxuICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLWZpeF09XCJfaXNEYXRhdGFibGVcIj5cbiAgICA8YSBjbGFzcz1cImQtYmxvY2sgbS1hdXRve3sgX2xpbmtDbGFzcyA/ICcgJyArIF9saW5rQ2xhc3MgOiAnJyB9fVwiXG4gICAgICBbcm91dGVyTGlua109XCJfbGlua1wiXG4gICAgICBbcXVlcnlQYXJhbXNdPVwiX3F1ZXJ5UGFyYW1zXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cIl90b29sdGlwRGlzYWJsZWQgPyBfdGl0bGUgOiB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIudGFyZ2V0XT1cIl90YXJnZXRcIlxuICAgICAgW25nYlRvb2x0aXBdPVwiX3Rvb2x0aXBcIlxuICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KF90b29sdGlwQ2xhc3MpXCJcbiAgICAgIFtwbGFjZW1lbnRdPVwiJGFueShfdG9vbHRpcFBsYWNlbWVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCIkYW55KF90b29sdGlwQ29udGFpbmVyKVwiXG4gICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiX3Rvb2x0aXBEaXNhYmxlZFwiPlxuICAgICAgPHNlYW0taWNvbiAqbmdJZj1cIl9pY29uXCIgW2ljb25dPVwiX2ljb25cIiBzaXplPVwibGdcIiBbaWNvblR5cGVdPVwiX2ljb25UeXBlXCIgW2ljb25DbGFzc109XCJfaWNvbkNsYXNzXCI+PC9zZWFtLWljb24+XG4gICAgICA8c3BhbiAqbmdJZj1cIl9zck9ubHlcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBfc3JPbmx5IH19PC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1leHRlcm5hbCdcIlxuICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiXG4gICAgW2NsYXNzLmRhdGF0YWJsZS1pY29uLWZpeF09XCJfaXNEYXRhdGFibGVcIj5cbiAgICA8YSBjbGFzcz1cImQtYmxvY2sgbS1hdXRve3sgX2xpbmtDbGFzcyA/ICcgJyArIF9saW5rQ2xhc3MgOiAnJyB9fVwiXG4gICAgICBbYXR0ci5ocmVmXT1cIl9saW5rXCJcbiAgICAgIFthdHRyLnRpdGxlXT1cIl90b29sdGlwRGlzYWJsZWQgPyBfdGl0bGUgOiB1bmRlZmluZWRcIlxuICAgICAgW2F0dHIudGFyZ2V0XT1cIl90YXJnZXRcIlxuICAgICAgW25nYlRvb2x0aXBdPVwiX3Rvb2x0aXBcIlxuICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KF90b29sdGlwQ2xhc3MpXCJcbiAgICAgIFtwbGFjZW1lbnRdPVwiJGFueShfdG9vbHRpcFBsYWNlbWVudClcIlxuICAgICAgW2NvbnRhaW5lcl09XCIkYW55KF90b29sdGlwQ29udGFpbmVyKVwiXG4gICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiX3Rvb2x0aXBEaXNhYmxlZFwiPlxuICAgICAgPHNlYW0taWNvbiAqbmdJZj1cIl9pY29uXCIgW2ljb25dPVwiX2ljb25cIiBzaXplPVwibGdcIiBbaWNvblR5cGVdPVwiX2ljb25UeXBlXCIgW2ljb25DbGFzc109XCJfaWNvbkNsYXNzXCI+PC9zZWFtLWljb24+XG4gICAgICA8c3BhbiAqbmdJZj1cIl9zck9ubHlcIiBjbGFzcz1cInNyLW9ubHlcIj57eyBfc3JPbmx5IH19PC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIl90cGxUeXBlID09PSAnbGluay1lbmNyeXB0ZWQnXCJcbiAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgIFtjbGFzcy5kYXRhdGFibGUtaWNvbi1maXhdPVwiX2lzRGF0YXRhYmxlXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIG0tYXV0b3t7IF9saW5rQ2xhc3MgPyAnICcgKyBfbGlua0NsYXNzIDogJycgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbc2VhbUVuY3J5cHRlZEFzc2V0TGlua109XCJfbGlua1wiXG4gICAgICBbc2VhbURldGVjdE1pbWVGcm9tQ29udGVudF09XCJfZGV0ZWN0TWltZUNvbnRlbnRcIlxuICAgICAgW3NlYW1Eb3dubG9hZEFzc2V0XT1cIl9kb3dubG9hZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCJfdG9vbHRpcERpc2FibGVkID8gX3RpdGxlIDogdW5kZWZpbmVkXCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIl90b29sdGlwXCJcbiAgICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShfdG9vbHRpcENsYXNzKVwiXG4gICAgICBbcGxhY2VtZW50XT1cIiRhbnkoX3Rvb2x0aXBQbGFjZW1lbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJGFueShfdG9vbHRpcENvbnRhaW5lcilcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIl90b29sdGlwRGlzYWJsZWRcIj5cbiAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJfaWNvblwiIGljb25UeXBlPVwic3R5bGVkLXNxdWFyZVwiIFtpY29uXT1cIl9pY29uXCIgc2l6ZT1cImxnXCIgW2ljb25UeXBlXT1cIl9pY29uVHlwZVwiIFtpY29uQ2xhc3NdPVwiX2ljb25DbGFzc1wiPjwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gKm5nSWY9XCJfc3JPbmx5XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgX3NyT25seSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIl90cGxUeXBlID09PSAnYnV0dG9uJ1wiXG4gICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICBbY2xhc3MuZGF0YXRhYmxlLWljb24tZml4XT1cIl9pc0RhdGF0YWJsZVwiXG4gICAgKGNsaWNrKT1cIl9kb0J1dHRvbkFjdGlvbigpXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIG0tYXV0b3t7IF9saW5rQ2xhc3MgPyAnICcgKyBfbGlua0NsYXNzIDogJycgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci50aXRsZV09XCJfdG9vbHRpcERpc2FibGVkID8gX3RpdGxlIDogdW5kZWZpbmVkXCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIl90b29sdGlwXCJcbiAgICAgIFt0b29sdGlwQ2xhc3NdPVwiJGFueShfdG9vbHRpcENsYXNzKVwiXG4gICAgICBbcGxhY2VtZW50XT1cIiRhbnkoX3Rvb2x0aXBQbGFjZW1lbnQpXCJcbiAgICAgIFtjb250YWluZXJdPVwiJGFueShfdG9vbHRpcENvbnRhaW5lcilcIlxuICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIl90b29sdGlwRGlzYWJsZWRcIj5cbiAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJfaWNvblwiIGljb25UeXBlPVwic3R5bGVkLXNxdWFyZVwiIFtpY29uXT1cIl9pY29uXCIgc2l6ZT1cImxnXCIgW2ljb25UeXBlXT1cIl9pY29uVHlwZVwiIFtpY29uQ2xhc3NdPVwiX2ljb25DbGFzc1wiPjwvc2VhbS1pY29uPlxuICAgICAgPHNwYW4gKm5nSWY9XCJfc3JPbmx5XCIgY2xhc3M9XCJzci1vbmx5XCI+e3sgX3NyT25seSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -66,9 +66,9 @@ export class TableCellTypeIntegerComponent {
66
66
  return this._tableCellTypeHelpers.parseValueProp(val, contextFn);
67
67
  }
68
68
  }
69
- TableCellTypeIntegerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeIntegerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
70
- TableCellTypeIntegerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypeIntegerComponent, selector: "seam-table-cell-type-integer", inputs: { value: "value" }, ngImport: i0, template: "<div [class]=\"'text-' + textAlign\">\n <seam-table-cell-type-selector\n type=\"string\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeIntegerComponent, decorators: [{
69
+ TableCellTypeIntegerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeIntegerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
70
+ TableCellTypeIntegerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypeIntegerComponent, selector: "seam-table-cell-type-integer", inputs: { value: "value" }, ngImport: i0, template: "<div [class]=\"'text-' + textAlign\">\n <seam-table-cell-type-selector\n type=\"string\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeIntegerComponent, decorators: [{
72
72
  type: Component,
73
73
  args: [{ selector: 'seam-table-cell-type-integer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'text-' + textAlign\">\n <seam-table-cell-type-selector\n type=\"string\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</div>\n" }]
74
74
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableCellTypesHelpersService }, { type: undefined, decorators: [{
@@ -8,8 +8,6 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
9
9
  import * as i2 from "@theseam/ui-common/tel-input";
10
10
  export class TableCellTypePhoneComponent {
11
- set format(value) { this._format = coercePhoneNumberFormat(value); }
12
- get format() { return this._format; }
13
11
  constructor(_cdf, _tableData) {
14
12
  this._cdf = _cdf;
15
13
  /** @ignore */
@@ -44,15 +42,17 @@ export class TableCellTypePhoneComponent {
44
42
  });
45
43
  }
46
44
  }
45
+ set format(value) { this._format = coercePhoneNumberFormat(value); }
46
+ get format() { return this._format; }
47
47
  ngOnInit() { }
48
48
  ngOnDestroy() {
49
49
  this._ngUnsubscribe.next(undefined);
50
50
  this._ngUnsubscribe.complete();
51
51
  }
52
52
  }
53
- TableCellTypePhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypePhoneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
54
- TableCellTypePhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypePhoneComponent, selector: "seam-table-cell-type-phone", inputs: { value: "value", format: "format" }, ngImport: i0, template: "<ng-container *ngIf=\"((value || '') | phoneNumber: _format) as num\">\n <div class=\"td-text-truncate\" [title]=\"num\">\n {{ num }}\n </div>\n</ng-container>\n<!-- <div class=\"td-text-truncate\" [title]=\"value | phoneNumber: _format\">\n {{ value | date: format || 'yyyy-MM-dd h:mm aaa' }}\n</div> -->\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TheSeamPhoneNumberPipe, name: "phoneNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypePhoneComponent, decorators: [{
53
+ TableCellTypePhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypePhoneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
54
+ TableCellTypePhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypePhoneComponent, selector: "seam-table-cell-type-phone", inputs: { value: "value", format: "format" }, ngImport: i0, template: "<ng-container *ngIf=\"((value || '') | phoneNumber: _format) as num\">\n <div class=\"td-text-truncate\" [title]=\"num\">\n {{ num }}\n </div>\n</ng-container>\n<!-- <div class=\"td-text-truncate\" [title]=\"value | phoneNumber: _format\">\n {{ value | date: format || 'yyyy-MM-dd h:mm aaa' }}\n</div> -->\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TheSeamPhoneNumberPipe, name: "phoneNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypePhoneComponent, decorators: [{
56
56
  type: Component,
57
57
  args: [{ selector: 'seam-table-cell-type-phone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"((value || '') | phoneNumber: _format) as num\">\n <div class=\"td-text-truncate\" [title]=\"num\">\n {{ num }}\n </div>\n</ng-container>\n<!-- <div class=\"td-text-truncate\" [title]=\"value | phoneNumber: _format\">\n {{ value | date: format || 'yyyy-MM-dd h:mm aaa' }}\n</div> -->\n" }]
58
58
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
65
65
  }], format: [{
66
66
  type: Input
67
67
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXBob25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGVzL3RhYmxlLWNlbGwtdHlwZS1waG9uZS90YWJsZS1jZWxsLXR5cGUtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXBob25lL3RhYmxlLWNlbGwtdHlwZS1waG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDakksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBRXBFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRTNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQVV0RCxNQUFNLE9BQU8sMkJBQTJCO0lBU3RDLElBQ0ksTUFBTSxDQUFDLEtBQXFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDbkcsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQztJQUVwQyxZQUNVLElBQXVCLEVBQ00sVUFBNkQ7UUFEMUYsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFaakMsY0FBYztRQUNHLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQTtRQUVyRCxjQUFjO1FBQ2QsWUFBTyxHQUFtQyxtQ0FBbUMsQ0FBQTtRQVczRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUE7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUNqQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNqSCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQXdDLENBQUE7U0FDcEY7UUFFRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxPQUFPO2lCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUNwQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUE7b0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7aUJBQ3pCO2dCQUVELElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3ZDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQTtvQkFDOUMsSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQzt3QkFDbkQsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDO3dCQUM3QyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxFQUM3Qzt3QkFDQSxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFBO3FCQUM1Qzt5QkFBTTt3QkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLG1DQUFtQyxDQUFBO3FCQUNsRDtvQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO2lCQUN6QjtZQUNILENBQUMsQ0FBQyxDQUFBO1NBQ0w7SUFDSCxDQUFDO0lBRUQsUUFBUSxLQUFLLENBQUM7SUFFZCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDOzt3SEF0RFUsMkJBQTJCLG1EQWVoQixlQUFlOzRHQWYxQiwyQkFBMkIsZ0hDbEJ4QywyVEFRQTsyRkRVYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFpQjVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs0Q0FQNUIsS0FBSztzQkFBYixLQUFLO2dCQUVGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgVEFCTEVfQ0VMTF9EQVRBIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZSdcbmltcG9ydCB0eXBlIHsgVGFibGVDZWxsRGF0YSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGUnXG5pbXBvcnQgeyBjb2VyY2VQaG9uZU51bWJlckZvcm1hdCwgVEhFU0VBTV9ERUZBVUxUX1BIT05FX05VTUJFUl9GT1JNQVQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGVsLWlucHV0J1xuaW1wb3J0IHR5cGUgeyBpbnRsVGVsSW5wdXRVdGlscyB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90ZWwtaW5wdXQnXG5pbXBvcnQgeyBoYXNQcm9wZXJ0eSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcblxuaW1wb3J0IHsgVGFibGVDZWxsVHlwZUNvbmZpZ1Bob25lIH0gZnJvbSAnLi90YWJsZS1jZWxsLXR5cGUtcGhvbmUtY29uZmlnJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZWFtLXRhYmxlLWNlbGwtdHlwZS1waG9uZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLXR5cGUtcGhvbmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLXR5cGUtcGhvbmUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsVHlwZVBob25lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2Zvcm1hdDogaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0ID0gVEhFU0VBTV9ERUZBVUxUX1BIT05FX05VTUJFUl9GT1JNQVRcblxuICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZyB8IG51bGxcbiAgQElucHV0KClcbiAgc2V0IGZvcm1hdCh2YWx1ZTogaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0KSB7IHRoaXMuX2Zvcm1hdCA9IGNvZXJjZVBob25lTnVtYmVyRm9ybWF0KHZhbHVlKSB9XG4gIGdldCBmb3JtYXQoKSB7IHJldHVybiB0aGlzLl9mb3JtYXQgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NkZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQUJMRV9DRUxMX0RBVEEpIF90YWJsZURhdGE/OiBUYWJsZUNlbGxEYXRhPCdwaG9uZScsIFRhYmxlQ2VsbFR5cGVDb25maWdQaG9uZT5cbiAgKSB7XG4gICAgY29uc3QgX2RhdGEgPSBfdGFibGVEYXRhXG5cbiAgICB0aGlzLnZhbHVlID0gX2RhdGEgJiYgX2RhdGEudmFsdWVcbiAgICBpZiAoX2RhdGEgJiYgX2RhdGEuY29sRGF0YSAmJiBfZGF0YS5jb2xEYXRhLmNlbGxUeXBlQ29uZmlnICYmIGhhc1Byb3BlcnR5KF9kYXRhLmNvbERhdGEuY2VsbFR5cGVDb25maWcsICdmb3JtYXQnKSkge1xuICAgICAgdGhpcy5mb3JtYXQgPSBfZGF0YS5jb2xEYXRhLmNlbGxUeXBlQ29uZmlnLmZvcm1hdCBhcyBpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJGb3JtYXRcbiAgICB9XG5cbiAgICBpZiAoX2RhdGEpIHtcbiAgICAgIF9kYXRhLmNoYW5nZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgIGlmICh2LmNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlJykpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2LmNoYW5nZXMudmFsdWUuY3VycmVudFZhbHVlXG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodi5jaGFuZ2VzLmhhc093blByb3BlcnR5KCdjb2xEYXRhJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbERhdGEgPSB2LmNoYW5nZXMuY29sRGF0YS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIGlmIChjb2xEYXRhICYmIGhhc1Byb3BlcnR5KGNvbERhdGEsICdjZWxsVHlwZUNvbmZpZycpICYmXG4gICAgICAgICAgICAgIGhhc1Byb3BlcnR5KGNvbERhdGEuY2VsbFR5cGVDb25maWcsICdmb3JtYXQnKSAmJlxuICAgICAgICAgICAgICBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnLmZvcm1hdCAhPT0gdGhpcy5mb3JtYXRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1hdCA9IGNvbERhdGEuY2VsbFR5cGVDb25maWcuZm9ybWF0XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1hdCA9IFRIRVNFQU1fREVGQVVMVF9QSE9ORV9OVU1CRVJfRk9STUFUXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQodW5kZWZpbmVkKVxuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKVxuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoKHZhbHVlIHx8ICcnKSB8IHBob25lTnVtYmVyOiBfZm9ybWF0KSBhcyBudW1cIj5cbiAgPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwibnVtXCI+XG4gICAge3sgbnVtIH19XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48IS0tIDxkaXYgY2xhc3M9XCJ0ZC10ZXh0LXRydW5jYXRlXCIgW3RpdGxlXT1cInZhbHVlIHwgcGhvbmVOdW1iZXI6IF9mb3JtYXRcIj5cbiAge3sgdmFsdWUgfCBkYXRlOiBmb3JtYXQgfHwgJ3l5eXktTU0tZGQgaDptbSBhYWEnIH19XG48L2Rpdj4gLS0+XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXBob25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi90YWJsZS1jZWxsLXR5cGVzL3RhYmxlLWNlbGwtdHlwZS1waG9uZS90YWJsZS1jZWxsLXR5cGUtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXBob25lL3RhYmxlLWNlbGwtdHlwZS1waG9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDakksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBRXBFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRTNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7OztBQVV0RCxNQUFNLE9BQU8sMkJBQTJCO0lBYXRDLFlBQ1UsSUFBdUIsRUFDTSxVQUE2RDtRQUQxRixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQVpqQyxjQUFjO1FBQ0csbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFBO1FBRXJELGNBQWM7UUFDZCxZQUFPLEdBQW1DLG1DQUFtQyxDQUFBO1FBVzNFLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQTtRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFBO1FBQ2pDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ2pILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBd0MsQ0FBQTtTQUNwRjtRQUVELElBQUksS0FBSyxFQUFFO1lBQ1QsS0FBSyxDQUFDLE9BQU87aUJBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQTtvQkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtpQkFDekI7Z0JBRUQsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFBO29CQUM5QyxJQUFJLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO3dCQUNuRCxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUM7d0JBQzdDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQzdDO3dCQUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUE7cUJBQzVDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsbUNBQW1DLENBQUE7cUJBQ2xEO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNILENBQUM7SUF0Q0QsSUFDSSxNQUFNLENBQUMsS0FBcUMsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNuRyxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lBc0NwQyxRQUFRLEtBQUssQ0FBQztJQUVkLFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2hDLENBQUM7O3dIQXREVSwyQkFBMkIsbURBZWhCLGVBQWU7NEdBZjFCLDJCQUEyQixnSENsQnhDLDJUQVFBOzJGRFVhLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07OzBCQWlCNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQVA1QixLQUFLO3NCQUFiLEtBQUs7Z0JBRUYsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZSdcbmltcG9ydCB7IGNvZXJjZVBob25lTnVtYmVyRm9ybWF0LCBUSEVTRUFNX0RFRkFVTFRfUEhPTkVfTlVNQkVSX0ZPUk1BVCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi90ZWwtaW5wdXQnXG5pbXBvcnQgdHlwZSB7IGludGxUZWxJbnB1dFV0aWxzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3RlbC1pbnB1dCdcbmltcG9ydCB7IGhhc1Byb3BlcnR5IH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xuXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlQ29uZmlnUGhvbmUgfSBmcm9tICcuL3RhYmxlLWNlbGwtdHlwZS1waG9uZS1jb25maWcnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tdGFibGUtY2VsbC10eXBlLXBob25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwtdHlwZS1waG9uZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNlbGwtdHlwZS1waG9uZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxUeXBlUGhvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAvKiogQGlnbm9yZSAqL1xuICBfZm9ybWF0OiBpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJGb3JtYXQgPSBUSEVTRUFNX0RFRkFVTFRfUEhPTkVfTlVNQkVSX0ZPUk1BVFxuXG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nIHwgbnVsbFxuICBASW5wdXQoKVxuICBzZXQgZm9ybWF0KHZhbHVlOiBpbnRsVGVsSW5wdXRVdGlscy5udW1iZXJGb3JtYXQpIHsgdGhpcy5fZm9ybWF0ID0gY29lcmNlUGhvbmVOdW1iZXJGb3JtYXQodmFsdWUpIH1cbiAgZ2V0IGZvcm1hdCgpIHsgcmV0dXJuIHRoaXMuX2Zvcm1hdCB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRBQkxFX0NFTExfREFUQSkgX3RhYmxlRGF0YT86IFRhYmxlQ2VsbERhdGE8J3Bob25lJywgVGFibGVDZWxsVHlwZUNvbmZpZ1Bob25lPlxuICApIHtcbiAgICBjb25zdCBfZGF0YSA9IF90YWJsZURhdGFcblxuICAgIHRoaXMudmFsdWUgPSBfZGF0YSAmJiBfZGF0YS52YWx1ZVxuICAgIGlmIChfZGF0YSAmJiBfZGF0YS5jb2xEYXRhICYmIF9kYXRhLmNvbERhdGEuY2VsbFR5cGVDb25maWcgJiYgaGFzUHJvcGVydHkoX2RhdGEuY29sRGF0YS5jZWxsVHlwZUNvbmZpZywgJ2Zvcm1hdCcpKSB7XG4gICAgICB0aGlzLmZvcm1hdCA9IF9kYXRhLmNvbERhdGEuY2VsbFR5cGVDb25maWcuZm9ybWF0IGFzIGludGxUZWxJbnB1dFV0aWxzLm51bWJlckZvcm1hdFxuICAgIH1cblxuICAgIGlmIChfZGF0YSkge1xuICAgICAgX2RhdGEuY2hhbmdlZFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHYuY2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWVcbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2LmNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NvbERhdGEnKSkge1xuICAgICAgICAgICAgY29uc3QgY29sRGF0YSA9IHYuY2hhbmdlcy5jb2xEYXRhLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgaWYgKGNvbERhdGEgJiYgaGFzUHJvcGVydHkoY29sRGF0YSwgJ2NlbGxUeXBlQ29uZmlnJykgJiZcbiAgICAgICAgICAgICAgaGFzUHJvcGVydHkoY29sRGF0YS5jZWxsVHlwZUNvbmZpZywgJ2Zvcm1hdCcpICYmXG4gICAgICAgICAgICAgIGNvbERhdGEuY2VsbFR5cGVDb25maWcuZm9ybWF0ICE9PSB0aGlzLmZvcm1hdFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gY29sRGF0YS5jZWxsVHlwZUNvbmZpZy5mb3JtYXRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gVEhFU0VBTV9ERUZBVUxUX1BIT05FX05VTUJFUl9GT1JNQVRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NkZi5tYXJrRm9yQ2hlY2soKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIigodmFsdWUgfHwgJycpIHwgcGhvbmVOdW1iZXI6IF9mb3JtYXQpIGFzIG51bVwiPlxuICA8ZGl2IGNsYXNzPVwidGQtdGV4dC10cnVuY2F0ZVwiIFt0aXRsZV09XCJudW1cIj5cbiAgICB7eyBudW0gfX1cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjwhLS0gPGRpdiBjbGFzcz1cInRkLXRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwidmFsdWUgfCBwaG9uZU51bWJlcjogX2Zvcm1hdFwiPlxuICB7eyB2YWx1ZSB8IGRhdGU6IGZvcm1hdCB8fCAneXl5eS1NTS1kZCBoOm1tIGFhYScgfX1cbjwvZGl2PiAtLT5cbiJdfQ==
@@ -144,9 +144,9 @@ export class TableCellTypeProgressCircleComponent {
144
144
  }
145
145
  }
146
146
  }
147
- TableCellTypeProgressCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeProgressCircleComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
148
- TableCellTypeProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypeProgressCircleComponent, selector: "seam-table-cell-type-progress-circle", inputs: { value: "value" }, host: { properties: { "class.datatable-cell-type": "this._isDatatable" } }, ngImport: i0, template: "<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-template #progressCircleTpl>\n <div class=\"progress-circle-wrapper\">\n <seam-progress-circle\n class=\"progress-circle\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"$any(value)\"\n [pending]=\"pending\"\n [ngbTooltip]=\"tooltip\"\n [tooltipClass]=\"$any(tooltipClass)\"\n [placement]=\"$any(tooltipPlacement)\"\n [container]=\"$any(tooltipContainer)\">\n </seam-progress-circle>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </div>\n</ng-template>\n", styles: [":host.datatable-cell-type .progress-circle-wrapper{max-height:25px}:host.datatable-cell-type .progress-circle{position:relative;width:25px;height:25px;margin:0 auto}:host.datatable-cell-type .progress-circle ::ng-deep .seam-progress-circle{padding:0}:host:not(.datatable-cell-type) .progress-circle-wrapper{height:22px;max-height:22px}:host:not(.datatable-cell-type) .progress-circle{position:relative;width:25px;height:25px;margin:0 auto;margin-top:-.03rem}:host:not(.datatable-cell-type) .progress-circle ::ng-deep .seam-progress-circle{padding:0}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressCircleComponent, selector: "seam-progress-circle", inputs: ["fillBackground", "showText", "hiddenOnEmpty", "pending", "percentage"] }, { kind: "directive", type: i8.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeProgressCircleComponent, decorators: [{
147
+ TableCellTypeProgressCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeProgressCircleComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
148
+ TableCellTypeProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypeProgressCircleComponent, selector: "seam-table-cell-type-progress-circle", inputs: { value: "value" }, host: { properties: { "class.datatable-cell-type": "this._isDatatable" } }, ngImport: i0, template: "<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-template #progressCircleTpl>\n <div class=\"progress-circle-wrapper\">\n <seam-progress-circle\n class=\"progress-circle\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"$any(value)\"\n [pending]=\"pending\"\n [ngbTooltip]=\"tooltip\"\n [tooltipClass]=\"$any(tooltipClass)\"\n [placement]=\"$any(tooltipPlacement)\"\n [container]=\"$any(tooltipContainer)\">\n </seam-progress-circle>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </div>\n</ng-template>\n", styles: [":host.datatable-cell-type .progress-circle-wrapper{max-height:25px}:host.datatable-cell-type .progress-circle{position:relative;width:25px;height:25px;margin:0 auto}:host.datatable-cell-type .progress-circle ::ng-deep .seam-progress-circle{padding:0}:host:not(.datatable-cell-type) .progress-circle-wrapper{height:22px;max-height:22px}:host:not(.datatable-cell-type) .progress-circle{position:relative;width:25px;height:25px;margin:0 auto;margin-top:-.03rem}:host:not(.datatable-cell-type) .progress-circle ::ng-deep .seam-progress-circle{padding:0}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.ProgressCircleComponent, selector: "seam-progress-circle", inputs: ["fillBackground", "showText", "hiddenOnEmpty", "pending", "percentage"] }, { kind: "directive", type: i8.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeProgressCircleComponent, decorators: [{
150
150
  type: Component,
151
151
  args: [{ selector: 'seam-table-cell-type-progress-circle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <a class=\"d-block m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n [attr.href]=\"_link\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\"\n [attr.target]=\"_target\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\"\n class=\"d-flex align-items-center justify-center\"\n [class.datatable-icon-fix]=\"_isDatatable\"\n (click)=\"_doButtonAction()\">\n <button\n class=\"btn btn-link p-0 m-auto{{ _linkClass ? ' ' + _linkClass : '' }}\"\n type=\"button\"\n [attr.title]=\"_tooltipDisabled ? _title : undefined\">\n <ng-template [ngTemplateOutlet]=\"progressCircleTpl\"></ng-template>\n </button>\n</ng-container>\n\n<ng-template #progressCircleTpl>\n <div class=\"progress-circle-wrapper\">\n <seam-progress-circle\n class=\"progress-circle\"\n [fillBackground]=\"fillBackground\"\n [showText]=\"showText\"\n [hiddenOnEmpty]=\"hiddenOnEmpty\"\n [percentage]=\"$any(value)\"\n [pending]=\"pending\"\n [ngbTooltip]=\"tooltip\"\n [tooltipClass]=\"$any(tooltipClass)\"\n [placement]=\"$any(tooltipPlacement)\"\n [container]=\"$any(tooltipContainer)\">\n </seam-progress-circle>\n <span *ngIf=\"_srOnly\" class=\"sr-only\">{{ _srOnly }}</span>\n </div>\n</ng-template>\n", styles: [":host.datatable-cell-type .progress-circle-wrapper{max-height:25px}:host.datatable-cell-type .progress-circle{position:relative;width:25px;height:25px;margin:0 auto}:host.datatable-cell-type .progress-circle ::ng-deep .seam-progress-circle{padding:0}:host:not(.datatable-cell-type) .progress-circle-wrapper{height:22px;max-height:22px}:host:not(.datatable-cell-type) .progress-circle{position:relative;width:25px;height:25px;margin:0 auto;margin-top:-.03rem}:host:not(.datatable-cell-type) .progress-circle ::ng-deep .seam-progress-circle{padding:0}\n"] }]
152
152
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableCellTypesHelpersService }, { type: i2.DatatableComponent, decorators: [{
@@ -62,9 +62,9 @@ export class TableCellTypeProgressCircleIconComponent {
62
62
  this._ngUnsubscribe.complete();
63
63
  }
64
64
  }
65
- TableCellTypeProgressCircleIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeProgressCircleIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
66
- TableCellTypeProgressCircleIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypeProgressCircleIconComponent, selector: "seam-table-cell-type-progress-circle-icon", inputs: { value: "value" }, ngImport: i0, template: "<seam-table-cell-type-selector\n *ngIf=\"displayIcon; else progressCircle\"\n type=\"icon\"\n [value]=\"icon\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n<ng-template #progressCircle>\n <seam-table-cell-type-selector\n type=\"progress-circle\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeProgressCircleIconComponent, decorators: [{
65
+ TableCellTypeProgressCircleIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeProgressCircleIconComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
66
+ TableCellTypeProgressCircleIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypeProgressCircleIconComponent, selector: "seam-table-cell-type-progress-circle-icon", inputs: { value: "value" }, ngImport: i0, template: "<seam-table-cell-type-selector\n *ngIf=\"displayIcon; else progressCircle\"\n type=\"icon\"\n [value]=\"icon\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n<ng-template #progressCircle>\n <seam-table-cell-type-selector\n type=\"progress-circle\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeProgressCircleIconComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'seam-table-cell-type-progress-circle-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<seam-table-cell-type-selector\n *ngIf=\"displayIcon; else progressCircle\"\n type=\"icon\"\n [value]=\"icon\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n<ng-template #progressCircle>\n <seam-table-cell-type-selector\n type=\"progress-circle\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"colData\"></seam-table-cell-type-selector>\n</ng-template>\n" }]
70
70
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableCellTypesHelpersService }, { type: undefined, decorators: [{
@@ -11,6 +11,25 @@ import * as i5 from "@angular/router";
11
11
  import * as i6 from "@theseam/ui-common/popover";
12
12
  import * as i7 from "@theseam/ui-common/asset-reader";
13
13
  export class TableCellTypeStringComponent {
14
+ constructor(_cdf, _tableCellTypeHelpers, _datatable, _table, _tableData) {
15
+ this._cdf = _cdf;
16
+ this._tableCellTypeHelpers = _tableCellTypeHelpers;
17
+ this._datatable = _datatable;
18
+ this._table = _table;
19
+ this._tableData = _tableData;
20
+ this._ngUnsubscribe = new Subject();
21
+ this._tplType = 'default';
22
+ this.canPopover = false;
23
+ const _data = _tableData;
24
+ this._tableCellData = _tableData;
25
+ this._row = _data && _data.row;
26
+ this._rowIndex = _data && _data.rowIndex;
27
+ this.value = _data && _data.value;
28
+ this._colData = _data && _data.colData;
29
+ if (_data && _data.colData && _data.colData.cellTypeConfig) {
30
+ this.config = _data.colData.cellTypeConfig;
31
+ }
32
+ }
14
33
  get value() { return this._value; }
15
34
  set value(val) {
16
35
  this._value = val;
@@ -38,25 +57,6 @@ export class TableCellTypeStringComponent {
38
57
  set classAttr(value) { this._class = value; }
39
58
  get classAttr() { return this._class; }
40
59
  get _classAttr() { return this.classAttr; }
41
- constructor(_cdf, _tableCellTypeHelpers, _datatable, _table, _tableData) {
42
- this._cdf = _cdf;
43
- this._tableCellTypeHelpers = _tableCellTypeHelpers;
44
- this._datatable = _datatable;
45
- this._table = _table;
46
- this._tableData = _tableData;
47
- this._ngUnsubscribe = new Subject();
48
- this._tplType = 'default';
49
- this.canPopover = false;
50
- const _data = _tableData;
51
- this._tableCellData = _tableData;
52
- this._row = _data && _data.row;
53
- this._rowIndex = _data && _data.rowIndex;
54
- this.value = _data && _data.value;
55
- this._colData = _data && _data.colData;
56
- if (_data && _data.colData && _data.colData.cellTypeConfig) {
57
- this.config = _data.colData.cellTypeConfig;
58
- }
59
- }
60
60
  ngOnInit() {
61
61
  const _data = this._tableData;
62
62
  if (_data) {
@@ -155,9 +155,9 @@ export class TableCellTypeStringComponent {
155
155
  }
156
156
  }
157
157
  }
158
- TableCellTypeStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeStringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
159
- TableCellTypeStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TableCellTypeStringComponent, selector: "seam-table-cell-type-string", inputs: { value: "value", config: "config", title: "title", style: "style", classAttr: "classAttr" }, host: { properties: { "attr.title": "this._titleAttr", "attr.style": "this._styleAttr", "class": "this._classAttr" } }, ngImport: i0, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "directive", type: i7.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TableCellTypeStringComponent, decorators: [{
158
+ TableCellTypeStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeStringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TableCellTypesHelpersService }, { token: i2.DatatableComponent, optional: true }, { token: i3.TableComponent, optional: true }, { token: TABLE_CELL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
159
+ TableCellTypeStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TableCellTypeStringComponent, selector: "seam-table-cell-type-string", inputs: { value: "value", config: "config", title: "title", style: "style", classAttr: "classAttr" }, host: { properties: { "attr.title": "this._titleAttr", "attr.style": "this._styleAttr", "class": "this._classAttr" } }, ngImport: i0, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "directive", type: i7.EncryptedAssetLinkDirective, selector: "[seamEncryptedAssetLink]", inputs: ["seamEncryptedAssetLink", "seamShowLoadingOverlay", "seamDetectMimeFromContent", "seamDownloadAsset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TableCellTypeStringComponent, decorators: [{
161
161
  type: Component,
162
162
  args: [{ selector: 'seam-table-cell-type-string', host: {}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #popoverTpl>\n {{ value }}\n</ng-template>\n\n<ng-template #noPopover>\n <div class=\"text-truncate\">\n {{ value }}\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"!_tplType || _tplType === 'default'\">\n <div *ngIf=\"canPopover; else noPopover\" [seamPopover]=\"popoverTpl\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </div>\n</ng-container>\n\n\n\n<ng-container *ngIf=\"_tplType === 'link'\">\n <a class=\"d-block text-body text-decoration-none\"\n [routerLink]=\"_link\"\n [queryParams]=\"_queryParams\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-external'\">\n <a class=\"d-block text-body text-decoration-none\"\n [attr.href]=\"_link\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </a>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'link-encrypted'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [seamEncryptedAssetLink]=\"_link\"\n [seamDetectMimeFromContent]=\"_detectMimeContent\"\n [seamDownloadAsset]=\"_download\"\n [attr.title]=\"_title\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"_tplType === 'button'\">\n <button\n class=\"btn btn-link p-0 d-block text-body text-decoration-none\"\n type=\"button\"\n [attr.title]=\"_title\"\n (click)=\"_doButtonAction()\">\n <ng-template [ngTemplateOutlet]=\"noPopover\"></ng-template>\n </button>\n</ng-container>\n\n" }]
163
163
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TableCellTypesHelpersService }, { type: i2.DatatableComponent, decorators: [{
@@ -189,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
189
189
  type: HostBinding,
190
190
  args: ['class']
191
191
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFlbEcsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUNJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxDQUFDLEdBQThCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2pCLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsMkVBQTJFO1FBQzNFLDZCQUE2QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ3ZCO0lBQ0gsQ0FBQztJQUdELElBQ0ksTUFBTSxLQUFL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QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUN6QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDbkMsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7O3lIQWpNVSw0QkFBNEIsK0xBdUVqQixlQUFlOzZHQXZFMUIsNEJBQTRCLGlTQy9CekMsc3BEQXlEQTsyRkQxQmEsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixRQUdqQyxFQUFHLG1CQUNRLHVCQUF1QixDQUFDLE1BQU07OzBCQXVFNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQWxFakMsS0FBSztzQkFEUixLQUFLO2dCQWVGLE1BQU07c0JBRFQsS0FBSztnQkE2QkYsS0FBSztzQkFEUixLQUFLO2dCQUl5QixVQUFVO3NCQUF4QyxXQUFXO3VCQUFDLFlBQVk7Z0JBR3JCLEtBQUs7c0JBRFIsS0FBSztnQkFJeUIsVUFBVTtzQkFBeEMsV0FBVzt1QkFBQyxZQUFZO2dCQUdyQixTQUFTO3NCQURaLEtBQUs7Z0JBSW9CLFVBQVU7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5cbmltcG9ydCB7IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcsIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb25maWdBY3Rpb24gfSBmcm9tICcuL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmctY29uZmlnJ1xuXG5leHBvcnQgdHlwZSBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCcgfCAnbGluaycgfCAnbGluay1leHRlcm5hbCcgfCAnbGluay1lbmNyeXB0ZWQnIHwgJ2J1dHRvbidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJsZS1jZWxsLXR5cGUtc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsVHlwZVN0cmluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH1cbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsXG4gICAgLy8gVE9ETzogVGhpcyBpcyB0ZW1wb3JhcnkgdG8gdGVzdCB0aGUgZmVhdHVyZSBhbmQgd2lsbCBiZSBmaXhlZCB3aGVuIHRoZVxuICAgIC8vIGR5bmFtaWMgY29sdW1uIGRhdGEgaXMgZml4ZWQuIFRoZSBwbGFuIGlzIHRvIGFkZCBhIGNvbmZpZyB0b2dnbGUgdG9cbiAgICAvLyBhbHdheXMgZW5hYmxlIGFuZCBkZXBlbmRpbmcgb24gcGVyZm9ybWFuY2UgaXQgY291bGQgdHJ5IHRvIGRlY2lkZSBvbiBpdHNcbiAgICAvLyBvd24gYmFzZWQgb24gY29udGVudCBzaXplLlxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMzApIHtcbiAgICAgIHRoaXMuY2FuUG9wb3ZlciA9IHRydWVcbiAgICB9XG4gIH1cbiAgX3ZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbmZpZygpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZyB9XG4gIHNldCBjb25maWcodmFsdWU6IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29uZmlnID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlnKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb25maWc6IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgX3RwbFR5cGU6IFN0cmluZ1RlbXBsYXRlVHlwZSA9ICdkZWZhdWx0J1xuICBfbGluaz86IHN0cmluZ1xuICBfdGl0bGU/OiBzdHJpbmdcbiAgX3F1ZXJ5UGFyYW1zPzogeyBbazogc3RyaW5nXTogYW55IH1cblxuICBfc3R5bGU/OiBzdHJpbmdcbiAgX2NsYXNzPzogc3RyaW5nXG5cbiAgX2J1dHRvbkFjdGlvbj86IFRhYmxlQ2VsbFR5cGVTdHJpbmdDb25maWdBY3Rpb25cblxuICBfdGFibGVDZWxsRGF0YT86IFRhYmxlQ2VsbERhdGE8J3N0cmluZycsIFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmc+XG4gIF9yb3c/OiBhbnlcbiAgX3Jvd0luZGV4PzogbnVtYmVyXG4gIF9jb2xEYXRhPzogVGhlU2VhbVRhYmxlQ29sdW1uPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuXG4gIF9kb3dubG9hZD86IGJvb2xlYW5cbiAgX2RldGVjdE1pbWVDb250ZW50PzogYm9vbGVhblxuXG4gIEBJbnB1dCgpXG4gIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3RpdGxlID0gdmFsdWUgfVxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3RpdGxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKSBnZXQgX3RpdGxlQXR0cigpIHsgcmV0dXJuIHRoaXMudGl0bGUgfHwgdGhpcy52YWx1ZSB9XG5cbiAgQElucHV0KClcbiAgc2V0IHN0eWxlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHsgdGhpcy5fc3R5bGUgPSB2YWx1ZSB9XG4gIGdldCBzdHlsZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fc3R5bGUgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5zdHlsZScpIGdldCBfc3R5bGVBdHRyKCkgeyByZXR1cm4gdGhpcy5zdHlsZSB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNsYXNzQXR0cih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX2NsYXNzID0gdmFsdWUgfVxuICBnZXQgY2xhc3NBdHRyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9jbGFzcyB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBfY2xhc3NBdHRyKCkgeyByZXR1cm4gdGhpcy5jbGFzc0F0dHIgfVxuXG4gIGNhblBvcG92ZXIgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVDZWxsVHlwZUhlbHBlcnM6IFRhYmxlQ2VsbFR5cGVzSGVscGVyc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0YXRhYmxlPzogRGF0YXRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3RhYmxlPzogVGFibGVDb21wb25lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQUJMRV9DRUxMX0RBVEEpIHJlYWRvbmx5IF90YWJsZURhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICApIHtcbiAgICBjb25zdCBfZGF0YSA9IF90YWJsZURhdGFcbiAgICB0aGlzLl90YWJsZUNlbGxEYXRhID0gX3RhYmxlRGF0YVxuXG4gICAgdGhpcy5fcm93ID0gX2RhdGEgJiYgX2RhdGEucm93XG4gICAgdGhpcy5fcm93SW5kZXggPSBfZGF0YSAmJiBfZGF0YS5yb3dJbmRleFxuXG4gICAgdGhpcy52YWx1ZSA9IF9kYXRhICYmIF9kYXRhLnZhbHVlXG4gICAgdGhpcy5fY29sRGF0YSA9IF9kYXRhICYmIF9kYXRhLmNvbERhdGFcbiAgICBpZiAoX2RhdGEgJiYgX2RhdGEuY29sRGF0YSAmJiAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZ1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IF9kYXRhID0gdGhpcy5fdGFibGVEYXRhXG4gICAgaWYgKF9kYXRhKSB7XG4gICAgICBfZGF0YS5jaGFuZ2VkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICBpZiAodi5jaGFuZ2VzLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdi5jaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgdGhpcy5fY2RmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93JykpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkOiBib29sZWFuID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpID8gJ2xpbmstZW5jcnlwdGVkJyA6ICdsaW5rJ1xuICAgICAgICAgIGRvd25sb2FkID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kb3dubG9hZClcbiAgICAgICAgICBkZXRlY3RNaW1lQ29udGVudCA9ICEhdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZGV0ZWN0TWltZUNvbnRlbnQpXG4gICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5xdWVyeVBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgICBuZXdUcGxUeXBlID0gJ2J1dHRvbidcbiAgICAgICAgdGhpcy5fYnV0dG9uQWN0aW9uID0gY29uZmlnQWN0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHBsVHlwZSA9IG5ld1RwbFR5cGVcbiAgICB0aGlzLl9saW5rID0gbGlua1xuICAgIHRoaXMuX2Rvd25sb2FkID0gZG93bmxvYWRcbiAgICB0aGlzLl9kZXRlY3RNaW1lQ29udGVudCA9IGRldGVjdE1pbWVDb250ZW50XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc/OiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWcudGl0bGVBdHRyKVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5zdHlsZUF0dHIpXG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICB0aGlzLnN0eWxlID0gc3R5bGVcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc0F0dHIgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5jbGFzc0F0dHIpXG4gICAgaWYgKGNsYXNzQXR0cikge1xuICAgICAgdGhpcy5jbGFzc0F0dHIgPSBjbGFzc0F0dHJcbiAgICB9XG5cbiAgICB0aGlzLnNldEFjdGlvbihjb25maWcuYWN0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWdWYWx1ZSh2YWw6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh2YWwsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLnBhcnNlVmFsdWVQcm9wKHZhbCwgY29udGV4dEZuKVxuICB9XG5cbiAgX2RvQnV0dG9uQWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9idXR0b25BY3Rpb24gJiYgdGhpcy5fYnV0dG9uQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh0aGlzLnZhbHVlLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgICAgdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuaGFuZGxlTW9kYWxBY3Rpb24odGhpcy5fYnV0dG9uQWN0aW9uLCBjb250ZXh0Rm4pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgciA9PiB7fSxcbiAgICAgICAgICBlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpLFxuICAgICAgICAgICgpID0+IHRoaXMuX2FjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIGlmICh0aGlzLl9kYXRhdGFibGUpIHtcbiAgICAgIHRoaXMuX2RhdGF0YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fdGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlLnRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjcG9wb3ZlclRwbD5cbiAge3sgdmFsdWUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Qb3BvdmVyPlxuICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgIHt7IHZhbHVlIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfdHBsVHlwZSB8fCBfdHBsVHlwZSA9PT0gJ2RlZmF1bHQnXCI+XG4gIDxkaXYgKm5nSWY9XCJjYW5Qb3BvdmVyOyBlbHNlIG5vUG9wb3ZlclwiIFtzZWFtUG9wb3Zlcl09XCJwb3BvdmVyVHBsXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cblxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rJ1wiPlxuICA8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICBbcm91dGVyTGlua109XCJfbGlua1wiXG4gICAgW3F1ZXJ5UGFyYW1zXT1cIl9xdWVyeVBhcmFtc1wiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rLWV4dGVybmFsJ1wiPlxuICA8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICBbYXR0ci5ocmVmXT1cIl9saW5rXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZW5jcnlwdGVkJ1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIGQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbc2VhbUVuY3J5cHRlZEFzc2V0TGlua109XCJfbGlua1wiXG4gICAgW3NlYW1EZXRlY3RNaW1lRnJvbUNvbnRlbnRdPVwiX2RldGVjdE1pbWVDb250ZW50XCJcbiAgICBbc2VhbURvd25sb2FkQXNzZXRdPVwiX2Rvd25sb2FkXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnYnV0dG9uJ1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIGQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIlxuICAgIChjbGljayk9XCJfZG9CdXR0b25BY3Rpb24oKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC10eXBlLXN0cmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vdGFibGUtY2VsbC10eXBlcy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL3RhYmxlLWNlbGwtdHlwZXMvdGFibGUtY2VsbC10eXBlLXN0cmluZy90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUkxQyxPQUFPLEVBQWdDLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7Ozs7Ozs7QUFlbEcsTUFBTSxPQUFPLDRCQUE0QjtJQWtFdkMsWUFDbUIsSUFBdUIsRUFDdkIscUJBQW1ELEVBQ2hELFVBQStCLEVBQy9CLE1BQXVCLEVBQ0csVUFBK0Q7UUFKNUYsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtRQUNoRCxlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUNHLGVBQVUsR0FBVixVQUFVLENBQXFEO1FBckU5RixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUEwQnJELGFBQVEsR0FBdUIsU0FBUyxDQUFBO1FBb0N4QyxlQUFVLEdBQUcsS0FBSyxDQUFBO1FBU2hCLE1BQU0sS0FB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Q0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUN6QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FDbkMsQ0FBQTtTQUNKO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxDQUFBO1NBQzlDO2FBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQTtTQUMxQztJQUNILENBQUM7O3lIQWpNVSw0QkFBNEIsK0xBdUVqQixlQUFlOzZHQXZFMUIsNEJBQTRCLGlTQy9CekMsc3BEQXlEQTsyRkQxQmEsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixRQUdqQyxFQUFHLG1CQUNRLHVCQUF1QixDQUFDLE1BQU07OzBCQXVFNUMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzRDQWxFakMsS0FBSztzQkFEUixLQUFLO2dCQWVGLE1BQU07c0JBRFQsS0FBSztnQkE2QkYsS0FBSztzQkFEUixLQUFLO2dCQUl5QixVQUFVO3NCQUF4QyxXQUFXO3VCQUFDLFlBQVk7Z0JBR3JCLEtBQUs7c0JBRFIsS0FBSztnQkFJeUIsVUFBVTtzQkFBeEMsV0FBVzt1QkFBQyxZQUFZO2dCQUdyQixTQUFTO3NCQURaLEtBQUs7Z0JBSW9CLFVBQVU7c0JBQW5DLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBEYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vZGF0YXRhYmxlJ1xuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUnXG5pbXBvcnQgeyBUYWJsZUNlbGxUeXBlc0hlbHBlcnNTZXJ2aWNlLCBUQUJMRV9DRUxMX0RBVEEgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuaW1wb3J0IHR5cGUgeyBUYWJsZUNlbGxEYXRhLCBUaGVTZWFtVGFibGVDb2x1bW4gfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdGFibGUtY2VsbC10eXBlJ1xuXG5cbmltcG9ydCB7IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcsIFRhYmxlQ2VsbFR5cGVTdHJpbmdDb25maWdBY3Rpb24gfSBmcm9tICcuL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmctY29uZmlnJ1xuXG5leHBvcnQgdHlwZSBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCcgfCAnbGluaycgfCAnbGluay1leHRlcm5hbCcgfCAnbGluay1lbmNyeXB0ZWQnIHwgJ2J1dHRvbidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS10YWJsZS1jZWxsLXR5cGUtc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwtdHlwZS1zdHJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLXR5cGUtc3RyaW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDZWxsVHlwZVN0cmluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH1cbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsXG4gICAgLy8gVE9ETzogVGhpcyBpcyB0ZW1wb3JhcnkgdG8gdGVzdCB0aGUgZmVhdHVyZSBhbmQgd2lsbCBiZSBmaXhlZCB3aGVuIHRoZVxuICAgIC8vIGR5bmFtaWMgY29sdW1uIGRhdGEgaXMgZml4ZWQuIFRoZSBwbGFuIGlzIHRvIGFkZCBhIGNvbmZpZyB0b2dnbGUgdG9cbiAgICAvLyBhbHdheXMgZW5hYmxlIGFuZCBkZXBlbmRpbmcgb24gcGVyZm9ybWFuY2UgaXQgY291bGQgdHJ5IHRvIGRlY2lkZSBvbiBpdHNcbiAgICAvLyBvd24gYmFzZWQgb24gY29udGVudCBzaXplLlxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMzApIHtcbiAgICAgIHRoaXMuY2FuUG9wb3ZlciA9IHRydWVcbiAgICB9XG4gIH1cbiAgX3ZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbmZpZygpIHsgcmV0dXJuIHRoaXMuX2NvbmZpZyB9XG4gIHNldCBjb25maWcodmFsdWU6IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgdGhpcy5fY29uZmlnID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlnKHZhbHVlKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIF9jb25maWc6IFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgX3RwbFR5cGU6IFN0cmluZ1RlbXBsYXRlVHlwZSA9ICdkZWZhdWx0J1xuICBfbGluaz86IHN0cmluZ1xuICBfdGl0bGU/OiBzdHJpbmdcbiAgX3F1ZXJ5UGFyYW1zPzogeyBbazogc3RyaW5nXTogYW55IH1cblxuICBfc3R5bGU/OiBzdHJpbmdcbiAgX2NsYXNzPzogc3RyaW5nXG5cbiAgX2J1dHRvbkFjdGlvbj86IFRhYmxlQ2VsbFR5cGVTdHJpbmdDb25maWdBY3Rpb25cblxuICBfdGFibGVDZWxsRGF0YT86IFRhYmxlQ2VsbERhdGE8J3N0cmluZycsIFRhYmxlQ2VsbFR5cGVDb25maWdTdHJpbmc+XG4gIF9yb3c/OiBhbnlcbiAgX3Jvd0luZGV4PzogbnVtYmVyXG4gIF9jb2xEYXRhPzogVGhlU2VhbVRhYmxlQ29sdW1uPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuXG4gIF9kb3dubG9hZD86IGJvb2xlYW5cbiAgX2RldGVjdE1pbWVDb250ZW50PzogYm9vbGVhblxuXG4gIEBJbnB1dCgpXG4gIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3RpdGxlID0gdmFsdWUgfVxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX3RpdGxlIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIudGl0bGUnKSBnZXQgX3RpdGxlQXR0cigpIHsgcmV0dXJuIHRoaXMudGl0bGUgfHwgdGhpcy52YWx1ZSB9XG5cbiAgQElucHV0KClcbiAgc2V0IHN0eWxlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHsgdGhpcy5fc3R5bGUgPSB2YWx1ZSB9XG4gIGdldCBzdHlsZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fc3R5bGUgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5zdHlsZScpIGdldCBfc3R5bGVBdHRyKCkgeyByZXR1cm4gdGhpcy5zdHlsZSB9XG5cbiAgQElucHV0KClcbiAgc2V0IGNsYXNzQXR0cih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7IHRoaXMuX2NsYXNzID0gdmFsdWUgfVxuICBnZXQgY2xhc3NBdHRyKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9jbGFzcyB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBfY2xhc3NBdHRyKCkgeyByZXR1cm4gdGhpcy5jbGFzc0F0dHIgfVxuXG4gIGNhblBvcG92ZXIgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVDZWxsVHlwZUhlbHBlcnM6IFRhYmxlQ2VsbFR5cGVzSGVscGVyc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0YXRhYmxlPzogRGF0YXRhYmxlQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3RhYmxlPzogVGFibGVDb21wb25lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQUJMRV9DRUxMX0RBVEEpIHJlYWRvbmx5IF90YWJsZURhdGE/OiBUYWJsZUNlbGxEYXRhPCdzdHJpbmcnLCBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nPlxuICApIHtcbiAgICBjb25zdCBfZGF0YSA9IF90YWJsZURhdGFcbiAgICB0aGlzLl90YWJsZUNlbGxEYXRhID0gX3RhYmxlRGF0YVxuXG4gICAgdGhpcy5fcm93ID0gX2RhdGEgJiYgX2RhdGEucm93XG4gICAgdGhpcy5fcm93SW5kZXggPSBfZGF0YSAmJiBfZGF0YS5yb3dJbmRleFxuXG4gICAgdGhpcy52YWx1ZSA9IF9kYXRhICYmIF9kYXRhLnZhbHVlXG4gICAgdGhpcy5fY29sRGF0YSA9IF9kYXRhICYmIF9kYXRhLmNvbERhdGFcbiAgICBpZiAoX2RhdGEgJiYgX2RhdGEuY29sRGF0YSAmJiAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZykge1xuICAgICAgdGhpcy5jb25maWcgPSAoPGFueT5fZGF0YS5jb2xEYXRhKS5jZWxsVHlwZUNvbmZpZ1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IF9kYXRhID0gdGhpcy5fdGFibGVEYXRhXG4gICAgaWYgKF9kYXRhKSB7XG4gICAgICBfZGF0YS5jaGFuZ2VkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICBpZiAodi5jaGFuZ2VzLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdi5jaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZVxuICAgICAgICAgICAgdGhpcy5fY2RmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29sRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xEYXRhID0gdi5jaGFuZ2VzLmNvbERhdGEuY3VycmVudFZhbHVlXG4gICAgICAgICAgICBpZiAoY29sRGF0YSAmJiBjb2xEYXRhLmNlbGxUeXBlQ29uZmlnICE9PSB0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbERhdGEuY2VsbFR5cGVDb25maWdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnID0gdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHYuY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93JykpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZ1xuICAgICAgICAgICAgICB0aGlzLl9jZGYubWFya0ZvckNoZWNrKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb24oY29uZmlnQWN0aW9uPzogVGFibGVDZWxsVHlwZVN0cmluZ0NvbmZpZ0FjdGlvbikge1xuICAgIGxldCBuZXdUcGxUeXBlOiBTdHJpbmdUZW1wbGF0ZVR5cGUgPSAnZGVmYXVsdCdcbiAgICBsZXQgbGluazogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRvd25sb2FkOiBib29sZWFuID0gZmFsc2VcbiAgICBsZXQgZGV0ZWN0TWltZUNvbnRlbnQgPSBmYWxzZVxuICAgIGxldCBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWRcblxuICAgIGlmIChjb25maWdBY3Rpb24pIHtcbiAgICAgIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgIGxpbmsgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5saW5rKVxuICAgICAgICBpZiAobGluayAhPT0gdW5kZWZpbmVkICYmIGxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcGxUeXBlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uYXNzZXQpID8gJ2xpbmstZW5jcnlwdGVkJyA6ICdsaW5rJ1xuICAgICAgICAgIGRvd25sb2FkID0gISF0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5kb3dubG9hZClcbiAgICAgICAgICBkZXRlY3RNaW1lQ29udGVudCA9ICEhdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWdBY3Rpb24uZGV0ZWN0TWltZUNvbnRlbnQpXG4gICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZ0FjdGlvbi5xdWVyeVBhcmFtcylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb25maWdBY3Rpb24udHlwZSA9PT0gJ21vZGFsJykge1xuICAgICAgICBuZXdUcGxUeXBlID0gJ2J1dHRvbidcbiAgICAgICAgdGhpcy5fYnV0dG9uQWN0aW9uID0gY29uZmlnQWN0aW9uXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdHBsVHlwZSA9IG5ld1RwbFR5cGVcbiAgICB0aGlzLl9saW5rID0gbGlua1xuICAgIHRoaXMuX2Rvd25sb2FkID0gZG93bmxvYWRcbiAgICB0aGlzLl9kZXRlY3RNaW1lQ29udGVudCA9IGRldGVjdE1pbWVDb250ZW50XG4gICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtc1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWc/OiBUYWJsZUNlbGxUeXBlQ29uZmlnU3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcpIHsgcmV0dXJuIH1cblxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fcGFyc2VDb25maWdWYWx1ZShjb25maWcudGl0bGVBdHRyKVxuICAgIGlmICh0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZSA9IHRpdGxlXG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5zdHlsZUF0dHIpXG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICB0aGlzLnN0eWxlID0gc3R5bGVcbiAgICB9XG5cbiAgICBjb25zdCBjbGFzc0F0dHIgPSB0aGlzLl9wYXJzZUNvbmZpZ1ZhbHVlKGNvbmZpZy5jbGFzc0F0dHIpXG4gICAgaWYgKGNsYXNzQXR0cikge1xuICAgICAgdGhpcy5jbGFzc0F0dHIgPSBjbGFzc0F0dHJcbiAgICB9XG5cbiAgICB0aGlzLnNldEFjdGlvbihjb25maWcuYWN0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWdWYWx1ZSh2YWw6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh2YWwsIHRoaXMuX3RhYmxlQ2VsbERhdGEpXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLnBhcnNlVmFsdWVQcm9wKHZhbCwgY29udGV4dEZuKVxuICB9XG5cbiAgX2RvQnV0dG9uQWN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9idXR0b25BY3Rpb24gJiYgdGhpcy5fYnV0dG9uQWN0aW9uLnR5cGUgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRGbiA9ICgpID0+IHRoaXMuX3RhYmxlQ2VsbFR5cGVIZWxwZXJzLmdldFZhbHVlQ29udGV4dCh0aGlzLnZhbHVlLCB0aGlzLl90YWJsZUNlbGxEYXRhKVxuICAgICAgdGhpcy5fdGFibGVDZWxsVHlwZUhlbHBlcnMuaGFuZGxlTW9kYWxBY3Rpb24odGhpcy5fYnV0dG9uQWN0aW9uLCBjb250ZXh0Rm4pXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgciA9PiB7fSxcbiAgICAgICAgICBlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpLFxuICAgICAgICAgICgpID0+IHRoaXMuX2FjdGlvblJlZnJlc2hSZXF1ZXN0KClcbiAgICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FjdGlvblJlZnJlc2hSZXF1ZXN0KCkge1xuICAgIGlmICh0aGlzLl9kYXRhdGFibGUpIHtcbiAgICAgIHRoaXMuX2RhdGF0YWJsZS50cmlnZ2VyQWN0aW9uUmVmcmVzaFJlcXVlc3QoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fdGFibGUpIHtcbiAgICAgIHRoaXMuX3RhYmxlLnRyaWdnZXJBY3Rpb25SZWZyZXNoUmVxdWVzdCgpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjcG9wb3ZlclRwbD5cbiAge3sgdmFsdWUgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Qb3BvdmVyPlxuICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgIHt7IHZhbHVlIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfdHBsVHlwZSB8fCBfdHBsVHlwZSA9PT0gJ2RlZmF1bHQnXCI+XG4gIDxkaXYgKm5nSWY9XCJjYW5Qb3BvdmVyOyBlbHNlIG5vUG9wb3ZlclwiIFtzZWFtUG9wb3Zlcl09XCJwb3BvdmVyVHBsXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cblxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rJ1wiPlxuICA8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICBbcm91dGVyTGlua109XCJfbGlua1wiXG4gICAgW3F1ZXJ5UGFyYW1zXT1cIl9xdWVyeVBhcmFtc1wiXG4gICAgW2F0dHIudGl0bGVdPVwiX3RpdGxlXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vUG9wb3ZlclwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiX3RwbFR5cGUgPT09ICdsaW5rLWV4dGVybmFsJ1wiPlxuICA8YSBjbGFzcz1cImQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICBbYXR0ci5ocmVmXT1cIl9saW5rXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9hPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJfdHBsVHlwZSA9PT0gJ2xpbmstZW5jcnlwdGVkJ1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIGQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbc2VhbUVuY3J5cHRlZEFzc2V0TGlua109XCJfbGlua1wiXG4gICAgW3NlYW1EZXRlY3RNaW1lRnJvbUNvbnRlbnRdPVwiX2RldGVjdE1pbWVDb250ZW50XCJcbiAgICBbc2VhbURvd25sb2FkQXNzZXRdPVwiX2Rvd25sb2FkXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9Qb3BvdmVyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90cGxUeXBlID09PSAnYnV0dG9uJ1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIGQtYmxvY2sgdGV4dC1ib2R5IHRleHQtZGVjb3JhdGlvbi1ub25lXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbYXR0ci50aXRsZV09XCJfdGl0bGVcIlxuICAgIChjbGljayk9XCJfZG9CdXR0b25BY3Rpb24oKVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1BvcG92ZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L2J1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=