@igo2/geo 16.3.0 → 17.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/assets/images/north-direction.png +0 -0
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +32 -14
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +38 -19
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +19 -11
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +49 -20
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +23 -11
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +48 -16
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +12 -71
- package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
- package/esm2022/lib/catalog/catalog.module.mjs +18 -39
- package/esm2022/lib/catalog/index.mjs +2 -1
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.service.mjs +16 -9
- package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasource.service.mjs +11 -13
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -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.interface.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 +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
- 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/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
- package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +28 -13
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +44 -19
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +36 -16
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +9 -2
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +72 -41
- package/esm2022/lib/directions/directions.component.mjs +83 -21
- package/esm2022/lib/directions/directions.module.mjs +14 -73
- package/esm2022/lib/directions/directions.provider.mjs +16 -0
- package/esm2022/lib/directions/index.mjs +2 -1
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +37 -27
- package/esm2022/lib/directions/shared/directions.utils.mjs +22 -22
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
- package/esm2022/lib/download/download.module.mjs +10 -27
- package/esm2022/lib/download/shared/download.service.mjs +7 -7
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +41 -18
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +22 -9
- package/esm2022/lib/draw/draw/draw.component.mjs +55 -25
- package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
- package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +7 -7
- package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +29 -13
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +14 -27
- package/esm2022/lib/feature/feature-details/index.mjs +4 -0
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +9 -9
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
- package/esm2022/lib/feature/feature.module.mjs +18 -12
- package/esm2022/lib/feature/index.mjs +3 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
- package/esm2022/lib/feature/shared/index.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/search.mjs +5 -5
- package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2022/lib/filter/filter.module.mjs +47 -177
- package/esm2022/lib/filter/index.mjs +2 -1
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +56 -25
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +17 -14
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +59 -34
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +66 -28
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +35 -18
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +35 -16
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +51 -24
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
- package/esm2022/lib/geo.module.mjs +5 -43
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +34 -17
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +12 -43
- package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
- package/esm2022/lib/geometry/geometry.module.mjs +9 -10
- package/esm2022/lib/geometry/index.mjs +2 -3
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +58 -22
- package/esm2022/lib/import-export/import-export.module.mjs +15 -81
- package/esm2022/lib/import-export/index.mjs +2 -1
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +19 -66
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +14 -8
- package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
- package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +7 -7
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/layer/index.mjs +2 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +35 -16
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +45 -17
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +13 -11
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +10 -9
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +49 -18
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
- package/esm2022/lib/layer/layer.module.mjs +27 -93
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +13 -13
- 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 +1 -1
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
- package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +27 -14
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +28 -17
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +15 -11
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
- package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2022/lib/map/index.mjs +1 -1
- package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +8 -8
- package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
- package/esm2022/lib/map/map.module.mjs +51 -81
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +23 -13
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
- package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +11 -10
- package/esm2022/lib/map/shared/index.mjs +1 -1
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +3 -3
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +10 -9
- package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
- package/esm2022/lib/map/shared/map.interface.mjs +1 -1
- package/esm2022/lib/map/shared/map.mjs +1 -1
- package/esm2022/lib/map/shared/map.service.mjs +5 -5
- package/esm2022/lib/map/shared/map.utils.mjs +1 -1
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +11 -8
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +7 -7
- package/esm2022/lib/map/shared/projection.utils.mjs +60 -1
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
- package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +26 -16
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
- package/esm2022/lib/measure/index.mjs +2 -3
- package/esm2022/lib/measure/measure.module.mjs +8 -5
- package/esm2022/lib/measure/measurer/index.mjs +6 -0
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +40 -20
- package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
- package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/index.mjs +2 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
- package/esm2022/lib/metadata/metadata.module.mjs +14 -31
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +7 -7
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
- package/esm2022/lib/offline/layerDB/index.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
- package/esm2022/lib/offline/shared/geo-network.service.mjs +7 -7
- package/esm2022/lib/overlay/overlay.module.mjs +10 -8
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +8 -8
- package/esm2022/lib/print/print-form/print-form.component.mjs +49 -17
- package/esm2022/lib/print/print.module.mjs +10 -54
- package/esm2022/lib/print/shared/geopdf.mjs +1 -1
- package/esm2022/lib/print/shared/print.interface.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +180 -127
- package/esm2022/lib/print/shared/print.type.mjs +1 -1
- package/esm2022/lib/query/query.module.mjs +7 -8
- package/esm2022/lib/query/shared/index.mjs +2 -1
- package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
- package/esm2022/lib/query/shared/query.directive.mjs +8 -7
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/query/shared/query.service.mjs +8 -10
- package/esm2022/lib/query/shared/query.utils.mjs +1 -1
- package/esm2022/lib/search/index.mjs +3 -5
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +42 -19
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
- package/esm2022/lib/search/search-results/index.mjs +5 -0
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +44 -19
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +34 -18
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +23 -12
- package/esm2022/lib/search/search-results/search-results.component.mjs +28 -14
- package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
- package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +40 -15
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
- package/esm2022/lib/search/search.module.mjs +24 -13
- package/esm2022/lib/search/shared/index.mjs +2 -1
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +11 -10
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.enums.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.provider.mjs +20 -0
- package/esm2022/lib/search/shared/search.service.mjs +32 -13
- package/esm2022/lib/search/shared/search.utils.mjs +2 -2
- package/esm2022/lib/search/shared/sources/cadastre.mjs +13 -10
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +11 -2
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.mjs +16 -14
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +14 -2
- package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.mjs +28 -21
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +23 -2
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +14 -12
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +14 -2
- package/esm2022/lib/search/shared/sources/index.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +10 -10
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +10 -2
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +17 -15
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +17 -2
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +12 -11
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +11 -2
- package/esm2022/lib/style/index.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
- package/esm2022/lib/style/shared/font.enum.mjs +1 -1
- package/esm2022/lib/style/shared/index.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
- package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
- package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
- package/esm2022/lib/style/style-service/style.service.mjs +4 -4
- package/esm2022/lib/style/style.module.mjs +12 -57
- package/esm2022/lib/toast/toast.component.mjs +21 -11
- package/esm2022/lib/toast/toast.module.mjs +10 -30
- package/esm2022/lib/utils/googleLinks.mjs +1 -1
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/osmLinks.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +7 -7
- package/esm2022/lib/wkt/shared/wkt.service.mjs +19 -19
- package/esm2022/lib/wkt/wkt.module.mjs +8 -5
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +11 -10
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -14
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +14 -11
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +14 -11
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +12 -9
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +4 -4
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
- package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -8
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
- package/esm2022/lib/workspace/workspace.module.mjs +11 -36
- package/esm2022/public_api.mjs +11 -12
- package/fesm2022/igo2-geo.mjs +23027 -22793
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -3
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -2
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +2 -2
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -3
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +6 -3
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +6 -18
- package/lib/catalog/catalog-library/index.d.ts +3 -0
- package/lib/catalog/catalog.module.d.ts +9 -9
- package/lib/catalog/index.d.ts +1 -0
- package/lib/catalog/shared/catalog.interface.d.ts +1 -1
- package/lib/catalog/shared/catalog.service.d.ts +3 -1
- package/lib/datasource/shared/datasource.service.d.ts +4 -5
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +2 -3
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +4 -2
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +2 -2
- package/lib/directions/directions-results/directions-results.component.d.ts +2 -2
- package/lib/directions/directions-sources/directions-source.d.ts +7 -3
- package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
- package/lib/directions/directions-sources/directions-source.provider.d.ts +3 -1
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +20 -11
- package/lib/directions/directions.component.d.ts +16 -4
- package/lib/directions/directions.module.d.ts +4 -16
- package/lib/directions/directions.provider.d.ts +3 -0
- package/lib/directions/index.d.ts +1 -0
- package/lib/directions/shared/directions.interface.d.ts +2 -9
- package/lib/directions/shared/directions.service.d.ts +7 -3
- package/lib/directions/shared/directions.utils.d.ts +2 -2
- package/lib/directions/shared/store.d.ts +1 -1
- package/lib/download/download-button/download-button.component.d.ts +1 -1
- package/lib/download/download.module.d.ts +4 -6
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
- package/lib/draw/draw/draw-popup.component.d.ts +5 -5
- package/lib/draw/draw/draw-shorcuts.component.d.ts +3 -1
- package/lib/draw/draw/draw.component.d.ts +3 -3
- package/lib/draw/draw/draw.module.d.ts +2 -25
- package/lib/draw/drawingTool.module.d.ts +3 -0
- package/lib/draw/shared/draw-icon.service.d.ts +1 -1
- package/lib/environment/environment.interface.d.ts +2 -1
- package/lib/feature/feature-details/feature-details.component.d.ts +8 -5
- package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
- package/lib/feature/feature-details/feature-details.module.d.ts +5 -6
- package/lib/feature/feature-details/index.d.ts +3 -0
- package/lib/feature/feature-form/feature-form.component.d.ts +2 -3
- package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
- package/lib/feature/feature.module.d.ts +9 -4
- package/lib/feature/index.d.ts +2 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/feature.utils.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
- package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
- package/lib/feature/shared/strategies/loading.d.ts +1 -1
- package/lib/feature/shared/strategies/search.d.ts +1 -1
- package/lib/feature/shared/strategies/selection.d.ts +1 -1
- package/lib/filter/filter.module.d.ts +23 -28
- package/lib/filter/index.d.ts +1 -0
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +5 -5
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +5 -5
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
- package/lib/filter/shared/ogc-filter.d.ts +7 -0
- package/lib/filter/shared/ogc-filter.interface.d.ts +2 -3
- package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -6
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +2 -2
- 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 +3 -3
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
- package/lib/geo.module.d.ts +14 -24
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +2 -3
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +5 -10
- package/lib/geometry/geometry-form-field/index.d.ts +3 -0
- package/lib/geometry/geometry.module.d.ts +5 -3
- package/lib/geometry/index.d.ts +1 -2
- package/lib/geometry/shared/controls/draw.d.ts +4 -4
- package/lib/geometry/shared/controls/slice.d.ts +4 -4
- package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
- package/lib/import-export/export-button/export-button.component.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +7 -4
- package/lib/import-export/import-export.module.d.ts +8 -15
- package/lib/import-export/index.d.ts +1 -0
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +5 -5
- package/lib/import-export/shared/export.service.d.ts +1 -1
- package/lib/import-export/shared/export.utils.d.ts +2 -2
- package/lib/import-export/shared/import.service.d.ts +1 -1
- package/lib/import-export/shared/import.utils.d.ts +2 -2
- package/lib/layer/index.d.ts +1 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
- package/lib/layer/layer.module.d.ts +14 -18
- package/lib/layer/shared/layer.service.d.ts +1 -1
- package/lib/layer/shared/layers/image-layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
- package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
- package/lib/layer/shared/layers/vector-layer.d.ts +4 -5
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -2
- package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
- package/lib/layer/utils/image-watcher.d.ts +1 -1
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +2 -2
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +2 -2
- package/lib/map/info-section/info-section.component.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +2 -2
- package/lib/map/map-center/map-center.component.d.ts +1 -1
- package/lib/map/map.module.d.ts +35 -21
- package/lib/map/menu-button/menu-button.component.d.ts +2 -2
- package/lib/map/offline-button/offline-button.component.d.ts +2 -2
- package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +2 -2
- package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
- package/lib/map/shared/map.d.ts +2 -1
- package/lib/map/shared/mapOffline.directive.d.ts +3 -2
- package/lib/map/shared/projection.service.d.ts +1 -1
- package/lib/map/shared/projection.utils.d.ts +11 -0
- package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +2 -2
- package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
- package/lib/measure/index.d.ts +1 -2
- package/lib/measure/measure.module.d.ts +3 -0
- package/lib/measure/measurer/index.d.ts +5 -0
- package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
- package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
- package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
- package/lib/measure/measurer/measurer.component.d.ts +4 -4
- package/lib/measure/measurer/measurer.module.d.ts +3 -18
- package/lib/measure/shared/measure.utils.d.ts +1 -1
- package/lib/metadata/index.d.ts +1 -0
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
- package/lib/metadata/metadata.module.d.ts +6 -7
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
- package/lib/offline/shared/geo-network.service.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +4 -1
- package/lib/overlay/shared/overlay.directive.d.ts +1 -1
- package/lib/print/print/print.component.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +5 -2
- package/lib/print/print.module.d.ts +4 -12
- package/lib/print/shared/print.interface.d.ts +1 -0
- package/lib/print/shared/print.service.d.ts +31 -18
- package/lib/query/query.module.d.ts +4 -4
- package/lib/query/shared/index.d.ts +1 -0
- package/lib/query/shared/query-search-source.providers.d.ts +1 -1
- package/lib/query/shared/query.directive.d.ts +1 -1
- package/lib/query/shared/query.interfaces.d.ts +1 -2
- package/lib/query/shared/query.service.d.ts +2 -3
- package/lib/search/index.d.ts +2 -4
- package/lib/search/search-bar/search-bar.component.d.ts +4 -3
- package/lib/search/search-bar/search-bar.module.d.ts +2 -16
- package/lib/search/search-results/index.d.ts +4 -0
- package/lib/search/search-results/save-feature-dialog.component.d.ts +2 -2
- package/lib/search/search-results/search-results-add-button.component.d.ts +4 -4
- package/lib/search/search-results/search-results-item.component.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +3 -3
- package/lib/search/search-results/search-results.directive.d.ts +3 -0
- package/lib/search/search-results/search-results.module.d.ts +3 -21
- package/lib/search/search-selector/search-selector.component.d.ts +1 -1
- package/lib/search/search-selector/search-selector.module.d.ts +2 -11
- package/lib/search/search-settings/search-settings.component.d.ts +3 -2
- package/lib/search/search-settings/search-settings.module.d.ts +2 -12
- package/lib/search/search.module.d.ts +14 -7
- package/lib/search/shared/index.d.ts +1 -0
- package/lib/search/shared/search-pointer-summary.directive.d.ts +2 -2
- package/lib/search/shared/search-source.service.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +12 -10
- package/lib/search/shared/search.provider.d.ts +8 -0
- package/lib/search/shared/search.service.d.ts +8 -3
- package/lib/search/shared/sources/cadastre.d.ts +2 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +6 -2
- package/lib/search/shared/sources/coordinates.d.ts +2 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +6 -2
- package/lib/search/shared/sources/icherche-icons.d.ts +7 -0
- package/lib/search/shared/sources/icherche.d.ts +2 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +10 -14
- package/lib/search/shared/sources/ilayer.d.ts +2 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +6 -2
- package/lib/search/shared/sources/nominatim.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +5 -2
- package/lib/search/shared/sources/source.d.ts +2 -2
- package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
- package/lib/search/shared/sources/storedqueries.d.ts +2 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +8 -3
- package/lib/search/shared/sources/workspace.d.ts +2 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +6 -2
- package/lib/style/shared/vector/conversion.utils.d.ts +2 -3
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
- package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
- package/lib/style/style.module.d.ts +5 -16
- package/lib/toast/toast.component.d.ts +2 -2
- package/lib/toast/toast.module.d.ts +4 -6
- package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +1 -1
- package/lib/wkt/wkt.module.d.ts +3 -0
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +2 -2
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
- package/lib/workspace/shared/edition-workspace.d.ts +2 -2
- package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/feature-workspace.d.ts +1 -1
- package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
- package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
- package/lib/workspace/shared/workspace.utils.d.ts +2 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +3 -2
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
- package/lib/workspace/widgets/widgets.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +2 -2
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +2 -2
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
- package/lib/workspace/workspace.module.d.ts +5 -9
- package/locale/en.geo.json +824 -818
- package/locale/fr.geo.json +825 -819
- package/package.json +14 -12
- package/public_api.d.ts +10 -11
- package/src/_index.scss +2 -2
- package/src/geo-theme.scss +23 -23
- package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
- package/src/lib/catalog/catalog.theming.scss +5 -5
- package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
- package/src/lib/directions/directions.theming.scss +6 -6
- package/src/lib/draw/draw.theming.scss +32 -32
- package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
- package/src/lib/feature/feature.theming.scss +4 -4
- package/src/lib/filter/filter.theming.scss +13 -13
- package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
- package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
- package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
- package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
- package/src/lib/layer/layer.theming.scss +10 -10
- package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
- package/src/lib/map/map.theming.scss +9 -9
- package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
- package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
- package/src/lib/measure/measure.theming.scss +5 -5
- package/src/lib/measure/measurer/measurer.theming.scss +26 -26
- package/src/lib/search/search-bar/search-bar.theming.scss +33 -33
- package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
- package/src/lib/search/search.theming.scss +7 -7
- package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
- package/src/lib/workspace/workspace.theming.scss +6 -6
- package/src/style/style.scss +1 -1
- package/style/style.css +2 -1
- package/esm2022/lib/datasource/datasource.module.mjs +0 -22
- package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
- package/lib/datasource/datasource.module.d.ts +0 -8
- package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET01WYWx1ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9kb20nO1xuXG5pbXBvcnQgb2xGb3JtYXRGaWx0ZXIgZnJvbSAnb2wvZm9ybWF0L2ZpbHRlci9GaWx0ZXInO1xuaW1wb3J0IG9sR2VvbWV0cnkgZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlciBleHRlbmRzIG9sRm9ybWF0RmlsdGVyIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgV0ZTV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyB7XG4gIGZlYXR1cmVOUz86IHN0cmluZztcbiAgZmVhdHVyZVByZWZpeD86IHN0cmluZztcbiAgZmVhdHVyZVR5cGVzOiBzdHJpbmdbXTtcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBvdXRwdXRGb3JtYXQ/OiBzdHJpbmc7XG4gIG1heEZlYXR1cmVzPzogbnVtYmVyO1xuICBnZW9tZXRyeU5hbWU/OiBzdHJpbmc7XG4gIHByb3BlcnR5TmFtZXM/OiBzdHJpbmdbXTtcbiAgc3RhcnRJbmRleD86IG51bWJlcjtcbiAgY291bnQ/OiBudW1iZXI7XG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgZmlsdGVyPzogb2xGb3JtYXRGaWx0ZXI7XG4gIHJlc3VsdFR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zID1cbiAgfCBPZ2NGaWx0ZXJDb25kaXRpb25zQXJyYXlPcHRpb25zXG4gIHwgT2djRmlsdGVyU3BhdGlhbE9wdGlvbnNcbiAgfCBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zXG4gIHwgT2djRmlsdGVySXNCZXR3ZWVuT3B0aW9uc1xuICB8IE9nY0ZpbHRlckVxdWFsVG9PcHRpb25zXG4gIHwgT2djRmlsdGVyR3JlYXRlckxlc3NPcHRpb25zXG4gIHwgT2djRmlsdGVySXNMaWtlT3B0aW9uc1xuICB8IE9nY0ZpbHRlcklzTnVsbE9wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIElnb09nY0ZpbHRlck9iamVjdCA9XG4gIHwgSWdvTG9naWNhbEFycmF5T3B0aW9uc1xuICB8IEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgZmlsdGVycz86IElnb0xvZ2ljYWxBcnJheU9wdGlvbnMgfCBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucztcbiAgcHVzaEJ1dHRvbnM/OiBJZ29PZ2NTZWxlY3RvcjtcbiAgY2hlY2tib3hlcz86IElnb09nY1NlbGVjdG9yO1xuICByYWRpb0J1dHRvbnM/OiBJZ29PZ2NTZWxlY3RvcjtcbiAgc2VsZWN0PzogSWdvT2djU2VsZWN0b3I7XG4gIGF1dG9jb21wbGV0ZT86IElnb09nY1NlbGVjdG9yO1xuICBpbnRlcmZhY2VPZ2NGaWx0ZXJzPzogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdO1xuICBmaWx0ZXJlZD86IGJvb2xlYW47XG4gIGFkdmFuY2VkT2djRmlsdGVycz86IGJvb2xlYW47XG4gIGdlb21ldHJ5TmFtZT86IHN0cmluZztcbiAgYWxsb3dlZE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvT2djU2VsZWN0b3Ige1xuICBncm91cHM6IFNlbGVjdG9yR3JvdXBbXTtcbiAgYnVuZGxlczogT2djU2VsZWN0b3JCdW5kbGVbXTtcbiAgc2VsZWN0b3JUeXBlOlxuICAgIHwgJ3B1c2hCdXR0b24nXG4gICAgfCAnY2hlY2tib3gnXG4gICAgfCAncmFkaW9CdXR0b24nXG4gICAgfCAnc2VsZWN0J1xuICAgIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIG9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdG9yR3JvdXAge1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgaWRzPztcbiAgY29tcHV0ZWRTZWxlY3RvcnM/OiBPZ2NTZWxlY3RvckJ1bmRsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY1NlbGVjdG9yQnVuZGxlIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGxvZ2ljYWw/OiBzdHJpbmc7XG4gIHZlcnRpY2FsPzogYm9vbGVhbjtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICB1bmZpbHRlcmVkPzogYm9vbGVhbjtcbiAgc2VsZWN0b3JzPzpcbiAgICB8IE9nY1B1c2hCdXR0b25bXVxuICAgIHwgT2djQ2hlY2tib3hbXVxuICAgIHwgT2djUmFkaW9CdXR0b25bXVxuICAgIHwgT2djU2VsZWN0W11cbiAgICB8IE9nY0F1dG9jb21wbGV0ZVtdO1xuICBkb21TZWxlY3RvcnM/OiBJZ29Eb21TZWxlY3RvcltdO1xuICB3aWR0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NQdXNoQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djQ2hlY2tib3gge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY1JhZGlvQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NTZWxlY3Qge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NBdXRvY29tcGxldGUge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgb2djRmlsdGVycz86IE9nY0ZpbHRlcnNPcHRpb25zO1xuICBvbD86IG9sU291cmNlVmVjdG9yIHwgb2xTb3VyY2U7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgc2V0T2djRmlsdGVycyhvZ2NGaWx0ZXJzOiBPZ2NGaWx0ZXJzT3B0aW9ucywgdHJpZ2dlckV2ZW50PzogYm9vbGVhbik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvTG9naWNhbEFycmF5T3B0aW9ucyB7XG4gIGxvZ2ljYWw6IHN0cmluZztcbiAgZmlsdGVyczogSWdvTG9naWNhbEFycmF5T3B0aW9ucyB8IEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvRG9tU2VsZWN0b3Ige1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIG9wZXJhdG9yOiBzdHJpbmc7XG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuICBkb21WYWx1ZTogRE9NVmFsdWVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJDb25kaXRpb25zQXJyYXlPcHRpb25zIHtcbiAgY29uZGl0aW9uczogT2djRmlsdGVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyU3BhdGlhbE9wdGlvbnMge1xuICBnZW9tZXRyeU5hbWU6IHN0cmluZztcbiAgZ2VvbWV0cnk/OiBvbEdlb21ldHJ5O1xuICB3a3RfZ2VvbWV0cnk/OiBzdHJpbmc7XG4gIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBzcnNOYW1lPzogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGlkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgb3BlcmF0b3I6IHN0cmluZztcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyRHVyaW5nT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBiZWdpbjogc3RyaW5nO1xuICBlbmQ/OiBzdHJpbmc7XG4gIHN0ZXA6IHN0cmluZztcbiAgcmVzdHJpY3RUb1N0ZXA/OiBib29sZWFuO1xuICBzbGlkZXJPcHRpb25zPzogU2xpZGVyT3B0aW9uc0ludGVyZmFjZTtcbiAgZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgY2FsZW5kYXJNb2RlWWVhcj86IGJvb2xlYW47XG4gIHRpdGxlPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJJc0JldHdlZW5PcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIGxvd2VyQm91bmRhcnk6IG51bWJlcjtcbiAgdXBwZXJCb3VuZGFyeTogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJFcXVhbFRvT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBleHByZXNzaW9uOiBzdHJpbmcgfCBudW1iZXI7XG4gIG1hdGNoQ2FzZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlckdyZWF0ZXJMZXNzT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBleHByZXNzaW9uOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcklzTGlrZU9wdGlvbnMgZXh0ZW5kcyBPZ2NGaWx0ZXJBdHRyaWJ1dGVPcHRpb25zIHtcbiAgcGF0dGVybjogc3RyaW5nO1xuICB3aWxkQ2FyZD86IHN0cmluZztcbiAgc2luZ2xlQ2hhcj86IHN0cmluZztcbiAgZXNjYXBlQ2hhcj86IHN0cmluZztcbiAgbWF0Y2hDYXNlOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJJc051bGxPcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBiZWdpbj86IHN0cmluZztcbiAgZW5kPzogc3RyaW5nO1xuICBzdGVwPzogc3RyaW5nO1xuICByZXN0cmljdFRvU3RlcD86IGJvb2xlYW47XG4gIHNsaWRlck9wdGlvbnM6IFNsaWRlck9wdGlvbnNJbnRlcmZhY2U7XG4gIGRpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG4gIGVzY2FwZUNoYXI/OiBzdHJpbmc7XG4gIGV4cHJlc3Npb24/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBmaWx0ZXJpZD86IGFueTtcbiAgZ2VvbWV0cnk/OiBvbEdlb21ldHJ5O1xuICBnZW9tZXRyeU5hbWU/OiBzdHJpbmc7XG4gIGlnb1NwYXRpYWxTZWxlY3Rvcj86IHN0cmluZztcbiAgaWdvU05SQz86IHN0cmluZztcbiAgbGV2ZWw/OiBudW1iZXI7XG4gIGxvd2VyQm91bmRhcnk/OiBudW1iZXI7XG4gIG1hdGNoQ2FzZT86IGJvb2xlYW47XG4gIG9wZXJhdG9yPzogc3RyaW5nO1xuICBwYXJlbnRMb2dpY2FsPzogc3RyaW5nO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XG4gIHNpbmdsZUNoYXI/OiBzdHJpbmc7XG4gIHNyc05hbWU/OiBzdHJpbmc7XG4gIHVwcGVyQm91bmRhcnk/OiBudW1iZXI7XG4gIHdpbGRDYXJkPzogc3RyaW5nO1xuICB3a3RfZ2VvbWV0cnk/OiBzdHJpbmc7XG4gIC8vIGlkPzogc3RyaW5nO1xuICAvLyBhYmJyZXY/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpZGVyT3B0aW9uc0ludGVyZmFjZSBleHRlbmRzIE9nY0ZpbHRlckR1cmluZ09wdGlvbnMge1xuICBpbnRlcnZhbD86IG51bWJlcjtcbiAgZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -685,8 +685,9 @@ export class OgcFilterWriter {
|
|
|
685
685
|
if (!value) {
|
|
686
686
|
return defaultValue;
|
|
687
687
|
}
|
|
688
|
-
else if (value
|
|
689
|
-
|
|
688
|
+
else if (value.toLowerCase().includes('now') ||
|
|
689
|
+
value.toLowerCase().includes('today')) {
|
|
690
|
+
return this.parseDateOperation(value);
|
|
690
691
|
}
|
|
691
692
|
else if (moment(value).isValid()) {
|
|
692
693
|
return value;
|
|
@@ -695,5 +696,47 @@ export class OgcFilterWriter {
|
|
|
695
696
|
return undefined;
|
|
696
697
|
}
|
|
697
698
|
}
|
|
699
|
+
/**
|
|
700
|
+
* this function to parse date with specific format
|
|
701
|
+
* exemple 'today + 1 days' or 'now + 1 years'
|
|
702
|
+
* @param value string date
|
|
703
|
+
* @returns date
|
|
704
|
+
*/
|
|
705
|
+
parseDateOperation(value) {
|
|
706
|
+
const operationSplitted = value.toLowerCase().split(' ');
|
|
707
|
+
const leftOperand = operationSplitted[0];
|
|
708
|
+
const operator = ['+', '-'].includes(operationSplitted[1])
|
|
709
|
+
? operationSplitted[1]
|
|
710
|
+
: undefined;
|
|
711
|
+
const rightOperand = /^[0-9]*$/.test(operationSplitted[2])
|
|
712
|
+
? operationSplitted[2]
|
|
713
|
+
: undefined;
|
|
714
|
+
const rightUnitOperand = (['years', 'months', 'weeks', 'days', 'hours', 'seconds'].includes(operationSplitted[3])
|
|
715
|
+
? operationSplitted[3]
|
|
716
|
+
: undefined);
|
|
717
|
+
if (!operator || !rightUnitOperand || !rightOperand) {
|
|
718
|
+
return leftOperand === 'now'
|
|
719
|
+
? moment().format()
|
|
720
|
+
: moment().endOf('day').format();
|
|
721
|
+
}
|
|
722
|
+
if (operator === '+') {
|
|
723
|
+
return leftOperand === 'now'
|
|
724
|
+
? moment().add(parseInt(rightOperand, 10), rightUnitOperand).format()
|
|
725
|
+
: moment()
|
|
726
|
+
.endOf('day')
|
|
727
|
+
.add(parseInt(rightOperand, 10), rightUnitOperand)
|
|
728
|
+
.format();
|
|
729
|
+
}
|
|
730
|
+
else {
|
|
731
|
+
return leftOperand === 'now'
|
|
732
|
+
? moment()
|
|
733
|
+
.subtract(parseInt(rightOperand, 10), rightUnitOperand)
|
|
734
|
+
.format()
|
|
735
|
+
: moment()
|
|
736
|
+
.endOf('day')
|
|
737
|
+
.subtract(parseInt(rightOperand, 10), rightUnitOperand)
|
|
738
|
+
.format();
|
|
739
|
+
}
|
|
740
|
+
}
|
|
698
741
|
}
|
|
699
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdoRCxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGNBQWMsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELFNBQVMsR0FBRztRQUNqQixDQUFDLGlCQUFpQixDQUFDLGlCQUEyQixDQUFDLEVBQUU7WUFDL0MsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxjQUF3QixDQUFDLEVBQUU7WUFDNUMsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLHFCQUErQixDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3QyxDQUFDLEVBQUU7WUFDNUQsT0FBTyxFQUFFLEtB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TUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0VXRpbHMsIHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBFeHRlbnQgfSBmcm9tICdvbC9leHRlbnQnO1xyXG5pbXBvcnQgb2xGb3JtYXRXRlMsIHsgV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyB9IGZyb20gJ29sL2Zvcm1hdC9XRlMnO1xyXG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XHJcbmltcG9ydCAqIGFzIG9sZmlsdGVyIGZyb20gJ29sL2Zvcm1hdC9maWx0ZXInO1xyXG5pbXBvcnQgb2xHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xyXG5cclxuaW1wb3J0IHsgZGVmYXVsdCBhcyBtb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgT2djRmlsdGVyT3BlcmF0b3IsIE9nY0ZpbHRlck9wZXJhdG9yVHlwZSB9IGZyb20gJy4vb2djLWZpbHRlci5lbnVtJztcclxuaW1wb3J0IHtcclxuICBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucyxcclxuICBJZ29PZ2NGaWx0ZXJPYmplY3QsXHJcbiAgSWdvT2djU2VsZWN0b3IsXHJcbiAgT2djRmlsdGVyLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcclxuICBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxyXG4gIE9nY1NlbGVjdG9yQnVuZGxlLFxyXG4gIFNlbGVjdG9yR3JvdXBcclxufSBmcm9tICcuL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xyXG4gIHByaXZhdGUgZmlsdGVyU2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcGVyYXRvcnMgPSB7XHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgIH0sXHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgIH0sXHJcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UgYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydzdHJpbmcnXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2VlbiBhcyBzdHJpbmddOiB7XHJcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXHJcbiAgICB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZyBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcclxuICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHMgYXMgc3RyaW5nXToge1xyXG4gICAgICBzcGF0aWFsOiB0cnVlLFxyXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgfSxcclxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4gYXMgc3RyaW5nXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxyXG4gIH07XHJcblxyXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zOiBPZ2NGaWx0ZXJzT3B0aW9ucyxcclxuICAgIGZpZWxkTmFtZUdlb21ldHJ5OiBzdHJpbmcsXHJcbiAgICBzcmNUeXBlPzogc3RyaW5nXHJcbiAgKTogT2djRmlsdGVyc09wdGlvbnMge1xyXG4gICAgbGV0IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSB0cnVlOyAvLyBkZWZhdWx0IHZhbHVlcyBmb3Igd2ZzLlxyXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcclxuICAgICAgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zID0gb2djRmlsdGVyc09wdGlvbnMgfHwge307XHJcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lbmFibGVkID1cclxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlXHJcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lbmFibGVkO1xyXG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxyXG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZSA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICAgPyBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlXHJcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmdlb21ldHJ5TmFtZSA9IGZpZWxkTmFtZUdlb21ldHJ5O1xyXG5cclxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgJiZcclxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XHJcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMuY2hlY2tib3hlcyB8fFxyXG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnJhZGlvQnV0dG9ucyB8fFxyXG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxyXG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmF1dG9jb21wbGV0ZSlcclxuICAgICkge1xyXG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZ2NGaWx0ZXJzT3B0aW9ucztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBidWlsZEZpbHRlcihcclxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXHJcbiAgICBleHRlbnQ/OiBFeHRlbnQsXHJcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uLFxyXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGxldCBvdXJCYm94RmlsdGVyO1xyXG4gICAgbGV0IGVuYWJsZUJib3g6IGJvb2xlYW47XHJcbiAgICBpZiAoL2ludGVyc2VjdHN8Y29udGFpbnN8d2l0aGluL2dpLnRlc3QoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpKSB7XHJcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVuYWJsZUJib3ggPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpbHRlcnMpIHtcclxuICAgICAgZmllbGROYW1lR2VvbWV0cnkgPVxyXG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgID8gKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWVcclxuICAgICAgICAgIDogZmllbGROYW1lR2VvbWV0cnk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXh0ZW50ICYmIGZpbHRlcnMpIHtcclxuICAgICAgb3VyQmJveEZpbHRlciA9IG9sZmlsdGVyLmJib3goZmllbGROYW1lR2VvbWV0cnksIGV4dGVudCwgcHJvai5nZXRDb2RlKCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IGZpbHRlckFzc2VtYmx5OiBPZ2NGaWx0ZXI7XHJcbiAgICBpZiAoZmlsdGVycykge1xyXG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgcHJvalxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZXh0ZW50ICYmIGVuYWJsZUJib3gpIHtcclxuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcclxuICAgICAgICAgIG91ckJib3hGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsdGVyQXNzZW1ibHkgPSB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdiYm94PScgKyBleHRlbnQuam9pbignLCcpICsgJywnICsgcHJvai5nZXRDb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgd2ZzT3B0aW9uczogV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyA9IHtcclxuICAgICAgc3JzTmFtZTogJycsXHJcbiAgICAgIGZlYXR1cmVOUzogJycsXHJcbiAgICAgIGZlYXR1cmVQcmVmaXg6ICcnLFxyXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyQXNzZW1ibHksXHJcbiAgICAgIG91dHB1dEZvcm1hdDogJycsXHJcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHF1ZXJ5KTtcclxuICAgIGNvbnN0IHJlZ2V4cDEgPSAvdHlwZW5hbWVzICo9fHR5cGVuYW1lICo9XFxcImZlYXR1cmVUeXBlc1xcXCIgKj4vZ2k7XHJcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XHJcblxyXG4gICAgcmV0dXJuICdmaWx0ZXI9JyArIHN0ci5zcGxpdChyZWdleHAxKVsxXS5zcGxpdChyZWdleHAyKVswXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVuZGxlRmlsdGVyKFxyXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKSB7XHJcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgY29uc3QgbG9naWNhbEFycmF5ID0gW107XHJcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGxvZ2ljYWxBcnJheTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxyXG4gICAgICAgICAgICBsb2dpY2FsQXJyYXk6IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlck9iamVjdC5maWx0ZXJzLCBvcHRpb25zKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcclxuICAgICAgICAgIGZpbHRlck9iamVjdCBhcyBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucyxcclxuICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcclxuICAgIGZpbHRlck9wdGlvbnMsXHJcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbiAgKTogT2djRmlsdGVyIHtcclxuICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyT3B0aW9ucy5vcGVyYXRvcjtcclxuICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IGZpbHRlck9wdGlvbnMubG9naWNhbEFycmF5O1xyXG5cclxuICAgIGNvbnN0IHdmc1Byb3BlcnR5TmFtZSA9IGZpbHRlck9wdGlvbnMucHJvcGVydHlOYW1lO1xyXG4gICAgY29uc3Qgd2ZzUGF0dGVybiA9IGZpbHRlck9wdGlvbnMucGF0dGVybjtcclxuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXHJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcclxuICAgICAgOiB0cnVlO1xyXG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcclxuICAgIGNvbnN0IHdmc1NpbmdsZUNoYXIgPSBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcclxuICAgICAgOiAnLic7XHJcbiAgICBjb25zdCB3ZnNFc2NhcGVDaGFyID0gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXHJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXHJcbiAgICAgIDogJyEnO1xyXG5cclxuICAgIGNvbnN0IHdmc0xvd2VyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLmxvd2VyQm91bmRhcnk7XHJcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xyXG5cclxuICAgIGNvbnN0IHdmc0dlb21ldHJ5TmFtZSA9IGZpbHRlck9wdGlvbnMuZ2VvbWV0cnlOYW1lO1xyXG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XHJcbiAgICBjb25zdCB3ZnNXa3RHZW9tZXRyeSA9IGZpbHRlck9wdGlvbnMud2t0X2dlb21ldHJ5O1xyXG4gICAgY29uc3Qgd2ZzU3JzTmFtZSA9IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxyXG4gICAgICA6ICdFUFNHOjM4NTcnO1xyXG5cclxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXHJcbiAgICAgIGZpbHRlck9wdGlvbnMuYmVnaW4sXHJcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1pbkRhdGUgOiB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBjb25zdCB3ZnNFbmQgPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcclxuICAgICAgZmlsdGVyT3B0aW9ucy5lbmQsXHJcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcclxuXHJcbiAgICBsZXQgZ2VvbWV0cnk6IG9sR2VvbWV0cnk7XHJcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcclxuICAgICAgY29uc3Qgd2t0ID0gbmV3IG9sRm9ybWF0V0tUKCk7XHJcbiAgICAgIGdlb21ldHJ5ID0gd2t0LnJlYWRHZW9tZXRyeSh3ZnNXa3RHZW9tZXRyeSwge1xyXG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxyXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lIHx8ICdFUFNHOjM4NTcnXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAob3BlcmF0b3IudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmJveCh3ZnNHZW9tZXRyeU5hbWUsIHdmc0V4dGVudCwgd2ZzU3JzTmFtZSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcclxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcclxuICAgICAgICAgIHdmc0xvd2VyQm91bmRhcnkgfHwgMWU0MCAqIC0xLFxyXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeSB8fCAxZTQwXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Db250YWlucy50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5jb250YWlucyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZHVyaW5nKHdmc1Byb3BlcnR5TmFtZSwgd2ZzQmVnaW4sIHdmc0VuZCk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24sIHdmc01hdGNoQ2FzZSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0cy50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pbnRlcnNlY3RzKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmlzTnVsbCh3ZnNQcm9wZXJ0eU5hbWUpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbi50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbih3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxyXG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMaWtlLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxpa2UoXHJcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICB3ZnNQYXR0ZXJuXHJcbiAgICAgICAgICAgID8gd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhcilcclxuICAgICAgICAgICAgOiB3ZnNXaWxkQ2FyZCxcclxuICAgICAgICAgIHdmc1dpbGRDYXJkLFxyXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcclxuICAgICAgICAgIHdmc0VzY2FwZUNoYXIsXHJcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdEVxdWFsVG8oXHJcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICB3ZnNFeHByZXNzaW9uLFxyXG4gICAgICAgICAgd2ZzTWF0Y2hDYXNlXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4udG9Mb3dlckNhc2UoKTpcclxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIud2l0aGluKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xyXG4gICAgICAvLyBMT0dJQ0FMXHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQW5kLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmFuZC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm9yLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuTm90LnRvTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxyXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXHJcbiAgICBnZW9tZXRyeU5hbWUsXHJcbiAgICBsb2dpY2FsID0gJycsXHJcbiAgICBsZXZlbCA9IC0xXHJcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcclxuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxyXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcclxuICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxyXG4gICAgICAgICAgICBsb2dpY2FsLFxyXG4gICAgICAgICAgICBsZXZlbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XHJcbiAgICAgICAgbGV2ZWwgPSBsZXZlbCArIDE7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXHJcbiAgICAgICAgICB0aGlzLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxyXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcclxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxyXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QubG9naWNhbCxcclxuICAgICAgICAgICAgbGV2ZWxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcclxuICAgICAgICAgIHRoaXMuYWRkSW50ZXJmYWNlRmlsdGVyKGZpbHRlck9iamVjdCwgZ2VvbWV0cnlOYW1lLCBsZXZlbCwgbG9naWNhbClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXF1ZW5jZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wdXRlQWxsb3dlZE9wZXJhdG9ycyhcclxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcclxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZyxcclxuICAgIGRlZmF1bHRPcGVyYXRvcnNUeXBlPzogT2djRmlsdGVyT3BlcmF0b3JUeXBlXHJcbiAgKSB7XHJcbiAgICBsZXQgZWZmZWN0aXZlT3BlcmF0b3JzOiB7fSA9IHt9O1xyXG4gICAgbGV0IGFsbG93ZWRPcGVyYXRvcnM7XHJcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xyXG4gICAgbGV0IGluY2x1ZGVDb250YWluczogYm9vbGVhbjtcclxuXHJcbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xyXG4gICAgICBjb25zdCBzcmNGaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlOYW1lKTtcclxuICAgICAgYWxsb3dlZE9wZXJhdG9ycyA9XHJcbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcclxuICAgICAgICAgID8gc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcclxuICAgICAgICAgIDogZGVmYXVsdE9wZXJhdG9yc1R5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkcykge1xyXG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmICghZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPSBmaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcclxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxyXG4gICAgICAgICAgICBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuU3BhdGlhbC50b0xvd2VyQ2FzZSgpIHx8XHJcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cclxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT0gT2djRmlsdGVyT3BlcmF0b3JUeXBlLkFsbC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaW5jbHVkZUNvbnRhaW5zID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFsbG93ZWRPcGVyYXRvcnMgPSBhbGxvd2VkT3BlcmF0b3JzXHJcbiAgICAgID8gYWxsb3dlZE9wZXJhdG9yc1xyXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XHJcblxyXG4gICAgc3dpdGNoIChhbGxvd2VkT3BlcmF0b3JzLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHRoaXMub3BlcmF0b3JzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcclxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWM6XHJcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlRpbWU6XHJcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY051bWVyaWNPcGVyYXRvcjpcclxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbl06IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5dOiB7XHJcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcclxuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xyXG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcclxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcclxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IpIHtcclxuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XHJcbiAgICAgICAgc3BhdGlhbDogdHJ1ZSxcclxuICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxyXG4gICAgICB9O1xyXG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuV2l0aGluID0geyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9O1xyXG4gICAgICBpZiAoaW5jbHVkZUNvbnRhaW5zKSB7XHJcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xyXG4gICAgICAgICAgc3BhdGlhbDogdHJ1ZSxcclxuICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlZmZlY3RpdmVPcGVyYXRvcnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkSW50ZXJmYWNlRmlsdGVyKFxyXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0PyxcclxuICAgIGdlb21ldHJ5TmFtZT8sXHJcbiAgICBsZXZlbCA9IDAsXHJcbiAgICBwYXJlbnRMb2dpY2FsID0gJ09yJ1xyXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xyXG4gICAgaWYgKCFpZ29PZ2NGaWx0ZXJPYmplY3QpIHtcclxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0ID0geyBvcGVyYXRvcjogJ1Byb3BlcnR5SXNFcXVhbFRvJyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZiA9IHtcclxuICAgICAgcHJvcGVydHlOYW1lOiAnJyxcclxuICAgICAgb3BlcmF0b3I6ICcnLFxyXG4gICAgICBhY3RpdmU6ICcnLFxyXG4gICAgICBmaWx0ZXJpZDogdXVpZCgpLFxyXG4gICAgICBzdGVwOiAnJyxcclxuICAgICAgYmVnaW46ICcnLFxyXG4gICAgICBlbmQ6ICcnLFxyXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcclxuICAgICAgbG93ZXJCb3VuZGFyeTogJycsXHJcbiAgICAgIHVwcGVyQm91bmRhcnk6ICcnLFxyXG4gICAgICBleHByZXNzaW9uOiAnJyxcclxuICAgICAgcGF0dGVybjogJycsXHJcbiAgICAgIHdpbGRDYXJkOiAnKicsXHJcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcclxuICAgICAgZXNjYXBlQ2hhcjogJyEnLFxyXG4gICAgICBtYXRjaENhc2U6IHRydWUsXHJcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXHJcbiAgICAgIGlnb1NOUkM6ICcnLFxyXG4gICAgICBnZW9tZXRyeU5hbWU6ICcnLFxyXG4gICAgICBnZW9tZXRyeTogJycsXHJcbiAgICAgIHdrdF9nZW9tZXRyeTogJycsXHJcbiAgICAgIGV4dGVudDogJycsXHJcbiAgICAgIHNyc05hbWU6ICcnLFxyXG4gICAgICBwYXJlbnRMb2dpY2FsOiAnJyxcclxuICAgICAgbGV2ZWw6IDBcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIGYsXHJcbiAgICAgIHtcclxuICAgICAgICBwYXJlbnRMb2dpY2FsLFxyXG4gICAgICAgIGxldmVsLFxyXG4gICAgICAgIGdlb21ldHJ5TmFtZVxyXG4gICAgICB9LFxyXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcclxuICAgIGZpbHRlck9iamVjdDogYW55LFxyXG4gICAgZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICBwcm9qOiBvbFByb2plY3Rpb24sXHJcbiAgICBhY3RpdmUgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgZmlsdGVyQXJyYXkgPSBbXTtcclxuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGZpbHRlckFycmF5LnB1c2goXHJcbiAgICAgICAgICB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXHJcbiAgICAgICAgICAgIGVsZW1lbnQsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxyXG4gICAgICAgICAgICBwcm9qLFxyXG4gICAgICAgICAgICBhY3RpdmVcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZpbHRlckFycmF5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICB7fSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbG9naWNhbDogZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcclxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcclxuICAgICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgICAgICBwcm9qLFxyXG4gICAgICAgICAgICAgIGFjdGl2ZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJQcm9wZXJ0aWVzKFxyXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXHJcbiAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgICAgICAgIHByb2osXHJcbiAgICAgICAgICBhY3RpdmVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXHJcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXHJcbiAgICBmaWVsZE5hbWVHZW9tZXRyeSxcclxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcclxuICAgIGFjdGl2ZSA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxyXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5maWx0ZXJpZFxyXG4gICAgICA6IHV1aWQoKTtcclxuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcclxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuYWN0aXZlXHJcbiAgICAgIDogYWN0aXZlO1xyXG5cclxuICAgIGNvbnN0IHNyc05hbWUgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ3Nyc05hbWUnKVxyXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5zcnNOYW1lXHJcbiAgICAgIDogcHJvalxyXG4gICAgICA/IHByb2ouZ2V0Q29kZSgpXHJcbiAgICAgIDogJ0VQU0c6Mzg1Nyc7XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHt9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZmlsdGVyaWQsXHJcbiAgICAgICAgYWN0aXZlOiBzdGF0dXMsXHJcbiAgICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnZml4ZWRFeHRlbnQnLFxyXG4gICAgICAgIHNyc05hbWVcclxuICAgICAgfSxcclxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0LFxyXG4gICAgICB7IGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnkgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWJ1aWx0SWdvT2djRmlsdGVyT2JqZWN0RnJvbVNlcXVlbmNlKFxyXG4gICAgc2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXVxyXG4gICk6IElnb09nY0ZpbHRlck9iamVjdCB7XHJcbiAgICBpZiAoc2VxdWVuY2UgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID49IDEpIHtcclxuICAgICAgICBsZXQgbGFzdFBhcmVudExvZ2ljYWwgPSBzZXF1ZW5jZVswXS5wYXJlbnRMb2dpY2FsO1xyXG4gICAgICAgIGxldCBuZXh0RWxlbWVudDogYW55O1xyXG4gICAgICAgIGxldCBsb2dpY2FsQXJyYXkgPSBbXTtcclxuICAgICAgICBsZXQgbGFzdFByb2Nlc3NlZEZpbHRlcjtcclxuICAgICAgICBzZXF1ZW5jZS5mb3JFYWNoKCh1aUZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVpRmlsdGVyKTtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2VxdWVuY2UuaW5kZXhPZih1aUZpbHRlcik7XHJcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBzZXF1ZW5jZVtpbmRleCArIDFdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBlbGVtZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuYWN0aXZlO1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuZmlsdGVyaWQ7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5wYXJlbnRMb2dpY2FsO1xyXG4gICAgICAgICAgbG9naWNhbEFycmF5LnB1c2goZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gZWxlbWVudDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFBhcmVudExvZ2ljYWwgIT09IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWwpIHtcclxuICAgICAgICAgICAgaWYgKGxvZ2ljYWxBcnJheS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAgICdZb3UgbXVzdCBzZXQgYXQgJyArXHJcbiAgICAgICAgICAgICAgICAgICdsZWFzdCB0d28gb3BlcmF0b3IgaW4gYSBsb2dpY2FsICgnICtcclxuICAgICAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgK1xyXG4gICAgICAgICAgICAgICAgICAnKSdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgICB7IGxvZ2ljYWw6IGxhc3RQYXJlbnRMb2dpY2FsLCBmaWx0ZXJzOiBsb2dpY2FsQXJyYXkgfVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbG9naWNhbEFycmF5ID0gW2xhc3RQcm9jZXNzZWRGaWx0ZXJdO1xyXG4gICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsID0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnM6IElnb09nY1NlbGVjdG9yKTogSWdvT2djU2VsZWN0b3Ige1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RvcnMuZ3JvdXBzLmV2ZXJ5KChncm91cCkgPT4gZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgIT09IHVuZGVmaW5lZClcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gc2VsZWN0b3JzO1xyXG4gICAgfVxyXG4gICAgbGV0IHNlbGVjdG9yOiBJZ29PZ2NTZWxlY3RvcjtcclxuICAgIGlmIChzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XHJcbiAgICAgIGlmICghc2VsZWN0b3JzLmJ1bmRsZXMuZXZlcnkoKGJ1bmRsZSkgPT4gYnVuZGxlLmlkICE9PSB1bmRlZmluZWQpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBzZXQgYW4gaWQgZm9yIGVhY2ggb2YgeW91ciBidW5kbGVzJyk7XHJcbiAgICAgIH1cclxuICAgICAgc2VsZWN0b3IgPSBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3RvcnMpO1xyXG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAgICAgICBncm91cC50aXRsZSA9IGdyb3VwLnRpdGxlID8gZ3JvdXAudGl0bGUgOiBncm91cC5uYW1lO1xyXG4gICAgICAgIGdyb3VwLmVuYWJsZWQgPSBncm91cC5lbmFibGVkID8gZ3JvdXAuZW5hYmxlZCA6IGZhbHNlO1xyXG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXHJcbiAgICAgICAgICBzZWxlY3Rvci5idW5kbGVzLmZpbHRlcigoYikgPT4gZ3JvdXAuaWRzLmluY2x1ZGVzKGIuaWQpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICghc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xyXG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XHJcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogJ2dyb3VwMScsXHJcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcclxuICAgICAgICAgIGNvbXB1dGVkU2VsZWN0b3JzOiBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3Rvci5idW5kbGVzKVxyXG4gICAgICAgIH0gYXMgU2VsZWN0b3JHcm91cFxyXG4gICAgICBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VsZWN0b3IgPSB7XHJcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcclxuICAgICAgICBncm91cHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxyXG4gICAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcclxuICAgICAgICAgICAgY29tcHV0ZWRTZWxlY3RvcnM6IE9iamVjdFV0aWxzLmNvcHlEZWVwKFxyXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xyXG4gICAgICAgICAgICApIGFzIE9nY1NlbGVjdG9yQnVuZGxlW11cclxuICAgICAgICAgIH0gYXMgU2VsZWN0b3JHcm91cFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgc2VsZWN0b3JUeXBlOiBzZWxlY3Rvci5zZWxlY3RvclR5cGVcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmICghc2VsZWN0b3IuZ3JvdXBzLmZpbmQoKHNlbGVjdG9yR3JvdXApID0+IHNlbGVjdG9yR3JvdXAuZW5hYmxlZCkpIHtcclxuICAgICAgc2VsZWN0b3IuZ3JvdXBzWzBdLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICBvcHRpb25zOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxyXG4gICAgZXh0ZW50PzogRXh0ZW50LFxyXG4gICAgcHJvaj86IG9sUHJvamVjdGlvblxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBvZ2NGaWx0ZXJzID0gb3B0aW9ucy5vZ2NGaWx0ZXJzO1xyXG4gICAgaWYgKCFvZ2NGaWx0ZXJzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcclxuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gJyc7XHJcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSAnJztcclxuICAgIGlmIChcclxuICAgICAgb2djRmlsdGVycy5lbmFibGVkICYmXHJcbiAgICAgIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8XHJcbiAgICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzIHx8XHJcbiAgICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgfHxcclxuICAgICAgICBvZ2NGaWx0ZXJzLnNlbGVjdCB8fFxyXG4gICAgICAgIG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBzZWxlY3RvcnM7XHJcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zKSB7XHJcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5wdXNoQnV0dG9ucztcclxuICAgICAgICBjb25zdCBwdXNoQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBwdXNoQ29uZGl0aW9ucykge1xyXG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMpIHtcclxuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXM7XHJcbiAgICAgICAgY29uc3QgY2hlY2tib3hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcclxuICAgICAgICAgIG9nY0ZpbHRlcnMsXHJcbiAgICAgICAgICBzZWxlY3RvcnNcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNoZWNrYm94Q29uZGl0aW9ucykge1xyXG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xyXG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcclxuICAgICAgICBjb25zdCByYWRpb0NvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxyXG4gICAgICAgICAgb2djRmlsdGVycyxcclxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHJhZGlvQ29uZGl0aW9ucykge1xyXG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnNlbGVjdCkge1xyXG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuc2VsZWN0O1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcclxuICAgICAgICAgIG9nY0ZpbHRlcnMsXHJcbiAgICAgICAgICBzZWxlY3RvcnNDb3JyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XHJcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlKSB7XHJcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5hdXRvY29tcGxldGU7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIoXHJcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxyXG4gICAgICAgICAgc2VsZWN0b3JzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XHJcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb25kaXRpb25zLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9IHRoaXMuYnVpbGRGaWx0ZXIoXHJcbiAgICAgICAgICBjb25kaXRpb25zLmxlbmd0aCA9PT0gMVxyXG4gICAgICAgICAgICA/IGNvbmRpdGlvbnNbMF1cclxuICAgICAgICAgICAgOiB7IGxvZ2ljYWw6ICdBbmQnLCBmaWx0ZXJzOiBjb25kaXRpb25zIH0sXHJcbiAgICAgICAgICBleHRlbnQsXHJcbiAgICAgICAgICBwcm9qLFxyXG4gICAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWVcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIG9nY0ZpbHRlcnMuZmlsdGVycykge1xyXG4gICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSA9IG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lIHx8IGZpZWxkTmFtZUdlb21ldHJ5O1xyXG4gICAgICBjb25zdCBpZ29GaWx0ZXJzID0gb2djRmlsdGVycy5maWx0ZXJzO1xyXG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9IHRoaXMuYnVpbGRGaWx0ZXIoXHJcbiAgICAgICAgaWdvRmlsdGVycyxcclxuICAgICAgICBleHRlbnQsXHJcbiAgICAgICAgcHJvaixcclxuICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSxcclxuICAgICAgICBvcHRpb25zXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gb2djRmlsdGVycy5hZHZhbmNlZE9nY0ZpbHRlcnNcclxuICAgICAgPyBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVyc1xyXG4gICAgICA6IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3I7XHJcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd21zJykge1xyXG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxyXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxyXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLkxBWUVSU1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcclxuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcclxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZyxcclxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5mZWF0dXJlVHlwZXNcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmlsdGVyUXVlcnlTdHJpbmc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpIHtcclxuICAgIHNlbGVjdG9ycy5idW5kbGVzLmZvckVhY2goKGJ1bmRsZSkgPT4ge1xyXG4gICAgICBpZiAoIWJ1bmRsZS5tdWx0aXBsZSAmJiBidW5kbGUuc2VsZWN0b3JzKSB7XHJcbiAgICAgICAgY29uc3QgZW5hYmxlZHMgPSBidW5kbGUuc2VsZWN0b3JzLnJlZHVjZShcclxuICAgICAgICAgIChsaXN0LCBmaWx0ZXIsIGluZGV4KSA9PlxyXG4gICAgICAgICAgICBmaWx0ZXIuZW5hYmxlZCA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsXHJcbiAgICAgICAgICBbXVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGVuYWJsZWRzLnNwbGljZSgwLCAxKTtcclxuICAgICAgICAgIGVuYWJsZWRzLmZvckVhY2goKGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5zZWxlY3RvcnNbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0b3JzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCBzZWxlY3RvcnMpIHtcclxuICAgIHNlbGVjdG9ycyA9IHRoaXMuY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9ycyk7XHJcbiAgICBjb25zdCBzZWxlY3RvckJ1bmRsZSA9IHNlbGVjdG9ycy5ncm91cHMuZmluZChcclxuICAgICAgKGcpID0+IGcuZW5hYmxlZFxyXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcclxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcclxuICAgIHNlbGVjdG9yQnVuZGxlLm1hcCgoYnVuZGxlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xyXG4gICAgICBjb25zdCBzZWxlY3RvcnNUeXBlID0gYnVuZGxlLnNlbGVjdG9ycyBhcyBhbnk7XHJcbiAgICAgIGlmICghc2VsZWN0b3JzVHlwZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBzZWxlY3RvcnNUeXBlXHJcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXHJcbiAgICAgICAgLmZvckVhY2goKGVuYWJsZWRTZWxlY3RvcikgPT5cclxuICAgICAgICAgIGJ1bmRsZUNvbmRpdGlvbi5wdXNoKGVuYWJsZWRTZWxlY3Rvci5maWx0ZXJzKVxyXG4gICAgICAgICk7XHJcbiAgICAgIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGJ1bmRsZUNvbmRpdGlvblswXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBjb25kaXRpb25zLnB1c2goe1xyXG4gICAgICAgICAgbG9naWNhbDogYnVuZGxlLmxvZ2ljYWwsXHJcbiAgICAgICAgICBmaWx0ZXJzOiBidW5kbGVDb25kaXRpb25cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdwdXNoQnV0dG9uJykge1xyXG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zID0gc2VsZWN0b3JzO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnY2hlY2tib3gnKSB7XHJcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcyA9IHNlbGVjdG9ycztcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJykge1xyXG4gICAgICBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyA9IHNlbGVjdG9ycztcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCcpIHtcclxuICAgICAgb2djRmlsdGVycy5zZWxlY3QgPSBzZWxlY3RvcnM7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XHJcbiAgICAgIG9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlID0gc2VsZWN0b3JzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmRpdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxyXG4gICAgcHJvY2Vzc2VkRmlsdGVyOiBzdHJpbmcsXHJcbiAgICBsYXllcnNPclR5cGVuYW1lczogc3RyaW5nXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICghcHJvY2Vzc2VkRmlsdGVyKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBsZXQgYXBwbGllZEZpbHRlciA9ICcnO1xyXG4gICAgaWYgKHByb2Nlc3NlZEZpbHRlci5sZW5ndGggPT09IDAgJiYgbGF5ZXJzT3JUeXBlbmFtZXMuaW5kZXhPZignLCcpID09PSAtMSkge1xyXG4gICAgICBhcHBsaWVkRmlsdGVyID0gcHJvY2Vzc2VkRmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGF5ZXJzT3JUeXBlbmFtZXMuc3BsaXQoJywnKS5mb3JFYWNoKChsYXllck9yVHlwZW5hbWVzKSA9PiB7XHJcbiAgICAgICAgYXBwbGllZEZpbHRlciA9IGAke2FwcGxpZWRGaWx0ZXJ9KCR7cHJvY2Vzc2VkRmlsdGVyLnJlcGxhY2UoXHJcbiAgICAgICAgICAnZmlsdGVyPScsXHJcbiAgICAgICAgICAnJ1xyXG4gICAgICAgICl9KWA7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYXBwbGllZEZpbHRlciA9IGFwcGxpZWRGaWx0ZXIucmVwbGFjZSgvXFwoXFwpL2csICcnKTtcclxuICAgIGNvbnN0IGZpbHRlclZhbHVlID1cclxuICAgICAgYXBwbGllZEZpbHRlci5sZW5ndGggPiAwXHJcbiAgICAgICAgPyBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoJ2ZpbHRlcj0nLCAnJylcclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXJzZUZpbHRlck9wdGlvbkRhdGUodmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICd0b2RheScpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSBpZiAobW9tZW50KHZhbHVlKS5pc1ZhbGlkKCkpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
742
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdoRCxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE9BQU8sRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBYTdFLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGNBQWMsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELFNBQVMsR0FBRztRQUNqQixDQUFDLGlCQUFpQixDQUFDLGlCQUEyQixDQUFDLEVBQUU7WUFDL0MsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsRUFBRTtTQUNsQjtRQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO1FBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxjQUF3QixDQUFDLEVBQUU7WUFDNUMsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLHFCQUErQixDQUFDLEVBQUU7WUFDbkQsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7U0FDMUI7UUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3QyxDQUFDLEVBQUU7WUFDNUQsT0FBTyxFQUFFLEtB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QyxNQUFNLEVBQUU7Z0JBQ25CLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sV0FBVyxLQUFLLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDckUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtxQkFDTCxLQUFLLENBQUMsS0FBSyxDQUFDO3FCQUNaLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO3FCQUNqRCxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sV0FBVyxLQUFLLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLEVBQUU7cUJBQ0wsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7cUJBQ3RELE1BQU0sRUFBRTtnQkFDYixDQUFDLENBQUMsTUFBTSxFQUFFO3FCQUNMLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ1osUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7cUJBQ3RELE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRXh0ZW50IH0gZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xGb3JtYXRXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIG1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciwgT2djRmlsdGVyT3BlcmF0b3JUeXBlIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgSWdvT2djU2VsZWN0b3IsXG4gIE9nY0ZpbHRlcixcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJlxuICAgICAgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8XG4gICAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCB8fFxuICAgICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogRXh0ZW50LFxuICAgIHByb2o/OiBvbFByb2plY3Rpb24sXG4gICAgZmllbGROYW1lR2VvbWV0cnk/OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBvdXJCYm94RmlsdGVyO1xuICAgIGxldCBlbmFibGVCYm94OiBib29sZWFuO1xuICAgIGlmICgvaW50ZXJzZWN0c3xjb250YWluc3x3aXRoaW4vZ2kudGVzdChKU09OLnN0cmluZ2lmeShmaWx0ZXJzKSkpIHtcbiAgICAgIGVuYWJsZUJib3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5hYmxlQmJveCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWVsZE5hbWVHZW9tZXRyeSA9XG4gICAgICAgIChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChmaWx0ZXJzIGFzIGFueSkuZ2VvbWV0cnlOYW1lXG4gICAgICAgICAgOiBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICB9XG4gICAgaWYgKGV4dGVudCAmJiBmaWx0ZXJzKSB7XG4gICAgICBvdXJCYm94RmlsdGVyID0gb2xmaWx0ZXIuYmJveChmaWVsZE5hbWVHZW9tZXRyeSwgZXh0ZW50LCBwcm9qLmdldENvZGUoKSk7XG4gICAgfVxuICAgIGxldCBmaWx0ZXJBc3NlbWJseTogT2djRmlsdGVyO1xuICAgIGlmIChmaWx0ZXJzKSB7XG4gICAgICBmaWx0ZXJzID0gdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgcHJvalxuICAgICAgKTtcbiAgICAgIGlmIChleHRlbnQgJiYgZW5hYmxlQmJveCkge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IG9sZmlsdGVyLmFuZChcbiAgICAgICAgICBvdXJCYm94RmlsdGVyLFxuICAgICAgICAgIHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJBc3NlbWJseSA9IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlcnMsIG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2Jib3g9JyArIGV4dGVudC5qb2luKCcsJykgKyAnLCcgKyBwcm9qLmdldENvZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCB3ZnNPcHRpb25zOiBXcml0ZUdldEZlYXR1cmVPcHRpb25zID0ge1xuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBmZWF0dXJlTlM6ICcnLFxuICAgICAgZmVhdHVyZVByZWZpeDogJycsXG4gICAgICBmZWF0dXJlVHlwZXM6IFsnZmVhdHVyZVR5cGVzJ10sXG4gICAgICBmaWx0ZXI6IGZpbHRlckFzc2VtYmx5LFxuICAgICAgb3V0cHV0Rm9ybWF0OiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnlcbiAgICB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgb2xGb3JtYXRXRlMoKS53cml0ZUdldEZlYXR1cmUod2ZzT3B0aW9ucyk7XG4gICAgY29uc3Qgc3RyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhxdWVyeSk7XG4gICAgY29uc3QgcmVnZXhwMSA9IC90eXBlbmFtZXMgKj18dHlwZW5hbWUgKj1cXFwiZmVhdHVyZVR5cGVzXFxcIiAqPi9naTtcbiAgICBjb25zdCByZWdleHAyID0gLzxcXC9RdWVyeT48XFwvR2V0RmVhdHVyZT4vZ2k7XG5cbiAgICByZXR1cm4gJ2ZpbHRlcj0nICsgc3RyLnNwbGl0KHJlZ2V4cDEpWzFdLnNwbGl0KHJlZ2V4cDIpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBidW5kbGVGaWx0ZXIoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgbG9naWNhbEFycmF5LnB1c2godGhpcy5idW5kbGVGaWx0ZXIoZWxlbWVudCwgb3B0aW9ucykpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbG9naWNhbEFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9wZXJhdG9yOiBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxvZ2ljYWxBcnJheTogdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVyT2JqZWN0LmZpbHRlcnMsIG9wdGlvbnMpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnb3BlcmF0b3InKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZpbHRlcihcbiAgICBmaWx0ZXJPcHRpb25zLFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogT2djRmlsdGVyIHtcbiAgICBjb25zdCBvcGVyYXRvciA9IGZpbHRlck9wdGlvbnMub3BlcmF0b3I7XG4gICAgY29uc3QgbG9naWNhbEFycmF5ID0gZmlsdGVyT3B0aW9ucy5sb2dpY2FsQXJyYXk7XG5cbiAgICBjb25zdCB3ZnNQcm9wZXJ0eU5hbWUgPSBmaWx0ZXJPcHRpb25zLnByb3BlcnR5TmFtZTtcbiAgICBjb25zdCB3ZnNQYXR0ZXJuID0gZmlsdGVyT3B0aW9ucy5wYXR0ZXJuO1xuICAgIGNvbnN0IHdmc01hdGNoQ2FzZSA9IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA/IGZpbHRlck9wdGlvbnMubWF0Y2hDYXNlXG4gICAgICA6IHRydWU7XG4gICAgY29uc3Qgd2ZzV2lsZENhcmQgPSBmaWx0ZXJPcHRpb25zLndpbGRDYXJkID8gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA6ICcqJztcbiAgICBjb25zdCB3ZnNTaW5nbGVDaGFyID0gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc2luZ2xlQ2hhclxuICAgICAgOiAnLic7XG4gICAgY29uc3Qgd2ZzRXNjYXBlQ2hhciA9IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLmVzY2FwZUNoYXJcbiAgICAgIDogJyEnO1xuXG4gICAgY29uc3Qgd2ZzTG93ZXJCb3VuZGFyeSA9IGZpbHRlck9wdGlvbnMubG93ZXJCb3VuZGFyeTtcbiAgICBjb25zdCB3ZnNVcHBlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy51cHBlckJvdW5kYXJ5O1xuXG4gICAgY29uc3Qgd2ZzR2VvbWV0cnlOYW1lID0gZmlsdGVyT3B0aW9ucy5nZW9tZXRyeU5hbWU7XG4gICAgY29uc3Qgd2ZzRXh0ZW50ID0gZmlsdGVyT3B0aW9ucy5leHRlbnQ7XG4gICAgY29uc3Qgd2ZzV2t0R2VvbWV0cnkgPSBmaWx0ZXJPcHRpb25zLndrdF9nZW9tZXRyeTtcbiAgICBjb25zdCB3ZnNTcnNOYW1lID0gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA/IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIGNvbnN0IHdmc0JlZ2luID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmJlZ2luLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWluRGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgY29uc3Qgd2ZzRW5kID0gdGhpcy5wYXJzZUZpbHRlck9wdGlvbkRhdGUoXG4gICAgICBmaWx0ZXJPcHRpb25zLmVuZCxcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heERhdGUgOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgY29uc3Qgd2ZzRXhwcmVzc2lvbiA9IGZpbHRlck9wdGlvbnMuZXhwcmVzc2lvbjtcblxuICAgIGxldCBnZW9tZXRyeTogb2xHZW9tZXRyeTtcbiAgICBpZiAod2ZzV2t0R2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHdrdCA9IG5ldyBvbEZvcm1hdFdLVCgpO1xuICAgICAgZ2VvbWV0cnkgPSB3a3QucmVhZEdlb21ldHJ5KHdmc1drdEdlb21ldHJ5LCB7XG4gICAgICAgIGRhdGFQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lLFxuICAgICAgICBmZWF0dXJlUHJvamVjdGlvbjogd2ZzU3JzTmFtZSB8fCAnRVBTRzozODU3J1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChvcGVyYXRvci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkJCT1gudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmJib3god2ZzR2VvbWV0cnlOYW1lLCB3ZnNFeHRlbnQsIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2Vlbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmV0d2VlbihcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzTG93ZXJCb3VuZGFyeSB8fCAxZTQwICogLTEsXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeSB8fCAxZTQwXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5jb250YWlucyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5kdXJpbmcod2ZzUHJvcGVydHlOYW1lLCB3ZnNCZWdpbiwgd2ZzRW5kKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uLCB3ZnNNYXRjaENhc2UpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0cy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaW50ZXJzZWN0cyh3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc051bGwudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmlzTnVsbCh3ZnNQcm9wZXJ0eU5hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxlc3NUaGFuKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW5PckVxdWFsVG8od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2UudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxpa2UoXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxuICAgICAgICAgIHdmc1BhdHRlcm5cbiAgICAgICAgICAgID8gd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhcilcbiAgICAgICAgICAgIDogd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9yczoge30gPSB7fTtcbiAgICBsZXQgYWxsb3dlZE9wZXJhdG9ycztcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xuICAgIGxldCBpbmNsdWRlQ29udGFpbnM6IGJvb2xlYW47XG5cbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3Qgc3JjRmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XG4gICAgICBhbGxvd2VkT3BlcmF0b3JzID1cbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA/IHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgOiBkZWZhdWx0T3BlcmF0b3JzVHlwZTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcGVyYXRvcnNUeXBlID0gZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWwudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGluY2x1ZGVDb250YWlucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvd2VkT3BlcmF0b3JzID0gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgPyBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XG5cbiAgICBzd2l0Y2ggKGFsbG93ZWRPcGVyYXRvcnMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpYzpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuVGltZTpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNOdW1lcmljT3BlcmF0b3I6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcikge1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XG4gICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICB9O1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLldpdGhpbiA9IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfTtcbiAgICAgIGlmIChpbmNsdWRlQ29udGFpbnMpIHtcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xuICAgICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWZmZWN0aXZlT3BlcmF0b3JzO1xuICB9XG5cbiAgcHVibGljIGFkZEludGVyZmFjZUZpbHRlcihcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q/LFxuICAgIGdlb21ldHJ5TmFtZT8sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHBhcmVudExvZ2ljYWwgPSAnT3InXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICAgIGlmICghaWdvT2djRmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QgPSB7IG9wZXJhdG9yOiAnUHJvcGVydHlJc0VxdWFsVG8nIH07XG4gICAgfVxuICAgIGNvbnN0IGYgPSB7XG4gICAgICBwcm9wZXJ0eU5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgYWN0aXZlOiAnJyxcbiAgICAgIGZpbHRlcmlkOiB1dWlkKCksXG4gICAgICBzdGVwOiAnJyxcbiAgICAgIGJlZ2luOiAnJyxcbiAgICAgIGVuZDogJycsXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcbiAgICAgIGxvd2VyQm91bmRhcnk6ICcnLFxuICAgICAgdXBwZXJCb3VuZGFyeTogJycsXG4gICAgICBleHByZXNzaW9uOiAnJyxcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgd2lsZENhcmQ6ICcqJyxcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcbiAgICAgIGVzY2FwZUNoYXI6ICchJyxcbiAgICAgIG1hdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXG4gICAgICBpZ29TTlJDOiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogJycsXG4gICAgICBnZW9tZXRyeTogJycsXG4gICAgICB3a3RfZ2VvbWV0cnk6ICcnLFxuICAgICAgZXh0ZW50OiAnJyxcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgcGFyZW50TG9naWNhbDogJycsXG4gICAgICBsZXZlbDogMFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGYsXG4gICAgICB7XG4gICAgICAgIHBhcmVudExvZ2ljYWwsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBnZW9tZXRyeU5hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlckFycmF5ID0gW107XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBmaWx0ZXJBcnJheS5wdXNoKFxuICAgICAgICAgIHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWw6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcbiAgICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBhY3RpdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0OiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuZmlsdGVyaWRcbiAgICAgIDogdXVpZCgpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmFjdGl2ZVxuICAgICAgOiBhY3RpdmU7XG5cbiAgICBjb25zdCBzcnNOYW1lID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdzcnNOYW1lJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LnNyc05hbWVcbiAgICAgIDogcHJvalxuICAgICAgICA/IHByb2ouZ2V0Q29kZSgpXG4gICAgICAgIDogJ0VQU0c6Mzg1Nyc7XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBmaWx0ZXJpZCxcbiAgICAgICAgYWN0aXZlOiBzdGF0dXMsXG4gICAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJ2ZpeGVkRXh0ZW50JyxcbiAgICAgICAgc3JzTmFtZVxuICAgICAgfSxcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdCxcbiAgICAgIHsgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeSB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWJ1aWx0SWdvT2djRmlsdGVyT2JqZWN0RnJvbVNlcXVlbmNlKFxuICAgIHNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW11cbiAgKTogSWdvT2djRmlsdGVyT2JqZWN0IHtcbiAgICBpZiAoc2VxdWVuY2UgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgIGxldCBsYXN0UGFyZW50TG9naWNhbCA9IHNlcXVlbmNlWzBdLnBhcmVudExvZ2ljYWw7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudDogYW55O1xuICAgICAgICBsZXQgbG9naWNhbEFycmF5ID0gW107XG4gICAgICAgIGxldCBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgICBzZXF1ZW5jZS5mb3JFYWNoKCh1aUZpbHRlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBPYmplY3QuYXNzaWduKHt9LCB1aUZpbHRlcik7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBzZXF1ZW5jZS5pbmRleE9mKHVpRmlsdGVyKTtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHNlcXVlbmNlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50ID0gc2VxdWVuY2VbaW5kZXggKyAxXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5hY3RpdmU7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuZmlsdGVyaWQ7XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQucGFyZW50TG9naWNhbDtcbiAgICAgICAgICBsb2dpY2FsQXJyYXkucHVzaChlbGVtZW50KTtcblxuICAgICAgICAgIGlmIChzZXF1ZW5jZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBlbGVtZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFBhcmVudExvZ2ljYWwgIT09IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWwpIHtcbiAgICAgICAgICAgIGlmIChsb2dpY2FsQXJyYXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICdZb3UgbXVzdCBzZXQgYXQgJyArXG4gICAgICAgICAgICAgICAgICAnbGVhc3QgdHdvIG9wZXJhdG9yIGluIGEgbG9naWNhbCAoJyArXG4gICAgICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCArXG4gICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGxhc3RQcm9jZXNzZWRGaWx0ZXIgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIHsgbG9naWNhbDogbGFzdFBhcmVudExvZ2ljYWwsIGZpbHRlcnM6IGxvZ2ljYWxBcnJheSB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGxvZ2ljYWxBcnJheSA9IFtsYXN0UHJvY2Vzc2VkRmlsdGVyXTtcbiAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgPSBuZXh0RWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBsYXN0UHJvY2Vzc2VkRmlsdGVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVJZ29TZWxlY3RvcihzZWxlY3RvcnM6IElnb09nY1NlbGVjdG9yKTogSWdvT2djU2VsZWN0b3Ige1xuICAgIGlmIChcbiAgICAgIHNlbGVjdG9ycy5ncm91cHMuZXZlcnkoKGdyb3VwKSA9PiBncm91cC5jb21wdXRlZFNlbGVjdG9ycyAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgICB9XG4gICAgbGV0IHNlbGVjdG9yOiBJZ29PZ2NTZWxlY3RvcjtcbiAgICBpZiAoc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xuICAgICAgaWYgKCFzZWxlY3RvcnMuYnVuZGxlcy5ldmVyeSgoYnVuZGxlKSA9PiBidW5kbGUuaWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBzZXQgYW4gaWQgZm9yIGVhY2ggb2YgeW91ciBidW5kbGVzJyk7XG4gICAgICB9XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAudGl0bGUgPSBncm91cC50aXRsZSA/IGdyb3VwLnRpdGxlIDogZ3JvdXAubmFtZTtcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgc2VsZWN0b3IuYnVuZGxlcy5maWx0ZXIoKGIpID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhiLmlkKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIXNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3IuYnVuZGxlcylcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcbiAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICAgICAgKSBhcyBPZ2NTZWxlY3RvckJ1bmRsZVtdXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICAgIF0sXG4gICAgICAgIHNlbGVjdG9yVHlwZTogc2VsZWN0b3Iuc2VsZWN0b3JUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXNlbGVjdG9yLmdyb3Vwcy5maW5kKChzZWxlY3Rvckdyb3VwKSA9PiBzZWxlY3Rvckdyb3VwLmVuYWJsZWQpKSB7XG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIGV4dGVudD86IEV4dGVudCxcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgb2djRmlsdGVycyA9IG9wdGlvbnMub2djRmlsdGVycztcbiAgICBpZiAoIW9nY0ZpbHRlcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gJyc7XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzID0gJyc7XG4gICAgaWYgKFxuICAgICAgb2djRmlsdGVycy5lbmFibGVkICYmXG4gICAgICAob2djRmlsdGVycy5wdXNoQnV0dG9ucyB8fFxuICAgICAgICBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMgfHxcbiAgICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgfHxcbiAgICAgICAgb2djRmlsdGVycy5zZWxlY3QgfHxcbiAgICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUpXG4gICAgKSB7XG4gICAgICBsZXQgc2VsZWN0b3JzO1xuICAgICAgaWYgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5wdXNoQnV0dG9ucztcbiAgICAgICAgY29uc3QgcHVzaENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9ycyk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHB1c2hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLmNoZWNrYm94ZXMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5jaGVja2JveGVzO1xuICAgICAgICBjb25zdCBjaGVja2JveENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNoZWNrYm94Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5yYWRpb0J1dHRvbnMpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5yYWRpb0J1dHRvbnM7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcbiAgICAgICAgY29uc3QgcmFkaW9Db25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcmFkaW9Db25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnNlbGVjdCkge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnNlbGVjdDtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCBzZWxlY3RDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihcbiAgICAgICAgICBvZ2NGaWx0ZXJzLFxuICAgICAgICAgIHNlbGVjdG9yc0NvcnJcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygc2VsZWN0Q29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5hdXRvY29tcGxldGUpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5hdXRvY29tcGxldGU7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKFxuICAgICAgICAgIG9nY0ZpbHRlcnMsXG4gICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gdGhpcy5idWlsZEZpbHRlcihcbiAgICAgICAgICBjb25kaXRpb25zLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBjb25kaXRpb25zWzBdXG4gICAgICAgICAgICA6IHsgbG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSxcbiAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIG9nY0ZpbHRlcnMuZmlsdGVycykge1xuICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgPSBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSB8fCBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICAgIGNvbnN0IGlnb0ZpbHRlcnMgPSBvZ2NGaWx0ZXJzLmZpbHRlcnM7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgIGlnb0ZpbHRlcnMsXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgcHJvaixcbiAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gb2djRmlsdGVycy5hZHZhbmNlZE9nY0ZpbHRlcnNcbiAgICAgID8gZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnNcbiAgICAgIDogZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvcjtcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd21zJykge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLkxBWUVSU1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5mZWF0dXJlVHlwZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlclF1ZXJ5U3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzLmJ1bmRsZXMuZm9yRWFjaCgoYnVuZGxlKSA9PiB7XG4gICAgICBpZiAoIWJ1bmRsZS5tdWx0aXBsZSAmJiBidW5kbGUuc2VsZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRzID0gYnVuZGxlLnNlbGVjdG9ycy5yZWR1Y2UoXG4gICAgICAgICAgKGxpc3QsIGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICBmaWx0ZXIuZW5hYmxlZCA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsXG4gICAgICAgICAgW11cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBlbmFibGVkcy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgZW5hYmxlZHMuZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGJ1bmRsZS5zZWxlY3RvcnNbaW5kZXhdLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RvcnM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVyczogT2djRmlsdGVyc09wdGlvbnMsIHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycyA9IHRoaXMuY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9ycyk7XG4gICAgY29uc3Qgc2VsZWN0b3JCdW5kbGUgPSBzZWxlY3RvcnMuZ3JvdXBzLmZpbmQoXG4gICAgICAoZykgPT4gZy5lbmFibGVkXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgc2VsZWN0b3JCdW5kbGUubWFwKChidW5kbGUpID0+IHtcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xuICAgICAgY29uc3Qgc2VsZWN0b3JzVHlwZSA9IGJ1bmRsZS5zZWxlY3RvcnMgYXMgYW55O1xuICAgICAgaWYgKCFzZWxlY3RvcnNUeXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yc1R5cGVcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXG4gICAgICAgIC5mb3JFYWNoKChlbmFibGVkU2VsZWN0b3IpID0+XG4gICAgICAgICAgYnVuZGxlQ29uZGl0aW9uLnB1c2goZW5hYmxlZFNlbGVjdG9yLmZpbHRlcnMpXG4gICAgICAgICk7XG4gICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICBsb2dpY2FsOiBidW5kbGUubG9naWNhbCxcbiAgICAgICAgICBmaWx0ZXJzOiBidW5kbGVDb25kaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgb2djRmlsdGVycy5zZWxlY3QgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgb2djRmlsdGVycy5hdXRvY29tcGxldGUgPSBzZWxlY3RvcnM7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25zO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICBwcm9jZXNzZWRGaWx0ZXI6IHN0cmluZyxcbiAgICBsYXllcnNPclR5cGVuYW1lczogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBhcHBsaWVkRmlsdGVyID0gJyc7XG4gICAgaWYgKHByb2Nlc3NlZEZpbHRlci5sZW5ndGggPT09IDAgJiYgbGF5ZXJzT3JUeXBlbmFtZXMuaW5kZXhPZignLCcpID09PSAtMSkge1xuICAgICAgYXBwbGllZEZpbHRlciA9IHByb2Nlc3NlZEZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbGF5ZXJzT3JUeXBlbmFtZXMuc3BsaXQoJywnKS5mb3JFYWNoKChsYXllck9yVHlwZW5hbWVzKSA9PiB7XG4gICAgICAgIGFwcGxpZWRGaWx0ZXIgPSBgJHthcHBsaWVkRmlsdGVyfSgke3Byb2Nlc3NlZEZpbHRlci5yZXBsYWNlKFxuICAgICAgICAgICdmaWx0ZXI9JyxcbiAgICAgICAgICAnJ1xuICAgICAgICApfSlgO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGFwcGxpZWRGaWx0ZXIgPSBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoL1xcKFxcKS9nLCAnJyk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPVxuICAgICAgYXBwbGllZEZpbHRlci5sZW5ndGggPiAwXG4gICAgICAgID8gYXBwbGllZEZpbHRlci5yZXBsYWNlKCdmaWx0ZXI9JywgJycpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBmaWx0ZXJWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZUZpbHRlck9wdGlvbkRhdGUodmFsdWU6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdub3cnKSB8fFxuICAgICAgdmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9kYXknKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VEYXRlT3BlcmF0aW9uKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIHRvIHBhcnNlIGRhdGUgd2l0aCBzcGVjaWZpYyBmb3JtYXRcbiAgICogZXhlbXBsZSAndG9kYXkgKyAxIGRheXMnIG9yICdub3cgKyAxIHllYXJzJ1xuICAgKiBAcGFyYW0gdmFsdWUgc3RyaW5nIGRhdGVcbiAgICogQHJldHVybnMgZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZURhdGVPcGVyYXRpb24odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0aW9uU3BsaXR0ZWQgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcgJyk7XG4gICAgY29uc3QgbGVmdE9wZXJhbmQgPSBvcGVyYXRpb25TcGxpdHRlZFswXTtcbiAgICBjb25zdCBvcGVyYXRvciA9IFsnKycsICctJ10uaW5jbHVkZXMob3BlcmF0aW9uU3BsaXR0ZWRbMV0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzFdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodE9wZXJhbmQgPSAvXlswLTldKiQvLnRlc3Qob3BlcmF0aW9uU3BsaXR0ZWRbMl0pXG4gICAgICA/IG9wZXJhdGlvblNwbGl0dGVkWzJdXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCByaWdodFVuaXRPcGVyYW5kID0gKFxuICAgICAgWyd5ZWFycycsICdtb250aHMnLCAnd2Vla3MnLCAnZGF5cycsICdob3VycycsICdzZWNvbmRzJ10uaW5jbHVkZXMoXG4gICAgICAgIG9wZXJhdGlvblNwbGl0dGVkWzNdXG4gICAgICApXG4gICAgICAgID8gb3BlcmF0aW9uU3BsaXR0ZWRbM11cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICApIGFzIG1vbWVudC5EdXJhdGlvbklucHV0QXJnMjtcblxuICAgIGlmICghb3BlcmF0b3IgfHwgIXJpZ2h0VW5pdE9wZXJhbmQgfHwgIXJpZ2h0T3BlcmFuZCkge1xuICAgICAgcmV0dXJuIGxlZnRPcGVyYW5kID09PSAnbm93J1xuICAgICAgICA/IG1vbWVudCgpLmZvcm1hdCgpXG4gICAgICAgIDogbW9tZW50KCkuZW5kT2YoJ2RheScpLmZvcm1hdCgpO1xuICAgIH1cblxuICAgIGlmIChvcGVyYXRvciA9PT0gJysnKSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KCkuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKS5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuYWRkKHBhcnNlSW50KHJpZ2h0T3BlcmFuZCwgMTApLCByaWdodFVuaXRPcGVyYW5kKVxuICAgICAgICAgICAgLmZvcm1hdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdE9wZXJhbmQgPT09ICdub3cnXG4gICAgICAgID8gbW9tZW50KClcbiAgICAgICAgICAgIC5zdWJ0cmFjdChwYXJzZUludChyaWdodE9wZXJhbmQsIDEwKSwgcmlnaHRVbml0T3BlcmFuZClcbiAgICAgICAgICAgIC5mb3JtYXQoKVxuICAgICAgICA6IG1vbWVudCgpXG4gICAgICAgICAgICAuZW5kT2YoJ2RheScpXG4gICAgICAgICAgICAuc3VidHJhY3QocGFyc2VJbnQocmlnaHRPcGVyYW5kLCAxMCksIHJpZ2h0VW5pdE9wZXJhbmQpXG4gICAgICAgICAgICAuZm9ybWF0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -39,10 +39,10 @@ export class OGCFilterService {
|
|
|
39
39
|
options.filtered = false;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: OGCFilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: OGCFilterService });
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: OGCFilterService, decorators: [{
|
|
46
46
|
type: Injectable
|
|
47
|
-
}], ctorParameters:
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
}], ctorParameters: () => [] });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUkvQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLGdCQUFlLENBQUM7SUFFVCxXQUFXLENBQUMsYUFBNEIsRUFBRSxZQUFvQjtRQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDLHdCQUF3QixDQUNsRSxZQUFZLEVBQ1osYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUNwQyxDQUFDO1FBQ0YsYUFBYSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sdUJBQXVCLENBQUMsYUFBc0M7UUFDbkUsTUFBTSxPQUFPLEdBQVEsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3RCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMseUJBQXlCLENBQ3BFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUMxQixPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUNuQyxJQUFJLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ3JELElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7b0JBQ3BDLGVBQWUsQ0FBQyw2QkFBNkIsQ0FDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQzFCLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQ3BDLENBQUM7WUFDTixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxhQUFzQztRQUNuRSxNQUFNLE9BQU8sR0FBUSxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQzNDLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFOUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdELE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyx5QkFBeUIsQ0FDcEUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQzFCLE9BQU8sQ0FBQyxpQkFBaUIsRUFDekIsU0FBUyxFQUNULElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUI7b0JBQ3BDLGVBQWUsQ0FBQyw2QkFBNkI7b0JBQzNDLHNFQUFzRTtvQkFDdEUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQzFCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FDMUIsQ0FBQztZQUNOLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUNkLGFBQThCLEVBQzlCLGVBQWUsQ0FBQyxXQUFXLENBQ3pCLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUMxQixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxhQUFhLENBQUMsT0FBTyxDQUN0QixDQUNGLENBQUM7WUFDRixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN2QyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQzt1R0FuRVUsZ0JBQWdCOzJHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCBvbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcblxuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlJztcbmltcG9ydCB7IE9nY0ZpbHRlcldyaXRlciB9IGZyb20gJy4vb2djLWZpbHRlcic7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vb2djLWZpbHRlci5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT0dDRmlsdGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgZmlsdGVyQnlPZ2Mod21zRGF0YXNvdXJjZTogV01TRGF0YVNvdXJjZSwgZmlsdGVyU3RyaW5nOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcHBsaWVkRmlsdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgIGZpbHRlclN0cmluZyxcbiAgICAgIHdtc0RhdGFzb3VyY2Uub3B0aW9ucy5wYXJhbXMuTEFZRVJTXG4gICAgKTtcbiAgICB3bXNEYXRhc291cmNlLm9sLnVwZGF0ZVBhcmFtcyh7IEZJTFRFUjogYXBwbGllZEZpbHRlciB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPZ2NXRlNGaWx0ZXJzT3B0aW9ucyh3ZnNEYXRhc291cmNlOiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHdmc0RhdGFzb3VyY2Uub3B0aW9ucztcbiAgICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XG5cbiAgICBpZiAob3B0aW9ucy5vZ2NGaWx0ZXJzLmVuYWJsZWQgJiYgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzID0gb2djRmlsdGVyV3JpdGVyLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzLFxuICAgICAgICBvcHRpb25zLnBhcmFtc1dGUy5maWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgbmV3IG9sUHJvamVjdGlvbih7IGNvZGU6IG9wdGlvbnMucGFyYW1zV0ZTLnNyc05hbWUgfSksXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICBpZiAoIW9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzKSB7XG4gICAgICAgIG9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzID1cbiAgICAgICAgICBvZ2NGaWx0ZXJXcml0ZXIuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgICAgIG9wdGlvbnMucGFyYW1zV0ZTLmZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0T2djV01TRmlsdGVyc09wdGlvbnMod21zRGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB3bXNEYXRhc291cmNlLm9wdGlvbnM7XG4gICAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuXG4gICAgaWYgKG9wdGlvbnMub2djRmlsdGVycy5lbmFibGVkICYmIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzKSB7XG4gICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyA9IG9nY0ZpbHRlcldyaXRlci5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyxcbiAgICAgICAgb3B0aW9ucy5maWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKCFvcHRpb25zLm9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVycykge1xuICAgICAgICBvcHRpb25zLm9nY0ZpbHRlcnMuaW50ZXJmYWNlT2djRmlsdGVycyA9XG4gICAgICAgICAgb2djRmlsdGVyV3JpdGVyLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgICAgICAgICAgLy8gV2l0aCBzb21lIHdtcyBzZXJ2ZXIsIHRoaXMgcGFyYW0gbXVzdCBiZSBzZXQgdG8gbWFrZSBzcGF0aWFscyBjYWxsLlxuICAgICAgICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMsXG4gICAgICAgICAgICBvcHRpb25zLmZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyQnlPZ2MoXG4gICAgICAgIHdtc0RhdGFzb3VyY2UgYXMgV01TRGF0YVNvdXJjZSxcbiAgICAgICAgb2djRmlsdGVyV3JpdGVyLmJ1aWxkRmlsdGVyKFxuICAgICAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHdtc0RhdGFzb3VyY2Uub3B0aW9uc1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgb3B0aW9ucy5maWx0ZXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMub2djRmlsdGVycy5maWx0ZXJzID0gdW5kZWZpbmVkO1xuICAgICAgb3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMgPSBbXTtcbiAgICAgIG9wdGlvbnMuZmlsdGVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -20,4 +20,4 @@ export var SpatialFilterItemType;
|
|
|
20
20
|
SpatialFilterItemType["Address"] = "Address";
|
|
21
21
|
SpatialFilterItemType["Thematics"] = "Thematics";
|
|
22
22
|
})(SpatialFilterItemType || (SpatialFilterItemType = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxzQkFTWDtBQVRELFdBQVksc0JBQXNCO0lBQ2hDLGlEQUF1QixDQUFBO0lBQ3ZCLHFDQUFXLENBQUE7SUFDWCwyQ0FBaUIsQ0FBQTtJQUNqQiw2Q0FBbUIsQ0FBQTtJQUNuQiwrQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBaUIsQ0FBQTtJQUNqQixxQ0FBVyxDQUFBO0lBQ1gsNkNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVRXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFTakM7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLDhDQUF5QixDQUFBO0lBQ3pCLHdDQUFtQixDQUFBO0lBQ25CLG9DQUFlLENBQUE7QUFDakIsQ0FBQyxFQUpXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxxQkFHWDtBQUhELFdBQVkscUJBQXFCO0lBQy9CLDRDQUFtQixDQUFBO0lBQ25CLGdEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBR2hDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSB7XG4gIEFkbVJlZ2lvbiA9ICdBZG1SZWdpb24nLFxuICBNdW4gPSAnTXVuJyxcbiAgQXJyb25kID0gJ0Fycm9uZCcsXG4gIENpcmNGZWQgPSAnQ2lyY0ZlZCcsXG4gIENpcmNQcm92ID0gJ0NpcmNQcm92JyxcbiAgRGlyUmVnID0gJ0RpclJlZycsXG4gIE1SQyA9ICdNUkMnLFxuICBSZWdUb3VyID0gJ1JlZ1RvdXInXG59XG5cbmV4cG9ydCBlbnVtIFNwYXRpYWxGaWx0ZXJUeXBlIHtcbiAgUHJlZGVmaW5lZCA9ICdQcmVkZWZpbmVkJyxcbiAgUG9seWdvbiA9ICdQb2x5Z29uJyxcbiAgUG9pbnQgPSAnUG9pbnQnXG59XG5cbmV4cG9ydCBlbnVtIFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSB7XG4gIEFkZHJlc3MgPSAnQWRkcmVzcycsXG4gIFRoZW1hdGljcyA9ICdUaGVtYXRpY3MnXG59XG4iXX0=
|