geonetwork-ui 2.6.0-dev.0739ca76d → 2.6.0-dev.0cd426aa4

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 (725) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  3. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/common/resource-types.mjs +17 -15
  5. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +52 -13
  7. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  8. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +6 -6
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -3
  11. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +5 -5
  12. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -4
  13. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  14. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +5 -2
  15. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +20 -18
  16. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +79 -16
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  18. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  19. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +23 -13
  20. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  21. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  22. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  23. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  24. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  25. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +47 -11
  26. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  27. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
  28. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -3
  29. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +27 -8
  30. package/esm2022/libs/feature/editor/src/index.mjs +2 -4
  31. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  32. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  33. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  34. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +274 -0
  35. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  36. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  37. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  38. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  40. 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
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  42. 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
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  50. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  51. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  52. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  53. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  54. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  55. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  56. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  57. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  58. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  59. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  60. package/esm2022/libs/feature/record/src/index.mjs +2 -3
  61. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +20 -19
  62. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  63. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +5 -6
  64. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  65. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +7 -4
  66. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  67. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  68. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  69. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +96 -21
  70. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  71. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
  72. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +13 -13
  73. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  74. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  75. package/esm2022/libs/feature/search/src/index.mjs +2 -2
  76. package/esm2022/libs/feature/search/src/lib/constants.mjs +4 -2
  77. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  78. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +32 -28
  79. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  80. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  81. package/esm2022/libs/feature/search/src/lib/results-hits/results-hits.container.component.mjs +41 -0
  82. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +12 -8
  83. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  84. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  85. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  86. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +74 -4
  87. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +4 -3
  88. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  89. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  90. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  91. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  92. package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
  93. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +13 -8
  94. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  95. package/esm2022/libs/ui/elements/src/index.mjs +4 -3
  96. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +7 -7
  97. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  98. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +5 -6
  99. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +20 -9
  100. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  101. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +54 -0
  102. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  103. package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
  104. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +42 -85
  105. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +58 -0
  106. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +65 -0
  107. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +5 -6
  108. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  109. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  110. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +5 -6
  111. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +7 -8
  112. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +40 -17
  113. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  114. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  115. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +71 -0
  116. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +15 -6
  117. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  118. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  119. package/esm2022/libs/ui/inputs/src/index.mjs +3 -2
  120. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +6 -7
  121. package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +2 -2
  122. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  123. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  124. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  125. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -6
  126. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  127. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +43 -0
  128. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.mjs +2 -0
  129. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +73 -0
  130. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  131. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  132. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  133. package/esm2022/libs/ui/layout/src/index.mjs +3 -2
  134. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  135. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +48 -11
  136. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +3 -3
  137. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  138. package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
  139. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  140. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +21 -12
  141. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  142. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  143. package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +6 -6
  144. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  145. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +71 -0
  146. package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
  147. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  148. package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +2 -1
  149. package/esm2022/libs/ui/search/src/index.mjs +3 -1
  150. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  151. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  152. package/esm2022/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.mjs +3 -3
  153. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +53 -0
  154. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  155. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  156. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +24 -17
  157. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +41 -21
  158. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +39 -26
  159. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  160. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  161. package/esm2022/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.mjs +3 -3
  162. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  163. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  164. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  165. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -28
  166. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  167. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  168. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +63 -3
  169. package/esm2022/libs/util/shared/src/index.mjs +1 -2
  170. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  171. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
  172. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
  173. package/esm2022/translations/de.json +55 -24
  174. package/esm2022/translations/en.json +55 -24
  175. package/esm2022/translations/es.json +54 -23
  176. package/esm2022/translations/fr.json +56 -25
  177. package/esm2022/translations/it.json +81 -50
  178. package/esm2022/translations/nl.json +54 -23
  179. package/esm2022/translations/pt.json +54 -23
  180. package/esm2022/translations/sk.json +602 -0
  181. package/fesm2022/geonetwork-ui.mjs +11119 -9726
  182. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  183. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  184. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  185. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  186. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts +21 -0
  187. package/libs/api/metadata-converter/src/lib/common/resource-types.d.ts.map +1 -1
  188. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  189. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  190. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  191. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  192. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  193. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  194. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  195. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  196. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  197. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +9 -7
  198. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  199. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
  200. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  201. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  202. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  203. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  204. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  205. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +6 -3
  206. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  207. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  208. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  209. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -15
  210. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  211. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
  212. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  213. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  214. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  215. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  216. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  217. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
  218. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  219. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  220. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  221. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  222. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
  223. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  224. package/libs/feature/editor/src/index.d.ts +1 -3
  225. package/libs/feature/editor/src/index.d.ts.map +1 -1
  226. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  227. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  228. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  229. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  230. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  231. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +52 -0
  232. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -0
  233. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  234. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  235. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  236. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  237. 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
  238. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  239. 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
  240. 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
  241. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  242. 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
  243. 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
  244. 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
  245. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  246. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  247. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  248. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  249. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  250. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  251. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  252. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  253. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  254. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  255. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  256. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  257. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  258. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  259. package/libs/feature/record/src/index.d.ts +1 -2
  260. package/libs/feature/record/src/index.d.ts.map +1 -1
  261. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +7 -4
  262. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  263. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +2 -1
  264. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  265. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  266. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  267. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  268. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  269. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  270. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  271. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  272. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  273. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
  274. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  275. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -21
  276. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  277. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  278. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  279. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  280. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  281. package/libs/feature/search/src/index.d.ts +1 -1
  282. package/libs/feature/search/src/index.d.ts.map +1 -1
  283. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  284. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  285. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -22
  286. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  287. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  288. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  289. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts +21 -0
  290. package/libs/feature/search/src/lib/results-hits/results-hits.container.component.d.ts.map +1 -0
  291. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  292. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  293. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  294. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  295. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  296. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  297. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  298. package/libs/feature/search/src/lib/utils/service/fields.d.ts +22 -2
  299. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  300. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  301. package/libs/ui/dataviz/src/index.d.ts +0 -1
  302. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  303. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
  304. package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
  305. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
  306. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  307. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  308. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  309. package/libs/ui/elements/src/index.d.ts +3 -2
  310. package/libs/ui/elements/src/index.d.ts.map +1 -1
  311. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  312. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  313. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  314. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +1 -1
  315. package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
  316. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -1
  317. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  318. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  319. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  320. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +7 -14
  321. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  322. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  323. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  324. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +13 -0
  325. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -0
  326. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +1 -1
  327. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  328. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  329. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  330. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  331. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  332. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  333. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  334. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +27 -0
  335. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
  336. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
  337. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  338. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  339. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  340. package/libs/ui/inputs/src/index.d.ts +2 -1
  341. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  342. package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
  343. package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
  344. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  345. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  346. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  347. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  348. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  349. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  350. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  351. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +14 -0
  352. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -0
  353. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts +6 -0
  354. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.d.ts.map +1 -0
  355. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
  356. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
  357. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  358. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  359. package/libs/ui/layout/src/index.d.ts +2 -1
  360. package/libs/ui/layout/src/index.d.ts.map +1 -1
  361. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  362. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  363. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +9 -2
  364. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -1
  365. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  366. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  367. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
  368. package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
  369. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  370. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  371. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  372. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  373. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +22 -0
  374. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -0
  375. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
  376. package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
  377. package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -1
  378. package/libs/ui/search/src/index.d.ts +2 -0
  379. package/libs/ui/search/src/index.d.ts.map +1 -1
  380. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts +17 -0
  381. package/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.d.ts.map +1 -0
  382. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  383. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  384. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  385. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  386. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  387. package/libs/ui/search/src/lib/ui-search.module.d.ts +22 -19
  388. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  389. package/libs/ui/widgets/src/index.d.ts +0 -1
  390. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  391. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  392. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  393. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  394. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  395. package/libs/util/i18n/src/index.d.ts +1 -2
  396. package/libs/util/i18n/src/index.d.ts.map +1 -1
  397. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  398. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  399. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -15
  400. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  401. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  402. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  403. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  404. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  405. package/libs/util/i18n/src/lib/language-codes.d.ts +15 -19
  406. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  407. package/libs/util/shared/src/index.d.ts +0 -1
  408. package/libs/util/shared/src/index.d.ts.map +1 -1
  409. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  410. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  411. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  412. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  413. package/package.json +4 -4
  414. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  415. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  416. package/src/libs/api/metadata-converter/src/lib/common/resource-types.ts +29 -15
  417. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  418. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  419. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +73 -9
  420. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  421. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  422. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +11 -5
  423. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -2
  424. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +10 -6
  425. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -3
  426. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  427. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +4 -1
  428. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +16 -8
  429. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +118 -16
  430. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  431. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  432. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -20
  433. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  434. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +22 -9
  435. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
  436. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
  437. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
  438. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +62 -1
  439. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  440. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  441. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
  442. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +56 -12
  443. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  444. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +40 -1
  445. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
  446. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +29 -3
  447. package/src/libs/feature/editor/src/index.ts +1 -3
  448. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  449. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  450. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  451. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +120 -0
  452. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +330 -0
  453. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  454. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  455. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  456. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  457. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  458. 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
  459. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  460. 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
  461. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  462. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  463. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  464. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  465. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  466. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  467. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  468. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  469. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  470. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  471. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  472. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  473. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  474. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  475. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  476. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  477. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  478. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  479. package/src/libs/feature/record/src/index.ts +1 -2
  480. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +17 -11
  481. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +22 -19
  482. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  483. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  484. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  485. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  486. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.html +2 -2
  487. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +3 -2
  488. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  489. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  490. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  491. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +38 -11
  492. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +135 -21
  493. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  494. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
  495. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +22 -15
  496. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  497. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  498. package/src/libs/feature/search/src/index.ts +1 -1
  499. package/src/libs/feature/search/src/lib/constants.ts +3 -1
  500. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  501. package/src/libs/feature/search/src/lib/feature-search.module.ts +17 -15
  502. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  503. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  504. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.css +0 -0
  505. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.html +16 -0
  506. package/src/libs/feature/search/src/lib/results-hits/results-hits.container.component.ts +59 -0
  507. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
  508. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  509. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  510. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  511. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  512. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +4 -5
  513. package/src/libs/feature/search/src/lib/utils/service/fields.ts +103 -3
  514. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  515. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  516. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  517. package/src/libs/ui/dataviz/src/index.ts +0 -1
  518. package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
  519. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
  520. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +7 -6
  521. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  522. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  523. package/src/libs/ui/elements/src/index.ts +3 -2
  524. package/src/libs/ui/elements/src/lib/api-card/api-card.component.html +4 -4
  525. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  526. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  527. package/src/libs/ui/elements/src/lib/download-item/download-item.component.html +8 -5
  528. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
  529. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +38 -7
  530. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +28 -4
  531. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  532. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  533. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  534. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  535. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  536. package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
  537. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +68 -141
  538. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +40 -101
  539. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  540. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  541. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.css +6 -0
  542. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +11 -0
  543. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +69 -0
  544. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +5 -2
  545. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +5 -9
  546. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  547. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.html +3 -5
  548. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  549. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +12 -9
  550. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  551. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.css +1 -1
  552. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +11 -3
  553. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  554. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +2 -3
  555. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +51 -13
  556. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  557. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  558. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +107 -0
  559. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +83 -0
  560. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +16 -2
  561. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +16 -3
  562. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  563. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  564. package/src/libs/ui/inputs/src/index.ts +2 -1
  565. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  566. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  567. package/src/libs/ui/inputs/src/lib/button/button.component.ts +2 -2
  568. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  569. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  570. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  571. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
  572. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  573. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -1
  574. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  575. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  576. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.html +23 -0
  577. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +47 -0
  578. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.model.ts +5 -0
  579. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
  580. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
  581. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +83 -0
  582. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +3 -4
  583. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  584. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  585. package/src/libs/ui/layout/src/index.ts +2 -1
  586. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  587. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +22 -0
  588. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +2 -2
  589. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +43 -5
  590. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +0 -1
  591. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +1 -1
  592. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  593. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  594. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
  595. package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
  596. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  597. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  598. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +15 -8
  599. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.html +1 -1
  600. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  601. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  602. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +17 -5
  603. package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +3 -3
  604. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  605. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +27 -0
  606. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +84 -0
  607. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
  608. package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
  609. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  610. package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +1 -0
  611. package/src/libs/ui/search/src/index.ts +2 -0
  612. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  613. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  614. package/src/libs/ui/search/src/lib/results-hits-number/results-hits-number.component.html +1 -1
  615. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +25 -0
  616. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.ts +53 -0
  617. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  618. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
  619. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  620. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  621. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +18 -15
  622. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  623. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
  624. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +46 -18
  625. package/src/libs/ui/search/src/lib/ui-search.module.ts +19 -10
  626. package/src/libs/ui/widgets/src/index.ts +0 -1
  627. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  628. package/src/libs/ui/widgets/src/lib/progress-bar/progress-bar.component.html +2 -1
  629. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  630. package/src/libs/util/i18n/src/index.ts +1 -2
  631. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  632. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -29
  633. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  634. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  635. package/src/libs/util/i18n/src/lib/language-codes.ts +67 -2
  636. package/src/libs/util/shared/src/index.ts +0 -1
  637. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  638. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
  639. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
  640. package/tailwind.base.config.js +3 -0
  641. package/tailwind.base.css +2 -14
  642. package/translations/de.json +55 -24
  643. package/translations/en.json +55 -24
  644. package/translations/es.json +54 -23
  645. package/translations/fr.json +56 -25
  646. package/translations/it.json +81 -50
  647. package/translations/nl.json +54 -23
  648. package/translations/pt.json +54 -23
  649. package/translations/sk.json +54 -23
  650. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  651. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  652. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  653. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  654. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  655. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  656. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  657. package/esm2022/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.mjs +0 -18
  658. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  659. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -46
  660. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -118
  661. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -161
  662. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -31
  663. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  664. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  665. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  666. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  667. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  668. 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
  669. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  670. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  671. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  672. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  673. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  674. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  675. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  676. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  677. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  678. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  679. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  680. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  681. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts +0 -9
  682. package/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.d.ts.map +0 -1
  683. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  684. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  685. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -12
  686. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  687. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -29
  688. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  689. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -34
  690. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  691. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  692. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  693. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  694. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  695. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  696. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  697. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  698. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  699. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  700. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  701. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  702. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  703. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  704. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  705. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  706. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  707. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  708. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  709. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  710. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  711. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  712. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  713. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.html +0 -4
  714. package/src/libs/feature/search/src/lib/results-hits-number/results-hits.container.component.ts +0 -10
  715. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  716. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -30
  717. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -48
  718. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -67
  719. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  720. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -18
  721. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  722. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  723. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  724. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
  725. /package/src/libs/{ui/elements/src/lib/related-record-card/related-record-card.component.css → feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.css} +0 -0
@@ -1,17 +1,17 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { MapUtilsService } from '../../../../../../libs/feature/map/src';
3
3
  import { getLinkLabel } from '../../../../../../libs/util/shared/src';
4
4
  import { BehaviorSubject, combineLatest, from, of, startWith, throwError, withLatestFrom, } from 'rxjs';
5
- import { catchError, distinctUntilChanged, finalize, map, shareReplay, switchMap, tap, } from 'rxjs/operators';
5
+ import { catchError, distinctUntilChanged, finalize, map, shareReplay, switchMap, take, tap, } from 'rxjs/operators';
6
6
  import { MdViewFacade } from '../state/mdview.facade';
7
7
  import { DataService } from '../../../../../../libs/feature/dataviz/src';
8
8
  import { createViewFromLayer, } from '@geospatial-sdk/core';
9
- import { FeatureDetailComponent, MapContainerComponent, prioritizePageScroll, MapLegendComponent, } from '../../../../../../libs/ui/map/src';
9
+ import { FeatureDetailComponent, MapContainerComponent, MapLegendComponent, prioritizePageScroll, } from '../../../../../../libs/ui/map/src';
10
10
  import { NgIconComponent, provideIcons } from '@ng-icons/core';
11
11
  import { matClose } from '@ng-icons/material-icons/baseline';
12
12
  import { CommonModule } from '@angular/common';
13
13
  import { ButtonComponent, DropdownSelectorComponent, } from '../../../../../../libs/ui/inputs/src';
14
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
14
+ import { TranslateDirective, TranslatePipe, TranslateService, } from '@ngx-translate/core';
15
15
  import { ExternalViewerButtonComponent } from '../external-viewer-button/external-viewer-button.component';
16
16
  import { LoadingMaskComponent, PopupAlertComponent, } from '../../../../../../libs/ui/widgets/src';
17
17
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
@@ -25,15 +25,29 @@ import * as i5 from "@angular/common";
25
25
  marker('map.dropdown.placeholder');
26
26
  marker('wfs.feature.limit');
27
27
  marker('dataset.error.restrictedAccess');
28
+ marker('map.select.style');
28
29
  export class MapViewComponent {
29
30
  set exceedsLimit(value) {
30
31
  this.excludeWfs$.next(value);
31
32
  }
33
+ set selectedView(value) {
34
+ if (value === 'map') {
35
+ this.selectedLink$.pipe(take(1)).subscribe((link) => {
36
+ this.linkSelected.emit(link);
37
+ });
38
+ }
39
+ }
40
+ selectLinkToDisplay(i) {
41
+ this.selectedLinkIndex$.next(i);
42
+ }
43
+ selectStyleToDisplay(i) {
44
+ this.selectedStyleIndex$.next(i);
45
+ }
32
46
  toggleLegend() {
33
47
  this.showLegend = !this.showLegend;
34
48
  }
35
- onLegendStatusChange(status) {
36
- this.legendExists = status;
49
+ onLegendStatusChange(v) {
50
+ this.legendExists = v;
37
51
  }
38
52
  constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
39
53
  this.mdViewFacade = mdViewFacade;
@@ -42,16 +56,20 @@ export class MapViewComponent {
42
56
  this.changeRef = changeRef;
43
57
  this.translateService = translateService;
44
58
  this.displaySource = true;
59
+ this.linkSelected = new EventEmitter();
45
60
  this.excludeWfs$ = new BehaviorSubject(false);
46
61
  this.hidePreview = false;
47
62
  this.showLegend = true;
48
63
  this.legendExists = false;
64
+ this.loading = false;
65
+ this.error = null;
49
66
  this.compatibleMapLinks$ = combineLatest([
50
67
  this.mdViewFacade.mapApiLinks$,
51
68
  this.mdViewFacade.geoDataLinksWithGeometry$,
52
- ]).pipe(map(([mapApiLinks, geoDataLinksWithGeometry]) => {
53
- return [...mapApiLinks, ...geoDataLinksWithGeometry];
54
- }));
69
+ ]).pipe(map(([mapApiLinks, geoDataLinksWithGeometry]) => [
70
+ ...mapApiLinks,
71
+ ...geoDataLinksWithGeometry,
72
+ ]), shareReplay(1));
55
73
  this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map((links) => links.length
56
74
  ? links.map((link, index) => ({
57
75
  label: getLinkLabel(link),
@@ -59,12 +77,50 @@ export class MapViewComponent {
59
77
  }))
60
78
  : [{ label: 'map.dropdown.placeholder', value: 0 }]));
61
79
  this.selectedLinkIndex$ = new BehaviorSubject(0);
62
- this.loading = false;
63
- this.error = null;
64
- this.selectedLink$ = combineLatest([
80
+ this.selectedStyleIndex$ = new BehaviorSubject(0);
81
+ this.selectedSourceLink$ = combineLatest([
65
82
  this.compatibleMapLinks$,
66
83
  this.selectedLinkIndex$.pipe(distinctUntilChanged()),
67
- ]).pipe(map(([links, index]) => links[index]));
84
+ ]).pipe(tap(() => {
85
+ this.error = null;
86
+ }), map(([links, index]) => {
87
+ this.linkSelected.emit(links[index]);
88
+ return links[index];
89
+ }));
90
+ this.styleLinks$ = this.selectedSourceLink$.pipe(switchMap((src) => {
91
+ if (src &&
92
+ src.type === 'service' &&
93
+ src.accessServiceProtocol === 'tms') {
94
+ return from(
95
+ // WARNING: when using "getGeodataLinksFromTms", make sure to add error handling to prevent the rest of the logic from failing
96
+ // this may happen when TMS endpoint is in error
97
+ this.dataService.getGeodataLinksFromTms(src, false)).pipe(
98
+ // We need to check for maplibre-style links because when a TMS service has no styles,
99
+ // getGeodataLinksFromTms returns the original TMS link, which isn't a maplibre-style link
100
+ map((links) => links?.filter((link) => link.type === 'service' &&
101
+ link.accessServiceProtocol === 'maplibre-style') || []), catchError((error) => {
102
+ this.handleError(error);
103
+ return of(src);
104
+ }));
105
+ }
106
+ return of([]);
107
+ }), tap(() => this.selectedStyleIndex$.next(0)), shareReplay(1));
108
+ this.styleDropdownChoices$ = this.styleLinks$.pipe(map((links) => links.length
109
+ ? links.map((link, index) => ({
110
+ label: getLinkLabel(link),
111
+ value: index,
112
+ }))
113
+ : [
114
+ {
115
+ label: '\u00A0\u00A0\u00A0\u00A0',
116
+ value: 0,
117
+ },
118
+ ]));
119
+ this.selectedLink$ = combineLatest([
120
+ this.selectedSourceLink$,
121
+ this.styleLinks$,
122
+ this.selectedStyleIndex$.pipe(distinctUntilChanged()),
123
+ ]).pipe(map(([src, styles, styleIdx]) => (styles.length ? styles[styleIdx] : src)), shareReplay(1));
68
124
  this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap(([link, excludeWfs]) => {
69
125
  if (!link) {
70
126
  return of([]);
@@ -75,7 +131,6 @@ export class MapViewComponent {
75
131
  }
76
132
  this.hidePreview = false;
77
133
  this.loading = true;
78
- this.error = null;
79
134
  if (link.accessRestricted) {
80
135
  this.handleError('dataset.error.restrictedAccess');
81
136
  return of([]);
@@ -143,6 +198,24 @@ export class MapViewComponent {
143
198
  name: link.name,
144
199
  });
145
200
  }
201
+ else if (link.type === 'service' &&
202
+ link.accessServiceProtocol === 'tms') {
203
+ // FIXME: here we're assuming that the TMS serves vector tiles only; should be checked with ogc-client first
204
+ return of({
205
+ url: link.url.toString().replace(/\/?$/, '/{z}/{x}/{y}.pbf'),
206
+ type: 'xyz',
207
+ tileFormat: 'application/vnd.mapbox-vector-tile',
208
+ name: link.name,
209
+ });
210
+ }
211
+ else if (link.type === 'service' &&
212
+ link.accessServiceProtocol === 'maplibre-style') {
213
+ return of({
214
+ type: 'maplibre-style',
215
+ name: link.name,
216
+ styleUrl: link.url.toString(),
217
+ });
218
+ }
146
219
  else if (link.type === 'service' &&
147
220
  link.accessServiceProtocol === 'wmts') {
148
221
  return of({
@@ -164,9 +237,6 @@ export class MapViewComponent {
164
237
  }
165
238
  return throwError(() => 'protocol not supported');
166
239
  }
167
- selectLinkToDisplay(link) {
168
- this.selectedLinkIndex$.next(link);
169
- }
170
240
  handleError(error) {
171
241
  if (error instanceof FetchError) {
172
242
  this.error = this.translateService.instant(`dataset.error.${error.type}`, {
@@ -186,7 +256,7 @@ export class MapViewComponent {
186
256
  this.changeRef.detectChanges();
187
257
  }
188
258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: i1.MdViewFacade }, { token: i2.MapUtilsService }, { token: i3.DataService }, { token: i0.ChangeDetectorRef }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
259
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", selectedView: "selectedView", displaySource: "displaySource" }, outputs: { linkSelected: "linkSelected" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature", "featureCatalog"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
190
260
  }
191
261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
192
262
  type: Component,
@@ -196,19 +266,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
196
266
  MapContainerComponent,
197
267
  FeatureDetailComponent,
198
268
  PopupAlertComponent,
199
- TranslateModule,
269
+ TranslateDirective,
270
+ TranslatePipe,
200
271
  LoadingMaskComponent,
201
272
  NgIconComponent,
202
273
  ExternalViewerButtonComponent,
203
274
  ButtonComponent,
204
275
  MapLegendComponent,
205
- ], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"truncate p-1 -mx-1 mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
276
+ ], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
206
277
  }], ctorParameters: () => [{ type: i1.MdViewFacade }, { type: i2.MapUtilsService }, { type: i3.DataService }, { type: i0.ChangeDetectorRef }, { type: i4.TranslateService }], propDecorators: { exceedsLimit: [{
207
278
  type: Input
279
+ }], selectedView: [{
280
+ type: Input
208
281
  }], displaySource: [{
209
282
  type: Input
283
+ }], linkSelected: [{
284
+ type: Output
210
285
  }], mapContainer: [{
211
286
  type: ViewChild,
212
287
  args: ['mapContainer']
213
288
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMvbGliL21hcC12aWV3L21hcC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9tYXAtdmlldy9tYXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3JFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLElBQUksRUFFSixFQUFFLEVBQ0YsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUE7QUFDYixPQUFPLEVBQ0wsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUV4RSxPQUFPLEVBQ0wsbUJBQW1CLEdBSXBCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGtCQUFrQixHQUNuQixNQUFNLG1DQUFtQyxDQUFBO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1B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SSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNoQyxDQUFDOytHQTVNVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixrUUN0RjdCLDJwSEF5R0EseUREakNJLFlBQVksc1JBQ1oseUJBQXlCLHFOQUN6QixxQkFBcUIsaUtBQ3JCLHNCQUFzQixzRkFDdEIsbUJBQW1CLG1HQUNuQixlQUFlLG1PQUNmLG9CQUFvQixvRkFDcEIsZUFBZSw2R0FDZiw2QkFBNkIsMkZBQzdCLGVBQWUsK0hBQ2Ysa0JBQWtCLHdHQUVMLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzs7NEZBRWhDLGdCQUFnQjtrQkFyQjVCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZiw2QkFBNkI7d0JBQzdCLGVBQWU7d0JBQ2Ysa0JBQWtCO3FCQUNuQixpQkFDYyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d01BRzlCLFlBQVk7c0JBQXhCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFDcUIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYydcbmltcG9ydCB7IGdldExpbmtMYWJlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICB0aHJvd0Vycm9yLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaW5hbGl6ZSxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUvbWR2aWV3LmZhY2FkZSdcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjJ1xuaW1wb3J0IHsgRGF0YXNldE9ubGluZVJlc291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgY3JlYXRlVmlld0Zyb21MYXllcixcbiAgTWFwQ29udGV4dCxcbiAgTWFwQ29udGV4dExheWVyLFxuICBTb3VyY2VMb2FkRXJyb3JFdmVudCxcbn0gZnJvbSAnQGdlb3NwYXRpYWwtc2RrL2NvcmUnXG5pbXBvcnQge1xuICBGZWF0dXJlRGV0YWlsQ29tcG9uZW50LFxuICBNYXBDb250YWluZXJDb21wb25lbnQsXG4gIHByaW9yaXRpemVQYWdlU2Nyb2xsLFxuICBNYXBMZWdlbmRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYydcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHsgTmdJY29uQ29tcG9uZW50LCBwcm92aWRlSWNvbnMgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IG1hdENsb3NlIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQnV0dG9uQ29tcG9uZW50LFxuICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgRXh0ZXJuYWxWaWV3ZXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9leHRlcm5hbC12aWV3ZXItYnV0dG9uL2V4dGVybmFsLXZpZXdlci1idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTG9hZGluZ01hc2tDb21wb25lbnQsXG4gIFBvcHVwQWxlcnRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBGZXRjaEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMnXG5cbm1hcmtlcignbWFwLmRyb3Bkb3duLnBsYWNlaG9sZGVyJylcbm1hcmtlcignd2ZzLmZlYXR1cmUubGltaXQnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnJlc3RyaWN0ZWRBY2Nlc3MnKVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tYXAtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbiAgICBNYXBDb250YWluZXJDb21wb25lbnQsXG4gICAgRmVhdHVyZURldGFpbENvbXBvbmVudCxcbiAgICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBMb2FkaW5nTWFza0NvbXBvbmVudCxcbiAgICBOZ0ljb25Db21wb25lbnQsXG4gICAgRXh0ZXJuYWxWaWV3ZXJCdXR0b25Db21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIE1hcExlZ2VuZENvbXBvbmVudCxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW3Byb3ZpZGVJY29ucyh7IG1hdENsb3NlIH0pXSxcbn0pXG5leHBvcnQgY2xhc3MgTWFwVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZXQgZXhjZWVkc0xpbWl0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5leGNsdWRlV2ZzJC5uZXh0KHZhbHVlKVxuICB9XG4gIEBJbnB1dCgpIGRpc3BsYXlTb3VyY2UgPSB0cnVlXG4gIEBWaWV3Q2hpbGQoJ21hcENvbnRhaW5lcicpIG1hcENvbnRhaW5lcjogTWFwQ29udGFpbmVyQ29tcG9uZW50XG5cbiAgZXhjbHVkZVdmcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICBoaWRlUHJldmlldyA9IGZhbHNlXG4gIHNlbGVjdGlvbjogRmVhdHVyZVxuICBzaG93TGVnZW5kID0gdHJ1ZVxuICBsZWdlbmRFeGlzdHMgPSBmYWxzZVxuXG4gIHRvZ2dsZUxlZ2VuZCgpIHtcbiAgICB0aGlzLnNob3dMZWdlbmQgPSAhdGhpcy5zaG93TGVnZW5kXG4gIH1cblxuICBvbkxlZ2VuZFN0YXR1c0NoYW5nZShzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxlZ2VuZEV4aXN0cyA9IHN0YXR1c1xuICB9XG5cbiAgY29tcGF0aWJsZU1hcExpbmtzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubWRWaWV3RmFjYWRlLm1hcEFwaUxpbmtzJCxcbiAgICB0aGlzLm1kVmlld0ZhY2FkZS5nZW9EYXRhTGlua3NXaXRoR2VvbWV0cnkkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW21hcEFwaUxpbmtzLCBnZW9EYXRhTGlua3NXaXRoR2VvbWV0cnldKSA9PiB7XG4gICAgICByZXR1cm4gWy4uLm1hcEFwaUxpbmtzLCAuLi5nZW9EYXRhTGlua3NXaXRoR2VvbWV0cnldXG4gICAgfSlcbiAgKVxuXG4gIGRyb3Bkb3duQ2hvaWNlcyQgPSB0aGlzLmNvbXBhdGlibGVNYXBMaW5rcyQucGlwZShcbiAgICBtYXAoKGxpbmtzKSA9PlxuICAgICAgbGlua3MubGVuZ3RoXG4gICAgICAgID8gbGlua3MubWFwKChsaW5rLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBnZXRMaW5rTGFiZWwobGluayksXG4gICAgICAgICAgICB2YWx1ZTogaW5kZXgsXG4gICAgICAgICAgfSkpXG4gICAgICAgIDogW3sgbGFiZWw6ICdtYXAuZHJvcGRvd24ucGxhY2Vob2xkZXInLCB2YWx1ZTogMCB9XVxuICAgIClcbiAgKVxuICBzZWxlY3RlZExpbmtJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApXG5cbiAgbG9hZGluZyA9IGZhbHNlXG4gIGVycm9yID0gbnVsbFxuXG4gIHNlbGVjdGVkTGluayQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmNvbXBhdGlibGVNYXBMaW5rcyQsXG4gICAgdGhpcy5zZWxlY3RlZExpbmtJbmRleCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgXSkucGlwZShtYXAoKFtsaW5rcywgaW5kZXhdKSA9PiBsaW5rc1tpbmRleF0pKVxuXG4gIGN1cnJlbnRMYXllcnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3RlZExpbmskLCB0aGlzLmV4Y2x1ZGVXZnMkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtsaW5rLCBleGNsdWRlV2ZzXSkgPT4ge1xuICAgICAgaWYgKCFsaW5rKSB7XG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH1cbiAgICAgIGlmIChleGNsdWRlV2ZzICYmIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnd2ZzJykge1xuICAgICAgICB0aGlzLmhpZGVQcmV2aWV3ID0gdHJ1ZVxuICAgICAgICByZXR1cm4gb2YoW10pXG4gICAgICB9XG4gICAgICB0aGlzLmhpZGVQcmV2aWV3ID0gZmFsc2VcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsXG4gICAgICBpZiAobGluay5hY2Nlc3NSZXN0cmljdGVkKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoJ2RhdGFzZXQuZXJyb3IucmVzdHJpY3RlZEFjY2VzcycpXG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmdldExheWVyRnJvbUxpbmsobGluaykucGlwZShcbiAgICAgICAgbWFwKChsYXllcikgPT4gW2xheWVyXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGUpXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKSlcbiAgICAgIClcbiAgICB9KVxuICApXG5cbiAgbWFwQ29udGV4dCQ6IE9ic2VydmFibGU8TWFwQ29udGV4dD4gPSB0aGlzLmN1cnJlbnRMYXllcnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChsYXllcnMpID0+XG4gICAgICBmcm9tKGNyZWF0ZVZpZXdGcm9tTGF5ZXIobGF5ZXJzWzBdKSkucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksIC8vIGNvdWxkIG5vdCB6b29tIG9uIHRoZSBsYXllcjogdXNlIHRoZSByZWNvcmQgZXh0ZW50XG4gICAgICAgIG1hcCgodmlldykgPT4gKHtcbiAgICAgICAgICBsYXllcnMsXG4gICAgICAgICAgdmlldyxcbiAgICAgICAgfSkpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICksXG4gICAgc3RhcnRXaXRoKHtcbiAgICAgIGxheWVyczogW10sXG4gICAgICB2aWV3OiBudWxsLFxuICAgIH0pLFxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMubWRWaWV3RmFjYWRlLm1ldGFkYXRhJCksXG4gICAgbWFwKChbY29udGV4dCwgbWV0YWRhdGFdKSA9PiB7XG4gICAgICBpZiAoY29udGV4dC52aWV3KSByZXR1cm4gY29udGV4dFxuICAgICAgY29uc3QgZXh0ZW50ID0gdGhpcy5tYXBVdGlscy5nZXRSZWNvcmRFeHRlbnQobWV0YWRhdGEpXG4gICAgICBjb25zdCB2aWV3ID0gZXh0ZW50ID8geyBleHRlbnQgfSA6IG51bGxcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRleHQsXG4gICAgICAgIHZpZXcsXG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWRWaWV3RmFjYWRlOiBNZFZpZXdGYWNhZGUsXG4gICAgcHJpdmF0ZSBtYXBVdGlsczogTWFwVXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBtYXAgPSBhd2FpdCB0aGlzLm1hcENvbnRhaW5lci5vcGVubGF5ZXJzTWFwXG4gICAgcHJpb3JpdGl6ZVBhZ2VTY3JvbGwobWFwLmdldEludGVyYWN0aW9ucygpKVxuICB9XG5cbiAgb25NYXBGZWF0dXJlU2VsZWN0KGZlYXR1cmVzOiBGZWF0dXJlW10pOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKClcbiAgICB0aGlzLnNlbGVjdGlvbiA9IGZlYXR1cmVzPy5sZW5ndGggPiAwICYmIGZlYXR1cmVzWzBdXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAvLyBGSVhNRTogcmVzdG9yZSBzdHlsaW5nIG9mIHNlbGVjdGVkIGZlYXR1cmVcbiAgICAgIC8vIHRoaXMuc2VsZWN0aW9uLnNldFN0eWxlKHRoaXMuc2VsZWN0aW9uU3R5bGUpXG4gICAgfVxuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgb25Tb3VyY2VMb2FkRXJyb3IoZXJyb3I6IFNvdXJjZUxvYWRFcnJvckV2ZW50KSB7XG4gICAgaWYgKGVycm9yLmh0dHBTdGF0dXMgPT09IDQwMyB8fCBlcnJvci5odHRwU3RhdHVzID09PSA0MDEpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZGF0YXNldC5lcnJvci5mb3JiaWRkZW5gKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGRhdGFzZXQuZXJyb3IuaHR0cGAsIHtcbiAgICAgICAgaW5mbzogZXJyb3IuaHR0cFN0YXR1cyxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAvLyBGSVhNRTogcmVzdG9yZSBzdHlsaW5nIG9mIHNlbGVjdGVkIGZlYXR1cmVcbiAgICAgIC8vIHRoaXMuc2VsZWN0aW9uLnNldFN0eWxlKG51bGwpXG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbFxuICB9XG5cbiAgZ2V0TGF5ZXJGcm9tTGluayhsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpOiBPYnNlcnZhYmxlPE1hcENvbnRleHRMYXllcj4ge1xuICAgIGlmIChsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJiBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dtcycpIHtcbiAgICAgIHJldHVybiBvZih7XG4gICAgICAgIHVybDogbGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgdHlwZTogJ3dtcycsXG4gICAgICAgIG5hbWU6IGxpbmsubmFtZSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmXG4gICAgICBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dtdHMnXG4gICAgKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICB1cmw6IGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgIHR5cGU6ICd3bXRzJyxcbiAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgKGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmXG4gICAgICAgIChsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dmcycgfHxcbiAgICAgICAgICBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ2VzcmlSZXN0JyB8fFxuICAgICAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnb2djRmVhdHVyZXMnKSkgfHxcbiAgICAgIGxpbmsudHlwZSA9PT0gJ2Rvd25sb2FkJ1xuICAgICkge1xuICAgICAgY29uc3QgY2FjaGVBY3RpdmUgPSB0cnVlIC8vIFRPRE8gaW1wbGVtZW50IHdoZXRoZXIgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2VcbiAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlYWRBc0dlb0pzb24obGluaywgY2FjaGVBY3RpdmUpLnBpcGUoXG4gICAgICAgIG1hcCgoZGF0YSkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnZ2VvanNvbicsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdwcm90b2NvbCBub3Qgc3VwcG9ydGVkJylcbiAgfVxuXG4gIHNlbGVjdExpbmtUb0Rpc3BsYXkobGluazogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZExpbmtJbmRleCQubmV4dChsaW5rKVxuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvciB8IHN0cmluZykge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgYGRhdGFzZXQuZXJyb3IuJHtlcnJvci50eXBlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmZvOiBlcnJvci5pbmZvLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IubWVzc2FnZSlcbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlcnJvci5tZXNzYWdlKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLnN0YWNrIHx8IGVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IpXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgcC0xXCI+XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBqdXN0aWZ5LWVuZFwiPlxuICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgW25nQ2xhc3NdPVwieyBoaWRkZW46ICFkaXNwbGF5U291cmNlIH1cIlxuICAgICAgY2xhc3M9XCJ0cnVuY2F0ZSBwLTEgLW14LTEgbWItMVwiXG4gICAgICBleHRyYUJ0bkNsYXNzPVwiIXRleHQtcHJpbWFyeSBmb250LXNhbnMgZm9udC1tZWRpdW1cIlxuICAgICAgW3RpdGxlXT1cIidtYXAuc2VsZWN0LmxheWVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbY2hvaWNlc109XCJkcm9wZG93bkNob2ljZXMkIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdFZhbHVlKT1cInNlbGVjdExpbmtUb0Rpc3BsYXkoJGV2ZW50KVwiXG4gICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgPGduLXVpLWV4dGVybmFsLXZpZXdlci1idXR0b25cbiAgICAgIGNsYXNzPVwic2hyaW5rLTAgcHktMSBwbGFjZS1zZWxmLWVuZFwiXG4gICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgID5cbiAgICA8L2duLXVpLWV4dGVybmFsLXZpZXdlci1idXR0b24+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGlkZVByZXZpZXc7IGVsc2UgbWFwVmlld1wiPlxuICAgIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICAgdHlwZT1cIndhcm5pbmdcIlxuICAgICAgaWNvbj1cIm1hdEVycm9yT3V0bGluZU91dGxpbmVcIlxuICAgICAgY2xhc3M9XCJibG9jayBoLTEyIHAtMVwiXG4gICAgPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5mZWF0dXJlLmxpbWl0PC9zcGFuPlxuICAgIDwvZ24tdWktcG9wdXAtYWxlcnQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI21hcFZpZXc+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGwgaC1mdWxsIGJnLXdoaXRlIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1sZyBvdmVyZmxvdy1oaWRkZW5cIlxuICAgID5cbiAgICAgIDxnbi11aS1tYXAtY29udGFpbmVyXG4gICAgICAgICNtYXBDb250YWluZXJcbiAgICAgICAgW2NvbnRleHRdPVwibWFwQ29udGV4dCQgfCBhc3luY1wiXG4gICAgICAgIChmZWF0dXJlc0NsaWNrKT1cIm9uTWFwRmVhdHVyZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgKHNvdXJjZUxvYWRFcnJvcik9XCJvblNvdXJjZUxvYWRFcnJvcigkZXZlbnQpXCJcbiAgICAgID48L2duLXVpLW1hcC1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidG9wLVsxZW1dIHJpZ2h0LVsxZW1dIHAtMyBiZy13aGl0ZSBhYnNvbHV0ZSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gbWF4LWgtNzIgdy01NlwiXG4gICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiIXNlbGVjdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgIChidXR0b25DbGljayk9XCJyZXNldFNlbGVjdGlvbigpXCJcbiAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgLS1nbi11aS1idXR0b24tcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgLS1nbi11aS1idXR0b24td2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAtLWduLXVpLWJ1dHRvbi1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgXCJcbiAgICAgICAgICBleHRyYUNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWzAuNWVtXSBtbC1bOHB4XSBtci1bMTBweF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWljb24gbmFtZT1cIm1hdENsb3NlXCIgY2xhc3M9XCJhbGlnbi1taWRkbGUgdGV4dC1zbVwiPjwvbmctaWNvbj5cbiAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgIDxnbi11aS1mZWF0dXJlLWRldGFpbCBbZmVhdHVyZV09XCJzZWxlY3Rpb25cIj48L2duLXVpLWZlYXR1cmUtZGV0YWlsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0b3AtWzFlbV0gcC0zIGJnLXdoaXRlIGFic29sdXRlIG92ZXJmbG93LXktYXV0byBvdmVyZmxvdy14LWhpZGRlbiBtYXgtaC03MiB3LTU2XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAncmlnaHQtWzFlbV0nOiAhc2VsZWN0aW9uLCAncmlnaHQtWzE2ZW1dJzogc2VsZWN0aW9uIH1cIlxuICAgICAgICBbaGlkZGVuXT1cIiFzaG93TGVnZW5kIHx8ICFsZWdlbmRFeGlzdHNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtYm9sZFwiPkxlZ2VuZDwvZGl2PlxuICAgICAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlTGVnZW5kKClcIlxuICAgICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgICAgLS1nbi11aS1idXR0b24tcGFkZGluZzogMHB4O1xuICAgICAgICAgICAgICAtLWduLXVpLWJ1dHRvbi13aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgLS1nbi11aS1idXR0b24taGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGV4dHJhQ2xhc3M9XCJtbC1bOHB4XSBtci1bMTBweF1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1pY29uIG5hbWU9XCJtYXRDbG9zZVwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlIHRleHQtc21cIj48L25nLWljb24+XG4gICAgICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Z24tdWktbWFwLWxlZ2VuZFxuICAgICAgICAgIFtjb250ZXh0XT1cIm1hcENvbnRleHQkIHwgYXN5bmNcIlxuICAgICAgICAgIChsZWdlbmRTdGF0dXNDaGFuZ2UpPVwib25MZWdlbmRTdGF0dXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L2duLXVpLW1hcC1sZWdlbmQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGduLXVpLWJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFzaG93TGVnZW5kICYmIGxlZ2VuZEV4aXN0cyAmJiAhc2VsZWN0aW9uXCJcbiAgICAgICAgdHlwZT1cIm91dGxpbmVcIlxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlTGVnZW5kKClcIlxuICAgICAgICBleHRyYUNsYXNzPVwiYWJzb2x1dGUgdG9wLVsxZW1dIHJpZ2h0LVsxZW1dIHJvdW5kZWQgcC0xIHRleHQteHMgYmctd2hpdGVcIlxuICAgICAgPlxuICAgICAgICBMZWdlbmRcbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuXG4gICAgICA8Z24tdWktbG9hZGluZy1tYXNrXG4gICAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMFwiXG4gICAgICAgIFttZXNzYWdlXT1cIidtYXAubG9hZGluZy5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+PC9nbi11aS1sb2FkaW5nLW1hc2s+XG4gICAgICA8Z24tdWktcG9wdXAtYWxlcnRcbiAgICAgICAgKm5nSWY9XCJlcnJvclwiXG4gICAgICAgIHR5cGU9XCJ3YXJuaW5nXCJcbiAgICAgICAgaWNvbj1cIm1hdEVycm9yT3V0bGluZU91dGxpbmVcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIG0tMiBpbnNldC0wXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gdHJhbnNsYXRlPnt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgPC9nbi11aS1wb3B1cC1hbGVydD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMvbGliL21hcC12aWV3L21hcC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9tYXAtdmlldy9tYXAtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDckUsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsSUFBSSxFQUVKLEVBQUUsRUFDRixTQUFTLEVBQ1QsVUFBVSxFQUNWLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQTtBQUNiLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQTtBQUt4RSxPQUFPLEVBQ0wsbUJBQW1CLEdBSXBCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLG9CQUFvQixHQUNyQixNQUFNLG1DQUFtQyxDQUFBO0FBRTFDLE9B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QUFBO0lBQ2hDLENBQUM7K0dBbFRVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLDJVQ2xHN0IsNG9KQW9JQSx5RERqREksWUFBWSxzUkFDWix5QkFBeUIscU5BQ3pCLHFCQUFxQixpS0FDckIsc0JBQXNCLHdHQUN0QixtQkFBbUIsb0dBQ25CLGtCQUFrQiw2R0FDbEIsYUFBYSxrREFDYixvQkFBb0Isb0ZBQ3BCLGVBQWUsNkdBQ2YsNkJBQTZCLHlHQUM3QixlQUFlLCtIQUNmLGtCQUFrQix3R0FFTCxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7OzRGQUVoQyxnQkFBZ0I7a0JBdEI1QixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZiw2QkFBNkI7d0JBQzdCLGVBQWU7d0JBQ2Ysa0JBQWtCO3FCQUNuQixpQkFDYyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7d01BRzlCLFlBQVk7c0JBQXhCLEtBQUs7Z0JBR08sWUFBWTtzQkFBeEIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ29CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hcFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9tYXAvc3JjJ1xuaW1wb3J0IHsgZ2V0TGlua0xhYmVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzdGFydFdpdGgsXG4gIHRocm93RXJyb3IsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbmFsaXplLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBNZFZpZXdGYWNhZGUgfSBmcm9tICcuLi9zdGF0ZS9tZHZpZXcuZmFjYWRlJ1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMnXG5pbXBvcnQge1xuICBEYXRhc2V0T25saW5lUmVzb3VyY2UsXG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBjcmVhdGVWaWV3RnJvbUxheWVyLFxuICBNYXBDb250ZXh0LFxuICBNYXBDb250ZXh0TGF5ZXIsXG4gIFNvdXJjZUxvYWRFcnJvckV2ZW50LFxufSBmcm9tICdAZ2Vvc3BhdGlhbC1zZGsvY29yZSdcbmltcG9ydCB7XG4gIEZlYXR1cmVEZXRhaWxDb21wb25lbnQsXG4gIE1hcENvbnRhaW5lckNvbXBvbmVudCxcbiAgTWFwTGVnZW5kQ29tcG9uZW50LFxuICBwcmlvcml0aXplUGFnZVNjcm9sbCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9tYXAvc3JjJ1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ2dlb2pzb24nXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0Q2xvc2UgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBCdXR0b25Db21wb25lbnQsXG4gIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIFRyYW5zbGF0ZURpcmVjdGl2ZSxcbiAgVHJhbnNsYXRlUGlwZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEV4dGVybmFsVmlld2VyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vZXh0ZXJuYWwtdmlld2VyLWJ1dHRvbi9leHRlcm5hbC12aWV3ZXItYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIExvYWRpbmdNYXNrQ29tcG9uZW50LFxuICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHsgRmV0Y2hFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjJ1xuXG5tYXJrZXIoJ21hcC5kcm9wZG93bi5wbGFjZWhvbGRlcicpXG5tYXJrZXIoJ3dmcy5mZWF0dXJlLmxpbWl0Jylcbm1hcmtlcignZGF0YXNldC5lcnJvci5yZXN0cmljdGVkQWNjZXNzJylcbm1hcmtlcignbWFwLnNlbGVjdC5zdHlsZScpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1hcC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIE1hcENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBGZWF0dXJlRGV0YWlsQ29tcG9uZW50LFxuICAgIFBvcHVwQWxlcnRDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlRGlyZWN0aXZlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgTG9hZGluZ01hc2tDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIEV4dGVybmFsVmlld2VyQnV0dG9uQ29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXBMZWdlbmRDb21wb25lbnQsXG4gIF0sXG4gIHZpZXdQcm92aWRlcnM6IFtwcm92aWRlSWNvbnMoeyBtYXRDbG9zZSB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hcFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgc2V0IGV4Y2VlZHNMaW1pdCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZXhjbHVkZVdmcyQubmV4dCh2YWx1ZSlcbiAgfVxuICBASW5wdXQoKSBzZXQgc2VsZWN0ZWRWaWV3KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgPT09ICdtYXAnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTGluayQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGxpbmspID0+IHtcbiAgICAgICAgdGhpcy5saW5rU2VsZWN0ZWQuZW1pdChsaW5rKVxuICAgICAgfSlcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgZGlzcGxheVNvdXJjZSA9IHRydWVcbiAgQE91dHB1dCgpIGxpbmtTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YXNldE9ubGluZVJlc291cmNlPigpXG4gIEBWaWV3Q2hpbGQoJ21hcENvbnRhaW5lcicpIG1hcENvbnRhaW5lcjogTWFwQ29udGFpbmVyQ29tcG9uZW50XG5cbiAgZXhjbHVkZVdmcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuICBoaWRlUHJldmlldyA9IGZhbHNlXG4gIHNlbGVjdGlvbjogRmVhdHVyZVxuICBzaG93TGVnZW5kID0gdHJ1ZVxuICBsZWdlbmRFeGlzdHMgPSBmYWxzZVxuICBsb2FkaW5nID0gZmFsc2VcbiAgZXJyb3IgPSBudWxsXG5cbiAgc2VsZWN0TGlua1RvRGlzcGxheShpOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkTGlua0luZGV4JC5uZXh0KGkpXG4gIH1cblxuICBzZWxlY3RTdHlsZVRvRGlzcGxheShpOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkU3R5bGVJbmRleCQubmV4dChpKVxuICB9XG5cbiAgdG9nZ2xlTGVnZW5kKCkge1xuICAgIHRoaXMuc2hvd0xlZ2VuZCA9ICF0aGlzLnNob3dMZWdlbmRcbiAgfVxuICBvbkxlZ2VuZFN0YXR1c0NoYW5nZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5sZWdlbmRFeGlzdHMgPSB2XG4gIH1cblxuICBjb21wYXRpYmxlTWFwTGlua3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tZFZpZXdGYWNhZGUubWFwQXBpTGlua3MkLFxuICAgIHRoaXMubWRWaWV3RmFjYWRlLmdlb0RhdGFMaW5rc1dpdGhHZW9tZXRyeSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbWFwQXBpTGlua3MsIGdlb0RhdGFMaW5rc1dpdGhHZW9tZXRyeV0pID0+IFtcbiAgICAgIC4uLm1hcEFwaUxpbmtzLFxuICAgICAgLi4uZ2VvRGF0YUxpbmtzV2l0aEdlb21ldHJ5LFxuICAgIF0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBkcm9wZG93bkNob2ljZXMkID0gdGhpcy5jb21wYXRpYmxlTWFwTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmxlbmd0aFxuICAgICAgICA/IGxpbmtzLm1hcCgobGluaywgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogZ2V0TGlua0xhYmVsKGxpbmspLFxuICAgICAgICAgICAgdmFsdWU6IGluZGV4LFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IFt7IGxhYmVsOiAnbWFwLmRyb3Bkb3duLnBsYWNlaG9sZGVyJywgdmFsdWU6IDAgfV1cbiAgICApXG4gIClcblxuICBzZWxlY3RlZExpbmtJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDApXG4gIHByaXZhdGUgc2VsZWN0ZWRTdHlsZUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMClcblxuICBzZWxlY3RlZFNvdXJjZUxpbmskID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5jb21wYXRpYmxlTWFwTGlua3MkLFxuICAgIHRoaXMuc2VsZWN0ZWRMaW5rSW5kZXgkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gIF0pLnBpcGUoXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsXG4gICAgfSksXG4gICAgbWFwKChbbGlua3MsIGluZGV4XSkgPT4ge1xuICAgICAgdGhpcy5saW5rU2VsZWN0ZWQuZW1pdChsaW5rc1tpbmRleF0pXG4gICAgICByZXR1cm4gbGlua3NbaW5kZXhdXG4gICAgfSlcbiAgKVxuXG4gIHN0eWxlTGlua3MkID0gdGhpcy5zZWxlY3RlZFNvdXJjZUxpbmskLnBpcGUoXG4gICAgc3dpdGNoTWFwKChzcmMpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgc3JjICYmXG4gICAgICAgIHNyYy50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgICAgc3JjLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3RtcydcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAvLyBXQVJOSU5HOiB3aGVuIHVzaW5nIFwiZ2V0R2VvZGF0YUxpbmtzRnJvbVRtc1wiLCBtYWtlIHN1cmUgdG8gYWRkIGVycm9yIGhhbmRsaW5nIHRvIHByZXZlbnQgdGhlIHJlc3Qgb2YgdGhlIGxvZ2ljIGZyb20gZmFpbGluZ1xuICAgICAgICAgIC8vIHRoaXMgbWF5IGhhcHBlbiB3aGVuIFRNUyBlbmRwb2ludCBpcyBpbiBlcnJvclxuICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0R2VvZGF0YUxpbmtzRnJvbVRtcyhcbiAgICAgICAgICAgIHNyYyBhcyBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgbWFwbGlicmUtc3R5bGUgbGlua3MgYmVjYXVzZSB3aGVuIGEgVE1TIHNlcnZpY2UgaGFzIG5vIHN0eWxlcyxcbiAgICAgICAgICAvLyBnZXRHZW9kYXRhTGlua3NGcm9tVG1zIHJldHVybnMgdGhlIG9yaWdpbmFsIFRNUyBsaW5rLCB3aGljaCBpc24ndCBhIG1hcGxpYnJlLXN0eWxlIGxpbmtcbiAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAobGlua3MpID0+XG4gICAgICAgICAgICAgIGxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgICAgICAgICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdtYXBsaWJyZS1zdHlsZSdcbiAgICAgICAgICAgICAgKSB8fCBbXVxuICAgICAgICAgICksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gb2Yoc3JjKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIHJldHVybiBvZihbXSlcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5zZWxlY3RlZFN0eWxlSW5kZXgkLm5leHQoMCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBzdHlsZURyb3Bkb3duQ2hvaWNlcyQgPSB0aGlzLnN0eWxlTGlua3MkLnBpcGUoXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLmxlbmd0aFxuICAgICAgICA/IGxpbmtzLm1hcCgobGluaywgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogZ2V0TGlua0xhYmVsKGxpbmspLFxuICAgICAgICAgICAgdmFsdWU6IGluZGV4LFxuICAgICAgICAgIH0pKVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICdcXHUwMEEwXFx1MDBBMFxcdTAwQTBcXHUwMEEwJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICApXG4gIClcblxuICBzZWxlY3RlZExpbmskID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5zZWxlY3RlZFNvdXJjZUxpbmskLFxuICAgIHRoaXMuc3R5bGVMaW5rcyQsXG4gICAgdGhpcy5zZWxlY3RlZFN0eWxlSW5kZXgkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbc3JjLCBzdHlsZXMsIHN0eWxlSWR4XSkgPT4gKHN0eWxlcy5sZW5ndGggPyBzdHlsZXNbc3R5bGVJZHhdIDogc3JjKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIGN1cnJlbnRMYXllcnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5zZWxlY3RlZExpbmskLCB0aGlzLmV4Y2x1ZGVXZnMkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtsaW5rLCBleGNsdWRlV2ZzXSkgPT4ge1xuICAgICAgaWYgKCFsaW5rKSB7XG4gICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgIH1cbiAgICAgIGlmIChleGNsdWRlV2ZzICYmIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnd2ZzJykge1xuICAgICAgICB0aGlzLmhpZGVQcmV2aWV3ID0gdHJ1ZVxuICAgICAgICByZXR1cm4gb2YoW10pXG4gICAgICB9XG4gICAgICB0aGlzLmhpZGVQcmV2aWV3ID0gZmFsc2VcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIGlmIChsaW5rLmFjY2Vzc1Jlc3RyaWN0ZWQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcignZGF0YXNldC5lcnJvci5yZXN0cmljdGVkQWNjZXNzJylcbiAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TGF5ZXJGcm9tTGluayhsaW5rKS5waXBlKFxuICAgICAgICBtYXAoKGxheWVyKSA9PiBbbGF5ZXJdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZSlcbiAgICAgICAgICByZXR1cm4gb2YoW10pXG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpKVxuICAgICAgKVxuICAgIH0pXG4gIClcblxuICBtYXBDb250ZXh0JDogT2JzZXJ2YWJsZTxNYXBDb250ZXh0PiA9IHRoaXMuY3VycmVudExheWVycyQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGxheWVycykgPT5cbiAgICAgIGZyb20oY3JlYXRlVmlld0Zyb21MYXllcihsYXllcnNbMF0pKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSwgLy8gY291bGQgbm90IHpvb20gb24gdGhlIGxheWVyOiB1c2UgdGhlIHJlY29yZCBleHRlbnRcbiAgICAgICAgbWFwKCh2aWV3KSA9PiAoe1xuICAgICAgICAgIGxheWVycyxcbiAgICAgICAgICB2aWV3LFxuICAgICAgICB9KSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKSxcbiAgICBzdGFydFdpdGgoe1xuICAgICAgbGF5ZXJzOiBbXSxcbiAgICAgIHZpZXc6IG51bGwsXG4gICAgfSksXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5tZFZpZXdGYWNhZGUubWV0YWRhdGEkKSxcbiAgICBtYXAoKFtjb250ZXh0LCBtZXRhZGF0YV0pID0+IHtcbiAgICAgIGlmIChjb250ZXh0LnZpZXcpIHJldHVybiBjb250ZXh0XG4gICAgICBjb25zdCBleHRlbnQgPSB0aGlzLm1hcFV0aWxzLmdldFJlY29yZEV4dGVudChtZXRhZGF0YSlcbiAgICAgIGNvbnN0IHZpZXcgPSBleHRlbnQgPyB7IGV4dGVudCB9IDogbnVsbFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgdmlldyxcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZFZpZXdGYWNhZGU6IE1kVmlld0ZhY2FkZSxcbiAgICBwcml2YXRlIG1hcFV0aWxzOiBNYXBVdGlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IG1hcCA9IGF3YWl0IHRoaXMubWFwQ29udGFpbmVyLm9wZW5sYXllcnNNYXBcbiAgICBwcmlvcml0aXplUGFnZVNjcm9sbChtYXAuZ2V0SW50ZXJhY3Rpb25zKCkpXG4gIH1cblxuICBvbk1hcEZlYXR1cmVTZWxlY3QoZmVhdHVyZXM6IEZlYXR1cmVbXSk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKVxuICAgIHRoaXMuc2VsZWN0aW9uID0gZmVhdHVyZXM/Lmxlbmd0aCA+IDAgJiYgZmVhdHVyZXNbMF1cbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIC8vIEZJWE1FOiByZXN0b3JlIHN0eWxpbmcgb2Ygc2VsZWN0ZWQgZmVhdHVyZVxuICAgICAgLy8gdGhpcy5zZWxlY3Rpb24uc2V0U3R5bGUodGhpcy5zZWxlY3Rpb25TdHlsZSlcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBvblNvdXJjZUxvYWRFcnJvcihlcnJvcjogU291cmNlTG9hZEVycm9yRXZlbnQpIHtcbiAgICBpZiAoZXJyb3IuaHR0cFN0YXR1cyA9PT0gNDAzIHx8IGVycm9yLmh0dHBTdGF0dXMgPT09IDQwMSkge1xuICAgICAgdGhpcy5lcnJvciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBkYXRhc2V0LmVycm9yLmZvcmJpZGRlbmApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgZGF0YXNldC5lcnJvci5odHRwYCwge1xuICAgICAgICBpbmZvOiBlcnJvci5odHRwU3RhdHVzLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXNldFNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIC8vIEZJWE1FOiByZXN0b3JlIHN0eWxpbmcgb2Ygc2VsZWN0ZWQgZmVhdHVyZVxuICAgICAgLy8gdGhpcy5zZWxlY3Rpb24uc2V0U3R5bGUobnVsbClcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsXG4gIH1cblxuICBnZXRMYXllckZyb21MaW5rKGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSk6IE9ic2VydmFibGU8TWFwQ29udGV4dExheWVyPiB7XG4gICAgaWYgKGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnd21zJykge1xuICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgdXJsOiBsaW5rLnVybC50b1N0cmluZygpLFxuICAgICAgICB0eXBlOiAnd21zJyxcbiAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAndG1zJ1xuICAgICkge1xuICAgICAgLy8gRklYTUU6IGhlcmUgd2UncmUgYXNzdW1pbmcgdGhhdCB0aGUgVE1TIHNlcnZlcyB2ZWN0b3IgdGlsZXMgb25seTsgc2hvdWxkIGJlIGNoZWNrZWQgd2l0aCBvZ2MtY2xpZW50IGZpcnN0XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICB1cmw6IGxpbmsudXJsLnRvU3RyaW5nKCkucmVwbGFjZSgvXFwvPyQvLCAnL3t6fS97eH0ve3l9LnBiZicpLFxuICAgICAgICB0eXBlOiAneHl6JyxcbiAgICAgICAgdGlsZUZvcm1hdDogJ2FwcGxpY2F0aW9uL3ZuZC5tYXBib3gtdmVjdG9yLXRpbGUnLFxuICAgICAgICBuYW1lOiBsaW5rLm5hbWUsXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdtYXBsaWJyZS1zdHlsZSdcbiAgICApIHtcbiAgICAgIHJldHVybiBvZih7XG4gICAgICAgIHR5cGU6ICdtYXBsaWJyZS1zdHlsZScsXG4gICAgICAgIG5hbWU6IGxpbmsubmFtZSxcbiAgICAgICAgc3R5bGVVcmw6IGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3bXRzJ1xuICAgICkge1xuICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgdXJsOiBsaW5rLnVybC50b1N0cmluZygpLFxuICAgICAgICB0eXBlOiAnd210cycsXG4gICAgICAgIG5hbWU6IGxpbmsubmFtZSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIChsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgICAobGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3ZnMnIHx8XG4gICAgICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdlc3JpUmVzdCcgfHxcbiAgICAgICAgICBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ29nY0ZlYXR1cmVzJykpIHx8XG4gICAgICBsaW5rLnR5cGUgPT09ICdkb3dubG9hZCdcbiAgICApIHtcbiAgICAgIGNvbnN0IGNhY2hlQWN0aXZlID0gdHJ1ZSAvLyBUT0RPIGltcGxlbWVudCB3aGV0aGVyIHNob3VsZCBiZSB0cnVlIG9yIGZhbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZWFkQXNHZW9Kc29uKGxpbmssIGNhY2hlQWN0aXZlKS5waXBlKFxuICAgICAgICBtYXAoKGRhdGEpID0+ICh7XG4gICAgICAgICAgdHlwZTogJ2dlb2pzb24nLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAncHJvdG9jb2wgbm90IHN1cHBvcnRlZCcpXG4gIH1cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvciB8IHN0cmluZykge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgYGRhdGFzZXQuZXJyb3IuJHtlcnJvci50eXBlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmZvOiBlcnJvci5pbmZvLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IubWVzc2FnZSlcbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlcnJvci5tZXNzYWdlKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLnN0YWNrIHx8IGVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IpXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgZ2FwLVsxM3B4XVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGdhcC00IHB5LTQgcHgtNSBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWNvbG9yLWJvcmRlciByb3VuZGVkLWxnIG10LTZcIlxuICA+XG4gICAgPGduLXVpLWRyb3Bkb3duLXNlbGVjdG9yXG4gICAgICAqbmdJZj1cImRpc3BsYXlTb3VyY2VcIlxuICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6ZmxleC0xIG1kOm1pbi13LTBcIlxuICAgICAgZXh0cmFCdG5DbGFzcz1cImZvbnQtc2FucyBmb250LWJvbGRcIlxuICAgICAgW3RpdGxlXT1cIidtYXAuc2VsZWN0LmxheWVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbY2hvaWNlc109XCJkcm9wZG93bkNob2ljZXMkIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdFZhbHVlKT1cInNlbGVjdExpbmtUb0Rpc3BsYXkoJGV2ZW50KVwiXG4gICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHN0eWxlTGlua3MkIHwgYXN5bmMpPy5sZW5ndGggPiAwOyBlbHNlIHN0eWxlRGlzYWJsZWRcIj5cbiAgICAgIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICAgICBjbGFzcz1cInctZnVsbCBtZDpmbGV4LTEgbWQ6bWluLXctMFwiXG4gICAgICAgIGV4dHJhQnRuQ2xhc3M9XCJmb250LXNhbnMgZm9udC1ib2xkXCJcbiAgICAgICAgW3RpdGxlXT1cIidtYXAuc2VsZWN0LnN0eWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtjaG9pY2VzXT1cInN0eWxlRHJvcGRvd25DaG9pY2VzJCB8IGFzeW5jXCJcbiAgICAgICAgKHNlbGVjdFZhbHVlKT1cInNlbGVjdFN0eWxlVG9EaXNwbGF5KCRldmVudClcIlxuICAgICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNzdHlsZURpc2FibGVkPlxuICAgICAgPGduLXVpLWRyb3Bkb3duLXNlbGVjdG9yXG4gICAgICAgIGNsYXNzPVwidy1mdWxsIG1kOmZsZXgtMSBtZDptaW4tdy0wIHRleHQtZ3JheS00MDBcIlxuICAgICAgICBleHRyYUJ0bkNsYXNzPVwiZm9udC1zYW5zIGZvbnQtYm9sZCB0ZXh0LWdyYXktNDAwXCJcbiAgICAgICAgW3RpdGxlXT1cIidtYXAuc2VsZWN0LnN0eWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtjaG9pY2VzXT1cInN0eWxlRHJvcGRvd25DaG9pY2VzJCB8IGFzeW5jXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxmLWVuZCBtZDptbC0yXCI+XG4gICAgICA8Z24tdWktZXh0ZXJuYWwtdmlld2VyLWJ1dHRvblxuICAgICAgICBleHRyYUNsYXNzPVwidy1bNDRweF0gaC1bNDRweF1cIlxuICAgICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgICAgPlxuICAgICAgPC9nbi11aS1leHRlcm5hbC12aWV3ZXItYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpZGVQcmV2aWV3OyBlbHNlIG1hcFZpZXdcIj5cbiAgICA8Z24tdWktcG9wdXAtYWxlcnRcbiAgICAgIHR5cGU9XCJ3YXJuaW5nXCJcbiAgICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICAgIGNsYXNzPVwiYmxvY2sgaC0xMiBwLTFcIlxuICAgID5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQuZmVhdHVyZS5saW1pdDwvc3Bhbj5cbiAgICA8L2duLXVpLXBvcHVwLWFsZXJ0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNtYXBWaWV3PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsIGgtZnVsbCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICA+XG4gICAgICA8Z24tdWktbWFwLWNvbnRhaW5lclxuICAgICAgICAjbWFwQ29udGFpbmVyXG4gICAgICAgIFtjb250ZXh0XT1cIm1hcENvbnRleHQkIHwgYXN5bmNcIlxuICAgICAgICAoZmVhdHVyZXNDbGljayk9XCJvbk1hcEZlYXR1cmVTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIChzb3VyY2VMb2FkRXJyb3IpPVwib25Tb3VyY2VMb2FkRXJyb3IoJGV2ZW50KVwiXG4gICAgICA+PC9nbi11aS1tYXAtY29udGFpbmVyPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRvcC1bMWVtXSByaWdodC1bMWVtXSBwLTMgYmctd2hpdGUgYWJzb2x1dGUgb3ZlcmZsb3cteS1hdXRvIG92ZXJmbG93LXgtaGlkZGVuIG1heC1oLTcyIHctNTZcIlxuICAgICAgICBbY2xhc3MuaGlkZGVuXT1cIiFzZWxlY3Rpb25cIlxuICAgICAgPlxuICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwicmVzZXRTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICAgIC0tZ24tdWktYnV0dG9uLXBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgIC0tZ24tdWktYnV0dG9uLXdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgLS1nbi11aS1idXR0b24taGVpZ2h0OiAyNHB4O1xuICAgICAgICAgIFwiXG4gICAgICAgICAgZXh0cmFDbGFzcz1cImFic29sdXRlIHJpZ2h0LVswLjVlbV0gbWwtWzhweF0gbXItWzEwcHhdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1pY29uIG5hbWU9XCJtYXRDbG9zZVwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlIHRleHQtc21cIj48L25nLWljb24+XG4gICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgICA8Z24tdWktZmVhdHVyZS1kZXRhaWxcbiAgICAgICAgICBbZmVhdHVyZUNhdGFsb2ddPVwibWRWaWV3RmFjYWRlLmZlYXR1cmVDYXRhbG9nJCB8IGFzeW5jXCJcbiAgICAgICAgICBbZmVhdHVyZV09XCJzZWxlY3Rpb25cIlxuICAgICAgICA+PC9nbi11aS1mZWF0dXJlLWRldGFpbD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidG9wLVsxZW1dIHAtMyBiZy13aGl0ZSBhYnNvbHV0ZSBvdmVyZmxvdy15LWF1dG8gb3ZlcmZsb3cteC1oaWRkZW4gbWF4LWgtNzIgdy01NlwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3JpZ2h0LVsxZW1dJzogIXNlbGVjdGlvbiwgJ3JpZ2h0LVsxNmVtXSc6IHNlbGVjdGlvbiB9XCJcbiAgICAgICAgW2hpZGRlbl09XCIhc2hvd0xlZ2VuZCB8fCAhbGVnZW5kRXhpc3RzXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LWJvbGRcIj5MZWdlbmQ8L2Rpdj5cbiAgICAgICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwibGlnaHRcIlxuICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInRvZ2dsZUxlZ2VuZCgpXCJcbiAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgIC0tZ24tdWktYnV0dG9uLXBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgICAgLS1nbi11aS1idXR0b24td2lkdGg6IDI0cHg7XG4gICAgICAgICAgICAgIC0tZ24tdWktYnV0dG9uLWhlaWdodDogMjRweDtcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBleHRyYUNsYXNzPVwibWwtWzhweF0gbXItWzEwcHhdXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctaWNvbiBuYW1lPVwibWF0Q2xvc2VcIiBjbGFzcz1cImFsaWduLW1pZGRsZSB0ZXh0LXNtXCI+PC9uZy1pY29uPlxuICAgICAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGduLXVpLW1hcC1sZWdlbmRcbiAgICAgICAgICBbY29udGV4dF09XCJtYXBDb250ZXh0JCB8IGFzeW5jXCJcbiAgICAgICAgICAobGVnZW5kU3RhdHVzQ2hhbmdlKT1cIm9uTGVnZW5kU3RhdHVzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC9nbi11aS1tYXAtbGVnZW5kPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgKm5nSWY9XCIhc2hvd0xlZ2VuZCAmJiBsZWdlbmRFeGlzdHMgJiYgIXNlbGVjdGlvblwiXG4gICAgICAgIHR5cGU9XCJvdXRsaW5lXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInRvZ2dsZUxlZ2VuZCgpXCJcbiAgICAgICAgZXh0cmFDbGFzcz1cImFic29sdXRlIHRvcC1bMWVtXSByaWdodC1bMWVtXSByb3VuZGVkIHAtMSB0ZXh0LXhzIGJnLXdoaXRlXCJcbiAgICAgID5cbiAgICAgICAgTGVnZW5kXG4gICAgICA8L2duLXVpLWJ1dHRvbj5cblxuICAgICAgPGduLXVpLWxvYWRpbmctbWFza1xuICAgICAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGluc2V0LTBcIlxuICAgICAgICBbbWVzc2FnZV09XCInbWFwLmxvYWRpbmcuZGF0YScgfCB0cmFuc2xhdGVcIlxuICAgICAgPjwvZ24tdWktbG9hZGluZy1tYXNrPlxuICAgICAgPGduLXVpLXBvcHVwLWFsZXJ0XG4gICAgICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgICAgICB0eXBlPVwid2FybmluZ1wiXG4gICAgICAgIGljb249XCJtYXRFcnJvck91dGxpbmVPdXRsaW5lXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBtLTIgaW5zZXQtMFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIHRyYW5zbGF0ZT57eyBlcnJvciB9fTwvc3Bhbj5cbiAgICAgIDwvZ24tdWktcG9wdXAtYWxlcnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -14,6 +14,8 @@ export const closeMetadata = createAction('[Metadata view] close');
14
14
  Related actions
15
15
  */
16
16
  export const setRelated = createAction('[Metadata view] Set related records', props());
17
+ export const setSources = createAction('[Metadata view] Set sources', props());
18
+ export const setSourceOf = createAction('[Metadata view] Set has sources', props());
17
19
  /*
18
20
  ChartConfig actions
19
21
  */
@@ -27,4 +29,4 @@ export const addUserFeedbackFailure = createAction('[Metadata view] Add UserFeed
27
29
  export const loadUserFeedbacks = createAction('[Metadata view] Load UserFeedbacks', props());
28
30
  export const loadUserFeedbacksSuccess = createAction('[Metadata view] Load UserFeedbacks Success', props());
29
31
  export const loadUserFeedbacksFailure = createAction('[Metadata view] Load UserFeedbacks Failure', props());
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvc3RhdGUvbWR2aWV3LmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFPakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQzFDLG9DQUFvQyxFQUNwQyxLQUFLLEVBQW9CLENBQzFCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQy9DLHlDQUF5QyxFQUN6QyxLQUFLLEVBQTBDLENBQ2hELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQ2pELDRDQUE0QyxFQUM1QyxLQUFLLEVBQTJCLENBQ2pDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQ2pELDRDQUE0QyxFQUM1QyxLQUFLLEVBQStDLENBQ3JELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQzVDLGlEQUFpRCxFQUNqRCxLQUFLLEVBQStCLENBQ3JDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQ25ELHVEQUF1RCxFQUN2RCxLQUFLLEVBQW9ELENBQzFELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQ25ELHVEQUF1RCxFQUN2RCxLQUFLLEVBQXNCLENBQzVCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUNwQyxxQ0FBcUMsRUFDckMsS0FBSyxFQUFnQyxDQUN0QyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUN4QyxrQ0FBa0MsRUFDbEMsS0FBSyxFQUE4QyxDQUNwRCxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUN6QyxrQ0FBa0MsRUFDbEMsS0FBSyxFQUFrQyxDQUN4QyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsWUFBWSxDQUNoRCwwQ0FBMEMsRUFDMUMsS0FBSyxFQUEyQixDQUNqQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsWUFBWSxDQUNoRCwwQ0FBMEMsRUFDMUMsS0FBSyxFQUErQyxDQUNyRCxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUMzQyxvQ0FBb0MsRUFDcEMsS0FBSyxFQUEyQixDQUNqQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUNsRCw0Q0FBNEMsRUFDNUMsS0FBSyxFQUFxQyxDQUMzQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsWUFBWSxDQUNsRCw0Q0FBNEMsRUFDNUMsS0FBSyxFQUErQyxDQUNyRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YXZpekNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL2RhdGF2aXovZGF0YXZpei1jb25maWd1cmF0aW9uLm1vZGVsJ1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgRGF0YXNldEZlYXR1cmVDYXRhbG9nLFxuICBVc2VyRmVlZGJhY2ssXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcblxuLypcbiAgTWV0YWRhdGEgYWN0aW9uc1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZ1bGxNZXRhZGF0YSA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIGZ1bGwgbWV0YWRhdGEnLFxuICBwcm9wczx7IHV1aWQ6IHN0cmluZyB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBzZXRJbmNvbXBsZXRlTWV0YWRhdGEgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gU2V0IGluY29tcGxldGUgbWV0YWRhdGEnLFxuICBwcm9wczx7IGluY29tcGxldGU6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD4gfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgbG9hZEZ1bGxNZXRhZGF0YVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBmdWxsIG1ldGFkYXRhIHN1Y2Nlc3MnLFxuICBwcm9wczx7IGZ1bGw6IENhdGFsb2dSZWNvcmQgfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgbG9hZEZ1bGxNZXRhZGF0YUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBmdWxsIG1ldGFkYXRhIGZhaWx1cmUnLFxuICBwcm9wczx7IG90aGVyRXJyb3I/OiBzdHJpbmc7IG5vdEZvdW5kPzogYm9vbGVhbiB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBsb2FkRmVhdHVyZUNhdGFsb2cgPSBjcmVhdGVBY3Rpb24oXG4gIFwiW01ldGFkYXRhIHZpZXddIExvYWQgbWV0YWRhdGEncyBmZWF0dXJlIGNhdGFsb2dcIixcbiAgcHJvcHM8eyBtZXRhZGF0YTogQ2F0YWxvZ1JlY29yZCB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBsb2FkRmVhdHVyZUNhdGFsb2dTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIExvYWQgbWV0YWRhdGEgZmVhdHVyZSBjYXRhbG9nIHN1Y2Nlc3MnLFxuICBwcm9wczx7IGRhdGFzZXRDYXRhbG9nOiBEYXRhc2V0RmVhdHVyZUNhdGFsb2cgfCBudWxsIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRGZWF0dXJlQ2F0YWxvZ0ZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBtZXRhZGF0YSBmZWF0dXJlIGNhdGFsb2cgZmFpbHVyZScsXG4gIHByb3BzPHsgZXJyb3I/OiBzdHJpbmcgfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgY2xvc2VNZXRhZGF0YSA9IGNyZWF0ZUFjdGlvbignW01ldGFkYXRhIHZpZXddIGNsb3NlJylcblxuLypcbiAgUmVsYXRlZCBhY3Rpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRSZWxhdGVkID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIFNldCByZWxhdGVkIHJlY29yZHMnLFxuICBwcm9wczx7IHJlbGF0ZWQ6IENhdGFsb2dSZWNvcmRbXSB9PigpXG4pXG5cbi8qXG4gIENoYXJ0Q29uZmlnIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldENoYXJ0Q29uZmlnID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIFNldCBjaGFydCBjb25maWcnLFxuICBwcm9wczx7IGNoYXJ0Q29uZmlnOiBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0+KClcbilcblxuLypcbiAgVXNlciBGZWVkYmFja3MgYWN0aW9uc1xuICovXG5leHBvcnQgY29uc3QgYWRkVXNlckZlZWRiYWNrID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIEFkZCBVc2VyRmVlZGJhY2snLFxuICBwcm9wczx7IHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXJGZWVkYmFja1N1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gQWRkIFVzZXJGZWVkYmFjayBTdWNjZXNzJyxcbiAgcHJvcHM8eyBkYXRhc2V0VXVpZDogc3RyaW5nIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXJGZWVkYmFja0ZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gQWRkIFVzZXJGZWVkYmFjayBGYWlsdXJlJyxcbiAgcHJvcHM8eyBvdGhlckVycm9yPzogc3RyaW5nOyBub3RGb3VuZD86IGJvb2xlYW4gfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgbG9hZFVzZXJGZWVkYmFja3MgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBVc2VyRmVlZGJhY2tzJyxcbiAgcHJvcHM8eyBkYXRhc2V0VXVpZDogc3RyaW5nIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRVc2VyRmVlZGJhY2tzU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIFVzZXJGZWVkYmFja3MgU3VjY2VzcycsXG4gIHByb3BzPHsgdXNlckZlZWRiYWNrczogVXNlckZlZWRiYWNrW10gfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgbG9hZFVzZXJGZWVkYmFja3NGYWlsdXJlID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIExvYWQgVXNlckZlZWRiYWNrcyBGYWlsdXJlJyxcbiAgcHJvcHM8eyBvdGhlckVycm9yPzogc3RyaW5nOyBub3RGb3VuZD86IGJvb2xlYW4gfT4oKVxuKVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvc3RhdGUvbWR2aWV3LmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFPakQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQzFDLG9DQUFvQyxFQUNwQyxLQUFLLEVBQW9CLENBQzFCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxZQUFZLENBQy9DLHlDQUF5QyxFQUN6QyxLQUFLLEVBQTBDLENBQ2hELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQ2pELDRDQUE0QyxFQUM1QyxLQUFLLEVBQTJCLENBQ2pDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxZQUFZLENBQ2pELDRDQUE0QyxFQUM1QyxLQUFLLEVBQStDLENBQ3JELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQzVDLGlEQUFpRCxFQUNqRCxLQUFLLEVBQStCLENBQ3JDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQ25ELHVEQUF1RCxFQUN2RCxLQUFLLEVBQW9ELENBQzFELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQ25ELHVEQUF1RCxFQUN2RCxLQUFLLEVBQXNCLENBQzVCLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLHVCQUF1QixDQUFDLENBQUE7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUNwQyxxQ0FBcUMsRUFDckMsS0FBSyxFQUFnQyxDQUN0QyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FDcEMsNkJBQTZCLEVBQzdCLEtBQUssRUFBZ0MsQ0FDdEMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQ3JDLGlDQUFpQyxFQUNqQyxLQUFLLEVBQWlDLENBQ3ZDLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQ3hDLGtDQUFrQyxFQUNsQyxLQUFLLEVBQThDLENBQ3BELENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQ3pDLGtDQUFrQyxFQUNsQyxLQUFLLEVBQWtDLENBQ3hDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxZQUFZLENBQ2hELDBDQUEwQyxFQUMxQyxLQUFLLEVBQTJCLENBQ2pDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxZQUFZLENBQ2hELDBDQUEwQyxFQUMxQyxLQUFLLEVBQStDLENBQ3JELENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQzNDLG9DQUFvQyxFQUNwQyxLQUFLLEVBQTJCLENBQ2pDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQ2xELDRDQUE0QyxFQUM1QyxLQUFLLEVBQXFDLENBQzNDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQ2xELDRDQUE0QyxFQUM1QyxLQUFLLEVBQStDLENBQ3JELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBEYXRhc2V0RmVhdHVyZUNhdGFsb2csXG4gIFVzZXJGZWVkYmFjayxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG4vKlxuICBNZXRhZGF0YSBhY3Rpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRnVsbE1ldGFkYXRhID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIExvYWQgZnVsbCBtZXRhZGF0YScsXG4gIHByb3BzPHsgdXVpZDogc3RyaW5nIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IHNldEluY29tcGxldGVNZXRhZGF0YSA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBTZXQgaW5jb21wbGV0ZSBtZXRhZGF0YScsXG4gIHByb3BzPHsgaW5jb21wbGV0ZTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPiB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBsb2FkRnVsbE1ldGFkYXRhU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIGZ1bGwgbWV0YWRhdGEgc3VjY2VzcycsXG4gIHByb3BzPHsgZnVsbDogQ2F0YWxvZ1JlY29yZCB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBsb2FkRnVsbE1ldGFkYXRhRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIGZ1bGwgbWV0YWRhdGEgZmFpbHVyZScsXG4gIHByb3BzPHsgb3RoZXJFcnJvcj86IHN0cmluZzsgbm90Rm91bmQ/OiBib29sZWFuIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRGZWF0dXJlQ2F0YWxvZyA9IGNyZWF0ZUFjdGlvbihcbiAgXCJbTWV0YWRhdGEgdmlld10gTG9hZCBtZXRhZGF0YSdzIGZlYXR1cmUgY2F0YWxvZ1wiLFxuICBwcm9wczx7IG1ldGFkYXRhOiBDYXRhbG9nUmVjb3JkIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRGZWF0dXJlQ2F0YWxvZ1N1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBtZXRhZGF0YSBmZWF0dXJlIGNhdGFsb2cgc3VjY2VzcycsXG4gIHByb3BzPHsgZGF0YXNldENhdGFsb2c6IERhdGFzZXRGZWF0dXJlQ2F0YWxvZyB8IG51bGwgfT4oKVxuKVxuXG5leHBvcnQgY29uc3QgbG9hZEZlYXR1cmVDYXRhbG9nRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIG1ldGFkYXRhIGZlYXR1cmUgY2F0YWxvZyBmYWlsdXJlJyxcbiAgcHJvcHM8eyBlcnJvcj86IHN0cmluZyB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBjbG9zZU1ldGFkYXRhID0gY3JlYXRlQWN0aW9uKCdbTWV0YWRhdGEgdmlld10gY2xvc2UnKVxuXG4vKlxuICBSZWxhdGVkIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFJlbGF0ZWQgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gU2V0IHJlbGF0ZWQgcmVjb3JkcycsXG4gIHByb3BzPHsgcmVsYXRlZDogQ2F0YWxvZ1JlY29yZFtdIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IHNldFNvdXJjZXMgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gU2V0IHNvdXJjZXMnLFxuICBwcm9wczx7IHNvdXJjZXM6IENhdGFsb2dSZWNvcmRbXSB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBzZXRTb3VyY2VPZiA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBTZXQgaGFzIHNvdXJjZXMnLFxuICBwcm9wczx7IHNvdXJjZU9mOiBDYXRhbG9nUmVjb3JkW10gfT4oKVxuKVxuXG4vKlxuICBDaGFydENvbmZpZyBhY3Rpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRDaGFydENvbmZpZyA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBTZXQgY2hhcnQgY29uZmlnJyxcbiAgcHJvcHM8eyBjaGFydENvbmZpZzogRGF0YXZpekNvbmZpZ3VyYXRpb25Nb2RlbCB9PigpXG4pXG5cbi8qXG4gIFVzZXIgRmVlZGJhY2tzIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFVzZXJGZWVkYmFjayA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBBZGQgVXNlckZlZWRiYWNrJyxcbiAgcHJvcHM8eyB1c2VyRmVlZGJhY2s6IFVzZXJGZWVkYmFjayB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBhZGRVc2VyRmVlZGJhY2tTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIEFkZCBVc2VyRmVlZGJhY2sgU3VjY2VzcycsXG4gIHByb3BzPHsgZGF0YXNldFV1aWQ6IHN0cmluZyB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBhZGRVc2VyRmVlZGJhY2tGYWlsdXJlID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIEFkZCBVc2VyRmVlZGJhY2sgRmFpbHVyZScsXG4gIHByb3BzPHsgb3RoZXJFcnJvcj86IHN0cmluZzsgbm90Rm91bmQ/OiBib29sZWFuIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRVc2VyRmVlZGJhY2tzID0gY3JlYXRlQWN0aW9uKFxuICAnW01ldGFkYXRhIHZpZXddIExvYWQgVXNlckZlZWRiYWNrcycsXG4gIHByb3BzPHsgZGF0YXNldFV1aWQ6IHN0cmluZyB9PigpXG4pXG5cbmV4cG9ydCBjb25zdCBsb2FkVXNlckZlZWRiYWNrc1N1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXG4gICdbTWV0YWRhdGEgdmlld10gTG9hZCBVc2VyRmVlZGJhY2tzIFN1Y2Nlc3MnLFxuICBwcm9wczx7IHVzZXJGZWVkYmFja3M6IFVzZXJGZWVkYmFja1tdIH0+KClcbilcblxuZXhwb3J0IGNvbnN0IGxvYWRVc2VyRmVlZGJhY2tzRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihcbiAgJ1tNZXRhZGF0YSB2aWV3XSBMb2FkIFVzZXJGZWVkYmFja3MgRmFpbHVyZScsXG4gIHByb3BzPHsgb3RoZXJFcnJvcj86IHN0cmluZzsgbm90Rm91bmQ/OiBib29sZWFuIH0+KClcbilcbiJdfQ==
@@ -37,6 +37,12 @@ export class MdViewEffects {
37
37
  this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(MdViewActions.loadFullMetadataSuccess), switchMap(({ full }) => this.recordsRepository.getSimilarRecords(full)), map((related) => {
38
38
  return MdViewActions.setRelated({ related });
39
39
  }), catchError((error) => of(MdViewActions.setRelated({ related: null })))));
40
+ this.loadSources$ = createEffect(() => this.actions$.pipe(ofType(MdViewActions.loadFullMetadataSuccess), switchMap(({ full }) => this.recordsRepository.getSources(full)), map((sources) => {
41
+ return MdViewActions.setSources({ sources });
42
+ }), catchError(() => of(MdViewActions.setSources({ sources: null })))));
43
+ this.loadSourceOf$ = createEffect(() => this.actions$.pipe(ofType(MdViewActions.loadFullMetadataSuccess), switchMap(({ full }) => this.recordsRepository.getSourceOf(full)), map((sourceOf) => {
44
+ return MdViewActions.setSourceOf({ sourceOf });
45
+ }), catchError(() => of(MdViewActions.setSourceOf({ sourceOf: null })))));
40
46
  /*
41
47
  UserFeedback effects
42
48
  */
@@ -62,4 +68,4 @@ export class MdViewEffects {
62
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
63
69
  type: Injectable
64
70
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.RecordsRepositoryInterface }, { type: i3.PlatformServiceInterface }, { type: i4.Router }] });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvc3RhdGUvbWR2aWV3LmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuRSxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNGQUFzRixDQUFBO0FBQ2pJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlFQUF5RSxDQUFBO0FBQ2xILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7O0FBRXhDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsUUFBaUIsRUFDakIsaUJBQTZDLEVBQzdDLHdCQUFrRCxFQUNsRCxNQUFjO1FBSGQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTRCO1FBQzdDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUd4Qjs7VUFFRTtRQUNGLHNCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFDdEMsU0FBUyxD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QyxZQUFZLENBQUMsWUFBWTtTQUM5QyxDQUFDLENBQ0gsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FDUCxhQUFhLENBQUMsc0JBQXNCLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTzthQUMxQixDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQ0osQ0FDRixDQUNGLENBQUE7SUF4SEUsQ0FBQzsrR0FOTyxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cydcbmltcG9ydCB7IGV4aGF1c3RNYXAsIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdBY3Rpb25zIGZyb20gJy4vbWR2aWV3LmFjdGlvbnMnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1kVmlld0VmZmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgcmVjb3Jkc1JlcG9zaXRvcnk6IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLypcbiAgICBNZXRhZGF0YSBlZmZlY3RzXG4gICovXG4gIGxvYWRGdWxsTWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YSksXG4gICAgICBzd2l0Y2hNYXAoKHsgdXVpZCB9KSA9PiB0aGlzLnJlY29yZHNSZXBvc2l0b3J5LmdldFJlY29yZCh1dWlkKSksXG4gICAgICBtYXAoKHJlY29yZCkgPT4ge1xuICAgICAgICBpZiAocmVjb3JkID09PSBudWxsIHx8ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMocmVjb3JkLmtpbmQpKSB7XG4gICAgICAgICAgcmV0dXJuIE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YUZhaWx1cmUoeyBub3RGb3VuZDogdHJ1ZSB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFTdWNjZXNzKHsgZnVsbDogcmVjb3JkIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICBvZihNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFGYWlsdXJlKHsgb3RoZXJFcnJvcjogZXJyb3IubWVzc2FnZSB9KSlcbiAgICAgIClcbiAgICApXG4gIClcblxuICBsb2FkRmVhdHVyZUNhdGFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YVN1Y2Nlc3MpLFxuICAgICAgZmlsdGVyKCh7IGZ1bGwgfSkgPT4gZnVsbCAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBmdWxsIH0pID0+IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuZ2V0RmVhdHVyZUNhdGFsb2coZnVsbCkpLFxuICAgICAgbWFwKChmZWF0dXJlQ2F0YWxvZykgPT5cbiAgICAgICAgTWRWaWV3QWN0aW9ucy5sb2FkRmVhdHVyZUNhdGFsb2dTdWNjZXNzKHtcbiAgICAgICAgICBkYXRhc2V0Q2F0YWxvZzogZmVhdHVyZUNhdGFsb2csXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgIG9mKFxuICAgICAgICAgIE1kVmlld0FjdGlvbnMubG9hZEZlYXR1cmVDYXRhbG9nRmFpbHVyZSh7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG5cbiAgLypcbiAgICBSZWxhdGVkIGVmZmVjdHNcbiAgKi9cbiAgbG9hZFJlbGF0ZWRSZWNvcmRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBmdWxsIH0pID0+IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuZ2V0U2ltaWxhclJlY29yZHMoZnVsbCkpLFxuICAgICAgbWFwKChyZWxhdGVkKSA9PiB7XG4gICAgICAgIHJldHVybiBNZFZpZXdBY3Rpb25zLnNldFJlbGF0ZWQoeyByZWxhdGVkIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBvZihNZFZpZXdBY3Rpb25zLnNldFJlbGF0ZWQoeyByZWxhdGVkOiBudWxsIH0pKSlcbiAgICApXG4gIClcblxuICAvKlxuICAgIFVzZXJGZWVkYmFjayBlZmZlY3RzXG4gICovXG4gIGxvYWRVc2VyRmVlZGJhY2tzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzKSxcbiAgICAgIGV4aGF1c3RNYXAoKHsgZGF0YXNldFV1aWQgfSkgPT5cbiAgICAgICAgdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlckZlZWRiYWNrcyhkYXRhc2V0VXVpZCkucGlwZShcbiAgICAgICAgICBtYXAoKHVzZXJGZWVkYmFja3MpID0+XG4gICAgICAgICAgICBNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzU3VjY2Vzcyh7IHVzZXJGZWVkYmFja3MgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgICAgb2YoXG4gICAgICAgICAgICAgIE1kVmlld0FjdGlvbnMubG9hZFVzZXJGZWVkYmFja3NGYWlsdXJlKHtcbiAgICAgICAgICAgICAgICBvdGhlckVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIHJlbG9hZFVzZXJGZWVkYmFja3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrU3VjY2VzcyksXG4gICAgICBleGhhdXN0TWFwKCh7IGRhdGFzZXRVdWlkIH0pID0+XG4gICAgICAgIHRoaXMucGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLmdldFVzZXJGZWVkYmFja3MoZGF0YXNldFV1aWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCh1c2VyRmVlZGJhY2tzKSA9PlxuICAgICAgICAgICAgTWRWaWV3QWN0aW9ucy5sb2FkVXNlckZlZWRiYWNrc1N1Y2Nlc3MoeyB1c2VyRmVlZGJhY2tzIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT5cbiAgICAgICAgICAgIG9mKFxuICAgICAgICAgICAgICBNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgb3RoZXJFcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcblxuICBhZGRVc2VyRmVlZGJhY2skID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMucGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlXG4gICAgICAgICAgLnBvc3RVc2VyRmVlZGJhY2tzKGFjdGlvbi51c2VyRmVlZGJhY2spXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT5cbiAgICAgICAgICAgICAgTWRWaWV3QWN0aW9ucy5hZGRVc2VyRmVlZGJhY2tTdWNjZXNzKHtcbiAgICAgICAgICAgICAgICBkYXRhc2V0VXVpZDogYWN0aW9uLnVzZXJGZWVkYmFjay5tZXRhZGF0YVVVSUQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICAgIE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgICBvdGhlckVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWR2aWV3LmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvcmVjb3JkL3NyYy9saWIvc3RhdGUvbWR2aWV3LmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuRSxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNGQUFzRixDQUFBO0FBQ2pJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlFQUF5RSxDQUFBO0FBQ2xILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7O0FBRXhDLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsUUFBaUIsRUFDakIsaUJBQTZDLEVBQzdDLHdCQUFrRCxFQUNsRCxNQUFjO1FBSGQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTRCO1FBQzdDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUd4Qjs7VUFFRTtRQUNGLHNCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFDdEMsU0FBUyxD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Q0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FDUCxhQUFhLENBQUMsc0JBQXNCLENBQUM7Z0JBQ25DLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTzthQUMxQixDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQ0osQ0FDRixDQUNGLENBQUE7SUE5SUUsQ0FBQzsrR0FOTyxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cydcbmltcG9ydCB7IGV4aGF1c3RNYXAsIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgKiBhcyBNZFZpZXdBY3Rpb25zIGZyb20gJy4vbWR2aWV3LmFjdGlvbnMnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1kVmlld0VmZmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgcmVjb3Jkc1JlcG9zaXRvcnk6IFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLypcbiAgICBNZXRhZGF0YSBlZmZlY3RzXG4gICovXG4gIGxvYWRGdWxsTWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YSksXG4gICAgICBzd2l0Y2hNYXAoKHsgdXVpZCB9KSA9PiB0aGlzLnJlY29yZHNSZXBvc2l0b3J5LmdldFJlY29yZCh1dWlkKSksXG4gICAgICBtYXAoKHJlY29yZCkgPT4ge1xuICAgICAgICBpZiAocmVjb3JkID09PSBudWxsIHx8ICF0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMocmVjb3JkLmtpbmQpKSB7XG4gICAgICAgICAgcmV0dXJuIE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YUZhaWx1cmUoeyBub3RGb3VuZDogdHJ1ZSB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFTdWNjZXNzKHsgZnVsbDogcmVjb3JkIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICBvZihNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFGYWlsdXJlKHsgb3RoZXJFcnJvcjogZXJyb3IubWVzc2FnZSB9KSlcbiAgICAgIClcbiAgICApXG4gIClcblxuICBsb2FkRmVhdHVyZUNhdGFsb2ckID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMubG9hZEZ1bGxNZXRhZGF0YVN1Y2Nlc3MpLFxuICAgICAgZmlsdGVyKCh7IGZ1bGwgfSkgPT4gZnVsbCAhPT0gdW5kZWZpbmVkKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBmdWxsIH0pID0+IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuZ2V0RmVhdHVyZUNhdGFsb2coZnVsbCkpLFxuICAgICAgbWFwKChmZWF0dXJlQ2F0YWxvZykgPT5cbiAgICAgICAgTWRWaWV3QWN0aW9ucy5sb2FkRmVhdHVyZUNhdGFsb2dTdWNjZXNzKHtcbiAgICAgICAgICBkYXRhc2V0Q2F0YWxvZzogZmVhdHVyZUNhdGFsb2csXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgIG9mKFxuICAgICAgICAgIE1kVmlld0FjdGlvbnMubG9hZEZlYXR1cmVDYXRhbG9nRmFpbHVyZSh7XG4gICAgICAgICAgICBlcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG5cbiAgLypcbiAgICBSZWxhdGVkIGVmZmVjdHNcbiAgKi9cbiAgbG9hZFJlbGF0ZWRSZWNvcmRzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBmdWxsIH0pID0+IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuZ2V0U2ltaWxhclJlY29yZHMoZnVsbCkpLFxuICAgICAgbWFwKChyZWxhdGVkKSA9PiB7XG4gICAgICAgIHJldHVybiBNZFZpZXdBY3Rpb25zLnNldFJlbGF0ZWQoeyByZWxhdGVkIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBvZihNZFZpZXdBY3Rpb25zLnNldFJlbGF0ZWQoeyByZWxhdGVkOiBudWxsIH0pKSlcbiAgICApXG4gIClcblxuICBsb2FkU291cmNlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoTWRWaWV3QWN0aW9ucy5sb2FkRnVsbE1ldGFkYXRhU3VjY2VzcyksXG4gICAgICBzd2l0Y2hNYXAoKHsgZnVsbCB9KSA9PiB0aGlzLnJlY29yZHNSZXBvc2l0b3J5LmdldFNvdXJjZXMoZnVsbCkpLFxuICAgICAgbWFwKChzb3VyY2VzKSA9PiB7XG4gICAgICAgIHJldHVybiBNZFZpZXdBY3Rpb25zLnNldFNvdXJjZXMoeyBzb3VyY2VzIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoTWRWaWV3QWN0aW9ucy5zZXRTb3VyY2VzKHsgc291cmNlczogbnVsbCB9KSkpXG4gICAgKVxuICApXG5cbiAgbG9hZFNvdXJjZU9mJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZFZpZXdBY3Rpb25zLmxvYWRGdWxsTWV0YWRhdGFTdWNjZXNzKSxcbiAgICAgIHN3aXRjaE1hcCgoeyBmdWxsIH0pID0+IHRoaXMucmVjb3Jkc1JlcG9zaXRvcnkuZ2V0U291cmNlT2YoZnVsbCkpLFxuICAgICAgbWFwKChzb3VyY2VPZikgPT4ge1xuICAgICAgICByZXR1cm4gTWRWaWV3QWN0aW9ucy5zZXRTb3VyY2VPZih7IHNvdXJjZU9mIH0pXG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoTWRWaWV3QWN0aW9ucy5zZXRTb3VyY2VPZih7IHNvdXJjZU9mOiBudWxsIH0pKSlcbiAgICApXG4gIClcblxuICAvKlxuICAgIFVzZXJGZWVkYmFjayBlZmZlY3RzXG4gICovXG4gIGxvYWRVc2VyRmVlZGJhY2tzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzKSxcbiAgICAgIGV4aGF1c3RNYXAoKHsgZGF0YXNldFV1aWQgfSkgPT5cbiAgICAgICAgdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlckZlZWRiYWNrcyhkYXRhc2V0VXVpZCkucGlwZShcbiAgICAgICAgICBtYXAoKHVzZXJGZWVkYmFja3MpID0+XG4gICAgICAgICAgICBNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzU3VjY2Vzcyh7IHVzZXJGZWVkYmFja3MgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgICAgb2YoXG4gICAgICAgICAgICAgIE1kVmlld0FjdGlvbnMubG9hZFVzZXJGZWVkYmFja3NGYWlsdXJlKHtcbiAgICAgICAgICAgICAgICBvdGhlckVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxuXG4gIHJlbG9hZFVzZXJGZWVkYmFja3MkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrU3VjY2VzcyksXG4gICAgICBleGhhdXN0TWFwKCh7IGRhdGFzZXRVdWlkIH0pID0+XG4gICAgICAgIHRoaXMucGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLmdldFVzZXJGZWVkYmFja3MoZGF0YXNldFV1aWQpLnBpcGUoXG4gICAgICAgICAgbWFwKCh1c2VyRmVlZGJhY2tzKSA9PlxuICAgICAgICAgICAgTWRWaWV3QWN0aW9ucy5sb2FkVXNlckZlZWRiYWNrc1N1Y2Nlc3MoeyB1c2VyRmVlZGJhY2tzIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT5cbiAgICAgICAgICAgIG9mKFxuICAgICAgICAgICAgICBNZFZpZXdBY3Rpb25zLmxvYWRVc2VyRmVlZGJhY2tzRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgb3RoZXJFcnJvcjogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcblxuICBhZGRVc2VyRmVlZGJhY2skID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMucGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlXG4gICAgICAgICAgLnBvc3RVc2VyRmVlZGJhY2tzKGFjdGlvbi51c2VyRmVlZGJhY2spXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKCkgPT5cbiAgICAgICAgICAgICAgTWRWaWV3QWN0aW9ucy5hZGRVc2VyRmVlZGJhY2tTdWNjZXNzKHtcbiAgICAgICAgICAgICAgICBkYXRhc2V0VXVpZDogYWN0aW9uLnVzZXJGZWVkYmFjay5tZXRhZGF0YVVVSUQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgICAgIE1kVmlld0FjdGlvbnMuYWRkVXNlckZlZWRiYWNrRmFpbHVyZSh7XG4gICAgICAgICAgICAgICAgICBvdGhlckVycm9yOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuIl19