@igo2/geo 17.0.1-next.2 → 18.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.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -9
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +16 -13
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +5 -5
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -5
- package/esm2022/lib/catalog/catalog.module.mjs +5 -5
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasource.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +73 -2
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -5
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
- package/esm2022/lib/directions/directions.component.mjs +10 -4
- package/esm2022/lib/directions/directions.module.mjs +5 -5
- package/esm2022/lib/directions/shared/directions.service.mjs +4 -4
- package/esm2022/lib/download/download-button/download-button.component.mjs +10 -22
- package/esm2022/lib/download/download.module.mjs +5 -5
- package/esm2022/lib/download/shared/download.service.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +4 -4
- package/esm2022/lib/draw/draw/draw.component.mjs +8 -15
- package/esm2022/lib/draw/draw/draw.module.mjs +5 -5
- package/esm2022/lib/draw/drawingTool.module.mjs +5 -5
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +5 -5
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +4 -4
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +5 -5
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +4 -4
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +5 -5
- package/esm2022/lib/feature/feature.module.mjs +5 -5
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
- package/esm2022/lib/filter/filter.module.mjs +5 -5
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +6 -6
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +5 -5
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -6
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +4 -4
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +11 -4
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +4 -4
- package/esm2022/lib/filter/shared/ogc-filter.mjs +7 -2
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +4 -4
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +4 -4
- package/esm2022/lib/filter/shared/time-filter.service.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -11
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +5 -11
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -5
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +15 -12
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +5 -5
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +7 -5
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +7 -18
- package/esm2022/lib/geo.module.mjs +5 -5
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -5
- package/esm2022/lib/geometry/geometry.module.mjs +5 -5
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +7 -20
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +215 -323
- package/esm2022/lib/import-export/import-export.module.mjs +5 -5
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +257 -91
- package/esm2022/lib/import-export/shared/export.type.mjs +9 -9
- package/esm2022/lib/import-export/shared/export.utils.mjs +5 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
- package/esm2022/lib/layer/index.mjs +10 -5
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +62 -129
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -10
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -9
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +16 -23
- package/esm2022/lib/layer/layer-list/index.mjs +1 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +177 -776
- package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +52 -85
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +57 -17
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +54 -36
- package/esm2022/lib/layer/shared/index.mjs +2 -1
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +73 -27
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
- package/esm2022/lib/layer/shared/layers/layer.mjs +114 -118
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +22 -19
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +4 -4
- package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +6 -6
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +11 -9
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +4 -4
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
- package/esm2022/lib/map/info-section/info-section.component.mjs +4 -4
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +4 -4
- package/esm2022/lib/map/map-center/map-center.component.mjs +4 -4
- package/esm2022/lib/map/map.module.mjs +5 -5
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +4 -4
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +4 -4
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +4 -4
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +5 -13
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
- package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
- package/esm2022/lib/map/shared/map.mjs +7 -243
- package/esm2022/lib/map/shared/map.service.mjs +4 -4
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +12 -8
- package/esm2022/lib/map/shared/projection.service.mjs +4 -4
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +4 -4
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -5
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
- package/esm2022/lib/measure/measure.module.mjs +5 -5
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
- package/esm2022/lib/measure/measurer/measurer.component.mjs +10 -28
- package/esm2022/lib/measure/measurer/measurer.module.mjs +5 -5
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +11 -23
- package/esm2022/lib/metadata/metadata.module.mjs +5 -5
- package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -8
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +21 -22
- package/esm2022/lib/offline/index.mjs +3 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +16 -17
- package/esm2022/lib/offline/offline.interface.mjs +2 -0
- package/esm2022/lib/offline/offline.provider.mjs +51 -0
- package/esm2022/lib/offline/shared/geo-network.service.mjs +15 -16
- package/esm2022/lib/overlay/shared/overlay.mjs +3 -2
- package/esm2022/lib/print/print/print.component.mjs +4 -4
- package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
- package/esm2022/lib/print/print.module.mjs +5 -5
- package/esm2022/lib/print/shared/print.service.mjs +6 -6
- package/esm2022/lib/query/query.module.mjs +5 -5
- package/esm2022/lib/query/shared/query-search-source.mjs +4 -4
- package/esm2022/lib/query/shared/query.directive.mjs +12 -8
- package/esm2022/lib/query/shared/query.service.mjs +10 -10
- package/esm2022/lib/query/shared/query.utils.mjs +5 -1
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +18 -12
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results.module.mjs +5 -5
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +5 -5
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +5 -5
- package/esm2022/lib/search/search.module.mjs +5 -5
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -14
- package/esm2022/lib/search/shared/search.service.mjs +4 -4
- package/esm2022/lib/search/shared/sources/cadastre.mjs +4 -4
- package/esm2022/lib/search/shared/sources/coordinates.mjs +7 -7
- package/esm2022/lib/search/shared/sources/icherche.mjs +10 -10
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +7 -7
- package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +4 -4
- package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
- package/esm2022/lib/style/style-list/style-list.service.mjs +4 -4
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
- package/esm2022/lib/style/style-service/draw-style.service.mjs +4 -4
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +5 -5
- package/esm2022/lib/toast/toast.component.mjs +4 -4
- package/esm2022/lib/toast/toast.module.mjs +5 -5
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +4 -4
- package/esm2022/lib/wkt/shared/wkt.service.mjs +4 -4
- package/esm2022/lib/wkt/wkt.module.mjs +5 -5
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +4 -4
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +5 -5
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +22 -20
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +4 -4
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +20 -5
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +25 -7
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +5 -5
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -5
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +5 -5
- package/esm2022/lib/workspace/workspace.module.mjs +5 -5
- package/fesm2022/igo2-geo.mjs +19275 -18300
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/shared/catalog.enum.d.ts +1 -3
- package/lib/datasource/shared/capabilities.service.d.ts +7 -2
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +16 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/download/download-button/download-button.component.d.ts +4 -8
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/environment/environment.interface.d.ts +2 -0
- package/lib/feature/shared/feature-store.utils.d.ts +2 -2
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +2 -2
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
- package/lib/import-export/export-button/export-button.component.d.ts +3 -7
- package/lib/import-export/import-export/import-export.component.d.ts +23 -16
- package/lib/import-export/shared/export.interface.d.ts +10 -3
- package/lib/import-export/shared/export.service.d.ts +28 -15
- package/lib/import-export/shared/export.type.d.ts +8 -16
- package/lib/import-export/shared/export.utils.d.ts +2 -0
- package/lib/layer/index.d.ts +9 -4
- package/lib/layer/layer-group/index.d.ts +1 -0
- package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
- package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
- package/lib/layer/layer-list/index.d.ts +0 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
- package/lib/layer/layer-list-tool/index.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
- package/lib/layer/layer-search/index.d.ts +1 -0
- package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
- package/lib/layer/layer-unavailable/index.d.ts +2 -0
- package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
- package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
- package/lib/layer/layer-viewer/index.d.ts +2 -0
- package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
- package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
- package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
- package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
- package/lib/layer/layer-visibility-button/index.d.ts +1 -0
- package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
- package/lib/layer/layer.module.d.ts +18 -6
- package/lib/layer/shared/index.d.ts +1 -0
- package/lib/layer/shared/layer-controller.d.ts +81 -0
- package/lib/layer/shared/layer-selection.d.ts +14 -0
- package/lib/layer/shared/layer.service.d.ts +17 -8
- package/lib/layer/shared/layers/any-layer.d.ts +3 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
- package/lib/layer/shared/layers/image-layer.d.ts +5 -2
- package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
- package/lib/layer/shared/layers/index.d.ts +5 -0
- package/lib/layer/shared/layers/layer-base.d.ts +75 -0
- package/lib/layer/shared/layers/layer-group.d.ts +32 -0
- package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
- package/lib/layer/shared/layers/layer.d.ts +28 -49
- package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
- package/lib/layer/shared/layers/linked/index.d.ts +3 -0
- package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
- package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
- package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
- package/lib/layer/shared/layers/vector-layer.d.ts +8 -7
- package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
- package/lib/layer/utils/layer.utils.d.ts +12 -2
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/shared/hover-feature.directive.d.ts +0 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
- package/lib/map/shared/map.abstract.d.ts +12 -29
- package/lib/map/shared/map.d.ts +10 -85
- package/lib/map/shared/map.service.d.ts +1 -1
- package/lib/map/utils/index.d.ts +1 -0
- package/lib/map/utils/layer-watcher.d.ts +18 -8
- package/lib/measure/measurer/measurer.component.d.ts +0 -8
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/index.d.ts +2 -0
- package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
- package/lib/offline/offline.interface.d.ts +3 -0
- package/lib/offline/offline.provider.d.ts +3 -0
- package/lib/offline/shared/geo-network.service.d.ts +3 -3
- package/lib/overlay/shared/overlay.d.ts +2 -1
- package/lib/query/shared/query.service.d.ts +1 -1
- package/lib/query/shared/query.utils.d.ts +2 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/lib/utils/id-generator.d.ts +5 -5
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/locale/en.geo.json +27 -3
- package/locale/fr.geo.json +26 -3
- package/package.json +6 -7
- package/src/_index.scss +2 -1
- package/src/geo-theme.scss +1 -1
- package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
- package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
- package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
- package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
- package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
- package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
- package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
- package/src/lib/layer/layer.theming.scss +14 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
- package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
|
@@ -129,6 +129,12 @@ export class DirectionsComponent {
|
|
|
129
129
|
this.zoomRoute$$.unsubscribe();
|
|
130
130
|
this.authenticated$$.unsubscribe();
|
|
131
131
|
this.freezeStores();
|
|
132
|
+
if (this.stopsFeatureStore.empty) {
|
|
133
|
+
this.stopsFeatureStore.map.layerController.remove(this.stopsFeatureStore.layer);
|
|
134
|
+
}
|
|
135
|
+
if (this.routesFeatureStore.empty) {
|
|
136
|
+
this.routesFeatureStore.map.layerController.remove(this.routesFeatureStore.layer);
|
|
137
|
+
}
|
|
132
138
|
}
|
|
133
139
|
freezeStores() {
|
|
134
140
|
this.interactions.map((interaction) => this.routesFeatureStore.layer.map.ol.removeInteraction(interaction));
|
|
@@ -376,10 +382,10 @@ export class DirectionsComponent {
|
|
|
376
382
|
}
|
|
377
383
|
this.getRoutes();
|
|
378
384
|
}
|
|
379
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
380
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
385
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.LanguageService }, { token: i3.DirectionsService }, { token: i4.DirectionsSourceService }, { token: i5.SearchService }, { token: i6.QueryService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
386
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DirectionsComponent, isStandalone: true, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepFeatureStore: "stepFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomToActiveRoute$: "zoomToActiveRoute$", authenticated$: "authenticated$" }, ngImport: i0, template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleActive' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directionsForm.toggleType' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-buttons\n [stepFeatureStore]=\"stepFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomToActiveRoute$]=\"zoomToActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-results\n [stepFeatureStore]=\"stepFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomToActiveRoute$", "stopsStore", "routesFeatureStore", "stepFeatureStore"] }, { kind: "component", type: DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepFeatureStore"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
|
|
381
387
|
}
|
|
382
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
388
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsComponent, decorators: [{
|
|
383
389
|
type: Component,
|
|
384
390
|
args: [{ selector: 'igo-directions', standalone: true, imports: [
|
|
385
391
|
CommonModule,
|
|
@@ -410,4 +416,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
410
416
|
}], authenticated$: [{
|
|
411
417
|
type: Input
|
|
412
418
|
}] } });
|
|
413
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pF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SUFDWixvQkFBb0IsMFhBQ3BCLDBCQUEwQix5S0FDMUIseUJBQXlCLDJNQUN6QiwwQkFBMEIsc0hBQzFCLGlCQUFpQjs7MkZBR1IsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3FCQUNsQjt1U0F5QlEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuXG5pbXBvcnQgeyBFbnRpdHlTdG9yZVdhdGNoZXIgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSAnb2wvQ29sbGVjdGlvbic7XG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcbmltcG9ydCAqIGFzIG9sSW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgU2VsZWN0RXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9TZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlRXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9UcmFuc2xhdGUnO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XG5pbXBvcnQgeyByb3VuZENvb3JkVG8sIHN0cmluZ1RvTG9uTGF0IH0gZnJvbSAnLi4vbWFwJztcbmltcG9ydCB7IFF1ZXJ5U2VydmljZSB9IGZyb20gJy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VhcmNoU2VydmljZSB9IGZyb20gJy4uL3NlYXJjaC9zaGFyZWQvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0J1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtYnV0dG9ucy9kaXJlY3Rpb25zLWJ1dHRvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNJbnB1dHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtaW5wdXRzL2RpcmVjdGlvbnMtaW5wdXRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1yZXN1bHRzL2RpcmVjdGlvbnMtcmVzdWx0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZSB9IGZyb20gJy4vZGlyZWN0aW9ucy1zb3VyY2VzJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy1zb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25UeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aW9uT3B0aW9ucyxcbiAgRmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcyxcbiAgU3RvcFxufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQge1xuICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgYWRkU3RvcFRvU3RvcHNGZWF0dXJlU3RvcmUsXG4gIGFkZFN0b3BUb1N0b3JlLFxuICBpbml0Um91dGVzRmVhdHVyZVN0b3JlLFxuICBpbml0U3RlcEZlYXR1cmVTdG9yZSxcbiAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlLFxuICB1cGRhdGVTdG9yZVNvcnRpbmdcbn0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy51dGlscyc7XG5pbXBvcnQge1xuICBSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIFN0ZXBGZWF0dXJlU3RvcmUsXG4gIFN0b3BzRmVhdHVyZVN0b3JlLFxuICBTdG9wc1N0b3JlXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50LFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XG5cbiAgcHVibGljIHByb2plY3Rpb24gPSAnRVBTRzo0MzI2JztcbiAgcHVibGljIGhhc09zcm1Qcml2YXRlQWNjZXNzID0gZmFsc2U7XG4gIHB1YmxpYyB0d29Tb3VyY2VzQXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB6b29tUm91dGUkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN0b3JlRW1wdHkkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN0b3JlQ2hhbmdlJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByb3V0ZXNRdWVyaWVzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBzZWxlY3RTdG9wSW50ZXJhY3Rpb246IG9sSW50ZXJhY3Rpb24uU2VsZWN0O1xuICBwcml2YXRlIHRyYW5zbGF0ZVN0b3A6IG9sSW50ZXJhY3Rpb24uVHJhbnNsYXRlO1xuICBwcml2YXRlIHNlbGVjdGVkUm91dGU6IG9sSW50ZXJhY3Rpb24uU2VsZWN0O1xuICBwcml2YXRlIGZvY3VzT25TdG9wID0gZmFsc2U7XG4gIHByaXZhdGUgaXNUcmFuc2xhdGluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwcmV2aW91c1N0b3BzOiBTdG9wW10gPSBbXTtcblxuICBwcml2YXRlIHNlYXJjaHMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBhdXRoZW50aWNhdGVkJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSBjb250ZXh0VXJpOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN0b3BzU3RvcmU6IFN0b3BzU3RvcmU7XG4gIEBJbnB1dCgpIHN0b3BzRmVhdHVyZVN0b3JlOiBTdG9wc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmU7XG4gIEBJbnB1dCgpIHN0ZXBGZWF0dXJlU3RvcmU6IFN0ZXBGZWF0dXJlU3RvcmU7XG4gIEBJbnB1dCgpIGRlYm91bmNlID0gMjAwO1xuICBASW5wdXQoKSBsZW5ndGggPSAyO1xuICBASW5wdXQoKSBjb29yZFJvdW5kZWREZWNpbWFscyA9IDY7XG4gIEBJbnB1dCgpIHpvb21Ub0FjdGl2ZVJvdXRlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIEBJbnB1dCgpIGF1dGhlbnRpY2F0ZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFdoZXRlciBvbmUgb2YgdGhlIGRpcmVjdGlvbiBjb250cm9sIGlzIGFjdGl2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBkaXJlY3Rpb25Db250cm9sSXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQ7XG4gIH1cblxuICBnZXQgaW50ZXJhY3Rpb25zKCk6IG9sSW50ZXJhY3Rpb24uSW50ZXJhY3Rpb25bXSB7XG4gICAgcmV0dXJuIFt0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiwgdGhpcy50cmFuc2xhdGVTdG9wLCB0aGlzLnNlbGVjdGVkUm91dGVdO1xuICB9XG5cbiAgZ2V0IGVuYWJsZWRQcm9maWxlSGFzQXV0aG9yaXphdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLmdldEVuYWJsZWRQcm9maWxlKClcbiAgICAgIC5hdXRob3JpemF0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25zU2VydmljZTogRGlyZWN0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25zU291cmNlU2VydmljZTogRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVlcnlTZXJ2aWNlOiBRdWVyeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aGVudGljYXRlZCQkID0gdGhpcy5hdXRoZW50aWNhdGVkJC5zdWJzY3JpYmUoXG4gICAgICAoYXV0aGVudGljYXRlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIGNvbnN0IHByb2ZpbGVXaXRoQXV0aDogQmFzZURpcmVjdGlvbnNTb3VyY2VPcHRpb25zUHJvZmlsZSA9XG4gICAgICAgICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0uZ2V0UHJvZmlsZVdpdGhBdXRob3JpemF0aW9uKCk7XG4gICAgICAgICAgaWYgKHByb2ZpbGVXaXRoQXV0aCkge1xuICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgIC5nZXQocHJvZmlsZVdpdGhBdXRoLmF1dGhvcml6YXRpb24udXJsKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNPc3JtUHJpdmF0ZUFjY2VzcyA9XG4gICAgICAgICAgICAgICAgICB1c2VyW3Byb2ZpbGVXaXRoQXV0aC5hdXRob3JpemF0aW9uLnByb3BlcnR5XTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnR3b1NvdXJjZXNBdmFpbGFibGUgPVxuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLnByb2ZpbGVzLmxlbmd0aCA9PT0gMlxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRFbnRpdHlTdG9yZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGluaXRTdG9wc0ZlYXR1cmVTdG9yZSh0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XG4gICAgICBpbml0Um91dGVzRmVhdHVyZVN0b3JlKHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XG4gICAgICBpbml0U3RlcEZlYXR1cmVTdG9yZSh0aGlzLnN0ZXBGZWF0dXJlU3RvcmUpO1xuICAgICAgdGhpcy5pbml0T2xJbnRlcmFjdGlvbigpO1xuICAgIH0sIDEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlRW1wdHkkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3RvcmVDaGFuZ2UkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucm91dGVzUXVlcmllcyQkLm1hcCgodSkgPT4gdS51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnpvb21Sb3V0ZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmZyZWV6ZVN0b3JlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XG4gICAgdGhpcy5pbnRlcmFjdGlvbnMubWFwKChpbnRlcmFjdGlvbikgPT5cbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICApO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XG4gICAgKTtcbiAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMuc3RlcEZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVudGl0eVN0b3JlcygpIHtcbiAgICB0aGlzLndhdGNoZXIgPSBuZXcgRW50aXR5U3RvcmVXYXRjaGVyKHRoaXMuc3RvcHNTdG9yZSwgdGhpcy5jZFJlZik7XG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xuICAgIHRoaXMubW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCk7XG4gICAgdGhpcy5tb25pdG9yQWN0aXZlUm91dGVab29tKCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKSB7XG4gICAgdGhpcy56b29tUm91dGUkJCA9IHRoaXMuem9vbVRvQWN0aXZlUm91dGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQgPj0gMSkge1xuICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlXG4gICAgICAgICAgLmFsbCgpXG4gICAgICAgICAgLmZpbmQoKHJvdXRlKSA9PiByb3V0ZS5wcm9wZXJ0aWVzLmFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XG4gICAgICAgICAgYWN0aXZlUm91dGUub2wuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICBjb25zdCByb3V0ZUV4dGVudCA9IGFjdGl2ZVJvdXRlLm9sLmdldEdlb21ldHJ5KCkuZ2V0RXh0ZW50KCk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcbiAgICAgICAgICAgIHJvdXRlRXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T2xJbnRlcmFjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm9sXSxcbiAgICAgIGhpdFRvbGVyYW5jZTogNyxcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAncG9pbnRlcm1vdmUnICYmICFldmVudC5kcmFnZ2luZztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNsYXRlU3RvcCA9IG5ldyBvbEludGVyYWN0aW9uLlRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRpbmcnLCAoZXZ0OiBUcmFuc2xhdGVFdmVudCkgPT4ge1xuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRlZW5kJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuaXNUcmFuc2xhdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm91dGUgPSBuZXcgb2xJbnRlcmFjdGlvbi5TZWxlY3Qoe1xuICAgICAgbGF5ZXJzOiBbdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxuICAgICAgY29uZGl0aW9uOiBvbENvbmRpdGlvbi5jbGljayxcbiAgICAgIGhpdFRvbGVyYW5jZTogNyxcbiAgICAgIGZpbHRlcjogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBmZWF0dXJlLmdldCgndHlwZScpID09PSBEaXJlY3Rpb25UeXBlLlJvdXRlICYmXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2FjdGl2ZScpICYmXG4gICAgICAgICAgIXRoaXMuaXNUcmFuc2xhdGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5vbignc2VsZWN0JywgKGV2dDogU2VsZWN0RXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvY3VzT25TdG9wID09PSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzZWxlY3RDb29yZGluYXRlcyA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgICBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgICAgICAgKGV2dCBhcyBhbnkpLm1hcEJyb3dzZXJFdmVudC5jb29yZGluYXRlLFxuICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnByb2plY3Rpb25cbiAgICAgICAgICApIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhZGRlZFN0b3AgPSBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICBhZGRlZFN0b3AudGV4dCA9IHNlbGVjdENvb3JkaW5hdGVzLmpvaW4oJywnKTtcbiAgICAgICAgYWRkZWRTdG9wLmNvb3JkaW5hdGVzID0gW3NlbGVjdENvb3JkaW5hdGVzWzBdLCBzZWxlY3RDb29yZGluYXRlc1sxXV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblN0b3BJbnB1dEhhc0ZvY3VzQ2hhbmdlKHN0b3BJbnB1dEhhc0ZvY3VzOiBib29sZWFuKSB7XG4gICAgc3RvcElucHV0SGFzRm9jdXNcbiAgICAgID8gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5hZGRJbnRlcmFjdGlvbih0aGlzLnNlbGVjdGVkUm91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RvcFRyYW5zbGF0aW9uKGZlYXR1cmVzOiBDb2xsZWN0aW9uPGFueT4pIHtcbiAgICBpZiAoZmVhdHVyZXMuZ2V0TGVuZ3RoKCkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RGZWF0dXJlID0gZmVhdHVyZXMuZ2V0QXJyYXkoKVswXTtcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcElkID0gZmlyc3RGZWF0dXJlLmdldElkKCk7XG5cbiAgICBjb25zdCB0cmFuc2xhdGlvbkNvb3JkaW5hdGVzID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgIGZpcnN0RmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCksXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgdGhpcy5wcm9qZWN0aW9uXG4gICAgKTtcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcCA9IHRoaXMuc3RvcHNTdG9yZS5nZXQodHJhbnNsYXRlZFN0b3BJZCk7XG4gICAgY29uc3Qgcm91bmRlZENvb3JkID0gcm91bmRDb29yZFRvKFxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICk7XG4gICAgdHJhbnNsYXRlZFN0b3AuY29vcmRpbmF0ZXMgPSByb3VuZGVkQ29vcmQ7XG4gICAgdHJhbnNsYXRlZFN0b3AudGV4dCA9IHJvdW5kZWRDb29yZC5qb2luKCcsJyk7XG4gICAgdGhpcy5zdG9wc1N0b3JlLnVwZGF0ZSh0cmFuc2xhdGVkU3RvcCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCkge1xuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxuICAgIHRoaXMuc3RvcmVFbXB0eSQkID0gdGhpcy5zdG9wc1N0b3JlLmNvdW50JFxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XG4gICAgICAgIGlmIChjb3VudCA8IDIpIHtcbiAgICAgICAgICBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbnRpdHlTdG9yZUNoYW5nZSgpIHtcbiAgICB0aGlzLnN0b3JlQ2hhbmdlJCQgPSB0aGlzLnN0b3BzU3RvcmUuZW50aXRpZXMkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXG4gICAgICAuc3Vic2NyaWJlKChzdG9wczogU3RvcFtdKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RvcERpZmYoc3RvcHMpO1xuICAgICAgICB1cGRhdGVTdG9yZVNvcnRpbmcodGhpcy5zdG9wc1N0b3JlKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9wc0ZlYXR1cmUoKTtcbiAgICAgICAgdGhpcy5nZXRSb3V0ZXModGhpcy5pc1RyYW5zbGF0aW5nKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNocyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcERpZmYoc3RvcHM6IFN0b3BbXSkge1xuICAgIGNvbnN0IHNpbXBsaWZpZWRTdG9wcyA9IHN0b3BzLm1hcCgoc3RvcDogU3RvcCkgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICAgIC4uLnsgaWQ6IHN0b3AuaWQsIHRleHQ6IHN0b3AudGV4dCwgY29vcmRpbmF0ZXM6IHN0b3AuY29vcmRpbmF0ZXMgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZGlmZiA9IENoYW5nZVV0aWxzLmZpbmRDaGFuZ2VzKHRoaXMucHJldmlvdXNTdG9wcywgc2ltcGxpZmllZFN0b3BzLCBbXG4gICAgICAnY29vcmRpbmF0ZXMnXG4gICAgXSk7XG4gICAgY29uc3Qgc3RvcElkVG9Qcm9jZXNzID0gZGlmZi5hZGRlZC5jb25jYXQoZGlmZi5tb2RpZmllZCk7XG4gICAgaWYgKHN0b3BJZFRvUHJvY2Vzcykge1xuICAgICAgc3RvcElkVG9Qcm9jZXNzLm1hcCgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRTdG9wID0gY2hhbmdlLm5ld1ZhbHVlIGFzIFN0b3A7XG4gICAgICAgIGlmIChjaGFuZ2VkU3RvcCkge1xuICAgICAgICAgIGNvbnN0IHN0b3A6IFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KGNoYW5nZWRTdG9wLmlkKTtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gc3RvcC50ZXh0O1xuICAgICAgICAgIGlmICghdGVybSB8fCB0ZXJtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHN0cmluZ1RvTG9uTGF0KFxuICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBpc0Nvb3JkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmxvbkxhdCkge1xuICAgICAgICAgICAgaXNDb29yZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc2VhcmNoZXMgPSB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRlcm0sIHtcbiAgICAgICAgICAgIHNlYXJjaFR5cGU6ICdGZWF0dXJlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoKCk7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdHMkID0gcmVzZWFyY2hlcy5tYXAoKHJlcykgPT5cbiAgICAgICAgICAgIHJlcy5yZXF1ZXN0LnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgocmVzdWx0czogU2VhcmNoUmVzdWx0W10pID0+XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5maWx0ZXIoKHIpID0+XG4gICAgICAgICAgICAgICAgICBpc0Nvb3JkXG4gICAgICAgICAgICAgICAgICAgID8gci5kYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgJiYgci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICAgIDogci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNlYXJjaHMkJCA9IHJlcXVlc3RzJC5tYXAoKHJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogU2VhcmNoUmVzdWx0W10pID0+XG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgICAgaXNDb29yZFxuICAgICAgICAgICAgICAgICAgICAgID8gci5kYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgJiYgci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBTZWFyY2hSZXN1bHRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVzWzBdLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGEgPSByZXNbMF0ubWV0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMubWFwKChyKSA9PiByLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wLnNlYXJjaFByb3Bvc2Fscykge1xuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChzcCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzcC50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgIChpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVkU291cmNlID0gc3RvcC5zZWFyY2hQcm9wb3NhbHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PiBzcC5zb3VyY2UgPT09IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkU291cmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDb29yZCA/IFByb3Bvc2FsVHlwZS5Db29yZCA6IFByb3Bvc2FsVHlwZS5UZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xuICAgIGNvbnN0IHN0b3BzID0gdGhpcy5zdG9wc1N0b3JlLmFsbCgpO1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmVcbiAgICAgIC5hbGwoKVxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BzU3RvcmUuZ2V0KHN0b3BGZWF0dXJlLnByb3BlcnRpZXMuaWQpKSB7XG4gICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWxldGUoc3RvcEZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBzdG9wc1dpdGhvdXRDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gIXN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcEZlYXR1cmUgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgICAgIGlmIChzdG9wRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlcyhpc092ZXJ2aWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWxldGVNYW55KHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkQ29vcmRpbmF0ZXMgPSBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgc3RvcC5jb29yZGluYXRlcyxcbiAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgKTtcbiAgICAgIHJldHVybiByb3VuZGVkQ29vcmQ7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIG92ZXJ2aWV3OiB0cnVlLFxuICAgICAgc3RlcHM6IGZhbHNlLFxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcbiAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbnN0IHJvdXRlUmVzcG9uc2UgPSB0aGlzLmRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxuICAgICAgcm91bmRlZENvb3JkaW5hdGVzLFxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmIChyb3V0ZVJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5wdXNoKFxuICAgICAgICByb3V0ZVJlc3BvbnNlLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgICAgIGRpcmVjdGlvbnMubWFwKChkaXJlY3Rpb24pID0+XG4gICAgICAgICAgICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZShcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkU3RvcE92ZXJsYXkoc3RvcDogU3RvcCkge1xuICAgIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlKFxuICAgICAgc3RvcCxcbiAgICAgIHRoaXMuc3RvcHNTdG9yZSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsXG4gICAgICB0aGlzLnByb2plY3Rpb24sXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZURpcmVjdGlvbnNDb250cm9sKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xuICAgIGNvbnN0IG9sID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IG9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICAgICA6IG9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5mb3JFYWNoKFxuICAgICAgKHByb2ZpbGUpID0+IChwcm9maWxlLmVuYWJsZWQgPSBmYWxzZSlcbiAgICApO1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLnByb2ZpbGVzLmZpbmQoXG4gICAgICAgIChwcm9maWxlKSA9PiBwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5mb3Jlc3RSb2Fkc1dhcm5pbmcudGV4dCdcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZm9yZXN0Um9hZHNXYXJuaW5nLnRpdGxlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMuZmluZChcbiAgICAgICAgKHByb2ZpbGUpID0+ICFwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuZ2V0Um91dGVzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cbiAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJkaXJlY3Rpb25Db250cm9sSXNBY3RpdmVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwiaGFzT3NybVByaXZhdGVBY2Nlc3MgJiYgdHdvU291cmNlc0F2YWlsYWJsZVwiXG4gICAgW2NoZWNrZWRdPVwiZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uXCJcbiAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgKGNoYW5nZSk9XCJvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0udG9nZ2xlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1yZXN1bHRzXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1yZXN1bHRzPlxuIl19
|
|
419
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pF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LENBQ3BDLGlEQUFpRCxDQUNsRCxDQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDbkQsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FDcEMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzt3R0EvY1UsbUJBQW1COzRGQUFuQixtQkFBbUIsb2FDM0VoQywreUNBd0NBLGtTRDJCSSxZQUFZLGtJQUNaLG9CQUFvQiwwWEFDcEIsMEJBQTBCLHlLQUMxQix5QkFBeUIsMk1BQ3pCLDBCQUEwQixzSEFDMUIsaUJBQWlCOzs0RkFHUixtQkFBbUI7a0JBZC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixpQkFBaUI7cUJBQ2xCO3VTQXlCUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5cbmltcG9ydCB7IEVudGl0eVN0b3JlV2F0Y2hlciB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgQ2hhbmdlVXRpbHMsIE9iamVjdFV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tICdvbC9Db2xsZWN0aW9uJztcbmltcG9ydCAqIGFzIG9sQ29uZGl0aW9uIGZyb20gJ29sL2V2ZW50cy9jb25kaXRpb24nO1xuaW1wb3J0ICogYXMgb2xJbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBTZWxlY3RFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1NlbGVjdCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL1RyYW5zbGF0ZSc7XG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9sb2FkaW5nJztcbmltcG9ydCB7IHJvdW5kQ29vcmRUbywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xuaW1wb3J0IHsgUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2VhcmNoL3NoYXJlZC9zZWFyY2guaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoL3NoYXJlZC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1idXR0b25zL2RpcmVjdGlvbnMtYnV0dG9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1pbnB1dHMvZGlyZWN0aW9ucy1pbnB1dHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLXJlc3VsdHMvZGlyZWN0aW9ucy1yZXN1bHRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvblR5cGUsIFByb3Bvc2FsVHlwZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuZW51bSc7XG5pbXBvcnQge1xuICBEaXJlY3Rpb25PcHRpb25zLFxuICBGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzLFxuICBTdG9wXG59IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGFkZERpcmVjdGlvblRvUm91dGVzRmVhdHVyZVN0b3JlLFxuICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZSxcbiAgYWRkU3RvcFRvU3RvcmUsXG4gIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIGluaXRTdGVwRmVhdHVyZVN0b3JlLFxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXG4gIHVwZGF0ZVN0b3JlU29ydGluZ1xufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLnV0aWxzJztcbmltcG9ydCB7XG4gIFJvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgU3RlcEZlYXR1cmVTdG9yZSxcbiAgU3RvcHNGZWF0dXJlU3RvcmUsXG4gIFN0b3BzU3RvcmVcbn0gZnJvbSAnLi9zaGFyZWQvc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tZGlyZWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNJbnB1dHNDb21wb25lbnQsXG4gICAgRGlyZWN0aW9uc1Jlc3VsdHNDb21wb25lbnQsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHdhdGNoZXI6IEVudGl0eVN0b3JlV2F0Y2hlcjxTdG9wPjtcblxuICBwdWJsaWMgcHJvamVjdGlvbiA9ICdFUFNHOjQzMjYnO1xuICBwdWJsaWMgaGFzT3NybVByaXZhdGVBY2Nlc3MgPSBmYWxzZTtcbiAgcHVibGljIHR3b1NvdXJjZXNBdmFpbGFibGUgPSBmYWxzZTtcblxuICBwcml2YXRlIHpvb21Sb3V0ZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVDaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlc1F1ZXJpZXMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIHNlbGVjdFN0b3BJbnRlcmFjdGlvbjogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgdHJhbnNsYXRlU3RvcDogb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGU7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgZm9jdXNPblN0b3AgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1RyYW5zbGF0aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIHByZXZpb3VzU3RvcHM6IFN0b3BbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZWQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbnRleHRVcmk6IHN0cmluZztcbiAgQElucHV0KCkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcbiAgQElucHV0KCkgc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoKSByb3V0ZXNGZWF0dXJlU3RvcmU6IFJvdXRlc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgc3RlcEZlYXR1cmVTdG9yZTogU3RlcEZlYXR1cmVTdG9yZTtcbiAgQElucHV0KCkgZGVib3VuY2UgPSAyMDA7XG4gIEBJbnB1dCgpIGxlbmd0aCA9IDI7XG4gIEBJbnB1dCgpIGNvb3JkUm91bmRlZERlY2ltYWxzID0gNjtcbiAgQElucHV0KCkgem9vbVRvQWN0aXZlUm91dGUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgQElucHV0KCkgYXV0aGVudGljYXRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hldGVyIG9uZSBvZiB0aGUgZGlyZWN0aW9uIGNvbnRyb2wgaXMgYWN0aXZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IGRpcmVjdGlvbkNvbnRyb2xJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpbnRlcmFjdGlvbnMoKTogb2xJbnRlcmFjdGlvbi5JbnRlcmFjdGlvbltdIHtcbiAgICByZXR1cm4gW3RoaXMuc2VsZWN0U3RvcEludGVyYWN0aW9uLCB0aGlzLnRyYW5zbGF0ZVN0b3AsIHRoaXMuc2VsZWN0ZWRSb3V0ZV07XG4gIH1cblxuICBnZXQgZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0uZ2V0RW5hYmxlZFByb2ZpbGUoKVxuICAgICAgLmF1dGhvcml6YXRpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTZXJ2aWNlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlOiBEaXJlY3Rpb25zU291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVkJCQgPSB0aGlzLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShcbiAgICAgIChhdXRoZW50aWNhdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChhdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJvZmlsZVdpdGhBdXRoOiBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlID1cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5nZXRQcm9maWxlV2l0aEF1dGhvcml6YXRpb24oKTtcbiAgICAgICAgICBpZiAocHJvZmlsZVdpdGhBdXRoKSB7XG4gICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgLmdldChwcm9maWxlV2l0aEF1dGguYXV0aG9yaXphdGlvbi51cmwpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc09zcm1Qcml2YXRlQWNjZXNzID1cbiAgICAgICAgICAgICAgICAgIHVzZXJbcHJvZmlsZVdpdGhBdXRoLmF1dGhvcml6YXRpb24ucHJvcGVydHldO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMudHdvU291cmNlc0F2YWlsYWJsZSA9XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMubGVuZ3RoID09PSAyXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGZhbHNlO1xuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5pdEVudGl0eVN0b3JlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaW5pdFN0b3BzRmVhdHVyZVN0b3JlKHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRSb3V0ZXNGZWF0dXJlU3RvcmUodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgICAgIGluaXRTdGVwRmVhdHVyZVN0b3JlKHRoaXMuc3RlcEZlYXR1cmVTdG9yZSk7XG4gICAgICB0aGlzLmluaXRPbEludGVyYWN0aW9uKCk7XG4gICAgfSwgMSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuc3RvcmVFbXB0eSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdG9yZUNoYW5nZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuem9vbVJvdXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZnJlZXplU3RvcmVzKCk7XG5cbiAgICBpZiAodGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5lbXB0eSkge1xuICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5tYXAubGF5ZXJDb250cm9sbGVyLnJlbW92ZShcbiAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllclxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmVtcHR5KSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5tYXAubGF5ZXJDb250cm9sbGVyLnJlbW92ZShcbiAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XG4gICAgdGhpcy5pbnRlcmFjdGlvbnMubWFwKChpbnRlcmFjdGlvbikgPT5cbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICApO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XG4gICAgKTtcbiAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMuc3RlcEZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVudGl0eVN0b3JlcygpIHtcbiAgICB0aGlzLndhdGNoZXIgPSBuZXcgRW50aXR5U3RvcmVXYXRjaGVyKHRoaXMuc3RvcHNTdG9yZSwgdGhpcy5jZFJlZik7XG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xuICAgIHRoaXMubW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCk7XG4gICAgdGhpcy5tb25pdG9yQWN0aXZlUm91dGVab29tKCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKSB7XG4gICAgdGhpcy56b29tUm91dGUkJCA9IHRoaXMuem9vbVRvQWN0aXZlUm91dGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuY291bnQgPj0gMSkge1xuICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlXG4gICAgICAgICAgLmFsbCgpXG4gICAgICAgICAgLmZpbmQoKHJvdXRlKSA9PiByb3V0ZS5wcm9wZXJ0aWVzLmFjdGl2ZSk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVJvdXRlKSB7XG4gICAgICAgICAgYWN0aXZlUm91dGUub2wuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICBjb25zdCByb3V0ZUV4dGVudCA9IGFjdGl2ZVJvdXRlLm9sLmdldEdlb21ldHJ5KCkuZ2V0RXh0ZW50KCk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcbiAgICAgICAgICAgIHJvdXRlRXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T2xJbnRlcmFjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm9sXSxcbiAgICAgIGhpdFRvbGVyYW5jZTogNyxcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAncG9pbnRlcm1vdmUnICYmICFldmVudC5kcmFnZ2luZztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNsYXRlU3RvcCA9IG5ldyBvbEludGVyYWN0aW9uLlRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRpbmcnLCAoZXZ0OiBUcmFuc2xhdGVFdmVudCkgPT4ge1xuICAgICAgdGhpcy5pc1RyYW5zbGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRlZW5kJywgKGV2dDogVHJhbnNsYXRlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuaXNUcmFuc2xhdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkUm91dGUgPSBuZXcgb2xJbnRlcmFjdGlvbi5TZWxlY3Qoe1xuICAgICAgbGF5ZXJzOiBbdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIub2xdLFxuICAgICAgY29uZGl0aW9uOiBvbENvbmRpdGlvbi5jbGljayxcbiAgICAgIGhpdFRvbGVyYW5jZTogNyxcbiAgICAgIGZpbHRlcjogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBmZWF0dXJlLmdldCgndHlwZScpID09PSBEaXJlY3Rpb25UeXBlLlJvdXRlICYmXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ2FjdGl2ZScpICYmXG4gICAgICAgICAgIXRoaXMuaXNUcmFuc2xhdGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5vbignc2VsZWN0JywgKGV2dDogU2VsZWN0RXZlbnQpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvY3VzT25TdG9wID09PSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzZWxlY3RDb29yZGluYXRlcyA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgICBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgICAgICAgKGV2dCBhcyBhbnkpLm1hcEJyb3dzZXJFdmVudC5jb29yZGluYXRlLFxuICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICB0aGlzLnByb2plY3Rpb25cbiAgICAgICAgICApIGFzIFtudW1iZXIsIG51bWJlcl0sXG4gICAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhZGRlZFN0b3AgPSBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICBhZGRlZFN0b3AudGV4dCA9IHNlbGVjdENvb3JkaW5hdGVzLmpvaW4oJywnKTtcbiAgICAgICAgYWRkZWRTdG9wLmNvb3JkaW5hdGVzID0gW3NlbGVjdENvb3JkaW5hdGVzWzBdLCBzZWxlY3RDb29yZGluYXRlc1sxXV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblN0b3BJbnB1dEhhc0ZvY3VzQ2hhbmdlKHN0b3BJbnB1dEhhc0ZvY3VzOiBib29sZWFuKSB7XG4gICAgc3RvcElucHV0SGFzRm9jdXNcbiAgICAgID8gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sLnJlbW92ZUludGVyYWN0aW9uKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5hZGRJbnRlcmFjdGlvbih0aGlzLnNlbGVjdGVkUm91dGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RvcFRyYW5zbGF0aW9uKGZlYXR1cmVzOiBDb2xsZWN0aW9uPGFueT4pIHtcbiAgICBpZiAoZmVhdHVyZXMuZ2V0TGVuZ3RoKCkgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RGZWF0dXJlID0gZmVhdHVyZXMuZ2V0QXJyYXkoKVswXTtcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcElkID0gZmlyc3RGZWF0dXJlLmdldElkKCk7XG5cbiAgICBjb25zdCB0cmFuc2xhdGlvbkNvb3JkaW5hdGVzID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgIGZpcnN0RmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldENvb3JkaW5hdGVzKCksXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgdGhpcy5wcm9qZWN0aW9uXG4gICAgKTtcbiAgICBjb25zdCB0cmFuc2xhdGVkU3RvcCA9IHRoaXMuc3RvcHNTdG9yZS5nZXQodHJhbnNsYXRlZFN0b3BJZCk7XG4gICAgY29uc3Qgcm91bmRlZENvb3JkID0gcm91bmRDb29yZFRvKFxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICk7XG4gICAgdHJhbnNsYXRlZFN0b3AuY29vcmRpbmF0ZXMgPSByb3VuZGVkQ29vcmQ7XG4gICAgdHJhbnNsYXRlZFN0b3AudGV4dCA9IHJvdW5kZWRDb29yZC5qb2luKCcsJyk7XG4gICAgdGhpcy5zdG9wc1N0b3JlLnVwZGF0ZSh0cmFuc2xhdGVkU3RvcCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCkge1xuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxuICAgIHRoaXMuc3RvcmVFbXB0eSQkID0gdGhpcy5zdG9wc1N0b3JlLmNvdW50JFxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XG4gICAgICAgIGlmIChjb3VudCA8IDIpIHtcbiAgICAgICAgICBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbnRpdHlTdG9yZUNoYW5nZSgpIHtcbiAgICB0aGlzLnN0b3JlQ2hhbmdlJCQgPSB0aGlzLnN0b3BzU3RvcmUuZW50aXRpZXMkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXG4gICAgICAuc3Vic2NyaWJlKChzdG9wczogU3RvcFtdKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RvcERpZmYoc3RvcHMpO1xuICAgICAgICB1cGRhdGVTdG9yZVNvcnRpbmcodGhpcy5zdG9wc1N0b3JlKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTdG9wc0ZlYXR1cmUoKTtcbiAgICAgICAgdGhpcy5nZXRSb3V0ZXModGhpcy5pc1RyYW5zbGF0aW5nKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNocyQkLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcERpZmYoc3RvcHM6IFN0b3BbXSkge1xuICAgIGNvbnN0IHNpbXBsaWZpZWRTdG9wcyA9IHN0b3BzLm1hcCgoc3RvcDogU3RvcCkgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICAgIC4uLnsgaWQ6IHN0b3AuaWQsIHRleHQ6IHN0b3AudGV4dCwgY29vcmRpbmF0ZXM6IHN0b3AuY29vcmRpbmF0ZXMgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZGlmZiA9IENoYW5nZVV0aWxzLmZpbmRDaGFuZ2VzKHRoaXMucHJldmlvdXNTdG9wcywgc2ltcGxpZmllZFN0b3BzLCBbXG4gICAgICAnY29vcmRpbmF0ZXMnXG4gICAgXSk7XG4gICAgY29uc3Qgc3RvcElkVG9Qcm9jZXNzID0gZGlmZi5hZGRlZC5jb25jYXQoZGlmZi5tb2RpZmllZCk7XG4gICAgaWYgKHN0b3BJZFRvUHJvY2Vzcykge1xuICAgICAgc3RvcElkVG9Qcm9jZXNzLm1hcCgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRTdG9wID0gY2hhbmdlLm5ld1ZhbHVlIGFzIFN0b3A7XG4gICAgICAgIGlmIChjaGFuZ2VkU3RvcCkge1xuICAgICAgICAgIGNvbnN0IHN0b3A6IFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KGNoYW5nZWRTdG9wLmlkKTtcbiAgICAgICAgICBjb25zdCB0ZXJtID0gc3RvcC50ZXh0O1xuICAgICAgICAgIGlmICghdGVybSB8fCB0ZXJtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHN0cmluZ1RvTG9uTGF0KFxuICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnByb2plY3Rpb25cbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBpc0Nvb3JkID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLmxvbkxhdCkge1xuICAgICAgICAgICAgaXNDb29yZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc2VhcmNoZXMgPSB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRlcm0sIHtcbiAgICAgICAgICAgIHNlYXJjaFR5cGU6ICdGZWF0dXJlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2FuY2VsU2VhcmNoKCk7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdHMkID0gcmVzZWFyY2hlcy5tYXAoKHJlcykgPT5cbiAgICAgICAgICAgIHJlcy5yZXF1ZXN0LnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgocmVzdWx0czogU2VhcmNoUmVzdWx0W10pID0+XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5maWx0ZXIoKHIpID0+XG4gICAgICAgICAgICAgICAgICBpc0Nvb3JkXG4gICAgICAgICAgICAgICAgICAgID8gci5kYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgJiYgci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICAgIDogci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNlYXJjaHMkJCA9IHJlcXVlc3RzJC5tYXAoKHJlcXVlc3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXF1ZXN0XG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogU2VhcmNoUmVzdWx0W10pID0+XG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgICAgaXNDb29yZFxuICAgICAgICAgICAgICAgICAgICAgID8gci5kYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgJiYgci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBTZWFyY2hSZXN1bHRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcmVzWzBdLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1ldGEgPSByZXNbMF0ubWV0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMubWFwKChyKSA9PiByLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wLnNlYXJjaFByb3Bvc2Fscykge1xuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChzcCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzcC50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgIChpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVkU291cmNlID0gc3RvcC5zZWFyY2hQcm9wb3NhbHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PiBzcC5zb3VyY2UgPT09IHNvdXJjZVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzdG9yZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVkU291cmNlLnJlc3VsdHMgPSByZXN1bHRzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcC5zZWFyY2hQcm9wb3NhbHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogaXNDb29yZCA/IFByb3Bvc2FsVHlwZS5Db29yZCA6IFByb3Bvc2FsVHlwZS5UZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNTdG9wcyA9IHNpbXBsaWZpZWRTdG9wcztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RvcHNGZWF0dXJlKCkge1xuICAgIGNvbnN0IHN0b3BzID0gdGhpcy5zdG9wc1N0b3JlLmFsbCgpO1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiBzdG9wLmNvb3JkaW5hdGVzKTtcbiAgICBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHRoaXMuYWRkU3RvcE92ZXJsYXkoc3RvcCkpO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmVcbiAgICAgIC5hbGwoKVxuICAgICAgLm1hcCgoc3RvcEZlYXR1cmU6IEZlYXR1cmU8RmVhdHVyZVdpdGhTdG9wUHJvcGVydGllcz4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BzU3RvcmUuZ2V0KHN0b3BGZWF0dXJlLnByb3BlcnRpZXMuaWQpKSB7XG4gICAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5kZWxldGUoc3RvcEZlYXR1cmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBjb25zdCBzdG9wc1dpdGhvdXRDb29yZGluYXRlcyA9IHN0b3BzLmZpbHRlcigoc3RvcCkgPT4gIXN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aG91dENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgc3RvcEZlYXR1cmUgPSB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgICAgIGlmIChzdG9wRmVhdHVyZSkge1xuICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlcyhpc092ZXJ2aWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdG9wc1dpdGhDb29yZGluYXRlcyA9IHRoaXMuc3RvcHNTdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIGlmIChzdG9wc1dpdGhDb29yZGluYXRlcy5sZW5ndGggPCAyKSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWxldGVNYW55KHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkQ29vcmRpbmF0ZXMgPSBzdG9wc1dpdGhDb29yZGluYXRlcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgc3RvcC5jb29yZGluYXRlcyxcbiAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgKTtcbiAgICAgIHJldHVybiByb3VuZGVkQ29vcmQ7XG4gICAgfSk7XG4gICAgY29uc3Qgb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHtcbiAgICAgIG92ZXJ2aWV3OiB0cnVlLFxuICAgICAgc3RlcHM6IGZhbHNlLFxuICAgICAgYWx0ZXJuYXRpdmVzOiBmYWxzZSxcbiAgICAgIGNvbnRpbnVlX3N0cmFpZ2h0OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgIGNvbnN0IHJvdXRlUmVzcG9uc2UgPSB0aGlzLmRpcmVjdGlvbnNTZXJ2aWNlLnJvdXRlKFxuICAgICAgcm91bmRlZENvb3JkaW5hdGVzLFxuICAgICAgaXNPdmVydmlldyA/IG92ZXJ2aWV3RGlyZWN0aW9uc09wdGlvbnMgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGlmIChyb3V0ZVJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5wdXNoKFxuICAgICAgICByb3V0ZVJlc3BvbnNlLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgICAgIGRpcmVjdGlvbnMubWFwKChkaXJlY3Rpb24pID0+XG4gICAgICAgICAgICBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZShcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24gPT09IGRpcmVjdGlvbnNbMF0gPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkU3RvcE92ZXJsYXkoc3RvcDogU3RvcCkge1xuICAgIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlKFxuICAgICAgc3RvcCxcbiAgICAgIHRoaXMuc3RvcHNTdG9yZSxcbiAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUsXG4gICAgICB0aGlzLnByb2plY3Rpb24sXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZURpcmVjdGlvbnNDb250cm9sKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gIWlzQWN0aXZlO1xuICAgIGNvbnN0IG9sID0gdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLm9sO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25zLm1hcCgoaW50ZXJhY3Rpb24pID0+XG4gICAgICBpc0FjdGl2ZVxuICAgICAgICA/IG9sLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICAgICA6IG9sLnJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uKVxuICAgICk7XG4gIH1cblxuICBvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5mb3JFYWNoKFxuICAgICAgKHByb2ZpbGUpID0+IChwcm9maWxlLmVuYWJsZWQgPSBmYWxzZSlcbiAgICApO1xuICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLnByb2ZpbGVzLmZpbmQoXG4gICAgICAgIChwcm9maWxlKSA9PiBwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KFxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnaWdvLmdlby5kaXJlY3Rpb25zRm9ybS5mb3Jlc3RSb2Fkc1dhcm5pbmcudGV4dCdcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZm9yZXN0Um9hZHNXYXJuaW5nLnRpdGxlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMuZmluZChcbiAgICAgICAgKHByb2ZpbGUpID0+ICFwcm9maWxlLmF1dGhvcml6YXRpb25cbiAgICAgICkuZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuZ2V0Um91dGVzKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaXJlY3Rpb25zLW9wdGlvbnNcIj5cbiAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJkaXJlY3Rpb25Db250cm9sSXNBY3RpdmVcIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlyZWN0aW9uc0NvbnRyb2woJGV2ZW50LmNoZWNrZWQpXCJcbiAgPlxuICAgIHt7ICdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICpuZ0lmPVwiaGFzT3NybVByaXZhdGVBY2Nlc3MgJiYgdHdvU291cmNlc0F2YWlsYWJsZVwiXG4gICAgW2NoZWNrZWRdPVwiZW5hYmxlZFByb2ZpbGVIYXNBdXRob3JpemF0aW9uXCJcbiAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgKGNoYW5nZSk9XCJvblRvZ2dsZVByaXZhdGVNb2RlQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0udG9nZ2xlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21Ub0FjdGl2ZVJvdXRlJF09XCJ6b29tVG9BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1yZXN1bHRzXG4gIFtzdGVwRmVhdHVyZVN0b3JlXT1cInN0ZXBGZWF0dXJlU3RvcmVcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4+PC9pZ28tZGlyZWN0aW9ucy1yZXN1bHRzPlxuIl19
|
|
@@ -13,20 +13,20 @@ export class IgoDirectionsModule {
|
|
|
13
13
|
ngModule: IgoDirectionsModule
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
17
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
16
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
|
|
18
18
|
DirectionsInputsComponent,
|
|
19
19
|
DirectionsButtonsComponent,
|
|
20
20
|
DirectionsResultsComponent], exports: [DirectionsComponent,
|
|
21
21
|
DirectionsInputsComponent,
|
|
22
22
|
DirectionsButtonsComponent,
|
|
23
23
|
DirectionsResultsComponent] });
|
|
24
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
24
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
|
|
25
25
|
DirectionsInputsComponent,
|
|
26
26
|
DirectionsButtonsComponent,
|
|
27
27
|
DirectionsResultsComponent] });
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, decorators: [{
|
|
30
30
|
type: NgModule,
|
|
31
31
|
args: [{
|
|
32
32
|
imports: [
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
43
43
|
]
|
|
44
44
|
}]
|
|
45
45
|
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWdCN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQztJQUNKLENBQUM7d0dBUlUsbUJBQW1CO3lHQUFuQixtQkFBbUIsWUFaNUIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsMEJBQTBCLGFBRzFCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjt5R0FHakIsbUJBQW1CLFlBWjVCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjs7NEZBU2pCLG1CQUFtQjtrQkFkL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMvZGlyZWN0aW9ucy1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cy9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1Jlc3VsdHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cy9kaXJlY3Rpb25zLXJlc3VsdHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIERpcmVjdGlvbnNDb21wb25lbnQsXG4gICAgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGlyZWN0aW9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWdvRGlyZWN0aW9uc01vZHVsZSB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBpdCBoYXMgbm8gZWZmZWN0XG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0RpcmVjdGlvbnNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0RpcmVjdGlvbnNNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -201,13 +201,13 @@ export class DirectionsService {
|
|
|
201
201
|
doc.text('Page ' + doc.getCurrentPageInfo().pageNumber + ' / ' + pageCount, width - 20, pageHeight - 10);
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
205
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
204
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsService, deps: [{ token: i1.DirectionsSourceService }, { token: i2.ConfigService }, { token: i3.LanguageService }, { token: i4.PrintService }, { token: DOCUMENT }, { token: i5.ActivityService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
205
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsService });
|
|
206
206
|
}
|
|
207
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsService, decorators: [{
|
|
208
208
|
type: Injectable
|
|
209
209
|
}], ctorParameters: () => [{ type: i1.DirectionsSourceService }, { type: i2.ConfigService }, { type: i3.LanguageService }, { type: i4.PrintService }, { type: Document, decorators: [{
|
|
210
210
|
type: Inject,
|
|
211
211
|
args: [DOCUMENT]
|
|
212
212
|
}] }, { type: i5.ActivityService }] });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFHNUIsTUFBTSxPQUFPLGlCQUFpQjtJQUVsQjtJQUNBO0lBQ0E7SUFDQTtJQUNrQjtJQUNsQjtJQU5WLFlBQ1UsdUJBQWdELEVBQ2hELGFBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQ1IsUUFBa0IsRUFDcEMsZUFBZ0M7UUFMaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDUixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUN2QyxDQUFDO0lBRUosS0FBSyxDQUNILFdBQXVCLEVBQ3ZCLG9CQUFzQyxFQUFFO1FBRXhDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FDckIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDdkMsV0FBVyxFQUNYLGlCQUFpQixDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FDVCxNQUF3QixFQUN4QixXQUF1QixFQUN2QixvQkFBc0MsRUFBRTtRQUV4QyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxpQkFBaUIsQ0FDZixHQUFXLEVBQ1gsU0FBb0I7UUFFcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQUU3QyxNQUFNLEdBQUcsR0FBVSxJQUFJLEtBQUssQ0FBQztZQUMzQixXQUFXLEVBQUUsR0FBRztZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRXZFLGtDQUFrQztRQUNsQyxNQUFNLE9BQU8sR0FBcUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxlQUFlLEdBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE1BQU0sS0FBSyxHQUFHLEdBQUcsU0FBUyxDQUFDLEtBQUssS0FBSyxjQUFjLENBQ2pELFNBQVMsQ0FBQyxRQUFRLENBQ25CLEtBQUssY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzVDLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV6QixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRTtZQUM5RCxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7UUFDdkMsSUFBSSxDQUFDLFlBQVk7YUFDZCxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQzthQUN0RCxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQXFCLEVBQUUsRUFBRTtZQUN6QyxJQUFJLE1BQU0sS0FBSyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sY0FBYyxDQUNwQixHQUFXLEVBQ1gsR0FBVSxFQUNWLE9BQXlDO1FBRXpDLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLGVBQWUsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQztZQUM5QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLDRCQUE0QjtZQUM1QixNQUFNLFNBQVMsR0FDYixHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxHQUFHLGVBQWUsQ0FBQztZQUNoRSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQyxtQkFBbUIsQ0FDL0IsU0FBb0I7UUFFcEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELDREQUE0RDtRQUM1RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxPQUFPO1lBQ1AsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQXFCLENBQUM7WUFDOUQsR0FBRyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLG1CQUFtQjtZQUNuQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztZQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDckMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztnQkFDbkUsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUM1QyxZQUFZLENBQUMsU0FBUztvQkFDcEIsZ0NBQWdDLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDdEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxTQUFvQjtRQUVwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUTthQUMvQixvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRCxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsOEJBQThCO1FBQzlCLE1BQU0sVUFBVSxHQUFxQyxFQUFFLENBQUM7UUFDeEQsNERBQTREO1FBQzVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFDeEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekQsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUlsQixFQUFFLENBQUM7UUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQzNCLENBQUMsRUFDQSxJQUFJLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLEVBQzNCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ2pDLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLGtCQUFrQixDQUFDLElBQUksQ0FBQztnQkFDdEIsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxXQUFXO2dCQUNuRCxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtnQkFDckUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlLENBQzNCLEdBQVUsRUFDVixTQUFvQixFQUNwQixLQUFhO1FBRWIsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2QsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFO1lBQzlELEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEMsR0FBVyxDQUFDLFNBQVMsQ0FBQztZQUNyQixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUMvQixZQUFZLEVBQUU7Z0JBQ1osQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTthQUNyQjtZQUNELEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxFQUFFO2FBQ2I7WUFDRCxXQUFXLEVBQUUsVUFBVSxJQUFJO2dCQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO29CQUNyQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQWtCLENBQUM7b0JBQ3hDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7U0FDb0IsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFVO1FBQ3BDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUV6RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDL0MsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNO2dCQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM1QyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FDTixPQUFPLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxTQUFTLEVBQ2pFLEtBQUssR0FBRyxFQUFFLEVBQ1YsVUFBVSxHQUFHLEVBQUUsQ0FDaEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3VHQWpQVSxpQkFBaUIsaUpBTWxCLFFBQVE7MkdBTlAsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFPTixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9hY3Rpdml0eSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgJ2pzcGRmLWF1dG90YWJsZSc7XG5pbXBvcnQgeyBVc2VyT3B0aW9ucyB9IGZyb20gJ2pzcGRmLWF1dG90YWJsZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50L3NoYXJlZC9wcmludC5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2UgfSBmcm9tICcuLi9kaXJlY3Rpb25zLXNvdXJjZXMvZGlyZWN0aW9ucy1zb3VyY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXREdXJhdGlvbixcbiAgZm9ybWF0SW5zdHJ1Y3Rpb25cbn0gZnJvbSAnLi9kaXJlY3Rpb25zLnV0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25zU291cmNlU2VydmljZTogRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmludFNlcnZpY2U6IFByaW50U2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIGFjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlXG4gICkge31cblxuICByb3V0ZShcbiAgICBjb29yZGluYXRlczogUG9zaXRpb25bXSxcbiAgICBkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8RGlyZWN0aW9uW10+IHtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJvdXRlU291cmNlKFxuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLFxuICAgICAgY29vcmRpbmF0ZXMsXG4gICAgICBkaXJlY3Rpb25zT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICByb3V0ZVNvdXJjZShcbiAgICBzb3VyY2U6IERpcmVjdGlvbnNTb3VyY2UsXG4gICAgY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10sXG4gICAgZGlyZWN0aW9uc09wdGlvbnM6IERpcmVjdGlvbk9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPERpcmVjdGlvbltdPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHNvdXJjZS5yb3V0ZShjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpO1xuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgZG93bmxvYWREaXJlY3Rpb24oXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25cbiAgKTogT2JzZXJ2YWJsZTxTdWJqZWN0U3RhdHVzPiB7XG4gICAgY29uc3QgYWN0aXZpdHlJZCA9IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgY29uc3Qgc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFN1YmplY3RTdGF0dXM+KCk7XG5cbiAgICBjb25zdCBkb2M6IGpzUERGID0gbmV3IGpzUERGKHtcbiAgICAgIG9yaWVudGF0aW9uOiAncCcsXG4gICAgICBmb3JtYXQ6ICdMZXR0ZXInLFxuICAgICAgdW5pdDogJ21tJyAvLyBkZWZhdWx0XG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHdpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogcGFnZUhlaWdodCB9ID0gZG9jLmludGVybmFsLnBhZ2VTaXplO1xuXG4gICAgLyoqIHRvcCB8IHJpZ2h0IHwgYm90dG9tIHwgbGVmdCAqL1xuICAgIGNvbnN0IG1hcmdpbnM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzIwLCAxMCwgMjAsIDEwXTtcbiAgICB0aGlzLmFkZEF0dHJpYnV0aW9uKG1hcCwgZG9jLCBtYXJnaW5zKTtcbiAgICBjb25zdCB3aWR0aCA9IHBhZ2VXaWR0aCAtIG1hcmdpbnNbM10gLSBtYXJnaW5zWzFdO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhZ2VIZWlnaHQgLSBtYXJnaW5zWzBdIC0gbWFyZ2luc1syXTtcbiAgICBjb25zdCBpbWFnZURpbWVuc2lvbnM6IFtudW1iZXIsIG51bWJlcl0gPSBbd2lkdGgsIGhlaWdodF07XG4gICAgY29uc3QgdGl0bGUgPSBgJHtkaXJlY3Rpb24udGl0bGV9ICgke2Zvcm1hdERpc3RhbmNlKFxuICAgICAgZGlyZWN0aW9uLmRpc3RhbmNlXG4gICAgKX0sICR7Zm9ybWF0RHVyYXRpb24oZGlyZWN0aW9uLmR1cmF0aW9uKX0pYDtcbiAgICBjb25zdCB0aXRsZVBvc2l0aW9uID0gMjU7XG5cbiAgICBkb2MudGV4dCh0aXRsZSwgZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoIC8gMiwgdGl0bGVQb3NpdGlvbiwge1xuICAgICAgYWxpZ246ICdjZW50ZXInXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvbHV0aW9uID0gOTY7IC8vIERlZmF1bHQgaXMgOTZcbiAgICB0aGlzLnByaW50U2VydmljZVxuICAgICAgLmFkZE1hcChkb2MsIG1hcCwgcmVzb2x1dGlvbiwgaW1hZ2VEaW1lbnNpb25zLCBtYXJnaW5zKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoc3RhdHVzOiBTdWJqZWN0U3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRkSW5zdHJ1Y3Rpb25zKGRvYywgZGlyZWN0aW9uLCB0aXRsZSk7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlSGVhZGVyRm9vdGVyKGRvYyk7XG4gICAgICAgICAgYXdhaXQgZG9jLnNhdmUoYCR7dGl0bGV9LnBkZmAsIHsgcmV0dXJuUHJvbWlzZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVucmVnaXN0ZXIoYWN0aXZpdHlJZCk7XG4gICAgICAgIHN0YXR1cyQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc3RhdHVzJDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRpb24oXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgZG9jOiBqc1BERixcbiAgICBtYXJnaW5zOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICApIHtcbiAgICBjb25zdCB2ZXJ0aWNhbFNwYWNpbmcgPSA1O1xuICAgIGNvbnN0IGF0dHJpYnV0aW9uVGV4dDogc3RyaW5nID0gdGhpcy5wcmludFNlcnZpY2UuZ2V0QXR0cmlidXRpb25UZXh0KG1hcCk7XG4gICAgaWYgKGF0dHJpYnV0aW9uVGV4dCkge1xuICAgICAgbWFyZ2luc1syXSArPSB2ZXJ0aWNhbFNwYWNpbmc7XG4gICAgICBjb25zdCB4UG9zaXRpb24gPSBtYXJnaW5zWzNdO1xuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gbWFyZ2luc1syXTtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0ZXh0IHBvc2l0aW9uIFlcbiAgICAgIGNvbnN0IHlQb3NpdGlvbiA9XG4gICAgICAgIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQgLSBtYXJnaW5Cb3R0b20gKyB2ZXJ0aWNhbFNwYWNpbmc7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnRleHQoYXR0cmlidXRpb25UZXh0LCB4UG9zaXRpb24sIHlQb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRIVE1MVGFibGVDb250ZW50KFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uXG4gICk6IFByb21pc2U8SFRNTFRhYmxlRWxlbWVudD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRpcmVjdGlvbnNJbnN0cnVjdGlvbihkaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICBjb25zdCB0YmxCb2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhW2luZGV4XTtcbiAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICBjb25zdCBjZWxsSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgY29uc3QgY2VsbFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgLy8gaWNvblxuICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJykgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgIGltZy5zcmMgPSBlbGVtZW50Lmljb247XG4gICAgICAvLyBpbnN0cnVjdGlvbiB0ZXh0XG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgc3Bhbi5pbm5lckhUTUwgPSBlbGVtZW50Lmluc3RydWN0aW9uO1xuICAgICAgY2VsbEltYWdlLmFwcGVuZENoaWxkKGltZyk7XG4gICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICAgIGlmIChlbGVtZW50LmRpc3RhbmNlKSB7XG4gICAgICAgIGNvbnN0IHNwYW5EaXN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgc3BhbkRpc3RhbmNlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnbWlkZGxlJztcbiAgICAgICAgc3BhbkRpc3RhbmNlLmlubmVySFRNTCA9XG4gICAgICAgICAgJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBlbGVtZW50LmRpc3RhbmNlO1xuICAgICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuRGlzdGFuY2UpO1xuICAgICAgfVxuICAgICAgcm93LmFwcGVuZChjZWxsSW1hZ2UpO1xuICAgICAgcm93LmFwcGVuZChjZWxsVGV4dCk7XG4gICAgICB0YmxCb2R5LmFwcGVuZENoaWxkKHJvdyk7XG4gICAgfVxuICAgIHRhYmxlLmFwcGVuZENoaWxkKHRibEJvZHkpO1xuICAgIHJldHVybiB0YWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlyZWN0aW9uc0luc3RydWN0aW9uKFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uXG4gICk6IFByb21pc2U8eyBpbnN0cnVjdGlvbjogc3RyaW5nOyBpY29uOiBzdHJpbmc7IGRpc3RhbmNlOiBzdHJpbmcgfVtdPiB7XG4gICAgY29uc3QgbWF0TGlzdEl0ZW1zID0gdGhpcy5kb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZ28tZGlyZWN0aW9ucy1yZXN1bHRzJylbMF1cbiAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QnKVswXTtcbiAgICBjb25zdCBtYXRMaXN0SXRlbSA9IG1hdExpc3RJdGVtcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QtaXRlbScpO1xuICAgIC8vIGNvbnZlcnQgaWNvbiBsaXN0IHRvIGJhc2U2NFxuICAgIGNvbnN0IGljb25zQXJyYXk6IHsgbmFtZTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfVtdID0gW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZm9yLW9mXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hdExpc3RJdGVtLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IG1hdExpc3RJdGVtW2luZGV4XTtcbiAgICAgIGNvbnN0IGljb24gPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtaWNvbicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaWNvbk5hbWUgPSBpY29uLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IGZvdW5kID0gaWNvbnNBcnJheS5zb21lKChlbCkgPT4gZWwubmFtZSA9PT0gaWNvbk5hbWUpO1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICBjb25zdCBpY29uQ2FudmFzID0gYXdhaXQgaHRtbDJjYW52YXMoaWNvbiwgeyBzY2FsZTogMyB9KTtcbiAgICAgICAgaWNvbnNBcnJheS5wdXNoKHsgbmFtZTogaWNvbk5hbWUsIGljb246IGljb25DYW52YXMudG9EYXRhVVJMKCkgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkRGlyZWN0aW9uOiB7XG4gICAgICBpbnN0cnVjdGlvbjogc3RyaW5nO1xuICAgICAgaWNvbjogc3RyaW5nO1xuICAgICAgZGlzdGFuY2U6IHN0cmluZztcbiAgICB9W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpcmVjdGlvbi5zdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IGRpcmVjdGlvbi5zdGVwc1tpXTtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uID0gZm9ybWF0SW5zdHJ1Y3Rpb24oXG4gICAgICAgIHN0ZXAubWFuZXV2ZXIudHlwZSxcbiAgICAgICAgc3RlcC5tYW5ldXZlci5tb2RpZmllcixcbiAgICAgICAgc3RlcC5uYW1lLFxuICAgICAgICBzdGVwLm1hbmV1dmVyLmJlYXJpbmdfYWZ0ZXIsXG4gICAgICAgIGksXG4gICAgICAgIChzdGVwLm1hbmV1dmVyIGFzIGFueSkuZXhpdCxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UsXG4gICAgICAgIGkgPT09IGRpcmVjdGlvbi5zdGVwcy5sZW5ndGggLSAxXG4gICAgICApO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IGZvcm1hdERpc3RhbmNlKHN0ZXAuZGlzdGFuY2UpO1xuICAgICAgZm9ybWF0dGVkRGlyZWN0aW9uLnB1c2goe1xuICAgICAgICBpbnN0cnVjdGlvbjogaSArIDEgKyAnLiAnICsgaW5zdHJ1Y3Rpb24uaW5zdHJ1Y3Rpb24sXG4gICAgICAgIGljb246IGljb25zQXJyYXkuZmluZCgoaWNvbikgPT4gaWNvbi5uYW1lID09PSBpbnN0cnVjdGlvbi5pbWFnZSkuaWNvbixcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlID8gJygnICsgZGlzdGFuY2UgKyAnKScgOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkRGlyZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRJbnN0cnVjdGlvbnMoXG4gICAgZG9jOiBqc1BERixcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvbixcbiAgICB0aXRsZTogc3RyaW5nXG4gICkge1xuICAgIGRvYy5hZGRQYWdlKCk7XG4gICAgY29uc3QgdGl0bGVQb3NpdGlvbiA9IDI1O1xuICAgIGRvYy50ZXh0KHRpdGxlLCBkb2MuaW50ZXJuYWwucGFnZVNpemUud2lkdGggLyAyLCB0aXRsZVBvc2l0aW9uLCB7XG4gICAgICBhbGlnbjogJ2NlbnRlcidcbiAgICB9KTtcbiAgICBjb25zdCBIVE1MdGFibGUgPSBhd2FpdCB0aGlzLnNldEhUTUxUYWJsZUNvbnRlbnQoZGlyZWN0aW9uKTtcbiAgICBjb25zdCB0YWJsZVBvcyA9IHRpdGxlUG9zaXRpb24gKyA1O1xuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAgICAgaHRtbDogSFRNTHRhYmxlLFxuICAgICAgc3RhcnRZOiB0YWJsZVBvcyxcbiAgICAgIG1hcmdpbjogeyB0b3A6IDIwLCBib3R0b206IDIwIH0sXG4gICAgICBjb2x1bW5TdHlsZXM6IHtcbiAgICAgICAgMDogeyBjZWxsV2lkdGg6IDEwIH1cbiAgICAgIH0sXG4gICAgICB0aGVtZTogJ3BsYWluJyxcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBmb250U2l6ZTogMTJcbiAgICAgIH0sXG4gICAgICBkaWREcmF3Q2VsbDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEuY29sdW1uLmluZGV4ID09PSAwICYmIGRhdGEuY2VsbC5zZWN0aW9uID09PSAnYm9keScpIHtcbiAgICAgICAgICBkYXRhLnJvdy5oZWlnaHQgPSAxMDtcbiAgICAgICAgICBjb25zdCB0ZCA9IGRhdGEuY2VsbC5yYXcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgaW1nID0gdGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdO1xuICAgICAgICAgIGRvYy5hZGRJbWFnZShpbWcuc3JjLCBkYXRhLmNlbGwueCwgZGF0YS5jZWxsLnksIDgsIDgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBzYXRpc2ZpZXMgVXNlck9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlSGVhZGVyRm9vdGVyKGRvYzoganNQREYpIHtcbiAgICBjb25zdCBwYWdlQ291bnQgPSBkb2MuZ2V0TnVtYmVyT2ZQYWdlcygpO1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoRGF0ZS5ub3coKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tJykudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGxvZ29Db25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkaXJlY3Rpb25zU291cmNlcy5sb2dvJyk7XG4gICAgY29uc3QgbG9nbyA9IGxvZ29Db25maWcgPyBsb2dvQ29uZmlnIDogJ2Fzc2V0cy9sb2dvLnBuZyc7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFnZUNvdW50OyBpbmRleCsrKSB7XG4gICAgICBkb2Muc2V0UGFnZShpbmRleCk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoOCk7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZTtcbiAgICAgIGNvbnN0IHBhZ2VIZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHRcbiAgICAgICAgPyBwYWdlU2l6ZS5oZWlnaHRcbiAgICAgICAgOiBwYWdlU2l6ZS5nZXRIZWlnaHQoKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gcGFnZVNpemUud2lkdGggPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VTaXplLmdldFdpZHRoKCk7XG4gICAgICBkb2MudGV4dChkYXRlLCAxMCwgMTAsIHsgYmFzZWxpbmU6ICd0b3AnIH0pO1xuICAgICAgZG9jLmFkZEltYWdlKGxvZ28sICdQTkcnLCB3aWR0aCAtIDIwLCA1LCAxMCwgMTApO1xuICAgICAgZG9jLnRleHQoZGF0ZSwgMTAsIHBhZ2VIZWlnaHQgLSAxMCk7XG4gICAgICBkb2MudGV4dChcbiAgICAgICAgJ1BhZ2UgJyArIGRvYy5nZXRDdXJyZW50UGFnZUluZm8oKS5wYWdlTnVtYmVyICsgJyAvICcgKyBwYWdlQ291bnQsXG4gICAgICAgIHdpZHRoIC0gMjAsXG4gICAgICAgIHBhZ2VIZWlnaHQgLSAxMFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGNBQWMsRUFDZCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFHNUIsTUFBTSxPQUFPLGlCQUFpQjtJQUVsQjtJQUNBO0lBQ0E7SUFDQTtJQUNrQjtJQUNsQjtJQU5WLFlBQ1UsdUJBQWdELEVBQ2hELGFBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQ1IsUUFBa0IsRUFDcEMsZUFBZ0M7UUFMaEMsNEJBQXVC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LENBQUMsUUFBUSxDQUFDO1lBQ3ZDLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNO2dCQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BFLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM1QyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDLElBQUksQ0FDTixPQUFPLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxTQUFTLEVBQ2pFLEtBQUssR0FBRyxFQUFFLEVBQ1YsVUFBVSxHQUFHLEVBQUUsQ0FDaEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3dHQWpQVSxpQkFBaUIsaUpBTWxCLFFBQVE7NEdBTlAsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFPTixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9hY3Rpdml0eSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBQb3NpdGlvbiB9IGZyb20gJ2dlb2pzb24nO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgJ2pzcGRmLWF1dG90YWJsZSc7XG5pbXBvcnQgeyBVc2VyT3B0aW9ucyB9IGZyb20gJ2pzcGRmLWF1dG90YWJsZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IFByaW50U2VydmljZSB9IGZyb20gJy4uLy4uL3ByaW50L3NoYXJlZC9wcmludC5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2UgfSBmcm9tICcuLi9kaXJlY3Rpb25zLXNvdXJjZXMvZGlyZWN0aW9ucy1zb3VyY2UnO1xuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGZvcm1hdERpc3RhbmNlLFxuICBmb3JtYXREdXJhdGlvbixcbiAgZm9ybWF0SW5zdHJ1Y3Rpb25cbn0gZnJvbSAnLi9kaXJlY3Rpb25zLnV0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERpcmVjdGlvbnNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkaXJlY3Rpb25zU291cmNlU2VydmljZTogRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmludFNlcnZpY2U6IFByaW50U2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIGFjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlXG4gICkge31cblxuICByb3V0ZShcbiAgICBjb29yZGluYXRlczogUG9zaXRpb25bXSxcbiAgICBkaXJlY3Rpb25zT3B0aW9uczogRGlyZWN0aW9uT3B0aW9ucyA9IHt9XG4gICk6IE9ic2VydmFibGU8RGlyZWN0aW9uW10+IHtcbiAgICBpZiAoY29vcmRpbmF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJvdXRlU291cmNlKFxuICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLFxuICAgICAgY29vcmRpbmF0ZXMsXG4gICAgICBkaXJlY3Rpb25zT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICByb3V0ZVNvdXJjZShcbiAgICBzb3VyY2U6IERpcmVjdGlvbnNTb3VyY2UsXG4gICAgY29vcmRpbmF0ZXM6IFBvc2l0aW9uW10sXG4gICAgZGlyZWN0aW9uc09wdGlvbnM6IERpcmVjdGlvbk9wdGlvbnMgPSB7fVxuICApOiBPYnNlcnZhYmxlPERpcmVjdGlvbltdPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHNvdXJjZS5yb3V0ZShjb29yZGluYXRlcywgZGlyZWN0aW9uc09wdGlvbnMpO1xuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgZG93bmxvYWREaXJlY3Rpb24oXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgZGlyZWN0aW9uOiBEaXJlY3Rpb25cbiAgKTogT2JzZXJ2YWJsZTxTdWJqZWN0U3RhdHVzPiB7XG4gICAgY29uc3QgYWN0aXZpdHlJZCA9IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgY29uc3Qgc3RhdHVzJCA9IG5ldyBTdWJqZWN0PFN1YmplY3RTdGF0dXM+KCk7XG5cbiAgICBjb25zdCBkb2M6IGpzUERGID0gbmV3IGpzUERGKHtcbiAgICAgIG9yaWVudGF0aW9uOiAncCcsXG4gICAgICBmb3JtYXQ6ICdMZXR0ZXInLFxuICAgICAgdW5pdDogJ21tJyAvLyBkZWZhdWx0XG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHdpZHRoOiBwYWdlV2lkdGgsIGhlaWdodDogcGFnZUhlaWdodCB9ID0gZG9jLmludGVybmFsLnBhZ2VTaXplO1xuXG4gICAgLyoqIHRvcCB8IHJpZ2h0IHwgYm90dG9tIHwgbGVmdCAqL1xuICAgIGNvbnN0IG1hcmdpbnM6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzIwLCAxMCwgMjAsIDEwXTtcbiAgICB0aGlzLmFkZEF0dHJpYnV0aW9uKG1hcCwgZG9jLCBtYXJnaW5zKTtcbiAgICBjb25zdCB3aWR0aCA9IHBhZ2VXaWR0aCAtIG1hcmdpbnNbM10gLSBtYXJnaW5zWzFdO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhZ2VIZWlnaHQgLSBtYXJnaW5zWzBdIC0gbWFyZ2luc1syXTtcbiAgICBjb25zdCBpbWFnZURpbWVuc2lvbnM6IFtudW1iZXIsIG51bWJlcl0gPSBbd2lkdGgsIGhlaWdodF07XG4gICAgY29uc3QgdGl0bGUgPSBgJHtkaXJlY3Rpb24udGl0bGV9ICgke2Zvcm1hdERpc3RhbmNlKFxuICAgICAgZGlyZWN0aW9uLmRpc3RhbmNlXG4gICAgKX0sICR7Zm9ybWF0RHVyYXRpb24oZGlyZWN0aW9uLmR1cmF0aW9uKX0pYDtcbiAgICBjb25zdCB0aXRsZVBvc2l0aW9uID0gMjU7XG5cbiAgICBkb2MudGV4dCh0aXRsZSwgZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoIC8gMiwgdGl0bGVQb3NpdGlvbiwge1xuICAgICAgYWxpZ246ICdjZW50ZXInXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNvbHV0aW9uID0gOTY7IC8vIERlZmF1bHQgaXMgOTZcbiAgICB0aGlzLnByaW50U2VydmljZVxuICAgICAgLmFkZE1hcChkb2MsIG1hcCwgcmVzb2x1dGlvbiwgaW1hZ2VEaW1lbnNpb25zLCBtYXJnaW5zKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAoc3RhdHVzOiBTdWJqZWN0U3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRkSW5zdHJ1Y3Rpb25zKGRvYywgZGlyZWN0aW9uLCB0aXRsZSk7XG4gICAgICAgICAgdGhpcy5zZXRQYWdlSGVhZGVyRm9vdGVyKGRvYyk7XG4gICAgICAgICAgYXdhaXQgZG9jLnNhdmUoYCR7dGl0bGV9LnBkZmAsIHsgcmV0dXJuUHJvbWlzZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVucmVnaXN0ZXIoYWN0aXZpdHlJZCk7XG4gICAgICAgIHN0YXR1cyQubmV4dChzdGF0dXMpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc3RhdHVzJDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkQXR0cmlidXRpb24oXG4gICAgbWFwOiBJZ29NYXAsXG4gICAgZG9jOiBqc1BERixcbiAgICBtYXJnaW5zOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICApIHtcbiAgICBjb25zdCB2ZXJ0aWNhbFNwYWNpbmcgPSA1O1xuICAgIGNvbnN0IGF0dHJpYnV0aW9uVGV4dDogc3RyaW5nID0gdGhpcy5wcmludFNlcnZpY2UuZ2V0QXR0cmlidXRpb25UZXh0KG1hcCk7XG4gICAgaWYgKGF0dHJpYnV0aW9uVGV4dCkge1xuICAgICAgbWFyZ2luc1syXSArPSB2ZXJ0aWNhbFNwYWNpbmc7XG4gICAgICBjb25zdCB4UG9zaXRpb24gPSBtYXJnaW5zWzNdO1xuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gbWFyZ2luc1syXTtcbiAgICAgIC8vIGNhbGN1bGF0ZSB0ZXh0IHBvc2l0aW9uIFlcbiAgICAgIGNvbnN0IHlQb3NpdGlvbiA9XG4gICAgICAgIGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQgLSBtYXJnaW5Cb3R0b20gKyB2ZXJ0aWNhbFNwYWNpbmc7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xuICAgICAgZG9jLnRleHQoYXR0cmlidXRpb25UZXh0LCB4UG9zaXRpb24sIHlQb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRIVE1MVGFibGVDb250ZW50KFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uXG4gICk6IFByb21pc2U8SFRNTFRhYmxlRWxlbWVudD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmRpcmVjdGlvbnNJbnN0cnVjdGlvbihkaXJlY3Rpb24pO1xuICAgIGNvbnN0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICBjb25zdCB0YmxCb2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1mb3Itb2ZcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhW2luZGV4XTtcbiAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7XG4gICAgICBjb25zdCBjZWxsSW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgY29uc3QgY2VsbFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpO1xuICAgICAgLy8gaWNvblxuICAgICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJykgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgIGltZy5zcmMgPSBlbGVtZW50Lmljb247XG4gICAgICAvLyBpbnN0cnVjdGlvbiB0ZXh0XG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgc3Bhbi5pbm5lckhUTUwgPSBlbGVtZW50Lmluc3RydWN0aW9uO1xuICAgICAgY2VsbEltYWdlLmFwcGVuZENoaWxkKGltZyk7XG4gICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuKTtcbiAgICAgIGlmIChlbGVtZW50LmRpc3RhbmNlKSB7XG4gICAgICAgIGNvbnN0IHNwYW5EaXN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgc3BhbkRpc3RhbmNlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnbWlkZGxlJztcbiAgICAgICAgc3BhbkRpc3RhbmNlLmlubmVySFRNTCA9XG4gICAgICAgICAgJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBlbGVtZW50LmRpc3RhbmNlO1xuICAgICAgICBjZWxsVGV4dC5hcHBlbmRDaGlsZChzcGFuRGlzdGFuY2UpO1xuICAgICAgfVxuICAgICAgcm93LmFwcGVuZChjZWxsSW1hZ2UpO1xuICAgICAgcm93LmFwcGVuZChjZWxsVGV4dCk7XG4gICAgICB0YmxCb2R5LmFwcGVuZENoaWxkKHJvdyk7XG4gICAgfVxuICAgIHRhYmxlLmFwcGVuZENoaWxkKHRibEJvZHkpO1xuICAgIHJldHVybiB0YWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlyZWN0aW9uc0luc3RydWN0aW9uKFxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uXG4gICk6IFByb21pc2U8eyBpbnN0cnVjdGlvbjogc3RyaW5nOyBpY29uOiBzdHJpbmc7IGRpc3RhbmNlOiBzdHJpbmcgfVtdPiB7XG4gICAgY29uc3QgbWF0TGlzdEl0ZW1zID0gdGhpcy5kb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZ28tZGlyZWN0aW9ucy1yZXN1bHRzJylbMF1cbiAgICAgIC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QnKVswXTtcbiAgICBjb25zdCBtYXRMaXN0SXRlbSA9IG1hdExpc3RJdGVtcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWF0LWxpc3QtaXRlbScpO1xuICAgIC8vIGNvbnZlcnQgaWNvbiBsaXN0IHRvIGJhc2U2NFxuICAgIGNvbnN0IGljb25zQXJyYXk6IHsgbmFtZTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfVtdID0gW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItZm9yLW9mXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG1hdExpc3RJdGVtLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IG1hdExpc3RJdGVtW2luZGV4XTtcbiAgICAgIGNvbnN0IGljb24gPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtYXQtaWNvbicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaWNvbk5hbWUgPSBpY29uLmlubmVyVGV4dDtcbiAgICAgIGNvbnN0IGZvdW5kID0gaWNvbnNBcnJheS5zb21lKChlbCkgPT4gZWwubmFtZSA9PT0gaWNvbk5hbWUpO1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICBjb25zdCBpY29uQ2FudmFzID0gYXdhaXQgaHRtbDJjYW52YXMoaWNvbiwgeyBzY2FsZTogMyB9KTtcbiAgICAgICAgaWNvbnNBcnJheS5wdXNoKHsgbmFtZTogaWNvbk5hbWUsIGljb246IGljb25DYW52YXMudG9EYXRhVVJMKCkgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVkRGlyZWN0aW9uOiB7XG4gICAgICBpbnN0cnVjdGlvbjogc3RyaW5nO1xuICAgICAgaWNvbjogc3RyaW5nO1xuICAgICAgZGlzdGFuY2U6IHN0cmluZztcbiAgICB9W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpcmVjdGlvbi5zdGVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc3RlcCA9IGRpcmVjdGlvbi5zdGVwc1tpXTtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uID0gZm9ybWF0SW5zdHJ1Y3Rpb24oXG4gICAgICAgIHN0ZXAubWFuZXV2ZXIudHlwZSxcbiAgICAgICAgc3RlcC5tYW5ldXZlci5tb2RpZmllcixcbiAgICAgICAgc3RlcC5uYW1lLFxuICAgICAgICBzdGVwLm1hbmV1dmVyLmJlYXJpbmdfYWZ0ZXIsXG4gICAgICAgIGksXG4gICAgICAgIChzdGVwLm1hbmV1dmVyIGFzIGFueSkuZXhpdCxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UsXG4gICAgICAgIGkgPT09IGRpcmVjdGlvbi5zdGVwcy5sZW5ndGggLSAxXG4gICAgICApO1xuXG4gICAgICBjb25zdCBkaXN0YW5jZSA9IGZvcm1hdERpc3RhbmNlKHN0ZXAuZGlzdGFuY2UpO1xuICAgICAgZm9ybWF0dGVkRGlyZWN0aW9uLnB1c2goe1xuICAgICAgICBpbnN0cnVjdGlvbjogaSArIDEgKyAnLiAnICsgaW5zdHJ1Y3Rpb24uaW5zdHJ1Y3Rpb24sXG4gICAgICAgIGljb246IGljb25zQXJyYXkuZmluZCgoaWNvbikgPT4gaWNvbi5uYW1lID09PSBpbnN0cnVjdGlvbi5pbWFnZSkuaWNvbixcbiAgICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlID8gJygnICsgZGlzdGFuY2UgKyAnKScgOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkRGlyZWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRJbnN0cnVjdGlvbnMoXG4gICAgZG9jOiBqc1BERixcbiAgICBkaXJlY3Rpb246IERpcmVjdGlvbixcbiAgICB0aXRsZTogc3RyaW5nXG4gICkge1xuICAgIGRvYy5hZGRQYWdlKCk7XG4gICAgY29uc3QgdGl0bGVQb3NpdGlvbiA9IDI1O1xuICAgIGRvYy50ZXh0KHRpdGxlLCBkb2MuaW50ZXJuYWwucGFnZVNpemUud2lkdGggLyAyLCB0aXRsZVBvc2l0aW9uLCB7XG4gICAgICBhbGlnbjogJ2NlbnRlcidcbiAgICB9KTtcbiAgICBjb25zdCBIVE1MdGFibGUgPSBhd2FpdCB0aGlzLnNldEhUTUxUYWJsZUNvbnRlbnQoZGlyZWN0aW9uKTtcbiAgICBjb25zdCB0YWJsZVBvcyA9IHRpdGxlUG9zaXRpb24gKyA1O1xuICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xuICAgICAgaHRtbDogSFRNTHRhYmxlLFxuICAgICAgc3RhcnRZOiB0YWJsZVBvcyxcbiAgICAgIG1hcmdpbjogeyB0b3A6IDIwLCBib3R0b206IDIwIH0sXG4gICAgICBjb2x1bW5TdHlsZXM6IHtcbiAgICAgICAgMDogeyBjZWxsV2lkdGg6IDEwIH1cbiAgICAgIH0sXG4gICAgICB0aGVtZTogJ3BsYWluJyxcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBmb250U2l6ZTogMTJcbiAgICAgIH0sXG4gICAgICBkaWREcmF3Q2VsbDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEuY29sdW1uLmluZGV4ID09PSAwICYmIGRhdGEuY2VsbC5zZWN0aW9uID09PSAnYm9keScpIHtcbiAgICAgICAgICBkYXRhLnJvdy5oZWlnaHQgPSAxMDtcbiAgICAgICAgICBjb25zdCB0ZCA9IGRhdGEuY2VsbC5yYXcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgY29uc3QgaW1nID0gdGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpWzBdO1xuICAgICAgICAgIGRvYy5hZGRJbWFnZShpbWcuc3JjLCBkYXRhLmNlbGwueCwgZGF0YS5jZWxsLnksIDgsIDgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBzYXRpc2ZpZXMgVXNlck9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQYWdlSGVhZGVyRm9vdGVyKGRvYzoganNQREYpIHtcbiAgICBjb25zdCBwYWdlQ291bnQgPSBkb2MuZ2V0TnVtYmVyT2ZQYWdlcygpO1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoRGF0ZS5ub3coKSkuZm9ybWF0KCdERC9NTS9ZWVlZIGhoOm1tJykudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGxvZ29Db25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkaXJlY3Rpb25zU291cmNlcy5sb2dvJyk7XG4gICAgY29uc3QgbG9nbyA9IGxvZ29Db25maWcgPyBsb2dvQ29uZmlnIDogJ2Fzc2V0cy9sb2dvLnBuZyc7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFnZUNvdW50OyBpbmRleCsrKSB7XG4gICAgICBkb2Muc2V0UGFnZShpbmRleCk7XG4gICAgICBkb2Muc2V0Rm9udFNpemUoOCk7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZTtcbiAgICAgIGNvbnN0IHBhZ2VIZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHRcbiAgICAgICAgPyBwYWdlU2l6ZS5oZWlnaHRcbiAgICAgICAgOiBwYWdlU2l6ZS5nZXRIZWlnaHQoKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gcGFnZVNpemUud2lkdGggPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VTaXplLmdldFdpZHRoKCk7XG4gICAgICBkb2MudGV4dChkYXRlLCAxMCwgMTAsIHsgYmFzZWxpbmU6ICd0b3AnIH0pO1xuICAgICAgZG9jLmFkZEltYWdlKGxvZ28sICdQTkcnLCB3aWR0aCAtIDIwLCA1LCAxMCwgMTApO1xuICAgICAgZG9jLnRleHQoZGF0ZSwgMTAsIHBhZ2VIZWlnaHQgLSAxMCk7XG4gICAgICBkb2MudGV4dChcbiAgICAgICAgJ1BhZ2UgJyArIGRvYy5nZXRDdXJyZW50UGFnZUluZm8oKS5wYWdlTnVtYmVyICsgJyAvICcgKyBwYWdlQ291bnQsXG4gICAgICAgIHdpZHRoIC0gMjAsXG4gICAgICAgIHBhZ2VIZWlnaHQgLSAxMFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { MatButtonModule } from '@angular/material/button';
|
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
5
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
6
|
import { IgoLanguageModule } from '@igo2/core/language';
|
|
7
|
-
import { Layer } from '../../layer
|
|
7
|
+
import { Layer } from '../../layer';
|
|
8
8
|
import { DownloadService } from '../shared/download.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "../shared/download.service";
|
|
@@ -14,25 +14,13 @@ import * as i4 from "@angular/material/icon";
|
|
|
14
14
|
import * as i5 from "@ngx-translate/core";
|
|
15
15
|
export class DownloadButtonComponent {
|
|
16
16
|
downloadService;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
set layer(value) {
|
|
21
|
-
this._layer = value;
|
|
22
|
-
}
|
|
23
|
-
_layer;
|
|
24
|
-
get color() {
|
|
25
|
-
return this._color;
|
|
26
|
-
}
|
|
27
|
-
set color(value) {
|
|
28
|
-
this._color = value;
|
|
29
|
-
}
|
|
30
|
-
_color = 'primary';
|
|
17
|
+
layer;
|
|
18
|
+
color = 'primary';
|
|
31
19
|
constructor(downloadService) {
|
|
32
20
|
this.downloadService = downloadService;
|
|
33
21
|
}
|
|
34
|
-
openDownload(
|
|
35
|
-
this.downloadService.open(layer);
|
|
22
|
+
openDownload() {
|
|
23
|
+
this.downloadService.open(this.layer);
|
|
36
24
|
}
|
|
37
25
|
get options() {
|
|
38
26
|
if (!this.layer) {
|
|
@@ -40,10 +28,10 @@ export class DownloadButtonComponent {
|
|
|
40
28
|
}
|
|
41
29
|
return this.layer.dataSource.options;
|
|
42
30
|
}
|
|
43
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
44
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, deps: [{ token: i1.DownloadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadButtonComponent, isStandalone: true, selector: "igo-download-button", inputs: { layer: "layer", color: "color" }, ngImport: i0, template: "<button\n *ngIf=\"\n options &&\n options.download &&\n (options.download['dynamicUrl'] || options.download['url'])\n \"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\"\n (click)=\"openDownload()\"\n>\n <mat-icon>download</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
45
33
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadButtonComponent, decorators: [{
|
|
47
35
|
type: Component,
|
|
48
36
|
args: [{ selector: 'igo-download-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
49
37
|
NgIf,
|
|
@@ -51,10 +39,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
|
51
39
|
MatTooltipModule,
|
|
52
40
|
MatIconModule,
|
|
53
41
|
IgoLanguageModule
|
|
54
|
-
], template: "<button\n *ngIf=\"\n options &&\n options.download &&\n (options.download['dynamicUrl'] || options.download['url'])\n \"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\"\n (click)=\"openDownload(
|
|
42
|
+
], template: "<button\n *ngIf=\"\n options &&\n options.download &&\n (options.download['dynamicUrl'] || options.download['url'])\n \"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\"\n (click)=\"openDownload()\"\n>\n <mat-icon>download</mat-icon>\n</button>\n" }]
|
|
55
43
|
}], ctorParameters: () => [{ type: i1.DownloadService }], propDecorators: { layer: [{
|
|
56
44
|
type: Input
|
|
57
45
|
}], color: [{
|
|
58
46
|
type: Input
|
|
59
47
|
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2Rvd25sb2FkL2Rvd25sb2FkLWJ1dHRvbi9kb3dubG9hZC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZG93bmxvYWQvZG93bmxvYWQtYnV0dG9uL2Rvd25sb2FkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQWdCN0QsTUFBTSxPQUFPLHVCQUF1QjtJQUtkO0lBSlgsS0FBSyxDQUFRO0lBRWIsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUUzQixZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFBRyxDQUFDO0lBRXhELFlBQVk7UUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxDQUFDO3dHQWhCVSx1QkFBdUI7NEZBQXZCLHVCQUF1QiwySEMxQnBDLG1YQWVBLDBERElJLElBQUksNEZBQ0osZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsaUJBQWlCOzs0RkFHUix1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsaUJBQWlCO3FCQUNsQjtvRkFHUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgeyBEb3dubG9hZERhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2Rvd25sb2FkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZG93bmxvYWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1kb3dubG9hZC1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG93bmxvYWQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRG93bmxvYWRCdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBsYXllcjogTGF5ZXI7XG5cbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkb3dubG9hZFNlcnZpY2U6IERvd25sb2FkU2VydmljZSkge31cblxuICBvcGVuRG93bmxvYWQoKSB7XG4gICAgdGhpcy5kb3dubG9hZFNlcnZpY2Uub3Blbih0aGlzLmxheWVyKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IERvd25sb2FkRGF0YVNvdXJjZU9wdGlvbnMge1xuICAgIGlmICghdGhpcy5sYXllcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYXllci5kYXRhU291cmNlLm9wdGlvbnM7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJcbiAgICBvcHRpb25zICYmXG4gICAgb3B0aW9ucy5kb3dubG9hZCAmJlxuICAgIChvcHRpb25zLmRvd25sb2FkWydkeW5hbWljVXJsJ10gfHwgb3B0aW9ucy5kb3dubG9hZFsndXJsJ10pXG4gIFwiXG4gIG1hdC1pY29uLWJ1dHRvblxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZG93bmxvYWQuYWN0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gIFtjb2xvcl09XCJjb2xvclwiXG4gIChjbGljayk9XCJvcGVuRG93bmxvYWQoKVwiXG4+XG4gIDxtYXQtaWNvbj5kb3dubG9hZDwvbWF0LWljb24+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -10,15 +10,15 @@ export class IgoDownloadModule {
|
|
|
10
10
|
ngModule: IgoDownloadModule
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
14
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
15
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDownloadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoDownloadModule, imports: [DownloadButtonComponent], exports: [DownloadButtonComponent] });
|
|
15
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDownloadModule, imports: [DownloadButtonComponent] });
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDownloadModule, decorators: [{
|
|
18
18
|
type: NgModule,
|
|
19
19
|
args: [{
|
|
20
20
|
imports: [DownloadButtonComponent],
|
|
21
21
|
exports: [DownloadButtonComponent]
|
|
22
22
|
}]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZG93bmxvYWQvZG93bmxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUV0Rjs7R0FFRztBQUtILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtTQUM1QixDQUFDO0lBQ0osQ0FBQzt3R0FMVSxpQkFBaUI7eUdBQWpCLGlCQUFpQixZQUhsQix1QkFBdUIsYUFDdkIsdUJBQXVCO3lHQUV0QixpQkFBaUIsWUFIbEIsdUJBQXVCOzs0RkFHdEIsaUJBQWlCO2tCQUo3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEb3dubG9hZEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZG93bmxvYWQtYnV0dG9uL2Rvd25sb2FkLWJ1dHRvbi5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIGltcG9ydCB0aGUgRG93bmxvYWRCdXR0b25Db21wb25lbnQgZGlyZWN0bHlcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0Rvd25sb2FkQnV0dG9uQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0Rvd25sb2FkQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBJZ29Eb3dubG9hZE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8SWdvRG93bmxvYWRNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0Rvd25sb2FkTW9kdWxlXG4gICAgfTtcbiAgfVxufVxuIl19
|