geonetwork-ui 2.4.2-dev.ff0aab388 → 2.5.0-dev.6d78023ff

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 (185) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -1
  3. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +17 -5
  4. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +2 -2
  5. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  6. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  7. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +4 -14
  8. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +12 -17
  9. package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +3 -3
  10. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +3 -3
  11. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +3 -4
  12. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +3 -3
  13. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +31 -40
  14. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +3 -3
  15. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +3 -3
  16. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
  17. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +8 -9
  18. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +5 -25
  19. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +5 -4
  20. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +3 -3
  21. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +11 -11
  22. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +10 -2
  23. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +6 -3
  24. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +3 -3
  25. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  26. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +6 -3
  27. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  28. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  29. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  30. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  31. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  32. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +18 -10
  33. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +3 -1
  34. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +15 -13
  35. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  36. package/esm2022/libs/util/data-fetcher/src/lib/data-fetcher.mjs +5 -1
  37. package/esm2022/libs/util/data-fetcher/src/lib/headers.mjs +3 -2
  38. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +8 -3
  39. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +97 -0
  40. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +3 -3
  41. package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +41 -0
  42. package/esm2022/libs/util/shared/src/lib/services/index.mjs +2 -1
  43. package/esm2022/libs/util/shared/src/lib/utils/temporal-extent-union.mjs +4 -4
  44. package/esm2022/translations/de.json +20 -5
  45. package/esm2022/translations/en.json +29 -14
  46. package/esm2022/translations/es.json +20 -5
  47. package/esm2022/translations/fr.json +30 -15
  48. package/esm2022/translations/it.json +39 -26
  49. package/esm2022/translations/nl.json +20 -5
  50. package/esm2022/translations/pt.json +20 -5
  51. package/fesm2022/geonetwork-ui.mjs +942 -534
  52. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  53. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  54. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  55. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +2 -1
  56. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  57. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  58. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  59. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  60. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  61. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -6
  62. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  63. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +0 -1
  64. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  65. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +7 -14
  66. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  67. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +2 -2
  68. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  69. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +1 -6
  70. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  71. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  72. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +3 -3
  73. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +1 -1
  74. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  75. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +2 -1
  76. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  77. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  78. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  79. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -1
  80. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  81. package/libs/ui/dataviz/src/index.d.ts +2 -2
  82. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  83. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  84. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  85. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  86. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  87. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  88. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  89. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  90. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  91. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +5 -0
  92. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  93. package/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.d.ts.map +1 -1
  94. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -2
  95. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  96. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  97. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  98. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts +3 -2
  99. package/libs/util/data-fetcher/src/lib/data-fetcher.d.ts.map +1 -1
  100. package/libs/util/data-fetcher/src/lib/headers.d.ts.map +1 -1
  101. package/libs/util/data-fetcher/src/lib/model.d.ts +2 -2
  102. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  103. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts +21 -0
  104. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -0
  105. package/libs/util/shared/src/lib/services/date.service.d.ts +13 -0
  106. package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -0
  107. package/libs/util/shared/src/lib/services/index.d.ts +1 -0
  108. package/libs/util/shared/src/lib/services/index.d.ts.map +1 -1
  109. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts +2 -1
  110. package/libs/util/shared/src/lib/utils/temporal-extent-union.d.ts.map +1 -1
  111. package/package.json +1 -1
  112. package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -0
  113. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -2
  114. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +3 -0
  115. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +19 -5
  116. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +1 -5
  117. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +1 -1
  118. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  119. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  120. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -14
  121. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  122. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +9 -18
  123. package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +1 -1
  124. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.html +1 -1
  125. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +4 -1
  126. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +0 -4
  127. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -2
  128. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +8 -8
  129. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +32 -45
  130. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +1 -1
  131. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +3 -1
  132. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
  133. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +0 -1
  134. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +6 -6
  135. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +24 -17
  136. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -27
  137. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +1 -1
  138. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -1
  139. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +1 -1
  140. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +3 -4
  141. package/src/libs/feature/editor/src/lib/fields.config.ts +9 -1
  142. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -1
  143. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +1 -0
  144. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.html +1 -1
  145. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  146. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +1 -0
  147. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +1 -0
  148. package/src/libs/ui/dataviz/src/index.ts +2 -2
  149. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  150. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  151. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  152. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  153. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  154. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  155. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +3 -3
  156. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +12 -2
  157. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.ts +3 -0
  158. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +1 -1
  159. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +4 -2
  160. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  161. package/src/libs/util/data-fetcher/src/lib/data-fetcher.ts +9 -1
  162. package/src/libs/util/data-fetcher/src/lib/headers.ts +4 -3
  163. package/src/libs/util/data-fetcher/src/lib/model.ts +7 -2
  164. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +134 -0
  165. package/src/libs/util/data-fetcher/src/lib/utils.ts +2 -2
  166. package/src/libs/util/shared/src/lib/services/date.service.ts +45 -0
  167. package/src/libs/util/shared/src/lib/services/index.ts +1 -0
  168. package/src/libs/util/shared/src/lib/utils/temporal-extent-union.ts +6 -3
  169. package/translations/de.json +20 -5
  170. package/translations/en.json +29 -14
  171. package/translations/es.json +20 -5
  172. package/translations/fr.json +30 -15
  173. package/translations/it.json +39 -26
  174. package/translations/nl.json +20 -5
  175. package/translations/pt.json +20 -5
  176. package/translations/sk.json +21 -6
  177. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  178. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  179. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  180. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  181. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  182. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  183. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  184. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  185. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren, ViewContainerRef, } from '@angular/core';
3
3
  import { BadgeComponent, UiInputsModule } from '../../../../../../libs/ui/inputs/src';
4
4
  import { InteractiveTableColumnComponent, InteractiveTableComponent, } from '../../../../../../libs/ui/layout/src';
5
- import { formatUserInfo, getBadgeColor, getFileFormat, getFormatPriority, } from '../../../../../../libs/util/shared/src';
5
+ import { DateService, formatUserInfo, getBadgeColor, getFileFormat, getFormatPriority, } from '../../../../../../libs/util/shared/src';
6
6
  import { TranslateModule } from '@ngx-translate/core';
7
7
  import { ActionMenuComponent } from './action-menu/action-menu.component';
8
8
  import { NgIconComponent, provideIcons } from '@ng-icons/core';
@@ -12,16 +12,18 @@ import { TemplatePortal } from '@angular/cdk/portal';
12
12
  import { matMoreVert } from '@ng-icons/material-icons/baseline';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/cdk/overlay";
15
- import * as i2 from "@angular/common";
16
- import * as i3 from "../../../../inputs/src/lib/button/button.component";
17
- import * as i4 from "../../../../inputs/src/lib/checkbox/checkbox.component";
18
- import * as i5 from "../../../../inputs/src/lib/badge/badge.component";
19
- import * as i6 from "@ngx-translate/core";
15
+ import * as i2 from "../../../../../../libs/util/shared/src";
16
+ import * as i3 from "@angular/common";
17
+ import * as i4 from "../../../../inputs/src/lib/button/button.component";
18
+ import * as i5 from "../../../../inputs/src/lib/checkbox/checkbox.component";
19
+ import * as i6 from "../../../../inputs/src/lib/badge/badge.component";
20
+ import * as i7 from "@ngx-translate/core";
20
21
  export class ResultsTableComponent {
21
- constructor(overlay, viewContainerRef, cdr) {
22
+ constructor(overlay, viewContainerRef, cdr, dateService) {
22
23
  this.overlay = overlay;
23
24
  this.viewContainerRef = viewContainerRef;
24
25
  this.cdr = cdr;
26
+ this.dateService = dateService;
25
27
  this.records = [];
26
28
  this.selectedRecordsIdentifiers = [];
27
29
  this.sortOrder = null;
@@ -81,7 +83,7 @@ export class ResultsTableComponent {
81
83
  }
82
84
  }
83
85
  dateToString(date) {
84
- return date?.toLocaleDateString(undefined, {
86
+ return this.dateService.formatDate(date, {
85
87
  year: 'numeric',
86
88
  month: 'long',
87
89
  day: 'numeric',
@@ -136,8 +138,8 @@ export class ResultsTableComponent {
136
138
  handleRecordSelectedChange(selected, record) {
137
139
  this.recordsSelectedChange.emit([[record], selected]);
138
140
  }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i4.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i5.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i2.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i4.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i5.CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i6.BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete", "closeActionMenu"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
141
143
  }
142
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
143
145
  type: Component,
@@ -151,8 +153,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
151
153
  ActionMenuComponent,
152
154
  NgIconComponent,
153
155
  CdkOverlayOrigin,
154
- ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'9rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
155
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { records: [{
156
+ ], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"!item.extras?.edit && !isDraftPage\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"item.extras?.edit || isDraftPage\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"!item.extras?.edit && !isDraftPage\"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light': !item.extras?.edit && !isDraftPage,\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
157
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i2.DateService }], propDecorators: { records: [{
156
158
  type: Input
157
159
  }], selectedRecordsIdentifiers: [{
158
160
  type: Input
@@ -182,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
184
  type: ViewChildren,
183
185
  args: ['actionMenuButton', { read: ElementRef }]
184
186
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckYsT0FBTyxFQUNMLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsaUJBQWlCLEdBQ2xCLE1BQU0sd0NBQXdDLENBQUE7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8s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R0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHtcbiAgRmllbGRTb3J0LFxuICBTb3J0QnlGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQsIFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgSW50ZXJhY3RpdmVUYWJsZUNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHtcbiAgRmlsZUZvcm1hdCxcbiAgZm9ybWF0VXNlckluZm8sXG4gIGdldEJhZGdlQ29sb3IsXG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZvcm1hdFByaW9yaXR5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBY3Rpb25NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ0ljb25Db21wb25lbnQsIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgaWNvbm9pclVzZXIsIGljb25vaXJMb2NrIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSdcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7IG1hdE1vcmVWZXJ0IH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1yZXN1bHRzLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXN1bHRzLXRhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBJbnRlcmFjdGl2ZVRhYmxlQ29tcG9uZW50LFxuICAgIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gIF0sXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVJY29ucyh7IGljb25vaXJVc2VyLCBpY29ub2lyTG9jaywgbWF0TW9yZVZlcnQgfSldLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRzVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoKSByZWNvcmRzOiBDYXRhbG9nUmVjb3JkW10gPSBbXVxuICBASW5wdXQoKSBzZWxlY3RlZFJlY29yZHNJZGVudGlmaWVyczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBzb3J0T3JkZXI6IFNvcnRCeUZpZWxkID0gbnVsbFxuICBASW5wdXQoKSBoYXNEcmFmdDogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlXG4gIEBJbnB1dCgpIGNhbkR1cGxpY2F0ZTogKHJlY29yZDogQ2F0YWxvZ1JlY29yZCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWVcbiAgQElucHV0KCkgY2FuRGVsZXRlOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZVxuICBASW5wdXQoKSBpc0RyYWZ0UGFnZSA9IGZhbHNlXG4gIEBJbnB1dCgpIGlzRHVwbGljYXRpbmcgPSBmYWxzZVxuXG4gIC8vIGVtaXRzIHRoZSBjb2x1bW4gKGZpZWxkKSBhcyB3ZWxsIGFzIHRoZSBvcmRlclxuICBAT3V0cHV0KCkgc29ydEJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxbc3RyaW5nLCAnYXNjJyB8ICdkZXNjJ10+KClcbiAgQE91dHB1dCgpIHJlY29yZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSBkdXBsaWNhdGVSZWNvcmQgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGRlbGV0ZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgcmVjb3Jkc1NlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICBbQ2F0YWxvZ1JlY29yZFtdLCBib29sZWFuXVxuICA+KClcblxuICBAVmlld0NoaWxkcmVuKCdhY3Rpb25NZW51QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGFjdGlvbk1lbnVCdXR0b25zITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWZcblxuICBpc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgb3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpIHtcbiAgICB0aGlzLmlzQWN0aW9uTWVudU9wZW4gPSB0cnVlXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY29yZHMuaW5kZXhPZihpdGVtKVxuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSB0aGlzLmFjdGlvbk1lbnVCdXR0b25zLnRvQXJyYXkoKVtpbmRleF1cblxuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhidXR0b25FbGVtZW50KVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSlcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgIH0sXG4gICAgICBdKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICB9KVxuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbClcblxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgICB9KVxuICB9XG5cbiAgY2xvc2VBY3Rpb25NZW51KCkge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IGZhbHNlXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIGRhdGVUb1N0cmluZyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnb25saW5lUmVzb3VyY2VzJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgob25saW5lUmVzb3VyY2UpID0+XG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdChvbmxpbmVSZXNvdXJjZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRVc2VySW5mbyh1c2VySW5mbylcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgaWYgKGl0ZW0/LmV4dHJhcz8uZWRpdCB8fCB0aGlzLmlzRHJhZnRQYWdlKVxuICAgICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZUR1cGxpY2F0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBoYW5kbGVEZWxldGUoaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgfVxuXG4gIHNldFNvcnRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSB7XG4gICAgdGhpcy5zb3J0QnlDaGFuZ2UuZW1pdChbY29sLCBvcmRlcl0pXG4gIH1cblxuICBpc1NvcnRlZEJ5KGNvbDogc3RyaW5nKTogJ2Rlc2MnIHwgJ2FzYycgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc29ydE9yZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBzb3J0QXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydE9yZGVyWzBdKVxuICAgICAgPyAodGhpcy5zb3J0T3JkZXIgYXMgRmllbGRTb3J0W10pXG4gICAgICA6IChbdGhpcy5zb3J0T3JkZXJdIGFzIEZpZWxkU29ydFtdKVxuICAgIGZvciAoY29uc3Qgc29ydCBvZiBzb3J0QXJyYXkpIHtcbiAgICAgIGlmIChzb3J0WzFdID09PSBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFtbcmVjb3JkXSwgc2VsZWN0ZWRdKVxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICBbaXNEcmFmdFBhZ2VdPVwiaXNEcmFmdFBhZ2VcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzNyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxuZy1pY29uXG4gICAgICAgIG5hbWU9XCJpY29ub2lyTG9ja1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wdXJwbGVcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIml0ZW0uZXh0cmFzPy5lZGl0IHx8IGlzRHJhZnRQYWdlXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgID48L2duLXVpLWNoZWNrYm94PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFtncm93XT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgPHNwYW4gZGF0YS1jeT1cInJlc3VsdEl0ZW1UaXRsZVwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57e1xuICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiaGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuMmVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic5cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1tZWRpdW1cIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdGV4dC14c1wiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzlyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgncmVjb3JkT3duZXInKVwiXG4gICAgKHNvcnRDaGFuZ2UpPVwic2V0U29ydEJ5KCdyZWNvcmRPd25lcicsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMudXNlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyVXNlclwiIHNpemU9XCIxNnB4XCI+PC9uZy1pY29uPlxuICAgICAgPHNwYW4gZGF0YS1jeT1cIm93bmVySW5mb1wiIGNsYXNzPVwidGV4dC14c1wiPnt7XG4gICAgICAgIGZvcm1hdFVzZXJJbmZvKGl0ZW0uZXh0cmFzPy5vd25lckluZm8pXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFNUQVRVUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic2cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5zdGF0dXM8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICAoaXRlbS5leHRyYXM/LlsnaXNQdWJsaXNoZWRUb0FsbCddXG4gICAgICAgICAgICA/ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLnB1Ymxpc2hlZCdcbiAgICAgICAgICAgIDogJ3JlY29yZC5tZXRhZGF0YS5zdGF0dXMubm90UHVibGlzaGVkJ1xuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIFVQREFURSBEQVRFIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtblxuICAgIFt3aWR0aF09XCInOHJlbSdcIlxuICAgIFtzb3J0YWJsZV09XCJ0cnVlXCJcbiAgICBbYWN0aXZlU29ydF09XCJpc1NvcnRlZEJ5KCdjaGFuZ2VEYXRlJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgnY2hhbmdlRGF0ZScsICRldmVudClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+c2VhcmNoLmZpbHRlcnMuY2hhbmdlRGF0ZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHRleHQtbGVmdCB3LWZ1bGwgdGV4dC14c1wiPlxuICAgICAgICB7e1xuICAgICAgICAgIGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyBkYXRlVG9TdHJpbmcoaXRlbS5yZWNvcmRVcGRhdGVkKVxuICAgICAgICAgICAgOiAnLSdcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gQUNUSU9OIE1FTlUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPiA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxnbi11aS1idXR0b25cbiAgICAgICAgY2RrT3ZlcmxheU9yaWdpblxuICAgICAgICAjYWN0aW9uTWVudUJ1dHRvblxuICAgICAgICAoYnV0dG9uQ2xpY2spPVwib3BlbkFjdGlvbk1lbnUoaXRlbSwgdGVtcGxhdGUpXCJcbiAgICAgICAgdHlwZT1cImxpZ2h0XCJcbiAgICAgICAgZGF0YS10ZXN0PVwicmVjb3JkLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPlxuICAgICAgICA8bmctaWNvblxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd0ZXh0LXB1cnBsZS1saWdodCc6ICFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgbmFtZT1cIm1hdE1vcmVWZXJ0XCJcbiAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICAgICAgPGduLXVpLWFjdGlvbi1tZW51XG4gICAgICAgICAgW2NhbkR1cGxpY2F0ZV09XCJjYW5EdXBsaWNhdGUoaXRlbSkgJiYgIWlzRHVwbGljYXRpbmdcIlxuICAgICAgICAgIFtjYW5EZWxldGVdPVwiY2FuRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAoZHVwbGljYXRlKT1cImhhbmRsZUR1cGxpY2F0ZShpdGVtKVwiXG4gICAgICAgICAgKGRlbGV0ZSk9XCJoYW5kbGVEZWxldGUoaXRlbSlcIlxuICAgICAgICAgIChjbG9zZUFjdGlvbk1lbnUpPVwiY2xvc2VBY3Rpb25NZW51KClcIlxuICAgICAgICA+XG4gICAgICAgIDwvZ24tdWktYWN0aW9uLW1lbnU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZT5cbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3NlYXJjaC9zcmMvbGliL3Jlc3VsdHMtdGFibGUvcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFBO0FBTXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDckYsT0FBTyxFQUNMLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM3QyxPQUFPLEVBQ0wsV0FBVyxFQUVYLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGlCQUFpQixHQUNsQixNQUFNLHdDQUF3QyxDQUFBO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDNUQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixPQUFPLEdBRVIsTUFBTSxzQkFBc0IsQ0FBQTtB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QWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIEZpZWxkU29ydCxcbiAgU29ydEJ5RmllbGQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50LCBVaUlucHV0c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIEludGVyYWN0aXZlVGFibGVDb2x1bW5Db21wb25lbnQsXG4gIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7XG4gIERhdGVTZXJ2aWNlLFxuICBGaWxlRm9ybWF0LFxuICBmb3JtYXRVc2VySW5mbyxcbiAgZ2V0QmFkZ2VDb2xvcixcbiAgZ2V0RmlsZUZvcm1hdCxcbiAgZ2V0Rm9ybWF0UHJpb3JpdHksXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFjdGlvbk1lbnVDb21wb25lbnQgfSBmcm9tICcuL2FjdGlvbi1tZW51L2FjdGlvbi1tZW51LmNvbXBvbmVudCdcbmltcG9ydCB7IE5nSWNvbkNvbXBvbmVudCwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBpY29ub2lyVXNlciwgaWNvbm9pckxvY2sgfSBmcm9tICdAbmctaWNvbnMvaWNvbm9pcidcbmltcG9ydCB7XG4gIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gIENka092ZXJsYXlPcmlnaW4sXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5J1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJ1xuaW1wb3J0IHsgbWF0TW9yZVZlcnQgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXJlc3VsdHMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVzdWx0cy10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jlc3VsdHMtdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFVpSW5wdXRzTW9kdWxlLFxuICAgIEludGVyYWN0aXZlVGFibGVDb21wb25lbnQsXG4gICAgSW50ZXJhY3RpdmVUYWJsZUNvbHVtbkNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQWN0aW9uTWVudUNvbXBvbmVudCxcbiAgICBOZ0ljb25Db21wb25lbnQsXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgXSxcbiAgcHJvdmlkZXJzOiBbcHJvdmlkZUljb25zKHsgaWNvbm9pclVzZXIsIGljb25vaXJMb2NrLCBtYXRNb3JlVmVydCB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIFJlc3VsdHNUYWJsZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHJlY29yZHM6IENhdGFsb2dSZWNvcmRbXSA9IFtdXG4gIEBJbnB1dCgpIHNlbGVjdGVkUmVjb3Jkc0lkZW50aWZpZXJzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIHNvcnRPcmRlcjogU29ydEJ5RmllbGQgPSBudWxsXG4gIEBJbnB1dCgpIGhhc0RyYWZ0OiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2VcbiAgQElucHV0KCkgY2FuRHVwbGljYXRlOiAocmVjb3JkOiBDYXRhbG9nUmVjb3JkKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZVxuICBASW5wdXQoKSBjYW5EZWxldGU6IChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlXG4gIEBJbnB1dCgpIGlzRHJhZnRQYWdlID0gZmFsc2VcbiAgQElucHV0KCkgaXNEdXBsaWNhdGluZyA9IGZhbHNlXG5cbiAgLy8gZW1pdHMgdGhlIGNvbHVtbiAoZmllbGQpIGFzIHdlbGwgYXMgdGhlIG9yZGVyXG4gIEBPdXRwdXQoKSBzb3J0QnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFtzdHJpbmcsICdhc2MnIHwgJ2Rlc2MnXT4oKVxuICBAT3V0cHV0KCkgcmVjb3JkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENhdGFsb2dSZWNvcmQ+KClcbiAgQE91dHB1dCgpIGR1cGxpY2F0ZVJlY29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2F0YWxvZ1JlY29yZD4oKVxuICBAT3V0cHV0KCkgZGVsZXRlUmVjb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxDYXRhbG9nUmVjb3JkPigpXG4gIEBPdXRwdXQoKSByZWNvcmRzU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFtDYXRhbG9nUmVjb3JkW10sIGJvb2xlYW5dXG4gID4oKVxuXG4gIEBWaWV3Q2hpbGRyZW4oJ2FjdGlvbk1lbnVCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgYWN0aW9uTWVudUJ1dHRvbnMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmITogT3ZlcmxheVJlZlxuXG4gIGlzQWN0aW9uTWVudU9wZW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlXG4gICkge31cblxuICBvcGVuQWN0aW9uTWVudShpdGVtLCB0ZW1wbGF0ZSkge1xuICAgIHRoaXMuaXNBY3Rpb25NZW51T3BlbiA9IHRydWVcbiAgICBjb25zdCBpbmRleCA9IHRoaXMucmVjb3Jkcy5pbmRleE9mKGl0ZW0pXG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IHRoaXMuYWN0aW9uTWVudUJ1dHRvbnMudG9BcnJheSgpW2luZGV4XVxuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGJ1dHRvbkVsZW1lbnQpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0cnVlKVxuICAgICAgLndpdGhQdXNoKHRydWUpXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIHtcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgfSxcbiAgICAgIF0pXG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgIH0pXG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZilcblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKVxuICAgIH0pXG4gIH1cblxuICBjbG9zZUFjdGlvbk1lbnUoKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5pc0FjdGlvbk1lbnVPcGVuID0gZmFsc2VcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKClcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgZGF0ZVRvU3RyaW5nKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdERhdGUoZGF0ZSwge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgdGltZVpvbmU6ICdVVEMnLFxuICAgIH0pXG4gIH1cblxuICBnZXRSZWNvcmRGb3JtYXRzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCk6IEZpbGVGb3JtYXRbXSB7XG4gICAgaWYgKHJlY29yZC5raW5kID09PSAnc2VydmljZScgfHwgISgnb25saW5lUmVzb3VyY2VzJyBpbiByZWNvcmQpKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFxuICAgICAgICByZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcCgob25saW5lUmVzb3VyY2UpID0+XG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdChvbmxpbmVSZXNvdXJjZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICkuZmlsdGVyKChmb3JtYXQpID0+ICEhZm9ybWF0KVxuICAgIGZvcm1hdHMuc29ydCgoYSwgYikgPT4gZ2V0Rm9ybWF0UHJpb3JpdHkoYikgLSBnZXRGb3JtYXRQcmlvcml0eShhKSlcbiAgICByZXR1cm4gZm9ybWF0c1xuICB9XG5cbiAgZm9ybWF0VXNlckluZm8odXNlckluZm86IHN0cmluZyB8IHVua25vd24pOiBzdHJpbmcge1xuICAgIHJldHVybiBmb3JtYXRVc2VySW5mbyh1c2VySW5mbylcbiAgfVxuXG4gIGdldEJhZGdlQ29sb3IoZm9ybWF0OiBGaWxlRm9ybWF0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QmFkZ2VDb2xvcihmb3JtYXQpXG4gIH1cblxuICBoYW5kbGVSZWNvcmRDbGljayhpdGVtOiBDYXRhbG9nUmVjb3JkKSB7XG4gICAgaWYgKGl0ZW0/LmV4dHJhcz8uZWRpdCB8fCB0aGlzLmlzRHJhZnRQYWdlKVxuICAgICAgdGhpcy5yZWNvcmRDbGljay5lbWl0KGl0ZW0gYXMgQ2F0YWxvZ1JlY29yZClcbiAgfVxuXG4gIGhhbmRsZUR1cGxpY2F0ZShpdGVtOiB1bmtub3duKSB7XG4gICAgdGhpcy5kdXBsaWNhdGVSZWNvcmQuZW1pdChpdGVtIGFzIENhdGFsb2dSZWNvcmQpXG4gIH1cblxuICBoYW5kbGVEZWxldGUoaXRlbTogdW5rbm93bikge1xuICAgIHRoaXMuZGVsZXRlUmVjb3JkLmVtaXQoaXRlbSBhcyBDYXRhbG9nUmVjb3JkKVxuICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KClcbiAgfVxuXG4gIHNldFNvcnRCeShjb2w6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSB7XG4gICAgdGhpcy5zb3J0QnlDaGFuZ2UuZW1pdChbY29sLCBvcmRlcl0pXG4gIH1cblxuICBpc1NvcnRlZEJ5KGNvbDogc3RyaW5nKTogJ2Rlc2MnIHwgJ2FzYycgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuc29ydE9yZGVyKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBzb3J0QXJyYXkgPSBBcnJheS5pc0FycmF5KHRoaXMuc29ydE9yZGVyWzBdKVxuICAgICAgPyAodGhpcy5zb3J0T3JkZXIgYXMgRmllbGRTb3J0W10pXG4gICAgICA6IChbdGhpcy5zb3J0T3JkZXJdIGFzIEZpZWxkU29ydFtdKVxuICAgIGZvciAoY29uc3Qgc29ydCBvZiBzb3J0QXJyYXkpIHtcbiAgICAgIGlmIChzb3J0WzFdID09PSBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHNvcnRbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGlzQ2hlY2tlZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJlY29yZHNJZGVudGlmaWVycy5pbmNsdWRlcyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgfVxuXG4gIGhhbmRsZVJlY29yZFNlbGVjdGVkQ2hhbmdlKHNlbGVjdGVkOiBib29sZWFuLCByZWNvcmQ6IENhdGFsb2dSZWNvcmQpIHtcbiAgICB0aGlzLnJlY29yZHNTZWxlY3RlZENoYW5nZS5lbWl0KFtbcmVjb3JkXSwgc2VsZWN0ZWRdKVxuICB9XG59XG4iLCI8Z24tdWktaW50ZXJhY3RpdmUtdGFibGVcbiAgW2l0ZW1zXT1cInJlY29yZHNcIlxuICBbaXNEcmFmdFBhZ2VdPVwiaXNEcmFmdFBhZ2VcIlxuICAoaXRlbUNsaWNrKT1cImhhbmRsZVJlY29yZENsaWNrKCRldmVudClcIlxuPlxuICA8IS0tIFNFTEVDVEVEIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiJzNyZW0nXCI+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgIDxuZy1pY29uXG4gICAgICAgIG5hbWU9XCJpY29ub2lyTG9ja1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1wdXJwbGVcIlxuICAgICAgICAqbmdJZj1cIiFpdGVtLmV4dHJhcz8uZWRpdCAmJiAhaXNEcmFmdFBhZ2VcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICAgIDxnbi11aS1jaGVja2JveFxuICAgICAgICAqbmdJZj1cIml0ZW0uZXh0cmFzPy5lZGl0IHx8IGlzRHJhZnRQYWdlXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkKGl0ZW0pXCJcbiAgICAgICAgKGNoYW5nZWQpPVwiaGFuZGxlUmVjb3JkU2VsZWN0ZWRDaGFuZ2UoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgIGNsYXNzPVwiLW0tMlwiXG4gICAgICAgIHR5cGU9XCJkZWZhdWx0XCJcbiAgICAgID48L2duLXVpLWNoZWNrYm94PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gVElUTEUgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFtncm93XT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3Jlc291cmNlVGl0bGVPYmplY3QuZGVmYXVsdC5rZXl3b3JkJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVzb3VyY2VUaXRsZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50aXRsZTwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtaXRlbT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtMiBtYXgtdy1mdWxsIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgPHNwYW4gZGF0YS1jeT1cInJlc3VsdEl0ZW1UaXRsZVwiIGNsYXNzPVwib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXNcIj57e1xuICAgICAgICAgIGl0ZW0udGl0bGVcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgICpuZ0lmPVwiaGFzRHJhZnQoaXRlbSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLXBhZGRpbmddPVwiJzAuMmVtIDAuNmVtJ1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAgICAgW3N0eWxlLi0tZ24tdWktYmFkZ2UtdGV4dC1jb2xvcl09XCInIzNkMjAwNidcIlxuICAgICAgICAgIFtzdHlsZS4tLWduLXVpLWJhZGdlLWJhY2tncm91bmQtY29sb3JdPVwiJyNmZmJjN2InXCJcbiAgICAgICAgICBbc3R5bGUuLS1nbi11aS1iYWRnZS1yb3VuZGVkXT1cIic0cHgnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5kYXNoYm9hcmQucmVjb3Jkcy5oYXNEcmFmdDwvc3Bhbj5cbiAgICAgICAgPC9nbi11aS1iYWRnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uPlxuXG4gIDwhLS0gRk9STUFUUyBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4gW3dpZHRoXT1cIic5cmVtJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5mb3JtYXRzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgZ2FwLTIgZm9udC1tZWRpdW1cIlxuICAgICAgICAqbmdJZj1cImdldFJlY29yZEZvcm1hdHMoaXRlbSkgYXMgZm9ybWF0c1wiXG4gICAgICAgIFt0aXRsZV09XCJmb3JtYXRzLmpvaW4oJywgJylcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzBdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMF0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UtYnRuIG1pbi13LVs0NXB4XSB0ZXh0LXhzIHRleHQtZ3JheS05MDAgcHgtMiBzaHJpbmstMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QmFkZ2VDb2xvcihmb3JtYXRzWzFdKVwiXG4gICAgICAgICAgKm5nSWY9XCJmb3JtYXRzWzFdXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGZvcm1hdHNbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hyaW5rLTAgdGV4dC14c1wiICpuZ0lmPVwiZm9ybWF0cy5zbGljZSgyKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPHNwYW4+K3t7IGZvcm1hdHMuc2xpY2UoMikubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIiFnZXRSZWNvcmRGb3JtYXRzKGl0ZW0pXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBPV05FUiBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzEycmVtJ1wiXG4gICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgIFthY3RpdmVTb3J0XT1cImlzU29ydGVkQnkoJ3JlY29yZE93bmVyJylcIlxuICAgIChzb3J0Q2hhbmdlKT1cInNldFNvcnRCeSgncmVjb3JkT3duZXInLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLnVzZXI8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pclVzZXJcIiBzaXplPVwiMTZweFwiPjwvbmctaWNvbj5cbiAgICAgIDxzcGFuIGRhdGEtY3k9XCJvd25lckluZm9cIiBjbGFzcz1cInRleHQteHNcIj57e1xuICAgICAgICBmb3JtYXRVc2VySW5mbyhpdGVtLmV4dHJhcz8ub3duZXJJbmZvKVxuICAgICAgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBTVEFUVVMgQ09MVU1OIC0tPlxuICA8Z24tdWktaW50ZXJhY3RpdmUtdGFibGUtY29sdW1uIFt3aWR0aF09XCInNnJlbSdcIj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxzcGFuIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuc3RhdHVzPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1pdGVtPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgKGl0ZW0uZXh0cmFzPy5bJ2lzUHVibGlzaGVkVG9BbGwnXVxuICAgICAgICAgICAgPyAncmVjb3JkLm1ldGFkYXRhLnN0YXR1cy5wdWJsaXNoZWQnXG4gICAgICAgICAgICA6ICdyZWNvcmQubWV0YWRhdGEuc3RhdHVzLm5vdFB1Ymxpc2hlZCdcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9nbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW4+XG5cbiAgPCEtLSBVUERBVEUgREFURSBDT0xVTU4gLS0+XG4gIDxnbi11aS1pbnRlcmFjdGl2ZS10YWJsZS1jb2x1bW5cbiAgICBbd2lkdGhdPVwiJzhyZW0nXCJcbiAgICBbc29ydGFibGVdPVwidHJ1ZVwiXG4gICAgW2FjdGl2ZVNvcnRdPVwiaXNTb3J0ZWRCeSgnY2hhbmdlRGF0ZScpXCJcbiAgICAoc29ydENoYW5nZSk9XCJzZXRTb3J0QnkoJ2NoYW5nZURhdGUnLCAkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnNlYXJjaC5maWx0ZXJzLmNoYW5nZURhdGU8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCB0ZXh0LWxlZnQgdy1mdWxsIHRleHQteHNcIj5cbiAgICAgICAge3tcbiAgICAgICAgICBpdGVtLmV4dHJhcz8uWydpc1B1Ymxpc2hlZFRvQWxsJ11cbiAgICAgICAgICAgID8gZGF0ZVRvU3RyaW5nKGl0ZW0ucmVjb3JkVXBkYXRlZClcbiAgICAgICAgICAgIDogJy0nXG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cblxuICA8IS0tIEFDVElPTiBNRU5VIENPTFVNTiAtLT5cbiAgPGduLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbiAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj4gPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LWl0ZW0+XG4gICAgICA8Z24tdWktYnV0dG9uXG4gICAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICAgI2FjdGlvbk1lbnVCdXR0b25cbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9wZW5BY3Rpb25NZW51KGl0ZW0sIHRlbXBsYXRlKVwiXG4gICAgICAgIHR5cGU9XCJsaWdodFwiXG4gICAgICAgIGRhdGEtdGVzdD1cInJlY29yZC1tZW51LWJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhaXRlbS5leHRyYXM/LmVkaXQgJiYgIWlzRHJhZnRQYWdlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWljb25cbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAndGV4dC1wdXJwbGUtbGlnaHQnOiAhaXRlbS5leHRyYXM/LmVkaXQgJiYgIWlzRHJhZnRQYWdlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIG5hbWU9XCJtYXRNb3JlVmVydFwiXG4gICAgICAgID48L25nLWljb24+XG4gICAgICA8L2duLXVpLWJ1dHRvbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAgICAgIDxnbi11aS1hY3Rpb24tbWVudVxuICAgICAgICAgIFtjYW5EdXBsaWNhdGVdPVwiY2FuRHVwbGljYXRlKGl0ZW0pICYmICFpc0R1cGxpY2F0aW5nXCJcbiAgICAgICAgICBbY2FuRGVsZXRlXT1cImNhbkRlbGV0ZShpdGVtKVwiXG4gICAgICAgICAgKGR1cGxpY2F0ZSk9XCJoYW5kbGVEdXBsaWNhdGUoaXRlbSlcIlxuICAgICAgICAgIChkZWxldGUpPVwiaGFuZGxlRGVsZXRlKGl0ZW0pXCJcbiAgICAgICAgICAoY2xvc2VBY3Rpb25NZW51KT1cImNsb3NlQWN0aW9uTWVudSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2duLXVpLWFjdGlvbi1tZW51PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2duLXVpLWludGVyYWN0aXZlLXRhYmxlLWNvbHVtbj5cbjwvZ24tdWktaW50ZXJhY3RpdmUtdGFibGU+XG4iXX0=
@@ -2,4 +2,6 @@ export * from './lib/data-fetcher';
2
2
  export { SupportedTypes, FetchError, } from './lib/model';
3
3
  export { getJsonDataItemsProxy } from './lib/utils';
4
4
  export { BaseReader } from './lib/readers/base';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLE9BQU8sRUFFTCxjQUFjLEVBRWQsVUFBVSxHQUVYLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLWZldGNoZXInXG5leHBvcnQge1xuICBTdXBwb3J0ZWRUeXBlLFxuICBTdXBwb3J0ZWRUeXBlcyxcbiAgRGF0YUl0ZW0sXG4gIEZldGNoRXJyb3IsXG4gIEZpZWxkQWdncmVnYXRpb24sXG59IGZyb20gJy4vbGliL21vZGVsJ1xuZXhwb3J0IHsgZ2V0SnNvbkRhdGFJdGVtc1Byb3h5IH0gZnJvbSAnLi9saWIvdXRpbHMnXG5leHBvcnQgeyBCYXNlUmVhZGVyIH0gZnJvbSAnLi9saWIvcmVhZGVycy9iYXNlJ1xuIl19
5
+ export { BaseFileReader } from './lib/readers/base-file';
6
+ export { GeojsonReader } from './lib/readers/geojson';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLE9BQU8sRUFFTCxjQUFjLEVBRWQsVUFBVSxHQUdYLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGEtZmV0Y2hlcidcbmV4cG9ydCB7XG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxuICBEYXRhSXRlbSxcbiAgRmV0Y2hFcnJvcixcbiAgRmllbGRBZ2dyZWdhdGlvbixcbiAgUHJvcGVydHlJbmZvLFxufSBmcm9tICcuL2xpYi9tb2RlbCdcbmV4cG9ydCB7IGdldEpzb25EYXRhSXRlbXNQcm94eSB9IGZyb20gJy4vbGliL3V0aWxzJ1xuZXhwb3J0IHsgQmFzZVJlYWRlciB9IGZyb20gJy4vbGliL3JlYWRlcnMvYmFzZSdcbmV4cG9ydCB7IEJhc2VGaWxlUmVhZGVyIH0gZnJvbSAnLi9saWIvcmVhZGVycy9iYXNlLWZpbGUnXG5leHBvcnQgeyBHZW9qc29uUmVhZGVyIH0gZnJvbSAnLi9saWIvcmVhZGVycy9nZW9qc29uJ1xuIl19
@@ -6,6 +6,7 @@ import { ExcelReader } from './readers/excel';
6
6
  import { FetchError } from './model';
7
7
  import { inferDatasetType } from './utils';
8
8
  import { GmlReader } from './readers/gml';
9
+ import { WfsReader } from './readers/wfs';
9
10
  export async function openDataset(url, typeHint, options) {
10
11
  const fileType = await inferDatasetType(url, typeHint);
11
12
  let reader;
@@ -26,6 +27,9 @@ export async function openDataset(url, typeHint, options) {
26
27
  case 'gml':
27
28
  reader = new GmlReader(url, options.namespace, options.wfsVersion);
28
29
  break;
30
+ case 'wfs':
31
+ reader = await WfsReader.createReader(url, options.wfsFeatureType);
32
+ break;
29
33
  }
30
34
  reader.load();
31
35
  return reader;
@@ -58,4 +62,4 @@ export async function readDataset(url, typeHint, options) {
58
62
  export function readDatasetHeaders(url) {
59
63
  return fetch(url).then((response) => parseHeaders(response.headers));
60
64
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL2RhdGEtZmV0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUE0QixVQUFVLEVBQWlCLE1BQU0sU0FBUyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBR3pDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixHQUFXLEVBQ1gsUUFBd0IsRUFDeEIsT0FBdUQ7SUFFdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsSUFBSSxNQUFrQixDQUFBO0lBQ3RCLElBQUksQ0FBQztRQUNILFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDM0IsTUFBSztZQUNQLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVCLE1BQUs7WUFDUCxLQUFLLFNBQVM7Z0JBQ1osTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixNQUFLO1lBQ1AsS0FBSyxPQUFPO2dCQUNWLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUNsRSxNQUFLO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNiLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxRQUF3QixFQUN4QixPQUFhO0lBRWIsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUN4RCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0MsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3RFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZUhlYWRlcnMgfSBmcm9tICcuL2hlYWRlcnMnXG5pbXBvcnQgeyBDc3ZSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvY3N2J1xuaW1wb3J0IHsgSnNvblJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9qc29uJ1xuaW1wb3J0IHsgR2VvanNvblJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9nZW9qc29uJ1xuaW1wb3J0IHsgRXhjZWxSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZXhjZWwnXG5pbXBvcnQgeyBEYXRhSXRlbSwgRGF0YXNldEhlYWRlcnMsIEZldGNoRXJyb3IsIFN1cHBvcnRlZFR5cGUgfSBmcm9tICcuL21vZGVsJ1xuaW1wb3J0IHsgaW5mZXJEYXRhc2V0VHlwZSB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBCYXNlUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2Jhc2UnXG5pbXBvcnQgeyBHbWxSZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZ21sJ1xuaW1wb3J0IHsgV2ZzVmVyc2lvbiB9IGZyb20gJ0BjYW1wdG9jYW1wL29nYy1jbGllbnQnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuRGF0YXNldChcbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGVIaW50PzogU3VwcG9ydGVkVHlwZSxcbiAgb3B0aW9ucz86IHsgbmFtZXNwYWNlOiBzdHJpbmc7IHdmc1ZlcnNpb246IFdmc1ZlcnNpb24gfVxuKTogUHJvbWlzZTxCYXNlUmVhZGVyPiB7XG4gIGNvbnN0IGZpbGVUeXBlID0gYXdhaXQgaW5mZXJEYXRhc2V0VHlwZSh1cmwsIHR5cGVIaW50KVxuICBsZXQgcmVhZGVyOiBCYXNlUmVhZGVyXG4gIHRyeSB7XG4gICAgc3dpdGNoIChmaWxlVHlwZSkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcih1cmwpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIodXJsKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHZW9qc29uUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2dtbCc6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHbWxSZWFkZXIodXJsLCBvcHRpb25zLm5hbWVzcGFjZSwgb3B0aW9ucy53ZnNWZXJzaW9uKVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICByZWFkZXIubG9hZCgpXG4gICAgcmV0dXJuIHJlYWRlclxuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICB0aHJvdyBGZXRjaEVycm9yLnBhcnNpbmdGYWlsZWQoZS5tZXNzYWdlKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBmZXRjaGVzIHRoZSBmdWxsIGRhdGFzZXQgYXQgdGhlIGdpdmVuIFVSTCBhbmQgcGFyc2VzIGl0IGFjY29yZGluZyB0byBpdHMgbWltZSB0eXBlLlxuICogQWxsIGl0ZW1zIGluIHRoZSBkYXRhc2V0IGFyZSBjb252ZXJ0ZWQgdG8gR2VvSlNPTiBmZWF0dXJlcywgZXZlbiBpZiB0aGV5IGRvIG5vdCBiZWFyIGFueSBzcGF0aWFsIGdlb21ldHJ5LlxuICogRmlsZSB0eXBlIGNhbiBiZSBlaXRoZXIgaW5mZXJyZWQgKGZyb20gdGhlIEhUVFAgaGVhZGVycyBvciB0aGUgVVJMKSwgb3IgaGludGVkIHVzaW5nIHRoZSAybmQgYXJndW1lbnRcbiAqIEZpbGUgdHlwZSBpcyBkZXRlcm1pbmVkIGxpa2VkIHNvOlxuICogIDEuIGlmIGEgdHlwZSBoaW50IGlzIGdpdmVuLCB1c2UgaXRcbiAqICAyLiBvdGhlcndpc2UsIGxvb2sgZm9yIGEgQ29udGVudC1UeXBlIGhlYWRlciBpbiB0aGUgcmVzcG9uc2Ugd2l0aCBhIHN1cHBvcnRlZCBtaW1lIHR5cGVcbiAqICAzLiBpZiBubyB2YWxpZCBtaW1lIHR5cGUgd2FzIGZvdW5kLCBsb29rIGZvciBhbiBleHBsaWNpdCBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgdXJsICguY3N2LCAuZ2VvanNvbiBldGMuKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZERhdGFzZXQoXG4gIHVybDogc3RyaW5nLFxuICB0eXBlSGludD86IFN1cHBvcnRlZFR5cGUsXG4gIG9wdGlvbnM/OiBhbnlcbik6IFByb21pc2U8RGF0YUl0ZW1bXT4ge1xuICBjb25zdCByZWFkZXIgPSBhd2FpdCBvcGVuRGF0YXNldCh1cmwsIHR5cGVIaW50LCBvcHRpb25zKVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkZXIucmVhZCgpXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IEZldGNoRXJyb3IucGFyc2luZ0ZhaWxlZChlLm1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZldGNoZXMgb25seSB0aGUgaGVhZGVyIG9mIHRoZSBkYXRhc2V0IGF0IHRoZSBnaXZlbiBVUkwsIGdpdmluZyBpbmZvIG9uIHNpemUsIG1pbWUtdHlwZSBhbmQgbGFzdCB1cGRhdGUgaWYgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZERhdGFzZXRIZWFkZXJzKHVybDogc3RyaW5nKTogUHJvbWlzZTxEYXRhc2V0SGVhZGVycz4ge1xuICByZXR1cm4gZmV0Y2godXJsKS50aGVuKChyZXNwb25zZSkgPT4gcGFyc2VIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpKVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1mZXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL2RhdGEtZmV0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUE0QixVQUFVLEVBQWlCLE1BQU0sU0FBUyxDQUFBO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFekMsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLEdBQVcsRUFDWCxRQUF3QixFQUN4QixPQUlDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsSUFBSSxNQUFrQixDQUFBO0lBQ3RCLElBQUksQ0FBQztRQUNILFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDM0IsTUFBSztZQUNQLEtBQUssTUFBTTtnQkFDVCxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQzVCLE1BQUs7WUFDUCxLQUFLLFNBQVM7Z0JBQ1osTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixNQUFLO1lBQ1AsS0FBSyxPQUFPO2dCQUNWLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDN0IsTUFBSztZQUNQLEtBQUssS0FBSztnQkFDUixNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUNsRSxNQUFLO1lBQ1AsS0FBSyxLQUFLO2dCQUNSLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtnQkFDbEUsTUFBSztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDYixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0MsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixHQUFXLEVBQ1gsUUFBd0IsRUFDeEIsT0FBYTtJQUViLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VIZWFkZXJzIH0gZnJvbSAnLi9oZWFkZXJzJ1xuaW1wb3J0IHsgQ3N2UmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2NzdidcbmltcG9ydCB7IEpzb25SZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvanNvbidcbmltcG9ydCB7IEdlb2pzb25SZWFkZXIgfSBmcm9tICcuL3JlYWRlcnMvZ2VvanNvbidcbmltcG9ydCB7IEV4Y2VsUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2V4Y2VsJ1xuaW1wb3J0IHsgRGF0YUl0ZW0sIERhdGFzZXRIZWFkZXJzLCBGZXRjaEVycm9yLCBTdXBwb3J0ZWRUeXBlIH0gZnJvbSAnLi9tb2RlbCdcbmltcG9ydCB7IGluZmVyRGF0YXNldFR5cGUgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgQmFzZVJlYWRlciB9IGZyb20gJy4vcmVhZGVycy9iYXNlJ1xuaW1wb3J0IHsgR21sUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL2dtbCdcbmltcG9ydCB7IFdmc1ZlcnNpb24gfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgV2ZzUmVhZGVyIH0gZnJvbSAnLi9yZWFkZXJzL3dmcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5EYXRhc2V0KFxuICB1cmw6IHN0cmluZyxcbiAgdHlwZUhpbnQ/OiBTdXBwb3J0ZWRUeXBlLFxuICBvcHRpb25zPzoge1xuICAgIG5hbWVzcGFjZT86IHN0cmluZ1xuICAgIHdmc1ZlcnNpb24/OiBXZnNWZXJzaW9uXG4gICAgd2ZzRmVhdHVyZVR5cGU/OiBzdHJpbmdcbiAgfVxuKTogUHJvbWlzZTxCYXNlUmVhZGVyPiB7XG4gIGNvbnN0IGZpbGVUeXBlID0gYXdhaXQgaW5mZXJEYXRhc2V0VHlwZSh1cmwsIHR5cGVIaW50KVxuICBsZXQgcmVhZGVyOiBCYXNlUmVhZGVyXG4gIHRyeSB7XG4gICAgc3dpdGNoIChmaWxlVHlwZSkge1xuICAgICAgY2FzZSAnY3N2JzpcbiAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcih1cmwpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIodXJsKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZ2VvanNvbic6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHZW9qc29uUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcbiAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKHVybClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2dtbCc6XG4gICAgICAgIHJlYWRlciA9IG5ldyBHbWxSZWFkZXIodXJsLCBvcHRpb25zLm5hbWVzcGFjZSwgb3B0aW9ucy53ZnNWZXJzaW9uKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnd2ZzJzpcbiAgICAgICAgcmVhZGVyID0gYXdhaXQgV2ZzUmVhZGVyLmNyZWF0ZVJlYWRlcih1cmwsIG9wdGlvbnMud2ZzRmVhdHVyZVR5cGUpXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlYWRlci5sb2FkKClcbiAgICByZXR1cm4gcmVhZGVyXG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IEZldGNoRXJyb3IucGFyc2luZ0ZhaWxlZChlLm1lc3NhZ2UpXG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZldGNoZXMgdGhlIGZ1bGwgZGF0YXNldCBhdCB0aGUgZ2l2ZW4gVVJMIGFuZCBwYXJzZXMgaXQgYWNjb3JkaW5nIHRvIGl0cyBtaW1lIHR5cGUuXG4gKiBBbGwgaXRlbXMgaW4gdGhlIGRhdGFzZXQgYXJlIGNvbnZlcnRlZCB0byBHZW9KU09OIGZlYXR1cmVzLCBldmVuIGlmIHRoZXkgZG8gbm90IGJlYXIgYW55IHNwYXRpYWwgZ2VvbWV0cnkuXG4gKiBGaWxlIHR5cGUgY2FuIGJlIGVpdGhlciBpbmZlcnJlZCAoZnJvbSB0aGUgSFRUUCBoZWFkZXJzIG9yIHRoZSBVUkwpLCBvciBoaW50ZWQgdXNpbmcgdGhlIDJuZCBhcmd1bWVudFxuICogRmlsZSB0eXBlIGlzIGRldGVybWluZWQgbGlrZWQgc286XG4gKiAgMS4gaWYgYSB0eXBlIGhpbnQgaXMgZ2l2ZW4sIHVzZSBpdFxuICogIDIuIG90aGVyd2lzZSwgbG9vayBmb3IgYSBDb250ZW50LVR5cGUgaGVhZGVyIGluIHRoZSByZXNwb25zZSB3aXRoIGEgc3VwcG9ydGVkIG1pbWUgdHlwZVxuICogIDMuIGlmIG5vIHZhbGlkIG1pbWUgdHlwZSB3YXMgZm91bmQsIGxvb2sgZm9yIGFuIGV4cGxpY2l0IGZpbGUgZXh0ZW5zaW9uIGluIHRoZSB1cmwgKC5jc3YsIC5nZW9qc29uIGV0Yy4pXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRGF0YXNldChcbiAgdXJsOiBzdHJpbmcsXG4gIHR5cGVIaW50PzogU3VwcG9ydGVkVHlwZSxcbiAgb3B0aW9ucz86IGFueVxuKTogUHJvbWlzZTxEYXRhSXRlbVtdPiB7XG4gIGNvbnN0IHJlYWRlciA9IGF3YWl0IG9wZW5EYXRhc2V0KHVybCwgdHlwZUhpbnQsIG9wdGlvbnMpXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKClcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgRmV0Y2hFcnJvci5wYXJzaW5nRmFpbGVkKGUubWVzc2FnZSlcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgZmV0Y2hlcyBvbmx5IHRoZSBoZWFkZXIgb2YgdGhlIGRhdGFzZXQgYXQgdGhlIGdpdmVuIFVSTCwgZ2l2aW5nIGluZm8gb24gc2l6ZSwgbWltZS10eXBlIGFuZCBsYXN0IHVwZGF0ZSBpZiBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGF0YXNldEhlYWRlcnModXJsOiBzdHJpbmcpOiBQcm9taXNlPERhdGFzZXRIZWFkZXJzPiB7XG4gIHJldHVybiBmZXRjaCh1cmwpLnRoZW4oKHJlc3BvbnNlKSA9PiBwYXJzZUhlYWRlcnMocmVzcG9uc2UuaGVhZGVycykpXG59XG4iXX0=
@@ -3,7 +3,8 @@ export function parseHeaders(httpHeaders) {
3
3
  const result = {};
4
4
  if (httpHeaders.has('Content-Type')) {
5
5
  result.mimeType = httpHeaders.get('Content-Type').split(';')[0];
6
- const supported = SupportedTypes.filter((type) => AllMimeTypes[type].indexOf(result.mimeType) > -1)[0] || null;
6
+ const supported = SupportedTypes.filter((type) => type !== 'wfs') // Ignore wfs type as it is not a file type
7
+ .filter((type) => AllMimeTypes[type].indexOf(result.mimeType) > -1)[0] || null;
7
8
  if (supported !== null)
8
9
  result.supportedType = supported;
9
10
  }
@@ -19,4 +20,4 @@ export function parseHeaders(httpHeaders) {
19
20
  }
20
21
  return result;
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjL2xpYi9oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtCLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV0RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQW9CO0lBQy9DLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUE7SUFDakMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxNQUFNLFNBQVMsR0FDYixjQUFjLENBQUMsTUFBTSxDQUNuQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtRQUNkLElBQUksU0FBUyxLQUFLLElBQUk7WUFBRSxNQUFNLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQTtJQUMxRCxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1FBQ3ZELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBRSxNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBOztZQUM1RCxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtJQUMvQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxsTWltZVR5cGVzLCBEYXRhc2V0SGVhZGVycywgU3VwcG9ydGVkVHlwZXMgfSBmcm9tICcuL21vZGVsJ1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGh0dHBIZWFkZXJzOiBIZWFkZXJzKTogRGF0YXNldEhlYWRlcnMge1xuICBjb25zdCByZXN1bHQ6IERhdGFzZXRIZWFkZXJzID0ge31cbiAgaWYgKGh0dHBIZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykpIHtcbiAgICByZXN1bHQubWltZVR5cGUgPSBodHRwSGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpLnNwbGl0KCc7JylbMF1cbiAgICBjb25zdCBzdXBwb3J0ZWQgPVxuICAgICAgU3VwcG9ydGVkVHlwZXMuZmlsdGVyKFxuICAgICAgICAodHlwZSkgPT4gQWxsTWltZVR5cGVzW3R5cGVdLmluZGV4T2YocmVzdWx0Lm1pbWVUeXBlIGFzIG5ldmVyKSA+IC0xXG4gICAgICApWzBdIHx8IG51bGxcbiAgICBpZiAoc3VwcG9ydGVkICE9PSBudWxsKSByZXN1bHQuc3VwcG9ydGVkVHlwZSA9IHN1cHBvcnRlZFxuICB9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0NvbnRlbnQtTGVuZ3RoJykpIHtcbiAgICByZXN1bHQuZmlsZVNpemVCeXRlcyA9IHBhcnNlSW50KGh0dHBIZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKSlcbiAgfVxuICBpZiAoaHR0cEhlYWRlcnMuaGFzKCdMYXN0LU1vZGlmaWVkJykpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaHR0cEhlYWRlcnMuZ2V0KCdMYXN0LU1vZGlmaWVkJykpXG4gICAgaWYgKE51bWJlci5pc05hTihkYXRlLnZhbHVlT2YoKSkpIHJlc3VsdC5sYXN0VXBkYXRlSW52YWxpZCA9IHRydWVcbiAgICBlbHNlIHJlc3VsdC5sYXN0VXBkYXRlID0gZGF0ZVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjL2xpYi9oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWtCLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUV0RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQW9CO0lBQy9DLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUE7SUFDakMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMvRCxNQUFNLFNBQVMsR0FDYixjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsMkNBQTJDO2FBQ3hGLE1BQU0sQ0FDTCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNwRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtRQUNoQixJQUFJLFNBQVMsS0FBSyxJQUFJO1lBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7SUFDMUQsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQTtRQUN2RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQUUsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTs7WUFDNUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFsbE1pbWVUeXBlcywgRGF0YXNldEhlYWRlcnMsIFN1cHBvcnRlZFR5cGVzIH0gZnJvbSAnLi9tb2RlbCdcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhodHRwSGVhZGVyczogSGVhZGVycyk6IERhdGFzZXRIZWFkZXJzIHtcbiAgY29uc3QgcmVzdWx0OiBEYXRhc2V0SGVhZGVycyA9IHt9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgcmVzdWx0Lm1pbWVUeXBlID0gaHR0cEhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKS5zcGxpdCgnOycpWzBdXG4gICAgY29uc3Qgc3VwcG9ydGVkID1cbiAgICAgIFN1cHBvcnRlZFR5cGVzLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gJ3dmcycpIC8vIElnbm9yZSB3ZnMgdHlwZSBhcyBpdCBpcyBub3QgYSBmaWxlIHR5cGVcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAodHlwZSkgPT4gQWxsTWltZVR5cGVzW3R5cGVdLmluZGV4T2YocmVzdWx0Lm1pbWVUeXBlIGFzIG5ldmVyKSA+IC0xXG4gICAgICAgIClbMF0gfHwgbnVsbFxuICAgIGlmIChzdXBwb3J0ZWQgIT09IG51bGwpIHJlc3VsdC5zdXBwb3J0ZWRUeXBlID0gc3VwcG9ydGVkXG4gIH1cbiAgaWYgKGh0dHBIZWFkZXJzLmhhcygnQ29udGVudC1MZW5ndGgnKSkge1xuICAgIHJlc3VsdC5maWxlU2l6ZUJ5dGVzID0gcGFyc2VJbnQoaHR0cEhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpKVxuICB9XG4gIGlmIChodHRwSGVhZGVycy5oYXMoJ0xhc3QtTW9kaWZpZWQnKSkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShodHRwSGVhZGVycy5nZXQoJ0xhc3QtTW9kaWZpZWQnKSlcbiAgICBpZiAoTnVtYmVyLmlzTmFOKGRhdGUudmFsdWVPZigpKSkgcmVzdWx0Lmxhc3RVcGRhdGVJbnZhbGlkID0gdHJ1ZVxuICAgIGVsc2UgcmVzdWx0Lmxhc3RVcGRhdGUgPSBkYXRlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl19
@@ -6,8 +6,12 @@ export class FetchError {
6
6
  this.stack = null;
7
7
  this.message = `An error happened in the data fetcher, type: ${type}, info: ${info}`;
8
8
  }
9
- static http(code) {
10
- return new FetchError('http', '', code);
9
+ static http(code, body) {
10
+ const info = body
11
+ ? `Error ${code}
12
+ ${body}`
13
+ : `${code}`;
14
+ return new FetchError('http', info, code);
11
15
  }
12
16
  static corsOrNetwork(message) {
13
17
  return new FetchError('network', message, 0);
@@ -43,6 +47,7 @@ export const SupportedTypes = [
43
47
  'geojson',
44
48
  'excel',
45
49
  'gml',
50
+ 'wfs',
46
51
  ];
47
52
  export const AllMimeTypes = {
48
53
  csv: CsvMimeTypes,
@@ -51,4 +56,4 @@ export const AllMimeTypes = {
51
56
  excel: ExcelMimeTypes,
52
57
  gml: GmlMimeTypes,
53
58
  };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9saWIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDUyxJQUFrRSxFQUNsRSxJQUFZLEVBQ1osYUFBYSxDQUFDO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBOEQ7UUFDbEUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQUk7UUFMdkIsVUFBSyxHQUFHLElBQUksQ0FBQTtRQU9WLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0RBQWdELElBQUksV0FBVyxJQUFJLEVBQUUsQ0FBQTtJQUN0RixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDRjtBQUVELDZHQUE2RztBQUU3RyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDckMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGtCQUFrQixDQUFVLENBQUE7QUFDMUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsc0JBQXNCO0lBQ3RCLDBCQUEwQjtDQUNsQixDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLDBCQUEwQixFQUFFLE9BQU87SUFDbkMsbUVBQW1FLEVBQUUsUUFBUTtDQUNyRSxDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLENBQVUsQ0FBQTtBQVM1RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLEtBQUs7Q0FDRyxDQUFBO0FBR1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLEdBQUcsRUFBRSxZQUFZO0lBQ2pCLElBQUksRUFBRSxhQUFhO0lBQ25CLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsS0FBSyxFQUFFLGNBQWM7SUFDckIsR0FBRyxFQUFFLFlBQVk7Q0FDbEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gJ2dlb2pzb24nXG5cbmV4cG9ydCB0eXBlIERhdGFJdGVtID0gRmVhdHVyZVxuXG5leHBvcnQgY2xhc3MgRmV0Y2hFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZ1xuICBzdGFjayA9IG51bGxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHlwZTogJ2h0dHAnIHwgJ25ldHdvcmsnIHwgJ3BhcnNlJyB8ICd1bnN1cHBvcnRlZFR5cGUnIHwgJ3Vua25vd24nLFxuICAgIHB1YmxpYyBpbmZvOiBzdHJpbmcsXG4gICAgcHVibGljIGh0dHBTdGF0dXMgPSAwXG4gICkge1xuICAgIHRoaXMubWVzc2FnZSA9IGBBbiBlcnJvciBoYXBwZW5lZCBpbiB0aGUgZGF0YSBmZXRjaGVyLCB0eXBlOiAke3R5cGV9LCBpbmZvOiAke2luZm99YFxuICB9XG4gIHN0YXRpYyBodHRwKGNvZGU6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcignaHR0cCcsICcnLCBjb2RlKVxuICB9XG4gIHN0YXRpYyBjb3JzT3JOZXR3b3JrKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcignbmV0d29yaycsIG1lc3NhZ2UsIDApXG4gIH1cbiAgc3RhdGljIHBhcnNpbmdGYWlsZWQoaW5mbzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCdwYXJzZScsIGluZm8sIDApXG4gIH1cbiAgc3RhdGljIHVuc3VwcG9ydGVkVHlwZShtaW1lVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCd1bnN1cHBvcnRlZFR5cGUnLCBtaW1lVHlwZSwgMClcbiAgfVxuICBzdGF0aWMgdW5rbm93blR5cGUoKSB7XG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCd1bmtub3duJywgJycsIDApXG4gIH1cbn1cblxuLy8gVXNlZnVsIHJlZmVyZW5jZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9CYXNpY3Nfb2ZfSFRUUC9NSU1FX3R5cGVzL0NvbW1vbl90eXBlc1xuXG5leHBvcnQgY29uc3QgQ3N2TWltZVR5cGVzID0gW1xuICAndGV4dC9jc3YnLCAvLyBhcyBwZXIgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzQxODBcbiAgJ2FwcGxpY2F0aW9uL2NzdicsIC8vIHNlZW1zIHRvIGJlIGFsc28gY29tbW9uXG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgSnNvbk1pbWVUeXBlcyA9IFsnYXBwbGljYXRpb24vanNvbiddIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgR2VvSnNvbk1pbWVUeXBlcyA9IFtcbiAgJ2FwcGxpY2F0aW9uL2dlbytqc29uJyxcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5nZW8ranNvbicsXG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgRXhjZWxNaW1lVHlwZXMgPSBbXG4gICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLCAvLyAueGxzXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsIC8vIC54c2x4XG5dIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgR21sTWltZVR5cGVzID0gWydhcHBsaWNhdGlvbi9nbWwreG1sJ10gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkTWltZVR5cGUgPVxuICB8ICh0eXBlb2YgQ3N2TWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBKc29uTWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBHZW9Kc29uTWltZVR5cGVzKVtudW1iZXJdXG4gIHwgKHR5cGVvZiBFeGNlbE1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgR21sTWltZVR5cGVzKVtudW1iZXJdXG5cbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWRUeXBlcyA9IFtcbiAgJ2NzdicsXG4gICdqc29uJyxcbiAgJ2dlb2pzb24nLFxuICAnZXhjZWwnLFxuICAnZ21sJyxcbl0gYXMgY29uc3RcbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFR5cGUgPSAodHlwZW9mIFN1cHBvcnRlZFR5cGVzKVtudW1iZXJdXG5cbmV4cG9ydCBjb25zdCBBbGxNaW1lVHlwZXMgPSB7XG4gIGNzdjogQ3N2TWltZVR5cGVzLFxuICBqc29uOiBKc29uTWltZVR5cGVzLFxuICBnZW9qc29uOiBHZW9Kc29uTWltZVR5cGVzLFxuICBleGNlbDogRXhjZWxNaW1lVHlwZXMsXG4gIGdtbDogR21sTWltZVR5cGVzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRIZWFkZXJzIHtcbiAgbWltZVR5cGU/OiBzdHJpbmdcbiAgc3VwcG9ydGVkVHlwZT86IFN1cHBvcnRlZFR5cGVcbiAgZmlsZVNpemVCeXRlcz86IG51bWJlclxuICBsYXN0VXBkYXRlPzogRGF0ZVxuICBsYXN0VXBkYXRlSW52YWxpZD86IHRydWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUluZm8ge1xuICBuYW1lOiBzdHJpbmdcbiAgbGFiZWw6IHN0cmluZ1xuICB0eXBlOiAnbnVtYmVyJyB8ICdkYXRlJyB8ICd1cmwnIHwgJ3N0cmluZydcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0SW5mbyB7XG4gIGl0ZW1zQ291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBGaWVsZE5hbWUgPSBzdHJpbmdcblxudHlwZSBTdW1PcGVyYXRpb24gPSBbJ3N1bScsIEZpZWxkTmFtZV1cbnR5cGUgQXZlcmFnZU9wZXJhdGlvbiA9IFsnYXZlcmFnZScsIEZpZWxkTmFtZV1cbnR5cGUgTWluT3BlcmF0aW9uID0gWydtaW4nLCBGaWVsZE5hbWVdXG50eXBlIE1heE9wZXJhdGlvbiA9IFsnbWF4JywgRmllbGROYW1lXVxudHlwZSBDb3VudE9wZXJhdGlvbiA9IFsnY291bnQnXVxuZXhwb3J0IHR5cGUgRmllbGRBZ2dyZWdhdGlvbiA9XG4gIHwgU3VtT3BlcmF0aW9uXG4gIHwgQXZlcmFnZU9wZXJhdGlvblxuICB8IE1pbk9wZXJhdGlvblxuICB8IE1heE9wZXJhdGlvblxuICB8IENvdW50T3BlcmF0aW9uXG5cbnR5cGUgQWxsT3BlcmF0aW9uID0gWydhbGwnXVxudHlwZSBEaXN0aW5jdE9wZXJhdGlvbiA9IFsnZGlzdGluY3QnLCBGaWVsZE5hbWVdXG50eXBlIFJhbmdlQnVja2V0c09wZXJhdGlvbiA9IFsncmFuZ2VCdWNrZXRzJywgRmllbGROYW1lLCBudW1iZXJdIC8vIDNyZCB2YWx1ZSBpcyB0aGUgYnVja2V0IGNvdW50OyBOT1QgSU1QTEVNRU5URURcbmV4cG9ydCB0eXBlIEZpZWxkR3JvdXBCeSA9XG4gIHwgQWxsT3BlcmF0aW9uXG4gIHwgRGlzdGluY3RPcGVyYXRpb25cbiAgfCBSYW5nZUJ1Y2tldHNPcGVyYXRpb25cblxuZXhwb3J0IHR5cGUgRmllbGRTb3J0ID0gWydkZXNjJyB8ICdhc2MnLCBGaWVsZE5hbWVdXG5cbnR5cGUgQ29tcGFyaXNvbk9wZXJhdG9yID0gJzwnIHwgJz4nIHwgJzw9JyB8ICc+PScgfCAnPScgfCAnIT0nXG50eXBlIENvbXBhcmlzb24gPSBbQ29tcGFyaXNvbk9wZXJhdG9yLCBGaWVsZE5hbWUsIHN0cmluZyB8IG51bWJlcl1cbnR5cGUgQW5kT3BlcmF0aW9uID0gWydhbmQnLCAuLi5GaWVsZEZpbHRlcltdXVxudHlwZSBPck9wZXJhdGlvbiA9IFsnb3InLCAuLi5GaWVsZEZpbHRlcltdXVxudHlwZSBOb3RPcGVyYXRpb24gPSBbJ25vdCcsIEZpZWxkRmlsdGVyXVxudHlwZSBJbk9wZXJhdGlvbiA9IFsnaW4nLCBGaWVsZE5hbWUsIC4uLihzdHJpbmdbXSB8IG51bWJlcltdKV1cbnR5cGUgTGlrZU9wZXJhdGlvbiA9IFsnbGlrZScsIEZpZWxkTmFtZSwgc3RyaW5nXVxuZXhwb3J0IHR5cGUgRmllbGRGaWx0ZXIgPVxuICB8IENvbXBhcmlzb25cbiAgfCBBbmRPcGVyYXRpb25cbiAgfCBPck9wZXJhdGlvblxuICB8IE5vdE9wZXJhdGlvblxuICB8IEluT3BlcmF0aW9uXG4gIHwgTGlrZU9wZXJhdGlvblxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYy9saWIvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFDUyxJQUFrRSxFQUNsRSxJQUFZLEVBQ1osYUFBYSxDQUFDO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBOEQ7UUFDbEUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQUk7UUFMdkIsVUFBSyxHQUFHLElBQUksQ0FBQTtRQU9WLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0RBQWdELElBQUksV0FBVyxJQUFJLEVBQUUsQ0FBQTtJQUN0RixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsSUFBYTtRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJO1lBQ2YsQ0FBQyxDQUFDLFNBQVMsSUFBSTtFQUNuQixJQUFJLEVBQUU7WUFDRixDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQTtRQUNiLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2xDLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFnQjtRQUNyQyxPQUFPLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7Q0FDRjtBQUVELDZHQUE2RztBQUU3RyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxpQkFBaUIsRUFBRSwwQkFBMEI7Q0FDckMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLGtCQUFrQixDQUFVLENBQUE7QUFDMUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsc0JBQXNCO0lBQ3RCLDBCQUEwQjtDQUNsQixDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLDBCQUEwQixFQUFFLE9BQU87SUFDbkMsbUVBQW1FLEVBQUUsUUFBUTtDQUNyRSxDQUFBO0FBQ1YsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMscUJBQXFCLENBQVUsQ0FBQTtBQVM1RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsS0FBSztJQUNMLE1BQU07SUFDTixTQUFTO0lBQ1QsT0FBTztJQUNQLEtBQUs7SUFDTCxLQUFLO0NBQ0csQ0FBQTtBQUdWLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQUUsWUFBWTtJQUNqQixJQUFJLEVBQUUsYUFBYTtJQUNuQixPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZlYXR1cmUgfSBmcm9tICdnZW9qc29uJ1xuXG5leHBvcnQgdHlwZSBEYXRhSXRlbSA9IEZlYXR1cmVcblxuZXhwb3J0IGNsYXNzIEZldGNoRXJyb3Ige1xuICBtZXNzYWdlOiBzdHJpbmdcbiAgc3RhY2sgPSBudWxsXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHR5cGU6ICdodHRwJyB8ICduZXR3b3JrJyB8ICdwYXJzZScgfCAndW5zdXBwb3J0ZWRUeXBlJyB8ICd1bmtub3duJyxcbiAgICBwdWJsaWMgaW5mbzogc3RyaW5nLFxuICAgIHB1YmxpYyBodHRwU3RhdHVzID0gMFxuICApIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgQW4gZXJyb3IgaGFwcGVuZWQgaW4gdGhlIGRhdGEgZmV0Y2hlciwgdHlwZTogJHt0eXBlfSwgaW5mbzogJHtpbmZvfWBcbiAgfVxuICBzdGF0aWMgaHR0cChjb2RlOiBudW1iZXIsIGJvZHk/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmZvID0gYm9keVxuICAgICAgPyBgRXJyb3IgJHtjb2RlfVxuJHtib2R5fWBcbiAgICAgIDogYCR7Y29kZX1gXG4gICAgcmV0dXJuIG5ldyBGZXRjaEVycm9yKCdodHRwJywgaW5mbywgY29kZSlcbiAgfVxuICBzdGF0aWMgY29yc09yTmV0d29yayhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IEZldGNoRXJyb3IoJ25ldHdvcmsnLCBtZXNzYWdlLCAwKVxuICB9XG4gIHN0YXRpYyBwYXJzaW5nRmFpbGVkKGluZm86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigncGFyc2UnLCBpbmZvLCAwKVxuICB9XG4gIHN0YXRpYyB1bnN1cHBvcnRlZFR5cGUobWltZVR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigndW5zdXBwb3J0ZWRUeXBlJywgbWltZVR5cGUsIDApXG4gIH1cbiAgc3RhdGljIHVua25vd25UeXBlKCkge1xuICAgIHJldHVybiBuZXcgRmV0Y2hFcnJvcigndW5rbm93bicsICcnLCAwKVxuICB9XG59XG5cbi8vIFVzZWZ1bCByZWZlcmVuY2U6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQmFzaWNzX29mX0hUVFAvTUlNRV90eXBlcy9Db21tb25fdHlwZXNcblxuZXhwb3J0IGNvbnN0IENzdk1pbWVUeXBlcyA9IFtcbiAgJ3RleHQvY3N2JywgLy8gYXMgcGVyIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0MTgwXG4gICdhcHBsaWNhdGlvbi9jc3YnLCAvLyBzZWVtcyB0byBiZSBhbHNvIGNvbW1vblxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEpzb25NaW1lVHlwZXMgPSBbJ2FwcGxpY2F0aW9uL2pzb24nXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEdlb0pzb25NaW1lVHlwZXMgPSBbXG4gICdhcHBsaWNhdGlvbi9nZW8ranNvbicsXG4gICdhcHBsaWNhdGlvbi92bmQuZ2VvK2pzb24nLFxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEV4Y2VsTWltZVR5cGVzID0gW1xuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywgLy8gLnhsc1xuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLCAvLyAueHNseFxuXSBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEdtbE1pbWVUeXBlcyA9IFsnYXBwbGljYXRpb24vZ21sK3htbCddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZE1pbWVUeXBlID1cbiAgfCAodHlwZW9mIENzdk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgSnNvbk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgR2VvSnNvbk1pbWVUeXBlcylbbnVtYmVyXVxuICB8ICh0eXBlb2YgRXhjZWxNaW1lVHlwZXMpW251bWJlcl1cbiAgfCAodHlwZW9mIEdtbE1pbWVUeXBlcylbbnVtYmVyXVxuXG5leHBvcnQgY29uc3QgU3VwcG9ydGVkVHlwZXMgPSBbXG4gICdjc3YnLFxuICAnanNvbicsXG4gICdnZW9qc29uJyxcbiAgJ2V4Y2VsJyxcbiAgJ2dtbCcsXG4gICd3ZnMnLFxuXSBhcyBjb25zdFxuZXhwb3J0IHR5cGUgU3VwcG9ydGVkVHlwZSA9ICh0eXBlb2YgU3VwcG9ydGVkVHlwZXMpW251bWJlcl1cblxuZXhwb3J0IGNvbnN0IEFsbE1pbWVUeXBlcyA9IHtcbiAgY3N2OiBDc3ZNaW1lVHlwZXMsXG4gIGpzb246IEpzb25NaW1lVHlwZXMsXG4gIGdlb2pzb246IEdlb0pzb25NaW1lVHlwZXMsXG4gIGV4Y2VsOiBFeGNlbE1pbWVUeXBlcyxcbiAgZ21sOiBHbWxNaW1lVHlwZXMsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldEhlYWRlcnMge1xuICBtaW1lVHlwZT86IHN0cmluZ1xuICBzdXBwb3J0ZWRUeXBlPzogU3VwcG9ydGVkVHlwZVxuICBmaWxlU2l6ZUJ5dGVzPzogbnVtYmVyXG4gIGxhc3RVcGRhdGU/OiBEYXRlXG4gIGxhc3RVcGRhdGVJbnZhbGlkPzogdHJ1ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5SW5mbyB7XG4gIG5hbWU6IHN0cmluZ1xuICBsYWJlbDogc3RyaW5nXG4gIHR5cGU6ICdudW1iZXInIHwgJ2RhdGUnIHwgJ3VybCcgfCAnc3RyaW5nJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFzZXRJbmZvIHtcbiAgaXRlbXNDb3VudDogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkTmFtZSA9IHN0cmluZ1xuXG50eXBlIFN1bU9wZXJhdGlvbiA9IFsnc3VtJywgRmllbGROYW1lXVxudHlwZSBBdmVyYWdlT3BlcmF0aW9uID0gWydhdmVyYWdlJywgRmllbGROYW1lXVxudHlwZSBNaW5PcGVyYXRpb24gPSBbJ21pbicsIEZpZWxkTmFtZV1cbnR5cGUgTWF4T3BlcmF0aW9uID0gWydtYXgnLCBGaWVsZE5hbWVdXG50eXBlIENvdW50T3BlcmF0aW9uID0gWydjb3VudCddXG5leHBvcnQgdHlwZSBGaWVsZEFnZ3JlZ2F0aW9uID1cbiAgfCBTdW1PcGVyYXRpb25cbiAgfCBBdmVyYWdlT3BlcmF0aW9uXG4gIHwgTWluT3BlcmF0aW9uXG4gIHwgTWF4T3BlcmF0aW9uXG4gIHwgQ291bnRPcGVyYXRpb25cblxudHlwZSBBbGxPcGVyYXRpb24gPSBbJ2FsbCddXG50eXBlIERpc3RpbmN0T3BlcmF0aW9uID0gWydkaXN0aW5jdCcsIEZpZWxkTmFtZV1cbnR5cGUgUmFuZ2VCdWNrZXRzT3BlcmF0aW9uID0gWydyYW5nZUJ1Y2tldHMnLCBGaWVsZE5hbWUsIG51bWJlcl0gLy8gM3JkIHZhbHVlIGlzIHRoZSBidWNrZXQgY291bnQ7IE5PVCBJTVBMRU1FTlRFRFxuZXhwb3J0IHR5cGUgRmllbGRHcm91cEJ5ID1cbiAgfCBBbGxPcGVyYXRpb25cbiAgfCBEaXN0aW5jdE9wZXJhdGlvblxuICB8IFJhbmdlQnVja2V0c09wZXJhdGlvblxuXG5leHBvcnQgdHlwZSBGaWVsZFNvcnQgPSBbJ2Rlc2MnIHwgJ2FzYycsIEZpZWxkTmFtZV1cblxudHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSAnPCcgfCAnPicgfCAnPD0nIHwgJz49JyB8ICc9JyB8ICchPSdcbnR5cGUgQ29tcGFyaXNvbiA9IFtDb21wYXJpc29uT3BlcmF0b3IsIEZpZWxkTmFtZSwgc3RyaW5nIHwgbnVtYmVyXVxudHlwZSBBbmRPcGVyYXRpb24gPSBbJ2FuZCcsIC4uLkZpZWxkRmlsdGVyW11dXG50eXBlIE9yT3BlcmF0aW9uID0gWydvcicsIC4uLkZpZWxkRmlsdGVyW11dXG50eXBlIE5vdE9wZXJhdGlvbiA9IFsnbm90JywgRmllbGRGaWx0ZXJdXG50eXBlIEluT3BlcmF0aW9uID0gWydpbicsIEZpZWxkTmFtZSwgLi4uKHN0cmluZ1tdIHwgbnVtYmVyW10pXVxudHlwZSBMaWtlT3BlcmF0aW9uID0gWydsaWtlJywgRmllbGROYW1lLCBzdHJpbmddXG5leHBvcnQgdHlwZSBGaWVsZEZpbHRlciA9XG4gIHwgQ29tcGFyaXNvblxuICB8IEFuZE9wZXJhdGlvblxuICB8IE9yT3BlcmF0aW9uXG4gIHwgTm90T3BlcmF0aW9uXG4gIHwgSW5PcGVyYXRpb25cbiAgfCBMaWtlT3BlcmF0aW9uXG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { WfsEndpoint } from '@camptocamp/ogc-client';
2
+ import { fetchDataAsText } from '../utils';
3
+ import { BaseReader } from './base';
4
+ import { GmlReader, parseGml } from './gml';
5
+ import { GeojsonReader, parseGeojson } from './geojson';
6
+ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
7
+ export class WfsReader extends BaseReader {
8
+ constructor(url, wfsEndpoint, featureTypeName) {
9
+ super(url);
10
+ this.endpoint = wfsEndpoint;
11
+ this.featureTypeName = featureTypeName;
12
+ this.version = this.endpoint.getVersion();
13
+ }
14
+ get properties() {
15
+ return this.endpoint
16
+ .getFeatureTypeFull(this.featureTypeName)
17
+ .then((featureType) => Object.keys(featureType.properties).map((prop) => {
18
+ const originalType = featureType.properties[prop];
19
+ const type = originalType === 'float' || originalType === 'integer'
20
+ ? 'number'
21
+ : originalType; // FIXME: ogc-client typing is incorrect, should be a string union
22
+ return {
23
+ name: prop,
24
+ label: prop,
25
+ type,
26
+ };
27
+ }));
28
+ }
29
+ get info() {
30
+ return this.endpoint.getFeatureTypeFull(this.featureTypeName).then((result) => ({
31
+ itemsCount: result.objectCount,
32
+ }));
33
+ }
34
+ static async createReader(wfsUrlEndpoint, featureTypeName) {
35
+ const wfsEndpoint = await new WfsEndpoint(wfsUrlEndpoint).isReady();
36
+ const featureTypes = wfsEndpoint.getFeatureTypes();
37
+ const featureType = wfsEndpoint.getFeatureTypeSummary(featureTypes.length === 1 && !featureTypeName
38
+ ? featureTypes[0].name
39
+ : featureTypeName);
40
+ if (!featureType) {
41
+ throw new Error('wfs.featuretype.notfound');
42
+ }
43
+ if (wfsEndpoint.supportsStartIndex()) {
44
+ return new WfsReader(wfsUrlEndpoint, wfsEndpoint, featureType.name);
45
+ }
46
+ else if (wfsEndpoint.supportsJson(featureType.name)) {
47
+ return new GeojsonReader(wfsEndpoint.getFeatureUrl(featureType.name, {
48
+ asJson: true,
49
+ outputCrs: 'EPSG:4326',
50
+ }));
51
+ }
52
+ else {
53
+ if (featureType.outputFormats.find((f) => f.toLowerCase().includes('gml')) &&
54
+ (featureType.defaultCrs === 'EPSG:4326' ||
55
+ featureType.otherCrs?.includes('EPSG:4326'))) {
56
+ return new GmlReader(wfsEndpoint.getFeatureUrl(featureType.name, {
57
+ outputFormat: featureType.outputFormats.find((f) => f.toLowerCase().includes('gml')),
58
+ outputCrs: 'EPSG:4326',
59
+ }), featureType.name, wfsEndpoint.getVersion());
60
+ }
61
+ throw new Error('wfs.geojsongml.notsupported');
62
+ }
63
+ }
64
+ getData() {
65
+ if (this.aggregations || this.groupedBy) {
66
+ throw new Error(marker('wfs.aggregations.notsupported'));
67
+ }
68
+ const asJson = this.endpoint.supportsJson(this.featureTypeName);
69
+ const attributes = this.selected ?? undefined;
70
+ let url = this.endpoint.getFeatureUrl(this.featureTypeName, {
71
+ ...(this.startIndex !== null && { startIndex: this.startIndex }),
72
+ ...(this.count !== null && { maxFeatures: this.count }),
73
+ asJson,
74
+ outputCrs: 'EPSG:4326',
75
+ attributes,
76
+ // sortBy: this.sort // TODO: no sort in ogc-client?
77
+ });
78
+ if (Array.isArray(this.sort) && this.sort.length > 0) {
79
+ const finalUrl = new URL(url);
80
+ const sorts = this.sort
81
+ .map((fieldSort) => `${fieldSort[1]}+${fieldSort[0] === 'asc' ? 'A' : 'D'}`)
82
+ .join(',');
83
+ // Direct update on string url to prevent encoding of +A and +D
84
+ url = `${url}${finalUrl.search ? '&' : ''}SORTBY=${sorts}`;
85
+ }
86
+ return fetchDataAsText(url).then((text) => asJson
87
+ ? parseGeojson(text)
88
+ : parseGml(text, this.featureTypeName, this.version));
89
+ }
90
+ load() {
91
+ // Nothing to load for Wfs
92
+ }
93
+ async read() {
94
+ return (await this.getData()).items;
95
+ }
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2RhdGEtZmV0Y2hlci9zcmMvbGliL3JlYWRlcnMvd2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSx3QkFBd0IsQ0FBQTtBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBRWhFLE1BQU0sT0FBTyxTQUFVLFNBQVEsVUFBVTtJQUt2QyxZQUFZLEdBQVcsRUFBRSxXQUF3QixFQUFFLGVBQXVCO1FBQ3hFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFBO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFBO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsUUFBUTthQUNqQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQ3hDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMs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K0Q7WUFDL0QsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEtBQUssRUFBRSxDQUFBO1FBQzVELENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN4QyxNQUFNO1lBQ0osQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDcEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ3ZELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLDBCQUEwQjtJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2ZzRW5kcG9pbnQsIFdmc1ZlcnNpb24gfSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHsgRGF0YUl0ZW0sIERhdGFzZXRJbmZvLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuLi9tb2RlbCdcbmltcG9ydCB7IGZldGNoRGF0YUFzVGV4dCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgQmFzZVJlYWRlciB9IGZyb20gJy4vYmFzZSdcbmltcG9ydCB7IEdtbFJlYWRlciwgcGFyc2VHbWwgfSBmcm9tICcuL2dtbCdcbmltcG9ydCB7IEdlb2pzb25SZWFkZXIsIHBhcnNlR2VvanNvbiB9IGZyb20gJy4vZ2VvanNvbidcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcblxuZXhwb3J0IGNsYXNzIFdmc1JlYWRlciBleHRlbmRzIEJhc2VSZWFkZXIge1xuICBlbmRwb2ludDogV2ZzRW5kcG9pbnRcbiAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgdmVyc2lvbjogV2ZzVmVyc2lvblxuXG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nLCB3ZnNFbmRwb2ludDogV2ZzRW5kcG9pbnQsIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIodXJsKVxuICAgIHRoaXMuZW5kcG9pbnQgPSB3ZnNFbmRwb2ludFxuICAgIHRoaXMuZmVhdHVyZVR5cGVOYW1lID0gZmVhdHVyZVR5cGVOYW1lXG4gICAgdGhpcy52ZXJzaW9uID0gdGhpcy5lbmRwb2ludC5nZXRWZXJzaW9uKClcbiAgfVxuXG4gIGdldCBwcm9wZXJ0aWVzKCk6IFByb21pc2U8UHJvcGVydHlJbmZvW10+IHtcbiAgICByZXR1cm4gdGhpcy5lbmRwb2ludFxuICAgICAgLmdldEZlYXR1cmVUeXBlRnVsbCh0aGlzLmZlYXR1cmVUeXBlTmFtZSlcbiAgICAgIC50aGVuKChmZWF0dXJlVHlwZSkgPT5cbiAgICAgICAgT2JqZWN0LmtleXMoZmVhdHVyZVR5cGUucHJvcGVydGllcykubWFwKChwcm9wKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxUeXBlID0gZmVhdHVyZVR5cGUucHJvcGVydGllc1twcm9wXVxuICAgICAgICAgIGNvbnN0IHR5cGUgPVxuICAgICAgICAgICAgb3JpZ2luYWxUeXBlID09PSAnZmxvYXQnIHx8IG9yaWdpbmFsVHlwZSA9PT0gJ2ludGVnZXInXG4gICAgICAgICAgICAgID8gJ251bWJlcidcbiAgICAgICAgICAgICAgOiAob3JpZ2luYWxUeXBlIGFzIFByb3BlcnR5SW5mb1sndHlwZSddKSAvLyBGSVhNRTogb2djLWNsaWVudCB0eXBpbmcgaXMgaW5jb3JyZWN0LCBzaG91bGQgYmUgYSBzdHJpbmcgdW5pb25cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogcHJvcCxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gIH1cblxuICBnZXQgaW5mbygpOiBQcm9taXNlPERhdGFzZXRJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMuZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVGdWxsKHRoaXMuZmVhdHVyZVR5cGVOYW1lKS50aGVuKFxuICAgICAgKHJlc3VsdCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBpdGVtc0NvdW50OiByZXN1bHQub2JqZWN0Q291bnQsXG4gICAgICAgIH0pIGFzIERhdGFzZXRJbmZvXG4gICAgKVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVJlYWRlcih3ZnNVcmxFbmRwb2ludDogc3RyaW5nLCBmZWF0dXJlVHlwZU5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCB3ZnNFbmRwb2ludCA9IGF3YWl0IG5ldyBXZnNFbmRwb2ludCh3ZnNVcmxFbmRwb2ludCkuaXNSZWFkeSgpXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gd2ZzRW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVzKClcbiAgICBjb25zdCBmZWF0dXJlVHlwZSA9IHdmc0VuZHBvaW50LmdldEZlYXR1cmVUeXBlU3VtbWFyeShcbiAgICAgIGZlYXR1cmVUeXBlcy5sZW5ndGggPT09IDEgJiYgIWZlYXR1cmVUeXBlTmFtZVxuICAgICAgICA/IGZlYXR1cmVUeXBlc1swXS5uYW1lXG4gICAgICAgIDogZmVhdHVyZVR5cGVOYW1lXG4gICAgKVxuICAgIGlmICghZmVhdHVyZVR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICB9XG5cbiAgICBpZiAod2ZzRW5kcG9pbnQuc3VwcG9ydHNTdGFydEluZGV4KCkpIHtcbiAgICAgIHJldHVybiBuZXcgV2ZzUmVhZGVyKHdmc1VybEVuZHBvaW50LCB3ZnNFbmRwb2ludCwgZmVhdHVyZVR5cGUubmFtZSlcbiAgICB9IGVsc2UgaWYgKHdmc0VuZHBvaW50LnN1cHBvcnRzSnNvbihmZWF0dXJlVHlwZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIG5ldyBHZW9qc29uUmVhZGVyKFxuICAgICAgICB3ZnNFbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICBhc0pzb246IHRydWUsXG4gICAgICAgICAgb3V0cHV0Q3JzOiAnRVBTRzo0MzI2JyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICApICYmXG4gICAgICAgIChmZWF0dXJlVHlwZS5kZWZhdWx0Q3JzID09PSAnRVBTRzo0MzI2JyB8fFxuICAgICAgICAgIGZlYXR1cmVUeXBlLm90aGVyQ3JzPy5pbmNsdWRlcygnRVBTRzo0MzI2JykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHbWxSZWFkZXIoXG4gICAgICAgICAgd2ZzRW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICBvdXRwdXRGb3JtYXQ6IGZlYXR1cmVUeXBlLm91dHB1dEZvcm1hdHMuZmluZCgoZikgPT5cbiAgICAgICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZmVhdHVyZVR5cGUubmFtZSxcbiAgICAgICAgICB3ZnNFbmRwb2ludC5nZXRWZXJzaW9uKClcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZ2VvanNvbmdtbC5ub3RzdXBwb3J0ZWQnKVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRhKCkge1xuICAgIGlmICh0aGlzLmFnZ3JlZ2F0aW9ucyB8fCB0aGlzLmdyb3VwZWRCeSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1hcmtlcignd2ZzLmFnZ3JlZ2F0aW9ucy5ub3RzdXBwb3J0ZWQnKSlcbiAgICB9XG5cbiAgICBjb25zdCBhc0pzb24gPSB0aGlzLmVuZHBvaW50LnN1cHBvcnRzSnNvbih0aGlzLmZlYXR1cmVUeXBlTmFtZSlcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5zZWxlY3RlZCA/PyB1bmRlZmluZWRcbiAgICBsZXQgdXJsID0gdGhpcy5lbmRwb2ludC5nZXRGZWF0dXJlVXJsKHRoaXMuZmVhdHVyZVR5cGVOYW1lLCB7XG4gICAgICAuLi4odGhpcy5zdGFydEluZGV4ICE9PSBudWxsICYmIHsgc3RhcnRJbmRleDogdGhpcy5zdGFydEluZGV4IH0pLFxuICAgICAgLi4uKHRoaXMuY291bnQgIT09IG51bGwgJiYgeyBtYXhGZWF0dXJlczogdGhpcy5jb3VudCB9KSxcbiAgICAgIGFzSnNvbixcbiAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICBhdHRyaWJ1dGVzLFxuICAgICAgLy8gc29ydEJ5OiB0aGlzLnNvcnQgLy8gVE9ETzogbm8gc29ydCBpbiBvZ2MtY2xpZW50P1xuICAgIH0pXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNvcnQpICYmIHRoaXMuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsKVxuICAgICAgY29uc3Qgc29ydHMgPSB0aGlzLnNvcnRcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoZmllbGRTb3J0KSA9PiBgJHtmaWVsZFNvcnRbMV19KyR7ZmllbGRTb3J0WzBdID09PSAnYXNjJyA/ICdBJyA6ICdEJ31gXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJywnKVxuICAgICAgLy8gRGlyZWN0IHVwZGF0ZSBvbiBzdHJpbmcgdXJsIHRvIHByZXZlbnQgZW5jb2Rpbmcgb2YgK0EgYW5kICtEXG4gICAgICB1cmwgPSBgJHt1cmx9JHtmaW5hbFVybC5zZWFyY2ggPyAnJicgOiAnJ31TT1JUQlk9JHtzb3J0c31gXG4gICAgfVxuXG4gICAgcmV0dXJuIGZldGNoRGF0YUFzVGV4dCh1cmwpLnRoZW4oKHRleHQpID0+XG4gICAgICBhc0pzb25cbiAgICAgICAgPyBwYXJzZUdlb2pzb24odGV4dClcbiAgICAgICAgOiBwYXJzZUdtbCh0ZXh0LCB0aGlzLmZlYXR1cmVUeXBlTmFtZSwgdGhpcy52ZXJzaW9uKVxuICAgIClcbiAgfVxuXG4gIGxvYWQoKSB7XG4gICAgLy8gTm90aGluZyB0byBsb2FkIGZvciBXZnNcbiAgfVxuXG4gIGFzeW5jIHJlYWQoKTogUHJvbWlzZTxEYXRhSXRlbVtdPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmdldERhdGEoKSkuaXRlbXNcbiAgfVxufVxuIl19