geonetwork-ui 2.6.0-dev.6681b0ab3 → 2.6.0-dev.6e0b3d33d

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 (235) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/common/distribution.mapper.mjs +3 -1
  2. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +40 -4
  3. package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
  5. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
  8. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
  9. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +3 -3
  10. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +77 -17
  11. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -1
  12. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  13. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  14. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  15. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
  16. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +266 -11
  17. package/esm2022/libs/feature/record/src/index.mjs +2 -3
  18. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +31 -5
  19. package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +3 -1
  20. package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
  21. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +7 -13
  22. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
  23. package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
  24. package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
  25. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -2
  26. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  27. package/esm2022/libs/ui/elements/src/index.mjs +2 -1
  28. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
  29. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +42 -83
  30. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
  31. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +22 -5
  32. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
  33. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +50 -29
  34. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
  35. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +12 -4
  36. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +14 -4
  37. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
  38. package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
  39. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  40. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  41. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +20 -10
  42. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +15 -49
  43. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +2 -2
  44. package/esm2022/libs/ui/search/src/index.mjs +2 -1
  45. package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
  46. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  47. package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
  48. package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
  49. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +21 -12
  50. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +39 -18
  51. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +10 -4
  52. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
  53. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
  54. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
  55. package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
  56. package/esm2022/translations/de.json +39 -12
  57. package/esm2022/translations/en.json +36 -11
  58. package/esm2022/translations/es.json +38 -11
  59. package/esm2022/translations/fr.json +36 -11
  60. package/esm2022/translations/it.json +71 -44
  61. package/esm2022/translations/nl.json +38 -11
  62. package/esm2022/translations/pt.json +38 -11
  63. package/fesm2022/geonetwork-ui.mjs +2354 -1454
  64. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  65. package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
  66. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  67. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts +0 -1
  68. package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
  69. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
  70. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  71. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  72. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  73. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  74. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  75. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +1 -1
  76. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  77. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -2
  78. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  79. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
  80. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  81. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  82. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  83. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +21 -18
  84. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  85. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +6 -0
  86. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  87. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
  88. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  89. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
  90. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  91. package/libs/feature/record/src/index.d.ts +1 -2
  92. package/libs/feature/record/src/index.d.ts.map +1 -1
  93. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  94. package/libs/feature/record/src/lib/state/mdview.actions.d.ts +10 -0
  95. package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
  96. package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
  97. package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
  98. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +24 -21
  99. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  100. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
  101. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  102. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
  103. package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
  104. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  105. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
  106. package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
  107. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  108. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  109. package/libs/ui/elements/src/index.d.ts +1 -0
  110. package/libs/ui/elements/src/index.d.ts.map +1 -1
  111. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
  112. package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
  113. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +6 -13
  114. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  115. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  116. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  117. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +3 -1
  118. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  119. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +20 -9
  120. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  121. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
  122. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
  123. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
  124. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  125. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +3 -1
  126. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  127. package/libs/ui/layout/src/index.d.ts +1 -0
  128. package/libs/ui/layout/src/index.d.ts.map +1 -1
  129. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  130. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  131. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  132. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  133. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +5 -10
  134. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  135. package/libs/ui/search/src/index.d.ts +1 -0
  136. package/libs/ui/search/src/index.d.ts.map +1 -1
  137. package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
  138. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
  139. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  140. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
  141. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  142. package/libs/ui/search/src/lib/ui-search.module.d.ts +2 -1
  143. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  144. package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
  145. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  146. package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
  147. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  148. package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
  149. package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
  150. package/package.json +1 -1
  151. package/src/libs/api/metadata-converter/src/lib/common/distribution.mapper.ts +1 -0
  152. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
  153. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +62 -4
  154. package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
  155. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
  156. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
  157. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +8 -4
  158. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -1
  159. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
  160. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +2 -2
  161. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +116 -17
  162. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +11 -0
  163. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  164. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +22 -14
  165. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +6 -0
  166. package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
  167. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
  168. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +64 -1
  169. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
  170. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
  171. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +316 -6
  172. package/src/libs/feature/record/src/index.ts +1 -2
  173. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +35 -4
  174. package/src/libs/feature/record/src/lib/state/mdview.actions.ts +10 -0
  175. package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
  176. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +15 -15
  177. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
  178. package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
  179. package/src/libs/feature/search/src/lib/constants.ts +1 -0
  180. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
  181. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  182. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  183. package/src/libs/ui/elements/src/index.ts +1 -0
  184. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
  185. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
  186. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
  187. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +68 -141
  188. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +38 -97
  189. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  190. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  191. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +7 -5
  192. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +21 -2
  193. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -1
  194. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
  195. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +60 -29
  196. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
  197. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
  198. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +15 -1
  199. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +9 -1
  200. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -0
  201. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
  202. package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +1 -2
  203. package/src/libs/ui/layout/src/index.ts +1 -0
  204. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  205. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  206. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
  207. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -6
  208. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -42
  209. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +10 -49
  210. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -1
  211. package/src/libs/ui/search/src/index.ts +1 -0
  212. package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
  213. package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -0
  214. package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
  215. package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -1
  216. package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
  217. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
  218. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +15 -11
  219. package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
  220. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
  221. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +33 -15
  222. package/src/libs/ui/search/src/lib/ui-search.module.ts +3 -0
  223. package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
  224. package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
  225. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
  226. package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
  227. package/tailwind.base.css +1 -1
  228. package/translations/de.json +39 -12
  229. package/translations/en.json +36 -11
  230. package/translations/es.json +38 -11
  231. package/translations/fr.json +36 -11
  232. package/translations/it.json +71 -44
  233. package/translations/nl.json +38 -11
  234. package/translations/pt.json +38 -11
  235. package/translations/sk.json +38 -11
@@ -38,6 +38,9 @@ export class Gn4PlatformService {
38
38
  throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
39
39
  }
40
40
  }), shareReplay(1));
41
+ this.allowEditHarvestedMd$ = this.settings$.pipe(map((info) => {
42
+ return info['system/harvester/enableEditing'];
43
+ }), shareReplay(1));
41
44
  /**
42
45
  * A map of already loaded thesauri (groups of keywords); the key is a URI
43
46
  * @private
@@ -58,6 +61,9 @@ export class Gn4PlatformService {
58
61
  getApiVersion() {
59
62
  return this.apiVersion$;
60
63
  }
64
+ getAllowEditHarvestedMd() {
65
+ return this.allowEditHarvestedMd$;
66
+ }
61
67
  getMe() {
62
68
  return this.me$;
63
69
  }
@@ -204,4 +210,4 @@ export class Gn4PlatformService {
204
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4PlatformService, decorators: [{
205
211
  type: Injectable
206
212
  }], ctorParameters: () => [{ type: i1.SiteApiService }, { type: i1.MeApiService }, { type: i1.UsersApiService }, { type: i2.Gn4PlatformMapper }, { type: i1.ToolsApiService }, { type: i1.RegistriesApiService }, { type: i3.LangService }, { type: i1.UserfeedbackApiService }, { type: i4.HttpClient }, { type: i1.RecordsApiService }] });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQVl0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBTWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQy9FLE9BQU8sRUFDTCxhQUFhLEVBQ2IsUUFBUSxFQUVSLEVBQUUsRUFDRixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFBOzs7Ozs7QUFFYixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUE7QUFHN0IsTUFBTSxPQUFPLGtCQUFrQjtJQXVDN0IsWUFDVSxjQUE4QixFQUM5QixLQUFtQixFQUNuQixRQUF5QixFQUN6QixNQUF5QixFQUN6QixlQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsV0FBd0IsRUFDeEIs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QUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzs0QkFDaEQsQ0FBQyxDQUFDLENBQUM7cUJBQ1MsQ0FBQTtnQkFDbEIsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUMxQyxPQUFPO3dCQUNMLElBQUksRUFBRSxTQUFTO3dCQUNmLFVBQVUsRUFBRTs0QkFDVixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7NEJBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVE7eUJBQzlCO3dCQUNELFNBQVM7cUJBQ0ssQ0FBQTtnQkFDbEIsQ0FBQztnQkFDRCxPQUFPLFNBQVMsQ0FBQTtZQUNsQixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDM0IsQ0FBQTtRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sVUFBVSxDQUNmLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDdkQsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDOytHQTVWVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzaGFyZVJlcGxheSxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7XG4gIE1lQXBpU2VydmljZSxcbiAgUmVjb3Jkc0FwaVNlcnZpY2UsXG4gIFJlZ2lzdHJpZXNBcGlTZXJ2aWNlLFxuICBTaXRlQXBpU2VydmljZSxcbiAgVG9vbHNBcGlTZXJ2aWNlLFxuICBVc2VyZmVlZGJhY2tBcGlTZXJ2aWNlLFxuICBVc2Vyc0FwaVNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3MvZ240L3NyYydcbmltcG9ydCB7XG4gIFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgVXBsb2FkRXZlbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdXNlci91c2VyLm1vZGVsJ1xuaW1wb3J0IHtcbiAgQ2F0YWxvZ1JlY29yZCxcbiAgS2V5d29yZCxcbiAgT3JnYW5pemF0aW9uLFxuICBVc2VyRmVlZGJhY2ssXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IEduNFBsYXRmb3JtTWFwcGVyIH0gZnJvbSAnLi9nbjQtcGxhdGZvcm0ubWFwcGVyJ1xuaW1wb3J0IHsgbHRyIH0gZnJvbSAnc2VtdmVyJ1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQge1xuICBLZXl3b3JkQXBpUmVzcG9uc2UsXG4gIFRoZXNhdXJ1c0FwaVJlc3BvbnNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC90aGVzYXVydXMnXG5pbXBvcnQgeyBub0R1cGxpY2F0ZUZpbGVOYW1lIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmb3JrSm9pbixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcydcblxuY29uc3QgbWluQXBpVmVyc2lvbiA9ICc0LjIuMidcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEduNFBsYXRmb3JtU2VydmljZSBpbXBsZW1lbnRzIFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHlwZSA9ICdHZW9OZXR3b3JrJ1xuICBwcml2YXRlIHJlYWRvbmx5IG1lJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPlxuICBwcml2YXRlIHJlYWRvbmx5IGlzVXNlckFub255bW91cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cblxuICBwcml2YXRlIGtleVRyYW5zbGF0aW9ucyQgPSB0aGlzLnRvb2xzQXBpU2VydmljZVxuICAgIC5nZXRUcmFuc2xhdGlvbnNQYWNrYWdlMSgnZ251aScpXG4gICAgLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciB3aGlsZSBsb2FkaW5nIGdudWkgbGFuZ3VhZ2UgcGFja2FnZScpXG4gICAgICAgIHJldHVybiBvZih7fSlcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgcHJpdmF0ZSBzZXR0aW5ncyQgPSBvZih0cnVlKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnNpdGVBcGlTZXJ2aWNlLmdldFNpdGVPclBvcnRhbERlc2NyaXB0aW9uKCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVZlcnNpb24kID0gdGhpcy5zZXR0aW5ncyQucGlwZShcbiAgICBtYXAoKGluZm8pID0+IGluZm9bJ3N5c3RlbS9wbGF0Zm9ybS92ZXJzaW9uJ10gYXMgc3RyaW5nKSxcbiAgICB0YXAoKHZlcnNpb24pID0+IHtcbiAgICAgIGlmIChsdHIodmVyc2lvbiwgbWluQXBpVmVyc2lvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBHbjQgQVBJIHZlcnNpb24gaXMgbm90IGNvbXBhdGlibGUuXFxuTWluaW11bTogJHttaW5BcGlWZXJzaW9ufVxcbllvdXIgdmVyc2lvbjogJHt2ZXJzaW9ufWBcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICAvKipcbiAgICogQSBtYXAgb2YgYWxyZWFkeSBsb2FkZWQgdGhlc2F1cmkgKGdyb3VwcyBvZiBrZXl3b3Jkcyk7IHRoZSBrZXkgaXMgYSBVUklcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUga2V5d29yZHNCeVRoZXNhdXJpOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPEtleXdvcmRbXT4+ID0ge31cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNpdGVBcGlTZXJ2aWNlOiBTaXRlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG1lQXBpOiBNZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2Vyc0FwaTogVXNlcnNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWFwcGVyOiBHbjRQbGF0Zm9ybU1hcHBlcixcbiAgICBwcml2YXRlIHRvb2xzQXBpU2VydmljZTogVG9vbHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0cmllc0FwaVNlcnZpY2U6IFJlZ2lzdHJpZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcmZlZWRiYWNrQXBpU2VydmljZTogVXNlcmZlZWRiYWNrQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWNvcmRzQXBpU2VydmljZTogUmVjb3Jkc0FwaVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5tZSQgPSB0aGlzLm1lQXBpLmdldE1lKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoYXBpVXNlcikgPT4gdGhpcy5tYXBwZXIudXNlckZyb21NZUFwaShhcGlVc2VyKSksXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgdGhpcy5pc1VzZXJBbm9ueW1vdXMkID0gdGhpcy5tZSQucGlwZShcbiAgICAgIG1hcCgodXNlcikgPT4gIXVzZXIgfHwgISgnaWQnIGluIHVzZXIpKVxuICAgIClcblxuICAgIHRoaXMudXNlcnMkID0gdGhpcy51c2Vyc0FwaS5nZXRVc2VycygpLnBpcGUoXG4gICAgICBtYXAoKHVzZXJzKSA9PiB1c2Vycy5tYXAoKHVzZXIpID0+IHRoaXMubWFwcGVyLnVzZXJGcm9tQXBpKHVzZXIpKSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnR5cGVcbiAgfVxuXG4gIGdldEFwaVZlcnNpb24oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlWZXJzaW9uJFxuICB9XG5cbiAgZ2V0TWUoKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+IHtcbiAgICByZXR1cm4gdGhpcy5tZSRcbiAgfVxuXG4gIGlzQW5vbnltb3VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzVXNlckFub255bW91cyRcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvbnMoKTogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb25bXT4ge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldFVzZXJzQnlPcmdhbml6YXRpb24ob3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb24pOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VXNlcnMoKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJzJFxuICB9XG5cbiAgdHJhbnNsYXRlS2V5KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAvLyBpZiB0aGUga2V5IGlzIGEgVVJJLCB1c2UgdGhlIHJlZ2lzdHJpZXMgQVBJIHRvIGxvb2sgZm9yIHRoZSB0cmFuc2xhdGlvblxuICAgIGlmIChrZXkubWF0Y2goL15odHRwcz86XFwvXFwvLykpIHtcbiAgICAgIC8vIHRoZSB0aGVzYXVydXMgVVJJIGlzIGluZmVycmVkIGJ5IHJlbW92aW5nIGEgcGFydCBvZiB0aGUga2V5d29yZCBVUklcbiAgICAgIC8vIHRoaXMgaXMgbm90IGV4YWN0IHNjaWVuY2UgYnV0IGl0J3MgT0ssIHdlJ2xsIHN0aWxsIGVuZCB1cCBsb2FkaW5nIGEgYnVuY2ggb2Yga2V5d29yZHMgYXQgb25jZSBhbnl3YXlcbiAgICAgIGNvbnN0IHRoZXNhdXJ1c1VyaSA9IGtleS5yZXBsYWNlKC9cXC8oW14vXSspJC8sICcvJylcbiAgICAgIHJldHVybiB0aGlzLmdldEtleXdvcmRzQnlVcmkodGhlc2F1cnVzVXJpKS5waXBlKFxuICAgICAgICBtYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGVzYXVydXMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0ga2V5KSByZXR1cm4gaXRlbS5sYWJlbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmtleVRyYW5zbGF0aW9ucyQucGlwZShtYXAoKHRyYW5zbGF0aW9ucykgPT4gdHJhbnNsYXRpb25zW2tleV0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhbGxUaGVzYXVydXMkID0gdGhpcy5odHRwQ2xpZW50XG4gICAgLmdldChcbiAgICAgIGAke3RoaXMucmVnaXN0cmllc0FwaVNlcnZpY2UuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0vdGhlc2F1cnVzP19jb250ZW50X3R5cGU9anNvbmBcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICByZXR1cm4gdGhlc2F1cnVzWzBdIGFzIFRoZXNhdXJ1c0FwaVJlc3BvbnNlW11cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgc2VhcmNoS2V5d29yZHMoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBrZXl3b3JkVHlwZXM6IEtleXdvcmRUeXBlW11cbiAgKTogT2JzZXJ2YWJsZTxLZXl3b3JkW10+IHtcbiAgICBjb25zdCBrZXl3b3JkcyQ6IE9ic2VydmFibGU8S2V5d29yZEFwaVJlc3BvbnNlW10+ID0gdGhpcy5hbGxUaGVzYXVydXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRoZXNhdXJpID0gW11cbiAgICAgICAga2V5d29yZFR5cGVzLm1hcCgoa2V5d29yZFR5cGUpID0+IHtcbiAgICAgICAgICBzZWxlY3RlZFRoZXNhdXJpLnB1c2goXG4gICAgICAgICAgICAuLi50aGVzYXVydXMuZmlsdGVyKCh0aGVzKSA9PiB0aGVzLmRuYW1lID09PSBrZXl3b3JkVHlwZSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cmllc0FwaVNlcnZpY2Uuc2VhcmNoS2V5d29yZHMoXG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zLFxuICAgICAgICAgIDEwLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZFRoZXNhdXJpLm1hcCgodGhlcykgPT4gdGhlcy5rZXkpLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYCoke3F1ZXJ5fSpgXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxLZXl3b3JkQXBpUmVzcG9uc2VbXT5cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2tleXdvcmRzJCwgdGhpcy5hbGxUaGVzYXVydXMkXSkucGlwZShcbiAgICAgIG1hcCgoW2tleXdvcmRzLCB0aGVzYXVydXNdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcHBlci5rZXl3b3Jkc0Zyb21BcGkoXG4gICAgICAgICAga2V5d29yZHMsXG4gICAgICAgICAgdGhlc2F1cnVzLFxuICAgICAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvM1xuICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldEtleXdvcmRzQnlVcmkodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEtleXdvcmRbXT4ge1xuICAgIGlmICh0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldKSB7XG4gICAgICByZXR1cm4gdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXVxuICAgIH1cbiAgICBjb25zdCBrZXl3b3JkcyQgPSB0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlLnNlYXJjaEtleXdvcmRzKFxuICAgICAgbnVsbCxcbiAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvMyxcbiAgICAgIDEwMDAsXG4gICAgICAwLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgYCR7dXJpfSpgXG4gICAgKSBhcyBPYnNlcnZhYmxlPEtleXdvcmRBcGlSZXNwb25zZVtdPlxuXG4gICAgdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAga2V5d29yZHMkLFxuICAgICAgdGhpcy5hbGxUaGVzYXVydXMkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXl3b3JkcywgdGhlc2F1cnVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBwZXIua2V5d29yZHNGcm9tQXBpKFxuICAgICAgICAgIGtleXdvcmRzLFxuICAgICAgICAgIHRoZXNhdXJ1cyxcbiAgICAgICAgICB0aGlzLmxhbmdTZXJ2aWNlLmlzbzNcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJldHVybiB0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldXG4gIH1cblxuICBzZWFyY2hLZXl3b3Jkc0luVGhlc2F1cnVzKHF1ZXJ5OiBzdHJpbmcsIHRoZXNhdXJ1c0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxUaGVzYXVydXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHRoZXNhdXJpKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkVGhlc2F1cnVzSWQgPSB0aGVzYXVydXNJZC5yZXBsYWNlKFxuICAgICAgICAgICdnZW9uZXR3b3JrLnRoZXNhdXJ1cy4nLFxuICAgICAgICAgICcnXG4gICAgICAgIClcbiAgICAgICAgaWYgKCF0aGVzYXVyaS5maW5kKCh0aGVzKSA9PiB0aGVzLmtleSA9PT0gc3RyaXBwZWRUaGVzYXVydXNJZCkpXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyaWVzQXBpU2VydmljZVxuICAgICAgICAgIC5zZWFyY2hLZXl3b3JkcyhcbiAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zLFxuICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBbc3RyaXBwZWRUaGVzYXVydXNJZF0sXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChrZXl3b3JkczogS2V5d29yZEFwaVJlc3BvbnNlW10pID0+XG4gICAgICAgICAgICAgIHRoaXMubWFwcGVyLmtleXdvcmRzRnJvbUFwaShcbiAgICAgICAgICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgICAgICAgICB0aGVzYXVyaSxcbiAgICAgICAgICAgICAgICB0aGlzLmxhbmdTZXJ2aWNlLmlzbzNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0VXNlckZlZWRiYWNrcyh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXJGZWVkYmFja1tdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcmZlZWRiYWNrQXBpU2VydmljZS5nZXRVc2VyQ29tbWVudHModXVpZCkucGlwZShcbiAgICAgIG1hcCgodXNlckZlZWRiYWNrcykgPT5cbiAgICAgICAgdXNlckZlZWRiYWNrcy5tYXAodGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc0Zyb21BcGkpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlciBmZWVkYmFja3M6JywgZXJyb3IpXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHBvc3RVc2VyRmVlZGJhY2tzKHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWFwcGVkVXNlckZlZWRCYWNrID0gdGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc1RvQXBpKHVzZXJGZWVkYmFjaylcbiAgICByZXR1cm4gdGhpcy51c2VyZmVlZGJhY2tBcGlTZXJ2aWNlLm5ld1VzZXJGZWVkYmFjayhtYXBwZWRVc2VyRmVlZEJhY2spLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBvc3RpbmcgdXNlciBmZWVkYmFjazonLCBlcnJvcilcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0UmVjb3JkQXR0YWNobWVudHMocmVjb3JkVXVpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZ2V0QWxsUmVzb3VyY2VzKHJlY29yZFV1aWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc291cmNlcykgPT5cbiAgICAgICAgcmVzb3VyY2VzLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB1cmw6IG5ldyBVUkwoci51cmwpLFxuICAgICAgICAgIGZpbGVOYW1lOiByLmZpbGVuYW1lLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjbGVhblJlY29yZEF0dGFjaG1lbnRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZ2V0QXNzb2NpYXRlZFJlc291cmNlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICB0aGlzLnJlY29yZHNBcGlTZXJ2aWNlLmdldEFsbFJlc291cmNlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2Fzc29jaWF0ZWQsIGF0dGFjaG1lbnRzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IG9ubGluZXMgPSBbXSwgdGh1bWJuYWlscyA9IFtdIH0gPSBhc3NvY2lhdGVkXG5cbiAgICAgICAgY29uc3QgdXJsc1RvS2VlcCA9IFtcbiAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShvbmxpbmVzKSA/IG9ubGluZXMgOiBbXSksXG4gICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkodGh1bWJuYWlscykgPyB0aHVtYm5haWxzIDogW10pLFxuICAgICAgICBdLm1hcCgocmVzb3VyY2UpID0+IE9iamVjdC52YWx1ZXMocmVzb3VyY2UudXJsKVswXSlcblxuICAgICAgICBjb25zdCBmaWxlVG9EZWxldGUgPSBhdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpID0+ICF1cmxzVG9LZWVwLmluY2x1ZGVzKGF0dGFjaG1lbnQudXJsKSlcbiAgICAgICAgICAubWFwKChhdHRhY2htZW50KSA9PiBhdHRhY2htZW50LmZpbGVuYW1lKVxuXG4gICAgICAgIHJldHVybiBmaWxlVG9EZWxldGVcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKGZpbGVzVG9EZWxldGUpID0+XG4gICAgICAgIGZpbGVzVG9EZWxldGUubGVuZ3RoXG4gICAgICAgICAgPyBmb3JrSm9pbihcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZS5tYXAoKGZpbGVuYW1lKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZGVsUmVzb3VyY2UoXG4gICAgICAgICAgICAgICAgICByZWNvcmQudW5pcXVlSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLnBpcGUobWFwKCgpID0+IHVuZGVmaW5lZCkpXG4gICAgICAgICAgOiBvZih1bmRlZmluZWQpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgY2xlYW5pbmcgYXR0YWNobWVudHM6JywgZXJyb3IpXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGF0dGFjaEZpbGVUb1JlY29yZChyZWNvcmRVdWlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPFVwbG9hZEV2ZW50PiB7XG4gICAgbGV0IHNpemVCeXRlcyA9IC0xXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcmVzb3VyY2UgYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgcmVuYW1lIGl0IGlmIHRoYXQncyB0aGUgY2FzZVxuICAgIHJldHVybiB0aGlzLmdldFJlY29yZEF0dGFjaG1lbnRzKHJlY29yZFV1aWQpLnBpcGUoXG4gICAgICBtYXAoKHJlY29yZEF0dGFjaGVtZW50KSA9PiByZWNvcmRBdHRhY2hlbWVudC5tYXAoKHIpID0+IHIuZmlsZU5hbWUpKSxcbiAgICAgIHN3aXRjaE1hcCgoZmlsZU5hbWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gbm9EdXBsaWNhdGVGaWxlTmFtZShmaWxlLm5hbWUsIGZpbGVOYW1lcylcblxuICAgICAgICBjb25zdCBmaWxlQ29weSA9IG5ldyBGaWxlKFtmaWxlXSwgZmlsZU5hbWUsIHsgdHlwZTogZmlsZS50eXBlIH0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2VcbiAgICAgICAgICAucHV0UmVzb3VyY2UoXG4gICAgICAgICAgICByZWNvcmRVdWlkLFxuICAgICAgICAgICAgZmlsZUNvcHksXG4gICAgICAgICAgICAncHVibGljJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdldmVudHMnLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICBzaXplQnl0ZXMgPSBldmVudC50b3RhbFxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IGV2ZW50LnRvdGFsXG4gICAgICAgICAgICAgICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxuICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgfSBhcyBVcGxvYWRFdmVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBuZXcgVVJMKGV2ZW50LmJvZHkudXJsKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGV2ZW50LmJvZHkuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2l6ZUJ5dGVzLFxuICAgICAgICAgICAgICAgIH0gYXMgVXBsb2FkRXZlbnRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+ICEhZXZlbnQpXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICAgICAgICAoKSA9PiBuZXcgRXJyb3IoZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyb3IubWVzc2FnZSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQVl0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBTWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQy9FLE9BQU8sRUFDTCxhQUFhLEVBQ2IsUUFBUSxFQUVSLEVBQUUsRUFDRixTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFBOzs7Ozs7QUFFYixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUE7QUFHN0IsTUFBTSxPQUFPLGtCQUFrQjtJQThDN0IsWUFDVSxjQUE4QixFQUM5QixLQUFtQixFQUNuQixRQUF5QixFQUN6QixNQUF5QixFQUN6QixlQUFnQyxFQUNoQyxvQkFBMEMsRUFDMUMsV0FBd0IsRUFDeEIs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Q0FBQzsrR0F2V1Usa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBNZUFwaVNlcnZpY2UsXG4gIFJlY29yZHNBcGlTZXJ2aWNlLFxuICBSZWdpc3RyaWVzQXBpU2VydmljZSxcbiAgU2l0ZUFwaVNlcnZpY2UsXG4gIFRvb2xzQXBpU2VydmljZSxcbiAgVXNlcmZlZWRiYWNrQXBpU2VydmljZSxcbiAgVXNlcnNBcGlTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQge1xuICBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gIFVwbG9hZEV2ZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3VzZXIvdXNlci5tb2RlbCdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIEtleXdvcmQsXG4gIE9yZ2FuaXphdGlvbixcbiAgVXNlckZlZWRiYWNrLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBHbjRQbGF0Zm9ybU1hcHBlciB9IGZyb20gJy4vZ240LXBsYXRmb3JtLm1hcHBlcidcbmltcG9ydCB7IGx0ciB9IGZyb20gJ3NlbXZlcidcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHtcbiAgS2V5d29yZEFwaVJlc3BvbnNlLFxuICBUaGVzYXVydXNBcGlSZXNwb25zZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYydcbmltcG9ydCB7IEtleXdvcmRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuaW1wb3J0IHsgbm9EdXBsaWNhdGVGaWxlTmFtZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgZm9ya0pvaW4sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnXG5cbmNvbnN0IG1pbkFwaVZlcnNpb24gPSAnNC4yLjInXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHbjRQbGF0Zm9ybVNlcnZpY2UgaW1wbGVtZW50cyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGUgPSAnR2VvTmV0d29yaydcbiAgcHJpdmF0ZSByZWFkb25seSBtZSQ6IE9ic2VydmFibGU8VXNlck1vZGVsPlxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT5cbiAgcHJpdmF0ZSByZWFkb25seSBpc1VzZXJBbm9ueW1vdXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgcHJpdmF0ZSBrZXlUcmFuc2xhdGlvbnMkID0gdGhpcy50b29sc0FwaVNlcnZpY2VcbiAgICAuZ2V0VHJhbnNsYXRpb25zUGFja2FnZTEoJ2dudWknKVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hpbGUgbG9hZGluZyBnbnVpIGxhbmd1YWdlIHBhY2thZ2UnKVxuICAgICAgICByZXR1cm4gb2Yoe30pXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gIHByaXZhdGUgc2V0dGluZ3MkID0gb2YodHJ1ZSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zaXRlQXBpU2VydmljZS5nZXRTaXRlT3JQb3J0YWxEZXNjcmlwdGlvbigpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlWZXJzaW9uJCA9IHRoaXMuc2V0dGluZ3MkLnBpcGUoXG4gICAgbWFwKChpbmZvKSA9PiBpbmZvWydzeXN0ZW0vcGxhdGZvcm0vdmVyc2lvbiddIGFzIHN0cmluZyksXG4gICAgdGFwKCh2ZXJzaW9uKSA9PiB7XG4gICAgICBpZiAobHRyKHZlcnNpb24sIG1pbkFwaVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgR240IEFQSSB2ZXJzaW9uIGlzIG5vdCBjb21wYXRpYmxlLlxcbk1pbmltdW06ICR7bWluQXBpVmVyc2lvbn1cXG5Zb3VyIHZlcnNpb246ICR7dmVyc2lvbn1gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0VkaXRIYXJ2ZXN0ZWRNZCQgPSB0aGlzLnNldHRpbmdzJC5waXBlKFxuICAgIG1hcCgoaW5mbykgPT4ge1xuICAgICAgcmV0dXJuIGluZm9bJ3N5c3RlbS9oYXJ2ZXN0ZXIvZW5hYmxlRWRpdGluZyddIGFzIGJvb2xlYW5cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGFscmVhZHkgbG9hZGVkIHRoZXNhdXJpIChncm91cHMgb2Yga2V5d29yZHMpOyB0aGUga2V5IGlzIGEgVVJJXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGtleXdvcmRzQnlUaGVzYXVyaTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxLZXl3b3JkW10+PiA9IHt9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzaXRlQXBpU2VydmljZTogU2l0ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZUFwaTogTWVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcnNBcGk6IFVzZXJzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG1hcHBlcjogR240UGxhdGZvcm1NYXBwZXIsXG4gICAgcHJpdmF0ZSB0b29sc0FwaVNlcnZpY2U6IFRvb2xzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlZ2lzdHJpZXNBcGlTZXJ2aWNlOiBSZWdpc3RyaWVzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmdTZXJ2aWNlOiBMYW5nU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJmZWVkYmFja0FwaVNlcnZpY2U6IFVzZXJmZWVkYmFja0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVjb3Jkc0FwaVNlcnZpY2U6IFJlY29yZHNBcGlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubWUkID0gdGhpcy5tZUFwaS5nZXRNZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGFwaVVzZXIpID0+IHRoaXMubWFwcGVyLnVzZXJGcm9tTWVBcGkoYXBpVXNlcikpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIHRoaXMuaXNVc2VyQW5vbnltb3VzJCA9IHRoaXMubWUkLnBpcGUoXG4gICAgICBtYXAoKHVzZXIpID0+ICF1c2VyIHx8ICEoJ2lkJyBpbiB1c2VyKSlcbiAgICApXG5cbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMudXNlcnNBcGkuZ2V0VXNlcnMoKS5waXBlKFxuICAgICAgbWFwKCh1c2VycykgPT4gdXNlcnMubWFwKCh1c2VyKSA9PiB0aGlzLm1hcHBlci51c2VyRnJvbUFwaSh1c2VyKSkpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgfVxuXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50eXBlXG4gIH1cblxuICBnZXRBcGlWZXJzaW9uKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVmVyc2lvbiRcbiAgfVxuXG4gIGdldEFsbG93RWRpdEhhcnZlc3RlZE1kKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93RWRpdEhhcnZlc3RlZE1kJFxuICB9XG5cbiAgZ2V0TWUoKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWw+IHtcbiAgICByZXR1cm4gdGhpcy5tZSRcbiAgfVxuXG4gIGlzQW5vbnltb3VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzVXNlckFub255bW91cyRcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvbnMoKTogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb25bXT4ge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldFVzZXJzQnlPcmdhbml6YXRpb24ob3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb24pOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VXNlcnMoKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJzJFxuICB9XG5cbiAgdHJhbnNsYXRlS2V5KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAvLyBpZiB0aGUga2V5IGlzIGEgVVJJLCB1c2UgdGhlIHJlZ2lzdHJpZXMgQVBJIHRvIGxvb2sgZm9yIHRoZSB0cmFuc2xhdGlvblxuICAgIGlmIChrZXkubWF0Y2goL15odHRwcz86XFwvXFwvLykpIHtcbiAgICAgIC8vIHRoZSB0aGVzYXVydXMgVVJJIGlzIGluZmVycmVkIGJ5IHJlbW92aW5nIGEgcGFydCBvZiB0aGUga2V5d29yZCBVUklcbiAgICAgIC8vIHRoaXMgaXMgbm90IGV4YWN0IHNjaWVuY2UgYnV0IGl0J3MgT0ssIHdlJ2xsIHN0aWxsIGVuZCB1cCBsb2FkaW5nIGEgYnVuY2ggb2Yga2V5d29yZHMgYXQgb25jZSBhbnl3YXlcbiAgICAgIGNvbnN0IHRoZXNhdXJ1c1VyaSA9IGtleS5yZXBsYWNlKC9cXC8oW14vXSspJC8sICcvJylcbiAgICAgIHJldHVybiB0aGlzLmdldEtleXdvcmRzQnlVcmkodGhlc2F1cnVzVXJpKS5waXBlKFxuICAgICAgICBtYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGVzYXVydXMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0ga2V5KSByZXR1cm4gaXRlbS5sYWJlbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmtleVRyYW5zbGF0aW9ucyQucGlwZShtYXAoKHRyYW5zbGF0aW9ucykgPT4gdHJhbnNsYXRpb25zW2tleV0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhbGxUaGVzYXVydXMkID0gdGhpcy5odHRwQ2xpZW50XG4gICAgLmdldChcbiAgICAgIGAke3RoaXMucmVnaXN0cmllc0FwaVNlcnZpY2UuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0vdGhlc2F1cnVzP19jb250ZW50X3R5cGU9anNvbmBcbiAgICApXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICByZXR1cm4gdGhlc2F1cnVzWzBdIGFzIFRoZXNhdXJ1c0FwaVJlc3BvbnNlW11cbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApXG5cbiAgc2VhcmNoS2V5d29yZHMoXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBrZXl3b3JkVHlwZXM6IEtleXdvcmRUeXBlW11cbiAgKTogT2JzZXJ2YWJsZTxLZXl3b3JkW10+IHtcbiAgICBjb25zdCBrZXl3b3JkcyQ6IE9ic2VydmFibGU8S2V5d29yZEFwaVJlc3BvbnNlW10+ID0gdGhpcy5hbGxUaGVzYXVydXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRoZXNhdXJpID0gW11cbiAgICAgICAga2V5d29yZFR5cGVzLm1hcCgoa2V5d29yZFR5cGUpID0+IHtcbiAgICAgICAgICBzZWxlY3RlZFRoZXNhdXJpLnB1c2goXG4gICAgICAgICAgICAuLi50aGVzYXVydXMuZmlsdGVyKCh0aGVzKSA9PiB0aGVzLmRuYW1lID09PSBrZXl3b3JkVHlwZSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cmllc0FwaVNlcnZpY2Uuc2VhcmNoS2V5d29yZHMoXG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zLFxuICAgICAgICAgIDEwLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZFRoZXNhdXJpLm1hcCgodGhlcykgPT4gdGhlcy5rZXkpLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgYCoke3F1ZXJ5fSpgXG4gICAgICAgICkgYXMgT2JzZXJ2YWJsZTxLZXl3b3JkQXBpUmVzcG9uc2VbXT5cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2tleXdvcmRzJCwgdGhpcy5hbGxUaGVzYXVydXMkXSkucGlwZShcbiAgICAgIG1hcCgoW2tleXdvcmRzLCB0aGVzYXVydXNdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcHBlci5rZXl3b3Jkc0Zyb21BcGkoXG4gICAgICAgICAga2V5d29yZHMsXG4gICAgICAgICAgdGhlc2F1cnVzLFxuICAgICAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvM1xuICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldEtleXdvcmRzQnlVcmkodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEtleXdvcmRbXT4ge1xuICAgIGlmICh0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldKSB7XG4gICAgICByZXR1cm4gdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXVxuICAgIH1cbiAgICBjb25zdCBrZXl3b3JkcyQgPSB0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlLnNlYXJjaEtleXdvcmRzKFxuICAgICAgbnVsbCxcbiAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvMyxcbiAgICAgIDEwMDAsXG4gICAgICAwLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgYCR7dXJpfSpgXG4gICAgKSBhcyBPYnNlcnZhYmxlPEtleXdvcmRBcGlSZXNwb25zZVtdPlxuXG4gICAgdGhpcy5rZXl3b3Jkc0J5VGhlc2F1cmlbdXJpXSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAga2V5d29yZHMkLFxuICAgICAgdGhpcy5hbGxUaGVzYXVydXMkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtrZXl3b3JkcywgdGhlc2F1cnVzXSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXBwZXIua2V5d29yZHNGcm9tQXBpKFxuICAgICAgICAgIGtleXdvcmRzLFxuICAgICAgICAgIHRoZXNhdXJ1cyxcbiAgICAgICAgICB0aGlzLmxhbmdTZXJ2aWNlLmlzbzNcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICAgIHJldHVybiB0aGlzLmtleXdvcmRzQnlUaGVzYXVyaVt1cmldXG4gIH1cblxuICBzZWFyY2hLZXl3b3Jkc0luVGhlc2F1cnVzKHF1ZXJ5OiBzdHJpbmcsIHRoZXNhdXJ1c0lkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxUaGVzYXVydXMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHRoZXNhdXJpKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkVGhlc2F1cnVzSWQgPSB0aGVzYXVydXNJZC5yZXBsYWNlKFxuICAgICAgICAgICdnZW9uZXR3b3JrLnRoZXNhdXJ1cy4nLFxuICAgICAgICAgICcnXG4gICAgICAgIClcbiAgICAgICAgaWYgKCF0aGVzYXVyaS5maW5kKCh0aGVzKSA9PiB0aGVzLmtleSA9PT0gc3RyaXBwZWRUaGVzYXVydXNJZCkpXG4gICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpc3RyaWVzQXBpU2VydmljZVxuICAgICAgICAgIC5zZWFyY2hLZXl3b3JkcyhcbiAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zLFxuICAgICAgICAgICAgMTAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBbc3RyaXBwZWRUaGVzYXVydXNJZF0sXG4gICAgICAgICAgICBudWxsXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChrZXl3b3JkczogS2V5d29yZEFwaVJlc3BvbnNlW10pID0+XG4gICAgICAgICAgICAgIHRoaXMubWFwcGVyLmtleXdvcmRzRnJvbUFwaShcbiAgICAgICAgICAgICAgICBrZXl3b3JkcyxcbiAgICAgICAgICAgICAgICB0aGVzYXVyaSxcbiAgICAgICAgICAgICAgICB0aGlzLmxhbmdTZXJ2aWNlLmlzbzNcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0VXNlckZlZWRiYWNrcyh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXJGZWVkYmFja1tdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcmZlZWRiYWNrQXBpU2VydmljZS5nZXRVc2VyQ29tbWVudHModXVpZCkucGlwZShcbiAgICAgIG1hcCgodXNlckZlZWRiYWNrcykgPT5cbiAgICAgICAgdXNlckZlZWRiYWNrcy5tYXAodGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc0Zyb21BcGkpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlciBmZWVkYmFja3M6JywgZXJyb3IpXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHBvc3RVc2VyRmVlZGJhY2tzKHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWFwcGVkVXNlckZlZWRCYWNrID0gdGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc1RvQXBpKHVzZXJGZWVkYmFjaylcbiAgICByZXR1cm4gdGhpcy51c2VyZmVlZGJhY2tBcGlTZXJ2aWNlLm5ld1VzZXJGZWVkYmFjayhtYXBwZWRVc2VyRmVlZEJhY2spLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBvc3RpbmcgdXNlciBmZWVkYmFjazonLCBlcnJvcilcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0UmVjb3JkQXR0YWNobWVudHMocmVjb3JkVXVpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZ2V0QWxsUmVzb3VyY2VzKHJlY29yZFV1aWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc291cmNlcykgPT5cbiAgICAgICAgcmVzb3VyY2VzLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB1cmw6IG5ldyBVUkwoci51cmwpLFxuICAgICAgICAgIGZpbGVOYW1lOiByLmZpbGVuYW1lLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjbGVhblJlY29yZEF0dGFjaG1lbnRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZ2V0QXNzb2NpYXRlZFJlc291cmNlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICB0aGlzLnJlY29yZHNBcGlTZXJ2aWNlLmdldEFsbFJlc291cmNlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2Fzc29jaWF0ZWQsIGF0dGFjaG1lbnRzXSkgPT4ge1xuICAgICAgICBjb25zdCB7IG9ubGluZXMgPSBbXSwgdGh1bWJuYWlscyA9IFtdIH0gPSBhc3NvY2lhdGVkXG5cbiAgICAgICAgY29uc3QgdXJsc1RvS2VlcCA9IFtcbiAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShvbmxpbmVzKSA/IG9ubGluZXMgOiBbXSksXG4gICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkodGh1bWJuYWlscykgPyB0aHVtYm5haWxzIDogW10pLFxuICAgICAgICBdLm1hcCgocmVzb3VyY2UpID0+IE9iamVjdC52YWx1ZXMocmVzb3VyY2UudXJsKVswXSlcblxuICAgICAgICBjb25zdCBmaWxlVG9EZWxldGUgPSBhdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpID0+ICF1cmxzVG9LZWVwLmluY2x1ZGVzKGF0dGFjaG1lbnQudXJsKSlcbiAgICAgICAgICAubWFwKChhdHRhY2htZW50KSA9PiBhdHRhY2htZW50LmZpbGVuYW1lKVxuXG4gICAgICAgIHJldHVybiBmaWxlVG9EZWxldGVcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKGZpbGVzVG9EZWxldGUpID0+XG4gICAgICAgIGZpbGVzVG9EZWxldGUubGVuZ3RoXG4gICAgICAgICAgPyBmb3JrSm9pbihcbiAgICAgICAgICAgICAgZmlsZXNUb0RlbGV0ZS5tYXAoKGZpbGVuYW1lKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2UuZGVsUmVzb3VyY2UoXG4gICAgICAgICAgICAgICAgICByZWNvcmQudW5pcXVlSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLnBpcGUobWFwKCgpID0+IHVuZGVmaW5lZCkpXG4gICAgICAgICAgOiBvZih1bmRlZmluZWQpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igd2hpbGUgY2xlYW5pbmcgYXR0YWNobWVudHM6JywgZXJyb3IpXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGF0dGFjaEZpbGVUb1JlY29yZChyZWNvcmRVdWlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpOiBPYnNlcnZhYmxlPFVwbG9hZEV2ZW50PiB7XG4gICAgbGV0IHNpemVCeXRlcyA9IC0xXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcmVzb3VyY2UgYWxyZWFkeSBleGlzdHMgb24gdGhlIHNlcnZlciBhbmQgcmVuYW1lIGl0IGlmIHRoYXQncyB0aGUgY2FzZVxuICAgIHJldHVybiB0aGlzLmdldFJlY29yZEF0dGFjaG1lbnRzKHJlY29yZFV1aWQpLnBpcGUoXG4gICAgICBtYXAoKHJlY29yZEF0dGFjaGVtZW50KSA9PiByZWNvcmRBdHRhY2hlbWVudC5tYXAoKHIpID0+IHIuZmlsZU5hbWUpKSxcbiAgICAgIHN3aXRjaE1hcCgoZmlsZU5hbWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gbm9EdXBsaWNhdGVGaWxlTmFtZShmaWxlLm5hbWUsIGZpbGVOYW1lcylcblxuICAgICAgICBjb25zdCBmaWxlQ29weSA9IG5ldyBGaWxlKFtmaWxlXSwgZmlsZU5hbWUsIHsgdHlwZTogZmlsZS50eXBlIH0pXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVjb3Jkc0FwaVNlcnZpY2VcbiAgICAgICAgICAucHV0UmVzb3VyY2UoXG4gICAgICAgICAgICByZWNvcmRVdWlkLFxuICAgICAgICAgICAgZmlsZUNvcHksXG4gICAgICAgICAgICAncHVibGljJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdldmVudHMnLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICBzaXplQnl0ZXMgPSBldmVudC50b3RhbFxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAncHJvZ3Jlc3MnLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IGV2ZW50LnRvdGFsXG4gICAgICAgICAgICAgICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxuICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgfSBhcyBVcGxvYWRFdmVudFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBuZXcgVVJMKGV2ZW50LmJvZHkudXJsKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6IGV2ZW50LmJvZHkuZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2l6ZUJ5dGVzLFxuICAgICAgICAgICAgICAgIH0gYXMgVXBsb2FkRXZlbnRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+ICEhZXZlbnQpXG4gICAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICAgICAgICAoKSA9PiBuZXcgRXJyb3IoZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyb3IubWVzc2FnZSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -7,6 +7,7 @@ export class Gn4SettingsService {
7
7
  constructor(siteApiService) {
8
8
  this.siteApiService = siteApiService;
9
9
  this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
10
+ this.allowEditHarvested$ = this.getSettingsSetValueByKey('system/harvester/enableEditing');
10
11
  }
11
12
  getSettingsSetValueByKey(key) {
12
13
  return this.siteApiService.getSettingsSet(null, [key]).pipe(map((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
@@ -20,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
20
21
  providedIn: 'root',
21
22
  }]
22
23
  }], ctorParameters: () => [{ type: i1.SiteApiService }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXNldHRpbmdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3NldHRpbmdzL2duNC1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQzlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQU1qRCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUozQyxlQUFVLEdBQXVCLElBQUksQ0FBQyx3QkFBd0IsQ0FDbkUsd0JBQXdCLENBQ3pCLENBQUE7SUFFb0QsQ0FBQztJQUU5Qyx3QkFBd0IsQ0FBQyxHQUFXO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ2xCLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQy9DLENBQUE7SUFDSCxDQUFDOytHQVpVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFNpdGVBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHbjRTZXR0aW5nc1NlcnZpY2Uge1xuICBwdWJsaWMgaWRlbnRpY29uJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5nZXRTZXR0aW5nc1NldFZhbHVlQnlLZXkoXG4gICAgJ3N5c3RlbS91c2Vycy9pZGVudGljb24nXG4gIClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpdGVBcGlTZXJ2aWNlOiBTaXRlQXBpU2VydmljZSkge31cblxuICBwcml2YXRlIGdldFNldHRpbmdzU2V0VmFsdWVCeUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNpdGVBcGlTZXJ2aWNlLmdldFNldHRpbmdzU2V0KG51bGwsIFtrZXldKS5waXBlKFxuICAgICAgbWFwKCh2KSA9PiB2W2tleV0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcbiAgfVxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXNldHRpbmdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3NldHRpbmdzL2duNC1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQzlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQU1qRCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVAzQyxlQUFVLEdBQXVCLElBQUksQ0FBQyx3QkFBd0IsQ0FDbkUsd0JBQXdCLENBQ3pCLENBQUE7UUFFTSx3QkFBbUIsR0FDeEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdDQUFnQyxDQUFDLENBQUE7SUFFWixDQUFDO0lBRTlDLHdCQUF3QixDQUFDLEdBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDbEIsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQTtJQUNILENBQUM7K0dBZlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgU2l0ZUFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEduNFNldHRpbmdzU2VydmljZSB7XG4gIHB1YmxpYyBpZGVudGljb24kOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmdldFNldHRpbmdzU2V0VmFsdWVCeUtleShcbiAgICAnc3lzdGVtL3VzZXJzL2lkZW50aWNvbidcbiAgKVxuXG4gIHB1YmxpYyBhbGxvd0VkaXRIYXJ2ZXN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID1cbiAgICB0aGlzLmdldFNldHRpbmdzU2V0VmFsdWVCeUtleSgnc3lzdGVtL2hhcnZlc3Rlci9lbmFibGVFZGl0aW5nJylcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpdGVBcGlTZXJ2aWNlOiBTaXRlQXBpU2VydmljZSkge31cblxuICBwcml2YXRlIGdldFNldHRpbmdzU2V0VmFsdWVCeUtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnNpdGVBcGlTZXJ2aWNlLmdldFNldHRpbmdzU2V0KG51bGwsIFtrZXldKS5waXBlKFxuICAgICAgbWFwKCh2KSA9PiB2W2tleV0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcbiAgfVxufVxuIl19
@@ -47,4 +47,4 @@ export const RecordStatusValues = [
47
47
  'deprecated',
48
48
  'removed',
49
49
  ];
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBZ0JoRSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQTtBQUNsRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxTQUFTO0lBQ1QsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtJQUNWLFlBQVk7Q0FDSixDQUFBO0FBSVYsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7QUFDM0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFDNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFFNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDbEQsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFVbEQsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7QUFDeEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFDekMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFFdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsV0FBVztJQUNYLFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFNBQVM7Q0FDVixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHR5cGUgeyBJbmRpdmlkdWFsIH0gZnJvbSAnLi9jb250YWN0Lm1vZGVsJ1xuaW1wb3J0IHR5cGUgeyBPcmdhbml6YXRpb24gfSBmcm9tICcuL29yZ2FuaXphdGlvbi5tb2RlbCdcbmltcG9ydCB0eXBlIHsgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUsIFRoZXNhdXJ1c01vZGVsIH0gZnJvbSAnLi4vdGhlc2F1cnVzJ1xuaW1wb3J0IHtcbiAgQ29uc3RyYWludFRyYW5zbGF0aW9ucyxcbiAgS2V5d29yZFRyYW5zbGF0aW9ucyxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9ucyxcbiAgUmVjb3JkVHJhbnNsYXRpb25zLFxuICBTcGF0aWFsRXh0ZW50VHJhbnNsYXRpb25zLFxufSBmcm9tICcuL3RyYW5zbGF0aW9uLm1vZGVsJ1xuXG50eXBlIFV1aWQgPSBzdHJpbmdcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS51bmtub3duJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubm90UGxhbm5lZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmFzTmVlZGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuaXJyZWd1bGFyJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuY29udGludWFsJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kucGVyaW9kaWMnKVxuXG5leHBvcnQgY29uc3QgdXBkYXRlRnJlcXVlbmN5Q29kZVZhbHVlcyA9IFtcbiAgJ3Vua25vd24nLFxuICAnbm90UGxhbm5lZCcsXG4gICdhc05lZWRlZCcsXG4gICdpcnJlZ3VsYXInLFxuICAnY29udGludWFsJyxcbiAgJ3BlcmlvZGljJyxcbiAgJ2RhaWx5JyxcbiAgJ3dlZWtseScsXG4gICdmb3J0bmlnaHRseScsXG4gICdzZW1pbW9udGhseScsXG4gICdtb250aGx5JyxcbiAgJ3F1YXJ0ZXJseScsXG4gICdiaWFubnVhbGx5JyxcbiAgJ2FubnVhbGx5JyxcbiAgJ2JpZW5uaWFsbHknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBVcGRhdGVGcmVxdWVuY3lDb2RlID0gKHR5cGVvZiB1cGRhdGVGcmVxdWVuY3lDb2RlVmFsdWVzKVtudW1iZXJdXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGF5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kud2VlaycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRoJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kueWVhcicpXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGFpbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS53ZWVrbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5mb3J0bmlnaHRseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRobHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5xdWFydGVybHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5iaWFubnVhbGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYW5udWFsbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5zZW1pbW9udGhseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmJpZW5uaWFsbHknKVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGcmVxdWVuY3lDdXN0b20gPSB7XG4gIHVwZGF0ZWRUaW1lczogbnVtYmVyIC8vIHRoaXMgc2hvdWxkIGJlIGFuIGludGVnZXJcbiAgcGVyOiAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcidcbn1cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeSA9IFVwZGF0ZUZyZXF1ZW5jeUNvZGUgfCBVcGRhdGVGcmVxdWVuY3lDdXN0b21cblxuZXhwb3J0IHR5cGUgUmVjb3JkS2luZCA9ICdkYXRhc2V0JyB8ICdzZXJ2aWNlJyB8ICdyZXVzZSdcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5jb21wbGV0ZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5vbmdvaW5nJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMudW5kZXJfZGV2ZWxvcG1lbnQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5kZXByZWNhdGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMucmVtb3ZlZCcpXG5cbmV4cG9ydCBjb25zdCBSZWNvcmRTdGF0dXNWYWx1ZXMgPSBbXG4gICdjb21wbGV0ZWQnLFxuICAnb25nb2luZycsXG4gICd1bmRlcl9kZXZlbG9wbWVudCcsXG4gICdkZXByZWNhdGVkJyxcbiAgJ3JlbW92ZWQnLFxuXVxuZXhwb3J0IHR5cGUgUmVjb3JkU3RhdHVzID0gKHR5cGVvZiBSZWNvcmRTdGF0dXNWYWx1ZXMpW251bWJlcl1cblxuZXhwb3J0IHR5cGUgQ29uc3RyYWludCA9IHtcbiAgdGV4dDogc3RyaW5nXG4gIHVybD86IFVSTFxuXG4gIHRyYW5zbGF0aW9ucz86IENvbnN0cmFpbnRUcmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZSA9XG4gIHwgJ2dyaWQnXG4gIHwgJ3ZlY3RvcidcbiAgfCAndGluJ1xuICB8ICd0YWJsZSdcbiAgfCAncG9pbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZCB7XG4gIGtleT86IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHR5cGU6IEtleXdvcmRUeXBlXG4gIHRoZXNhdXJ1cz86IFRoZXNhdXJ1c01vZGVsXG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuXG4gIHRyYW5zbGF0aW9ucz86IEtleXdvcmRUcmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlUmVjb3JkIHtcbiAgdW5pcXVlSWRlbnRpZmllcjogVXVpZFxuICBvd25lck9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uXG4gIGNvbnRhY3RzOiBBcnJheTxJbmRpdmlkdWFsPlxuICB0aXRsZTogc3RyaW5nXG4gIGFic3RyYWN0OiBzdHJpbmdcbiAgcmVjb3JkQ3JlYXRlZD86IERhdGVcbiAgcmVjb3JkUHVibGlzaGVkPzogRGF0ZVxuICByZWNvcmRVcGRhdGVkOiBEYXRlXG4gIGtpbmQ6IFJlY29yZEtpbmRcbiAgdG9waWNzOiBBcnJheTxzdHJpbmc+IC8vIFRPRE86IGhhbmRsZSBjb2RlbGlzdHNcbiAga2V5d29yZHM6IEFycmF5PEtleXdvcmQ+XG4gIGxpY2Vuc2VzOiBBcnJheTxDb25zdHJhaW50PlxuICBsZWdhbENvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBzZWN1cml0eUNvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBvdGhlckNvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBvdmVydmlld3M6IEFycmF5PEdyYXBoaWNPdmVydmlldz5cbiAgZXh0cmFzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgbGFuZGluZ1BhZ2U/OiBVUkxcbiAgdXBkYXRlRnJlcXVlbmN5PzogVXBkYXRlRnJlcXVlbmN5XG5cbiAgLy8gaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcmVzb3VyY2UgKGRhdGFzZXQsIHNlcnZpY2UpXG4gIHJlc291cmNlSWRlbnRpZmllcj86IHN0cmluZ1xuICBjb250YWN0c0ZvclJlc291cmNlOiBBcnJheTxJbmRpdmlkdWFsPlxuICByZXNvdXJjZUNyZWF0ZWQ/OiBEYXRlXG4gIHJlc291cmNlUHVibGlzaGVkPzogRGF0ZVxuICByZXNvdXJjZVVwZGF0ZWQ/OiBEYXRlXG5cbiAgLy8gbXVsdGlsaW5ndWFsIHN1cHBvcnRcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbiAgb3RoZXJMYW5ndWFnZXM6IEFycmF5PExhbmd1YWdlQ29kZT4gLy8gdGhpcyBzaG91bGQgaW5jbHVkZSBhbGwgbm9uLWRlZmF1bHQgbGFuZ3VhZ2VzIHByZXNlbnQgaW4gdGhlIG1ldGFkYXRhLCBldmVuIGlmIGluY29tcGxldGVseSB0cmFuc2xhdGVkXG5cbiAgdHJhbnNsYXRpb25zPzogUmVjb3JkVHJhbnNsYXRpb25zXG5cbiAgLy8gdG8gYWRkOiBjYW5vbmljYWwgdXJsXG4gIC8vIHRvIGFkZDogc291cmNlIGNhdGFsb2cgKD8/KVxuICAvLyB0byBhZGQ6IGlzIG9wZW4gZGF0YSA/XG59XG5cbi8vIFRPRE86IGhhbmRsZSBhY3R1YWwgY29kZWxpc3RzXG5leHBvcnQgdHlwZSBTZXJ2aWNlUHJvdG9jb2wgPVxuICB8ICd3bXMnXG4gIHwgJ3dmcydcbiAgfCAnd3BzJ1xuICB8ICd3bXRzJ1xuICB8ICdlc3JpUmVzdCdcbiAgfCAnb2djRmVhdHVyZXMnXG4gIHwgJ0dQRkRMJ1xuICB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgT25saW5lUmVzb3VyY2VUeXBlID0gJ3NlcnZpY2UnIHwgJ2Rvd25sb2FkJyB8ICdsaW5rJyB8ICdlbmRwb2ludCdcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbiB7XG4gIHR5cGU6ICdzZXJ2aWNlJ1xuICB1cmw6IFVSTFxuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IFNlcnZpY2VQcm90b2NvbFxuICBpZGVudGlmaWVySW5TZXJ2aWNlPzogc3RyaW5nIC8vIHNob3VsZCB3ZSBrZWVwIHRoZSBpZGVudGlmaWVySW5TZXJ2aWNlPyByZWFkLXdyaXRlIGR1cGxpY2F0ZSB3aXRoIG5hbWVcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xuICBhY2Nlc3NSZXN0cmljdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbiB7XG4gIHR5cGU6ICdkb3dubG9hZCdcbiAgdXJsOiBVUkxcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgc2l6ZUJ5dGVzPzogbnVtYmVyXG4gIC8vIHJlbW92ZWQgYmVjYXVzZSB3aGF0J3MgdGhlIHVzZT8gZW5jb2RpbmcgY2FuIGJlIGV4cG9zZWQgYnkgdGhlIGZpbGUgc2VydmVyIG9yXG4gIC8vIGV2ZW4gZm91bmQgb3V0IGJ5IHRyaWFsIGFuZCBlcnJvcjsgYmVzaWRlcyB3ZSBjYW4gcmVhc29uYWJseSBleHBlY3QgdW5pY29kZSBvciBpc28gbW9zdCBvZiB0aGUgdGltZVxuICAvLyB0ZXh0RW5jb2Rpbmc/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w/OiBTZXJ2aWNlUHJvdG9jb2xcbiAgdHJhbnNsYXRpb25zPzogT25saW5lUmVzb3VyY2VUcmFuc2xhdGlvbnNcbiAgYWNjZXNzUmVzdHJpY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmxpbmVMaW5rUmVzb3VyY2Uge1xuICB0eXBlOiAnbGluaydcbiAgdXJsOiBVUkxcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xuICBtaW1lVHlwZT86IHN0cmluZ1xuICBhY2Nlc3NSZXN0cmljdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBEYXRhc2V0T25saW5lUmVzb3VyY2UgPSAoXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb25cbiAgfCBPbmxpbmVMaW5rUmVzb3VyY2VcbikgJiB7XG4gIHR5cGU6IE9ubGluZVJlc291cmNlVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoaWNPdmVydmlldyB7XG4gIHVybDogVVJMXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFNwYXRpYWxFeHRlbnQge1xuICBiYm94PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgZ2VvbWV0cnk/OiBHZW9tZXRyeVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBTcGF0aWFsRXh0ZW50VHJhbnNsYXRpb25zXG59XG5cbi8qKlxuICogUGVyaW9kIGlmIGJvdGggc3RhcnQgYW5kIGVuZCBhcmUgcHJvdmlkZWRcbiAqIEluc3RhbnQgaWYgb25seSBzdGFydCBpcyBwcm92aWRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRUZW1wb3JhbEV4dGVudCB7XG4gIHN0YXJ0OiBEYXRlXG4gIGVuZD86IERhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0UmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdkYXRhc2V0J1xuICBzdGF0dXM6IFJlY29yZFN0YXR1c1xuICBsaW5lYWdlOiBzdHJpbmcgLy8gRXhwbGFuYXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGlzIHJlY29yZCAoZS5nOiBob3csIHdoeSlcIlxuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PERhdGFzZXRPbmxpbmVSZXNvdXJjZT5cbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxuICB0ZW1wb3JhbEV4dGVudHM6IEFycmF5PERhdGFzZXRUZW1wb3JhbEV4dGVudD5cbiAgc3BhdGlhbFJlcHJlc2VudGF0aW9uPzogU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZVxufVxuXG5leHBvcnQgdHlwZSBEYXRhc2V0RmVhdHVyZUNhdGFsb2cgPSB7XG4gIGZlYXR1cmVUeXBlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIGRlZmluaXRpb246IHN0cmluZ1xuICAgIGF0dHJpYnV0ZXM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfT5cbiAgfT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlRW5kcG9pbnQge1xuICB1cmw6IFVSTFxuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IFNlcnZpY2VQcm90b2NvbFxuICB0eXBlOiAnZW5kcG9pbnQnXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHRyYW5zbGF0aW9ucz86IE9ubGluZVJlc291cmNlVHJhbnNsYXRpb25zXG59XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VPbmxpbmVSZXNvdXJjZSA9IChTZXJ2aWNlRW5kcG9pbnQgfCBPbmxpbmVMaW5rUmVzb3VyY2UpICYge1xuICB0eXBlOiBPbmxpbmVSZXNvdXJjZVR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdzZXJ2aWNlJ1xuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PFNlcnZpY2VPbmxpbmVSZXNvdXJjZT5cbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldXNlUmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdyZXVzZSdcbiAgbGluZWFnZTogc3RyaW5nIC8vIEV4cGxhbmF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhpcyByZWNvcmQgKGUuZzogaG93LCB3aHkpXCJcbiAgb25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVMaW5rUmVzb3VyY2U+XG4gIHJldXNlVHlwZTogUmV1c2VUeXBlXG4gIHNwYXRpYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0U3BhdGlhbEV4dGVudD5cbiAgdGVtcG9yYWxFeHRlbnRzOiBBcnJheTxEYXRhc2V0VGVtcG9yYWxFeHRlbnQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEZlYXR1cmVUeXBlIHtcbiAgYWxpYXNlczogc3RyaW5nXG4gIGNvZGU6IHN0cmluZ1xuICBpc0Fic3RyYWN0OiBzdHJpbmdcbiAgdHlwZU5hbWU6IHN0cmluZ1xuICBkZWZpbml0aW9uOiBzdHJpbmdcbiAgYXR0cmlidXRlVGFibGU6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBkZWZpbml0aW9uOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgICBjb2RlOiBzdHJpbmdcbiAgfT5cbn1cblxuZXhwb3J0IHR5cGUgUmV1c2VUeXBlID0gJ2FwcGxpY2F0aW9uJyB8ICdtYXAnIHwgJ290aGVyJ1xuXG5leHBvcnQgdHlwZSBPbmxpbmVSZXNvdXJjZSA9IERhdGFzZXRPbmxpbmVSZXNvdXJjZSB8IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVxuXG5leHBvcnQgdHlwZSBDYXRhbG9nUmVjb3JkID0gRGF0YXNldFJlY29yZCB8IFJldXNlUmVjb3JkIHwgU2VydmljZVJlY29yZFxuXG5leHBvcnQgdHlwZSBDYXRhbG9nUmVjb3JkS2V5cyA9XG4gIHwga2V5b2YgRGF0YXNldFJlY29yZFxuICB8IGtleW9mIFJldXNlUmVjb3JkXG4gIHwga2V5b2YgU2VydmljZVJlY29yZFxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBZ0JoRSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQTtBQUNsRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUVoRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxTQUFTO0lBQ1QsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7SUFDVixPQUFPO0lBQ1AsUUFBUTtJQUNSLGFBQWE7SUFDYixhQUFhO0lBQ2IsU0FBUztJQUNULFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtJQUNWLFlBQVk7Q0FDSixDQUFBO0FBSVYsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUE7QUFDM0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFDNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLG9DQUFvQyxDQUFDLENBQUE7QUFFNUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUE7QUFDN0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDbEQsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLENBQUE7QUFDbkQsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFVbEQsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7QUFDeEMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFDdEMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFDekMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUE7QUFFdEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsV0FBVztJQUNYLFNBQVM7SUFDVCxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLFNBQVM7Q0FDVixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHR5cGUgeyBJbmRpdmlkdWFsIH0gZnJvbSAnLi9jb250YWN0Lm1vZGVsJ1xuaW1wb3J0IHR5cGUgeyBPcmdhbml6YXRpb24gfSBmcm9tICcuL29yZ2FuaXphdGlvbi5tb2RlbCdcbmltcG9ydCB0eXBlIHsgR2VvbWV0cnkgfSBmcm9tICdnZW9qc29uJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUsIFRoZXNhdXJ1c01vZGVsIH0gZnJvbSAnLi4vdGhlc2F1cnVzJ1xuaW1wb3J0IHtcbiAgQ29uc3RyYWludFRyYW5zbGF0aW9ucyxcbiAgS2V5d29yZFRyYW5zbGF0aW9ucyxcbiAgTGFuZ3VhZ2VDb2RlLFxuICBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9ucyxcbiAgUmVjb3JkVHJhbnNsYXRpb25zLFxuICBTcGF0aWFsRXh0ZW50VHJhbnNsYXRpb25zLFxufSBmcm9tICcuL3RyYW5zbGF0aW9uLm1vZGVsJ1xuXG50eXBlIFV1aWQgPSBzdHJpbmdcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS51bmtub3duJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kubm90UGxhbm5lZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmFzTmVlZGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuaXJyZWd1bGFyJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuY29udGludWFsJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kucGVyaW9kaWMnKVxuXG5leHBvcnQgY29uc3QgdXBkYXRlRnJlcXVlbmN5Q29kZVZhbHVlcyA9IFtcbiAgJ3Vua25vd24nLFxuICAnbm90UGxhbm5lZCcsXG4gICdhc05lZWRlZCcsXG4gICdpcnJlZ3VsYXInLFxuICAnY29udGludWFsJyxcbiAgJ3BlcmlvZGljJyxcbiAgJ2RhaWx5JyxcbiAgJ3dlZWtseScsXG4gICdmb3J0bmlnaHRseScsXG4gICdzZW1pbW9udGhseScsXG4gICdtb250aGx5JyxcbiAgJ3F1YXJ0ZXJseScsXG4gICdiaWFubnVhbGx5JyxcbiAgJ2FubnVhbGx5JyxcbiAgJ2JpZW5uaWFsbHknLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBVcGRhdGVGcmVxdWVuY3lDb2RlID0gKHR5cGVvZiB1cGRhdGVGcmVxdWVuY3lDb2RlVmFsdWVzKVtudW1iZXJdXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGF5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kud2VlaycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRoJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kueWVhcicpXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGFpbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS53ZWVrbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5mb3J0bmlnaHRseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRobHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5xdWFydGVybHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5iaWFubnVhbGx5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuYW5udWFsbHknKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5zZW1pbW9udGhseScpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmJpZW5uaWFsbHknKVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGcmVxdWVuY3lDdXN0b20gPSB7XG4gIHVwZGF0ZWRUaW1lczogbnVtYmVyIC8vIHRoaXMgc2hvdWxkIGJlIGFuIGludGVnZXJcbiAgcGVyOiAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAneWVhcidcbn1cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeSA9IFVwZGF0ZUZyZXF1ZW5jeUNvZGUgfCBVcGRhdGVGcmVxdWVuY3lDdXN0b21cblxuZXhwb3J0IHR5cGUgUmVjb3JkS2luZCA9ICdkYXRhc2V0JyB8ICdzZXJ2aWNlJyB8ICdyZXVzZSdcblxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5jb21wbGV0ZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5vbmdvaW5nJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMudW5kZXJfZGV2ZWxvcG1lbnQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnN0YXR1cy5kZXByZWNhdGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMucmVtb3ZlZCcpXG5cbmV4cG9ydCBjb25zdCBSZWNvcmRTdGF0dXNWYWx1ZXMgPSBbXG4gICdjb21wbGV0ZWQnLFxuICAnb25nb2luZycsXG4gICd1bmRlcl9kZXZlbG9wbWVudCcsXG4gICdkZXByZWNhdGVkJyxcbiAgJ3JlbW92ZWQnLFxuXVxuZXhwb3J0IHR5cGUgUmVjb3JkU3RhdHVzID0gKHR5cGVvZiBSZWNvcmRTdGF0dXNWYWx1ZXMpW251bWJlcl1cblxuZXhwb3J0IHR5cGUgQ29uc3RyYWludCA9IHtcbiAgdGV4dDogc3RyaW5nXG4gIHVybD86IFVSTFxuXG4gIHRyYW5zbGF0aW9ucz86IENvbnN0cmFpbnRUcmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZSA9XG4gIHwgJ2dyaWQnXG4gIHwgJ3ZlY3RvcidcbiAgfCAndGluJ1xuICB8ICd0YWJsZSdcbiAgfCAncG9pbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5d29yZCB7XG4gIGtleT86IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHR5cGU6IEtleXdvcmRUeXBlXG4gIHRoZXNhdXJ1cz86IFRoZXNhdXJ1c01vZGVsXG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuXG4gIHRyYW5zbGF0aW9ucz86IEtleXdvcmRUcmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlUmVjb3JkIHtcbiAgdW5pcXVlSWRlbnRpZmllcjogVXVpZFxuICBvd25lck9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uXG4gIGNvbnRhY3RzOiBBcnJheTxJbmRpdmlkdWFsPlxuICB0aXRsZTogc3RyaW5nXG4gIGFic3RyYWN0OiBzdHJpbmdcbiAgcmVjb3JkQ3JlYXRlZD86IERhdGVcbiAgcmVjb3JkUHVibGlzaGVkPzogRGF0ZVxuICByZWNvcmRVcGRhdGVkOiBEYXRlXG4gIGtpbmQ6IFJlY29yZEtpbmRcbiAgdG9waWNzOiBBcnJheTxzdHJpbmc+IC8vIFRPRE86IGhhbmRsZSBjb2RlbGlzdHNcbiAga2V5d29yZHM6IEFycmF5PEtleXdvcmQ+XG4gIGxpY2Vuc2VzOiBBcnJheTxDb25zdHJhaW50PlxuICBsZWdhbENvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBzZWN1cml0eUNvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBvdGhlckNvbnN0cmFpbnRzOiBBcnJheTxDb25zdHJhaW50PlxuICBvdmVydmlld3M6IEFycmF5PEdyYXBoaWNPdmVydmlldz5cbiAgZXh0cmFzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgbGFuZGluZ1BhZ2U/OiBVUkxcbiAgdXBkYXRlRnJlcXVlbmN5PzogVXBkYXRlRnJlcXVlbmN5XG5cbiAgLy8gaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgcmVzb3VyY2UgKGRhdGFzZXQsIHNlcnZpY2UpXG4gIHJlc291cmNlSWRlbnRpZmllcj86IHN0cmluZ1xuICBjb250YWN0c0ZvclJlc291cmNlOiBBcnJheTxJbmRpdmlkdWFsPlxuICByZXNvdXJjZUNyZWF0ZWQ/OiBEYXRlXG4gIHJlc291cmNlUHVibGlzaGVkPzogRGF0ZVxuICByZXNvdXJjZVVwZGF0ZWQ/OiBEYXRlXG5cbiAgLy8gbXVsdGlsaW5ndWFsIHN1cHBvcnRcbiAgZGVmYXVsdExhbmd1YWdlOiBMYW5ndWFnZUNvZGVcbiAgb3RoZXJMYW5ndWFnZXM6IEFycmF5PExhbmd1YWdlQ29kZT4gLy8gdGhpcyBzaG91bGQgaW5jbHVkZSBhbGwgbm9uLWRlZmF1bHQgbGFuZ3VhZ2VzIHByZXNlbnQgaW4gdGhlIG1ldGFkYXRhLCBldmVuIGlmIGluY29tcGxldGVseSB0cmFuc2xhdGVkXG5cbiAgdHJhbnNsYXRpb25zPzogUmVjb3JkVHJhbnNsYXRpb25zXG5cbiAgLy8gdG8gYWRkOiBjYW5vbmljYWwgdXJsXG4gIC8vIHRvIGFkZDogc291cmNlIGNhdGFsb2cgKD8/KVxuICAvLyB0byBhZGQ6IGlzIG9wZW4gZGF0YSA/XG59XG5cbi8vIFRPRE86IGhhbmRsZSBhY3R1YWwgY29kZWxpc3RzXG5leHBvcnQgdHlwZSBTZXJ2aWNlUHJvdG9jb2wgPVxuICB8ICd3bXMnXG4gIHwgJ3dmcydcbiAgfCAnd3BzJ1xuICB8ICd3bXRzJ1xuICB8ICdlc3JpUmVzdCdcbiAgfCAnb2djRmVhdHVyZXMnXG4gIHwgJ0dQRkRMJ1xuICB8ICd0bXMnXG4gIHwgJ21hcGxpYnJlLXN0eWxlJ1xuICB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgT25saW5lUmVzb3VyY2VUeXBlID0gJ3NlcnZpY2UnIHwgJ2Rvd25sb2FkJyB8ICdsaW5rJyB8ICdlbmRwb2ludCdcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbiB7XG4gIHR5cGU6ICdzZXJ2aWNlJ1xuICB1cmw6IFVSTFxuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w6IFNlcnZpY2VQcm90b2NvbFxuICBpZGVudGlmaWVySW5TZXJ2aWNlPzogc3RyaW5nIC8vIHNob3VsZCB3ZSBrZWVwIHRoZSBpZGVudGlmaWVySW5TZXJ2aWNlPyByZWFkLXdyaXRlIGR1cGxpY2F0ZSB3aXRoIG5hbWVcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xuICBhY2Nlc3NSZXN0cmljdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbiB7XG4gIHR5cGU6ICdkb3dubG9hZCdcbiAgdXJsOiBVUkxcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgc2l6ZUJ5dGVzPzogbnVtYmVyXG4gIC8vIHJlbW92ZWQgYmVjYXVzZSB3aGF0J3MgdGhlIHVzZT8gZW5jb2RpbmcgY2FuIGJlIGV4cG9zZWQgYnkgdGhlIGZpbGUgc2VydmVyIG9yXG4gIC8vIGV2ZW4gZm91bmQgb3V0IGJ5IHRyaWFsIGFuZCBlcnJvcjsgYmVzaWRlcyB3ZSBjYW4gcmVhc29uYWJseSBleHBlY3QgdW5pY29kZSBvciBpc28gbW9zdCBvZiB0aGUgdGltZVxuICAvLyB0ZXh0RW5jb2Rpbmc/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBhY2Nlc3NTZXJ2aWNlUHJvdG9jb2w/OiBTZXJ2aWNlUHJvdG9jb2xcbiAgdHJhbnNsYXRpb25zPzogT25saW5lUmVzb3VyY2VUcmFuc2xhdGlvbnNcbiAgYWNjZXNzUmVzdHJpY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbmxpbmVMaW5rUmVzb3VyY2Uge1xuICB0eXBlOiAnbGluaydcbiAgdXJsOiBVUkxcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBPbmxpbmVSZXNvdXJjZVRyYW5zbGF0aW9uc1xuICBtaW1lVHlwZT86IHN0cmluZ1xuICBhY2Nlc3NSZXN0cmljdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBEYXRhc2V0T25saW5lUmVzb3VyY2UgPSAoXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb25cbiAgfCBPbmxpbmVMaW5rUmVzb3VyY2VcbikgJiB7XG4gIHR5cGU6IE9ubGluZVJlc291cmNlVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoaWNPdmVydmlldyB7XG4gIHVybDogVVJMXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFNwYXRpYWxFeHRlbnQge1xuICBiYm94PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgZ2VvbWV0cnk/OiBHZW9tZXRyeVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB0cmFuc2xhdGlvbnM/OiBTcGF0aWFsRXh0ZW50VHJhbnNsYXRpb25zXG59XG5cbi8qKlxuICogUGVyaW9kIGlmIGJvdGggc3RhcnQgYW5kIGVuZCBhcmUgcHJvdmlkZWRcbiAqIEluc3RhbnQgaWYgb25seSBzdGFydCBpcyBwcm92aWRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRUZW1wb3JhbEV4dGVudCB7XG4gIHN0YXJ0OiBEYXRlXG4gIGVuZD86IERhdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0UmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdkYXRhc2V0J1xuICBzdGF0dXM6IFJlY29yZFN0YXR1c1xuICBsaW5lYWdlOiBzdHJpbmcgLy8gRXhwbGFuYXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGlzIHJlY29yZCAoZS5nOiBob3csIHdoeSlcIlxuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PERhdGFzZXRPbmxpbmVSZXNvdXJjZT5cbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxuICB0ZW1wb3JhbEV4dGVudHM6IEFycmF5PERhdGFzZXRUZW1wb3JhbEV4dGVudD5cbiAgc3BhdGlhbFJlcHJlc2VudGF0aW9uPzogU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VFbmRwb2ludCB7XG4gIHVybDogVVJMXG4gIGFjY2Vzc1NlcnZpY2VQcm90b2NvbDogU2VydmljZVByb3RvY29sXG4gIHR5cGU6ICdlbmRwb2ludCdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdHJhbnNsYXRpb25zPzogT25saW5lUmVzb3VyY2VUcmFuc2xhdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgU2VydmljZU9ubGluZVJlc291cmNlID0gKFNlcnZpY2VFbmRwb2ludCB8IE9ubGluZUxpbmtSZXNvdXJjZSkgJiB7XG4gIHR5cGU6IE9ubGluZVJlc291cmNlVHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VSZWNvcmQgZXh0ZW5kcyBCYXNlUmVjb3JkIHtcbiAga2luZDogJ3NlcnZpY2UnXG4gIG9ubGluZVJlc291cmNlczogQXJyYXk8U2VydmljZU9ubGluZVJlc291cmNlPlxuICBzcGF0aWFsRXh0ZW50czogQXJyYXk8RGF0YXNldFNwYXRpYWxFeHRlbnQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV1c2VSZWNvcmQgZXh0ZW5kcyBCYXNlUmVjb3JkIHtcbiAga2luZDogJ3JldXNlJ1xuICBsaW5lYWdlOiBzdHJpbmcgLy8gRXhwbGFuYXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGlzIHJlY29yZCAoZS5nOiBob3csIHdoeSlcIlxuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PE9ubGluZUxpbmtSZXNvdXJjZT5cbiAgcmV1c2VUeXBlOiBSZXVzZVR5cGVcbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxuICB0ZW1wb3JhbEV4dGVudHM6IEFycmF5PERhdGFzZXRUZW1wb3JhbEV4dGVudD5cbn1cblxuZXhwb3J0IHR5cGUgRGF0YXNldEZlYXR1cmVDYXRhbG9nID0ge1xuICBmZWF0dXJlVHlwZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBkZWZpbml0aW9uOiBzdHJpbmdcbiAgICBhdHRyaWJ1dGVzOiBEYXRhc2V0RmVhdHVyZUF0dHJpYnV0ZVtdXG4gIH0+XG59XG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRGZWF0dXJlQXR0cmlidXRlVmFsdWUge1xuICBjb2RlPzogc3RyaW5nXG4gIGRlZmluaXRpb24/OiBzdHJpbmdcbiAgbGFiZWw/OiBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEZlYXR1cmVBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVmaW5pdGlvbjogc3RyaW5nXG4gIHR5cGU6IHN0cmluZ1xuICBjb2RlOiBzdHJpbmdcbiAgdmFsdWVzPzogQXJyYXk8RGF0YXNldEZlYXR1cmVBdHRyaWJ1dGVWYWx1ZT5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEZlYXR1cmVUeXBlIHtcbiAgYWxpYXNlczogc3RyaW5nXG4gIGNvZGU6IHN0cmluZ1xuICBpc0Fic3RyYWN0OiBzdHJpbmdcbiAgdHlwZU5hbWU6IHN0cmluZ1xuICBkZWZpbml0aW9uOiBzdHJpbmdcbiAgYXR0cmlidXRlVGFibGU6IEFycmF5PERhdGFzZXRGZWF0dXJlQXR0cmlidXRlPlxufVxuXG5leHBvcnQgdHlwZSBSZXVzZVR5cGUgPSAnYXBwbGljYXRpb24nIHwgJ21hcCcgfCAnb3RoZXInXG5cbmV4cG9ydCB0eXBlIE9ubGluZVJlc291cmNlID0gRGF0YXNldE9ubGluZVJlc291cmNlIHwgU2VydmljZU9ubGluZVJlc291cmNlXG5cbmV4cG9ydCB0eXBlIENhdGFsb2dSZWNvcmQgPSBEYXRhc2V0UmVjb3JkIHwgUmV1c2VSZWNvcmQgfCBTZXJ2aWNlUmVjb3JkXG5cbmV4cG9ydCB0eXBlIENhdGFsb2dSZWNvcmRLZXlzID1cbiAgfCBrZXlvZiBEYXRhc2V0UmVjb3JkXG4gIHwga2V5b2YgUmV1c2VSZWNvcmRcbiAgfCBrZXlvZiBTZXJ2aWNlUmVjb3JkXG4iXX0=
@@ -1,3 +1,3 @@
1
1
  export class RecordsRepositoryInterface {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQXVGL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCwgRGF0YXNldEZlYXR1cmVDYXRhbG9nIH0gZnJvbSAnLi4vbW9kZWwvcmVjb3JkJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2Uge1xuICBhYnN0cmFjdCBzZWFyY2gocGFyYW1zOiBTZWFyY2hQYXJhbXMpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdHM+XG4gIGFic3RyYWN0IGdldE1hdGNoZXNDb3VudChmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgYWJzdHJhY3QgZ2V0UmVjb3JkKHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZCB8IG51bGw+XG4gIGFic3RyYWN0IGdldEZlYXR1cmVDYXRhbG9nKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZFxuICApOiBPYnNlcnZhYmxlPERhdGFzZXRGZWF0dXJlQ2F0YWxvZyB8IG51bGw+XG4gIGFic3RyYWN0IGFnZ3JlZ2F0ZShwYXJhbXM6IEFnZ3JlZ2F0aW9uc1BhcmFtcyk6IE9ic2VydmFibGU8QWdncmVnYXRpb25zPlxuICBhYnN0cmFjdCBnZXRTaW1pbGFyUmVjb3JkcyhcbiAgICBzaW1pbGFyVG86IENhdGFsb2dSZWNvcmRcbiAgKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG4gIGFic3RyYWN0IGZ1enp5U2VhcmNoKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdHM+XG4gIGFic3RyYWN0IGNhbkVkaXRSZWNvcmQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPlxuICAvKipcbiAgICogVGhpcyBlbWl0cyBvbmNlOlxuICAgKiAtIHJlY29yZCBvYmplY3Q7IGlmIGEgZHJhZnQgZXhpc3RzLCB0aGlzIHdpbGwgcmV0dXJuIGl0XG4gICAqIC0gc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVjb3JkIGFzIHRleHRcbiAgICogLSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZCBoYXMgYmVlbiBzYXZlZCBhdCBsZWFzdCBvbmNlIGluIGEgZmluYWwgdmVyc2lvbiAoaS5lLiBub3Qgb25seSBhcyBkcmFmdClcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBib29sZWFuXSB8IG51bGw+XG4gICAqL1xuICBhYnN0cmFjdCBvcGVuUmVjb3JkRm9yRWRpdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBib29sZWFuXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIFRoaXMgZW1pdHMgb25jZTpcbiAgICogLSByZWNvcmQgb2JqZWN0IHdpdGggYSBuZXcgdW5pcXVlIGlkZW50aWZpZXIgYW5kIHN1ZmZpeGVkIHRpdGxlXG4gICAqIC0gc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVjb3JkIGFzIHRleHRcbiAgICogLSBmYWxzZSwgYXMgdGhlIGR1cGxpY2F0ZWQgcmVjb3JkIGlzIGFsd2F5cyBhIGRyYWZ0XG4gICAqIEBwYXJhbSB1bmlxdWVJZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8W0NhdGFsb2dSZWNvcmQsIHN0cmluZywgZmFsc2VdIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JEdXBsaWNhdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCB0cnVlXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nLFxuICAgIHB1Ymxpc2hUb0FsbD86IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkdXBsaWNhdGUgdGhlIGV4dGVybmFsIHJlY29yZCBmcm9tIGdpdmVuIHVybC4gSWYgaXQgc3VjZWVkLCB0aGVuIGl0IHdpbGwgc2F2ZSB0aGUgcmVjb3JkIGFzIGRyYWZ0IGFuZCByZXR1cm4gaXRzIHRlbXBvcmFyeSBpZC5cbiAgICpcbiAgICogQHBhcmFtIHJlY29yZERvd25sb2FkVXJsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8c3RyaW5nPlxuICAgKi9cbiAgYWJzdHJhY3QgZHVwbGljYXRlRXh0ZXJuYWxSZWNvcmQoXG4gICAgcmVjb3JkRG93bmxvYWRVcmw6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPiBSZXR1cm5zIHdoZW4gcmVjb3JkIGlzIGRlbGV0ZWRcbiAgICovXG4gIGFic3RyYWN0IGRlbGV0ZVJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+XG5cbiAgYWJzdHJhY3QgZ2VuZXJhdGVUZW1wb3JhcnlJZCgpOiBzdHJpbmdcblxuICAvKipcbiAgICogQHBhcmFtIHJlY29yZFxuICAgKiBAcGFyYW0gcmVmZXJlbmNlUmVjb3JkU291cmNlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8c3RyaW5nPiBSZXR1cm5zIHRoZSBzb3VyY2Ugb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgc2VyaWFsaXplZCB3aGVuIHNhdmVkXG4gICAqL1xuICBhYnN0cmFjdCBzYXZlUmVjb3JkQXNEcmFmdChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIGFic3RyYWN0IGNsZWFyUmVjb3JkRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogdm9pZFxuICBhYnN0cmFjdCByZWNvcmRIYXNEcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuXG5cbiAgLyoqIHdpbGwgcmV0dXJuIGFsbCBwZW5kaW5nIGRyYWZ0cywgYm90aCBwdWJsaXNoZWQgYW5kIG5vdCBwdWJsaXNoZWQgKi9cbiAgYWJzdHJhY3QgZ2V0QWxsRHJhZnRzKCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBnZXREcmFmdHNDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgYWJzdHJhY3QgZHJhZnRzQ2hhbmdlZCQ6IE9ic2VydmFibGU8dm9pZD5cbiAgYWJzdHJhY3QgaGFzUmVjb3JkQ2hhbmdlZFNpbmNlRHJhZnQoXG4gICAgbG9jYWxSZWNvcmQ6IENhdGFsb2dSZWNvcmRcbiAgKTogT2JzZXJ2YWJsZTx7IHVzZXI6IHN0cmluZzsgZGF0ZTogRGF0ZSB9PlxuICBhYnN0cmFjdCBnZXRSZWNvcmRQdWJsaWNhdGlvblN0YXR1cyh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQTZGL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCwgRGF0YXNldEZlYXR1cmVDYXRhbG9nIH0gZnJvbSAnLi4vbW9kZWwvcmVjb3JkJ1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2Uge1xuICBhYnN0cmFjdCBzZWFyY2gocGFyYW1zOiBTZWFyY2hQYXJhbXMpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdHM+XG4gIGFic3RyYWN0IGdldE1hdGNoZXNDb3VudChmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgYWJzdHJhY3QgZ2V0UmVjb3JkKHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZCB8IG51bGw+XG4gIGFic3RyYWN0IGdldEZlYXR1cmVDYXRhbG9nKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZFxuICApOiBPYnNlcnZhYmxlPERhdGFzZXRGZWF0dXJlQ2F0YWxvZyB8IG51bGw+XG4gIGFic3RyYWN0IGFnZ3JlZ2F0ZShwYXJhbXM6IEFnZ3JlZ2F0aW9uc1BhcmFtcyk6IE9ic2VydmFibGU8QWdncmVnYXRpb25zPlxuICBhYnN0cmFjdCBnZXRTaW1pbGFyUmVjb3JkcyhcbiAgICBzaW1pbGFyVG86IENhdGFsb2dSZWNvcmRcbiAgKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG4gIGFic3RyYWN0IGdldFNvdXJjZXMocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG4gIGFic3RyYWN0IGdldFNvdXJjZU9mKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuICBhYnN0cmFjdCBjYW5EdXBsaWNhdGUocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogYm9vbGVhblxuICBhYnN0cmFjdCBjYW5EZWxldGUocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogT2JzZXJ2YWJsZTxib29sZWFuPlxuICBhYnN0cmFjdCBjYW5FZGl0UmVjb3JkKHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgYWJzdHJhY3QgY2FuRWRpdEluZGV4ZWRSZWNvcmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkKTogT2JzZXJ2YWJsZTxib29sZWFuPlxuICAvKipcbiAgICogVGhpcyBlbWl0cyBvbmNlOlxuICAgKiAtIHJlY29yZCBvYmplY3Q7IGlmIGEgZHJhZnQgZXhpc3RzLCB0aGlzIHdpbGwgcmV0dXJuIGl0XG4gICAqIC0gc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVjb3JkIGFzIHRleHRcbiAgICogLSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZCBoYXMgYmVlbiBzYXZlZCBhdCBsZWFzdCBvbmNlIGluIGEgZmluYWwgdmVyc2lvbiAoaS5lLiBub3Qgb25seSBhcyBkcmFmdClcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBib29sZWFuXSB8IG51bGw+XG4gICAqL1xuICBhYnN0cmFjdCBvcGVuUmVjb3JkRm9yRWRpdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBib29sZWFuXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIFRoaXMgZW1pdHMgb25jZTpcbiAgICogLSByZWNvcmQgb2JqZWN0IHdpdGggYSBuZXcgdW5pcXVlIGlkZW50aWZpZXIgYW5kIHN1ZmZpeGVkIHRpdGxlXG4gICAqIC0gc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVjb3JkIGFzIHRleHRcbiAgICogLSBmYWxzZSwgYXMgdGhlIGR1cGxpY2F0ZWQgcmVjb3JkIGlzIGFsd2F5cyBhIGRyYWZ0XG4gICAqIEBwYXJhbSB1bmlxdWVJZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8W0NhdGFsb2dSZWNvcmQsIHN0cmluZywgZmFsc2VdIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JEdXBsaWNhdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCB0cnVlXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nLFxuICAgIHB1Ymxpc2hUb0FsbD86IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgLyoqXG4gICAqIFRyeSB0byBkdXBsaWNhdGUgdGhlIGV4dGVybmFsIHJlY29yZCBmcm9tIGdpdmVuIHVybC4gSWYgaXQgc3VjZWVkLCB0aGVuIGl0IHdpbGwgc2F2ZSB0aGUgcmVjb3JkIGFzIGRyYWZ0IGFuZCByZXR1cm4gaXRzIHRlbXBvcmFyeSBpZC5cbiAgICpcbiAgICogQHBhcmFtIHJlY29yZERvd25sb2FkVXJsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8c3RyaW5nPlxuICAgKi9cbiAgYWJzdHJhY3QgZHVwbGljYXRlRXh0ZXJuYWxSZWNvcmQoXG4gICAgcmVjb3JkRG93bmxvYWRVcmw6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTx2b2lkPiBSZXR1cm5zIHdoZW4gcmVjb3JkIGlzIGRlbGV0ZWRcbiAgICovXG4gIGFic3RyYWN0IGRlbGV0ZVJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+XG5cbiAgYWJzdHJhY3QgZ2VuZXJhdGVUZW1wb3JhcnlJZCgpOiBzdHJpbmdcblxuICAvKipcbiAgICogQHBhcmFtIHJlY29yZFxuICAgKiBAcGFyYW0gcmVmZXJlbmNlUmVjb3JkU291cmNlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8c3RyaW5nPiBSZXR1cm5zIHRoZSBzb3VyY2Ugb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgc2VyaWFsaXplZCB3aGVuIHNhdmVkXG4gICAqL1xuICBhYnN0cmFjdCBzYXZlUmVjb3JkQXNEcmFmdChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIGFic3RyYWN0IGNsZWFyUmVjb3JkRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogdm9pZFxuICBhYnN0cmFjdCByZWNvcmRIYXNEcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuXG5cbiAgLyoqIHdpbGwgcmV0dXJuIGFsbCBwZW5kaW5nIGRyYWZ0cywgYm90aCBwdWJsaXNoZWQgYW5kIG5vdCBwdWJsaXNoZWQgKi9cbiAgYWJzdHJhY3QgZ2V0QWxsRHJhZnRzKCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBnZXREcmFmdHNDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj5cbiAgYWJzdHJhY3QgZHJhZnRzQ2hhbmdlZCQ6IE9ic2VydmFibGU8dm9pZD5cbiAgYWJzdHJhY3QgaGFzUmVjb3JkQ2hhbmdlZFNpbmNlRHJhZnQoXG4gICAgbG9jYWxSZWNvcmQ6IENhdGFsb2dSZWNvcmRcbiAgKTogT2JzZXJ2YWJsZTx7IHVzZXI6IHN0cmluZzsgZGF0ZTogRGF0ZSB9PlxuICBhYnN0cmFjdCBnZXRSZWNvcmRQdWJsaWNhdGlvblN0YXR1cyh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIGFic3RyYWN0IGdldEFwcGxpY2F0aW9uTGFuZ3VhZ2VzKCk6IE9ic2VydmFibGU8c3RyaW5nW10+XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
3
- import { OgcApiEndpoint, WfsEndpoint, } from '@camptocamp/ogc-client';
3
+ import { OgcApiEndpoint, WfsEndpoint, TmsEndpoint, } from '@camptocamp/ogc-client';
4
4
  import { openDataset, SupportedTypes, } from '../../../../../../libs/util/data-fetcher/src';
5
5
  import { getFileFormat, getFileFormatFromServiceOutput, getMimeTypeForFormat, ProxyService, } from '../../../../../../libs/util/shared/src';
6
6
  import { from, throwError } from 'rxjs';
@@ -147,6 +147,36 @@ export class DataService {
147
147
  throw new Error(`ogc.unreachable.unknown`);
148
148
  });
149
149
  }
150
+ async getGeodataLinksFromTms(tmsLink, keepOriginalLink = false) {
151
+ const endpoint = new TmsEndpoint(tmsLink.url.toString());
152
+ const tileMaps = await endpoint.allTileMaps;
153
+ if (!tileMaps?.length)
154
+ return null;
155
+ // TODO: at some point use the identifierInService field if more that one layers in the TMS service
156
+ const tileMapInfo = await endpoint.getTileMapInfo(tileMaps[0].href);
157
+ // case 1: no styles; return a plain TMS link
158
+ if (!tileMapInfo?.metadata?.length)
159
+ return [tmsLink];
160
+ // case 2: styles present; return each as a separate link
161
+ const styleLinks = tileMapInfo.metadata
162
+ .filter((meta) => meta.href)
163
+ .map((meta) => {
164
+ const fileName = meta.href.split('/').pop() || '';
165
+ const linkName = tmsLink.description || ('name' in tmsLink ? tmsLink.name : '');
166
+ const styleName = fileName.split('.')[0];
167
+ const name = `${linkName} - ${styleName}`;
168
+ return {
169
+ type: 'service',
170
+ url: new URL(meta.href),
171
+ name,
172
+ accessServiceProtocol: 'maplibre-style',
173
+ };
174
+ });
175
+ if (keepOriginalLink) {
176
+ styleLinks.unshift(tmsLink);
177
+ }
178
+ return styleLinks;
179
+ }
150
180
  getDownloadLinksFromEsriRest(esriRestLink) {
151
181
  return ['json', 'geojson'].map((format) => ({
152
182
  ...esriRestLink,
@@ -202,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
202
232
  providedIn: 'root',
203
233
  }]
204
234
  }], ctorParameters: () => [{ type: i1.ProxyService }] });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsR0FFWixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFHTCxXQUFXLEVBRVgsY0FBYyxHQUNmLE1BQU0sOENBQThDLENBQUE7QUFDckQsT0FBTyxFQUNMLGFBQWEsRUFDYiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLFlBQVksR0FDYixNQUFNLHdDQUF3QyxDQUFBO0FBRS9DLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBTWhFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBQy9CLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBQzVCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBQzdCLE1B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TyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDekUsQ0FBQzthQUFNLElBQ0wsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxhQUFhLEVBQzVDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0QsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQTtnQkFDbEQsT0FBTyxXQUFXLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUE7WUFDbkUsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtnQkFDaEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUNuRCxDQUFDOytHQWxRVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHtcbiAgT2djQXBpQ29sbGVjdGlvbkluZm8sXG4gIE9nY0FwaUVuZHBvaW50LFxuICBPZ2NBcGlSZWNvcmQsXG4gIFdmc0VuZHBvaW50LFxuICBXZnNWZXJzaW9uLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHtcbiAgQmFzZVJlYWRlcixcbiAgRmV0Y2hFcnJvcixcbiAgb3BlbkRhdGFzZXQsXG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dCxcbiAgZ2V0TWltZVR5cGVGb3JGb3JtYXQsXG4gIFByb3h5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS5jb3JzJylcbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLmh0dHAnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLmZvcmJpZGRlbicpXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS51bmtub3duJylcbm1hcmtlcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbm1hcmtlcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbm1hcmtlcignb2djLnVucmVhY2hhYmxlLnVua25vd24nKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLm5ldHdvcmsnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLmh0dHAnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnBhcnNlJylcbm1hcmtlcignZGF0YXNldC5lcnJvci51bnN1cHBvcnRlZFR5cGUnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnVua25vd24nKVxuXG5pbnRlcmZhY2UgV2ZzRG93bmxvYWRVcmxzIHtcbiAgYWxsOiB7IFtmb3JtYXQ6IHN0cmluZ106IHN0cmluZyB9XG4gIGdlb2pzb246IHN0cmluZ1xuICBnbWw6IHsgZmVhdHVyZVVybDogc3RyaW5nOyBuYW1lc3BhY2U6IHN0cmluZzsgd2ZzVmVyc2lvbjogV2ZzVmVyc2lvbiB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJveHk6IFByb3h5U2VydmljZSkge31cblxuICBnZXRXZnNFbmRwb2ludCh3ZnNVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8V2ZzRW5kcG9pbnQ+IHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIG5ldyBXZnNFbmRwb2ludCh0aGlzLnByb3h5LmdldFByb3hpZWRVcmwod2ZzVXJsKSkuaXNSZWFkeSgpXG4gICAgKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAnbmV0d29yaycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLmNvcnNgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ2h0dHAnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5odHRwYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdwYXJzZScpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnBhcnNlYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICd1bnN1cHBvcnRlZFR5cGUnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bnN1cHBvcnRlZFR5cGVgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0RG93bmxvYWRVcmxzRnJvbVdmcyhcbiAgICB3ZnNVcmw6IHN0cmluZyxcbiAgICBmZWF0dXJlVHlwZU5hbWU6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFdmc0Rvd25sb2FkVXJscz4ge1xuICAgIHJldHVybiB0aGlzLmdldFdmc0VuZHBvaW50KHdmc1VybCkucGlwZShcbiAgICAgIG1hcCgoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVzKClcbiAgICAgICAgY29uc3QgZmVhdHVyZVR5cGUgPSBlbmRwb2ludC5nZXRGZWF0dXJlVHlwZVN1bW1hcnkoXG4gICAgICAgICAgZmVhdHVyZVR5cGVzLmxlbmd0aCA9PT0gMSAmJiAhZmVhdHVyZVR5cGVOYW1lXG4gICAgICAgICAgICA/IGZlYXR1cmVUeXBlc1swXS5uYW1lXG4gICAgICAgICAgICA6IGZlYXR1cmVUeXBlTmFtZVxuICAgICAgICApXG4gICAgICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dmcy5mZWF0dXJldHlwZS5ub3Rmb3VuZCcpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbGw6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBjdXJyLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICAgIGdlb2pzb246IGVuZHBvaW50LnN1cHBvcnRzSnNvbihmZWF0dXJlVHlwZS5uYW1lKVxuICAgICAgICAgICAgPyBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBnbWw6XG4gICAgICAgICAgICBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgIGYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZ21sJylcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIChmZWF0dXJlVHlwZS5kZWZhdWx0Q3JzID09PSAnRVBTRzo0MzI2JyB8fFxuICAgICAgICAgICAgICBmZWF0dXJlVHlwZS5vdGhlckNycz8uaW5jbHVkZXMoJ0VQU0c6NDMyNicpKVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVVcmw6IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMuZmluZCgoZikgPT5cbiAgICAgICAgICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogZmVhdHVyZVR5cGUubmFtZSxcbiAgICAgICAgICAgICAgICAgIHdmc1ZlcnNpb246IGVuZHBvaW50LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRXZnNGZWF0dXJlQ291bnQoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGVuZHBvaW50KSA9PlxuICAgICAgICBmcm9tKGVuZHBvaW50LmdldEZlYXR1cmVUeXBlRnVsbChmZWF0dXJlVHlwZU5hbWUpKS5waXBlKFxuICAgICAgICAgIG1hcCgoZmVhdHVyZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVUeXBlLm9iamVjdENvdW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGFwaVVybDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0UHJveGllZFVybChcbiAgICAgIGAke2FwaVVybH0vcXVlcnk/Zj0ke2Zvcm1hdH0md2hlcmU9MT0xJm91dEZpZWxkcz0qYFxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkTGlua3NGcm9tV2ZzKFxuICAgIHdmc0xpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IE9ic2VydmFibGU8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICAvLyBQb3VyIERMIHRvdXRlcyBsZXMgZG9ubsOpZXNcbiAgICByZXR1cm4gdGhpcy5nZXREb3dubG9hZFVybHNGcm9tV2ZzKFxuICAgICAgd2ZzTGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgIHdmc0xpbmsubmFtZVxuICAgICkucGlwZShcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBpZiAodXJscy5nZW9qc29uKSB7XG4gICAgICAgICAgdXJscy5hbGxbJ2FwcGxpY2F0aW9uL2pzb24nXSA9IHVybHMuZ2VvanNvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmxzXG4gICAgICB9KSxcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXM6IERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdID0gT2JqZWN0LmtleXModXJscy5hbGwpLm1hcChcbiAgICAgICAgICAoZm9ybWF0KSA9PiAoe1xuICAgICAgICAgICAgLi4ud2ZzTGluayxcbiAgICAgICAgICAgIG5hbWU6IHdmc0xpbmsubmFtZSxcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCcgYXMgY29uc3QsXG4gICAgICAgICAgICB1cmw6IG5ldyBVUkwodXJscy5hbGxbZm9ybWF0XSksXG4gICAgICAgICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoXG4gICAgICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBhc3luYyBnZXREb3dubG9hZExpbmtzRnJvbU9nY0FwaUZlYXR1cmVzKFxuICAgIG9nY0FwaUxpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IFByb21pc2U8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uSW5mbyA9IGF3YWl0IHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbU9nY0FwaShcbiAgICAgIG9nY0FwaUxpbmsudXJsLmhyZWZcbiAgICApXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JbmZvLmJ1bGtEb3dubG9hZExpbmtzKS5tYXAoKGRvd25sb2FkTGluaykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2djQXBpTGluayxcbiAgICAgICAgbmFtZTogY29sbGVjdGlvbkluZm8uaWQsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIHVybDogbmV3IFVSTChjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rc1tkb3dubG9hZExpbmtdKSxcbiAgICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KFxuICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChkb3dubG9hZExpbmspXG4gICAgICAgICksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaUNvbGxlY3Rpb25JbmZvPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgT2djQXBpRW5kcG9pbnQodXJsKVxuICAgIHJldHVybiBhd2FpdCBlbmRwb2ludC5hbGxDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBlbmRwb2ludC5nZXRDb2xsZWN0aW9uSW5mbyhjb2xsZWN0aW9uc1swXS5uYW1lKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbXNGcm9tT2djQXBpKHVybDogc3RyaW5nKTogUHJvbWlzZTxPZ2NBcGlSZWNvcmQ+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpXG4gICAgcmV0dXJuIGF3YWl0IGVuZHBvaW50LmZlYXR1cmVDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5sZW5ndGhcbiAgICAgICAgICA/IGVuZHBvaW50LmdldENvbGxlY3Rpb25JdGVtKGNvbGxlY3Rpb25zWzBdLCAnMScpXG4gICAgICAgICAgOiBudWxsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgIH0pXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbUVzcmlSZXN0KFxuICAgIGVzcmlSZXN0TGluazogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgKTogRGF0YXNldE9ubGluZVJlc291cmNlW10ge1xuICAgIHJldHVybiBbJ2pzb24nLCAnZ2VvanNvbiddLm1hcCgoZm9ybWF0KSA9PiAoe1xuICAgICAgLi4uZXNyaVJlc3RMaW5rLFxuICAgICAgdXJsOiBuZXcgVVJMKFxuICAgICAgICB0aGlzLmdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGVzcmlSZXN0TGluay51cmwudG9TdHJpbmcoKSwgZm9ybWF0KVxuICAgICAgKSxcbiAgICAgIG1pbWVUeXBlOiBnZXRNaW1lVHlwZUZvckZvcm1hdChnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZm9ybWF0KSksXG4gICAgfSkpXG4gIH1cblxuICByZWFkQXNHZW9Kc29uKFxuICAgIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgICBjYWNoZUFjdGl2ZTogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPEZlYXR1cmVDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldChsaW5rLCBjYWNoZUFjdGl2ZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGF0YXNldCkgPT4gZGF0YXNldC5zZWxlY3RBbGwoKS5yZWFkKCkpLFxuICAgICAgbWFwKChmZWF0dXJlcykgPT4gKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICBnZXREYXRhc2V0KFxuICAgIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgICBjYWNoZUFjdGl2ZTogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPEJhc2VSZWFkZXI+IHtcbiAgICBpZiAobGluay50eXBlID09PSAnc2VydmljZScgJiYgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3ZnMnKSB7XG4gICAgICBjb25zdCB3ZnNVcmxFbmRwb2ludCA9IHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsaW5rLnVybC50b1N0cmluZygpKVxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KFxuICAgICAgICAgIHdmc1VybEVuZHBvaW50LFxuICAgICAgICAgICd3ZnMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdmc0ZlYXR1cmVUeXBlOiBsaW5rLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYWNoZUFjdGl2ZVxuICAgICAgICApXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChsaW5rLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgIGNvbnN0IGxpbmtQcm94aWZpZWRVcmwgPSB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGluay51cmwudG9TdHJpbmcoKSlcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgICAgIGNvbnN0IHN1cHBvcnRlZFR5cGUgPVxuICAgICAgICBTdXBwb3J0ZWRUeXBlcy5pbmRleE9mKGZvcm1hdCBhcyBhbnkpID4gLTFcbiAgICAgICAgICA/IChmb3JtYXQgYXMgU3VwcG9ydGVkVHlwZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KGxpbmtQcm94aWZpZWRVcmwsIHN1cHBvcnRlZFR5cGUsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICApLnBpcGUoKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdlc3JpUmVzdCdcbiAgICApIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoXG4gICAgICAgIGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgICdnZW9qc29uJ1xuICAgICAgKVxuICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFzZXQodXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpKS5waXBlKClcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnb2djRmVhdHVyZXMnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkobGluay51cmwuaHJlZikpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbkluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBnZW9qc29uVXJsID0gY29sbGVjdGlvbkluZm8uanNvbkRvd25sb2FkTGlua1xuICAgICAgICAgIHJldHVybiBvcGVuRGF0YXNldChnZW9qc29uVXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHVybCkgPT4ge1xuICAgICAgICAgIGlmICh1cmwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdwcm90b2NvbCBub3Qgc3VwcG9ydGVkJylcbiAgfVxufVxuIl19
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsRUFFWCxXQUFXLEdBQ1osTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEVBR0wsV0FBVyxFQUVYLGNBQWMsR0FDZixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFDTCxhQUFhLEVBQ2IsOEJBQThCLEVBQzlCLG9CQUFvQixFQUNwQixZQUFZLEdBQ2IsTUFBTSx3Q0FBd0MsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7OztBQU1oRSxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtBQUM5QixNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtBQUNsQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtBQUNyQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTtBQUNqQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtBQUMvQixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUM1QixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FB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QUFBO0lBQ25ELENBQUM7K0dBdFNVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQge1xuICBPZ2NBcGlDb2xsZWN0aW9uSW5mbyxcbiAgT2djQXBpRW5kcG9pbnQsXG4gIE9nY0FwaVJlY29yZCxcbiAgV2ZzRW5kcG9pbnQsXG4gIFdmc1ZlcnNpb24sXG4gIFRtc0VuZHBvaW50LFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHtcbiAgQmFzZVJlYWRlcixcbiAgRmV0Y2hFcnJvcixcbiAgb3BlbkRhdGFzZXQsXG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dCxcbiAgZ2V0TWltZVR5cGVGb3JGb3JtYXQsXG4gIFByb3h5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS5jb3JzJylcbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLmh0dHAnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLmZvcmJpZGRlbicpXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS51bmtub3duJylcbm1hcmtlcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbm1hcmtlcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbm1hcmtlcignb2djLnVucmVhY2hhYmxlLnVua25vd24nKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLm5ldHdvcmsnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLmh0dHAnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnBhcnNlJylcbm1hcmtlcignZGF0YXNldC5lcnJvci51bnN1cHBvcnRlZFR5cGUnKVxubWFya2VyKCdkYXRhc2V0LmVycm9yLnVua25vd24nKVxuXG5pbnRlcmZhY2UgV2ZzRG93bmxvYWRVcmxzIHtcbiAgYWxsOiB7IFtmb3JtYXQ6IHN0cmluZ106IHN0cmluZyB9XG4gIGdlb2pzb246IHN0cmluZ1xuICBnbWw6IHsgZmVhdHVyZVVybDogc3RyaW5nOyBuYW1lc3BhY2U6IHN0cmluZzsgd2ZzVmVyc2lvbjogV2ZzVmVyc2lvbiB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJveHk6IFByb3h5U2VydmljZSkge31cblxuICBnZXRXZnNFbmRwb2ludCh3ZnNVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8V2ZzRW5kcG9pbnQ+IHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIG5ldyBXZnNFbmRwb2ludCh0aGlzLnByb3h5LmdldFByb3hpZWRVcmwod2ZzVXJsKSkuaXNSZWFkeSgpXG4gICAgKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvcikgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAnbmV0d29yaycpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLmNvcnNgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ2h0dHAnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5odHRwYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdwYXJzZScpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgd2ZzLnVucmVhY2hhYmxlLnBhcnNlYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICd1bnN1cHBvcnRlZFR5cGUnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bnN1cHBvcnRlZFR5cGVgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0RG93bmxvYWRVcmxzRnJvbVdmcyhcbiAgICB3ZnNVcmw6IHN0cmluZyxcbiAgICBmZWF0dXJlVHlwZU5hbWU6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFdmc0Rvd25sb2FkVXJscz4ge1xuICAgIHJldHVybiB0aGlzLmdldFdmc0VuZHBvaW50KHdmc1VybCkucGlwZShcbiAgICAgIG1hcCgoZW5kcG9pbnQpID0+IHtcbiAgICAgICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVzKClcbiAgICAgICAgY29uc3QgZmVhdHVyZVR5cGUgPSBlbmRwb2ludC5nZXRGZWF0dXJlVHlwZVN1bW1hcnkoXG4gICAgICAgICAgZmVhdHVyZVR5cGVzLmxlbmd0aCA9PT0gMSAmJiAhZmVhdHVyZVR5cGVOYW1lXG4gICAgICAgICAgICA/IGZlYXR1cmVUeXBlc1swXS5uYW1lXG4gICAgICAgICAgICA6IGZlYXR1cmVUeXBlTmFtZVxuICAgICAgICApXG4gICAgICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dmcy5mZWF0dXJldHlwZS5ub3Rmb3VuZCcpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbGw6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBjdXJyLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApLFxuICAgICAgICAgIGdlb2pzb246IGVuZHBvaW50LnN1cHBvcnRzSnNvbihmZWF0dXJlVHlwZS5uYW1lKVxuICAgICAgICAgICAgPyBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBnbWw6XG4gICAgICAgICAgICBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgIGYudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZ21sJylcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIChmZWF0dXJlVHlwZS5kZWZhdWx0Q3JzID09PSAnRVBTRzo0MzI2JyB8fFxuICAgICAgICAgICAgICBmZWF0dXJlVHlwZS5vdGhlckNycz8uaW5jbHVkZXMoJ0VQU0c6NDMyNicpKVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGZlYXR1cmVVcmw6IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRGb3JtYXQ6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMuZmluZCgoZikgPT5cbiAgICAgICAgICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogZmVhdHVyZVR5cGUubmFtZSxcbiAgICAgICAgICAgICAgICAgIHdmc1ZlcnNpb246IGVuZHBvaW50LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXRXZnNGZWF0dXJlQ291bnQoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGVuZHBvaW50KSA9PlxuICAgICAgICBmcm9tKGVuZHBvaW50LmdldEZlYXR1cmVUeXBlRnVsbChmZWF0dXJlVHlwZU5hbWUpKS5waXBlKFxuICAgICAgICAgIG1hcCgoZmVhdHVyZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVUeXBlLm9iamVjdENvdW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGFwaVVybDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZ2V0UHJveGllZFVybChcbiAgICAgIGAke2FwaVVybH0vcXVlcnk/Zj0ke2Zvcm1hdH0md2hlcmU9MT0xJm91dEZpZWxkcz0qYFxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkTGlua3NGcm9tV2ZzKFxuICAgIHdmc0xpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IE9ic2VydmFibGU8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICAvLyBQb3VyIERMIHRvdXRlcyBsZXMgZG9ubsOpZXNcbiAgICByZXR1cm4gdGhpcy5nZXREb3dubG9hZFVybHNGcm9tV2ZzKFxuICAgICAgd2ZzTGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgIHdmc0xpbmsubmFtZVxuICAgICkucGlwZShcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBpZiAodXJscy5nZW9qc29uKSB7XG4gICAgICAgICAgdXJscy5hbGxbJ2FwcGxpY2F0aW9uL2pzb24nXSA9IHVybHMuZ2VvanNvblxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmxzXG4gICAgICB9KSxcbiAgICAgIG1hcCgodXJscykgPT4ge1xuICAgICAgICBjb25zdCByZXNvdXJjZXM6IERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdID0gT2JqZWN0LmtleXModXJscy5hbGwpLm1hcChcbiAgICAgICAgICAoZm9ybWF0KSA9PiAoe1xuICAgICAgICAgICAgLi4ud2ZzTGluayxcbiAgICAgICAgICAgIG5hbWU6IHdmc0xpbmsubmFtZSxcbiAgICAgICAgICAgIHR5cGU6ICdkb3dubG9hZCcgYXMgY29uc3QsXG4gICAgICAgICAgICB1cmw6IG5ldyBVUkwodXJscy5hbGxbZm9ybWF0XSksXG4gICAgICAgICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoXG4gICAgICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHJlc291cmNlc1xuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBhc3luYyBnZXREb3dubG9hZExpbmtzRnJvbU9nY0FwaUZlYXR1cmVzKFxuICAgIG9nY0FwaUxpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uXG4gICk6IFByb21pc2U8RGF0YXNldE9ubGluZVJlc291cmNlW10+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uSW5mbyA9IGF3YWl0IHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbU9nY0FwaShcbiAgICAgIG9nY0FwaUxpbmsudXJsLmhyZWZcbiAgICApXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25JbmZvLmJ1bGtEb3dubG9hZExpbmtzKS5tYXAoKGRvd25sb2FkTGluaykgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2djQXBpTGluayxcbiAgICAgICAgbmFtZTogY29sbGVjdGlvbkluZm8uaWQsXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIHVybDogbmV3IFVSTChjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rc1tkb3dubG9hZExpbmtdKSxcbiAgICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KFxuICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChkb3dubG9hZExpbmspXG4gICAgICAgICksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaUNvbGxlY3Rpb25JbmZvPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgT2djQXBpRW5kcG9pbnQodXJsKVxuICAgIHJldHVybiBhd2FpdCBlbmRwb2ludC5hbGxDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBlbmRwb2ludC5nZXRDb2xsZWN0aW9uSW5mbyhjb2xsZWN0aW9uc1swXS5uYW1lKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbXNGcm9tT2djQXBpKHVybDogc3RyaW5nKTogUHJvbWlzZTxPZ2NBcGlSZWNvcmQ+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpXG4gICAgcmV0dXJuIGF3YWl0IGVuZHBvaW50LmZlYXR1cmVDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5sZW5ndGhcbiAgICAgICAgICA/IGVuZHBvaW50LmdldENvbGxlY3Rpb25JdGVtKGNvbGxlY3Rpb25zWzBdLCAnMScpXG4gICAgICAgICAgOiBudWxsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRHZW9kYXRhTGlua3NGcm9tVG1zKFxuICAgIHRtc0xpbms6IERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICAgIGtlZXBPcmlnaW5hbExpbmsgPSBmYWxzZVxuICApOiBQcm9taXNlPERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uW10+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBUbXNFbmRwb2ludCh0bXNMaW5rLnVybC50b1N0cmluZygpKVxuICAgIGNvbnN0IHRpbGVNYXBzID0gYXdhaXQgZW5kcG9pbnQuYWxsVGlsZU1hcHNcbiAgICBpZiAoIXRpbGVNYXBzPy5sZW5ndGgpIHJldHVybiBudWxsXG5cbiAgICAvLyBUT0RPOiBhdCBzb21lIHBvaW50IHVzZSB0aGUgaWRlbnRpZmllckluU2VydmljZSBmaWVsZCBpZiBtb3JlIHRoYXQgb25lIGxheWVycyBpbiB0aGUgVE1TIHNlcnZpY2VcbiAgICBjb25zdCB0aWxlTWFwSW5mbyA9IGF3YWl0IGVuZHBvaW50LmdldFRpbGVNYXBJbmZvKHRpbGVNYXBzWzBdLmhyZWYpXG5cbiAgICAvLyBjYXNlIDE6IG5vIHN0eWxlczsgcmV0dXJuIGEgcGxhaW4gVE1TIGxpbmtcbiAgICBpZiAoIXRpbGVNYXBJbmZvPy5tZXRhZGF0YT8ubGVuZ3RoKSByZXR1cm4gW3Rtc0xpbmtdXG5cbiAgICAvLyBjYXNlIDI6IHN0eWxlcyBwcmVzZW50OyByZXR1cm4gZWFjaCBhcyBhIHNlcGFyYXRlIGxpbmtcbiAgICBjb25zdCBzdHlsZUxpbmtzID0gdGlsZU1hcEluZm8ubWV0YWRhdGFcbiAgICAgIC5maWx0ZXIoKG1ldGEpID0+IG1ldGEuaHJlZilcbiAgICAgIC5tYXAoKG1ldGEpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBtZXRhLmhyZWYuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJ1xuICAgICAgICBjb25zdCBsaW5rTmFtZSA9XG4gICAgICAgICAgdG1zTGluay5kZXNjcmlwdGlvbiB8fCAoJ25hbWUnIGluIHRtc0xpbmsgPyB0bXNMaW5rLm5hbWUgOiAnJylcbiAgICAgICAgY29uc3Qgc3R5bGVOYW1lID0gZmlsZU5hbWUuc3BsaXQoJy4nKVswXVxuICAgICAgICBjb25zdCBuYW1lID0gYCR7bGlua05hbWV9IC0gJHtzdHlsZU5hbWV9YFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgICAgICB1cmw6IG5ldyBVUkwobWV0YS5ocmVmKSxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGFjY2Vzc1NlcnZpY2VQcm90b2NvbDogJ21hcGxpYnJlLXN0eWxlJyxcbiAgICAgICAgfSBhcyBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICAgICAgfSlcbiAgICBpZiAoa2VlcE9yaWdpbmFsTGluaykge1xuICAgICAgc3R5bGVMaW5rcy51bnNoaWZ0KHRtc0xpbmspXG4gICAgfVxuICAgIHJldHVybiBzdHlsZUxpbmtzXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbUVzcmlSZXN0KFxuICAgIGVzcmlSZXN0TGluazogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgKTogRGF0YXNldE9ubGluZVJlc291cmNlW10ge1xuICAgIHJldHVybiBbJ2pzb24nLCAnZ2VvanNvbiddLm1hcCgoZm9ybWF0KSA9PiAoe1xuICAgICAgLi4uZXNyaVJlc3RMaW5rLFxuICAgICAgdXJsOiBuZXcgVVJMKFxuICAgICAgICB0aGlzLmdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGVzcmlSZXN0TGluay51cmwudG9TdHJpbmcoKSwgZm9ybWF0KVxuICAgICAgKSxcbiAgICAgIG1pbWVUeXBlOiBnZXRNaW1lVHlwZUZvckZvcm1hdChnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZm9ybWF0KSksXG4gICAgfSkpXG4gIH1cblxuICByZWFkQXNHZW9Kc29uKFxuICAgIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgICBjYWNoZUFjdGl2ZTogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPEZlYXR1cmVDb2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YXNldChsaW5rLCBjYWNoZUFjdGl2ZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGF0YXNldCkgPT4gZGF0YXNldC5zZWxlY3RBbGwoKS5yZWFkKCkpLFxuICAgICAgbWFwKChmZWF0dXJlcykgPT4gKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICBnZXREYXRhc2V0KFxuICAgIGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSxcbiAgICBjYWNoZUFjdGl2ZTogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPEJhc2VSZWFkZXI+IHtcbiAgICBpZiAobGluay50eXBlID09PSAnc2VydmljZScgJiYgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3ZnMnKSB7XG4gICAgICBjb25zdCB3ZnNVcmxFbmRwb2ludCA9IHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsaW5rLnVybC50b1N0cmluZygpKVxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KFxuICAgICAgICAgIHdmc1VybEVuZHBvaW50LFxuICAgICAgICAgICd3ZnMnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdmc0ZlYXR1cmVUeXBlOiBsaW5rLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjYWNoZUFjdGl2ZVxuICAgICAgICApXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChsaW5rLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgIGNvbnN0IGxpbmtQcm94aWZpZWRVcmwgPSB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGluay51cmwudG9TdHJpbmcoKSlcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgICAgIGNvbnN0IHN1cHBvcnRlZFR5cGUgPVxuICAgICAgICBTdXBwb3J0ZWRUeXBlcy5pbmRleE9mKGZvcm1hdCBhcyBhbnkpID4gLTFcbiAgICAgICAgICA/IChmb3JtYXQgYXMgU3VwcG9ydGVkVHlwZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KGxpbmtQcm94aWZpZWRVcmwsIHN1cHBvcnRlZFR5cGUsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICApLnBpcGUoKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdlc3JpUmVzdCdcbiAgICApIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoXG4gICAgICAgIGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgICdnZW9qc29uJ1xuICAgICAgKVxuICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFzZXQodXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpKS5waXBlKClcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnb2djRmVhdHVyZXMnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkobGluay51cmwuaHJlZikpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbkluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBnZW9qc29uVXJsID0gY29sbGVjdGlvbkluZm8uanNvbkRvd25sb2FkTGlua1xuICAgICAgICAgIHJldHVybiBvcGVuRGF0YXNldChnZW9qc29uVXJsLCAnZ2VvanNvbicsIHVuZGVmaW5lZCwgY2FjaGVBY3RpdmUpXG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHVybCkgPT4ge1xuICAgICAgICAgIGlmICh1cmwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdwcm90b2NvbCBub3Qgc3VwcG9ydGVkJylcbiAgfVxufVxuIl19