geonetwork-ui 2.6.0-dev.c5432f39f → 2.6.0-dev.cfd9cd166

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 (586) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +17 -11
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +4 -8
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -6
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  11. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  12. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  13. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -2
  14. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +18 -16
  15. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +46 -16
  16. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  18. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +23 -13
  19. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  20. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  22. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  23. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  24. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  25. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  26. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -3
  27. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  28. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  29. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  30. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  31. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  32. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  33. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  34. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  35. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  36. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +11 -9
  37. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  38. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +8 -14
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +4 -4
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  52. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  53. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  54. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  55. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  56. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  57. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  59. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  60. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  61. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  62. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +20 -19
  63. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  64. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  65. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  66. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  67. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  68. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  69. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  70. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +77 -28
  71. package/esm2022/libs/feature/search/src/lib/constants.mjs +3 -2
  72. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  73. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  74. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  75. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  76. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -6
  77. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  78. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  79. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  80. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  81. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  82. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  83. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  84. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  85. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -4
  86. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  87. package/esm2022/libs/ui/elements/src/index.mjs +1 -3
  88. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  89. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  90. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  91. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  92. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  93. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  94. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  95. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +4 -5
  96. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  97. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -36
  98. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +58 -0
  99. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +7 -10
  100. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +4 -5
  101. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  102. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  103. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -5
  104. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -7
  105. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +39 -16
  106. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  107. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  108. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +52 -32
  109. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +5 -4
  110. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  111. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  112. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  113. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +5 -6
  114. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  115. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  116. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  117. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  118. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  119. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  120. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +12 -7
  121. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  122. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  123. package/esm2022/libs/ui/layout/src/index.mjs +2 -2
  124. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  125. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  126. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  127. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +21 -12
  128. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  129. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  130. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  131. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +17 -53
  132. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  133. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  134. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  135. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +8 -8
  136. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +28 -17
  137. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +23 -24
  138. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  139. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  140. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  141. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  142. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  143. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -69
  144. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  145. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  146. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +40 -2
  147. package/esm2022/libs/util/shared/src/index.mjs +2 -2
  148. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  149. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  150. package/esm2022/translations/de.json +20 -22
  151. package/esm2022/translations/en.json +21 -23
  152. package/esm2022/translations/es.json +19 -21
  153. package/esm2022/translations/fr.json +25 -27
  154. package/esm2022/translations/it.json +22 -24
  155. package/esm2022/translations/nl.json +19 -21
  156. package/esm2022/translations/pt.json +19 -21
  157. package/esm2022/translations/sk.json +602 -0
  158. package/fesm2022/geonetwork-ui.mjs +10826 -10689
  159. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  160. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  161. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  162. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  163. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  164. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  165. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  166. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  167. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  168. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  169. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  170. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  171. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +8 -6
  172. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  173. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +10 -4
  174. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  175. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  176. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  177. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  178. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  179. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +6 -3
  180. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  181. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  182. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  183. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +20 -17
  184. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  185. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +5 -2
  186. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  187. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  188. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  189. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  190. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  191. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  192. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  193. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  194. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  195. package/libs/feature/editor/src/index.d.ts +0 -3
  196. package/libs/feature/editor/src/index.d.ts.map +1 -1
  197. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  198. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  199. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  200. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  201. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  202. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  203. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  204. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  205. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  206. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  207. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  208. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  209. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  210. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  211. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  212. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  213. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  214. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  215. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  216. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  217. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  218. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  219. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  220. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  221. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  222. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  223. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  224. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  225. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  226. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  227. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  228. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  229. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  230. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  231. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  232. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  233. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  234. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  235. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  236. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +7 -4
  237. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  238. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  239. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  240. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  241. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  242. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  243. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  244. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  245. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  246. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  247. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  248. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  249. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  250. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  251. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  252. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  253. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  254. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  255. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  256. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  257. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  258. package/libs/ui/dataviz/src/index.d.ts +0 -1
  259. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  260. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  261. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  262. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  263. package/libs/ui/elements/src/index.d.ts +0 -2
  264. package/libs/ui/elements/src/index.d.ts.map +1 -1
  265. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  266. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  267. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  268. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  269. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  270. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  271. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +4 -7
  272. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  273. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  274. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  275. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  276. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  277. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  278. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  279. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  280. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  281. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  282. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +20 -9
  283. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  284. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  285. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  286. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  287. package/libs/ui/inputs/src/index.d.ts +0 -1
  288. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  289. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  290. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  291. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  292. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  293. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  294. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  295. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  296. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  297. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  298. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  299. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  300. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  301. package/libs/ui/layout/src/index.d.ts +1 -1
  302. package/libs/ui/layout/src/index.d.ts.map +1 -1
  303. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  304. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  305. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  306. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  307. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  308. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  309. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  310. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  311. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +6 -11
  312. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  313. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +2 -1
  314. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  315. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +5 -3
  316. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  317. package/libs/ui/search/src/lib/ui-search.module.d.ts +11 -11
  318. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  319. package/libs/ui/widgets/src/index.d.ts +0 -1
  320. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  321. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  322. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  323. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  324. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  325. package/libs/util/i18n/src/index.d.ts +1 -2
  326. package/libs/util/i18n/src/index.d.ts.map +1 -1
  327. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  328. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  329. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -16
  330. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  331. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  332. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  333. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  334. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  335. package/libs/util/i18n/src/lib/language-codes.d.ts +3 -29
  336. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  337. package/libs/util/shared/src/index.d.ts +1 -1
  338. package/libs/util/shared/src/index.d.ts.map +1 -1
  339. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  340. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  341. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  342. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  343. package/package.json +3 -3
  344. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  345. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  346. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4196 -0
  347. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +19 -6
  348. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  349. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +3 -7
  350. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -6
  351. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  352. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  353. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +5 -7
  354. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  355. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  356. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -1
  357. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +14 -6
  358. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +60 -16
  359. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  360. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  361. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -20
  362. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  363. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +20 -14
  364. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +9 -2
  365. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +113 -0
  366. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  367. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  368. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -2
  369. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  370. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -2
  371. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -2
  372. package/src/libs/feature/editor/src/index.ts +0 -3
  373. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  374. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  375. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  376. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  377. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  378. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  379. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  380. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +16 -10
  381. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  382. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  383. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  384. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  385. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  386. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +5 -9
  387. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  388. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +2 -2
  389. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  390. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  391. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  392. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  393. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  394. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  395. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  396. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  397. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  398. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  399. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  400. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  401. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  402. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  403. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  404. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  405. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  406. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  407. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  408. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +22 -19
  409. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  410. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  411. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  412. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  413. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  414. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  415. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  416. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +27 -9
  417. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +113 -30
  418. package/src/libs/feature/search/src/lib/constants.ts +2 -1
  419. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  420. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  421. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  422. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  423. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  424. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  425. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  426. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  427. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  428. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  429. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  430. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  431. package/src/libs/ui/dataviz/src/index.ts +0 -1
  432. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +2 -2
  433. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  434. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  435. package/src/libs/ui/elements/src/index.ts +0 -2
  436. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  437. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  438. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  439. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  440. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  441. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  442. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  443. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  444. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  445. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +2 -2
  446. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  447. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +8 -76
  448. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +22 -55
  449. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  450. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  451. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +4 -5
  452. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +2 -2
  453. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  454. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  455. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  456. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  457. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +51 -13
  458. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  459. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  460. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
  461. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +62 -31
  462. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +7 -2
  463. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  464. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  465. package/src/libs/ui/inputs/src/index.ts +0 -1
  466. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  467. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  468. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  469. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  470. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  471. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  472. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  473. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  474. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +9 -3
  475. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  476. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  477. package/src/libs/ui/layout/src/index.ts +1 -1
  478. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  479. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  480. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  481. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  482. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
  483. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +15 -8
  484. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  485. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  486. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  487. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -42
  488. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +12 -58
  489. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  490. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  491. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +6 -4
  492. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +4 -4
  493. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +14 -22
  494. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +34 -13
  495. package/src/libs/ui/search/src/lib/ui-search.module.ts +12 -11
  496. package/src/libs/ui/widgets/src/index.ts +0 -1
  497. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  498. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  499. package/src/libs/util/i18n/src/index.ts +1 -2
  500. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  501. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -71
  502. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  503. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  504. package/src/libs/util/i18n/src/lib/language-codes.ts +44 -1
  505. package/src/libs/util/shared/src/index.ts +1 -1
  506. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  507. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  508. package/translations/de.json +20 -22
  509. package/translations/en.json +21 -23
  510. package/translations/es.json +19 -21
  511. package/translations/fr.json +25 -27
  512. package/translations/it.json +22 -24
  513. package/translations/nl.json +19 -21
  514. package/translations/pt.json +19 -21
  515. package/translations/sk.json +19 -21
  516. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  517. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  518. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  519. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  520. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  521. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  522. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  523. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  524. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -56
  525. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -130
  526. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  527. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  528. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  529. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  530. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  531. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  532. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  533. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +0 -1
  534. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  535. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  536. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  537. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  538. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  539. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  540. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  541. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  542. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  543. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  544. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  545. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  546. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  547. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  548. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -19
  549. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  550. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -31
  551. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  552. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  553. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  554. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  555. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  556. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  557. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  558. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  559. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  560. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  561. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  562. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  563. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  564. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  565. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  566. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  567. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  568. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  569. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  570. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  571. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  572. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  573. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  574. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  575. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  576. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  577. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.css +0 -0
  578. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -9
  579. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -61
  580. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -72
  581. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  582. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  583. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  584. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  585. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  586. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, I
2
2
  import { fromEvent, merge, of, timer } from 'rxjs';
3
3
  import { delay, map, startWith, switchMap } from 'rxjs/operators';
4
4
  import { CommonModule } from '@angular/common';
5
- import { TranslateModule } from '@ngx-translate/core';
5
+ import { TranslateDirective } from '@ngx-translate/core';
6
6
  import { computeMapContextDiff, FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, } from '@geospatial-sdk/core';
7
7
  import { applyContextDiffToMap, createMapFromContext, listen, } from '@geospatial-sdk/openlayers';
8
8
  import { BASEMAP_LAYERS, DO_NOT_USE_DEFAULT_BASEMAP, MAP_VIEW_CONSTRAINTS, } from './map-settings.token';
@@ -10,7 +10,6 @@ import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/
10
10
  import { matSwipeOutline } from '@ng-icons/material-icons/outline';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common";
13
- import * as i2 from "@ngx-translate/core";
14
13
  const DEFAULT_BASEMAP_LAYER = {
15
14
  type: 'xyz',
16
15
  url: `https://{a-c}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
@@ -122,11 +121,11 @@ export class MapContainerComponent {
122
121
  provideNgIconsConfig({
123
122
  size: '1.5em',
124
123
  }),
125
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
124
+ ], viewQueries: [{ propertyName: "container", first: true, predicate: ["map"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full w-full\" #map></div>\n<div\n class=\"absolute inset-0 p-2 rounded z-40 transition-all flex flex-col justify-center items-center text-primary font-sans pointer-events-none\"\n [ngClass]=\"\n (displayMessage$ | async) ? 'visible opacity-100' : 'invisible opacity-0'\n \"\n>\n <div\n class=\"absolute z-[-1] inset-0 bg-gradient-to-b from-white to-primary-lightest opacity-60\"\n ></div>\n <ng-icon\n class=\"!w-16 !h-16 text-[64px] mb-4\"\n name=\"matSwipeOutline\"\n ></ng-icon>\n <p translate>map.navigation.message</p>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
125
  }
127
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapContainerComponent, decorators: [{
128
127
  type: Component,
129
- args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, NgIconComponent], providers: [
128
+ args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateDirective, NgIconComponent], providers: [
130
129
  provideIcons({ matSwipeOutline }),
131
130
  provideNgIconsConfig({
132
131
  size: '1.5em',
@@ -155,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
155
154
  type: ViewChild,
156
155
  args: ['map']
157
156
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMvbGliL2NvbXBvbmVudHMvbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYy9saWIvY29tcG9uZW50cy9tYXAtY29udGFpbmVyL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wscUJBQXFCLEVBR3JCLHNCQUFzQixFQUV0QixzQkFBc0IsRUFFdEIsaUJBQWlCLEVBTWpCLG1CQUFtQixHQUNwQixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLE1BQU0sR0FDUCxNQUFNLDRCQUE0QixDQUFBO0FBR25DLE9BQU8sRUFDTCxjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFDTCxl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QUksRUFBRSxPQUFPO2FBQ2QsQ0FBQztTQUNILGlKQzNFSCwwakJBZ0JBLHlERHFEWSxZQUFZLGlMQUFFLGVBQWUsc0tBQUUsZUFBZTs7NEZBUTdDLHFCQUFxQjtrQkFkakMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxhQUM5Qzt3QkFDVCxZQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQzt3QkFDakMsb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxPQUFPO3lCQUNkLENBQUM7cUJBQ0g7OzBCQWtFRSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQ2pDLE1BQU07MkJBQUMsY0FBYzs7MEJBQ3JCLE1BQU07MkJBQUMsb0JBQW9CO3lDQWpFckIsT0FBTztzQkFBZixLQUFLO2dCQUlRLGFBQWE7c0JBQTFCLE1BQU07Z0JBZU8sYUFBYTtzQkFBMUIsTUFBTTtnQkFlTyxRQUFRO3NCQUFyQixNQUFNO2dCQVlPLGVBQWU7c0JBQTVCLE1BQU07Z0JBWVcsU0FBUztzQkFBMUIsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHRpbWVyIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGRlbGF5LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHtcbiAgY29tcHV0ZU1hcENvbnRleHREaWZmLFxuICBFeHRlbnQsXG4gIEZlYXR1cmVzQ2xpY2tFdmVudCxcbiAgRmVhdHVyZXNDbGlja0V2ZW50VHlwZSxcbiAgRmVhdHVyZXNIb3ZlckV2ZW50LFxuICBGZWF0dXJlc0hvdmVyRXZlbnRUeXBlLFxuICBNYXBDbGlja0V2ZW50LFxuICBNYXBDbGlja0V2ZW50VHlwZSxcbiAgTWFwQ29udGV4dCxcbiAgTWFwQ29udGV4dExheWVyLFxuICBNYXBDb250ZXh0TGF5ZXJYeXosXG4gIE1hcENvbnRleHRWaWV3LFxuICBTb3VyY2VMb2FkRXJyb3JFdmVudCxcbiAgU291cmNlTG9hZEVycm9yVHlwZSxcbn0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL2NvcmUnXG5pbXBvcnQge1xuICBhcHBseUNvbnRleHREaWZmVG9NYXAsXG4gIGNyZWF0ZU1hcEZyb21Db250ZXh0LFxuICBsaXN0ZW4sXG59IGZyb20gJ0BnZW9zcGF0aWFsLXNkay9vcGVubGF5ZXJzJ1xuaW1wb3J0IHR5cGUgT2xNYXAgZnJvbSAnb2wvTWFwJ1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7XG4gIEJBU0VNQVBfTEFZRVJTLFxuICBET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUCxcbiAgTUFQX1ZJRVdfQ09OU1RSQUlOVFMsXG59IGZyb20gJy4vbWFwLXNldHRpbmdzLnRva2VuJ1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IG1hdFN3aXBlT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuXG5jb25zdCBERUZBVUxUX0JBU0VNQVBfTEFZRVI6IE1hcENvbnRleHRMYXllclh5eiA9IHtcbiAgdHlwZTogJ3h5eicsXG4gIHVybDogYGh0dHBzOi8ve2EtY30uYmFzZW1hcHMuY2FydG9jZG4uY29tL3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9L3t4fS97eX0ucG5nYCxcbiAgYXR0cmlidXRpb25zOiBgPHNwYW4+wqkgPGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCI+T3BlblN0cmVldE1hcDwvYT4gY29udHJpYnV0b3JzLCDCqSA8YSBocmVmPVwiaHR0cHM6Ly9jYXJ0by5jb20vXCI+Q2FydG88L2E+PC9zcGFuPmAsXG59XG5cbmNvbnN0IERFRkFVTFRfVklFVzogTWFwQ29udGV4dFZpZXcgPSB7XG4gIGNlbnRlcjogWzAsIDE1XSxcbiAgem9vbTogMixcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWFwLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLWNvbnRhaW5lci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE5nSWNvbkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7IG1hdFN3aXBlT3V0bGluZSB9KSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41ZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb250ZXh0OiBNYXBDb250ZXh0IHwgbnVsbFxuXG4gIC8vIHRoZXNlIGV2ZW50cyBvbmx5IGdldCByZWdpc3RlcmVkIG9uIHRoZSBtYXAgaWYgdGhleSBhcmUgdXNlZFxuICBfZmVhdHVyZXNDbGljazogRXZlbnRFbWl0dGVyPEZlYXR1cmVbXT5cbiAgQE91dHB1dCgpIGdldCBmZWF0dXJlc0NsaWNrKCkge1xuICAgIGlmICghdGhpcy5fZmVhdHVyZXNDbGljaykge1xuICAgICAgdGhpcy5vcGVubGF5ZXJzTWFwLnRoZW4oKG9sTWFwKSA9PiB7XG4gICAgICAgIGxpc3RlbihcbiAgICAgICAgICBvbE1hcCxcbiAgICAgICAgICBGZWF0dXJlc0NsaWNrRXZlbnRUeXBlLFxuICAgICAgICAgICh7IGZlYXR1cmVzIH06IEZlYXR1cmVzQ2xpY2tFdmVudCkgPT5cbiAgICAgICAgICAgIHRoaXMuX2ZlYXR1cmVzQ2xpY2suZW1pdChmZWF0dXJlcylcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIHRoaXMuX2ZlYXR1cmVzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEZlYXR1cmVbXT4oKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZmVhdHVyZXNDbGlja1xuICB9XG4gIF9mZWF0dXJlc0hvdmVyOiBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPlxuICBAT3V0cHV0KCkgZ2V0IGZlYXR1cmVzSG92ZXIoKSB7XG4gICAgaWYgKCF0aGlzLl9mZWF0dXJlc0hvdmVyKSB7XG4gICAgICB0aGlzLm9wZW5sYXllcnNNYXAudGhlbigob2xNYXApID0+IHtcbiAgICAgICAgbGlzdGVuKFxuICAgICAgICAgIG9sTWFwLFxuICAgICAgICAgIEZlYXR1cmVzSG92ZXJFdmVudFR5cGUsXG4gICAgICAgICAgKHsgZmVhdHVyZXMgfTogRmVhdHVyZXNIb3ZlckV2ZW50KSA9PlxuICAgICAgICAgICAgdGhpcy5fZmVhdHVyZXNIb3Zlci5lbWl0KGZlYXR1cmVzKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgdGhpcy5fZmVhdHVyZXNIb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlc0hvdmVyXG4gIH1cbiAgX21hcENsaWNrOiBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyXT5cbiAgQE91dHB1dCgpIGdldCBtYXBDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuX21hcENsaWNrKSB7XG4gICAgICB0aGlzLm9wZW5sYXllcnNNYXAudGhlbigob2xNYXApID0+IHtcbiAgICAgICAgbGlzdGVuKG9sTWFwLCBNYXBDbGlja0V2ZW50VHlwZSwgKHsgY29vcmRpbmF0ZSB9OiBNYXBDbGlja0V2ZW50KSA9PlxuICAgICAgICAgIHRoaXMuX21hcENsaWNrLmVtaXQoY29vcmRpbmF0ZSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIHRoaXMuX21hcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXJdPigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9tYXBDbGlja1xuICB9XG4gIF9zb3VyY2VMb2FkRXJyb3I6IEV2ZW50RW1pdHRlcjxTb3VyY2VMb2FkRXJyb3JFdmVudD5cbiAgQE91dHB1dCgpIGdldCBzb3VyY2VMb2FkRXJyb3IoKSB7XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VMb2FkRXJyb3IpIHtcbiAgICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcCkgPT4ge1xuICAgICAgICBsaXN0ZW4ob2xNYXAsIFNvdXJjZUxvYWRFcnJvclR5cGUsIChlcnJvcjogU291cmNlTG9hZEVycm9yRXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5fc291cmNlTG9hZEVycm9yLmVtaXQoZXJyb3IpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICB0aGlzLl9zb3VyY2VMb2FkRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPFNvdXJjZUxvYWRFcnJvckV2ZW50PigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zb3VyY2VMb2FkRXJyb3JcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ21hcCcpIGNvbnRhaW5lcjogRWxlbWVudFJlZlxuICBkaXNwbGF5TWVzc2FnZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgb2xNYXA6IE9sTWFwXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET19OT1RfVVNFX0RFRkFVTFRfQkFTRU1BUCkgcHJpdmF0ZSBkb05vdFVzZURlZmF1bHRCYXNlbWFwOiBib29sZWFuLFxuICAgIEBJbmplY3QoQkFTRU1BUF9MQVlFUlMpIHByaXZhdGUgYmFzZW1hcExheWVyczogTWFwQ29udGV4dExheWVyW10sXG4gICAgQEluamVjdChNQVBfVklFV19DT05TVFJBSU5UUylcbiAgICBwcml2YXRlIG1hcFZpZXdDb25zdHJhaW50czoge1xuICAgICAgbWF4Wm9vbT86IG51bWJlclxuICAgICAgbWF4RXh0ZW50PzogRXh0ZW50XG4gICAgfVxuICApIHt9XG5cbiAgcHJpdmF0ZSBvbE1hcFJlc29sdmVyXG4gIG9wZW5sYXllcnNNYXAgPSBuZXcgUHJvbWlzZTxPbE1hcD4oKHJlc29sdmUpID0+IHtcbiAgICB0aGlzLm9sTWFwUmVzb2x2ZXIgPSByZXNvbHZlXG4gIH0pXG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMub2xNYXAgPSBhd2FpdCBjcmVhdGVNYXBGcm9tQ29udGV4dChcbiAgICAgIHRoaXMucHJvY2Vzc0NvbnRleHQodGhpcy5jb250ZXh0KSxcbiAgICAgIHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICApXG4gICAgdGhpcy5kaXNwbGF5TWVzc2FnZSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudCh0aGlzLm9sTWFwLCAnbWFwbXV0ZWQnKS5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICBmcm9tRXZlbnQodGhpcy5vbE1hcCwgJ21vdmVzdGFydCcpLnBpcGUobWFwKCgpID0+IGZhbHNlKSksXG4gICAgICBmcm9tRXZlbnQodGhpcy5vbE1hcCwgJ3NpbmdsZWNsaWNrJykucGlwZShtYXAoKCkgPT4gZmFsc2UpKVxuICAgICkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobXV0ZWQpID0+XG4gICAgICAgIG11dGVkXG4gICAgICAgICAgPyB0aW1lcigyMDAwKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKCkgPT4gZmFsc2UpLFxuICAgICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICAgIGRlbGF5KDQwMClcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG9mKGZhbHNlKVxuICAgICAgKVxuICAgIClcbiAgICB0aGlzLm9sTWFwUmVzb2x2ZXIodGhpcy5vbE1hcClcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2NvbnRleHQnIGluIGNoYW5nZXMgJiYgIWNoYW5nZXNbJ2NvbnRleHQnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSBjb21wdXRlTWFwQ29udGV4dERpZmYoXG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbnRleHQoY2hhbmdlc1snY29udGV4dCddLmN1cnJlbnRWYWx1ZSksXG4gICAgICAgIHRoaXMucHJvY2Vzc0NvbnRleHQoY2hhbmdlc1snY29udGV4dCddLnByZXZpb3VzVmFsdWUpXG4gICAgICApXG4gICAgICBhd2FpdCBhcHBseUNvbnRleHREaWZmVG9NYXAodGhpcy5vbE1hcCwgZGlmZilcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgYXBwbHkgYmFzZW1hcCBsYXllcnMgJiB2aWV3IGNvbnN0cmFpbnRzXG4gIHByb2Nlc3NDb250ZXh0KGNvbnRleHQ6IE1hcENvbnRleHQpOiBNYXBDb250ZXh0IHtcbiAgICBjb25zdCBwcm9jZXNzZWQgPSBjb250ZXh0XG4gICAgICA/IHsgLi4uY29udGV4dCwgdmlldzogY29udGV4dC52aWV3ID8/IERFRkFVTFRfVklFVyB9XG4gICAgICA6IHsgbGF5ZXJzOiBbXSwgdmlldzogREVGQVVMVF9WSUVXIH1cbiAgICBpZiAodGhpcy5iYXNlbWFwTGF5ZXJzLmxlbmd0aCkge1xuICAgICAgcHJvY2Vzc2VkLmxheWVycyA9IFsuLi50aGlzLmJhc2VtYXBMYXllcnMsIC4uLnByb2Nlc3NlZC5sYXllcnNdXG4gICAgfVxuICAgIGlmICghdGhpcy5kb05vdFVzZURlZmF1bHRCYXNlbWFwKSB7XG4gICAgICBwcm9jZXNzZWQubGF5ZXJzID0gW0RFRkFVTFRfQkFTRU1BUF9MQVlFUiwgLi4ucHJvY2Vzc2VkLmxheWVyc11cbiAgICB9XG4gICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heFpvb20pIHtcbiAgICAgIHByb2Nlc3NlZC52aWV3ID0ge1xuICAgICAgICBtYXhab29tOiB0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhab29tLFxuICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCkge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgIG1heEV4dGVudDogdGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4RXh0ZW50LFxuICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHJvY2Vzc2VkLnZpZXcgJiZcbiAgICAgICEoJ3pvb20nIGluIHByb2Nlc3NlZC52aWV3KSAmJlxuICAgICAgISgnY2VudGVyJyBpbiBwcm9jZXNzZWQudmlldylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhFeHRlbnQpIHtcbiAgICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgICAgZXh0ZW50OiB0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhFeHRlbnQsXG4gICAgICAgICAgLi4ucHJvY2Vzc2VkLnZpZXcsXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3NlZC52aWV3ID0geyAuLi5ERUZBVUxUX1ZJRVcsIC4uLnByb2Nlc3NlZC52aWV3IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3NlZFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaC1mdWxsIHctZnVsbFwiICNtYXA+PC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBwLTIgcm91bmRlZCB6LTQwIHRyYW5zaXRpb24tYWxsIGZsZXggZmxleC1jb2wganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHRleHQtcHJpbWFyeSBmb250LXNhbnMgcG9pbnRlci1ldmVudHMtbm9uZVwiXG4gIFtuZ0NsYXNzXT1cIlxuICAgIChkaXNwbGF5TWVzc2FnZSQgfCBhc3luYykgPyAndmlzaWJsZSBvcGFjaXR5LTEwMCcgOiAnaW52aXNpYmxlIG9wYWNpdHktMCdcbiAgXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgei1bLTFdIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLXdoaXRlIHRvLXByaW1hcnktbGlnaHRlc3Qgb3BhY2l0eS02MFwiXG4gID48L2Rpdj5cbiAgPG5nLWljb25cbiAgICBjbGFzcz1cIiF3LTE2ICFoLTE2IHRleHQtWzY0cHhdIG1iLTRcIlxuICAgIG5hbWU9XCJtYXRTd2lwZU91dGxpbmVcIlxuICA+PC9uZy1pY29uPlxuICA8cCB0cmFuc2xhdGU+bWFwLm5hdmlnYXRpb24ubWVzc2FnZTwvcD5cbjwvZGl2PlxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL21hcC9zcmMvbGliL2NvbXBvbmVudHMvbWFwLWNvbnRhaW5lci9tYXAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYy9saWIvY29tcG9uZW50cy9tYXAtY29udGFpbmVyL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3hELE9BQU8sRUFDTCxxQkFBcUIsRUFHckIsc0JBQXNCLEVBRXRCLHNCQUFzQixFQUV0QixpQkFBaUIsRUFNakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsTUFBTSxHQUNQLE1BQU0sNEJBQTRCLENBQUE7QUFHbkMsT0FBTyxFQUNMLGNBQWMsRUFDZCwwQkFBMEIsRUFDMUIsb0JBQW9CLEdBQ3JCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osb0JBQW9CLEdBQ3JCLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFBOzs7QUFFbEUsTUFBTSxxQkFBcUIsR0FBdUI7SUFDaEQsSUFBSSxFQUFFLEtBQUs7SUFDWCxHQUFHLEVBQUUseUVBQXlFO0lBQzlFLFlBQVksRUFBRSwwSUFBMEk7Q0FDekosQ0FBQTtBQUVELE1BQU0sWUFBWSxHQUFtQjtJQUNuQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2YsSUFBSSxFQUFFLENBQUM7Q0FDUixDQUFBO0FBZ0JELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsSUFBYyxhQUFhO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDaEMsTUFBTSxDQUNKLEtBQUssRUFDTCxzQkFBc0IsRUFDdEIsQ0FBQyxFQUFFLFFBQVEsRUFBc0IsRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNyQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsSUFBYyxhQUFhO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDaEMsTUFBTSxDQUNKLEtBQUssRUFDTCxzQkFBc0IsRUFDdEIsQ0FBQyxFQUFFLFFBQVEsRUFBc0IsRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNyQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDckQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsSUFBYyxRQUFRO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDaEMsTUFBTSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFpQixFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ2hDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUE7UUFDdkQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNoQyxNQUFNLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLENBQUMsS0FBMkIsRUFBRSxFQUFFLENBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQ2xDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQTtRQUNsRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUE7SUFDOUIsQ0FBQztJQU1ELFlBQzhDLHNCQUErQixFQUMzQyxhQUFnQyxFQUV4RCxrQkFHUDtRQU4yQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQVM7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBRXhELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FHekI7UUFJSCxrQkFBYSxHQUFHLElBQUksT0FBTyxDQUFRLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFMQyxDQUFDO0lBT0osS0FBSyxDQUFDLGVBQWU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLG9CQUFvQixDQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQzdCLENBQUE7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3pELFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDNUQsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDbEIsS0FBSztZQUNILENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNkLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDWDtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ2QsQ0FDRixDQUFBO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBc0I7UUFDdEMsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDaEUsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FDdEQsQ0FBQTtZQUNELE1BQU0scUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxjQUFjLENBQUMsT0FBbUI7UUFDaEMsTUFBTSxTQUFTLEdBQUcsT0FBTztZQUN2QixDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxZQUFZLEVBQUU7WUFDcEQsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUE7UUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLFNBQVMsQ0FBQyxJQUFJLEdBQUc7Z0JBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPO2dCQUN4QyxHQUFHLFNBQVMsQ0FBQyxJQUFJO2FBQ2xCLENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEMsU0FBUyxDQUFDLElBQUksR0FBRztnQkFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVM7Z0JBQzVDLEdBQUcsU0FBUyxDQUFDLElBQUk7YUFDbEIsQ0FBQTtRQUNILENBQUM7UUFDRCxJQUNFLFNBQVMsQ0FBQyxJQUFJO1lBQ2QsQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUM3QixDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLFNBQVMsQ0FBQyxJQUFJLEdBQUc7b0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTO29CQUN6QyxHQUFHLFNBQVMsQ0FBQyxJQUFJO2lCQUNsQixDQUFBO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUN6RCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7K0dBckpVLHFCQUFxQixrQkFnRXRCLDBCQUEwQixhQUMxQixjQUFjLGFBQ2Qsb0JBQW9CO21HQWxFbkIscUJBQXFCLHlPQVByQjtZQUNULFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQ2pDLG9CQUFvQixDQUFDO2dCQUNuQixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUM7U0FDSCxpSkMzRUgsMGpCQWdCQSx5RERxRFksWUFBWSxrTEFBRSxrQkFBa0Isa0hBQUUsZUFBZTs7NEZBUWhELHFCQUFxQjtrQkFkakMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLGFBQ2pEO3dCQUNULFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDO3dCQUNqQyxvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLE9BQU87eUJBQ2QsQ0FBQztxQkFDSDs7MEJBa0VFLE1BQU07MkJBQUMsMEJBQTBCOzswQkFDakMsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxvQkFBb0I7eUNBakVyQixPQUFPO3NCQUFmLEtBQUs7Z0JBSVEsYUFBYTtzQkFBMUIsTUFBTTtnQkFlTyxhQUFhO3NCQUExQixNQUFNO2dCQWVPLFFBQVE7c0JBQXJCLE1BQU07Z0JBWU8sZUFBZTtzQkFBNUIsTUFBTTtnQkFZVyxTQUFTO3NCQUExQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgdGltZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVsYXksIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBjb21wdXRlTWFwQ29udGV4dERpZmYsXG4gIEV4dGVudCxcbiAgRmVhdHVyZXNDbGlja0V2ZW50LFxuICBGZWF0dXJlc0NsaWNrRXZlbnRUeXBlLFxuICBGZWF0dXJlc0hvdmVyRXZlbnQsXG4gIEZlYXR1cmVzSG92ZXJFdmVudFR5cGUsXG4gIE1hcENsaWNrRXZlbnQsXG4gIE1hcENsaWNrRXZlbnRUeXBlLFxuICBNYXBDb250ZXh0LFxuICBNYXBDb250ZXh0TGF5ZXIsXG4gIE1hcENvbnRleHRMYXllclh5eixcbiAgTWFwQ29udGV4dFZpZXcsXG4gIFNvdXJjZUxvYWRFcnJvckV2ZW50LFxuICBTb3VyY2VMb2FkRXJyb3JUeXBlLFxufSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvY29yZSdcbmltcG9ydCB7XG4gIGFwcGx5Q29udGV4dERpZmZUb01hcCxcbiAgY3JlYXRlTWFwRnJvbUNvbnRleHQsXG4gIGxpc3Rlbixcbn0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL29wZW5sYXllcnMnXG5pbXBvcnQgdHlwZSBPbE1hcCBmcm9tICdvbC9NYXAnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHtcbiAgQkFTRU1BUF9MQVlFUlMsXG4gIERPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQLFxuICBNQVBfVklFV19DT05TVFJBSU5UUyxcbn0gZnJvbSAnLi9tYXAtc2V0dGluZ3MudG9rZW4nXG5pbXBvcnQge1xuICBOZ0ljb25Db21wb25lbnQsXG4gIHByb3ZpZGVJY29ucyxcbiAgcHJvdmlkZU5nSWNvbnNDb25maWcsXG59IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0U3dpcGVPdXRsaW5lIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL291dGxpbmUnXG5cbmNvbnN0IERFRkFVTFRfQkFTRU1BUF9MQVlFUjogTWFwQ29udGV4dExheWVyWHl6ID0ge1xuICB0eXBlOiAneHl6JyxcbiAgdXJsOiBgaHR0cHM6Ly97YS1jfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vcmFzdGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fS5wbmdgLFxuICBhdHRyaWJ1dGlvbnM6IGA8c3Bhbj7CqSA8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIj5PcGVuU3RyZWV0TWFwPC9hPiBjb250cmlidXRvcnMsIMKpIDxhIGhyZWY9XCJodHRwczovL2NhcnRvLmNvbS9cIj5DYXJ0bzwvYT48L3NwYW4+YCxcbn1cblxuY29uc3QgREVGQVVMVF9WSUVXOiBNYXBDb250ZXh0VmlldyA9IHtcbiAgY2VudGVyOiBbMCwgMTVdLFxuICB6b29tOiAyLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tYXAtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXAtY29udGFpbmVyLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZURpcmVjdGl2ZSwgTmdJY29uQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgbWF0U3dpcGVPdXRsaW5lIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjVlbScsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbnRleHQ6IE1hcENvbnRleHQgfCBudWxsXG5cbiAgLy8gdGhlc2UgZXZlbnRzIG9ubHkgZ2V0IHJlZ2lzdGVyZWQgb24gdGhlIG1hcCBpZiB0aGV5IGFyZSB1c2VkXG4gIF9mZWF0dXJlc0NsaWNrOiBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPlxuICBAT3V0cHV0KCkgZ2V0IGZlYXR1cmVzQ2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLl9mZWF0dXJlc0NsaWNrKSB7XG4gICAgICB0aGlzLm9wZW5sYXllcnNNYXAudGhlbigob2xNYXApID0+IHtcbiAgICAgICAgbGlzdGVuKFxuICAgICAgICAgIG9sTWFwLFxuICAgICAgICAgIEZlYXR1cmVzQ2xpY2tFdmVudFR5cGUsXG4gICAgICAgICAgKHsgZmVhdHVyZXMgfTogRmVhdHVyZXNDbGlja0V2ZW50KSA9PlxuICAgICAgICAgICAgdGhpcy5fZmVhdHVyZXNDbGljay5lbWl0KGZlYXR1cmVzKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgdGhpcy5fZmVhdHVyZXNDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZVtdPigpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mZWF0dXJlc0NsaWNrXG4gIH1cbiAgX2ZlYXR1cmVzSG92ZXI6IEV2ZW50RW1pdHRlcjxGZWF0dXJlW10+XG4gIEBPdXRwdXQoKSBnZXQgZmVhdHVyZXNIb3ZlcigpIHtcbiAgICBpZiAoIXRoaXMuX2ZlYXR1cmVzSG92ZXIpIHtcbiAgICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcCkgPT4ge1xuICAgICAgICBsaXN0ZW4oXG4gICAgICAgICAgb2xNYXAsXG4gICAgICAgICAgRmVhdHVyZXNIb3ZlckV2ZW50VHlwZSxcbiAgICAgICAgICAoeyBmZWF0dXJlcyB9OiBGZWF0dXJlc0hvdmVyRXZlbnQpID0+XG4gICAgICAgICAgICB0aGlzLl9mZWF0dXJlc0hvdmVyLmVtaXQoZmVhdHVyZXMpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgICB0aGlzLl9mZWF0dXJlc0hvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxGZWF0dXJlW10+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2ZlYXR1cmVzSG92ZXJcbiAgfVxuICBfbWFwQ2xpY2s6IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXJdPlxuICBAT3V0cHV0KCkgZ2V0IG1hcENsaWNrKCkge1xuICAgIGlmICghdGhpcy5fbWFwQ2xpY2spIHtcbiAgICAgIHRoaXMub3BlbmxheWVyc01hcC50aGVuKChvbE1hcCkgPT4ge1xuICAgICAgICBsaXN0ZW4ob2xNYXAsIE1hcENsaWNrRXZlbnRUeXBlLCAoeyBjb29yZGluYXRlIH06IE1hcENsaWNrRXZlbnQpID0+XG4gICAgICAgICAgdGhpcy5fbWFwQ2xpY2suZW1pdChjb29yZGluYXRlKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICAgdGhpcy5fbWFwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsIG51bWJlcl0+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX21hcENsaWNrXG4gIH1cbiAgX3NvdXJjZUxvYWRFcnJvcjogRXZlbnRFbWl0dGVyPFNvdXJjZUxvYWRFcnJvckV2ZW50PlxuICBAT3V0cHV0KCkgZ2V0IHNvdXJjZUxvYWRFcnJvcigpIHtcbiAgICBpZiAoIXRoaXMuX3NvdXJjZUxvYWRFcnJvcikge1xuICAgICAgdGhpcy5vcGVubGF5ZXJzTWFwLnRoZW4oKG9sTWFwKSA9PiB7XG4gICAgICAgIGxpc3RlbihvbE1hcCwgU291cmNlTG9hZEVycm9yVHlwZSwgKGVycm9yOiBTb3VyY2VMb2FkRXJyb3JFdmVudCkgPT5cbiAgICAgICAgICB0aGlzLl9zb3VyY2VMb2FkRXJyb3IuZW1pdChlcnJvcilcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICAgIHRoaXMuX3NvdXJjZUxvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U291cmNlTG9hZEVycm9yRXZlbnQ+KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZUxvYWRFcnJvclxuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWFwJykgY29udGFpbmVyOiBFbGVtZW50UmVmXG4gIGRpc3BsYXlNZXNzYWdlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBvbE1hcDogT2xNYXBcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPX05PVF9VU0VfREVGQVVMVF9CQVNFTUFQKSBwcml2YXRlIGRvTm90VXNlRGVmYXVsdEJhc2VtYXA6IGJvb2xlYW4sXG4gICAgQEluamVjdChCQVNFTUFQX0xBWUVSUykgcHJpdmF0ZSBiYXNlbWFwTGF5ZXJzOiBNYXBDb250ZXh0TGF5ZXJbXSxcbiAgICBASW5qZWN0KE1BUF9WSUVXX0NPTlNUUkFJTlRTKVxuICAgIHByaXZhdGUgbWFwVmlld0NvbnN0cmFpbnRzOiB7XG4gICAgICBtYXhab29tPzogbnVtYmVyXG4gICAgICBtYXhFeHRlbnQ/OiBFeHRlbnRcbiAgICB9XG4gICkge31cblxuICBwcml2YXRlIG9sTWFwUmVzb2x2ZXJcbiAgb3BlbmxheWVyc01hcCA9IG5ldyBQcm9taXNlPE9sTWFwPigocmVzb2x2ZSkgPT4ge1xuICAgIHRoaXMub2xNYXBSZXNvbHZlciA9IHJlc29sdmVcbiAgfSlcblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5vbE1hcCA9IGF3YWl0IGNyZWF0ZU1hcEZyb21Db250ZXh0KFxuICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dCh0aGlzLmNvbnRleHQpLFxuICAgICAgdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudFxuICAgIClcbiAgICB0aGlzLmRpc3BsYXlNZXNzYWdlJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMub2xNYXAsICdtYXBtdXRlZCcpLnBpcGUobWFwKCgpID0+IHRydWUpKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLm9sTWFwLCAnbW92ZXN0YXJ0JykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLm9sTWFwLCAnc2luZ2xlY2xpY2snKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChtdXRlZCkgPT5cbiAgICAgICAgbXV0ZWRcbiAgICAgICAgICA/IHRpbWVyKDIwMDApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICAgICAgZGVsYXkoNDAwKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogb2YoZmFsc2UpXG4gICAgICApXG4gICAgKVxuICAgIHRoaXMub2xNYXBSZXNvbHZlcih0aGlzLm9sTWFwKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnY29udGV4dCcgaW4gY2hhbmdlcyAmJiAhY2hhbmdlc1snY29udGV4dCddLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgY29uc3QgZGlmZiA9IGNvbXB1dGVNYXBDb250ZXh0RGlmZihcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10uY3VycmVudFZhbHVlKSxcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29udGV4dChjaGFuZ2VzWydjb250ZXh0J10ucHJldmlvdXNWYWx1ZSlcbiAgICAgIClcbiAgICAgIGF3YWl0IGFwcGx5Q29udGV4dERpZmZUb01hcCh0aGlzLm9sTWFwLCBkaWZmKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgd2lsbCBhcHBseSBiYXNlbWFwIGxheWVycyAmIHZpZXcgY29uc3RyYWludHNcbiAgcHJvY2Vzc0NvbnRleHQoY29udGV4dDogTWFwQ29udGV4dCk6IE1hcENvbnRleHQge1xuICAgIGNvbnN0IHByb2Nlc3NlZCA9IGNvbnRleHRcbiAgICAgID8geyAuLi5jb250ZXh0LCB2aWV3OiBjb250ZXh0LnZpZXcgPz8gREVGQVVMVF9WSUVXIH1cbiAgICAgIDogeyBsYXllcnM6IFtdLCB2aWV3OiBERUZBVUxUX1ZJRVcgfVxuICAgIGlmICh0aGlzLmJhc2VtYXBMYXllcnMubGVuZ3RoKSB7XG4gICAgICBwcm9jZXNzZWQubGF5ZXJzID0gWy4uLnRoaXMuYmFzZW1hcExheWVycywgLi4ucHJvY2Vzc2VkLmxheWVyc11cbiAgICB9XG4gICAgaWYgKCF0aGlzLmRvTm90VXNlRGVmYXVsdEJhc2VtYXApIHtcbiAgICAgIHByb2Nlc3NlZC5sYXllcnMgPSBbREVGQVVMVF9CQVNFTUFQX0xBWUVSLCAuLi5wcm9jZXNzZWQubGF5ZXJzXVxuICAgIH1cbiAgICBpZiAodGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4Wm9vbSkge1xuICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7XG4gICAgICAgIG1heFpvb206IHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heFpvb20sXG4gICAgICAgIC4uLnByb2Nlc3NlZC52aWV3LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5tYXBWaWV3Q29uc3RyYWludHMubWF4RXh0ZW50KSB7XG4gICAgICBwcm9jZXNzZWQudmlldyA9IHtcbiAgICAgICAgbWF4RXh0ZW50OiB0aGlzLm1hcFZpZXdDb25zdHJhaW50cy5tYXhFeHRlbnQsXG4gICAgICAgIC4uLnByb2Nlc3NlZC52aWV3LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBwcm9jZXNzZWQudmlldyAmJlxuICAgICAgISgnem9vbScgaW4gcHJvY2Vzc2VkLnZpZXcpICYmXG4gICAgICAhKCdjZW50ZXInIGluIHByb2Nlc3NlZC52aWV3KVxuICAgICkge1xuICAgICAgaWYgKHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCkge1xuICAgICAgICBwcm9jZXNzZWQudmlldyA9IHtcbiAgICAgICAgICBleHRlbnQ6IHRoaXMubWFwVmlld0NvbnN0cmFpbnRzLm1heEV4dGVudCxcbiAgICAgICAgICAuLi5wcm9jZXNzZWQudmlldyxcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzc2VkLnZpZXcgPSB7IC4uLkRFRkFVTFRfVklFVywgLi4ucHJvY2Vzc2VkLnZpZXcgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc2VkXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsXCIgI21hcD48L2Rpdj5cbjxkaXZcbiAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIHAtMiByb3VuZGVkIHotNDAgdHJhbnNpdGlvbi1hbGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdGV4dC1wcmltYXJ5IGZvbnQtc2FucyBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgW25nQ2xhc3NdPVwiXG4gICAgKGRpc3BsYXlNZXNzYWdlJCB8IGFzeW5jKSA/ICd2aXNpYmxlIG9wYWNpdHktMTAwJyA6ICdpbnZpc2libGUgb3BhY2l0eS0wJ1xuICBcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYnNvbHV0ZSB6LVstMV0gaW5zZXQtMCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUgdG8tcHJpbWFyeS1saWdodGVzdCBvcGFjaXR5LTYwXCJcbiAgPjwvZGl2PlxuICA8bmctaWNvblxuICAgIGNsYXNzPVwiIXctMTYgIWgtMTYgdGV4dC1bNjRweF0gbWItNFwiXG4gICAgbmFtZT1cIm1hdFN3aXBlT3V0bGluZVwiXG4gID48L25nLWljb24+XG4gIDxwIHRyYW5zbGF0ZT5tYXAubmF2aWdhdGlvbi5tZXNzYWdlPC9wPlxuPC9kaXY+XG4iXX0=
@@ -6,9 +6,9 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngx-translate/core";
8
8
  import * as i2 from "@angular/common";
9
- import * as i3 from "../../../../elements/src/lib/thumbnail/thumbnail.component";
10
- import * as i4 from "../../../../elements/src/lib/markdown-parser/markdown-parser.component";
11
- import * as i5 from "@ng-icons/core";
9
+ import * as i3 from "@ng-icons/core";
10
+ import * as i4 from "../../../../elements/src/lib/thumbnail/thumbnail.component";
11
+ import * as i5 from "../../../../elements/src/lib/markdown-parser/markdown-parser.component";
12
12
  marker('record.was.created.time');
13
13
  export class RecordPreviewFeedComponent extends RecordPreviewComponent {
14
14
  constructor(elementRef, translate) {
@@ -30,10 +30,10 @@ export class RecordPreviewFeedComponent extends RecordPreviewComponent {
30
30
  return this.timeFormat.format(this.record.recordCreated, Date.now());
31
31
  }
32
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewFeedComponent, deps: [{ token: i0.ElementRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewFeedComponent, selector: "gn-ui-record-preview-feed", usesInheritance: true, ngImport: i0, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <ng-icon\n *ngIf=\"!hasLogo\"\n class=\"text-gray-200\"\n name=\"{{ hasOnlyPerson ? 'matFace' : 'matHomeWorkOutline' }}\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n ></ng-icon>\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">\n <gn-ui-markdown-parser [textContent]=\"abstract\" whitoutStyles=\"true\" />\n </p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matCloudDownloadOutline\"\n >\n </ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matMapOutline\"\n >\n </ng-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i4.MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: i5.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewFeedComponent, selector: "gn-ui-record-preview-feed", usesInheritance: true, ngImport: i0, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <ng-icon\n *ngIf=\"!hasLogo\"\n class=\"text-gray-200\"\n name=\"{{ hasOnlyPerson ? 'matFace' : 'matHomeWorkOutline' }}\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n ></ng-icon>\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n />\n </p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matCloudDownloadOutline\"\n >\n </ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matMapOutline\"\n >\n </ng-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: i4.ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i5.MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewFeedComponent, decorators: [{
36
36
  type: Component,
37
- args: [{ selector: 'gn-ui-record-preview-feed', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <ng-icon\n *ngIf=\"!hasLogo\"\n class=\"text-gray-200\"\n name=\"{{ hasOnlyPerson ? 'matFace' : 'matHomeWorkOutline' }}\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n ></ng-icon>\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">\n <gn-ui-markdown-parser [textContent]=\"abstract\" whitoutStyles=\"true\" />\n </p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matCloudDownloadOutline\"\n >\n </ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matMapOutline\"\n >\n </ng-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"] }]
37
+ args: [{ selector: 'gn-ui-record-preview-feed', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"mx-[18px] pl-[18px] pb-[18px] border-solid border-l-2 border-gray-100\"\n>\n <a\n class=\"record-container block rounded-lg bg-white border border-white card-shadow\"\n [attr.href]=\"linkHref\"\n [target]=\"linkTarget\"\n >\n <div\n class=\"record-header py-4 px-4 border-b border-gray-300 flex flex-row items-center relative transition duration-200\"\n >\n <div\n class=\"absolute w-3 h-3 bg-secondary rounded-full\"\n style=\"right: calc(100% + 14px)\"\n ></div>\n <div\n class=\"record-header-image border border-gray-300 bg-white rounded-full w-16 h-16 object-contain mr-4 overflow-hidden transition duration-200 shrink-0\"\n >\n <ng-icon\n *ngIf=\"!hasLogo\"\n class=\"text-gray-200\"\n name=\"{{ hasOnlyPerson ? 'matFace' : 'matHomeWorkOutline' }}\"\n style=\"width: 42px; height: 42px; font-size: 42px; margin: 10px\"\n ></ng-icon>\n <gn-ui-thumbnail\n *ngIf=\"hasLogo\"\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString()\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col overflow-hidden items-start\">\n <span\n *ngIf=\"hasOrganization\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ record.ownerOrganization.name }}\n </span>\n <span\n *ngIf=\"hasOnlyPerson\"\n class=\"font-bold transition duration-200 text-primary truncate max-w-full\"\n >\n {{ contact.firstName }} {{ contact.lastName }}\n </span>\n <p class=\"\">\n <span translate [translateParams]=\"{ time }\"\n >record.was.created.time</span\n >\n </p>\n </div>\n </div>\n <div class=\"pt-5 pb-5 px-10 relative\">\n <div class=\"absolute top-[0.85em] right-[0.85em]\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n <h1\n class=\"font-title text-black text-[21px] font-medium mb-3 pr-8\"\n data-cy=\"recordTitle\"\n >\n {{ record.title }}\n </h1>\n <p class=\"line-clamp-3\">\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n />\n </p>\n <gn-ui-thumbnail\n *ngIf=\"record.overviews?.[0]\"\n class=\"block mt-3 w-full h-[136px] border border-gray-100 rounded-lg overflow-hidden\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-row mt-3\" *ngIf=\"isDownloadable || isViewable\">\n <ng-icon\n *ngIf=\"isDownloadable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matCloudDownloadOutline\"\n >\n </ng-icon>\n <ng-icon\n *ngIf=\"isViewable\"\n class=\"text-primary opacity-45 mr-3\"\n name=\"matMapOutline\"\n >\n </ng-icon>\n </div>\n </div>\n </a>\n</div>\n", styles: [".record-container:hover .record-header,.record-container:hover .record-header-image{border-color:var(--color-primary-lightest)}\n"] }]
38
38
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TranslateService }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3JlY29yZC1wcmV2aWV3LWZlZWQvcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3JlY29yZC1wcmV2aWV3LWZlZWQvcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLFFBQVEsTUFBTSw2QkFBNkIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7Ozs7Ozs7QUFFaEUsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7QUFRakMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQUdwRSxZQUNZLFVBQXNCLEVBQ3hCLFNBQTJCO1FBRW5DLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUhQLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFKckMsZUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBT3pELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQTtJQUN4QyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUE7SUFDakQsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFBLENBQUMsOEVBQThFO0lBQzdGLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7K0dBckJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHdGQ2R2Qyw0bEdBd0ZBOzs0RkQxRWEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUmVjb3JkUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3JlY29yZC1wcmV2aWV3L3JlY29yZC1wcmV2aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IER1cmF0aW9uIGZyb20gJ2R1cmF0aW9uLXJlbGF0aXZldGltZWZvcm1hdCdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcblxubWFya2VyKCdyZWNvcmQud2FzLmNyZWF0ZWQudGltZScpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlY29yZC1wcmV2aWV3LWZlZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY29yZC1wcmV2aWV3LWZlZWQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkUHJldmlld0ZlZWRDb21wb25lbnQgZXh0ZW5kcyBSZWNvcmRQcmV2aWV3Q29tcG9uZW50IHtcbiAgdGltZUZvcm1hdCA9IG5ldyBEdXJhdGlvbih0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZywge30pXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZilcbiAgfVxuXG4gIGdldCBoYXNPcmdhbml6YXRpb24oKSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZWNvcmQub3duZXJPcmdhbml6YXRpb25cbiAgfVxuICBnZXQgaGFzTG9nbygpIHtcbiAgICByZXR1cm4gISF0aGlzLnJlY29yZC5vd25lck9yZ2FuaXphdGlvbj8ubG9nb1VybFxuICB9XG4gIGdldCBoYXNPbmx5UGVyc29uKCkge1xuICAgIHJldHVybiBmYWxzZSAvLyBGSVhNRTogdGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UgYW55bW9yZSwgdGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhbiBvd25lciBvcmdcbiAgfVxuICBnZXQgdGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lRm9ybWF0LmZvcm1hdCh0aGlzLnJlY29yZC5yZWNvcmRDcmVhdGVkLCBEYXRlLm5vdygpKVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibXgtWzE4cHhdIHBsLVsxOHB4XSBwYi1bMThweF0gYm9yZGVyLXNvbGlkIGJvcmRlci1sLTIgYm9yZGVyLWdyYXktMTAwXCJcbj5cbiAgPGFcbiAgICBjbGFzcz1cInJlY29yZC1jb250YWluZXIgYmxvY2sgcm91bmRlZC1sZyBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXdoaXRlIGNhcmQtc2hhZG93XCJcbiAgICBbYXR0ci5ocmVmXT1cImxpbmtIcmVmXCJcbiAgICBbdGFyZ2V0XT1cImxpbmtUYXJnZXRcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyZWNvcmQtaGVhZGVyIHB5LTQgcHgtNCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgcmVsYXRpdmUgdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB3LTMgaC0zIGJnLXNlY29uZGFyeSByb3VuZGVkLWZ1bGxcIlxuICAgICAgICBzdHlsZT1cInJpZ2h0OiBjYWxjKDEwMCUgKyAxNHB4KVwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVjb3JkLWhlYWRlci1pbWFnZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHJvdW5kZWQtZnVsbCB3LTE2IGgtMTYgb2JqZWN0LWNvbnRhaW4gbXItNCBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDAgc2hyaW5rLTBcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiIWhhc0xvZ29cIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5LTIwMFwiXG4gICAgICAgICAgbmFtZT1cInt7IGhhc09ubHlQZXJzb24gPyAnbWF0RmFjZScgOiAnbWF0SG9tZVdvcmtPdXRsaW5lJyB9fVwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNDJweDsgaGVpZ2h0OiA0MnB4OyBmb250LXNpemU6IDQycHg7IG1hcmdpbjogMTBweFwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICAgIDxnbi11aS10aHVtYm5haWxcbiAgICAgICAgICAqbmdJZj1cImhhc0xvZ29cIlxuICAgICAgICAgIFt0aHVtYm5haWxVcmxdPVwicmVjb3JkLm93bmVyT3JnYW5pemF0aW9uPy5sb2dvVXJsPy50b1N0cmluZygpXCJcbiAgICAgICAgICBbZml0XT1cIidjb250YWluJ1wiXG4gICAgICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJoYXNPcmdhbml6YXRpb25cIlxuICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRyYW5zaXRpb24gZHVyYXRpb24tMjAwIHRleHQtcHJpbWFyeSB0cnVuY2F0ZSBtYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHJlY29yZC5vd25lck9yZ2FuaXphdGlvbi5uYW1lIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImhhc09ubHlQZXJzb25cIlxuICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRyYW5zaXRpb24gZHVyYXRpb24tMjAwIHRleHQtcHJpbWFyeSB0cnVuY2F0ZSBtYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbnRhY3QuZmlyc3ROYW1lIH19IHt7IGNvbnRhY3QubGFzdE5hbWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8cCBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cInsgdGltZSB9XCJcbiAgICAgICAgICAgID5yZWNvcmQud2FzLmNyZWF0ZWQudGltZTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNSBweC0xMCByZWxhdGl2ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC1bMC44NWVtXSByaWdodC1bMC44NWVtXVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmF2b3JpdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZWNvcmQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGgxXG4gICAgICAgIGNsYXNzPVwiZm9udC10aXRsZSB0ZXh0LWJsYWNrIHRleHQtWzIxcHhdIGZvbnQtbWVkaXVtIG1iLTMgcHItOFwiXG4gICAgICAgIGRhdGEtY3k9XCJyZWNvcmRUaXRsZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJlY29yZC50aXRsZSB9fVxuICAgICAgPC9oMT5cbiAgICAgIDxwIGNsYXNzPVwibGluZS1jbGFtcC0zXCI+XG4gICAgICAgIDxnbi11aS1tYXJrZG93bi1wYXJzZXIgW3RleHRDb250ZW50XT1cImFic3RyYWN0XCIgd2hpdG91dFN0eWxlcz1cInRydWVcIiAvPlxuICAgICAgPC9wPlxuICAgICAgPGduLXVpLXRodW1ibmFpbFxuICAgICAgICAqbmdJZj1cInJlY29yZC5vdmVydmlld3M/LlswXVwiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgbXQtMyB3LWZ1bGwgaC1bMTM2cHhdIGJvcmRlciBib3JkZXItZ3JheS0xMDAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICBbdGh1bWJuYWlsVXJsXT1cInJlY29yZC5vdmVydmlld3M/LlswXT8udXJsLnRvU3RyaW5nKClcIlxuICAgICAgPjwvZ24tdWktdGh1bWJuYWlsPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXQtM1wiICpuZ0lmPVwiaXNEb3dubG9hZGFibGUgfHwgaXNWaWV3YWJsZVwiPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiaXNEb3dubG9hZGFibGVcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG9wYWNpdHktNDUgbXItM1wiXG4gICAgICAgICAgbmFtZT1cIm1hdENsb3VkRG93bmxvYWRPdXRsaW5lXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWljb24+XG4gICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpc1ZpZXdhYmxlXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBvcGFjaXR5LTQ1IG1yLTNcIlxuICAgICAgICAgIG5hbWU9XCJtYXRNYXBPdXRsaW5lXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3JlY29yZC1wcmV2aWV3LWZlZWQvcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3JlY29yZC1wcmV2aWV3LWZlZWQvcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLFFBQVEsTUFBTSw2QkFBNkIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUE7Ozs7Ozs7QUFFaEUsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUE7QUFRakMsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHNCQUFzQjtJQUdwRSxZQUNZLFVBQXNCLEVBQ3hCLFNBQTJCO1FBRW5DLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUhQLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFKckMsZUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBT3pELENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQTtJQUN4QyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUE7SUFDakQsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sS0FBSyxDQUFBLENBQUMsOEVBQThFO0lBQzdGLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3RFLENBQUM7K0dBckJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHdGQ2R2Qyw2bkdBMkZBOzs0RkQ3RWEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUmVjb3JkUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3JlY29yZC1wcmV2aWV3L3JlY29yZC1wcmV2aWV3LmNvbXBvbmVudCdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IER1cmF0aW9uIGZyb20gJ2R1cmF0aW9uLXJlbGF0aXZldGltZWZvcm1hdCdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcblxubWFya2VyKCdyZWNvcmQud2FzLmNyZWF0ZWQudGltZScpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlY29yZC1wcmV2aWV3LWZlZWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjb3JkLXByZXZpZXctZmVlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY29yZC1wcmV2aWV3LWZlZWQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkUHJldmlld0ZlZWRDb21wb25lbnQgZXh0ZW5kcyBSZWNvcmRQcmV2aWV3Q29tcG9uZW50IHtcbiAgdGltZUZvcm1hdCA9IG5ldyBEdXJhdGlvbih0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZywge30pXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZilcbiAgfVxuXG4gIGdldCBoYXNPcmdhbml6YXRpb24oKSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZWNvcmQub3duZXJPcmdhbml6YXRpb25cbiAgfVxuICBnZXQgaGFzTG9nbygpIHtcbiAgICByZXR1cm4gISF0aGlzLnJlY29yZC5vd25lck9yZ2FuaXphdGlvbj8ubG9nb1VybFxuICB9XG4gIGdldCBoYXNPbmx5UGVyc29uKCkge1xuICAgIHJldHVybiBmYWxzZSAvLyBGSVhNRTogdGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UgYW55bW9yZSwgdGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhbiBvd25lciBvcmdcbiAgfVxuICBnZXQgdGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50aW1lRm9ybWF0LmZvcm1hdCh0aGlzLnJlY29yZC5yZWNvcmRDcmVhdGVkLCBEYXRlLm5vdygpKVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibXgtWzE4cHhdIHBsLVsxOHB4XSBwYi1bMThweF0gYm9yZGVyLXNvbGlkIGJvcmRlci1sLTIgYm9yZGVyLWdyYXktMTAwXCJcbj5cbiAgPGFcbiAgICBjbGFzcz1cInJlY29yZC1jb250YWluZXIgYmxvY2sgcm91bmRlZC1sZyBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLXdoaXRlIGNhcmQtc2hhZG93XCJcbiAgICBbYXR0ci5ocmVmXT1cImxpbmtIcmVmXCJcbiAgICBbdGFyZ2V0XT1cImxpbmtUYXJnZXRcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyZWNvcmQtaGVhZGVyIHB5LTQgcHgtNCBib3JkZXItYiBib3JkZXItZ3JheS0zMDAgZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgcmVsYXRpdmUgdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDBcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB3LTMgaC0zIGJnLXNlY29uZGFyeSByb3VuZGVkLWZ1bGxcIlxuICAgICAgICBzdHlsZT1cInJpZ2h0OiBjYWxjKDEwMCUgKyAxNHB4KVwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVjb3JkLWhlYWRlci1pbWFnZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHJvdW5kZWQtZnVsbCB3LTE2IGgtMTYgb2JqZWN0LWNvbnRhaW4gbXItNCBvdmVyZmxvdy1oaWRkZW4gdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDAgc2hyaW5rLTBcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiIWhhc0xvZ29cIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1ncmF5LTIwMFwiXG4gICAgICAgICAgbmFtZT1cInt7IGhhc09ubHlQZXJzb24gPyAnbWF0RmFjZScgOiAnbWF0SG9tZVdvcmtPdXRsaW5lJyB9fVwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNDJweDsgaGVpZ2h0OiA0MnB4OyBmb250LXNpemU6IDQycHg7IG1hcmdpbjogMTBweFwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICAgIDxnbi11aS10aHVtYm5haWxcbiAgICAgICAgICAqbmdJZj1cImhhc0xvZ29cIlxuICAgICAgICAgIFt0aHVtYm5haWxVcmxdPVwicmVjb3JkLm93bmVyT3JnYW5pemF0aW9uPy5sb2dvVXJsPy50b1N0cmluZygpXCJcbiAgICAgICAgICBbZml0XT1cIidjb250YWluJ1wiXG4gICAgICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJoYXNPcmdhbml6YXRpb25cIlxuICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRyYW5zaXRpb24gZHVyYXRpb24tMjAwIHRleHQtcHJpbWFyeSB0cnVuY2F0ZSBtYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHJlY29yZC5vd25lck9yZ2FuaXphdGlvbi5uYW1lIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cImhhc09ubHlQZXJzb25cIlxuICAgICAgICAgIGNsYXNzPVwiZm9udC1ib2xkIHRyYW5zaXRpb24gZHVyYXRpb24tMjAwIHRleHQtcHJpbWFyeSB0cnVuY2F0ZSBtYXgtdy1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbnRhY3QuZmlyc3ROYW1lIH19IHt7IGNvbnRhY3QubGFzdE5hbWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8cCBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZSBbdHJhbnNsYXRlUGFyYW1zXT1cInsgdGltZSB9XCJcbiAgICAgICAgICAgID5yZWNvcmQud2FzLmNyZWF0ZWQudGltZTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB0LTUgcGItNSBweC0xMCByZWxhdGl2ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC1bMC44NWVtXSByaWdodC1bMC44NWVtXVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmF2b3JpdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByZWNvcmQgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGgxXG4gICAgICAgIGNsYXNzPVwiZm9udC10aXRsZSB0ZXh0LWJsYWNrIHRleHQtWzIxcHhdIGZvbnQtbWVkaXVtIG1iLTMgcHItOFwiXG4gICAgICAgIGRhdGEtY3k9XCJyZWNvcmRUaXRsZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJlY29yZC50aXRsZSB9fVxuICAgICAgPC9oMT5cbiAgICAgIDxwIGNsYXNzPVwibGluZS1jbGFtcC0zXCI+XG4gICAgICAgIDxnbi11aS1tYXJrZG93bi1wYXJzZXJcbiAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiYWJzdHJhY3RcIlxuICAgICAgICAgIFt3aGl0b3V0U3R5bGVzXT1cInRydWVcIlxuICAgICAgICAvPlxuICAgICAgPC9wPlxuICAgICAgPGduLXVpLXRodW1ibmFpbFxuICAgICAgICAqbmdJZj1cInJlY29yZC5vdmVydmlld3M/LlswXVwiXG4gICAgICAgIGNsYXNzPVwiYmxvY2sgbXQtMyB3LWZ1bGwgaC1bMTM2cHhdIGJvcmRlciBib3JkZXItZ3JheS0xMDAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICBbdGh1bWJuYWlsVXJsXT1cInJlY29yZC5vdmVydmlld3M/LlswXT8udXJsLnRvU3RyaW5nKClcIlxuICAgICAgPjwvZ24tdWktdGh1bWJuYWlsPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgbXQtM1wiICpuZ0lmPVwiaXNEb3dubG9hZGFibGUgfHwgaXNWaWV3YWJsZVwiPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgICpuZ0lmPVwiaXNEb3dubG9hZGFibGVcIlxuICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IG9wYWNpdHktNDUgbXItM1wiXG4gICAgICAgICAgbmFtZT1cIm1hdENsb3VkRG93bmxvYWRPdXRsaW5lXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWljb24+XG4gICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpc1ZpZXdhYmxlXCJcbiAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBvcGFjaXR5LTQ1IG1yLTNcIlxuICAgICAgICAgIG5hbWU9XCJtYXRNYXBPdXRsaW5lXCJcbiAgICAgICAgPlxuICAgICAgICA8L25nLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9hPlxuPC9kaXY+XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
- import * as i2 from "../../../../inputs/src/lib/inline-filter/inline-filter.component";
5
- import * as i3 from "../../../../elements/src/lib/kind-badge/kind-badge.component";
4
+ import * as i2 from "../../../../elements/src/lib/kind-badge/kind-badge.component";
5
+ import * as i3 from "../../../../inputs/src/lib/inline-filter/inline-filter.component";
6
6
  import * as i4 from "@ngx-translate/core";
7
7
  export class ResultsHitsSearchKindComponent {
8
8
  constructor() {
@@ -38,7 +38,7 @@ export class ResultsHitsSearchKindComponent {
38
38
  return this.selected.length === 0 && choiceValue === 'all';
39
39
  }
40
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: i3.KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind"] }, { kind: "component", type: i3.InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, decorators: [{
44
44
  type: Component,
@@ -2,13 +2,11 @@ import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
3
3
  import { MatDialog, MatDialogModule } from '@angular/material/dialog';
4
4
  import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
5
- import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elements/src';
6
5
  import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src';
7
- import { TranslateModule } from '@ngx-translate/core';
6
+ import { TranslateDirective, TranslatePipe } from '@ngx-translate/core';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "@angular/material/dialog";
10
9
  import * as i2 from "@angular/common";
11
- import * as i3 from "@ngx-translate/core";
12
10
  export class ActionMenuComponent {
13
11
  constructor(dialog, cdr) {
14
12
  this.dialog = dialog;
@@ -41,7 +39,7 @@ export class ActionMenuComponent {
41
39
  this.cdr.markForCheck();
42
40
  }
43
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", page: "page" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback", switch: "switch" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", isDuplicating: "isDuplicating", canDelete: "canDelete", page: "page" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback", switch: "switch" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"isDuplicating; else notDuplicating\" translate\n >record.action.duplicating</span\n >\n <ng-template #notDuplicating>\n <span translate>record.action.duplicate</span>\n </ng-template>\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
45
43
  }
46
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
47
45
  type: Component,
@@ -50,11 +48,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
50
48
  ButtonComponent,
51
49
  MatMenuModule,
52
50
  MatDialogModule,
53
- ConfirmationDialogComponent,
54
- TranslateModule,
55
- ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
51
+ TranslateDirective,
52
+ TranslatePipe,
53
+ ], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"page === 'main'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"isDuplicating; else notDuplicating\" translate\n >record.action.duplicating</span\n >\n <ng-template #notDuplicating>\n <span translate>record.action.duplicate</span>\n </ng-template>\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
56
54
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
57
55
  type: Input
56
+ }], isDuplicating: [{
57
+ type: Input
58
58
  }], canDelete: [{
59
59
  type: Input
60
60
  }], page: [{
@@ -73,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
73
73
  type: ViewChild,
74
74
  args: [MatMenuTrigger]
75
75
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zZWFyY2gvc3JjL2xpYi9yZXN1bHRzLXRhYmxlL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYy9saWIvcmVzdWx0cy10YWJsZS9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7OztBQWtCckQsTUFBTSxPQUFPLG1CQUFtQjtJQWM5QixZQUNTLE1BQWlCLEVBQ2hCLEdBQXNCO1FBRHZCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmdkIsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFDbkIsY0FBUyxHQUFHLElBQUksQ0FBQTtRQUVmLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ3BDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUMxQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUkzQyxxQkFBZ0IsR0FBbUIsVUFBVSxDQUFBO0lBSzFDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtnQkFDdEMsTUFBSztZQUNQLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUNsQixNQUFLO1lBQ1AsS0FBSyxNQUFNLENBQUM7WUFDWjtnQkFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFBO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7K0dBckNVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlVQVVuQixjQUFjLGdEQ3pDM0IsNDhIQTJHQSx5RERwRkksWUFBWSwrVEFDWixlQUFlLDhIQUNmLGFBQWEsOEJBQ2IsZUFBZSw4QkFFZixlQUFlOzs0RkFHTixtQkFBbUI7a0JBZC9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLDJCQUEyQjt3QkFDM0IsZUFBZTtxQkFDaEI7OEdBR1EsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVvQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51J1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuXG50eXBlIEFjdGlvbk1lbnVQYWdlID0gJ21haW5NZW51JyB8ICdkZWxldGVNZW51JyB8ICdyb2xsYmFja01lbnUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWFjdGlvbi1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWN0aW9uLW1lbnUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25NZW51Q29tcG9uZW50IHtcbiAgQElucHV0KCkgY2FuRHVwbGljYXRlID0gdHJ1ZVxuICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2U6ICdkcmFmdCcgfCAnbWFpbicgfCAncmVjb3JkJ1xuICBAT3V0cHV0KCkgZHVwbGljYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIGNsb3NlQWN0aW9uTWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgcm9sbGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIHN3aXRjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyXG5cbiAgc2VjdGlvbkRpc3BsYXllZDogQWN0aW9uTWVudVBhZ2UgPSAnbWFpbk1lbnUnXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgZGlzcGxheU1haW5NZW51KCkge1xuICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdtYWluTWVudSdcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICB9XG5cbiAgZGlzcGxheURlbGV0ZU1lbnUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnBhZ2UpIHtcbiAgICAgIGNhc2UgJ2RyYWZ0JzpcbiAgICAgICAgdGhpcy5zZWN0aW9uRGlzcGxheWVkID0gJ3JvbGxiYWNrTWVudSdcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3JlY29yZCc6XG4gICAgICAgIHRoaXMuZGVsZXRlLmVtaXQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnNlY3Rpb25EaXNwbGF5ZWQgPSAnZGVsZXRlTWVudSdcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbkRpc3BsYXllZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWFpbk1lbnUnXCI+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0PVwibWFpbk1lbnVTZWN0aW9uXCJcbiAgICAgIGNsYXNzPVwibXQtMiBib3JkZXIgYm9yZGVyLWdyYXktMTAwIHAtMiBmbGV4IGl0ZW1zLWNlbnRlciBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIHctZnVsbFwiPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJwYWdlID09PSAnbWFpbidcIlxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZHVwbGljYXRlLmVtaXQoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5EdXBsaWNhdGVcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWR1cGxpY2F0ZS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYW5EdXBsaWNhdGVcIiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5kdXBsaWNhdGU8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhY2FuRHVwbGljYXRlXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICA+cmVjb3JkLmFjdGlvbi5kdXBsaWNhdGluZzwvc3BhblxuICAgICAgICAgID48L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAqbmdJZj1cInBhZ2UgPT09ICdyZWNvcmQnXCJcbiAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgIGV4dHJhQ2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwganVzdGlmeS1zdGFydFwiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInN3aXRjaC5lbWl0KClcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LXN3aXRjaC1idXR0b25cIlxuICAgICAgICAgID48c3BhbiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5zd2l0Y2hMYW5nPC9zcGFuPjwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZGlzcGxheURlbGV0ZU1lbnUoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5EZWxldGVcIlxuICAgICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgID48c3BhbiAqbmdJZj1cInBhZ2UgIT09ICdkcmFmdCdcIiB0cmFuc2xhdGU+cmVjb3JkLmFjdGlvbi5kZWxldGU8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlID09PSAnZHJhZnQnXCIgdHJhbnNsYXRlXG4gICAgICAgICAgICA+cmVjb3JkLmFjdGlvbi5yb2xsYmFjazwvc3BhblxuICAgICAgICAgID48L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RlbGV0ZU1lbnUnXCI+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0PVwiZGVsZXRlTWVudVNlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJ3LTcyIHAtNiBmbGV4IGZsZXgtY29sIGdhcC0zIG10LTIgYm9yZGVyIGJvcmRlci1ncmF5LTEwMCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQuZGVsZXRlLmNvbmZpcm1hdGlvbi50aXRsZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJkZWxldGUuZW1pdCgpXCJcbiAgICAgICAgICBjZGtGb2N1c0luaXRpYWxcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXG4gICAgICAgICAgZGF0YS1jeT1cImNvbmZpcm0tYnV0dG9uXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzEwMHB4J1wiXG4gICAgICAgICAgPnt7XG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5kZWxldGUuY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMDBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24uY2FuY2VsVGV4dCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JvbGxiYWNrTWVudSdcIj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3Q9XCJyb2xsYmFja01lbnVTZWN0aW9uXCJcbiAgICAgIGNsYXNzPVwidy04MCBwLTYgZmxleCBmbGV4LWNvbCBnYXAtMyBtdC0yIGJvcmRlciBib3JkZXItZ3JheS0xMDAgYmctd2hpdGUgc2hhZG93LTJ4bCByb3VuZGVkLTJ4bFwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZCB0ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24ubWVzc2FnZScgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTgganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgIChidXR0b25DbGljayk9XCJyb2xsYmFjay5lbWl0KClcIlxuICAgICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwiY29uZmlybS1idXR0b25cIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJ1dHRvbi13aWR0aF09XCInMTIwcHgnXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNvbmZpcm1UZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMjBweCdcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZUFjdGlvbk1lbnUuZW1pdCgpXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLnVuZG8uY29uZmlybWF0aW9uLmNhbmNlbFRleHQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9zZWFyY2gvc3JjL2xpYi9yZXN1bHRzLXRhYmxlL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvc2VhcmNoL3NyYy9saWIvcmVzdWx0cy10YWJsZS9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7O0FBa0J2RSxNQUFNLE9BQU8sbUJBQW1CO0lBZTlCLFlBQ1MsTUFBaUIsRUFDaEIsR0FBc0I7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWhCdkIsaUJBQVksR0FBRyxJQUFJLENBQUE7UUFFbkIsY0FBUyxHQUFHLElBQUksQ0FBQTtRQUVmLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ3BDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUMxQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUNuQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUkzQyxxQkFBZ0IsR0FBbUIsVUFBVSxDQUFBO0lBSzFDLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtnQkFDdEMsTUFBSztZQUNQLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUNsQixNQUFLO1lBQ1AsS0FBSyxNQUFNLENBQUM7WUFDWjtnQkFDRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFBO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3pCLENBQUM7K0dBdENVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlXQVduQixjQUFjLGdEQ3pDM0IsK2dJQTZHQSx5RER2RkksWUFBWSwrVEFDWixlQUFlLDhIQUNmLGFBQWEsOEJBQ2IsZUFBZSwrQkFDZixrQkFBa0IsNkdBQ2xCLGFBQWE7OzRGQUdKLG1CQUFtQjtrQkFkL0IsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3FCQUNkOzhHQUdRLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVvQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51J1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlRGlyZWN0aXZlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcblxudHlwZSBBY3Rpb25NZW51UGFnZSA9ICdtYWluTWVudScgfCAnZGVsZXRlTWVudScgfCAncm9sbGJhY2tNZW51J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1hY3Rpb24tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1tZW51LmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgVHJhbnNsYXRlRGlyZWN0aXZlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbk1lbnVDb21wb25lbnQge1xuICBASW5wdXQoKSBjYW5EdXBsaWNhdGUgPSB0cnVlXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmc6IGJvb2xlYW5cbiAgQElucHV0KCkgY2FuRGVsZXRlID0gdHJ1ZVxuICBASW5wdXQoKSBwYWdlOiAnZHJhZnQnIHwgJ21haW4nIHwgJ3JlY29yZCdcbiAgQE91dHB1dCgpIGR1cGxpY2F0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBjbG9zZUFjdGlvbk1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcbiAgQE91dHB1dCgpIHJvbGxiYWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBzd2l0Y2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcblxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlclxuXG4gIHNlY3Rpb25EaXNwbGF5ZWQ6IEFjdGlvbk1lbnVQYWdlID0gJ21haW5NZW51J1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIGRpc3BsYXlNYWluTWVudSgpIHtcbiAgICB0aGlzLnNlY3Rpb25EaXNwbGF5ZWQgPSAnbWFpbk1lbnUnXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgfVxuXG4gIGRpc3BsYXlEZWxldGVNZW51KCkge1xuICAgIHN3aXRjaCAodGhpcy5wYWdlKSB7XG4gICAgICBjYXNlICdkcmFmdCc6XG4gICAgICAgIHRoaXMuc2VjdGlvbkRpc3BsYXllZCA9ICdyb2xsYmFja01lbnUnXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdyZWNvcmQnOlxuICAgICAgICB0aGlzLmRlbGV0ZS5lbWl0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zZWN0aW9uRGlzcGxheWVkID0gJ2RlbGV0ZU1lbnUnXG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlY3Rpb25EaXNwbGF5ZWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21haW5NZW51J1wiPlxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdD1cIm1haW5NZW51U2VjdGlvblwiXG4gICAgICBjbGFzcz1cIm10LTIgYm9yZGVyIGJvcmRlci1ncmF5LTEwMCBwLTIgZmxleCBpdGVtcy1jZW50ZXIgYmctd2hpdGUgc2hhZG93LTJ4bCByb3VuZGVkLTJ4bFwiXG4gICAgPlxuICAgICAgPHVsIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiB3LWZ1bGxcIj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicGFnZSA9PT0gJ21haW4nXCJcbiAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgIGV4dHJhQ2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiB3LWZ1bGwganVzdGlmeS1zdGFydFwiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImR1cGxpY2F0ZS5lbWl0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRHVwbGljYXRlXCJcbiAgICAgICAgICBkYXRhLXRlc3Q9XCJyZWNvcmQtbWVudS1kdXBsaWNhdGUtYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaXNEdXBsaWNhdGluZzsgZWxzZSBub3REdXBsaWNhdGluZ1wiIHRyYW5zbGF0ZVxuICAgICAgICAgICAgPnJlY29yZC5hY3Rpb24uZHVwbGljYXRpbmc8L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub3REdXBsaWNhdGluZz5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQuYWN0aW9uLmR1cGxpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicGFnZSA9PT0gJ3JlY29yZCdcIlxuICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0yIHctZnVsbCBqdXN0aWZ5LXN0YXJ0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwic3dpdGNoLmVtaXQoKVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkLW1lbnUtc3dpdGNoLWJ1dHRvblwiXG4gICAgICAgICAgPjxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQuYWN0aW9uLnN3aXRjaExhbmc8L3NwYW4+PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICBleHRyYUNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZ2FwLTIgdy1mdWxsIGp1c3RpZnktc3RhcnRcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJkaXNwbGF5RGVsZXRlTWVudSgpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlbGV0ZVwiXG4gICAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkLW1lbnUtZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgPjxzcGFuICpuZ0lmPVwicGFnZSAhPT0gJ2RyYWZ0J1wiIHRyYW5zbGF0ZT5yZWNvcmQuYWN0aW9uLmRlbGV0ZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2UgPT09ICdkcmFmdCdcIiB0cmFuc2xhdGVcbiAgICAgICAgICAgID5yZWNvcmQuYWN0aW9uLnJvbGxiYWNrPC9zcGFuXG4gICAgICAgICAgPjwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGVsZXRlTWVudSdcIj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3Q9XCJkZWxldGVNZW51U2VjdGlvblwiXG4gICAgICBjbGFzcz1cInctNzIgcC02IGZsZXggZmxleC1jb2wgZ2FwLTMgbXQtMiBib3JkZXIgYm9yZGVyLWdyYXktMTAwIGJnLXdoaXRlIHNoYWRvdy0yeGwgcm91bmRlZC0yeGxcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC1jZW50ZXJcIj57e1xuICAgICAgICAnZWRpdG9yLnJlY29yZC5kZWxldGUuY29uZmlybWF0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQuZGVsZXRlLmNvbmZpcm1hdGlvbi5tZXNzYWdlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtOCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImRlbGV0ZS5lbWl0KClcIlxuICAgICAgICAgIGNka0ZvY3VzSW5pdGlhbFxuICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkYXRhLWN5PVwiY29uZmlybS1idXR0b25cIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJ1dHRvbi13aWR0aF09XCInMTAwcHgnXCJcbiAgICAgICAgICA+e3tcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmRlbGV0ZS5jb25maXJtYXRpb24uY29uZmlybVRleHQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzEwMHB4J1wiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlQWN0aW9uTWVudS5lbWl0KClcIlxuICAgICAgICAgID57e1xuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZGVsZXRlLmNvbmZpcm1hdGlvbi5jYW5jZWxUZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9nbi11aS1idXR0b25cbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncm9sbGJhY2tNZW51J1wiPlxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdD1cInJvbGxiYWNrTWVudVNlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJ3LTgwIHAtNiBmbGV4IGZsZXgtY29sIGdhcC0zIG10LTIgYm9yZGVyIGJvcmRlci1ncmF5LTEwMCBiZy13aGl0ZSBzaGFkb3ctMnhsIHJvdW5kZWQtMnhsXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkIHRleHQtY2VudGVyXCI+e3tcbiAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24udGl0bGUnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57e1xuICAgICAgICAnZWRpdG9yLnJlY29yZC51bmRvLmNvbmZpcm1hdGlvbi5tZXNzYWdlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtOCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInJvbGxiYWNrLmVtaXQoKVwiXG4gICAgICAgICAgY2RrRm9jdXNJbml0aWFsXG4gICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjb25maXJtLWJ1dHRvblwiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYnV0dG9uLXdpZHRoXT1cIicxMjBweCdcIlxuICAgICAgICAgID57e1xuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24uY29uZmlybVRleHQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L2duLXVpLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1idXR0b24td2lkdGhdPVwiJzEyMHB4J1wiXG4gICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cImNsb3NlQWN0aW9uTWVudS5lbWl0KClcIlxuICAgICAgICAgID57e1xuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQudW5kby5jb25maXJtYXRpb24uY2FuY2VsVGV4dCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvZ24tdWktYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19