@igo2/integration 16.3.0 → 17.0.0-next.10

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 (164) hide show
  1. package/esm2022/lib/about/about-tool/about-tool.component.mjs +33 -14
  2. package/esm2022/lib/about/about.module.mjs +9 -37
  3. package/esm2022/lib/analytics/analytics-listener.service.mjs +10 -24
  4. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +12 -11
  5. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +9 -13
  6. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +25 -12
  7. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +9 -13
  8. package/esm2022/lib/catalog/catalog.module.mjs +9 -8
  9. package/esm2022/lib/catalog/catalog.state.mjs +6 -6
  10. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +10 -9
  11. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +10 -9
  12. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +9 -8
  13. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +11 -10
  14. package/esm2022/lib/context/context.directive.mjs +11 -0
  15. package/esm2022/lib/context/context.module.mjs +16 -31
  16. package/esm2022/lib/context/context.state.mjs +9 -9
  17. package/esm2022/lib/context/index.mjs +2 -1
  18. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +22 -13
  19. package/esm2022/lib/directions/directions.module.mjs +11 -11
  20. package/esm2022/lib/directions/directions.state.mjs +5 -5
  21. package/esm2022/lib/draw/draw.module.mjs +8 -7
  22. package/esm2022/lib/draw/draw.state.mjs +5 -5
  23. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +11 -10
  24. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +9 -12
  25. package/esm2022/lib/draw/index.mjs +1 -1
  26. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  27. package/esm2022/lib/environment/index.mjs +1 -1
  28. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +1 -1
  29. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +10 -9
  30. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +1 -1
  31. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +10 -9
  32. package/esm2022/lib/filter/filter.module.mjs +16 -13
  33. package/esm2022/lib/filter/index.mjs +13 -1
  34. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +10 -9
  35. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +29 -16
  36. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +10 -9
  37. package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +20 -16
  38. package/esm2022/lib/geometry-form/data-issue-reporter-tool/index.mjs +1 -1
  39. package/esm2022/lib/geometry-form/geometry-form.module.mjs +8 -7
  40. package/esm2022/lib/geometry-form/index.mjs +1 -1
  41. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +24 -14
  42. package/esm2022/lib/import-export/import-export.module.mjs +11 -36
  43. package/esm2022/lib/import-export/import-export.state.mjs +4 -4
  44. package/esm2022/lib/integration.module.mjs +8 -13
  45. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +83 -47
  46. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +24 -13
  47. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +37 -14
  48. package/esm2022/lib/map/index.mjs +2 -1
  49. package/esm2022/lib/map/layer-list-tool.state.mjs +4 -4
  50. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +32 -14
  51. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +26 -14
  52. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +37 -16
  53. package/esm2022/lib/map/map-proximity.state.mjs +7 -7
  54. package/esm2022/lib/map/map-tool/map-tool.component.mjs +28 -13
  55. package/esm2022/lib/map/map-tools/map-tools.component.mjs +38 -15
  56. package/esm2022/lib/map/map.directive.mjs +15 -0
  57. package/esm2022/lib/map/map.module.mjs +17 -125
  58. package/esm2022/lib/map/map.state.mjs +9 -7
  59. package/esm2022/lib/measure/measure.module.mjs +8 -7
  60. package/esm2022/lib/measure/measure.state.mjs +5 -5
  61. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +11 -10
  62. package/esm2022/lib/measure/measurer-tool/measurer-tool.module.mjs +9 -12
  63. package/esm2022/lib/print/print-tool/print-tool.component.mjs +11 -10
  64. package/esm2022/lib/print/print.module.mjs +11 -11
  65. package/esm2022/lib/search/index.mjs +1 -1
  66. package/esm2022/lib/search/query.state.mjs +8 -8
  67. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +8 -7
  68. package/esm2022/lib/search/search-bar/search-bar.module.mjs +7 -9
  69. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +41 -19
  70. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +9 -54
  71. package/esm2022/lib/search/search.module.mjs +12 -10
  72. package/esm2022/lib/search/search.state.mjs +19 -18
  73. package/esm2022/lib/storage/storage.state.mjs +7 -7
  74. package/esm2022/lib/tool/tool.state.mjs +7 -7
  75. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +19 -18
  76. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +12 -13
  77. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  78. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +19 -18
  79. package/esm2022/lib/workspace/shared/workspace.utils.mjs +12 -8
  80. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +22 -11
  81. package/esm2022/lib/workspace/workspace.module.mjs +10 -28
  82. package/esm2022/lib/workspace/workspace.state.mjs +9 -8
  83. package/esm2022/public_api.mjs +1 -4
  84. package/fesm2022/igo2-integration.mjs +758 -792
  85. package/fesm2022/igo2-integration.mjs.map +1 -1
  86. package/lib/about/about-tool/about-tool.component.d.ts +3 -2
  87. package/lib/about/about.module.d.ts +4 -8
  88. package/lib/analytics/analytics-listener.service.d.ts +2 -5
  89. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +2 -2
  90. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +2 -4
  91. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +6 -3
  92. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +2 -4
  93. package/lib/catalog/catalog.module.d.ts +3 -0
  94. package/lib/catalog/catalog.state.d.ts +1 -1
  95. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +1 -1
  96. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +1 -1
  97. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +1 -1
  98. package/lib/context/context-share-tool/context-share-tool.component.d.ts +1 -1
  99. package/lib/context/context.directive.d.ts +5 -0
  100. package/lib/context/context.module.d.ts +4 -2
  101. package/lib/context/context.state.d.ts +2 -2
  102. package/lib/context/index.d.ts +1 -0
  103. package/lib/directions/directions-tool/directions-tool.component.d.ts +6 -3
  104. package/lib/directions/directions.module.d.ts +4 -2
  105. package/lib/draw/draw.module.d.ts +5 -3
  106. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +1 -1
  107. package/lib/draw/drawing-tool/drawing-tool.module.d.ts +2 -3
  108. package/lib/environment/environment.interface.d.ts +3 -3
  109. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +1 -1
  110. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +1 -1
  111. package/lib/filter/filter.module.d.ts +4 -3
  112. package/lib/filter/index.d.ts +4 -0
  113. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +1 -1
  114. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +4 -3
  115. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +1 -1
  116. package/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.d.ts +3 -2
  117. package/lib/geometry-form/geometry-form.module.d.ts +4 -3
  118. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +2 -2
  119. package/lib/import-export/import-export.module.d.ts +4 -7
  120. package/lib/integration.module.d.ts +17 -16
  121. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +7 -2
  122. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +1 -1
  123. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +1 -1
  124. package/lib/map/index.d.ts +1 -0
  125. package/lib/map/map-details-tool/map-details-tool.component.d.ts +1 -1
  126. package/lib/map/map-legend/map-legend-tool.component.d.ts +1 -1
  127. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +4 -3
  128. package/lib/map/map-proximity.state.d.ts +1 -1
  129. package/lib/map/map-tool/map-tool.component.d.ts +1 -1
  130. package/lib/map/map-tools/map-tools.component.d.ts +1 -1
  131. package/lib/map/map.directive.d.ts +7 -0
  132. package/lib/map/map.module.d.ts +4 -25
  133. package/lib/map/map.state.d.ts +2 -1
  134. package/lib/measure/measure.module.d.ts +3 -0
  135. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +1 -1
  136. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +2 -3
  137. package/lib/print/print-tool/print-tool.component.d.ts +1 -1
  138. package/lib/print/print.module.d.ts +4 -2
  139. package/lib/search/query.state.d.ts +3 -3
  140. package/lib/search/search-bar/search-bar-binding.directive.d.ts +1 -1
  141. package/lib/search/search-bar/search-bar.module.d.ts +2 -3
  142. package/lib/search/search-results-tool/search-results-tool.component.d.ts +4 -3
  143. package/lib/search/search-results-tool/search-results-tool.module.d.ts +2 -10
  144. package/lib/search/search.module.d.ts +6 -3
  145. package/lib/search/search.state.d.ts +4 -3
  146. package/lib/storage/storage.state.d.ts +1 -1
  147. package/lib/tool/tool.state.d.ts +1 -1
  148. package/lib/workspace/shared/edition-actions.service.d.ts +7 -6
  149. package/lib/workspace/shared/feature-actions.service.d.ts +5 -5
  150. package/lib/workspace/shared/wfs-actions.service.d.ts +7 -6
  151. package/lib/workspace/shared/workspace.utils.d.ts +6 -4
  152. package/lib/workspace/workspace-button/workspace-button.component.d.ts +1 -1
  153. package/lib/workspace/workspace.module.d.ts +4 -6
  154. package/lib/workspace/workspace.state.d.ts +4 -2
  155. package/locale/en.integration.json +143 -143
  156. package/locale/fr.integration.json +143 -143
  157. package/package.json +6 -5
  158. package/public_api.d.ts +0 -3
  159. package/esm2022/lib/analytics/analytics.module.mjs +0 -16
  160. package/esm2022/lib/storage/storage.module.mjs +0 -16
  161. package/esm2022/lib/tool/tool.module.mjs +0 -16
  162. package/lib/analytics/analytics.module.d.ts +0 -6
  163. package/lib/storage/storage.module.d.ts +0 -6
  164. package/lib/tool/tool.module.d.ts +0 -6
@@ -1,7 +1,11 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import { AsyncPipe, NgIf } from '@angular/common';
2
3
  import { ChangeDetectorRef, Component, Input } from '@angular/core';
3
- import { ToolComponent } from '@igo2/common';
4
- import { SearchSourceService, sourceCanSearch } from '@igo2/geo';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatListModule } from '@angular/material/list';
6
+ import { ToolComponent } from '@igo2/common/tool';
7
+ import { IgoLanguageModule } from '@igo2/core/language';
8
+ import { LayerLegendListBindingDirective, LayerLegendListComponent, SearchSourceService, sourceCanSearch } from '@igo2/geo';
5
9
  import { BehaviorSubject, ReplaySubject, combineLatest } from 'rxjs';
6
10
  import { debounceTime, map } from 'rxjs/operators';
7
11
  import { ToolState } from './../../tool/tool.state';
@@ -10,11 +14,10 @@ import * as i0 from "@angular/core";
10
14
  import * as i1 from "./../map.state";
11
15
  import * as i2 from "./../../tool/tool.state";
12
16
  import * as i3 from "@igo2/geo";
13
- import * as i4 from "@angular/common";
14
- import * as i5 from "@angular/material/list";
15
- import * as i6 from "@angular/material/icon";
16
- import * as i7 from "@ngx-translate/core";
17
- export let MapLegendToolComponent = class MapLegendToolComponent {
17
+ import * as i4 from "@angular/material/list";
18
+ import * as i5 from "@angular/material/icon";
19
+ import * as i6 from "@ngx-translate/core";
20
+ let MapLegendToolComponent = class MapLegendToolComponent {
18
21
  mapState;
19
22
  toolState;
20
23
  searchSourceService;
@@ -124,24 +127,33 @@ export let MapLegendToolComponent = class MapLegendToolComponent {
124
127
  contextEmit() {
125
128
  this.toolState.toolbox.activateTool('contextManager');
126
129
  }
127
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapLegendToolComponent, deps: [{ token: i1.MapState }, { token: i2.ToolState }, { token: i3.SearchSourceService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
128
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MapLegendToolComponent, selector: "igo-map-legend-tool", inputs: { updateLegendOnResolutionChange: "updateLegendOnResolutionChange", layerAdditionAllowed: "layerAdditionAllowed", allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue", layerListControls: "layerListControls" }, ngImport: i0, template: "<igo-layer-legend-list\r\n *ngIf=\"showAllLegend()\"\r\n igoLayerLegendListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [allowShowAllLegends]=\"allowShowAllLegends\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\r\n (allLegendsShown)=\"onShowAllLegends($event)\"\r\n>\r\n</igo-layer-legend-list>\r\n<ng-template\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n></ng-template>\r\n\r\n<p\r\n class=\"map-empty mat-typography\"\r\n *ngIf=\"\r\n !allowShowAllLegends &&\r\n (layers$ | async).length !== 0 &&\r\n (visibleOrInRangeLayers$ | async).length === 0\r\n \"\r\n>\r\n {{\r\n (visibleLayers$ | async).length\r\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\r\n : ('igo.integration.mapTool.noLayersVisible' | translate)\r\n }}\r\n</p>\r\n\r\n<ng-template #emptyLayers>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n</ng-template>\r\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["allLegendsShown"] }, { kind: "directive", type: i3.LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapLegendToolComponent, deps: [{ token: i1.MapState }, { token: i2.ToolState }, { token: i3.SearchSourceService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: MapLegendToolComponent, isStandalone: true, selector: "igo-map-legend-tool", inputs: { updateLegendOnResolutionChange: "updateLegendOnResolutionChange", layerAdditionAllowed: "layerAdditionAllowed", allowShowAllLegends: "allowShowAllLegends", showAllLegendsValue: "showAllLegendsValue", layerListControls: "layerListControls" }, ngImport: i0, template: "<igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n>\n</igo-layer-legend-list>\n<ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n></ng-template>\n\n<p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n>\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n</p>\n\n<ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LayerLegendListComponent, selector: "igo-layer-legend-list", inputs: ["layers", "excludeBaseLayers", "updateLegendOnResolutionChange", "allowShowAllLegends", "showAllLegendsValue"], outputs: ["allLegendsShown"] }, { kind: "directive", type: LayerLegendListBindingDirective, selector: "[igoLayerLegendListBinding]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i4.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i4.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i4.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i4.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
129
132
  };
130
133
  MapLegendToolComponent = __decorate([
131
134
  ToolComponent({
132
135
  name: 'mapLegend',
133
136
  title: 'igo.integration.tools.legend',
134
- icon: 'format-list-bulleted-type'
137
+ icon: 'format_list_bulleted'
135
138
  }),
136
139
  __metadata("design:paramtypes", [MapState,
137
140
  ToolState,
138
141
  SearchSourceService,
139
142
  ChangeDetectorRef])
140
143
  ], MapLegendToolComponent);
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapLegendToolComponent, decorators: [{
144
+ export { MapLegendToolComponent };
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapLegendToolComponent, decorators: [{
142
146
  type: Component,
143
- args: [{ selector: 'igo-map-legend-tool', template: "<igo-layer-legend-list\r\n *ngIf=\"showAllLegend()\"\r\n igoLayerLegendListBinding\r\n [excludeBaseLayers]=\"excludeBaseLayers\"\r\n [allowShowAllLegends]=\"allowShowAllLegends\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\r\n (allLegendsShown)=\"onShowAllLegends($event)\"\r\n>\r\n</igo-layer-legend-list>\r\n<ng-template\r\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\r\n></ng-template>\r\n\r\n<p\r\n class=\"map-empty mat-typography\"\r\n *ngIf=\"\r\n !allowShowAllLegends &&\r\n (layers$ | async).length !== 0 &&\r\n (visibleOrInRangeLayers$ | async).length === 0\r\n \"\r\n>\r\n {{\r\n (visibleLayers$ | async).length\r\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\r\n : ('igo.integration.mapTool.noLayersVisible' | translate)\r\n }}\r\n</p>\r\n\r\n<ng-template #emptyLayers>\r\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\r\n <p class=\"map-empty mat-typography\">\r\n {{ 'igo.integration.mapTool.empty' | translate }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n layerAdditionAllowed &&\r\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\r\n \"\r\n class=\"map-empty mat-typography\"\r\n >\r\n {{ 'igo.integration.mapTool.customize' | translate }}\r\n </p>\r\n\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"search-tool mat-typography\"\r\n (click)=\"searchEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.search-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M17,14H19V17H22V19H19V22H17V19H14V17H17V14M11,16L2,9L11,2L20,9L11,16M11,18.54L12,17.75V18C12,18.71 12.12,19.39 12.35,20L11,21.07L2,14.07L3.62,12.81L11,18.54Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"catalog-tool mat-typography\"\r\n (click)=\"catalogEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\r\n <mat-icon matListItemIcon>\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fit=\"\"\r\n height=\"100%\"\r\n width=\"100%\"\r\n preserveAspectRatio=\"xMidYMid meet\"\r\n focusable=\"false\"\r\n >\r\n <path\r\n d=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"\r\n ></path></svg\r\n ></mat-icon>\r\n <span\r\n matListItemTitle\r\n class=\"context-tool mat-typography\"\r\n (click)=\"contextEmit()\"\r\n >\r\n {{ 'igo.integration.mapTool.context-tool' | translate }}\r\n </span>\r\n </mat-list-item>\r\n </mat-list>\r\n</ng-template>\r\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
144
- }], ctorParameters: function () { return [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.SearchSourceService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { updateLegendOnResolutionChange: [{
147
+ args: [{ selector: 'igo-map-legend-tool', standalone: true, imports: [
148
+ NgIf,
149
+ LayerLegendListComponent,
150
+ LayerLegendListBindingDirective,
151
+ MatListModule,
152
+ MatIconModule,
153
+ AsyncPipe,
154
+ IgoLanguageModule
155
+ ], template: "<igo-layer-legend-list\n *ngIf=\"showAllLegend()\"\n igoLayerLegendListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [allowShowAllLegends]=\"allowShowAllLegends\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [showAllLegendsValue]=\"showAllLegendsValue$ | async\"\n (allLegendsShown)=\"onShowAllLegends($event)\"\n>\n</igo-layer-legend-list>\n<ng-template\n *ngIf=\"(layers$ | async).length !== 0; else emptyLayers\"\n></ng-template>\n\n<p\n class=\"map-empty mat-typography\"\n *ngIf=\"\n !allowShowAllLegends &&\n (layers$ | async).length !== 0 &&\n (visibleOrInRangeLayers$ | async).length === 0\n \"\n>\n {{\n (visibleLayers$ | async).length\n ? ('igo.integration.mapTool.noLayersInRange' | translate)\n : ('igo.integration.mapTool.noLayersVisible' | translate)\n }}\n</p>\n\n<ng-template #emptyLayers>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}\n"] }]
156
+ }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.SearchSourceService }, { type: i0.ChangeDetectorRef }], propDecorators: { updateLegendOnResolutionChange: [{
145
157
  type: Input
146
158
  }], layerAdditionAllowed: [{
147
159
  type: Input
@@ -152,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
152
164
  }], layerListControls: [{
153
165
  type: Input
154
166
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBSUwsbUJBQW1CLEVBQ25CLGVBQWUsRUFDaEIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBRWIsYUFBYSxFQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFZbkMsV0FBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBc0I7SUE4RHZCO0lBQ0E7SUFDQTtJQUNBO0lBaEVILDBCQUEwQixHQUFZLEtBQUssQ0FBQztJQUVuRCxPQUFPLEdBQTZCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELG9CQUFvQixHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7SUFFN0IsWUFBWSxDQUFl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QTJCO0tBQ2xDLENBQUM7cUNBb0VvQixRQUFRO1FBQ1AsU0FBUztRQUNDLG1CQUFtQjtRQUNqQyxpQkFBaUI7R0FqRXZCLHNCQUFzQixDQW1KbEM7NEZBbkpZLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxxQkFBcUI7eUxBY3RCLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBJZ29NYXAsXHJcbiAgTGF5ZXIsXHJcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxyXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2UsXHJcbiAgc291cmNlQ2FuU2VhcmNoXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQmVoYXZpb3JTdWJqZWN0LFxyXG4gIE9ic2VydmFibGUsXHJcbiAgUmVwbGF5U3ViamVjdCxcclxuICBTdWJzY3JpcHRpb24sXHJcbiAgY29tYmluZUxhdGVzdFxyXG59IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4vLi4vLi4vdG9vbC90b29sLnN0YXRlJztcclxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLy4uL21hcC5zdGF0ZSc7XHJcblxyXG5AVG9vbENvbXBvbmVudCh7XHJcbiAgbmFtZTogJ21hcExlZ2VuZCcsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubGVnZW5kJyxcclxuICBpY29uOiAnZm9ybWF0LWxpc3QtYnVsbGV0ZWQtdHlwZSdcclxufSlcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLWxlZ2VuZC10b29sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tYXAtbGVnZW5kLXRvb2wuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwTGVnZW5kVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbGF5ZXJzJDogQmVoYXZpb3JTdWJqZWN0PExheWVyW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcbiAgc2hvd0FsbExlZ2VuZHNWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuXHJcbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIHZpc2libGVPckluUmFuZ2VMYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbGF5ZXJBZGRpdGlvbkFsbG93ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1Nob3dBbGxMZWdlbmRzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbGF5ZXJMaXN0Q29udHJvbHM6IExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyA9IHt9O1xyXG5cclxuICBnZXQgbWFwKCk6IElnb01hcCB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZU9ySW5SYW5nZUxheWVycyQoKTogT2JzZXJ2YWJsZTxMYXllcltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXHJcbiAgICAgIG1hcCgobGF5ZXJzKSA9PlxyXG4gICAgICAgIGxheWVycy5maWx0ZXIoXHJcbiAgICAgICAgICAobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycyQucGlwZShcclxuICAgICAgbWFwKChsYXllcnMpID0+IGxheWVycy5maWx0ZXIoKGxheWVyKSA9PiBsYXllci52aXNpYmxlJC52YWx1ZSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuZXhjbHVkZUJhc2VMYXllcnMgfHwgZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgc2VhcmNoVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ3NlYXJjaFJlc3VsdHMnKSAhPT0gLTEgJiZcclxuICAgICAgdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXHJcbiAgICAgICAgLmdldFNvdXJjZXMoKVxyXG4gICAgICAgIC5maWx0ZXIoc291cmNlQ2FuU2VhcmNoKVxyXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuYXZhaWxhYmxlICYmIHMuZ2V0VHlwZSgpID09PSAnTGF5ZXInKS5sZW5ndGggPiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhdGFsb2dUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NhdGFsb2cnKSAhPT0gLTE7XHJcbiAgfVxyXG5cclxuICBnZXQgY29udGV4dFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY29udGV4dE1hbmFnZXInKSAhPT0gLTE7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hTb3VyY2VTZXJ2aWNlOiBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNvbHV0aW9uJCQgPSBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgdGhpcy5tYXAubGF5ZXJzJCxcclxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbTGF5ZXJbXSwgbnVtYmVyXSkgPT4ge1xyXG4gICAgICAgIHRoaXMubGF5ZXJzJC5uZXh0KFxyXG4gICAgICAgICAgYnVuY2hbMF0uZmlsdGVyKFxyXG4gICAgICAgICAgICAobGF5ZXIpID0+XHJcbiAgICAgICAgICAgICAgbGF5ZXIuc2hvd0luTGF5ZXJMaXN0ICE9PSBmYWxzZSAmJlxyXG4gICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93U2hvd0FsbExlZ2VuZHMpIHtcclxuICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID1cclxuICAgICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgIT09IHVuZGVmaW5lZFxyXG4gICAgICAgICAgPyB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWVcclxuICAgICAgICAgIDogdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlIHx8IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQodGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJldmVudCBtZXNzYWdlIHRvIGJlIHNob3duIHRvbyBxdWlja2x5LiBXYWl0aW5nIGZvciBsYXllcnNcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgb25TaG93QWxsTGVnZW5kcyhldmVudCkge1xyXG4gICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID0gZXZlbnQ7XHJcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0FsbExlZ2VuZCgpIHtcclxuICAgIGlmICh0aGlzLmxheWVycyQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5sYXllcnMkLmdldFZhbHVlKCkubGVuZ3RoICE9PSAwICYmXHJcbiAgICAgIHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcyA9PT0gZmFsc2VcclxuICAgICkge1xyXG4gICAgICBsZXQgdmlzaWJsZU9ySW5SYW5nZUxheWVycztcclxuICAgICAgdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQgPSB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkLnN1YnNjcmliZShcclxuICAgICAgICAodmFsdWUpID0+IHtcclxuICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/ICh2aXNpYmxlT3JJblJhbmdlTGF5ZXJzID0gZmFsc2UpXHJcbiAgICAgICAgICAgIDogKHZpc2libGVPckluUmFuZ2VMYXllcnMgPSB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodmlzaWJsZU9ySW5SYW5nZUxheWVycyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xyXG4gICAgaWYgKHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkKSB7XHJcbiAgICAgIHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWFyY2hFbWl0KCkge1xyXG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ3NlYXJjaFJlc3VsdHMnKTtcclxuICB9XHJcblxyXG4gIGNhdGFsb2dFbWl0KCkge1xyXG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NhdGFsb2cnKTtcclxuICB9XHJcblxyXG4gIGNvbnRleHRFbWl0KCkge1xyXG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NvbnRleHRNYW5hZ2VyJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tbGF5ZXItbGVnZW5kLWxpc3RcclxuICAqbmdJZj1cInNob3dBbGxMZWdlbmQoKVwiXHJcbiAgaWdvTGF5ZXJMZWdlbmRMaXN0QmluZGluZ1xyXG4gIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXHJcbiAgW2FsbG93U2hvd0FsbExlZ2VuZHNdPVwiYWxsb3dTaG93QWxsTGVnZW5kc1wiXHJcbiAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIlxyXG4gIFtzaG93QWxsTGVnZW5kc1ZhbHVlXT1cInNob3dBbGxMZWdlbmRzVmFsdWUkIHwgYXN5bmNcIlxyXG4gIChhbGxMZWdlbmRzU2hvd24pPVwib25TaG93QWxsTGVnZW5kcygkZXZlbnQpXCJcclxuPlxyXG48L2lnby1sYXllci1sZWdlbmQtbGlzdD5cclxuPG5nLXRlbXBsYXRlXHJcbiAgKm5nSWY9XCIobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDA7IGVsc2UgZW1wdHlMYXllcnNcIlxyXG4+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxwXHJcbiAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxyXG4gICpuZ0lmPVwiXHJcbiAgICAhYWxsb3dTaG93QWxsTGVnZW5kcyAmJlxyXG4gICAgKGxheWVycyQgfCBhc3luYykubGVuZ3RoICE9PSAwICYmXHJcbiAgICAodmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykubGVuZ3RoID09PSAwXHJcbiAgXCJcclxuPlxyXG4gIHt7XHJcbiAgICAodmlzaWJsZUxheWVycyQgfCBhc3luYykubGVuZ3RoXHJcbiAgICAgID8gKCdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5ub0xheWVyc0luUmFuZ2UnIHwgdHJhbnNsYXRlKVxyXG4gICAgICA6ICgnaWdvLmludGVncmF0aW9uLm1hcFRvb2wubm9MYXllcnNWaXNpYmxlJyB8IHRyYW5zbGF0ZSlcclxuICB9fVxyXG48L3A+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5TGF5ZXJzPlxyXG4gIDxtYXQtbGlzdCAqbmdJZj1cImRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50XCI+XHJcbiAgICA8cCBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiPlxyXG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuZW1wdHknIHwgdHJhbnNsYXRlIH19XHJcbiAgICA8L3A+XHJcbiAgICA8cFxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgIGxheWVyQWRkaXRpb25BbGxvd2VkICYmXHJcbiAgICAgICAgKHNlYXJjaFRvb2xJblRvb2xiYXIgfHwgY2F0YWxvZ1Rvb2xJblRvb2xiYXIgfHwgY29udGV4dFRvb2xJblRvb2xiYXIpXHJcbiAgICAgIFwiXHJcbiAgICAgIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcclxuICAgID5cclxuICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmN1c3RvbWl6ZScgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvcD5cclxuXHJcbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIHNlYXJjaFRvb2xJblRvb2xiYXJcIj5cclxuICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5cclxuICAgICAgICA8c3ZnXHJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgIGZpdD1cIlwiXHJcbiAgICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcclxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXHJcbiAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk05LjUsM0E2LjUsNi41IDAgMCwxIDE2LDkuNUMxNiwxMS4xMSAxNS40MSwxMi41OSAxNC40NCwxMy43M0wxNC43MSwxNEgxNS41TDIwLjUsMTlMMTksMjAuNUwxNCwxNS41VjE0LjcxTDEzLjczLDE0LjQ0QzEyLjU5LDE1LjQxIDExLjExLDE2IDkuNSwxNkE2LjUsNi41IDAgMCwxIDMsOS41QTYuNSw2LjUgMCAwLDEgOS41LDNNOS41LDVDNyw1IDUsNyA1LDkuNUM1LDEyIDcsMTQgOS41LDE0QzEyLDE0IDE0LDEyIDE0LDkuNUMxNCw3IDEyLDUgOS41LDVaXCJcclxuICAgICAgICAgID48L3BhdGg+PC9zdmdcclxuICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxyXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxyXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hFbWl0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLnNlYXJjaC10b29sJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIGNhdGFsb2dUb29sSW5Ub29sYmFyXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICBmaXQ9XCJcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXHJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxyXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTcsMTRIMTlWMTdIMjJWMTlIMTlWMjJIMTdWMTlIMTRWMTdIMTdWMTRNMTEsMTZMMiw5TDExLDJMMjAsOUwxMSwxNk0xMSwxOC41NEwxMiwxNy43NVYxOEMxMiwxOC43MSAxMi4xMiwxOS4zOSAxMi4zNSwyMEwxMSwyMS4wN0wyLDE0LjA3TDMuNjIsMTIuODFMMTEsMTguNTRaXCJcclxuICAgICAgICAgID48L3BhdGg+PC9zdmdcclxuICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxyXG4gICAgICAgIGNsYXNzPVwiY2F0YWxvZy10b29sIG1hdC10eXBvZ3JhcGh5XCJcclxuICAgICAgICAoY2xpY2spPVwiY2F0YWxvZ0VtaXQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY2F0YWxvZy10b29sJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIGNvbnRleHRUb29sSW5Ub29sYmFyXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+XHJcbiAgICAgICAgPHN2Z1xyXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICBmaXQ9XCJcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXHJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxyXG4gICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgIGQ9XCJNMTIsMTcuMjdMMTguMTgsMjFMMTYuNTQsMTMuOTdMMjIsOS4yNEwxNC44MSw4LjYyTDEyLDJMOS4xOSw4LjYyTDIsOS4yNEw3LjQ1LDEzLjk3TDUuODIsMjFMMTIsMTcuMjdaXCJcclxuICAgICAgICAgID48L3BhdGg+PC9zdmdcclxuICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxyXG4gICAgICAgIGNsYXNzPVwiY29udGV4dC10b29sIG1hdC10eXBvZ3JhcGh5XCJcclxuICAgICAgICAoY2xpY2spPVwiY29udGV4dEVtaXQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY29udGV4dC10b29sJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgPC9tYXQtbGlzdD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0wsK0JBQStCLEVBQy9CLHdCQUF3QixFQUV4QixtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQ0wsZUFBZSxFQUVmLGFBQWEsRUFFYixhQUFhLEVBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBc0JuQyxJQUFNLHNCQUFzQixHQUE1QixNQUFNLHNC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UyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxDQUFDO3VHQWxKVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiwyVUN2RG5DLG0zRUE0RUEsc2hCRDlCSSxJQUFJLDZGQUNKLHdCQUF3Qix5TkFDeEIsK0JBQStCLHVFQUMvQixhQUFhLHliQUNiLGFBQWEsK0tBQ2IsU0FBUyw2Q0FDVCxpQkFBaUI7O0FBR1Isc0JBQXNCO0lBcEJsQyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsV0FBVztRQUNqQixLQUFLLEVBQUUsOEJBQThCO1FBQ3JDLElBQUksRUFBRSxzQkFBc0I7S0FDN0IsQ0FBQztxQ0E4RW9CLFFBQVE7UUFDUCxTQUFTO1FBQ0MsbUJBQW1CO1FBQ2pDLGlCQUFpQjtHQWpFdkIsc0JBQXNCLENBbUpsQzs7MkZBbkpZLHNCQUFzQjtrQkFmbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixTQUFTO3dCQUNULGlCQUFpQjtxQkFDbEI7dUtBWVEsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHtcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50LFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gIHNvdXJjZUNhblNlYXJjaFxufSBmcm9tICdAaWdvMi9nZW8nO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgY29tYmluZUxhdGVzdFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4vLi4vbWFwLnN0YXRlJztcblxuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwTGVnZW5kJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubGVnZW5kJyxcbiAgaWNvbjogJ2Zvcm1hdF9saXN0X2J1bGxldGVkJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tYXAtbGVnZW5kLXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIExheWVyTGVnZW5kTGlzdENvbXBvbmVudCxcbiAgICBMYXllckxlZ2VuZExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBMZWdlbmRUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBsYXllcnMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgc2hvd0FsbExlZ2VuZHNWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBjaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckFkZGl0aW9uQWxsb3dlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgYWxsb3dTaG93QWxsTGVnZW5kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckxpc3RDb250cm9sczogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zID0ge307XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT5cbiAgICAgICAgbGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT4gbGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ3NlYXJjaFJlc3VsdHMnKSAhPT0gLTEgJiZcbiAgICAgIHRoaXMuc2VhcmNoU291cmNlU2VydmljZVxuICAgICAgICAuZ2V0U291cmNlcygpXG4gICAgICAgIC5maWx0ZXIoc291cmNlQ2FuU2VhcmNoKVxuICAgICAgICAuZmlsdGVyKChzKSA9PiBzLmF2YWlsYWJsZSAmJiBzLmdldFR5cGUoKSA9PT0gJ0xheWVyJykubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBnZXQgY2F0YWxvZ1Rvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NhdGFsb2cnKSAhPT0gLTE7XG4gIH1cblxuICBnZXQgY29udGV4dFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NvbnRleHRNYW5hZ2VyJykgIT09IC0xO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTb3VyY2VTZXJ2aWNlOiBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYXAubGF5ZXJzJCxcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgXSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogW0xheWVyW10sIG51bWJlcl0pID0+IHtcbiAgICAgICAgdGhpcy5sYXllcnMkLm5leHQoXG4gICAgICAgICAgYnVuY2hbMF0uZmlsdGVyKFxuICAgICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3QgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcykge1xuICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID1cbiAgICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZVxuICAgICAgICAgIDogdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlIHx8IGZhbHNlO1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gcHJldmVudCBtZXNzYWdlIHRvIGJlIHNob3duIHRvbyBxdWlja2x5LiBXYWl0aW5nIGZvciBsYXllcnNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSB0cnVlO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIG9uU2hvd0FsbExlZ2VuZHMoZXZlbnQpIHtcbiAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPSBldmVudDtcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgc2hvd0FsbExlZ2VuZCgpIHtcbiAgICBpZiAodGhpcy5sYXllcnMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubGF5ZXJzJC5nZXRWYWx1ZSgpLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdGhpcy5hbGxvd1Nob3dBbGxMZWdlbmRzID09PSBmYWxzZVxuICAgICkge1xuICAgICAgbGV0IHZpc2libGVPckluUmFuZ2VMYXllcnM7XG4gICAgICB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJCA9IHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQuc3Vic2NyaWJlKFxuICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDBcbiAgICAgICAgICAgID8gKHZpc2libGVPckluUmFuZ2VMYXllcnMgPSBmYWxzZSlcbiAgICAgICAgICAgIDogKHZpc2libGVPckluUmFuZ2VMYXllcnMgPSB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHZpc2libGVPckluUmFuZ2VMYXllcnMgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJCkge1xuICAgICAgdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdzZWFyY2hSZXN1bHRzJyk7XG4gIH1cblxuICBjYXRhbG9nRW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnY2F0YWxvZycpO1xuICB9XG5cbiAgY29udGV4dEVtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NvbnRleHRNYW5hZ2VyJyk7XG4gIH1cbn1cbiIsIjxpZ28tbGF5ZXItbGVnZW5kLWxpc3RcbiAgKm5nSWY9XCJzaG93QWxsTGVnZW5kKClcIlxuICBpZ29MYXllckxlZ2VuZExpc3RCaW5kaW5nXG4gIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gIFthbGxvd1Nob3dBbGxMZWdlbmRzXT1cImFsbG93U2hvd0FsbExlZ2VuZHNcIlxuICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gIFtzaG93QWxsTGVnZW5kc1ZhbHVlXT1cInNob3dBbGxMZWdlbmRzVmFsdWUkIHwgYXN5bmNcIlxuICAoYWxsTGVnZW5kc1Nob3duKT1cIm9uU2hvd0FsbExlZ2VuZHMoJGV2ZW50KVwiXG4+XG48L2lnby1sYXllci1sZWdlbmQtbGlzdD5cbjxuZy10ZW1wbGF0ZVxuICAqbmdJZj1cIihsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMDsgZWxzZSBlbXB0eUxheWVyc1wiXG4+PC9uZy10ZW1wbGF0ZT5cblxuPHBcbiAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxuICAqbmdJZj1cIlxuICAgICFhbGxvd1Nob3dBbGxMZWdlbmRzICYmXG4gICAgKGxheWVycyQgfCBhc3luYykubGVuZ3RoICE9PSAwICYmXG4gICAgKHZpc2libGVPckluUmFuZ2VMYXllcnMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFxuICBcIlxuPlxuICB7e1xuICAgICh2aXNpYmxlTGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGhcbiAgICAgID8gKCdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5ub0xheWVyc0luUmFuZ2UnIHwgdHJhbnNsYXRlKVxuICAgICAgOiAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzVmlzaWJsZScgfCB0cmFuc2xhdGUpXG4gIH19XG48L3A+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlMYXllcnM+XG4gIDxtYXQtbGlzdCAqbmdJZj1cImRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50XCI+XG4gICAgPHAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5lbXB0eScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gICAgPHBcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGxheWVyQWRkaXRpb25BbGxvd2VkICYmXG4gICAgICAgIChzZWFyY2hUb29sSW5Ub29sYmFyIHx8IGNhdGFsb2dUb29sSW5Ub29sYmFyIHx8IGNvbnRleHRUb29sSW5Ub29sYmFyKVxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY3VzdG9taXplJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cblxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgc2VhcmNoVG9vbEluVG9vbGJhclwiPlxuICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgPHNwYW5cbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxuICAgICAgICBjbGFzcz1cInNlYXJjaC10b29sIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKGNsaWNrKT1cInNlYXJjaEVtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5zZWFyY2gtdG9vbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjYXRhbG9nVG9vbEluVG9vbGJhclwiPlxuICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5saWJyYXJ5X2FkZDwvbWF0LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgIGNsYXNzPVwiY2F0YWxvZy10b29sIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKGNsaWNrKT1cImNhdGFsb2dFbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY2F0YWxvZy10b29sJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIGNvbnRleHRUb29sSW5Ub29sYmFyXCI+XG4gICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnN0YXI8L21hdC1pY29uPlxuICAgICAgPHNwYW5cbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxuICAgICAgICBjbGFzcz1cImNvbnRleHQtdG9vbCBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgIChjbGljayk9XCJjb250ZXh0RW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmNvbnRleHQtdG9vbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gIDwvbWF0LWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,24 +1,33 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
+ import { AsyncPipe, NgIf } from '@angular/common';
2
3
  import { Component, ViewChild } from '@angular/core';
3
- import { EntityTableComponent, ToolComponent } from '@igo2/common';
4
- import { LanguageService, MessageService } from '@igo2/core';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatInputModule } from '@angular/material/input';
9
+ import { MatRadioModule } from '@angular/material/radio';
10
+ import { EntityTableComponent } from '@igo2/common/entity';
11
+ import { ToolComponent } from '@igo2/common/tool';
12
+ import { LanguageService } from '@igo2/core/language';
13
+ import { IgoLanguageModule } from '@igo2/core/language';
14
+ import { MessageService } from '@igo2/core/message';
5
15
  import { Clipboard, NumberUtils } from '@igo2/utils';
6
16
  import { MapProximityState } from '../map-proximity.state';
7
17
  import { MapState } from '../map.state';
8
18
  import * as i0 from "@angular/core";
9
19
  import * as i1 from "../map.state";
10
20
  import * as i2 from "../map-proximity.state";
11
- import * as i3 from "@igo2/core";
12
- import * as i4 from "@angular/forms";
21
+ import * as i3 from "@igo2/core/language";
22
+ import * as i4 from "@igo2/core/message";
13
23
  import * as i5 from "@angular/material/form-field";
14
24
  import * as i6 from "@angular/material/input";
15
- import * as i7 from "@angular/common";
25
+ import * as i7 from "@angular/material/button";
16
26
  import * as i8 from "@angular/material/icon";
17
27
  import * as i9 from "@angular/material/radio";
18
- import * as i10 from "@angular/material/button";
19
- import * as i11 from "@igo2/common";
20
- import * as i12 from "@ngx-translate/core";
21
- export let MapProximityToolComponent = class MapProximityToolComponent {
28
+ import * as i10 from "@angular/forms";
29
+ import * as i11 from "@ngx-translate/core";
30
+ let MapProximityToolComponent = class MapProximityToolComponent {
22
31
  mapState;
23
32
  mapProximityState;
24
33
  languageService;
@@ -103,14 +112,14 @@ export let MapProximityToolComponent = class MapProximityToolComponent {
103
112
  this.messageService.success('igo.integration.map-proximity-tool.copyMsg', 'igo.integration.map-proximity-tool.copyTitle');
104
113
  }
105
114
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapProximityToolComponent, deps: [{ token: i1.MapState }, { token: i2.MapProximityState }, { token: i3.LanguageService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MapProximityToolComponent, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"mapProximityState.proximityFeatureStore\"\r\n [template]=\"tableTemplate\"\r\n></igo-entity-table>\r\n<br />\r\n<mat-form-field\r\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\r\n class=\"coordinates\"\r\n>\r\n <textarea\r\n #textArea\r\n matInput\r\n readonly\r\n rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\r\n [value]=\"coord[0]\"\r\n ></textarea>\r\n</mat-form-field>\r\n<mat-form-field\r\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\r\n class=\"coordinates2\"\r\n>\r\n <textarea\r\n #textArea\r\n matInput\r\n readonly\r\n rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\r\n [value]=\"coord2[1]\"\r\n ></textarea>\r\n</mat-form-field>\r\n\r\n<button\r\n *ngIf=\"\r\n (mapProximityState.currentPositionCoordinate$ | async) &&\r\n (mapProximityState.currentPositionCoordinate$ | async).length\r\n \"\r\n mat-icon-button\r\n (click)=\"copyTextToClipboard()\"\r\n>\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n</button>\r\n<div class=\"title-container\">\r\n <mat-label class=\"title mat-typography\">{{\r\n 'igo.integration.map-proximity-tool.method' | translate\r\n }}</mat-label>\r\n</div>\r\n<div class=\"igo-input-container mat-typography\">\r\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\r\n <mat-radio-button\r\n [checked]=\"\r\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\r\n \"\r\n value=\"geolocation\"\r\n >{{\r\n 'igo.integration.map-proximity-tool.geolocation' | translate\r\n }}</mat-radio-button\r\n >\r\n <mat-radio-button\r\n [checked]=\"\r\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\r\n \"\r\n value=\"mapCenter\"\r\n >{{\r\n 'igo.integration.map-proximity-tool.mapCenter' | translate\r\n }}</mat-radio-button\r\n >\r\n </mat-radio-group>\r\n</div>\r\n\r\n<div class=\"radius-unit\">\r\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\r\n <mat-label>{{\r\n 'igo.integration.map-proximity-tool.radiusM' | translate\r\n }}</mat-label>\r\n <input\r\n type=\"number\"\r\n pattern=\"[0-9]*\"\r\n [(ngModel)]=\"maxDistance\"\r\n matInput\r\n placeholder=\"{{\r\n 'igo.integration.map-proximity-tool.radiusM' | translate\r\n }}\"\r\n />\r\n </mat-form-field>\r\n</div>\r\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityToolComponent, deps: [{ token: i1.MapState }, { token: i2.MapProximityState }, { token: i3.LanguageService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component });
116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: MapProximityToolComponent, isStandalone: true, selector: "igo-map-proximity-tool", viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true, static: true }], ngImport: i0, template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon>content_copy</mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"], dependencies: [{ kind: "component", type: EntityTableComponent, selector: "igo-entity-table", inputs: ["store", "paginator", "template", "scrollBehavior", "sortNullsFirst", "withPaginator", "paginatorOptions"], outputs: ["entityClick", "entitySelectChange", "entitySortChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }] });
108
117
  };
109
118
  MapProximityToolComponent = __decorate([
110
119
  ToolComponent({
111
120
  name: 'map-proximity',
112
121
  title: 'igo.integration.tools.closestFeature',
113
- icon: 'radius'
122
+ icon: 'radar'
114
123
  })
115
124
  /**
116
125
  * Tool to handle the advanced map tools
@@ -121,11 +130,23 @@ MapProximityToolComponent = __decorate([
121
130
  LanguageService,
122
131
  MessageService])
123
132
  ], MapProximityToolComponent);
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapProximityToolComponent, decorators: [{
133
+ export { MapProximityToolComponent };
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityToolComponent, decorators: [{
125
135
  type: Component,
126
- args: [{ selector: 'igo-map-proximity-tool', template: "<igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"mapProximityState.proximityFeatureStore\"\r\n [template]=\"tableTemplate\"\r\n></igo-entity-table>\r\n<br />\r\n<mat-form-field\r\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\r\n class=\"coordinates\"\r\n>\r\n <textarea\r\n #textArea\r\n matInput\r\n readonly\r\n rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\r\n [value]=\"coord[0]\"\r\n ></textarea>\r\n</mat-form-field>\r\n<mat-form-field\r\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\r\n class=\"coordinates2\"\r\n>\r\n <textarea\r\n #textArea\r\n matInput\r\n readonly\r\n rows=\"1\"\r\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\r\n [value]=\"coord2[1]\"\r\n ></textarea>\r\n</mat-form-field>\r\n\r\n<button\r\n *ngIf=\"\r\n (mapProximityState.currentPositionCoordinate$ | async) &&\r\n (mapProximityState.currentPositionCoordinate$ | async).length\r\n \"\r\n mat-icon-button\r\n (click)=\"copyTextToClipboard()\"\r\n>\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n</button>\r\n<div class=\"title-container\">\r\n <mat-label class=\"title mat-typography\">{{\r\n 'igo.integration.map-proximity-tool.method' | translate\r\n }}</mat-label>\r\n</div>\r\n<div class=\"igo-input-container mat-typography\">\r\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\r\n <mat-radio-button\r\n [checked]=\"\r\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\r\n \"\r\n value=\"geolocation\"\r\n >{{\r\n 'igo.integration.map-proximity-tool.geolocation' | translate\r\n }}</mat-radio-button\r\n >\r\n <mat-radio-button\r\n [checked]=\"\r\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\r\n \"\r\n value=\"mapCenter\"\r\n >{{\r\n 'igo.integration.map-proximity-tool.mapCenter' | translate\r\n }}</mat-radio-button\r\n >\r\n </mat-radio-group>\r\n</div>\r\n\r\n<div class=\"radius-unit\">\r\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\r\n <mat-label>{{\r\n 'igo.integration.map-proximity-tool.radiusM' | translate\r\n }}</mat-label>\r\n <input\r\n type=\"number\"\r\n pattern=\"[0-9]*\"\r\n [(ngModel)]=\"maxDistance\"\r\n matInput\r\n placeholder=\"{{\r\n 'igo.integration.map-proximity-tool.radiusM' | translate\r\n }}\"\r\n />\r\n </mat-form-field>\r\n</div>\r\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"] }]
127
- }], ctorParameters: function () { return [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i3.MessageService }]; }, propDecorators: { table: [{
136
+ args: [{ selector: 'igo-map-proximity-tool', standalone: true, imports: [
137
+ EntityTableComponent,
138
+ NgIf,
139
+ MatFormFieldModule,
140
+ MatInputModule,
141
+ MatButtonModule,
142
+ MatIconModule,
143
+ MatRadioModule,
144
+ FormsModule,
145
+ AsyncPipe,
146
+ IgoLanguageModule
147
+ ], template: "<igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"mapProximityState.proximityFeatureStore\"\n [template]=\"tableTemplate\"\n></igo-entity-table>\n<br />\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord\"\n class=\"coordinates\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lon' | translate\"\n [value]=\"coord[0]\"\n ></textarea>\n</mat-form-field>\n<mat-form-field\n *ngIf=\"mapProximityState.currentPositionCoordinate$ | async as coord2\"\n class=\"coordinates2\"\n>\n <textarea\n #textArea\n matInput\n readonly\n rows=\"1\"\n [placeholder]=\"'igo.integration.map-proximity-tool.lat' | translate\"\n [value]=\"coord2[1]\"\n ></textarea>\n</mat-form-field>\n\n<button\n *ngIf=\"\n (mapProximityState.currentPositionCoordinate$ | async) &&\n (mapProximityState.currentPositionCoordinate$ | async).length\n \"\n mat-icon-button\n (click)=\"copyTextToClipboard()\"\n>\n <mat-icon>content_copy</mat-icon>\n</button>\n<div class=\"title-container\">\n <mat-label class=\"title mat-typography\">{{\n 'igo.integration.map-proximity-tool.method' | translate\n }}</mat-label>\n</div>\n<div class=\"igo-input-container mat-typography\">\n <mat-radio-group (change)=\"onLocationTypeChange($event)\">\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'geolocation'\n \"\n value=\"geolocation\"\n >{{\n 'igo.integration.map-proximity-tool.geolocation' | translate\n }}</mat-radio-button\n >\n <mat-radio-button\n [checked]=\"\n (mapProximityState.proximitylocationType$ | async) === 'mapCenter'\n \"\n value=\"mapCenter\"\n >{{\n 'igo.integration.map-proximity-tool.mapCenter' | translate\n }}</mat-radio-button\n >\n </mat-radio-group>\n</div>\n\n<div class=\"radius-unit\">\n <mat-form-field class=\"radius-field\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}</mat-label>\n <input\n type=\"number\"\n pattern=\"[0-9]*\"\n [(ngModel)]=\"maxDistance\"\n matInput\n placeholder=\"{{\n 'igo.integration.map-proximity-tool.radiusM' | translate\n }}\"\n />\n </mat-form-field>\n</div>\n", styles: [":host .table-compact{height:auto}:host .table-compact ::ng-deep .mat-mdc-header-cell.mat-column-selectionCheckbox{width:52px}:host textarea{resize:none}:host mat-form-field{padding:10px 15px}:host mat-form-field.coordinates{width:110px}:host mat-form-field.coordinates2{width:100px;padding:0 10px 0 3px}:host mat-form-field.igo-input-container{width:60%;padding:0 15px}:host .radius-unit{display:flex;width:90%;margin-left:2px;padding:5px}:host .radius-unit mat-form-field.radius-field{display:flex;flex-flow:column nowrap;width:100%}:host .title-container{padding:10px}:host .title{margin-left:5px;font-size:initial}:host .mat-mdc-radio-group{display:flex;flex-direction:column}:host .mat-mdc-radio-button{display:inline-flex;position:relative;margin-left:12px}\n"] }]
148
+ }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.MapProximityState }, { type: i3.LanguageService }, { type: i4.MessageService }], propDecorators: { table: [{
128
149
  type: ViewChild,
129
150
  args: ['table', { static: true }]
130
151
  }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsYUFBYSxFQUNkLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBZWpDLFdBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBdUIzQjtJQUNBO0lBQ0M7SUFDQTtJQXpCRixNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUNFLEtBQUssQ0FBdUI7SUFFbEUsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0Qs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QUNuQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBaUI7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQ3BFLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUN6Qiw0Q0FBNEMsRUFDNUMsOENBQThDLENBQy9DLENBQUM7U0FDSDtJQUNILENBQUM7d0dBdEdVLHlCQUF5Qjs0RkFBekIseUJBQXlCLDRLQzlCdEMsd2lGQXdGQTs7QUQxRGEseUJBQXlCO0lBYnJDLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRSxzQ0FBc0M7UUFDN0MsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDO0lBQ0Y7O09BRUc7O3FDQTZCa0IsUUFBUTtRQUNDLGlCQUFpQjtRQUNsQixlQUFlO1FBQ2hCLGNBQWM7R0ExQjdCLHlCQUF5QixDQXVHckM7NEZBdkdZLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx3QkFBd0I7MExBTUksS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFJhZGlvQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5cclxuaW1wb3J0IHtcclxuICBFbnRpdHlUYWJsZUNvbXBvbmVudCxcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlLFxyXG4gIFRvb2xDb21wb25lbnRcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IENsaXBib2FyZCwgTnVtYmVyVXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1hcFByb3hpbWl0eVN0YXRlIH0gZnJvbSAnLi4vbWFwLXByb3hpbWl0eS5zdGF0ZSc7XHJcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcclxuXHJcbkBUb29sQ29tcG9uZW50KHtcclxuICBuYW1lOiAnbWFwLXByb3hpbWl0eScsXHJcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMuY2xvc2VzdEZlYXR1cmUnLFxyXG4gIGljb246ICdyYWRpdXMnXHJcbn0pXHJcbi8qKlxyXG4gKiBUb29sIHRvIGhhbmRsZSB0aGUgYWR2YW5jZWQgbWFwIHRvb2xzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1tYXAtcHJveGltaXR5LXRvb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3VicyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBnZXQgbWF4RGlzdGFuY2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlSYWRpdXNWYWx1ZSQudmFsdWU7XHJcbiAgfVxyXG4gIHNldCBtYXhEaXN0YW5jZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcbiAgcHVibGljIHVzZXJEZWZpbmVkTWFwQ2VudGVyOiBib29sZWFuO1xyXG4gIHB1YmxpYyB1c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRhYmxlIHRlbXBsYXRlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcclxuICAgIHB1YmxpYyBtYXBQcm94aW1pdHlTdGF0ZTogTWFwUHJveGltaXR5U3RhdGUsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICBzZWxlY3RNYW55OiBmYWxzZSxcclxuICAgICAgc2VsZWN0aW9uQ2hlY2tib3g6IGZhbHNlLFxyXG4gICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICBjb2x1bW5zOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2VsZW1lbnQnLFxyXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5mZWF0dXJlJ1xyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLmVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiAnZGlzdGFuY2UnLFxyXG4gICAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5kaXN0YW5jZSdcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoXHJcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZGlzdGFuY2UsXHJcbiAgICAgICAgICAgICAgMVxyXG4gICAgICAgICAgICApfW1gO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uID1cclxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID09PSB0cnVlO1xyXG4gICAgdGhpcy51c2VyRGVmaW5lZE1hcENlbnRlciA9IHRoaXMubWFwLm1hcENlbnRlciQudmFsdWUgPT09IHRydWU7XHJcblxyXG4gICAgdGhpcy5zdWJzJCQucHVzaChcclxuICAgICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkLnN1YnNjcmliZSgodikgPT4ge1xyXG4gICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh2ICE9PSAnZ2VvbG9jYXRpb24nKTtcclxuICAgICAgICBpZiAodiA9PT0gJ2dlb2xvY2F0aW9uJykge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5lbmFibGVkJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dCh0aGlzLnVzZXJEZWZpbmVkTWFwQ2VudGVyKTtcclxuICAgIHRoaXMuc3VicyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9XHJcbiAgICAgIHRoaXMudXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIG9uTG9jYXRpb25UeXBlQ2hhbmdlKGU6IE1hdFJhZGlvQ2hhbmdlKSB7XHJcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQubmV4dChlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvcHkgdGhlIGNvb3JkaW5hdGVzIHRvIGEgY2xpcGJvYXJkXHJcbiAgICovXHJcbiAgY29weVRleHRUb0NsaXBib2FyZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBDbGlwYm9hcmQuY29weShcclxuICAgICAgdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJD8udmFsdWUudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICAgIGlmIChzdWNjZXNzZnVsKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5TXNnJyxcclxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5VGl0bGUnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tZW50aXR5LXRhYmxlXHJcbiAgI3RhYmxlXHJcbiAgY2xhc3M9XCJ0YWJsZS1jb21wYWN0XCJcclxuICBbc3RvcmVdPVwibWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5RmVhdHVyZVN0b3JlXCJcclxuICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiXHJcbj48L2lnby1lbnRpdHktdGFibGU+XHJcbjxiciAvPlxyXG48bWF0LWZvcm0tZmllbGRcclxuICAqbmdJZj1cIm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMgYXMgY29vcmRcIlxyXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXNcIlxyXG4+XHJcbiAgPHRleHRhcmVhXHJcbiAgICAjdGV4dEFyZWFcclxuICAgIG1hdElucHV0XHJcbiAgICByZWFkb25seVxyXG4gICAgcm93cz1cIjFcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmxvbicgfCB0cmFuc2xhdGVcIlxyXG4gICAgW3ZhbHVlXT1cImNvb3JkWzBdXCJcclxuICA+PC90ZXh0YXJlYT5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuPG1hdC1mb3JtLWZpZWxkXHJcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiXHJcbiAgY2xhc3M9XCJjb29yZGluYXRlczJcIlxyXG4+XHJcbiAgPHRleHRhcmVhXHJcbiAgICAjdGV4dEFyZWFcclxuICAgIG1hdElucHV0XHJcbiAgICByZWFkb25seVxyXG4gICAgcm93cz1cIjFcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmxhdCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgW3ZhbHVlXT1cImNvb3JkMlsxXVwiXHJcbiAgPjwvdGV4dGFyZWE+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48YnV0dG9uXHJcbiAgKm5nSWY9XCJcclxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKSAmJlxyXG4gICAgKG1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkIHwgYXN5bmMpLmxlbmd0aFxyXG4gIFwiXHJcbiAgbWF0LWljb24tYnV0dG9uXHJcbiAgKGNsaWNrKT1cImNvcHlUZXh0VG9DbGlwYm9hcmQoKVwiXHJcbj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgPG1hdC1sYWJlbCBjbGFzcz1cInRpdGxlIG1hdC10eXBvZ3JhcGh5XCI+e3tcclxuICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1ldGhvZCcgfCB0cmFuc2xhdGVcclxuICB9fTwvbWF0LWxhYmVsPlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXIgbWF0LXR5cG9ncmFwaHlcIj5cclxuICA8bWF0LXJhZGlvLWdyb3VwIChjaGFuZ2UpPVwib25Mb2NhdGlvblR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgKG1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQgfCBhc3luYykgPT09ICdnZW9sb2NhdGlvbidcclxuICAgICAgXCJcclxuICAgICAgdmFsdWU9XCJnZW9sb2NhdGlvblwiXHJcbiAgICAgID57e1xyXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmdlb2xvY2F0aW9uJyB8IHRyYW5zbGF0ZVxyXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgPlxyXG4gICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgKG1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQgfCBhc3luYykgPT09ICdtYXBDZW50ZXInXHJcbiAgICAgIFwiXHJcbiAgICAgIHZhbHVlPVwibWFwQ2VudGVyXCJcclxuICAgICAgPnt7XHJcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubWFwQ2VudGVyJyB8IHRyYW5zbGF0ZVxyXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxyXG4gICAgPlxyXG4gIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyYWRpdXMtdW5pdFwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJhZGl1cy1maWVsZFwiIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cclxuICAgIDxtYXQtbGFiZWw+e3tcclxuICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wucmFkaXVzTScgfCB0cmFuc2xhdGVcclxuICAgIH19PC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cIm1heERpc3RhbmNlXCJcclxuICAgICAgbWF0SW5wdXRcclxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLnJhZGl1c00nIHwgdHJhbnNsYXRlXHJcbiAgICAgIH19XCJcclxuICAgIC8+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+XHJcbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHktdG9vbC9tYXAtcHJveGltaXR5LXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXByb3hpbWl0eS10b29sL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBa0IsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLHFCQUFxQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFD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LGNBQWMsMFdBQ2QsZUFBZSwySUFDZixhQUFhLG1MQUNiLGNBQWMsc2lCQUNkLFdBQVcsMDZCQUNYLFNBQVMsNkNBQ1QsaUJBQWlCOztBQUdSLHlCQUF5QjtJQTFCckMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLHNDQUFzQztRQUM3QyxJQUFJLEVBQUUsT0FBTztLQUNkLENBQUM7SUFDRjs7T0FFRzs7cUNBMENrQixRQUFRO1FBQ0MsaUJBQWlCO1FBQ2xCLGVBQWU7UUFDaEIsY0FBYztHQTFCN0IseUJBQXlCLENBdUdyQzs7MkZBdkdZLHlCQUF5QjtrQkFsQnJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLElBQUksV0FDUDt3QkFDUCxvQkFBb0I7d0JBQ3BCLElBQUk7d0JBQ0osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCO3dLQUlxQyxLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UmFkaW9DaGFuZ2UsIE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuXG5pbXBvcnQgeyBFbnRpdHlUYWJsZUNvbXBvbmVudCwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbi90b29sJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IEZlYXR1cmUsIElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyBDbGlwYm9hcmQsIE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWFwUHJveGltaXR5U3RhdGUgfSBmcm9tICcuLi9tYXAtcHJveGltaXR5LnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwLnN0YXRlJztcblxuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwLXByb3hpbWl0eScsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmNsb3Nlc3RGZWF0dXJlJyxcbiAgaWNvbjogJ3JhZGFyJ1xufSlcbi8qKlxuICogVG9vbCB0byBoYW5kbGUgdGhlIGFkdmFuY2VkIG1hcCB0b29sc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLXByb3hpbWl0eS10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1wcm94aW1pdHktdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRW50aXR5VGFibGVDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5VG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xuXG4gIGdldCBtYXhEaXN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlSYWRpdXNWYWx1ZSQudmFsdWU7XG4gIH1cbiAgc2V0IG1heERpc3RhbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eVJhZGl1c1ZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cbiAgcHVibGljIHVzZXJEZWZpbmVkTWFwQ2VudGVyOiBib29sZWFuO1xuICBwdWJsaWMgdXNlckRlZmluZWRGb2xsb3dQb3NpdGlvbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRhYmxlIHRlbXBsYXRlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwdWJsaWMgbWFwUHJveGltaXR5U3RhdGU6IE1hcFByb3hpbWl0eVN0YXRlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0ge1xuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc2VsZWN0TWFueTogZmFsc2UsXG4gICAgICBzZWxlY3Rpb25DaGVja2JveDogZmFsc2UsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2VsZW1lbnQnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmZlYXR1cmUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnZGlzdGFuY2UnLFxuICAgICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLmRpc3RhbmNlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke051bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChcbiAgICAgICAgICAgICAgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuZGlzdGFuY2UsXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICl9bWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnVzZXJEZWZpbmVkRm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID09PSB0cnVlO1xuICAgIHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIgPSB0aGlzLm1hcC5tYXBDZW50ZXIkLnZhbHVlID09PSB0cnVlO1xuXG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5bG9jYXRpb25UeXBlJC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHYgIT09ICdnZW9sb2NhdGlvbicpO1xuICAgICAgICBpZiAodiA9PT0gJ2dlb2xvY2F0aW9uJykge1xuICAgICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5mb2xsb3dQb3NpdGlvbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLmZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubWFwUHJveGltaXR5U3RhdGUuZW5hYmxlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRoaXMudXNlckRlZmluZWRNYXBDZW50ZXIpO1xuICAgIHRoaXMuc3VicyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuZm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy51c2VyRGVmaW5lZEZvbGxvd1Bvc2l0aW9uO1xuICB9XG5cbiAgb25Mb2NhdGlvblR5cGVDaGFuZ2UoZTogTWF0UmFkaW9DaGFuZ2UpIHtcbiAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQubmV4dChlLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IHRoZSBjb29yZGluYXRlcyB0byBhIGNsaXBib2FyZFxuICAgKi9cbiAgY29weVRleHRUb0NsaXBib2FyZCgpOiB2b2lkIHtcbiAgICBjb25zdCBzdWNjZXNzZnVsID0gQ2xpcGJvYXJkLmNvcHkoXG4gICAgICB0aGlzLm1hcFByb3hpbWl0eVN0YXRlLmN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkPy52YWx1ZS50b1N0cmluZygpXG4gICAgKTtcbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5jb3B5TXNnJyxcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuY29weVRpdGxlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpZ28tZW50aXR5LXRhYmxlXG4gICN0YWJsZVxuICBjbGFzcz1cInRhYmxlLWNvbXBhY3RcIlxuICBbc3RvcmVdPVwibWFwUHJveGltaXR5U3RhdGUucHJveGltaXR5RmVhdHVyZVN0b3JlXCJcbiAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuPjwvaWdvLWVudGl0eS10YWJsZT5cbjxiciAvPlxuPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwibWFwUHJveGltaXR5U3RhdGUuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQgfCBhc3luYyBhcyBjb29yZFwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXNcIlxuPlxuICA8dGV4dGFyZWFcbiAgICAjdGV4dEFyZWFcbiAgICBtYXRJbnB1dFxuICAgIHJlYWRvbmx5XG4gICAgcm93cz1cIjFcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5sb24nIHwgdHJhbnNsYXRlXCJcbiAgICBbdmFsdWVdPVwiY29vcmRbMF1cIlxuICA+PC90ZXh0YXJlYT5cbjwvbWF0LWZvcm0tZmllbGQ+XG48bWF0LWZvcm0tZmllbGRcbiAgKm5nSWY9XCJtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jIGFzIGNvb3JkMlwiXG4gIGNsYXNzPVwiY29vcmRpbmF0ZXMyXCJcbj5cbiAgPHRleHRhcmVhXG4gICAgI3RleHRBcmVhXG4gICAgbWF0SW5wdXRcbiAgICByZWFkb25seVxuICAgIHJvd3M9XCIxXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wubGF0JyB8IHRyYW5zbGF0ZVwiXG4gICAgW3ZhbHVlXT1cImNvb3JkMlsxXVwiXG4gID48L3RleHRhcmVhPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGJ1dHRvblxuICAqbmdJZj1cIlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKSAmJlxuICAgIChtYXBQcm94aW1pdHlTdGF0ZS5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCB8IGFzeW5jKS5sZW5ndGhcbiAgXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIChjbGljayk9XCJjb3B5VGV4dFRvQ2xpcGJvYXJkKClcIlxuPlxuICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbjwvYnV0dG9uPlxuPGRpdiBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiPlxuICA8bWF0LWxhYmVsIGNsYXNzPVwidGl0bGUgbWF0LXR5cG9ncmFwaHlcIj57e1xuICAgICdpZ28uaW50ZWdyYXRpb24ubWFwLXByb3hpbWl0eS10b29sLm1ldGhvZCcgfCB0cmFuc2xhdGVcbiAgfX08L21hdC1sYWJlbD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXIgbWF0LXR5cG9ncmFwaHlcIj5cbiAgPG1hdC1yYWRpby1ncm91cCAoY2hhbmdlKT1cIm9uTG9jYXRpb25UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnZ2VvbG9jYXRpb24nXG4gICAgICBcIlxuICAgICAgdmFsdWU9XCJnZW9sb2NhdGlvblwiXG4gICAgICA+e3tcbiAgICAgICAgJ2lnby5pbnRlZ3JhdGlvbi5tYXAtcHJveGltaXR5LXRvb2wuZ2VvbG9jYXRpb24nIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgICA8bWF0LXJhZGlvLWJ1dHRvblxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIChtYXBQcm94aW1pdHlTdGF0ZS5wcm94aW1pdHlsb2NhdGlvblR5cGUkIHwgYXN5bmMpID09PSAnbWFwQ2VudGVyJ1xuICAgICAgXCJcbiAgICAgIHZhbHVlPVwibWFwQ2VudGVyXCJcbiAgICAgID57e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5tYXBDZW50ZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LXJhZGlvLWJ1dHRvblxuICAgID5cbiAgPC9tYXQtcmFkaW8tZ3JvdXA+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInJhZGl1cy11bml0XCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJhZGl1cy1maWVsZFwiIGZsb2F0TGFiZWw9XCJhbHdheXNcIj5cbiAgICA8bWF0LWxhYmVsPnt7XG4gICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgIH19PC9tYXQtbGFiZWw+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtYXhEaXN0YW5jZVwiXG4gICAgICBtYXRJbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAnaWdvLmludGVncmF0aW9uLm1hcC1wcm94aW1pdHktdG9vbC5yYWRpdXNNJyB8IHRyYW5zbGF0ZVxuICAgICAgfX1cIlxuICAgIC8+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { StorageService } from '@igo2/core';
2
+ import { StorageService } from '@igo2/core/storage';
3
3
  import { FEATURE, FeatureStore, featureFromOl, measureOlGeometryLength, roundCoordTo } from '@igo2/geo';
4
4
  import { uuid } from '@igo2/utils';
5
5
  import GeoJSON from 'ol/format/GeoJSON';
@@ -11,7 +11,7 @@ import { debounceTime } from 'rxjs/operators';
11
11
  import { MapState } from '../map/map.state';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "../map/map.state";
14
- import * as i2 from "@igo2/core";
14
+ import * as i2 from "@igo2/core/storage";
15
15
  /**
16
16
  * Service that holds the state of the direction module
17
17
  */
@@ -168,13 +168,13 @@ export class MapProximityState {
168
168
  }
169
169
  return label;
170
170
  }
171
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapProximityState, deps: [{ token: i1.MapState }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
172
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapProximityState, providedIn: 'root' });
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, deps: [{ token: i1.MapState }, { token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
172
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, providedIn: 'root' });
173
173
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapProximityState, decorators: [{
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapProximityState, decorators: [{
175
175
  type: Injectable,
176
176
  args: [{
177
177
  providedIn: 'root'
178
178
  }]
179
- }], ctorParameters: function () { return [{ type: i1.MapState }, { type: i2.StorageService }]; } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFDTCxPQUFPLEVBRVAsWUFBWSxFQU1aLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsWUFBWSxFQUNiLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRTVDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQW1CbEI7SUFDQTtJQW5CRiwyQkFBMkIsR0FBVyxFQUFFLENBQUM7SUFFMUMsUUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FDN0QsS0FBSyxDQUNOLENBQUM7SUFDSyxxQkFBcUIsQ0FBMEI7SUFDL0Msc0JBQXNCLEdBQzNCLElBQUksZUFBZSxDQUFTLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQixDQUF3QjtJQUM1QyxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUM3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QztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNuRCxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUM7U0FDdEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBdk9VLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEZFQVRVUkUsXHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgSWdvTWFwLFxyXG4gIExheWVyLFxyXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGUsXHJcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZSxcclxuICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICBmZWF0dXJlRnJvbU9sLFxyXG4gIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLFxyXG4gIHJvdW5kQ29vcmRUb1xyXG59IGZyb20gJ0BpZ28yL2dlbyc7XHJcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xyXG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xyXG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBvbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIGRpcmVjdGlvbiBtb2R1bGVcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcFByb3hpbWl0eVN0YXRlIHtcclxuICBwcml2YXRlIGRlZmF1bHRQcm94aW1pdHlSYWRpdXNWYWx1ZTogbnVtYmVyID0gMzA7XHJcblxyXG4gIHB1YmxpYyBlbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcclxuICAgIGZhbHNlXHJcbiAgKTtcclxuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcclxuICBwdWJsaWMgcHJveGltaXR5bG9jYXRpb25UeXBlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdnZW9sb2NhdGlvbicpO1xyXG4gIHB1YmxpYyBwcm94aW1pdHlGZWF0dXJlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcclxuICBwcml2YXRlIHN1YnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxbbnVtYmVyLCBudW1iZXJdPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7XHJcbiAgICAgIG1hcDogdGhpcy5tYXBTdGF0ZS5tYXBcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KFxyXG4gICAgICAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ21hcFByb3hpbWl0eVJhZGl1cycpIGFzIG51bWJlcikgfHxcclxuICAgICAgICB0aGlzLmRlZmF1bHRQcm94aW1pdHlSYWRpdXNWYWx1ZVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XHJcbiAgICB0aGlzLnN1YnMkJC5wdXNoKFxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgICB0aGlzLmVuYWJsZWQkLFxyXG4gICAgICAgIHRoaXMucHJveGltaXR5bG9jYXRpb25UeXBlJCxcclxuICAgICAgICB0aGlzLnByb3hpbWl0eVJhZGl1c1ZhbHVlJCxcclxuICAgICAgICBpbnRlcnZhbCg1MDAwKSxcclxuICAgICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kXHJcbiAgICAgIF0pXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChidW5jaDogW2Jvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBudW1iZXIsIE1hcEdlb2xvY2F0aW9uU3RhdGVdKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWQgPSBidW5jaFswXTtcclxuICAgICAgICAgICAgY29uc3QgbGF5ZXJzID0gdGhpcy5tYXAubGF5ZXJzO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcclxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb25UeXBlID0gYnVuY2hbMV07XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3hpbWl0eVJhZGl1c1ZhbHVlID0gYnVuY2hbMl07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxyXG4gICAgICAgICAgICAgICdtYXBQcm94aW1pdHlSYWRpdXMnLFxyXG4gICAgICAgICAgICAgIHByb3hpbWl0eVJhZGl1c1ZhbHVlIHx8IHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XHJcbiAgICAgICAgICAgIGlmIChsb2NhdGlvblR5cGUgPT09ICdnZW9sb2NhdGlvbicpIHtcclxuICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRQb3MgfHwgIWN1cnJlbnRQb3MucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvb3JkID0gb2xQcm9qLnRyYW5zZm9ybShcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnByb2plY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvb3JkID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0Q2VudGVyKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb29yZExvbkxhdCA9IG9sUHJvai50cmFuc2Zvcm0oXHJcbiAgICAgICAgICAgICAgY29vcmQsXHJcbiAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvbixcclxuICAgICAgICAgICAgICAnRVBTRzo0MjY5J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCByb3VuZGVkQ29vcmRMb25MYXQgPSByb3VuZENvb3JkVG8oXHJcbiAgICAgICAgICAgICAgY29vcmRMb25MYXQgYXMgW251bWJlciwgbnVtYmVyXSxcclxuICAgICAgICAgICAgICA2XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQubmV4dChyb3VuZGVkQ29vcmRMb25MYXQpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbGF5ZXJzVG9Nb25pdG9yID0gbGF5ZXJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAobGF5ZXIpID0+XHJcbiAgICAgICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcclxuICAgICAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2UpLm9wdGlvbnMucXVlcnlhYmxlICYmXHJcbiAgICAgICAgICAgICAgICBsYXllci52aXNpYmxlICYmXHJcbiAgICAgICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcCgobGF5ZXJUb01vbml0b3IpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBsYXllclNvdXJjZSA9XHJcbiAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvci5vbC5nZXRTb3VyY2UoKSBhcyBvbFZlY3RvclNvdXJjZTxHZW9tZXRyeT47XHJcblxyXG4gICAgICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cclxuICAgICAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID1cclxuICAgICAgICAgICAgICAgIGxheWVyU291cmNlLmdldEZlYXR1cmVzQXRDb29yZGluYXRlKGNvb3JkKTtcclxuICAgICAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAoKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlQXRUaGlzUG9zaXRpb24gPSBmZWF0dXJlRnJvbU9sKFxyXG4gICAgICAgICAgICAgICAgICAgIG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShcclxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXHJcbiAgICAgICAgICAgICAgICAgICAgY29vcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIDBcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHByb3hpbWl0eSBmb3IgcmVtYWluaW5nIHNvdXJjZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEZlYXR1cmUgPVxyXG4gICAgICAgICAgICAgICAgICBsYXllclNvdXJjZS5nZXRDbG9zZXN0RmVhdHVyZVRvQ29vcmRpbmF0ZShjb29yZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdE9sRmVhdHVyZSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdE9sRmVhdHVyZSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5Q2xvc2VzdFBvaW50ID1cclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xHZW9tLmdldENsb3Nlc3RQb2ludChjb29yZCk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmViZXR3ZWVuID0gbmV3IG9sTGluZVN0cmluZyhbXHJcbiAgICAgICAgICAgICAgICAgICAgY29vcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDbG9zZXN0UG9pbnRcclxuICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChcclxuICAgICAgICAgICAgICAgICAgICBsaW5lYmV0d2VlbixcclxuICAgICAgICAgICAgICAgICAgICAnRVBTRzozODU3J1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBpZiAobGluZUxlbmd0aCA8PSBwcm94aW1pdHlSYWRpdXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShcclxuICAgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RGZWF0dXJlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvcixcclxuICAgICAgICAgICAgICAgICAgICAgIGNvb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGxpbmVMZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIHByb3hpbWl0eSBwcm9wZXJ0aWVzIHRvIHRoZSBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkRmVhdHVyZVRvU3RvcmUoXHJcbiAgICBsYXllcjogTGF5ZXIsXHJcbiAgICBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsXHJcbiAgICBmZWF0dXJlOiBGZWF0dXJlLFxyXG4gICAgdGl0bGUsXHJcbiAgICBkaXN0YW5jZVxyXG4gICkge1xyXG4gICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xyXG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XHJcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gZmVhdHVyZS5vbC5nZXRHZW9tZXRyeSgpIGFzIEdlb21ldHJ5O1xyXG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xyXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvbixcclxuICAgICAgZGF0YVByb2plY3Rpb246IHByb2plY3Rpb25cclxuICAgIH0pIGFzIGFueTtcclxuICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLnVwZGF0ZSh7XHJcbiAgICAgIHR5cGU6IEZFQVRVUkUsXHJcbiAgICAgIGdlb21ldHJ5LFxyXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qZWN0aW9uLmdldENvZGUoKSxcclxuICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcclxuICAgICAgICAuLi57XHJcbiAgICAgICAgICBpZDogZmVhdHVyZUlkLFxyXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXHJcbiAgICAgICAgICBkaXN0YW5jZSxcclxuICAgICAgICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcclxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICAgICAgbGF5ZXJTcmNUaXRsZTogbGF5ZXIudGl0bGVcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBpZDogZmVhdHVyZUlkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlcnlUaXRsZShmZWF0dXJlOiBGZWF0dXJlLCBsYXllcjogTGF5ZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRpdGxlO1xyXG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXHJcbiAgICAgICAgLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XHJcbiAgICAgICAgdGl0bGUgPSB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aXRsZTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsTWF0Y2goZmVhdHVyZTogRmVhdHVyZSwgbGFiZWxNYXRjaCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xyXG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcclxuXHJcbiAgICBsYWJlbFRvR2V0LmZvckVhY2goKHYpID0+IHtcclxuICAgICAgbGFiZWwgPSBsYWJlbC5yZXBsYWNlKHZbMF0sIGZlYXR1cmUucHJvcGVydGllc1t2WzFdXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcclxuICAgIGlmIChsYWJlbFRvR2V0Lmxlbmd0aCA9PT0gMCAmJiBsYWJlbCA9PT0gbGFiZWxNYXRjaCkge1xyXG4gICAgICBsYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1tsYWJlbE1hdGNoXSB8fCBsYWJlbE1hdGNoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxufVxyXG4iXX0=
179
+ }], ctorParameters: () => [{ type: i1.MapState }, { type: i2.StorageService }] });
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFFUCxZQUFZLEVBTVosYUFBYSxFQUNiLHVCQUF1QixFQUN2QixZQUFZLEVBQ2IsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBbUJsQjtJQUNBO0lBbkJGLDJCQUEyQixHQUFXLEVBQUUsQ0FBQztJQUUxQyxRQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztJQUNLLHFCQUFxQixDQUEwQjtJQUMvQyxzQkFBc0IsR0FDM0IsSUFBSSxlQUFlLENBQVMsYUFBYSxDQUFDLENBQUM7SUFDdEMscUJBQXFCLENBQXdCO0lBQzVDLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lB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QztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxVQUFVO1FBQ3hDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3BELEtBQUssR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQXZPVSxpQkFBaUI7MkdBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XG5pbXBvcnQge1xuICBGRUFUVVJFLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU3RvcmUsXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGUsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2UsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBmZWF0dXJlRnJvbU9sLFxuICBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aCxcbiAgcm91bmRDb29yZFRvXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IG9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLi9tYXAvbWFwLnN0YXRlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIG9mIHRoZSBkaXJlY3Rpb24gbW9kdWxlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFByb3hpbWl0eVN0YXRlIHtcbiAgcHJpdmF0ZSBkZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWU6IG51bWJlciA9IDMwO1xuXG4gIHB1YmxpYyBlbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcbiAgICBmYWxzZVxuICApO1xuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgcHVibGljIHByb3hpbWl0eWxvY2F0aW9uVHlwZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2dlb2xvY2F0aW9uJyk7XG4gIHB1YmxpYyBwcm94aW1pdHlGZWF0dXJlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBjdXJyZW50UG9zaXRpb25Db29yZGluYXRlJDogQmVoYXZpb3JTdWJqZWN0PFtudW1iZXIsIG51bWJlcl0+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwge1xuICAgICAgbWFwOiB0aGlzLm1hcFN0YXRlLm1hcFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXG4gICAgICAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ21hcFByb3hpbWl0eVJhZGl1cycpIGFzIG51bWJlcikgfHxcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICApO1xuXG4gICAgdGhpcy5tYXBTdGF0ZS5tYXAub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmVuYWJsZWQkLFxuICAgICAgICB0aGlzLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQsXG4gICAgICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkLFxuICAgICAgICBpbnRlcnZhbCg1MDAwKSxcbiAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkID0gYnVuY2hbMF07XG4gICAgICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uVHlwZSA9IGJ1bmNoWzFdO1xuICAgICAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgICAnbWFwUHJveGltaXR5UmFkaXVzJyxcbiAgICAgICAgICAgICAgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XG4gICAgICAgICAgICBpZiAobG9jYXRpb25UeXBlID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvb3JkID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpO1xuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICdFUFNHOjQyNjknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgICAgICBjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgICA2XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJC5uZXh0KHJvdW5kZWRDb29yZExvbkxhdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxheWVyc1RvTW9uaXRvciA9IGxheWVycy5maWx0ZXIoXG4gICAgICAgICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcbiAgICAgICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcbiAgICAgICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcCgobGF5ZXJUb01vbml0b3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGF5ZXJTb3VyY2UgPVxuICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlO1xuXG4gICAgICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cbiAgICAgICAgICAgICAgY29uc3Qgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSA9XG4gICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubWFwKChvbEZlYXR1cmVBdENvb3JkaW5hdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdFRoaXNQb3NpdGlvbiA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgICAgIG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvclxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xuICAgICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgcHJveGltaXR5IGZvciByZW1haW5pbmcgc291cmNlc1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEZlYXR1cmUgPVxuICAgICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0Q2xvc2VzdEZlYXR1cmVUb0Nvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0T2xGZWF0dXJlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xHZW9tID0gY2xvc2VzdE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdEZlYXR1cmUgPSBmZWF0dXJlRnJvbU9sKFxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xGZWF0dXJlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ2VvbWV0cnlDbG9zZXN0UG9pbnQgPVxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0T2xHZW9tLmdldENsb3Nlc3RQb2ludChjb29yZCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsaW5lYmV0d2VlbiA9IG5ldyBvbExpbmVTdHJpbmcoW1xuICAgICAgICAgICAgICAgICAgICBjb29yZCxcbiAgICAgICAgICAgICAgICAgICAgZ2VvbWV0cnlDbG9zZXN0UG9pbnRcbiAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZUxlbmd0aCA9IG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoKFxuICAgICAgICAgICAgICAgICAgICBsaW5lYmV0d2VlbixcbiAgICAgICAgICAgICAgICAgICAgJ0VQU0c6Mzg1NydcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAobGluZUxlbmd0aCA8PSBwcm94aW1pdHlSYWRpdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgbGluZUxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggcHJveGltaXR5IHByb3BlcnRpZXMgdG8gdGhlIHN0b3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShcbiAgICBsYXllcjogTGF5ZXIsXG4gICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgdGl0bGUsXG4gICAgZGlzdGFuY2VcbiAgKSB7XG4gICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBmZWF0dXJlLm9sLmdldEdlb21ldHJ5KCkgYXMgR2VvbWV0cnk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgIH0pIGFzIGFueTtcbiAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS51cGRhdGUoe1xuICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgIGdlb21ldHJ5LFxuICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIGlkOiBmZWF0dXJlSWQsXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXG4gICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlSWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcbiAgICBsZXQgdGl0bGU7XG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxuICAgICAgICAub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGl0bGU7XG4gIH1cblxuICBnZXRMYWJlbE1hdGNoKGZlYXR1cmU6IEZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xuICAgIGxldCBsYWJlbCA9IGxhYmVsTWF0Y2g7XG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcblxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCgodikgPT4ge1xuICAgICAgbGFiZWwgPSBsYWJlbC5yZXBsYWNlKHZbMF0sIGZlYXR1cmUucHJvcGVydGllc1t2WzFdXSk7XG4gICAgfSk7XG5cbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxufVxuIl19