@igo2/geo 16.0.0-rc.1 → 16.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +7 -7
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -7
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +6 -6
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
- package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +13 -13
- package/esm2022/lib/catalog/catalog.module.mjs +3 -3
- 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 +7 -8
- package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
- package/esm2022/lib/datasource/datasource.module.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +10 -10
- package/esm2022/lib/datasource/shared/datasource.service.mjs +9 -9
- 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 +2 -2
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +2 -2
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +2 -2
- 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 +2 -2
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +2 -2
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -4
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +2 -2
- package/esm2022/lib/datasource/shared/datasources/tiledebug-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 +4 -19
- 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 +5 -5
- package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -7
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.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 +2 -2
- package/esm2022/lib/datasource/utils/tilegrid.mjs +3 -3
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +3 -3
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +6 -6
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
- package/esm2022/lib/directions/directions.component.mjs +9 -9
- package/esm2022/lib/directions/directions.module.mjs +7 -7
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +10 -11
- package/esm2022/lib/directions/shared/directions.utils.mjs +7 -7
- package/esm2022/lib/directions/shared/store.mjs +1 -1
- package/esm2022/lib/download/download-button/download-button.component.mjs +2 -2
- package/esm2022/lib/download/download.module.mjs +2 -2
- package/esm2022/lib/download/shared/download.service.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +8 -8
- package/esm2022/lib/draw/draw/draw.component.mjs +29 -29
- package/esm2022/lib/draw/draw/draw.module.mjs +15 -15
- package/esm2022/lib/draw/drawingTool.module.mjs +1 -1
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +6 -6
- package/esm2022/lib/environment/environment.interface.mjs +2 -0
- package/esm2022/lib/environment/index.mjs +2 -0
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +9 -9
- package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
- package/esm2022/lib/feature/feature-details/feature-details.module.mjs +3 -3
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
- package/esm2022/lib/feature/feature-form/feature-form.module.mjs +2 -2
- package/esm2022/lib/feature/feature.module.mjs +2 -2
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.utils.mjs +7 -7
- package/esm2022/lib/feature/shared/store.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +4 -4
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +10 -22
- package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +5 -2
- package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/search.mjs +2 -2
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -5
- package/esm2022/lib/feature/shared/strategies.utils.mjs +2 -2
- package/esm2022/lib/filter/filter.module.mjs +21 -21
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
- package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +7 -7
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +6 -6
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +4 -4
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.mjs +5 -5
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +2 -2
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.service.mjs +2 -2
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +15 -15
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +7 -7
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +3 -3
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
- package/esm2022/lib/geo.module.mjs +4 -4
- 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 +1 -1
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +3 -3
- package/esm2022/lib/geometry/geometry.module.mjs +2 -2
- package/esm2022/lib/geometry/shared/controls/draw.mjs +6 -6
- package/esm2022/lib/geometry/shared/controls/modify.mjs +8 -8
- package/esm2022/lib/geometry/shared/controls/slice.mjs +2 -2
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +5 -5
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +37 -37
- package/esm2022/lib/import-export/import-export.module.mjs +3 -3
- package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +10 -21
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +4 -4
- package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
- package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +5 -5
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +6 -6
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +2 -2
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +4 -4
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +8 -8
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
- package/esm2022/lib/layer/layer.module.mjs +9 -9
- package/esm2022/lib/layer/shared/layer.service.mjs +16 -16
- 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/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 +44 -33
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +2 -2
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
- package/esm2022/lib/layer/utils/image-watcher.mjs +2 -2
- package/esm2022/lib/layer/utils/tile-watcher.mjs +2 -2
- package/esm2022/lib/layer/utils/vector-watcher.mjs +2 -2
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +2 -2
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +4 -4
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +7 -9
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
- package/esm2022/lib/map/home-extent-button/index.mjs +2 -1
- package/esm2022/lib/map/map-browser/map-browser.component.mjs +2 -2
- package/esm2022/lib/map/map-center/map-center.component.mjs +1 -1
- package/esm2022/lib/map/map.module.mjs +14 -14
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +1 -1
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +2 -2
- 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 +8 -8
- package/esm2022/lib/map/shared/controllers/view.mjs +3 -3
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +15 -15
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +4 -4
- package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
- package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
- package/esm2022/lib/map/shared/map.mjs +9 -6
- package/esm2022/lib/map/shared/map.utils.mjs +3 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +3 -3
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +2 -2
- package/esm2022/lib/map/utils/layer-watcher.mjs +2 -2
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +3 -3
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +1 -1
- package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +2 -2
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer.component.mjs +12 -12
- package/esm2022/lib/measure/measurer/measurer.module.mjs +6 -6
- package/esm2022/lib/measure/shared/measure.utils.mjs +7 -7
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
- package/esm2022/lib/metadata/metadata.module.mjs +4 -4
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -5
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +3 -3
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +2 -2
- package/esm2022/lib/offline/shared/geo-network.service.mjs +1 -8
- package/esm2022/lib/overlay/overlay.module.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.directive.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.service.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +2 -2
- package/esm2022/lib/print/print-form/print-form.component.mjs +3 -3
- package/esm2022/lib/print/print.module.mjs +4 -4
- package/esm2022/lib/print/shared/print.interface.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +9 -9
- package/esm2022/lib/query/query.module.mjs +3 -3
- package/esm2022/lib/query/shared/query-search-source.mjs +2 -2
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +1 -1
- package/esm2022/lib/query/shared/query.directive.mjs +7 -7
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/query/shared/query.service.mjs +10 -10
- package/esm2022/lib/search/search-bar/search-bar.component.mjs +5 -5
- package/esm2022/lib/search/search-bar/search-bar.module.mjs +2 -2
- package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +2 -2
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +14 -14
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +5 -5
- package/esm2022/lib/search/search-results/search-results.component.mjs +7 -7
- package/esm2022/lib/search/search-results/search-results.module.mjs +11 -11
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +3 -3
- package/esm2022/lib/search/search-selector/search-selector.module.mjs +2 -2
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
- package/esm2022/lib/search/search-settings/search-settings.module.mjs +3 -3
- package/esm2022/lib/search/search.module.mjs +8 -8
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +14 -14
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +2 -2
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.service.mjs +3 -3
- package/esm2022/lib/search/shared/search.utils.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.mjs +7 -7
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +2 -2
- package/esm2022/lib/search/shared/sources/coordinates.mjs +11 -11
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +3 -3
- package/esm2022/lib/search/shared/sources/icherche.mjs +6 -6
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +3 -3
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +8 -8
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +2 -2
- package/esm2022/lib/search/shared/sources/nominatim.mjs +7 -7
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +2 -2
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +2 -2
- package/esm2022/lib/search/shared/sources/workspace.mjs +6 -6
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +2 -2
- package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +2 -2
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +2 -2
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +2 -2
- 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 +2 -2
- package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.service.mjs +3 -3
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +24 -33
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +17 -25
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +2 -2
- package/esm2022/lib/style/style-service/draw-style.service.mjs +2 -2
- package/esm2022/lib/style/style-service/style.service.mjs +3 -3
- package/esm2022/lib/style/style.module.mjs +4 -4
- package/esm2022/lib/toast/toast.component.mjs +2 -2
- package/esm2022/lib/toast/toast.module.mjs +3 -3
- package/esm2022/lib/utils/id-generator.mjs +2 -2
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +1 -1
- package/esm2022/lib/wkt/shared/wkt.service.mjs +16 -16
- package/esm2022/lib/wkt/wkt.module.mjs +1 -1
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +2 -2
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +10 -15
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +7 -7
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +6 -6
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +6 -6
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +5 -5
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -7
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +2 -2
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +5 -5
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +2 -2
- package/esm2022/lib/workspace/workspace.module.mjs +4 -4
- package/esm2022/public_api.mjs +2 -1
- package/fesm2022/igo2-geo.mjs +34181 -34233
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/geo-theme.scss +23 -21
- 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 +3 -3
- package/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -0
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -4
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
- package/lib/catalog/catalog.theming.scss +5 -0
- package/lib/catalog/shared/catalog.abstract.d.ts +2 -2
- package/lib/catalog/shared/catalog.enum.d.ts +4 -0
- package/lib/catalog/shared/catalog.interface.d.ts +10 -5
- package/lib/catalog/shared/catalog.service.d.ts +2 -2
- package/lib/datasource/shared/capabilities.service.d.ts +2 -2
- package/lib/datasource/shared/datasource.service.d.ts +6 -6
- package/lib/datasource/shared/datasources/any-datasource.d.ts +11 -11
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +10 -10
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -2
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -1
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -1
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +1 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +4 -4
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -1
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +1 -1
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +1 -1
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -1
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +3 -4
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/wfs.service.d.ts +1 -1
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +5 -5
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +2 -2
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +4 -3
- package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
- package/lib/datasource/shared/options/options-api.service.d.ts +1 -1
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -2
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +3 -3
- package/lib/directions/directions-sources/directions-source.interface.d.ts +12 -8
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +1 -1
- package/lib/directions/directions.component.d.ts +3 -3
- package/lib/directions/shared/directions.interface.d.ts +1 -1
- package/lib/directions/shared/directions.service.d.ts +5 -5
- package/lib/directions/shared/directions.utils.d.ts +3 -3
- package/lib/draw/draw/draw-popup.component.d.ts +3 -3
- package/lib/draw/draw/draw.component.d.ts +12 -12
- package/lib/draw/shared/draw-icon.service.d.ts +1 -1
- package/lib/draw/shared/draw.interface.d.ts +3 -3
- package/lib/draw/shared/draw.utils.d.ts +4 -4
- package/lib/environment/environment.interface.d.ts +48 -0
- package/lib/environment/index.d.ts +1 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +6 -6
- package/lib/feature/feature-details/feature-details.directive.d.ts +2 -2
- package/lib/feature/feature-form/feature-form.component.d.ts +1 -1
- package/lib/feature/shared/feature.interfaces.d.ts +5 -5
- package/lib/feature/shared/feature.utils.d.ts +4 -4
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/feature/shared/strategies/geo-properties.d.ts +2 -2
- 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/search.d.ts +1 -1
- package/lib/feature/shared/strategies/selection.d.ts +2 -2
- package/lib/feature/shared/strategies.utils.d.ts +1 -1
- package/lib/filter/filter.theming.scss +0 -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 +1 -1
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +2 -2
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
- package/lib/filter/shared/ogc-filter.d.ts +5 -4
- package/lib/filter/shared/ogc-filter.interface.d.ts +3 -3
- package/lib/filter/shared/spatial-filter.service.d.ts +1 -1
- package/lib/filter/shared/time-filter.interface.d.ts +1 -1
- package/lib/filter/shared/time-filter.service.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +13 -13
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +6 -6
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -3
- 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 +2 -2
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +2 -2
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +4 -4
- package/lib/geometry/shared/controls/draw.d.ts +4 -4
- package/lib/geometry/shared/controls/modify.d.ts +4 -4
- package/lib/geometry/shared/controls/slice.d.ts +3 -3
- package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
- package/lib/geometry/shared/geometry.utils.d.ts +2 -2
- package/lib/import-export/export-button/export-button.component.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +14 -14
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +6 -6
- package/lib/import-export/shared/export.interface.d.ts +1 -1
- package/lib/import-export/shared/export.service.d.ts +2 -2
- package/lib/import-export/shared/import.interface.d.ts +1 -0
- package/lib/import-export/shared/import.utils.d.ts +3 -3
- package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -3
- 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 +2 -2
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +5 -5
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
- package/lib/layer/layer.theming.scss +17 -24
- package/lib/layer/shared/layer.service.d.ts +5 -5
- package/lib/layer/shared/layers/any-layer.d.ts +1 -1
- package/lib/layer/shared/layers/any-layer.interface.d.ts +1 -1
- package/lib/layer/shared/layers/image-layer.d.ts +5 -5
- package/lib/layer/shared/layers/image-layer.interface.d.ts +3 -3
- package/lib/layer/shared/layers/layer.d.ts +6 -6
- package/lib/layer/shared/layers/layer.interface.d.ts +2 -2
- package/lib/layer/shared/layers/tile-layer.d.ts +6 -6
- package/lib/layer/shared/layers/tile-layer.interface.d.ts +8 -8
- package/lib/layer/shared/layers/vector-layer.d.ts +18 -11
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +13 -13
- package/lib/layer/shared/layers/vectortile-layer.d.ts +3 -3
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +4 -4
- package/lib/layer/utils/image-watcher.d.ts +1 -1
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.interface.d.ts +6 -0
- package/lib/map/home-extent-button/index.d.ts +1 -0
- package/lib/map/map-browser/map-browser.component.d.ts +1 -1
- package/lib/map/shared/controllers/controller.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +5 -5
- package/lib/map/shared/controllers/geolocation.interface.d.ts +8 -0
- package/lib/map/shared/controllers/view.d.ts +2 -2
- package/lib/map/shared/hover-feature.directive.d.ts +8 -8
- package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
- package/lib/map/shared/map.abstract.d.ts +5 -5
- package/lib/map/shared/map.d.ts +14 -10
- package/lib/map/shared/mapOffline.directive.d.ts +2 -2
- package/lib/map/shared/projection.interfaces.d.ts +1 -3
- package/lib/map/utils/layer-watcher.d.ts +2 -2
- 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 +5 -5
- package/lib/measure/shared/measure.utils.d.ts +5 -5
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +1 -1
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
- package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
- package/lib/offline/shared/geo-network.service.d.ts +2 -1
- package/lib/overlay/shared/overlay.d.ts +1 -1
- package/lib/overlay/shared/overlay.directive.d.ts +2 -2
- package/lib/print/print/print.component.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +2 -2
- package/lib/print/shared/print.interface.d.ts +1 -1
- package/lib/print/shared/print.service.d.ts +2 -2
- package/lib/query/shared/query.directive.d.ts +4 -4
- package/lib/query/shared/query.interfaces.d.ts +3 -3
- package/lib/query/shared/query.service.d.ts +3 -3
- package/lib/search/search-bar/search-bar.component.d.ts +5 -5
- package/lib/search/search-bar/search-url-param.directive.d.ts +1 -1
- package/lib/search/search-results/save-feature-dialog.component.d.ts +3 -3
- package/lib/search/search-results/search-results-add-button.component.d.ts +7 -7
- package/lib/search/search-results/search-results-item.component.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +4 -4
- package/lib/search/search-selector/search-selector.component.d.ts +1 -1
- package/lib/search/search-settings/search-settings.component.d.ts +2 -2
- package/lib/search/shared/search-pointer-summary.directive.d.ts +5 -5
- package/lib/search/shared/search-source-service.providers.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +1 -1
- package/lib/search/shared/search.service.d.ts +2 -2
- package/lib/search/shared/search.utils.d.ts +1 -1
- package/lib/search/shared/sources/cadastre.d.ts +1 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.d.ts +5 -5
- package/lib/search/shared/sources/coordinates.providers.d.ts +2 -2
- package/lib/search/shared/sources/icherche.d.ts +4 -4
- package/lib/search/shared/sources/icherche.providers.d.ts +2 -2
- package/lib/search/shared/sources/ilayer.d.ts +2 -2
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/source.d.ts +2 -2
- package/lib/search/shared/sources/storedqueries.d.ts +4 -4
- package/lib/search/shared/sources/storedqueries.providers.d.ts +1 -1
- package/lib/search/shared/sources/workspace.d.ts +1 -1
- package/lib/style/shared/feature/feature-style.d.ts +2 -2
- package/lib/style/shared/overlay/overlay-style.utils.d.ts +1 -1
- package/lib/style/shared/vector/conversion.utils.d.ts +1 -1
- package/lib/style/shared/vector/vector-style.interface.d.ts +6 -1
- package/lib/style/style-list/style-list.provider.d.ts +1 -1
- package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +3 -3
- package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +3 -3
- package/lib/style/style-service/draw-style.service.d.ts +1 -1
- package/lib/style/style-service/style.service.d.ts +3 -3
- package/lib/utils/id-generator.d.ts +2 -2
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
- package/lib/workspace/shared/edition-workspace.d.ts +7 -9
- package/lib/workspace/shared/edition-workspace.service.d.ts +5 -5
- package/lib/workspace/shared/feature-workspace.service.d.ts +3 -3
- package/lib/workspace/shared/wfs-workspace.service.d.ts +3 -3
- package/lib/workspace/shared/wms-workspace.service.d.ts +4 -4
- package/lib/workspace/shared/workspace.utils.d.ts +4 -4
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +4 -4
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -3
- package/locale/en.geo.json +9 -3
- package/locale/fr.geo.json +9 -3
- package/package.json +4 -4
- package/public_api.d.ts +1 -0
- package/style/style.css +0 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.theming.scss +0 -15
|
@@ -2,17 +2,17 @@ import olMap from 'ol/Map';
|
|
|
2
2
|
import olView from 'ol/View';
|
|
3
3
|
import olControlAttribution from 'ol/control/Attribution';
|
|
4
4
|
import olControlScaleLine from 'ol/control/ScaleLine';
|
|
5
|
+
import * as olinteraction from 'ol/interaction';
|
|
5
6
|
import * as olproj from 'ol/proj';
|
|
6
7
|
import * as olproj4 from 'ol/proj/proj4';
|
|
7
|
-
import * as olinteraction from 'ol/interaction';
|
|
8
8
|
import { getUid } from 'ol/util';
|
|
9
9
|
import proj4 from 'proj4';
|
|
10
10
|
import { BehaviorSubject, pairwise, skipWhile } from 'rxjs';
|
|
11
11
|
import { VectorLayer } from '../../layer/shared/layers';
|
|
12
12
|
import { Overlay } from '../../overlay/shared/overlay';
|
|
13
13
|
import { LayerWatcher } from '../utils/layer-watcher';
|
|
14
|
-
import { MapViewController } from './controllers/view';
|
|
15
14
|
import { MapGeolocationController } from './controllers/geolocation';
|
|
15
|
+
import { MapViewController } from './controllers/view';
|
|
16
16
|
import { getAllChildLayersByDeletion, getRootParentByDeletion, handleLayerPropertyChange, initLayerSyncFromRootParentLayers } from './linkedLayers.utils';
|
|
17
17
|
// TODO: This class is messy. Clearly define it's scope and the map browser's.
|
|
18
18
|
// Move some stuff into controllers.
|
|
@@ -195,20 +195,23 @@ export class IgoMap {
|
|
|
195
195
|
});
|
|
196
196
|
}
|
|
197
197
|
/**
|
|
198
|
-
*
|
|
198
|
+
* @deprecated
|
|
199
199
|
* TODO: Move to ViewController and update every place it's used
|
|
200
200
|
*/
|
|
201
201
|
getCenter(projection) {
|
|
202
202
|
return this.viewController.getCenter(projection);
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
*
|
|
205
|
+
* @deprecated
|
|
206
206
|
* TODO: Move to ViewController and update every place it's used
|
|
207
207
|
*/
|
|
208
208
|
getExtent(projection) {
|
|
209
209
|
return this.viewController.getExtent(projection);
|
|
210
210
|
}
|
|
211
|
-
|
|
211
|
+
/**
|
|
212
|
+
* @deprecated
|
|
213
|
+
* TODO: Move to ViewController and update every place it's used
|
|
214
|
+
*/
|
|
212
215
|
getZoom() {
|
|
213
216
|
return this.viewController.getZoom();
|
|
214
217
|
}
|
|
@@ -431,4 +434,4 @@ export class IgoMap {
|
|
|
431
434
|
return this.layers.findIndex((_layer) => _layer === layer);
|
|
432
435
|
}
|
|
433
436
|
}
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBQzNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUlqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFXLE1BQU0sTUFBTSxDQUFDO0FBSXJFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBVXRELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3JELE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQUMzQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxTQUFTLENBQUMsQ0FBQztJQUM5RCxPQUFPLENBQXlCO0lBQ2hDLGVBQWUsQ0FBZ0Q7SUFDL0QsT0FBTyxDQUFVO0lBQ2pCLG1CQUFtQixDQUFVO0lBQzdCLG9CQUFvQixDQUFVO0lBQzlCLGNBQWMsQ0FBb0I7SUFDbEMscUJBQXFCLENBQTJCO0lBQ2hELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNwRCxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDakQsaUJBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7SUFFdkQsZ0JBQWdCLENBQW9CO0lBRW5DLFlBQVksQ0FBZTtJQUMzQixPQUFPLENBQWE7SUFDcEIsY0FBYyxDQUFpQjtJQUMvQixjQUFjLEdBQXdCO1FBQzVDLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7S0FDakMsQ0FBQztJQUVGLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQ0UsT0FBb0IsRUFDWixjQUErQixFQUMvQixhQUE2QjtRQUQ3QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDL0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBRXJDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUk7UUFDRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtnQkFDckMsTUFBTSxjQUFjLEdBQUcsQ0FDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLElBQUk7b0JBQ3hDLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ2IsQ0FBQztnQkFDM0IsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDekQ7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDbkMsTUFBTSxZQUFZLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLElBQUk7b0JBQ3RDLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQ2IsQ0FBQztnQkFDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7YUFDckQ7U0FDRjtRQUNELElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRTtZQUN2QyxZQUFZLEdBQUc7Z0JBQ2Isa0JBQWtCLEVBQUUsS0FBSztnQkFDekIsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGNBQWMsRUFBRSxLQUFLO2dCQUNyQixhQUFhLEVBQUUsS0FBSztnQkFDcEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFNBQVMsRUFBRSxLQUFLO2FBQ2pCLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUM7WUFDbEIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2xELFFBQVE7U0FDVCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztZQUMxQyxZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSx3QkFBd0IsQ0FDdkQsSUFBSSxFQUNKO2dCQUNFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRTthQUNsRCxFQUNELElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7WUFDRixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixDQUNqRCxJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO2FBQ0g7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RFLElBQUksWUFBWSxDQUFDO2dCQUNqQixJQUFJLFVBQVUsRUFBRTtvQkFDZCxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUM1QztnQkFDRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUNqQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDcEMsQ0FBQztnQkFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtvQkFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTt3QkFDOUIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs0QkFDL0IsaUNBQWlDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUNsRCxDQUFDLENBQUMsQ0FBQztxQkFDSjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlO2FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDNUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEVBQVU7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsT0FBdUI7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFdBQVcsR0FBbUI7WUFDbEMsR0FBRyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQzlCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFFRixJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDOUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDcEM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFCLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxPQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELE1BQU0sV0FBVyxHQUFnQixFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQzNFLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQ3BDLE9BQU8sQ0FBQyxNQUFNLEVBQ2QsT0FBTyxDQUFDLFVBQVUsQ0FDbkIsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUV6QyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBeUI7UUFDdEMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE9BQU87U0FDUjtRQUVELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxjQUFjLEdBQUcsQ0FDckIsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDM0IsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUN6RDtRQUNELElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNuQixNQUFNLFlBQVksR0FBRyxDQUNuQixLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUN6QixDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsVUFBa0M7UUFDMUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLFVBQWtDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU87U0FDUjtRQUVELEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3JDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO1FBRUQsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUNuQyxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQzFFLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ25DLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsWUFBWSxDQUFDLEVBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQixDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FDdkQsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBYTtRQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQixDQUFDLEtBQVksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUEwQjtRQUMxQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQVksRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUFlLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDcEMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sV0FBVyxHQUFHLE1BQU07YUFDdkIsR0FBRyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPO2FBQ1I7WUFDRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTTtnQkFDekIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO29CQUNqQixDQUFDLENBQUMscUJBQXFCLEVBQUU7b0JBQ3pCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBWTtRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLE1BQWU7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFO2dCQUNoQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM1QjtZQUNELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUN2RCxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2pDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ25ELElBQUksV0FBVyxJQUFJLENBQUMsRUFBRTt3QkFDcEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ2xDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEJBQTBCLENBQUMsUUFBZSxFQUFFLGNBQXVCO1FBQ2pFLElBQUksb0JBQW9CLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QixvQkFBb0IsR0FBRyxRQUFRLENBQUM7U0FDakM7UUFDRCxNQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDbkUsb0JBQW9CO1NBQ3JCLENBQUMsQ0FBQztRQUNILEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3hCLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFlO1FBQ3pCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVk7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsTUFBZTtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBWSxFQUFFLElBQVksRUFBRSxFQUFVO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRWhDLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ3hDLE9BQU87U0FDUjtRQUVELEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1FBRTVCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssVUFBVSxDQUFDLEtBQVksRUFBRSxZQUFvQjtRQUNuRCxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQy9CLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDcEMsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3hCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUN4QixHQUFHLElBQUksQ0FBQyxNQUFNO2lCQUNYLE1BQU0sQ0FDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLDhCQUE4QjthQUN4RjtpQkFDQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDeEIsQ0FBQztZQUNGLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7U0FDN0M7UUFFRCxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7U0FDdEQ7UUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssU0FBUyxDQUFDLE1BQWU7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssa0JBQWtCLENBQUMsTUFBZTtRQUN4Qyw0QkFBNEI7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixDQUFDLE1BQWEsRUFBRSxNQUFhLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLEtBQVk7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWEsRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvbE1hcCBmcm9tICdvbC9NYXAnO1xuaW1wb3J0IG9sVmlldywgeyBWaWV3T3B0aW9ucyB9IGZyb20gJ29sL1ZpZXcnO1xuaW1wb3J0IG9sQ29udHJvbEF0dHJpYnV0aW9uIGZyb20gJ29sL2NvbnRyb2wvQXR0cmlidXRpb24nO1xuaW1wb3J0IG9sQ29udHJvbFNjYWxlTGluZSBmcm9tICdvbC9jb250cm9sL1NjYWxlTGluZSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgKiBhcyBvbHByb2o0IGZyb20gJ29sL3Byb2ovcHJvajQnO1xuaW1wb3J0IE9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuaW1wb3J0ICogYXMgb2xpbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcbmltcG9ydCBvbExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJztcbmltcG9ydCBvbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcblxuaW1wb3J0IHByb2o0IGZyb20gJ3Byb2o0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgcGFpcndpc2UsIHNraXBXaGlsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcblxuaW1wb3J0IHsgTGF5ZXJXYXRjaGVyIH0gZnJvbSAnLi4vdXRpbHMvbGF5ZXItd2F0Y2hlcic7XG5pbXBvcnQge1xuICBNYXBWaWV3T3B0aW9ucyxcbiAgTWFwT3B0aW9ucyxcbiAgTWFwQXR0cmlidXRpb25PcHRpb25zLFxuICBNYXBTY2FsZUxpbmVPcHRpb25zLFxuICBNYXBFeHRlbnQsXG4gIE1hcENvbnRyb2xzT3B0aW9uc1xufSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWFwQmFzZSB9IGZyb20gJy4vbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IE1hcFZpZXdDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVycy92aWV3JztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcnMvZ2VvbG9jYXRpb24nO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UsIENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCB7XG4gIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbixcbiAgZ2V0Um9vdFBhcmVudEJ5RGVsZXRpb24sXG4gIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UsXG4gIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVyc1xufSBmcm9tICcuL2xpbmtlZExheWVycy51dGlscyc7XG5cbi8vIFRPRE86IFRoaXMgY2xhc3MgaXMgbWVzc3kuIENsZWFybHkgZGVmaW5lIGl0J3Mgc2NvcGUgYW5kIHRoZSBtYXAgYnJvd3NlcidzLlxuLy8gTW92ZSBzb21lIHN0dWZmIGludG8gY29udHJvbGxlcnMuXG5leHBvcnQgY2xhc3MgSWdvTWFwIGltcGxlbWVudHMgTWFwQmFzZSB7XG4gIHB1YmxpYyBvbDogb2xNYXA7XG4gIHB1YmxpYyBmb3JjZWRPZmZsaW5lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgbGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4oW10pO1xuICBwdWJsaWMgbGF5ZXJzQWRkZWRCeUNsaWNrJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4odW5kZWZpbmVkKTtcbiAgcHVibGljIHN0YXR1cyQ6IFN1YmplY3Q8U3ViamVjdFN0YXR1cz47XG4gIHB1YmxpYyBwcm9wZXJ0eUNoYW5nZSQ6IFN1YmplY3Q8eyBldmVudDogT2JqZWN0RXZlbnQ7IGxheWVyOiBMYXllciB9PjtcbiAgcHVibGljIG92ZXJsYXk6IE92ZXJsYXk7XG4gIHB1YmxpYyBxdWVyeVJlc3VsdHNPdmVybGF5OiBPdmVybGF5O1xuICBwdWJsaWMgc2VhcmNoUmVzdWx0c092ZXJsYXk6IE92ZXJsYXk7XG4gIHB1YmxpYyB2aWV3Q29udHJvbGxlcjogTWFwVmlld0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBnZW9sb2NhdGlvbkNvbnRyb2xsZXI6IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcjtcbiAgcHVibGljIHN3aXBlRW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIG1hcENlbnRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPihudWxsKTtcblxuICBwdWJsaWMgYnVmZmVyRGF0YVNvdXJjZTogRmVhdHVyZURhdGFTb3VyY2U7XG5cbiAgcHJpdmF0ZSBsYXllcldhdGNoZXI6IExheWVyV2F0Y2hlcjtcbiAgcHJpdmF0ZSBvcHRpb25zOiBNYXBPcHRpb25zO1xuICBwcml2YXRlIG1hcFZpZXdPcHRpb25zOiBNYXBWaWV3T3B0aW9ucztcbiAgcHJpdmF0ZSBkZWZhdWx0T3B0aW9uczogUGFydGlhbDxNYXBPcHRpb25zPiA9IHtcbiAgICBjb250cm9sczogeyBhdHRyaWJ1dGlvbjogZmFsc2UgfVxuICB9O1xuXG4gIGdldCBsYXllcnMoKTogTGF5ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzJC52YWx1ZTtcbiAgfVxuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgcHJvamVjdGlvbkNvZGUgKi9cbiAgZ2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0aW9uQ29kZTtcbiAgfVxuXG4gIGdldCB2aWV3UHJvamVjdGlvbigpOiBvbHByb2ouUHJvamVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKCk7XG4gIH1cblxuICBnZXQgcHJvamVjdGlvbkNvZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52aWV3UHJvamVjdGlvbi5nZXRDb2RlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBvcHRpb25zPzogTWFwT3B0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlPzogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlPzogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcbiAgICB0aGlzLmxheWVyV2F0Y2hlciA9IG5ldyBMYXllcldhdGNoZXIoKTtcbiAgICB0aGlzLnN0YXR1cyQgPSB0aGlzLmxheWVyV2F0Y2hlci5zdGF0dXMkO1xuICAgIHRoaXMucHJvcGVydHlDaGFuZ2UkID0gdGhpcy5sYXllcldhdGNoZXIucHJvcGVydHlDaGFuZ2UkO1xuICAgIG9scHJvajQucmVnaXN0ZXIocHJvajQpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICBjb25zdCBjb250cm9scyA9IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY29udHJvbHMpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb24pIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRpb25PcHQgPSAoXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uID09PSB0cnVlXG4gICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICA6IHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvblxuICAgICAgICApIGFzIE1hcEF0dHJpYnV0aW9uT3B0aW9ucztcbiAgICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sQXR0cmlidXRpb24oYXR0cmlidXRpb25PcHQpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lKSB7XG4gICAgICAgIGNvbnN0IHNjYWxlTGluZU9wdCA9IChcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lID09PSB0cnVlXG4gICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICA6IHRoaXMub3B0aW9ucy5jb250cm9scy5zY2FsZUxpbmVcbiAgICAgICAgKSBhcyBNYXBTY2FsZUxpbmVPcHRpb25zO1xuICAgICAgICBjb250cm9scy5wdXNoKG5ldyBvbENvbnRyb2xTY2FsZUxpbmUoc2NhbGVMaW5lT3B0KSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpbnRlcmFjdGlvbnMgPSB7fTtcbiAgICBpZiAodGhpcy5vcHRpb25zLmludGVyYWN0aW9ucyA9PT0gZmFsc2UpIHtcbiAgICAgIGludGVyYWN0aW9ucyA9IHtcbiAgICAgICAgYWx0U2hpZnREcmFnUm90YXRlOiBmYWxzZSxcbiAgICAgICAgZG91YmxlQ2xpY2tab29tOiBmYWxzZSxcbiAgICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxuICAgICAgICBtb3VzZVdoZWVsWm9vbTogZmFsc2UsXG4gICAgICAgIHNoaWZ0RHJhZ1pvb206IGZhbHNlLFxuICAgICAgICBkcmFnUGFuOiBmYWxzZSxcbiAgICAgICAgcGluY2hSb3RhdGU6IGZhbHNlLFxuICAgICAgICBwaW5jaFpvb206IGZhbHNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMub2wgPSBuZXcgb2xNYXAoe1xuICAgICAgaW50ZXJhY3Rpb25zOiBvbGludGVyYWN0aW9uLmRlZmF1bHRzKGludGVyYWN0aW9ucyksXG4gICAgICBjb250cm9sc1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRWaWV3KHRoaXMub3B0aW9ucy52aWV3IHx8IHt9KTtcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyID0gbmV3IE1hcFZpZXdDb250cm9sbGVyKHtcbiAgICAgIHN0YXRlSGlzdG9yeTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMudmlld0NvbnRyb2xsZXIuc2V0T2xNYXAodGhpcy5vbCk7XG4gICAgdGhpcy5vdmVybGF5ID0gbmV3IE92ZXJsYXkodGhpcyk7XG4gICAgdGhpcy5xdWVyeVJlc3VsdHNPdmVybGF5ID0gbmV3IE92ZXJsYXkodGhpcyk7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xuICAgIHRoaXMub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XG4gICAgICB0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlciA9IG5ldyBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXIoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9qZWN0aW9uOiB0aGlzLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgKTtcbiAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyLnNldE9sTWFwKHRoaXMub2wpO1xuICAgICAgaWYgKHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyKSB7XG4gICAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyLnVwZGF0ZUdlb2xvY2F0aW9uT3B0aW9ucyhcbiAgICAgICAgICB0aGlzLm1hcFZpZXdPcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmxheWVycyQucGlwZShwYWlyd2lzZSgpKS5zdWJzY3JpYmUoKFtwcmV2TGF5ZXJzLCBjdXJyZW50TGF5ZXJzXSkgPT4ge1xuICAgICAgICBsZXQgcHJldkxheWVyc0lkO1xuICAgICAgICBpZiAocHJldkxheWVycykge1xuICAgICAgICAgIHByZXZMYXllcnNJZCA9IHByZXZMYXllcnMubWFwKChsKSA9PiBsLmlkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXllcnMgPSBjdXJyZW50TGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobCkgPT4gIXByZXZMYXllcnNJZC5pbmNsdWRlcyhsLmlkKVxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICAgICAgaWYgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzKSB7XG4gICAgICAgICAgICBsYXllci5vbC5vbmNlKCdwb3N0cmVuZGVyJywgKCkgPT4ge1xuICAgICAgICAgICAgICBpbml0TGF5ZXJTeW5jRnJvbVJvb3RQYXJlbnRMYXllcnModGhpcywgbGF5ZXJzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1vbml0b3JSb3RhdGlvbigpO1xuICAgIH0pO1xuICAgIHRoaXMucHJvcGVydHlDaGFuZ2UkXG4gICAgICAucGlwZShza2lwV2hpbGUoKHBjKSA9PiAhcGMpKVxuICAgICAgLnN1YnNjcmliZSgocCkgPT4gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZSh0aGlzLCBwLmV2ZW50LCBwLmxheWVyKSk7XG4gIH1cblxuICBzZXRUYXJnZXQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMub2wuc2V0VGFyZ2V0KGlkKTtcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sYXllcldhdGNoZXIuc3Vic2NyaWJlKCgpID0+IHt9LCBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sYXllcldhdGNoZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaWV3KG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XG4gICAgY29uc3QgY3VycmVudFZpZXcgPSB0aGlzLm9sLmdldFZpZXcoKTtcbiAgICBjb25zdCB2aWV3T3B0aW9uczogTWFwVmlld09wdGlvbnMgPSB7XG4gICAgICAuLi5jdXJyZW50Vmlldy5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLnpvb20gJiYgb3B0aW9ucy5yZXNvbHV0aW9uID09IG51bGwpIHtcbiAgICAgIHZpZXdPcHRpb25zLnJlc29sdXRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRWaWV3KHZpZXdPcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5tYXhab29tT25FeHRlbnQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubWF4Wm9vbU9uRXh0ZW50ID0gb3B0aW9ucy5tYXhab29tT25FeHRlbnQ7XG4gICAgfVxuICAgIHRoaXMubWFwVmlld09wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWFwIHZpZXdcbiAgICogQHBhcmFtIG9wdGlvbnMgTWFwIHZpZXcgb3B0aW9uc1xuICAgKi9cbiAgc2V0VmlldyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xuICAgIGlmICh0aGlzLnZpZXdDb250cm9sbGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIuY2xlYXJTdGF0ZUhpc3RvcnkoKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3T3B0aW9uczogVmlld09wdGlvbnMgPSB7IGNvbnN0cmFpblJlc29sdXRpb246IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgICBpZiAob3B0aW9ucy5jZW50ZXIpIHtcbiAgICAgIHZpZXdPcHRpb25zLmNlbnRlciA9IG9scHJvai5mcm9tTG9uTGF0KFxuICAgICAgICBvcHRpb25zLmNlbnRlcixcbiAgICAgICAgb3B0aW9ucy5wcm9qZWN0aW9uXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMub2wuc2V0VmlldyhuZXcgb2xWaWV3KHZpZXdPcHRpb25zKSk7XG5cbiAgICBpZiAob3B0aW9ucy5tYXhMYXllclpvb21FeHRlbnQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50ID0gb3B0aW9ucy5tYXhMYXllclpvb21FeHRlbnQ7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29udHJvbHModmFsdWU6IE1hcENvbnRyb2xzT3B0aW9ucykge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcbiAgICBpZiAodmFsdWUuYXR0cmlidXRpb24pIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0aW9uT3B0ID0gKFxuICAgICAgICB2YWx1ZS5hdHRyaWJ1dGlvbiA9PT0gdHJ1ZSA/IHt9IDogdmFsdWUuYXR0cmlidXRpb25cbiAgICAgICkgYXMgTWFwQXR0cmlidXRpb25PcHRpb25zO1xuICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sQXR0cmlidXRpb24oYXR0cmlidXRpb25PcHQpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnNjYWxlTGluZSkge1xuICAgICAgY29uc3Qgc2NhbGVMaW5lT3B0ID0gKFxuICAgICAgICB2YWx1ZS5zY2FsZUxpbmUgPT09IHRydWUgPyB7fSA6IHZhbHVlLnNjYWxlTGluZVxuICAgICAgKSBhcyBNYXBTY2FsZUxpbmVPcHRpb25zO1xuICAgICAgY29udHJvbHMucHVzaChuZXcgb2xDb250cm9sU2NhbGVMaW5lKHNjYWxlTGluZU9wdCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDb250cm9scyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMub2wuZ2V0Q29udHJvbHMoKS5nZXRBcnJheSgpKTtcbiAgICBjdXJyZW50Q29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgdGhpcy5vbC5yZW1vdmVDb250cm9sKGNvbnRyb2wpO1xuICAgIH0pO1xuICAgIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICAgIHRoaXMub2wuYWRkQ29udHJvbChjb250cm9sKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIFRPRE86IE1vdmUgdG8gVmlld0NvbnRyb2xsZXIgYW5kIHVwZGF0ZSBldmVyeSBwbGFjZSBpdCdzIHVzZWRcbiAgICovXG4gIGdldENlbnRlcihwcm9qZWN0aW9uPzogc3RyaW5nIHwgT2xQcm9qZWN0aW9uKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0Q2VudGVyKHByb2plY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogVE9ETzogTW92ZSB0byBWaWV3Q29udHJvbGxlciBhbmQgdXBkYXRlIGV2ZXJ5IHBsYWNlIGl0J3MgdXNlZFxuICAgKi9cbiAgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBNYXBFeHRlbnQge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldEV4dGVudChwcm9qZWN0aW9uKTtcbiAgfVxuXG4gIC8vIFRPRE86IE1vdmUgdG8gVmlld0NvbnRyb2xsZXIgYW5kIHVwZGF0ZSBldmVyeSBwbGFjZSBpdCdzIHVzZWRcbiAgZ2V0Wm9vbSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZpZXdDb250cm9sbGVyLmdldFpvb20oKTtcbiAgfVxuXG4gIGNoYW5nZUJhc2VMYXllcihiYXNlTGF5ZXI6IExheWVyKSB7XG4gICAgaWYgKCFiYXNlTGF5ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGJsIG9mIHRoaXMuZ2V0QmFzZUxheWVycygpKSB7XG4gICAgICBibC52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgYmFzZUxheWVyLnZpc2libGUgPSB0cnVlO1xuXG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWluWm9vbShcbiAgICAgIGJhc2VMYXllci5kYXRhU291cmNlLm9wdGlvbnMubWluWm9vbSB8fCAodGhpcy5vcHRpb25zLnZpZXcgfHwge30pLm1pblpvb21cbiAgICApO1xuICAgIHRoaXMudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldE1heFpvb20oXG4gICAgICBiYXNlTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLm1heFpvb20gfHwgKHRoaXMub3B0aW9ucy52aWV3IHx8IHt9KS5tYXhab29tXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhc2VMYXllcnMoKTogTGF5ZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbHRlcigobGF5ZXI6IExheWVyKSA9PiBsYXllci5iYXNlTGF5ZXIgPT09IHRydWUpO1xuICB9XG5cbiAgZ2V0TGF5ZXJCeUlkKGlkOiBzdHJpbmcpOiBMYXllciB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmQoKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuaWQgJiYgbGF5ZXIuaWQgPT09IGlkKTtcbiAgfVxuXG4gIGdldExheWVyQnlBbGlhcyhhbGlhczogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gbGF5ZXIuYWxpYXMgJiYgbGF5ZXIuYWxpYXMgPT09IGFsaWFzXG4gICAgKTtcbiAgfVxuXG4gIGdldExheWVyQnlPbFVJZChvbFVJZDogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxuICAgICAgKGxheWVyOiBMYXllcikgPT4gZ2V0VWlkKGxheWVyLm9sKSAmJiBnZXRVaWQobGF5ZXIub2wpID09PSBvbFVJZFxuICAgICk7XG4gIH1cblxuICBnZXRMYXllckJ5T2xMYXllcihvbExheWVyOiBvbExheWVyPG9sU291cmNlPik6IExheWVyIHtcbiAgICBjb25zdCBvbFVJZCA9IGdldFVpZChvbExheWVyKTtcbiAgICByZXR1cm4gdGhpcy5nZXRMYXllckJ5T2xVSWQob2xVSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpbmdsZSBsYXllclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVyKGxheWVyOiBMYXllciwgcHVzaCA9IHRydWUpIHtcbiAgICB0aGlzLmFkZExheWVycyhbbGF5ZXJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWFueSBsYXllcnNcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gYWRkXG4gICAqIEBwYXJhbSBwdXNoIERFUFJFQ0FURURcbiAgICovXG4gIGFkZExheWVycyhsYXllcnM6IExheWVyW10sIHB1c2ggPSB0cnVlKSB7XG4gICAgbGV0IG9mZnNldFpJbmRleCA9IDA7XG4gICAgbGV0IG9mZnNldEJhc2VMYXllclpJbmRleCA9IDA7XG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4ge1xuICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxheWVyLnpJbmRleFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogbGF5ZXIuYmFzZUxheWVyXG4gICAgICAgICAgPyBvZmZzZXRCYXNlTGF5ZXJaSW5kZXgrK1xuICAgICAgICAgIDogb2Zmc2V0WkluZGV4Kys7XG4gICAgICAgIHJldHVybiB0aGlzLmRvQWRkTGF5ZXIobGF5ZXIsIG9mZnNldCk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigobGF5ZXI6IExheWVyIHwgdW5kZWZpbmVkKSA9PiBsYXllciAhPT0gdW5kZWZpbmVkKTtcbiAgICB0aGlzLnNldExheWVycyhbXS5jb25jYXQodGhpcy5sYXllcnMsIGFkZGVkTGF5ZXJzKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgc2luZ2xlIGxheWVyXG4gICAqIEBwYXJhbSBsYXllciBMYXllciB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZUxheWVyKGxheWVyOiBMYXllcikge1xuICAgIHRoaXMucmVtb3ZlTGF5ZXJzKFtsYXllcl0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBtYW55IGxheWVyc1xuICAgKiBAcGFyYW0gbGF5ZXJzIExheWVycyB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZUxheWVycyhsYXllcnM6IExheWVyW10pIHtcbiAgICBjb25zdCBuZXdMYXllcnMgPSB0aGlzLmxheWVycyQudmFsdWUuc2xpY2UoMCk7XG4gICAgY29uc3QgbGF5ZXJzVG9SZW1vdmUgPSBbXTtcbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXI6IExheWVyKSA9PiB7XG4gICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBWZWN0b3JMYXllcikge1xuICAgICAgICBsYXllci5yZW1vdmVMYXllckZyb21JREIoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluZGV4ID0gbmV3TGF5ZXJzLmluZGV4T2YobGF5ZXIpO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgbGF5ZXJzVG9SZW1vdmUucHVzaChsYXllcik7XG4gICAgICAgIG5ld0xheWVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKGxheWVyLCBsYXllcnNUb1JlbW92ZSk7XG4gICAgICAgIGxheWVyc1RvUmVtb3ZlLm1hcCgobGlua2VkTGF5ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBsaW5rZWRJbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxpbmtlZExheWVyKTtcbiAgICAgICAgICBpZiAobGlua2VkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgbmV3TGF5ZXJzLnNwbGljZShsaW5rZWRJbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxheWVyc1RvUmVtb3ZlLmZvckVhY2goKGxheWVyOiBMYXllcikgPT4gdGhpcy5kb1JlbW92ZUxheWVyKGxheWVyKSk7XG4gICAgdGhpcy5zZXRMYXllcnMobmV3TGF5ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGxpc3Qgb2YgbGlua2VkIGxheWVycyB0byBkZWxldGVcbiAgICogQHBhcmFtIHNyY0xheWVyIExheWVyIHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgZGVsZXRpb25cbiAgICogQHBhcmFtIGxheWVyc1RvUmVtb3ZlIGxpc3QgdG8gYXBwZW5kIHRoZSBsYXllciB0byBkZWxldGUgaW50b1xuICAgKi9cbiAgaGFuZGxlTGlua2VkTGF5ZXJzRGVsZXRpb24oc3JjTGF5ZXI6IExheWVyLCBsYXllcnNUb1JlbW92ZTogTGF5ZXJbXSkge1xuICAgIGxldCByb290UGFyZW50QnlEZWxldGlvbiA9IGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKHRoaXMsIHNyY0xheWVyKTtcbiAgICBpZiAoIXJvb3RQYXJlbnRCeURlbGV0aW9uKSB7XG4gICAgICByb290UGFyZW50QnlEZWxldGlvbiA9IHNyY0xheWVyO1xuICAgIH1cbiAgICBjb25zdCBjbGJkID0gZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKHRoaXMsIHJvb3RQYXJlbnRCeURlbGV0aW9uLCBbXG4gICAgICByb290UGFyZW50QnlEZWxldGlvblxuICAgIF0pO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgY2xiZCkge1xuICAgICAgbGF5ZXJzVG9SZW1vdmUucHVzaChsYXllcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgbGF5ZXJzXG4gICAqL1xuICByZW1vdmVBbGxMYXllcnMoKSB7XG4gICAgdGhpcy5sYXllcnMuZm9yRWFjaCgobGF5ZXI6IExheWVyKSA9PiB0aGlzLmRvUmVtb3ZlTGF5ZXIobGF5ZXIpKTtcbiAgICB0aGlzLmxheWVycyQubmV4dChbXSk7XG4gIH1cblxuICByYWlzZUxheWVyKGxheWVyOiBMYXllcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRMYXllckluZGV4KGxheWVyKTtcbiAgICBpZiAoaW5kZXggPiAxKSB7XG4gICAgICB0aGlzLm1vdmVMYXllcihsYXllciwgaW5kZXgsIGluZGV4IC0gMSk7XG4gICAgfVxuICB9XG5cbiAgcmFpc2VMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIHRoaXMucmFpc2VMYXllcihsYXllcik7XG4gICAgfVxuICB9XG5cbiAgbG93ZXJMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XG4gICAgaWYgKGluZGV4IDwgdGhpcy5sYXllcnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5tb3ZlTGF5ZXIobGF5ZXIsIGluZGV4LCBpbmRleCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGxvd2VyTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xuICAgIGNvbnN0IHJldmVyc2VMYXllcnMgPSBsYXllcnMucmV2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgcmV2ZXJzZUxheWVycykge1xuICAgICAgdGhpcy5sb3dlckxheWVyKGxheWVyKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlTGF5ZXIobGF5ZXI6IExheWVyLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcbiAgICBjb25zdCBsYXllclRvID0gdGhpcy5sYXllcnNbdG9dO1xuICAgIGNvbnN0IHpJbmRleFRvID0gbGF5ZXJUby56SW5kZXg7XG4gICAgY29uc3QgekluZGV4RnJvbSA9IGxheWVyLnpJbmRleDtcblxuICAgIGlmIChsYXllclRvLmJhc2VMYXllciB8fCBsYXllci5iYXNlTGF5ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsYXllci56SW5kZXggPSB6SW5kZXhUbztcbiAgICBsYXllclRvLnpJbmRleCA9IHpJbmRleEZyb207XG5cbiAgICB0aGlzLmxheWVyc1t0b10gPSBsYXllcjtcbiAgICB0aGlzLmxheWVyc1tmcm9tXSA9IGxheWVyVG87XG4gICAgdGhpcy5sYXllcnMkLm5leHQodGhpcy5sYXllcnMuc2xpY2UoMCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxheWVyIHRvIHRoZSBPTCBtYXAgYW5kIHN0YXJ0IHdhdGNoaW5nLiBJZiB0aGUgbGF5ZXIgaXMgYWxyZWFkeVxuICAgKiBhZGRlZCB0byB0aGlzIG1hcCwgbWFrZSBpdCB2aXNpYmxlIGJ1dCBkb24ndCBhZGQgaXQgb25lIGFnYWluLlxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAgICogQHJldHVybnMgVGhlIGxheWVyIGFkZGVkLCBpZiBhbnlcbiAgICovXG4gIHByaXZhdGUgZG9BZGRMYXllcihsYXllcjogTGF5ZXIsIG9mZnNldFpJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGxheWVyLmJhc2VMYXllciAmJiBsYXllci52aXNpYmxlKSB7XG4gICAgICB0aGlzLmNoYW5nZUJhc2VMYXllcihsYXllcik7XG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdMYXllciA9IHRoaXMuZ2V0TGF5ZXJCeUlkKGxheWVyLmlkKTtcbiAgICBpZiAoZXhpc3RpbmdMYXllciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBleGlzdGluZ0xheWVyLnZpc2libGUgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnpJbmRleCkge1xuICAgICAgbGF5ZXIuekluZGV4ICs9IDEwO1xuICAgIH1cblxuICAgIGlmIChsYXllci56SW5kZXggPT09IHVuZGVmaW5lZCB8fCBsYXllci56SW5kZXggPT09IDApIHtcbiAgICAgIGNvbnN0IG1heFpJbmRleCA9IE1hdGgubWF4KFxuICAgICAgICBsYXllci5iYXNlTGF5ZXIgPyAwIDogMTAsXG4gICAgICAgIC4uLnRoaXMubGF5ZXJzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChsKSA9PiBsLmJhc2VMYXllciA9PT0gbGF5ZXIuYmFzZUxheWVyICYmIGwuekluZGV4IDwgMjAwIC8vIHpJbmRleCA+IDIwMCA9IHN5c3RlbSBsYXllclxuICAgICAgICAgIClcbiAgICAgICAgICAubWFwKChsKSA9PiBsLnpJbmRleClcbiAgICAgICk7XG4gICAgICBsYXllci56SW5kZXggPSBtYXhaSW5kZXggKyAxICsgb2Zmc2V0WkluZGV4O1xuICAgIH1cblxuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIuekluZGV4ID4gOSkge1xuICAgICAgbGF5ZXIuekluZGV4ID0gMTA7IC8vIGJhc2VsYXllciBtdXN0IGhhdmUgekluZGV4IDwgMTBcbiAgICB9XG5cbiAgICBsYXllci5zZXRNYXAodGhpcyk7XG4gICAgdGhpcy5sYXllcldhdGNoZXIud2F0Y2hMYXllcihsYXllcik7XG4gICAgdGhpcy5vbC5hZGRMYXllcihsYXllci5vbCk7XG5cbiAgICByZXR1cm4gbGF5ZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGF5ZXIgZnJvbSB0aGUgT0wgbWFwIGFuZCBzdG9wIHdhdGNoaW5nXG4gICAqIEBwYXJhbSBsYXllciBMYXllclxuICAgKi9cbiAgcHJpdmF0ZSBkb1JlbW92ZUxheWVyKGxheWVyOiBMYXllcikge1xuICAgIHRoaXMubGF5ZXJXYXRjaGVyLnVud2F0Y2hMYXllcihsYXllcik7XG4gICAgdGhpcy5vbC5yZW1vdmVMYXllcihsYXllci5vbCk7XG4gICAgbGF5ZXIuc2V0TWFwKHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBsYXllcnMgb2JzZXJ2YWJsZVxuICAgKiBAcGFyYW0gbGF5ZXJzIExheWVyc1xuICAgKi9cbiAgcHJpdmF0ZSBzZXRMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgdGhpcy5sYXllcnMkLm5leHQodGhpcy5zb3J0TGF5ZXJzQnlaSW5kZXgobGF5ZXJzKS5zbGljZSgwKSk7XG4gIH1cblxuICAvKipcbiAgICogU29ydCBsYXllcnMgYnkgZGVzY2VuZGluZyB6SW5kZXhcbiAgICogQHBhcmFtIGxheWVycyBBcnJheSBvZiBsYXllcnNcbiAgICogQHJldHVybnMgVGhlIG9yaWdpbmFsIGFycmF5LCBzb3J0ZWQgYnkgekluZGV4XG4gICAqL1xuICBwcml2YXRlIHNvcnRMYXllcnNCeVpJbmRleChsYXllcnM6IExheWVyW10pIHtcbiAgICAvLyBTb3J0IGJ5IGRlc2NlbmRpbmcgekluZGV4XG4gICAgcmV0dXJuIGxheWVycy5zb3J0KFxuICAgICAgKGxheWVyMTogTGF5ZXIsIGxheWVyMjogTGF5ZXIpID0+IGxheWVyMi56SW5kZXggLSBsYXllcjEuekluZGV4XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGF5ZXIgaW5kZXggaW4gdGhlIG1hcCdzIGluZW5yIGFycmF5IG9mIGxheWVyc1xuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAgICogQHJldHVybnMgVGhlIGxheWVyIGluZGV4XG4gICAqL1xuICBwcml2YXRlIGdldExheWVySW5kZXgobGF5ZXI6IExheWVyKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzLmZpbmRJbmRleCgoX2xheWVyOiBMYXllcikgPT4gX2xheWVyID09PSBsYXllcik7XG4gIH1cbn1cbiJdfQ==
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sTUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxvQkFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVqQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBVyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JFLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixpQ0FBaUMsRUFDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qiw4RUFBOEU7QUFDOUUsb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxNQUFNO0lBNENQO0lBQ0E7SUE1Q0gsRUFBRSxDQUFRO0lBQ1YsY0FB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Q0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdFN0YXR1cyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCBvbE1hcCBmcm9tICdvbC9NYXAnO1xyXG5pbXBvcnQgeyBPYmplY3RFdmVudCB9IGZyb20gJ29sL09iamVjdCc7XHJcbmltcG9ydCBvbFZpZXcsIHsgVmlld09wdGlvbnMgfSBmcm9tICdvbC9WaWV3JztcclxuaW1wb3J0IG9sQ29udHJvbEF0dHJpYnV0aW9uIGZyb20gJ29sL2NvbnRyb2wvQXR0cmlidXRpb24nO1xyXG5pbXBvcnQgb2xDb250cm9sU2NhbGVMaW5lIGZyb20gJ29sL2NvbnRyb2wvU2NhbGVMaW5lJztcclxuaW1wb3J0ICogYXMgb2xpbnRlcmFjdGlvbiBmcm9tICdvbC9pbnRlcmFjdGlvbic7XHJcbmltcG9ydCBvbExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJztcclxuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgT2xQcm9qZWN0aW9uIGZyb20gJ29sL3Byb2ovUHJvamVjdGlvbic7XHJcbmltcG9ydCAqIGFzIG9scHJvajQgZnJvbSAnb2wvcHJvai9wcm9qNCc7XHJcbmltcG9ydCBvbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcclxuaW1wb3J0IHsgZ2V0VWlkIH0gZnJvbSAnb2wvdXRpbCc7XHJcblxyXG5pbXBvcnQgcHJvajQgZnJvbSAncHJvajQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHBhaXJ3aXNlLCBza2lwV2hpbGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcclxuaW1wb3J0IHsgTGF5ZXIsIFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcclxuaW1wb3J0IHsgTGF5ZXJXYXRjaGVyIH0gZnJvbSAnLi4vdXRpbHMvbGF5ZXItd2F0Y2hlcic7XHJcbmltcG9ydCB7IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcnMvZ2VvbG9jYXRpb24nO1xyXG5pbXBvcnQgeyBNYXBWaWV3Q29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcnMvdmlldyc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uLFxyXG4gIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uLFxyXG4gIGhhbmRsZUxheWVyUHJvcGVydHlDaGFuZ2UsXHJcbiAgaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzXHJcbn0gZnJvbSAnLi9saW5rZWRMYXllcnMudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXBCYXNlIH0gZnJvbSAnLi9tYXAuYWJzdHJhY3QnO1xyXG5pbXBvcnQge1xyXG4gIE1hcEF0dHJpYnV0aW9uT3B0aW9ucyxcclxuICBNYXBDb250cm9sc09wdGlvbnMsXHJcbiAgTWFwRXh0ZW50LFxyXG4gIE1hcE9wdGlvbnMsXHJcbiAgTWFwU2NhbGVMaW5lT3B0aW9ucyxcclxuICBNYXBWaWV3T3B0aW9uc1xyXG59IGZyb20gJy4vbWFwLmludGVyZmFjZSc7XHJcblxyXG4vLyBUT0RPOiBUaGlzIGNsYXNzIGlzIG1lc3N5LiBDbGVhcmx5IGRlZmluZSBpdCdzIHNjb3BlIGFuZCB0aGUgbWFwIGJyb3dzZXIncy5cclxuLy8gTW92ZSBzb21lIHN0dWZmIGludG8gY29udHJvbGxlcnMuXHJcbmV4cG9ydCBjbGFzcyBJZ29NYXAgaW1wbGVtZW50cyBNYXBCYXNlIHtcclxuICBwdWJsaWMgb2w6IG9sTWFwO1xyXG4gIHB1YmxpYyBmb3JjZWRPZmZsaW5lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBsYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPihbXSk7XHJcbiAgcHVibGljIGxheWVyc0FkZGVkQnlDbGljayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyW10+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIHN0YXR1cyQ6IFN1YmplY3Q8U3ViamVjdFN0YXR1cz47XHJcbiAgcHVibGljIHByb3BlcnR5Q2hhbmdlJDogU3ViamVjdDx7IGV2ZW50OiBPYmplY3RFdmVudDsgbGF5ZXI6IExheWVyIH0+O1xyXG4gIHB1YmxpYyBvdmVybGF5OiBPdmVybGF5O1xyXG4gIHB1YmxpYyBxdWVyeVJlc3VsdHNPdmVybGF5OiBPdmVybGF5O1xyXG4gIHB1YmxpYyBzZWFyY2hSZXN1bHRzT3ZlcmxheTogT3ZlcmxheTtcclxuICBwdWJsaWMgdmlld0NvbnRyb2xsZXI6IE1hcFZpZXdDb250cm9sbGVyO1xyXG4gIHB1YmxpYyBnZW9sb2NhdGlvbkNvbnRyb2xsZXI6IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlcjtcclxuICBwdWJsaWMgc3dpcGVFbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyBtYXBDZW50ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcltdPihudWxsKTtcclxuXHJcbiAgcHVibGljIGJ1ZmZlckRhdGFTb3VyY2U6IEZlYXR1cmVEYXRhU291cmNlO1xyXG5cclxuICBwcml2YXRlIGxheWVyV2F0Y2hlcjogTGF5ZXJXYXRjaGVyO1xyXG4gIHByaXZhdGUgb3B0aW9uczogTWFwT3B0aW9ucztcclxuICBwcml2YXRlIG1hcFZpZXdPcHRpb25zOiBNYXBWaWV3T3B0aW9ucztcclxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBQYXJ0aWFsPE1hcE9wdGlvbnM+ID0ge1xyXG4gICAgY29udHJvbHM6IHsgYXR0cmlidXRpb246IGZhbHNlIH1cclxuICB9O1xyXG5cclxuICBnZXQgbGF5ZXJzKCk6IExheWVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMubGF5ZXJzJC52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgcHJvamVjdGlvbkNvZGUgKi9cclxuICBnZXQgcHJvamVjdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvamVjdGlvbkNvZGU7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlld1Byb2plY3Rpb24oKTogb2xwcm9qLlByb2plY3Rpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJvamVjdGlvbkNvZGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZpZXdQcm9qZWN0aW9uLmdldENvZGUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgb3B0aW9ucz86IE1hcE9wdGlvbnMsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlPzogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U/OiBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTtcclxuICAgIHRoaXMubGF5ZXJXYXRjaGVyID0gbmV3IExheWVyV2F0Y2hlcigpO1xyXG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5sYXllcldhdGNoZXIuc3RhdHVzJDtcclxuICAgIHRoaXMucHJvcGVydHlDaGFuZ2UkID0gdGhpcy5sYXllcldhdGNoZXIucHJvcGVydHlDaGFuZ2UkO1xyXG4gICAgb2xwcm9qNC5yZWdpc3Rlcihwcm9qNCk7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIGluaXQoKSB7XHJcbiAgICBjb25zdCBjb250cm9scyA9IFtdO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scykge1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbnRyb2xzLmF0dHJpYnV0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRpb25PcHQgPSAoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY29udHJvbHMuYXR0cmlidXRpb24gPT09IHRydWVcclxuICAgICAgICAgICAgPyB7fVxyXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9ucy5jb250cm9scy5hdHRyaWJ1dGlvblxyXG4gICAgICAgICkgYXMgTWFwQXR0cmlidXRpb25PcHRpb25zO1xyXG4gICAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb250cm9scy5zY2FsZUxpbmUpIHtcclxuICAgICAgICBjb25zdCBzY2FsZUxpbmVPcHQgPSAoXHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lID09PSB0cnVlXHJcbiAgICAgICAgICAgID8ge31cclxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnMuY29udHJvbHMuc2NhbGVMaW5lXHJcbiAgICAgICAgKSBhcyBNYXBTY2FsZUxpbmVPcHRpb25zO1xyXG4gICAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbFNjYWxlTGluZShzY2FsZUxpbmVPcHQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IGludGVyYWN0aW9ucyA9IHt9O1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5pbnRlcmFjdGlvbnMgPT09IGZhbHNlKSB7XHJcbiAgICAgIGludGVyYWN0aW9ucyA9IHtcclxuICAgICAgICBhbHRTaGlmdERyYWdSb3RhdGU6IGZhbHNlLFxyXG4gICAgICAgIGRvdWJsZUNsaWNrWm9vbTogZmFsc2UsXHJcbiAgICAgICAga2V5Ym9hcmQ6IGZhbHNlLFxyXG4gICAgICAgIG1vdXNlV2hlZWxab29tOiBmYWxzZSxcclxuICAgICAgICBzaGlmdERyYWdab29tOiBmYWxzZSxcclxuICAgICAgICBkcmFnUGFuOiBmYWxzZSxcclxuICAgICAgICBwaW5jaFJvdGF0ZTogZmFsc2UsXHJcbiAgICAgICAgcGluY2hab29tOiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub2wgPSBuZXcgb2xNYXAoe1xyXG4gICAgICBpbnRlcmFjdGlvbnM6IG9saW50ZXJhY3Rpb24uZGVmYXVsdHMoaW50ZXJhY3Rpb25zKSxcclxuICAgICAgY29udHJvbHNcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0Vmlldyh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSk7XHJcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyID0gbmV3IE1hcFZpZXdDb250cm9sbGVyKHtcclxuICAgICAgc3RhdGVIaXN0b3J5OiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHRoaXMudmlld0NvbnRyb2xsZXIuc2V0T2xNYXAodGhpcy5vbCk7XHJcbiAgICB0aGlzLm92ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzKTtcclxuICAgIHRoaXMucXVlcnlSZXN1bHRzT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xyXG4gICAgdGhpcy5zZWFyY2hSZXN1bHRzT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMpO1xyXG4gICAgdGhpcy5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcclxuICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIgPSBuZXcgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvamVjdGlvbjogdGhpcy52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSxcclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5nZW9sb2NhdGlvbkNvbnRyb2xsZXIuc2V0T2xNYXAodGhpcy5vbCk7XHJcbiAgICAgIGlmICh0aGlzLmdlb2xvY2F0aW9uQ29udHJvbGxlcikge1xyXG4gICAgICAgIHRoaXMuZ2VvbG9jYXRpb25Db250cm9sbGVyLnVwZGF0ZUdlb2xvY2F0aW9uT3B0aW9ucyhcclxuICAgICAgICAgIHRoaXMubWFwVmlld09wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGF5ZXJzJC5waXBlKHBhaXJ3aXNlKCkpLnN1YnNjcmliZSgoW3ByZXZMYXllcnMsIGN1cnJlbnRMYXllcnNdKSA9PiB7XHJcbiAgICAgICAgbGV0IHByZXZMYXllcnNJZDtcclxuICAgICAgICBpZiAocHJldkxheWVycykge1xyXG4gICAgICAgICAgcHJldkxheWVyc0lkID0gcHJldkxheWVycy5tYXAoKGwpID0+IGwuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYXllcnMgPSBjdXJyZW50TGF5ZXJzLmZpbHRlcihcclxuICAgICAgICAgIChsKSA9PiAhcHJldkxheWVyc0lkLmluY2x1ZGVzKGwuaWQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycykge1xyXG4gICAgICAgICAgICBsYXllci5vbC5vbmNlKCdwb3N0cmVuZGVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVycyh0aGlzLCBsYXllcnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1vbml0b3JSb3RhdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJFxyXG4gICAgICAucGlwZShza2lwV2hpbGUoKHBjKSA9PiAhcGMpKVxyXG4gICAgICAuc3Vic2NyaWJlKChwKSA9PiBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKHRoaXMsIHAuZXZlbnQsIHAubGF5ZXIpKTtcclxuICB9XHJcblxyXG4gIHNldFRhcmdldChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9sLnNldFRhcmdldChpZCk7XHJcbiAgICBpZiAoaWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmxheWVyV2F0Y2hlci5zdWJzY3JpYmUoKCkgPT4ge30sIG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sYXllcldhdGNoZXIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRWaWV3ID0gdGhpcy5vbC5nZXRWaWV3KCk7XHJcbiAgICBjb25zdCB2aWV3T3B0aW9uczogTWFwVmlld09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLmN1cnJlbnRWaWV3LmdldFByb3BlcnRpZXMoKSxcclxuICAgICAgLi4ub3B0aW9uc1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy56b29tICYmIG9wdGlvbnMucmVzb2x1dGlvbiA9PSBudWxsKSB7XHJcbiAgICAgIHZpZXdPcHRpb25zLnJlc29sdXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRWaWV3KHZpZXdPcHRpb25zKTtcclxuICAgIGlmIChvcHRpb25zLm1heFpvb21PbkV4dGVudCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250cm9sbGVyLm1heFpvb21PbkV4dGVudCA9IG9wdGlvbnMubWF4Wm9vbU9uRXh0ZW50O1xyXG4gICAgfVxyXG4gICAgdGhpcy5tYXBWaWV3T3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIG1hcCB2aWV3XHJcbiAgICogQHBhcmFtIG9wdGlvbnMgTWFwIHZpZXcgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHNldFZpZXcob3B0aW9uczogTWFwVmlld09wdGlvbnMpIHtcclxuICAgIGlmICh0aGlzLnZpZXdDb250cm9sbGVyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy52aWV3Q29udHJvbGxlci5jbGVhclN0YXRlSGlzdG9yeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZpZXdPcHRpb25zOiBWaWV3T3B0aW9ucyA9IHsgY29uc3RyYWluUmVzb2x1dGlvbjogdHJ1ZSwgLi4ub3B0aW9ucyB9O1xyXG4gICAgaWYgKG9wdGlvbnMuY2VudGVyKSB7XHJcbiAgICAgIHZpZXdPcHRpb25zLmNlbnRlciA9IG9scHJvai5mcm9tTG9uTGF0KFxyXG4gICAgICAgIG9wdGlvbnMuY2VudGVyLFxyXG4gICAgICAgIG9wdGlvbnMucHJvamVjdGlvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub2wuc2V0VmlldyhuZXcgb2xWaWV3KHZpZXdPcHRpb25zKSk7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMubWF4TGF5ZXJab29tRXh0ZW50KSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50ID0gb3B0aW9ucy5tYXhMYXllclpvb21FeHRlbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDb250cm9scyh2YWx1ZTogTWFwQ29udHJvbHNPcHRpb25zKSB7XHJcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udHJvbHMgPSBbXTtcclxuICAgIGlmICh2YWx1ZS5hdHRyaWJ1dGlvbikge1xyXG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbk9wdCA9IChcclxuICAgICAgICB2YWx1ZS5hdHRyaWJ1dGlvbiA9PT0gdHJ1ZSA/IHt9IDogdmFsdWUuYXR0cmlidXRpb25cclxuICAgICAgKSBhcyBNYXBBdHRyaWJ1dGlvbk9wdGlvbnM7XHJcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbEF0dHJpYnV0aW9uKGF0dHJpYnV0aW9uT3B0KSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUuc2NhbGVMaW5lKSB7XHJcbiAgICAgIGNvbnN0IHNjYWxlTGluZU9wdCA9IChcclxuICAgICAgICB2YWx1ZS5zY2FsZUxpbmUgPT09IHRydWUgPyB7fSA6IHZhbHVlLnNjYWxlTGluZVxyXG4gICAgICApIGFzIE1hcFNjYWxlTGluZU9wdGlvbnM7XHJcbiAgICAgIGNvbnRyb2xzLnB1c2gobmV3IG9sQ29udHJvbFNjYWxlTGluZShzY2FsZUxpbmVPcHQpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50Q29udHJvbHMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLm9sLmdldENvbnRyb2xzKCkuZ2V0QXJyYXkoKSk7XHJcbiAgICBjdXJyZW50Q29udHJvbHMuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xyXG4gICAgICB0aGlzLm9sLnJlbW92ZUNvbnRyb2woY29udHJvbCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcclxuICAgICAgdGhpcy5vbC5hZGRDb250cm9sKGNvbnRyb2wpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqIFRPRE86IE1vdmUgdG8gVmlld0NvbnRyb2xsZXIgYW5kIHVwZGF0ZSBldmVyeSBwbGFjZSBpdCdzIHVzZWRcclxuICAgKi9cclxuICBnZXRDZW50ZXIocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl0ge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0Q2VudGVyKHByb2plY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKiBUT0RPOiBNb3ZlIHRvIFZpZXdDb250cm9sbGVyIGFuZCB1cGRhdGUgZXZlcnkgcGxhY2UgaXQncyB1c2VkXHJcbiAgICovXHJcbiAgZ2V0RXh0ZW50KHByb2plY3Rpb24/OiBzdHJpbmcgfCBPbFByb2plY3Rpb24pOiBNYXBFeHRlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMudmlld0NvbnRyb2xsZXIuZ2V0RXh0ZW50KHByb2plY3Rpb24pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqIFRPRE86IE1vdmUgdG8gVmlld0NvbnRyb2xsZXIgYW5kIHVwZGF0ZSBldmVyeSBwbGFjZSBpdCdzIHVzZWRcclxuICAgKi9cclxuICBnZXRab29tKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy52aWV3Q29udHJvbGxlci5nZXRab29tKCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VCYXNlTGF5ZXIoYmFzZUxheWVyOiBMYXllcikge1xyXG4gICAgaWYgKCFiYXNlTGF5ZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYmwgb2YgdGhpcy5nZXRCYXNlTGF5ZXJzKCkpIHtcclxuICAgICAgYmwudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGJhc2VMYXllci52aXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnZpZXdDb250cm9sbGVyLm9sVmlldy5zZXRNaW5ab29tKFxyXG4gICAgICBiYXNlTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLm1pblpvb20gfHwgKHRoaXMub3B0aW9ucy52aWV3IHx8IHt9KS5taW5ab29tXHJcbiAgICApO1xyXG4gICAgdGhpcy52aWV3Q29udHJvbGxlci5vbFZpZXcuc2V0TWF4Wm9vbShcclxuICAgICAgYmFzZUxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5tYXhab29tIHx8ICh0aGlzLm9wdGlvbnMudmlldyB8fCB7fSkubWF4Wm9vbVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEJhc2VMYXllcnMoKTogTGF5ZXJbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXllcnMuZmlsdGVyKChsYXllcjogTGF5ZXIpID0+IGxheWVyLmJhc2VMYXllciA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXllckJ5SWQoaWQ6IHN0cmluZyk6IExheWVyIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKChsYXllcjogTGF5ZXIpID0+IGxheWVyLmlkICYmIGxheWVyLmlkID09PSBpZCk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXllckJ5QWxpYXMoYWxpYXM6IHN0cmluZyk6IExheWVyIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxyXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBsYXllci5hbGlhcyAmJiBsYXllci5hbGlhcyA9PT0gYWxpYXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXllckJ5T2xVSWQob2xVSWQ6IHN0cmluZyk6IExheWVyIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kKFxyXG4gICAgICAobGF5ZXI6IExheWVyKSA9PiBnZXRVaWQobGF5ZXIub2wpICYmIGdldFVpZChsYXllci5vbCkgPT09IG9sVUlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGF5ZXJCeU9sTGF5ZXIob2xMYXllcjogb2xMYXllcjxvbFNvdXJjZT4pOiBMYXllciB7XHJcbiAgICBjb25zdCBvbFVJZCA9IGdldFVpZChvbExheWVyKTtcclxuICAgIHJldHVybiB0aGlzLmdldExheWVyQnlPbFVJZChvbFVJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBzaW5nbGUgbGF5ZXJcclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXIgdG8gYWRkXHJcbiAgICogQHBhcmFtIHB1c2ggREVQUkVDQVRFRFxyXG4gICAqL1xyXG4gIGFkZExheWVyKGxheWVyOiBMYXllciwgcHVzaCA9IHRydWUpIHtcclxuICAgIHRoaXMuYWRkTGF5ZXJzKFtsYXllcl0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIG1hbnkgbGF5ZXJzXHJcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gYWRkXHJcbiAgICogQHBhcmFtIHB1c2ggREVQUkVDQVRFRFxyXG4gICAqL1xyXG4gIGFkZExheWVycyhsYXllcnM6IExheWVyW10sIHB1c2ggPSB0cnVlKSB7XHJcbiAgICBsZXQgb2Zmc2V0WkluZGV4ID0gMDtcclxuICAgIGxldCBvZmZzZXRCYXNlTGF5ZXJaSW5kZXggPSAwO1xyXG4gICAgY29uc3QgYWRkZWRMYXllcnMgPSBsYXllcnNcclxuICAgICAgLm1hcCgobGF5ZXI6IExheWVyKSA9PiB7XHJcbiAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvZmZzZXQgPSBsYXllci56SW5kZXhcclxuICAgICAgICAgID8gMFxyXG4gICAgICAgICAgOiBsYXllci5iYXNlTGF5ZXJcclxuICAgICAgICAgID8gb2Zmc2V0QmFzZUxheWVyWkluZGV4KytcclxuICAgICAgICAgIDogb2Zmc2V0WkluZGV4Kys7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9BZGRMYXllcihsYXllciwgb2Zmc2V0KTtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcigobGF5ZXI6IExheWVyIHwgdW5kZWZpbmVkKSA9PiBsYXllciAhPT0gdW5kZWZpbmVkKTtcclxuICAgIHRoaXMuc2V0TGF5ZXJzKFtdLmNvbmNhdCh0aGlzLmxheWVycywgYWRkZWRMYXllcnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIHNpbmdsZSBsYXllclxyXG4gICAqIEBwYXJhbSBsYXllciBMYXllciB0byByZW1vdmVcclxuICAgKi9cclxuICByZW1vdmVMYXllcihsYXllcjogTGF5ZXIpIHtcclxuICAgIHRoaXMucmVtb3ZlTGF5ZXJzKFtsYXllcl0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIG1hbnkgbGF5ZXJzXHJcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnMgdG8gcmVtb3ZlXHJcbiAgICovXHJcbiAgcmVtb3ZlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgY29uc3QgbmV3TGF5ZXJzID0gdGhpcy5sYXllcnMkLnZhbHVlLnNsaWNlKDApO1xyXG4gICAgY29uc3QgbGF5ZXJzVG9SZW1vdmUgPSBbXTtcclxuICAgIGxheWVycy5mb3JFYWNoKChsYXllcjogTGF5ZXIpID0+IHtcclxuICAgICAgaWYgKGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIpIHtcclxuICAgICAgICBsYXllci5yZW1vdmVMYXllckZyb21JREIoKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpbmRleCA9IG5ld0xheWVycy5pbmRleE9mKGxheWVyKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICBsYXllcnNUb1JlbW92ZS5wdXNoKGxheWVyKTtcclxuICAgICAgICBuZXdMYXllcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB0aGlzLmhhbmRsZUxpbmtlZExheWVyc0RlbGV0aW9uKGxheWVyLCBsYXllcnNUb1JlbW92ZSk7XHJcbiAgICAgICAgbGF5ZXJzVG9SZW1vdmUubWFwKChsaW5rZWRMYXllcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbGlua2VkSW5kZXggPSBuZXdMYXllcnMuaW5kZXhPZihsaW5rZWRMYXllcik7XHJcbiAgICAgICAgICBpZiAobGlua2VkSW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBuZXdMYXllcnMuc3BsaWNlKGxpbmtlZEluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGF5ZXJzVG9SZW1vdmUuZm9yRWFjaCgobGF5ZXI6IExheWVyKSA9PiB0aGlzLmRvUmVtb3ZlTGF5ZXIobGF5ZXIpKTtcclxuICAgIHRoaXMuc2V0TGF5ZXJzKG5ld0xheWVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdWlsZCBhIGxpc3Qgb2YgbGlua2VkIGxheWVycyB0byBkZWxldGVcclxuICAgKiBAcGFyYW0gc3JjTGF5ZXIgTGF5ZXIgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBkZWxldGlvblxyXG4gICAqIEBwYXJhbSBsYXllcnNUb1JlbW92ZSBsaXN0IHRvIGFwcGVuZCB0aGUgbGF5ZXIgdG8gZGVsZXRlIGludG9cclxuICAgKi9cclxuICBoYW5kbGVMaW5rZWRMYXllcnNEZWxldGlvbihzcmNMYXllcjogTGF5ZXIsIGxheWVyc1RvUmVtb3ZlOiBMYXllcltdKSB7XHJcbiAgICBsZXQgcm9vdFBhcmVudEJ5RGVsZXRpb24gPSBnZXRSb290UGFyZW50QnlEZWxldGlvbih0aGlzLCBzcmNMYXllcik7XHJcbiAgICBpZiAoIXJvb3RQYXJlbnRCeURlbGV0aW9uKSB7XHJcbiAgICAgIHJvb3RQYXJlbnRCeURlbGV0aW9uID0gc3JjTGF5ZXI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjbGJkID0gZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKHRoaXMsIHJvb3RQYXJlbnRCeURlbGV0aW9uLCBbXHJcbiAgICAgIHJvb3RQYXJlbnRCeURlbGV0aW9uXHJcbiAgICBdKTtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgY2xiZCkge1xyXG4gICAgICBsYXllcnNUb1JlbW92ZS5wdXNoKGxheWVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhbGwgbGF5ZXJzXHJcbiAgICovXHJcbiAgcmVtb3ZlQWxsTGF5ZXJzKCkge1xyXG4gICAgdGhpcy5sYXllcnMuZm9yRWFjaCgobGF5ZXI6IExheWVyKSA9PiB0aGlzLmRvUmVtb3ZlTGF5ZXIobGF5ZXIpKTtcclxuICAgIHRoaXMubGF5ZXJzJC5uZXh0KFtdKTtcclxuICB9XHJcblxyXG4gIHJhaXNlTGF5ZXIobGF5ZXI6IExheWVyKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XHJcbiAgICBpZiAoaW5kZXggPiAxKSB7XHJcbiAgICAgIHRoaXMubW92ZUxheWVyKGxheWVyLCBpbmRleCwgaW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJhaXNlTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcclxuICAgICAgdGhpcy5yYWlzZUxheWVyKGxheWVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvd2VyTGF5ZXIobGF5ZXI6IExheWVyKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0TGF5ZXJJbmRleChsYXllcik7XHJcbiAgICBpZiAoaW5kZXggPCB0aGlzLmxheWVycy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMubW92ZUxheWVyKGxheWVyLCBpbmRleCwgaW5kZXggKyAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvd2VyTGF5ZXJzKGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgY29uc3QgcmV2ZXJzZUxheWVycyA9IGxheWVycy5yZXZlcnNlKCk7XHJcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHJldmVyc2VMYXllcnMpIHtcclxuICAgICAgdGhpcy5sb3dlckxheWVyKGxheWVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdmVMYXllcihsYXllcjogTGF5ZXIsIGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xyXG4gICAgY29uc3QgbGF5ZXJUbyA9IHRoaXMubGF5ZXJzW3RvXTtcclxuICAgIGNvbnN0IHpJbmRleFRvID0gbGF5ZXJUby56SW5kZXg7XHJcbiAgICBjb25zdCB6SW5kZXhGcm9tID0gbGF5ZXIuekluZGV4O1xyXG5cclxuICAgIGlmIChsYXllclRvLmJhc2VMYXllciB8fCBsYXllci5iYXNlTGF5ZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxheWVyLnpJbmRleCA9IHpJbmRleFRvO1xyXG4gICAgbGF5ZXJUby56SW5kZXggPSB6SW5kZXhGcm9tO1xyXG5cclxuICAgIHRoaXMubGF5ZXJzW3RvXSA9IGxheWVyO1xyXG4gICAgdGhpcy5sYXllcnNbZnJvbV0gPSBsYXllclRvO1xyXG4gICAgdGhpcy5sYXllcnMkLm5leHQodGhpcy5sYXllcnMuc2xpY2UoMCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgbGF5ZXIgdG8gdGhlIE9MIG1hcCBhbmQgc3RhcnQgd2F0Y2hpbmcuIElmIHRoZSBsYXllciBpcyBhbHJlYWR5XHJcbiAgICogYWRkZWQgdG8gdGhpcyBtYXAsIG1ha2UgaXQgdmlzaWJsZSBidXQgZG9uJ3QgYWRkIGl0IG9uZSBhZ2Fpbi5cclxuICAgKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcclxuICAgKiBAcmV0dXJucyBUaGUgbGF5ZXIgYWRkZWQsIGlmIGFueVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZG9BZGRMYXllcihsYXllcjogTGF5ZXIsIG9mZnNldFpJbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAobGF5ZXIuYmFzZUxheWVyICYmIGxheWVyLnZpc2libGUpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VCYXNlTGF5ZXIobGF5ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nTGF5ZXIgPSB0aGlzLmdldExheWVyQnlJZChsYXllci5pZCk7XHJcbiAgICBpZiAoZXhpc3RpbmdMYXllciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGV4aXN0aW5nTGF5ZXIudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWxheWVyLmJhc2VMYXllciAmJiBsYXllci56SW5kZXgpIHtcclxuICAgICAgbGF5ZXIuekluZGV4ICs9IDEwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsYXllci56SW5kZXggPT09IHVuZGVmaW5lZCB8fCBsYXllci56SW5kZXggPT09IDApIHtcclxuICAgICAgY29uc3QgbWF4WkluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICAgICAgbGF5ZXIuYmFzZUxheWVyID8gMCA6IDEwLFxyXG4gICAgICAgIC4uLnRoaXMubGF5ZXJzXHJcbiAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAobCkgPT4gbC5iYXNlTGF5ZXIgPT09IGxheWVyLmJhc2VMYXllciAmJiBsLnpJbmRleCA8IDIwMCAvLyB6SW5kZXggPiAyMDAgPSBzeXN0ZW0gbGF5ZXJcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5tYXAoKGwpID0+IGwuekluZGV4KVxyXG4gICAgICApO1xyXG4gICAgICBsYXllci56SW5kZXggPSBtYXhaSW5kZXggKyAxICsgb2Zmc2V0WkluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIuekluZGV4ID4gOSkge1xyXG4gICAgICBsYXllci56SW5kZXggPSAxMDsgLy8gYmFzZWxheWVyIG11c3QgaGF2ZSB6SW5kZXggPCAxMFxyXG4gICAgfVxyXG5cclxuICAgIGxheWVyLnNldE1hcCh0aGlzKTtcclxuICAgIHRoaXMubGF5ZXJXYXRjaGVyLndhdGNoTGF5ZXIobGF5ZXIpO1xyXG4gICAgdGhpcy5vbC5hZGRMYXllcihsYXllci5vbCk7XHJcblxyXG4gICAgcmV0dXJuIGxheWVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgbGF5ZXIgZnJvbSB0aGUgT0wgbWFwIGFuZCBzdG9wIHdhdGNoaW5nXHJcbiAgICogQHBhcmFtIGxheWVyIExheWVyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkb1JlbW92ZUxheWVyKGxheWVyOiBMYXllcikge1xyXG4gICAgdGhpcy5sYXllcldhdGNoZXIudW53YXRjaExheWVyKGxheWVyKTtcclxuICAgIHRoaXMub2wucmVtb3ZlTGF5ZXIobGF5ZXIub2wpO1xyXG4gICAgbGF5ZXIuc2V0TWFwKHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGxheWVycyBvYnNlcnZhYmxlXHJcbiAgICogQHBhcmFtIGxheWVycyBMYXllcnNcclxuICAgKi9cclxuICBwcml2YXRlIHNldExheWVycyhsYXllcnM6IExheWVyW10pIHtcclxuICAgIHRoaXMubGF5ZXJzJC5uZXh0KHRoaXMuc29ydExheWVyc0J5WkluZGV4KGxheWVycykuc2xpY2UoMCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29ydCBsYXllcnMgYnkgZGVzY2VuZGluZyB6SW5kZXhcclxuICAgKiBAcGFyYW0gbGF5ZXJzIEFycmF5IG9mIGxheWVyc1xyXG4gICAqIEByZXR1cm5zIFRoZSBvcmlnaW5hbCBhcnJheSwgc29ydGVkIGJ5IHpJbmRleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc29ydExheWVyc0J5WkluZGV4KGxheWVyczogTGF5ZXJbXSkge1xyXG4gICAgLy8gU29ydCBieSBkZXNjZW5kaW5nIHpJbmRleFxyXG4gICAgcmV0dXJuIGxheWVycy5zb3J0KFxyXG4gICAgICAobGF5ZXIxOiBMYXllciwgbGF5ZXIyOiBMYXllcikgPT4gbGF5ZXIyLnpJbmRleCAtIGxheWVyMS56SW5kZXhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgbGF5ZXIgaW5kZXggaW4gdGhlIG1hcCdzIGluZW5yIGFycmF5IG9mIGxheWVyc1xyXG4gICAqIEBwYXJhbSBsYXllciBMYXllclxyXG4gICAqIEByZXR1cm5zIFRoZSBsYXllciBpbmRleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0TGF5ZXJJbmRleChsYXllcjogTGF5ZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmxheWVycy5maW5kSW5kZXgoKF9sYXllcjogTGF5ZXIpID0+IF9sYXllciA9PT0gbGF5ZXIpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as olproj from 'ol/proj';
|
|
2
|
-
import { MAC } from 'ol/has';
|
|
3
1
|
import { NumberUtils } from '@igo2/utils';
|
|
2
|
+
import { MAC } from 'ol/has';
|
|
3
|
+
import * as olproj from 'ol/proj';
|
|
4
4
|
/**
|
|
5
5
|
* This method extracts a coordinate tuple from a string.
|
|
6
6
|
* @param str Any string
|
|
@@ -453,4 +453,4 @@ export function mtmZoneFromLonLat(lonLat) {
|
|
|
453
453
|
}
|
|
454
454
|
return mtmZone;
|
|
455
455
|
}
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU3QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSzFDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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QixJQUFJLE9BQU8sQ0FBQztJQUNaLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQgZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcbmltcG9ydCB7IE1BQyB9IGZyb20gJ29sL2hhcyc7XG5cbmltcG9ydCB7IE51bWJlclV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBNYXBWaWV3U3RhdGUgfSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvamVjdGlvbiB9IGZyb20gJy4vcHJvamVjdGlvbi5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBleHRyYWN0cyBhIGNvb3JkaW5hdGUgdHVwbGUgZnJvbSBhIHN0cmluZy5cbiAqIEBwYXJhbSBzdHIgQW55IHN0cmluZ1xuICogQHBhcmFtIG1hcFByb2plY3Rpb24gc3RyaW5nIE1hcCBQcm9qZWN0aW9uXG4gKiBAcGFyYW0gb3B0cy5mb3JjZU5BIGJvb2xlYW4gRm9yY2UgTm9ydGggQW1lcmljYSBab25lXG4gKiBAcmV0dXJucyBvYmplY3Q6XG4gKiAgICAgICAgICAgICBsb25MYXQ6IENvb3JkaW5hdGUsXG4gKiAgICAgICAgICAgICBtZXNzYWdlOiBNZXNzYWdlIG9mIGVycm9yLFxuICogICAgICAgICAgICAgcmFkaXVzOiByYWRpdXMgb2YgdGhlIGNvbmZpZW5jZSBvZiBjb29yZGluYXRlLFxuICogICAgICAgICAgICAgY29uZjogY29uZmlkZW5jZSBvZiB0aGUgY29vcmRpbmF0ZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvTG9uTGF0KFxuICBzdHI6IHN0cmluZyxcbiAgbWFwUHJvamVjdGlvbjogc3RyaW5nLFxuICBvcHRzOiB7IGZvcmNlTkE/OiBib29sZWFuIH0gPSB7fVxuKToge1xuICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQ7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmFkaXVzOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGNvbmY6IG51bWJlciB8IHVuZGVmaW5lZDtcbn0ge1xuICBsZXQgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdO1xuICBsZXQgY29vcmRTdHI6IHN0cmluZztcbiAgbGV0IG5lZ2F0aXZlTG9uOiBzdHJpbmc7XG4gIGxldCBkZWdyZWVzTG9uOiBzdHJpbmc7XG4gIGxldCBtaW51dGVzTG9uOiBzdHJpbmc7XG4gIGxldCBzZWNvbmRzTG9uOiBzdHJpbmc7XG4gIGxldCBkaXJlY3Rpb25Mb246IHN0cmluZztcbiAgbGV0IGRlY2ltYWxMb246IHN0cmluZztcbiAgbGV0IG5lZ2F0aXZlTGF0OiBzdHJpbmc7XG4gIGxldCBkZWdyZWVzTGF0OiBzdHJpbmc7XG4gIGxldCBtaW51dGVzTGF0OiBzdHJpbmc7XG4gIGxldCBzZWNvbmRzTGF0OiBzdHJpbmc7XG4gIGxldCBkaXJlY3Rpb25MYXQ6IHN0cmluZztcbiAgbGV0IGRlY2ltYWxMYXQ6IHN0cmluZztcbiAgbGV0IHpvbmU6IHN0cmluZztcbiAgbGV0IHJhZGl1czogc3RyaW5nO1xuICBsZXQgY29uZjogc3RyaW5nO1xuICBsZXQgbG9uOiBhbnk7XG4gIGxldCBsYXQ6IGFueTtcblxuICBjb25zdCBwcm9qZWN0aW9uUGF0dGVybiA9ICcoXFxcXHMqO1xcXFxzKltcXFxcZF17NCw2fSknO1xuICBjb25zdCB0b1Byb2plY3Rpb24gPSAnNDMyNic7XG4gIGxldCBwcm9qZWN0aW9uU3RyOiBzdHJpbmc7XG4gIGNvbnN0IHByb2plY3Rpb25SZWdleCA9IG5ldyBSZWdFeHAocHJvamVjdGlvblBhdHRlcm4sICdnJyk7XG5cbiAgY29uc3QgbG9ubGF0Q29vcmQgPSAnKFstK10pPyhbXFxcXGRdezEsM30pKFssLl0oXFxcXGQrKSk/JztcbiAgY29uc3QgbG9uTGF0UGF0dGVybiA9IGAke2xvbmxhdENvb3JkfVtcXFxccyxdKyR7bG9ubGF0Q29vcmR9YDtcbiAgY29uc3QgbG9uTGF0UmVnZXggPSBuZXcgUmVnRXhwKGBeJHtsb25MYXRQYXR0ZXJufSRgLCAnZycpO1xuXG4gIGNvbnN0IGRtc0Nvb3JkID1cbiAgICAnKFswLTldezEsMn0pWzp8wrBdP1xcXFxzKihbMC05XXsxLDJ9KT9bOnxcXCd84oCyfOKAmV0/XFxcXHMqKFswLTldezEsMn0oPzouWzAtOV0rKXswLDF9KT9cXFxccypbXCJ84oCzfOKAnV0/XFxcXHMqJztcbiAgY29uc3QgZG1zQ29vcmRQYXR0ZXJuID0gYCR7ZG1zQ29vcmR9KFtOfFN8RXxXfE9dKSw/XFxcXHMqJHtkbXNDb29yZH0oW058U3xFfFd8T10pYDtcbiAgY29uc3QgZG1zUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkbXNDb29yZFBhdHRlcm59JGAsICdnaScpO1xuXG4gIGNvbnN0IHBhdHRlcm5VdG0gPVxuICAgICcoVVRNKS0/KFxcXFxkezEsMn0pW1xcXFxzLF0qKFxcXFxkK1suLF0/XFxcXGQrKVtcXFxccyxdKyhcXFxcZCtbLixdP1xcXFxkKyknO1xuICBjb25zdCB1dG1SZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5VdG19YCwgJ2dpJyk7XG5cbiAgY29uc3QgcGF0dGVybk10bSA9XG4gICAgJyhNVE0pLT8oXFxcXGR7MSwyfSlbXFxcXHMsXSooXFxcXGQrWy4sXT9cXFxcZCspW1xcXFxzLF0rKFxcXFxkK1suLF0/XFxcXGQrKSc7XG4gIGNvbnN0IG10bVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7cGF0dGVybk10bX1gLCAnZ2knKTtcblxuICBjb25zdCBkZENvb3JkID0gJyhbLStdKT8oXFxcXGR7MSwzfSlbLC5dKFxcXFxkKyknO1xuICBjb25zdCBwYXR0ZXJuRGQgPSBgJHtkZENvb3JkfVxcXFxzKlssXT9cXFxccyoke2RkQ29vcmR9YDtcbiAgY29uc3QgZGRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5EZH1gLCAnZycpO1xuXG4gIGNvbnN0IGRtZENvb3JkID1cbiAgICAnKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVtcXFxccywuXXsxfShcXFxcZHsxLDJ9KVsuLF0/KFxcXFxkezEsNX0pPyc7XG4gIGNvbnN0IHBhdHRlcm5EbWQgPSBgJHtkbWRDb29yZH1cXFxccypbLC5dP1xcXFxzKiR7ZG1kQ29vcmR9YDtcbiAgY29uc3QgZG1kUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuRG1kfWAsICdnJyk7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICBjb25zdCBwYXR0ZXJuQkVMTCA9XG4gICAgJ0xBVFxcXFxzKltcXFxcczpdKlxcXFxzKihbLStdKT8oXFxcXGR7MSwyfSlbXFxcXHMuLF0/KFxcXFxkKyk/W1xcXFxzLixdP1xcXFxzKihcXFxcZHsxLDJ9KFsuLF1cXFxcZCspPyk/XFxcXHMqKE58U3xFfFcpP1xcXFxzKkxPTkdcXFxccypbXFxcXHM6XSpcXFxccyooWy0rXSk/KFxcXFxkezEsM30pW1xcXFxzLixdPyhcXFxcZCspP1tcXFxccy4sXT9cXFxccyooXFxcXGR7MSwyfShbLixdXFxcXGQrKT8pP1xcXFxzKihOfFN8RXxXKT9cXFxccypVTkNcXFxccypbXFxcXHM6XT9cXFxccyooXFxcXGQrKVxcXFxzKkNPTkZcXFxccypbXFxcXHM6XT9cXFxccyooXFxcXGR7MSwzfSknO1xuICBjb25zdCBiZWxsUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuQkVMTH0/YCwgJ2dpJyk7XG5cbiAgY29uc3QgbW1Db29yZCA9ICcoWy0rXT9cXFxcZCspWywuXT8oXFxcXGQrKT8nO1xuICBjb25zdCBtbVBhdHRlcm4gPSBgJHttbUNvb3JkfVtcXFxccyxdKyR7bW1Db29yZH1gO1xuICBjb25zdCBtbVJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7bW1QYXR0ZXJufSRgLCAnZycpO1xuXG4gIGxldCBpc1hZQ29vcmRzID0gZmFsc2U7XG5cbiAgc3RyID0gc3RyLnRvTG9jYWxlVXBwZXJDYXNlKCkudHJpbSgpO1xuXG4gIC8vIEV4dHJhY3QgcHJvamVjdGlvblxuICBpZiAocHJvamVjdGlvblJlZ2V4LnRlc3Qoc3RyKSkge1xuICAgIFtjb29yZFN0ciwgcHJvamVjdGlvblN0cl0gPSBzdHIuc3BsaXQoJzsnKS5tYXAoKHMpID0+IHMudHJpbSgpKTtcbiAgfSBlbHNlIHtcbiAgICBjb29yZFN0ciA9IHN0cjtcbiAgfVxuICBpZiAobG9uTGF0UmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBbLCBuZWdhdGl2ZUxvbiwgbG9uLCAsIGRlY2ltYWxMb24sIG5lZ2F0aXZlTGF0LCBsYXQsICwgZGVjaW1hbExhdF0gPVxuICAgICAgY29vcmRTdHIubWF0Y2gobG9uTGF0UGF0dGVybik7XG5cbiAgICBsb24gPSBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgbG9uICsgJy4nICsgZGVjaW1hbExvbik7XG4gICAgbGF0ID0gcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGxhdCArICcuJyArIGRlY2ltYWxMYXQpO1xuICB9IGVsc2UgaWYgKGRtc1JlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgW1xuICAgICAgLFxuICAgICAgZGVncmVlc0xvbixcbiAgICAgIG1pbnV0ZXNMb24sXG4gICAgICBzZWNvbmRzTG9uLFxuICAgICAgZGlyZWN0aW9uTG9uLFxuICAgICAgZGVncmVlc0xhdCxcbiAgICAgIG1pbnV0ZXNMYXQsXG4gICAgICBzZWNvbmRzTGF0LFxuICAgICAgZGlyZWN0aW9uTGF0XG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKGRtc0Nvb3JkUGF0dGVybik7XG5cbiAgICBpZiAoZGlyZWN0aW9uTG9uID09PSAnUycgfHwgZGlyZWN0aW9uTG9uID09PSAnTicpIHtcbiAgICAgIGRlZ3JlZXNMb24gPSBbZGVncmVlc0xhdCwgKGRlZ3JlZXNMYXQgPSBkZWdyZWVzTG9uKV1bMF07XG4gICAgICBtaW51dGVzTG9uID0gW21pbnV0ZXNMYXQsIChtaW51dGVzTGF0ID0gbWludXRlc0xvbildWzBdO1xuICAgICAgc2Vjb25kc0xvbiA9IFtzZWNvbmRzTGF0LCAoc2Vjb25kc0xhdCA9IHNlY29uZHNMb24pXVswXTtcbiAgICAgIGRpcmVjdGlvbkxvbiA9IFtkaXJlY3Rpb25MYXQsIChkaXJlY3Rpb25MYXQgPSBkaXJlY3Rpb25Mb24pXVswXTtcbiAgICB9XG5cbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcbiAgICAgIGRpcmVjdGlvbkxvblxuICAgICk7XG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXG4gICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXG4gICAgICBkaXJlY3Rpb25MYXRcbiAgICApO1xuICB9IGVsc2UgaWYgKHV0bVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XG4gICAgWywgLCB6b25lLCBsb24sIGxhdF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuVXRtKTtcbiAgICBjb25zdCBlcHNnVXRtID0gTnVtYmVyKHpvbmUpIDwgMTAgPyBgRVBTRzozMjYwJHt6b25lfWAgOiBgRVBTRzozMjYke3pvbmV9YDtcbiAgICBbbG9uLCBsYXRdID0gb2xwcm9qLnRyYW5zZm9ybShcbiAgICAgIFtwYXJzZUZsb2F0KGxvbiksIHBhcnNlRmxvYXQobGF0KV0sXG4gICAgICBlcHNnVXRtLFxuICAgICAgJ0VQU0c6NDMyNidcbiAgICApO1xuICB9IGVsc2UgaWYgKG10bVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XG4gICAgWywgLCB6b25lLCBsb24sIGxhdF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuTXRtKTtcbiAgICBjb25zdCBlcHNnTXRtID1cbiAgICAgIE51bWJlcih6b25lKSA8IDEwID8gYEVQU0c6MzIxOCR7em9uZX1gIDogYEVQU0c6MzIxJHs4MCArIE51bWJlcih6b25lKX1gO1xuICAgIFtsb24sIGxhdF0gPSBvbHByb2oudHJhbnNmb3JtKFxuICAgICAgW3BhcnNlRmxvYXQobG9uKSwgcGFyc2VGbG9hdChsYXQpXSxcbiAgICAgIGVwc2dNdG0sXG4gICAgICAnRVBTRzo0MzI2J1xuICAgICk7XG4gIH0gZWxzZSBpZiAoZG1kUmVnZXgudGVzdChjb29yZFN0cikpIHtcbiAgICBbXG4gICAgICAsXG4gICAgICBuZWdhdGl2ZUxvbixcbiAgICAgIGRlZ3JlZXNMb24sXG4gICAgICBtaW51dGVzTG9uLFxuICAgICAgc2Vjb25kc0xvbixcbiAgICAgIGRlY2ltYWxMb24sXG4gICAgICBuZWdhdGl2ZUxhdCxcbiAgICAgIGRlZ3JlZXNMYXQsXG4gICAgICBtaW51dGVzTGF0LFxuICAgICAgc2Vjb25kc0xhdCxcbiAgICAgIGRlY2ltYWxMYXRcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkRtZCk7XG5cbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTG9uID8gbmVnYXRpdmVMb24gOiAnJykgKyBkZWdyZWVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxuICAgICAgZGlyZWN0aW9uTG9uXG4gICAgKTtcbiAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgIHBhcnNlRmxvYXQoKG5lZ2F0aXZlTGF0ID8gbmVnYXRpdmVMYXQgOiAnJykgKyBkZWdyZWVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXG4gICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxuICAgICAgZGlyZWN0aW9uTGF0XG4gICAgKTtcbiAgfSBlbHNlIGlmIChkZFJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgW1xuICAgICAgLFxuICAgICAgbmVnYXRpdmVMb24sXG4gICAgICBkZWdyZWVzTG9uLFxuICAgICAgZGVjaW1hbExvbixcbiAgICAgIG5lZ2F0aXZlTGF0LFxuICAgICAgZGVncmVlc0xhdCxcbiAgICAgIGRlY2ltYWxMYXRcbiAgICBdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybkRkKTtcblxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGRlZ3JlZXNMb24pLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXG4gICAgICBkaXJlY3Rpb25Mb25cbiAgICApO1xuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQpLFxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXG4gICAgICBkaXJlY3Rpb25MYXRcbiAgICApO1xuICB9IGVsc2UgaWYgKGJlbGxSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xuICAgIFtcbiAgICAgICxcbiAgICAgIG5lZ2F0aXZlTGF0LFxuICAgICAgZGVncmVlc0xhdCxcbiAgICAgIG1pbnV0ZXNMYXQsXG4gICAgICBzZWNvbmRzTGF0LFxuICAgICAgLFxuICAgICAgZGlyZWN0aW9uTGF0LFxuICAgICAgbmVnYXRpdmVMb24sXG4gICAgICBkZWdyZWVzTG9uLFxuICAgICAgbWludXRlc0xvbixcbiAgICAgIHNlY29uZHNMb24sXG4gICAgICAsXG4gICAgICBkaXJlY3Rpb25Mb24sXG4gICAgICByYWRpdXMsXG4gICAgICBjb25mXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5CRUxMKTtcblxuICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlIGZvciBOb3J0aCBBbWVyaWNhXG4gICAgaWYgKCFkaXJlY3Rpb25Mb24pIHtcbiAgICAgIGRpcmVjdGlvbkxvbiA9ICdXJztcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiByZWFsIG1pbnV0ZXMgb3IgZGVjaW1hbHNcbiAgICBpZiAobWludXRlc0xvbiAmJiBtaW51dGVzTG9uLmxlbmd0aCA+IDIpIHtcbiAgICAgIGxvbiA9IHBhcnNlRmxvYXQoXG4gICAgICAgIChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiArICcuJyArIG1pbnV0ZXNMb25cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxuICAgICAgICBwYXJzZUZsb2F0KGRlZ3JlZXNMb24pLFxuICAgICAgICBwYXJzZUZsb2F0KG1pbnV0ZXNMb24pLFxuICAgICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxuICAgICAgICBkaXJlY3Rpb25Mb25cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXNMYXQgJiYgbWludXRlc0xhdC5sZW5ndGggPiAyKSB7XG4gICAgICBsYXQgPSBwYXJzZUZsb2F0KFxuICAgICAgICAobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGRlZ3JlZXNMYXQgKyAnLicgKyBtaW51dGVzTGF0XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXQgPSBjb252ZXJ0RE1TVG9ERChcbiAgICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTGF0KSxcbiAgICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcbiAgICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTGF0KSxcbiAgICAgICAgZGlyZWN0aW9uTGF0XG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIGlmIChtbVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XG4gICAgWywgbG9uLCBkZWNpbWFsTG9uLCBsYXQsIGRlY2ltYWxMYXRdID0gY29vcmRTdHIubWF0Y2gobW1QYXR0ZXJuKTtcblxuICAgIGlmIChkZWNpbWFsTG9uKSB7XG4gICAgICBsb24gPSBwYXJzZUZsb2F0KGxvbiArICcuJyArIGRlY2ltYWxMb24pO1xuICAgIH1cblxuICAgIGlmIChkZWNpbWFsTGF0KSB7XG4gICAgICBsYXQgPSBwYXJzZUZsb2F0KGxhdCArICcuJyArIGRlY2ltYWxMYXQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICAgIHJhZGl1czogdW5kZWZpbmVkLFxuICAgICAgY29uZjogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIGlmIChvcHRzLmZvcmNlTkEgJiYgIWlzWFlDb29yZHMpIHtcbiAgICAvLyBTZXQgYSBuZWdhdGl2ZSBjb29yZGluYXRlIGZvciBOb3J0aCBBbWVyaWNhIHpvbmVcbiAgICBpZiAobG9uID4gMCAmJiBsYXQgPiAwKSB7XG4gICAgICBpZiAobG9uID4gbGF0KSB7XG4gICAgICAgIGxvbiA9IC1sb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYXQgPSAtbGF0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldmVyc2UgY29vcmRpbmF0ZSB0byByZXNwZWN0IGxvbkxhdCBjb252ZW50aW9uXG4gICAgaWYgKGxvbiA+IGxhdCkge1xuICAgICAgbG9uID0gW2xhdCwgKGxhdCA9IGxvbildWzBdO1xuICAgIH1cbiAgfVxuXG4gIGxvbkxhdCA9IFtOdW1iZXIobG9uKSwgTnVtYmVyKGxhdCldIGFzIFtudW1iZXIsIG51bWJlcl07XG5cbiAgLy8gUmVwcm9qZWN0IHRoZSBjb29yZGluYXRlIGlmIHByb2plY3Rpb24gcGFyYW1ldGVyIGhhdmUgYmVlbiBzZXQgYW5kIGNvb3JkIGlzIG5vdCA0MzI2XG4gIGlmIChcbiAgICAocHJvamVjdGlvblN0ciAhPT0gdW5kZWZpbmVkICYmIHByb2plY3Rpb25TdHIgIT09IHRvUHJvamVjdGlvbikgfHxcbiAgICBsb25MYXRbMF0gPiAxODAgfHxcbiAgICBsb25MYXRbMF0gPCAtMTgwIHx8XG4gICAgbG9uTGF0WzFdID4gOTAgfHxcbiAgICBsb25MYXRbMV0gPCAtOTBcbiAgKSB7XG4gICAgY29uc3Qgc291cmNlID0gcHJvamVjdGlvblN0ciA/ICdFUFNHOicgKyBwcm9qZWN0aW9uU3RyIDogbWFwUHJvamVjdGlvbjtcbiAgICBjb25zdCBkZXN0ID0gJ0VQU0c6JyArIHRvUHJvamVjdGlvbjtcblxuICAgIHRyeSB7XG4gICAgICBsb25MYXQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgc291cmNlLCBkZXN0KSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxuICAgICAgICBtZXNzYWdlOiAnUHJvamVjdGlvbiAnICsgc291cmNlICsgJyBub3Qgc3VwcG9ydGVkJyxcbiAgICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXG4gICAgICAgIGNvbmY6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgaWYgKE1hdGguYWJzKGxvbkxhdFswXSkgPD0gMTgwICYmIE1hdGguYWJzKGxvbkxhdFsxXSkgPD0gOTApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9uTGF0LFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICByYWRpdXM6IHJhZGl1cyA/IHBhcnNlSW50KHJhZGl1cywgMTApIDogdW5kZWZpbmVkLFxuICAgICAgY29uZjogY29uZiA/IHBhcnNlSW50KGNvbmYsIDEwKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvbkxhdDogdW5kZWZpbmVkLFxuICAgICAgbWVzc2FnZTogJ0Nvb3JkaW5hdGUgb3V0IG9mIExvbmdpdHVkZS9MYXRpdHVkZSBib3VuZHMnLFxuICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXG4gICAgICBjb25mOiB1bmRlZmluZWRcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kcyB0byBkZFxuICogQHBhcmFtIGRlZ3JlZXMgRGVncmVlc1xuICogQHBhcmFtIG1pbnV0ZXMgTWludXRlc1xuICogQHBhcmFtIHNlY29uZHMgU2Vjb25kc1xuICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb25cbiAqL1xuZnVuY3Rpb24gY29udmVydERNU1RvREQoXG4gIGRlZ3JlZXM6IG51bWJlcixcbiAgbWludXRlczogbnVtYmVyLFxuICBzZWNvbmRzOiBudW1iZXIsXG4gIGRpcmVjdGlvbjogc3RyaW5nXG4pIHtcbiAgbWludXRlcyA9IG1pbnV0ZXMgfHwgMDtcbiAgc2Vjb25kcyA9IHNlY29uZHMgfHwgMDtcblxuICBjb25zdCBuZWcgPSBkZWdyZWVzIDwgMDtcbiAgbGV0IGRkID0gTWF0aC5hYnMoZGVncmVlcykgKyBtaW51dGVzIC8gNjAgKyBzZWNvbmRzIC8gMzYwMDtcblxuICBpZiAobmVnIHx8IGRpcmVjdGlvbiA9PT0gJ1MnIHx8IGRpcmVjdGlvbiA9PT0gJ1cnKSB7XG4gICAgZGQgPSAtZGQ7XG4gIH0gLy8gRG9uJ3QgZG8gYW55dGhpbmcgZm9yIE4gb3IgRVxuICByZXR1cm4gZGQ7XG59XG5cbi8qKlxuICogQ29udmVydCBkZCB0byBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kc1xuICogQHBhcmFtIGxvbkxhdEREIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgaW4gZGRcbiAqIEBwYXJhbSBkZWNpbWFsIG51bWJlciBvZiBkZWNpbWFscyBmb3Igc2Vjb25kc1xuICogQHJldHVybnMgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRERFRvRE1TKFxuICBsb25MYXRERDogW251bWJlciwgbnVtYmVyXSxcbiAgZGVjaW1hbDogbnVtYmVyID0gM1xuKTogc3RyaW5nW10ge1xuICBjb25zdCBsb25MYXRETVMgPSBbXTtcblxuICBsb25MYXRERC5mb3JFYWNoKChkZCkgPT4ge1xuICAgIGNvbnN0IGRlZ3JlZXMgPSBkZCA8IDAgPyBNYXRoLmNlaWwoZGQpIDogTWF0aC5mbG9vcihkZCk7XG4gICAgY29uc3QgaW50ID0gZGQgPCAwID8gKGRlZ3JlZXMgLSBkZCkgKiA2MCA6IChkZCAtIGRlZ3JlZXMpICogNjA7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoaW50KTtcbiAgICBjb25zdCBzZWNvbmRzID0gKChpbnQgLSBtaW51dGVzKSAqIDYwKS50b0ZpeGVkKGRlY2ltYWwpO1xuXG4gICAgbG9uTGF0RE1TLnB1c2goYCR7ZGVncmVlc33CsCAke21pbnV0ZXN9JyAke3NlY29uZHN9XCJgKTtcbiAgfSk7XG4gIHJldHVybiBsb25MYXRETVM7XG59XG5cbi8qKlxuICogUmV0dXJuIHRydWUgb2YgdHdvIHZpZXcgc3RhdGVzIGFyZSBlcXVhbC5cbiAqIEBwYXJhbSBzdGF0ZTEgVmlldyBzdGF0ZVxuICogQHBhcmFtIHN0YXRlMiBWaWV3IHN0YXRlXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IHN0YXRlcyBhcmUgZXF1YWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpZXdTdGF0ZXNBcmVFcXVhbChcbiAgc3RhdGUxOiBNYXBWaWV3U3RhdGUsXG4gIHN0YXRlMjogTWFwVmlld1N0YXRlXG4pOiBib29sZWFuIHtcbiAgaWYgKHN0YXRlMSA9PT0gdW5kZWZpbmVkIHx8IHN0YXRlMiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdG9sZXJhbmNlID0gMSAvIDEwMDAwO1xuICByZXR1cm4gKFxuICAgIHN0YXRlMS56b29tID09PSBzdGF0ZTIuem9vbSAmJlxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgPT09XG4gICAgICBNYXRoLnRydW5jKHN0YXRlMi5jZW50ZXJbMF0gLyB0b2xlcmFuY2UpICYmXG4gICAgTWF0aC50cnVuYyhzdGF0ZTEuY2VudGVyWzFdIC8gdG9sZXJhbmNlKSA9PT1cbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclsxXSAvIHRvbGVyYW5jZSlcbiAgKTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIHNjYWxlIHRvIGEgaHVtYW4gcmVhZGFibGUgdGV4dFxuICogQHBhcmFtIFNjYWxlIG9mIHRoZSBtYXBcbiAqIEByZXR1cm5zIEh1bWFuIHJlYWRhYmxlIHNjYWxlIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNjYWxlKHNjYWxlKSB7XG4gIHNjYWxlID0gTWF0aC5yb3VuZChzY2FsZSk7XG4gIGlmIChzY2FsZSA8IDEwMDAwKSB7XG4gICAgcmV0dXJuIHNjYWxlICsgJyc7XG4gIH1cblxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcbiAgaWYgKHNjYWxlIDwgMTAwMCkge1xuICAgIHJldHVybiBzY2FsZSArICdLJztcbiAgfVxuXG4gIHNjYWxlID0gTWF0aC5yb3VuZChzY2FsZSAvIDEwMDApO1xuICByZXR1cm4gc2NhbGUgKyAnTSc7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZXNvbHV0aW9uIGZyb20gYSBzY2FsZSBkZW5vbVxuICogQHBhcmFtIHNjYWxlIFNjYWxlIGRlbm9tXG4gKiBAcGFyYW0gZHBpIERQSVxuICogQHJldHVybnMgUmVzb2x1dGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShcbiAgc2NhbGU6IG51bWJlcixcbiAgZHBpOiBudW1iZXIgPSA5NlxuKTogbnVtYmVyIHtcbiAgY29uc3QgaW5jaGVzUGVyTWV0ZXIgPSAzOS4zNzAxO1xuICByZXR1cm4gc2NhbGUgLyAoaW5jaGVzUGVyTWV0ZXIgKiBkcGkpO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcmVzb2x1dGlvbiBmcm9tIGEgc2NhbGUgZGVub21cbiAqIEBwYXJhbSBTY2FsZSBkZW5vbVxuICogQHJldHVybnMgUmVzb2x1dGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbihcbiAgcmVzb2x1dGlvbjogbnVtYmVyLFxuICB1bml0OiBzdHJpbmcgPSAnbScsXG4gIGRwaTogbnVtYmVyID0gOTZcbik6IG51bWJlciB7XG4gIGNvbnN0IGluY2hlc1Blck1ldGVyID0gMzkuMzcwMTtcbiAgcmV0dXJuIHJlc29sdXRpb24gKiBvbHByb2ouTUVURVJTX1BFUl9VTklUW3VuaXRdICogaW5jaGVzUGVyTWV0ZXIgKiBkcGk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBDVFJMIGtleSBpcyBwdXNoZWQgZHVyaW5nIGFuIE9sIE1hcEJyb3dzZXJQb2ludGVyRXZlbnRcbiAqIEBwYXJhbSBldmVudCBPTCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBDVFJMIGtleSBpcyBwdXNoZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN0cmxLZXlEb3duKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pOiBib29sZWFuIHtcbiAgY29uc3Qgb3JpZ2luYWxFdmVudCA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQ7XG4gIHJldHVybiAoXG4gICAgIW9yaWdpbmFsRXZlbnQuYWx0S2V5ICYmXG4gICAgKE1BQyA/IG9yaWdpbmFsRXZlbnQubWV0YUtleSA6IG9yaWdpbmFsRXZlbnQuY3RybEtleSkgJiZcbiAgICAhb3JpZ2luYWxFdmVudC5zaGlmdEtleVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvKFxuICBjb29yZDogW251bWJlciwgbnVtYmVyXSxcbiAgZGVjaW1hbDogbnVtYmVyID0gM1xuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIHJldHVybiBbXG4gICAgTnVtYmVyVXRpbHMucm91bmRUb05EZWNpbWFsKGNvb3JkWzBdLCBkZWNpbWFsKSxcbiAgICBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoY29vcmRbMV0sIGRlY2ltYWwpXG4gIF0gYXMgW251bWJlciwgbnVtYmVyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kQ29vcmRUb1N0cmluZyhcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl0sXG4gIGRlY2ltYWw6IG51bWJlciA9IDNcbik6IFtzdHJpbmcsIHN0cmluZ10ge1xuICByZXR1cm4gcm91bmRDb29yZFRvKGNvb3JkLCBkZWNpbWFsKS5tYXAoKHIpID0+IHIudG9TdHJpbmcoKSkgYXMgW1xuICAgIHN0cmluZyxcbiAgICBzdHJpbmdcbiAgXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIGNvbnZlcnRlZCBjb29yZGluYXRlcy5cbiAqIENvbnZlcnNpb24gaXMgZG9uZSBmb3IgZXZlcnkgY29uZmlndXJlZCBwcm9qZWN0aW9uc1xuICogYW5kIGZvciB0aGUgY3VycmVudCBVVE0gem9uZSBhbmQgTVRNIHpvbmUuXG4gKiBAcGFyYW0gbG9uTGF0IFtudW1iZXIsIG51bWJlcl0gYXJyYXkgb2YgdGhlIGNvb3JkaW5hdGUgdG8gdHJhbnNmb3JtLlxuICogQHBhcmFtIHByb2plY3Rpb25zICBQcm9qZWN0aW9uW10gQXJyYXkgb2YgZGVzdGluYXRpb24gcHJvamVjdGlvbi5cbiAqIEBwYXJhbSByZXZlcnNlQ29vcmRzIFRvIHJldmVyc2UgY29vcmRzIGZyb20gbGF0TG9uIHRvIGxvbkxhdCAoc2VhcmNoIG9wdGlvbilcbiAqIEByZXR1cm5zIFJldHVybnMgYW4gYXJyYXkgb2YgY29udmVydGVkIGNvb3JkaW5hdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9uTGF0Q29udmVyc2lvbihcbiAgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdLFxuICBwcm9qZWN0aW9uczogUHJvamVjdGlvbltdXG4pOiB7XG4gIGNvZGU6IHN0cmluZztcbiAgYWxpYXM6IHN0cmluZztcbiAgY29vcmQ6IFtudW1iZXIsIG51bWJlcl07XG4gIGlnbzJDb29yZEZvcm1hdDogc3RyaW5nO1xufVtdIHtcbiAgY29uc3QgcmF3Q29vcmQzODU3ID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JykgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbiAgY29uc3QgY29udmVydGVkTG9uTGF0ID0gW1xuICAgIHtcbiAgICAgIGNvZGU6ICdFUFNHOjM4NTcnLFxuICAgICAgYWxpYXM6ICdXZWIgTWVyY2F0b3InLFxuICAgICAgY29vcmQ6IHJhd0Nvb3JkMzg1NyxcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7cm91bmRDb29yZFRvKHJhd0Nvb3JkMzg1Nykuam9pbignLCAnKX0gOyAzODU3YFxuICAgIH1cbiAgXTtcblxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUuXG4gIGNvbnN0IHV0bVpvbmUgPSB1dG1ab25lRnJvbUxvbkxhdChsb25MYXQpO1xuICBjb25zdCBlcHNnVXRtID0gdXRtWm9uZSA8IDEwID8gYEVQU0c6MzI2MCR7dXRtWm9uZX1gIDogYEVQU0c6MzI2JHt1dG1ab25lfWA7XG4gIGNvbnN0IHV0bU5hbWUgPSBgVVRNLSR7dXRtWm9uZX1gO1xuICBjb25zdCByYXdDb29yZFV0bSA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgZXBzZ1V0bSkgYXMgW1xuICAgIG51bWJlcixcbiAgICBudW1iZXJcbiAgXTtcbiAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgIGNvZGU6IGVwc2dVdG0sXG4gICAgYWxpYXM6ICdVVE0nLFxuICAgIGNvb3JkOiByYXdDb29yZFV0bSxcbiAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3V0bU5hbWV9ICR7cm91bmRDb29yZFRvKHJhd0Nvb3JkVXRtKS5qb2luKCcsICcpfWBcbiAgfSk7XG5cbiAgLy8gZGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lLlxuICBjb25zdCBtdG1ab25lID0gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0KTtcbiAgaWYgKG10bVpvbmUpIHtcbiAgICBjb25zdCBlcHNnTXRtID1cbiAgICAgIG10bVpvbmUgPCAxMCA/IGBFUFNHOjMyMTgke210bVpvbmV9YCA6IGBFUFNHOjMyMSR7ODAgKyBtdG1ab25lfWA7XG4gICAgY29uc3QgbXRtTmFtZSA9IGBNVE0tJHttdG1ab25lfWA7XG4gICAgY29uc3QgcmF3Q29vcmRNdG0gPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIGVwc2dNdG0pIGFzIFtcbiAgICAgIG51bWJlcixcbiAgICAgIG51bWJlclxuICAgIF07XG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgICAgY29kZTogZXBzZ010bSxcbiAgICAgIGFsaWFzOiAnTVRNJyxcbiAgICAgIGNvb3JkOiByYXdDb29yZE10bSxcbiAgICAgIGlnbzJDb29yZEZvcm1hdDogYCR7bXRtTmFtZX0gJHtyb3VuZENvb3JkVG8ocmF3Q29vcmRNdG0pLmpvaW4oJywgJyl9YFxuICAgIH0pO1xuICB9XG5cbiAgcHJvamVjdGlvbnMuZm9yRWFjaCgocHJvamVjdGlvbikgPT4ge1xuICAgIGNvbnN0IHJhd0Nvb3JkID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCBwcm9qZWN0aW9uLmNvZGUpIGFzIFtcbiAgICAgIG51bWJlcixcbiAgICAgIG51bWJlclxuICAgIF07XG4gICAgY29uc3QgbnVtZXJpY0Vwc2dDb2RlID0gcHJvamVjdGlvbi5jb2RlLnNwbGl0KCc6JylbMV07XG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xuICAgICAgY29kZTogcHJvamVjdGlvbi5jb2RlLFxuICAgICAgYWxpYXM6IHByb2plY3Rpb24uYWxpYXMgfHwgcHJvamVjdGlvbi5jb2RlLFxuICAgICAgY29vcmQ6IHJhd0Nvb3JkLFxuICAgICAgaWdvMkNvb3JkRm9ybWF0OiBgJHtyb3VuZENvb3JkVG8ocmF3Q29vcmQpLmpvaW4oXG4gICAgICAgICcsICdcbiAgICAgICl9IDsgJHtudW1lcmljRXBzZ0NvZGV9YFxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gY29udmVydGVkTG9uTGF0O1xufVxuXG4vKipcbiAqIERldGVjdCB0aGUgY3VycmVudCB1dG0gem9uZSBvZiB0aGUgbG9uL2xhdCBjb29yZGluYXRlLlxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgVVRNIHpvbmUuXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIFVUTSB6b25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIHJldHVybiBNYXRoLmNlaWwoKGxvbkxhdFswXSArIDE4MCkgLyA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgbXRtIHpvbmUgb2YgdGhlIGxvbi9sYXQgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byBkZXRlY3QgdGhlIE1UTSB6b25lLlxuICogQHJldHVybnMgbnVtYmVyIFRoZSBNVE0gem9uZS4gVW5kZWZpbmVkIGlmIG91dHNpZGUgb2YgdGhlIG10bSBhcHBsaWNhdGlvbiB6b25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIGNvbnN0IGxvbmcgPSBsb25MYXRbMF07XG4gIGxldCBtdG1ab25lO1xuICBpZiAobG9uZyA8IC01MSAmJiBsb25nID4gLTU0KSB7XG4gICAgbXRtWm9uZSA9IDE7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNTQgJiYgbG9uZyA+IC01Nykge1xuICAgIG10bVpvbmUgPSAyO1xuICB9XG4gIGlmIChsb25nIDwgLTU3ICYmIGxvbmcgPiAtNjApIHtcbiAgICBtdG1ab25lID0gMztcbiAgfVxuICBpZiAobG9uZyA8IC02MCAmJiBsb25nID4gLTYzKSB7XG4gICAgbXRtWm9uZSA9IDQ7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNjMgJiYgbG9uZyA+IC02Nikge1xuICAgIG10bVpvbmUgPSA1O1xuICB9XG4gIGlmIChsb25nIDwgLTY2ICYmIGxvbmcgPiAtNjkpIHtcbiAgICBtdG1ab25lID0gNjtcbiAgfVxuICBpZiAobG9uZyA8IC02OSAmJiBsb25nID4gLTcyKSB7XG4gICAgbXRtWm9uZSA9IDc7XG4gIH1cbiAgaWYgKGxvbmcgPCAtNzIgJiYgbG9uZyA+IC03NSkge1xuICAgIG10bVpvbmUgPSA4O1xuICB9XG4gIGlmIChsb25nIDwgLTc1ICYmIGxvbmcgPiAtNzgpIHtcbiAgICBtdG1ab25lID0gOTtcbiAgfVxuICBpZiAobG9uZyA8IC03OCAmJiBsb25nID4gLTgxKSB7XG4gICAgbXRtWm9uZSA9IDEwO1xuICB9XG4gIHJldHVybiBtdG1ab25lO1xufVxuIl19
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBS2xDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUFXLEVBQ1gsYUFBcUIsRUFDckIsT0FBOEIsRUFBRTtJQU9oQyxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksV0FBbUIsQ0FBQztJQUN4QixJQUFJLFVBQWtCLENBQUM7SUFDdkIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksVUFBa0IsQ0FBQztJQUN2QixJQUFJLFlBQW9CLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksSUFBWSxDQUFDO0lBQ2pCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxHQUFRLENBQUM7SUFFYixNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUM1QixJQUFJLGFBQXFCLENBQUM7SUFDMUIsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxD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QixJQUFJLE9BQU8sQ0FBQztJQUNaLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQyxDQUFDO0tBQ2I7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQztLQUNiO0lBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDYjtJQUNELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVtYmVyVXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyBNQUMgfSBmcm9tICdvbC9oYXMnO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcblxyXG5pbXBvcnQgeyBNYXBWaWV3U3RhdGUgfSBmcm9tICcuL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQcm9qZWN0aW9uIH0gZnJvbSAnLi9wcm9qZWN0aW9uLmludGVyZmFjZXMnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgbWV0aG9kIGV4dHJhY3RzIGEgY29vcmRpbmF0ZSB0dXBsZSBmcm9tIGEgc3RyaW5nLlxyXG4gKiBAcGFyYW0gc3RyIEFueSBzdHJpbmdcclxuICogQHBhcmFtIG1hcFByb2plY3Rpb24gc3RyaW5nIE1hcCBQcm9qZWN0aW9uXHJcbiAqIEBwYXJhbSBvcHRzLmZvcmNlTkEgYm9vbGVhbiBGb3JjZSBOb3J0aCBBbWVyaWNhIFpvbmVcclxuICogQHJldHVybnMgb2JqZWN0OlxyXG4gKiAgICAgICAgICAgICBsb25MYXQ6IENvb3JkaW5hdGUsXHJcbiAqICAgICAgICAgICAgIG1lc3NhZ2U6IE1lc3NhZ2Ugb2YgZXJyb3IsXHJcbiAqICAgICAgICAgICAgIHJhZGl1czogcmFkaXVzIG9mIHRoZSBjb25maWVuY2Ugb2YgY29vcmRpbmF0ZSxcclxuICogICAgICAgICAgICAgY29uZjogY29uZmlkZW5jZSBvZiB0aGUgY29vcmRpbmF0ZX1cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0xvbkxhdChcclxuICBzdHI6IHN0cmluZyxcclxuICBtYXBQcm9qZWN0aW9uOiBzdHJpbmcsXHJcbiAgb3B0czogeyBmb3JjZU5BPzogYm9vbGVhbiB9ID0ge31cclxuKToge1xyXG4gIGxvbkxhdDogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgcmFkaXVzOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgY29uZjogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG59IHtcclxuICBsZXQgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGxldCBjb29yZFN0cjogc3RyaW5nO1xyXG4gIGxldCBuZWdhdGl2ZUxvbjogc3RyaW5nO1xyXG4gIGxldCBkZWdyZWVzTG9uOiBzdHJpbmc7XHJcbiAgbGV0IG1pbnV0ZXNMb246IHN0cmluZztcclxuICBsZXQgc2Vjb25kc0xvbjogc3RyaW5nO1xyXG4gIGxldCBkaXJlY3Rpb25Mb246IHN0cmluZztcclxuICBsZXQgZGVjaW1hbExvbjogc3RyaW5nO1xyXG4gIGxldCBuZWdhdGl2ZUxhdDogc3RyaW5nO1xyXG4gIGxldCBkZWdyZWVzTGF0OiBzdHJpbmc7XHJcbiAgbGV0IG1pbnV0ZXNMYXQ6IHN0cmluZztcclxuICBsZXQgc2Vjb25kc0xhdDogc3RyaW5nO1xyXG4gIGxldCBkaXJlY3Rpb25MYXQ6IHN0cmluZztcclxuICBsZXQgZGVjaW1hbExhdDogc3RyaW5nO1xyXG4gIGxldCB6b25lOiBzdHJpbmc7XHJcbiAgbGV0IHJhZGl1czogc3RyaW5nO1xyXG4gIGxldCBjb25mOiBzdHJpbmc7XHJcbiAgbGV0IGxvbjogYW55O1xyXG4gIGxldCBsYXQ6IGFueTtcclxuXHJcbiAgY29uc3QgcHJvamVjdGlvblBhdHRlcm4gPSAnKFxcXFxzKjtcXFxccypbXFxcXGRdezQsNn0pJztcclxuICBjb25zdCB0b1Byb2plY3Rpb24gPSAnNDMyNic7XHJcbiAgbGV0IHByb2plY3Rpb25TdHI6IHN0cmluZztcclxuICBjb25zdCBwcm9qZWN0aW9uUmVnZXggPSBuZXcgUmVnRXhwKHByb2plY3Rpb25QYXR0ZXJuLCAnZycpO1xyXG5cclxuICBjb25zdCBsb25sYXRDb29yZCA9ICcoWy0rXSk/KFtcXFxcZF17MSwzfSkoWywuXShcXFxcZCspKT8nO1xyXG4gIGNvbnN0IGxvbkxhdFBhdHRlcm4gPSBgJHtsb25sYXRDb29yZH1bXFxcXHMsXSske2xvbmxhdENvb3JkfWA7XHJcbiAgY29uc3QgbG9uTGF0UmVnZXggPSBuZXcgUmVnRXhwKGBeJHtsb25MYXRQYXR0ZXJufSRgLCAnZycpO1xyXG5cclxuICBjb25zdCBkbXNDb29yZCA9XHJcbiAgICAnKFswLTldezEsMn0pWzp8wrBdP1xcXFxzKihbMC05XXsxLDJ9KT9bOnxcXCd84oCyfOKAmV0/XFxcXHMqKFswLTldezEsMn0oPzouWzAtOV0rKXswLDF9KT9cXFxccypbXCJ84oCzfOKAnV0/XFxcXHMqJztcclxuICBjb25zdCBkbXNDb29yZFBhdHRlcm4gPSBgJHtkbXNDb29yZH0oW058U3xFfFd8T10pLD9cXFxccyoke2Rtc0Nvb3JkfShbTnxTfEV8V3xPXSlgO1xyXG4gIGNvbnN0IGRtc1JlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7ZG1zQ29vcmRQYXR0ZXJufSRgLCAnZ2knKTtcclxuXHJcbiAgY29uc3QgcGF0dGVyblV0bSA9XHJcbiAgICAnKFVUTSktPyhcXFxcZHsxLDJ9KVtcXFxccyxdKihcXFxcZCtbLixdP1xcXFxkKylbXFxcXHMsXSsoXFxcXGQrWy4sXT9cXFxcZCspJztcclxuICBjb25zdCB1dG1SZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5VdG19YCwgJ2dpJyk7XHJcblxyXG4gIGNvbnN0IHBhdHRlcm5NdG0gPVxyXG4gICAgJyhNVE0pLT8oXFxcXGR7MSwyfSlbXFxcXHMsXSooXFxcXGQrWy4sXT9cXFxcZCspW1xcXFxzLF0rKFxcXFxkK1suLF0/XFxcXGQrKSc7XHJcbiAgY29uc3QgbXRtUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuTXRtfWAsICdnaScpO1xyXG5cclxuICBjb25zdCBkZENvb3JkID0gJyhbLStdKT8oXFxcXGR7MSwzfSlbLC5dKFxcXFxkKyknO1xyXG4gIGNvbnN0IHBhdHRlcm5EZCA9IGAke2RkQ29vcmR9XFxcXHMqWyxdP1xcXFxzKiR7ZGRDb29yZH1gO1xyXG4gIGNvbnN0IGRkUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuRGR9YCwgJ2cnKTtcclxuXHJcbiAgY29uc3QgZG1kQ29vcmQgPVxyXG4gICAgJyhbLStdKT8oXFxcXGR7MSwzfSlbXFxcXHMsLl17MX0oXFxcXGR7MSwyfSlbXFxcXHMsLl17MX0oXFxcXGR7MSwyfSlbLixdPyhcXFxcZHsxLDV9KT8nO1xyXG4gIGNvbnN0IHBhdHRlcm5EbWQgPSBgJHtkbWRDb29yZH1cXFxccypbLC5dP1xcXFxzKiR7ZG1kQ29vcmR9YDtcclxuICBjb25zdCBkbWRSZWdleCA9IG5ldyBSZWdFeHAoYF4ke3BhdHRlcm5EbWR9YCwgJ2cnKTtcclxuXHJcbiAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xyXG4gIGNvbnN0IHBhdHRlcm5CRUxMID1cclxuICAgICdMQVRcXFxccypbXFxcXHM6XSpcXFxccyooWy0rXSk/KFxcXFxkezEsMn0pW1xcXFxzLixdPyhcXFxcZCspP1tcXFxccy4sXT9cXFxccyooXFxcXGR7MSwyfShbLixdXFxcXGQrKT8pP1xcXFxzKihOfFN8RXxXKT9cXFxccypMT05HXFxcXHMqW1xcXFxzOl0qXFxcXHMqKFstK10pPyhcXFxcZHsxLDN9KVtcXFxccy4sXT8oXFxcXGQrKT9bXFxcXHMuLF0/XFxcXHMqKFxcXFxkezEsMn0oWy4sXVxcXFxkKyk/KT9cXFxccyooTnxTfEV8Vyk/XFxcXHMqVU5DXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkKylcXFxccypDT05GXFxcXHMqW1xcXFxzOl0/XFxcXHMqKFxcXFxkezEsM30pJztcclxuICBjb25zdCBiZWxsUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtwYXR0ZXJuQkVMTH0/YCwgJ2dpJyk7XHJcblxyXG4gIGNvbnN0IG1tQ29vcmQgPSAnKFstK10/XFxcXGQrKVssLl0/KFxcXFxkKyk/JztcclxuICBjb25zdCBtbVBhdHRlcm4gPSBgJHttbUNvb3JkfVtcXFxccyxdKyR7bW1Db29yZH1gO1xyXG4gIGNvbnN0IG1tUmVnZXggPSBuZXcgUmVnRXhwKGBeJHttbVBhdHRlcm59JGAsICdnJyk7XHJcblxyXG4gIGxldCBpc1hZQ29vcmRzID0gZmFsc2U7XHJcblxyXG4gIHN0ciA9IHN0ci50b0xvY2FsZVVwcGVyQ2FzZSgpLnRyaW0oKTtcclxuXHJcbiAgLy8gRXh0cmFjdCBwcm9qZWN0aW9uXHJcbiAgaWYgKHByb2plY3Rpb25SZWdleC50ZXN0KHN0cikpIHtcclxuICAgIFtjb29yZFN0ciwgcHJvamVjdGlvblN0cl0gPSBzdHIuc3BsaXQoJzsnKS5tYXAoKHMpID0+IHMudHJpbSgpKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29vcmRTdHIgPSBzdHI7XHJcbiAgfVxyXG4gIGlmIChsb25MYXRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgWywgbmVnYXRpdmVMb24sIGxvbiwgLCBkZWNpbWFsTG9uLCBuZWdhdGl2ZUxhdCwgbGF0LCAsIGRlY2ltYWxMYXRdID1cclxuICAgICAgY29vcmRTdHIubWF0Y2gobG9uTGF0UGF0dGVybik7XHJcblxyXG4gICAgbG9uID0gcGFyc2VGbG9hdCgobmVnYXRpdmVMb24gPyBuZWdhdGl2ZUxvbiA6ICcnKSArIGxvbiArICcuJyArIGRlY2ltYWxMb24pO1xyXG4gICAgbGF0ID0gcGFyc2VGbG9hdCgobmVnYXRpdmVMYXQgPyBuZWdhdGl2ZUxhdCA6ICcnKSArIGxhdCArICcuJyArIGRlY2ltYWxMYXQpO1xyXG4gIH0gZWxzZSBpZiAoZG1zUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIFtcclxuICAgICAgLFxyXG4gICAgICBkZWdyZWVzTG9uLFxyXG4gICAgICBtaW51dGVzTG9uLFxyXG4gICAgICBzZWNvbmRzTG9uLFxyXG4gICAgICBkaXJlY3Rpb25Mb24sXHJcbiAgICAgIGRlZ3JlZXNMYXQsXHJcbiAgICAgIG1pbnV0ZXNMYXQsXHJcbiAgICAgIHNlY29uZHNMYXQsXHJcbiAgICAgIGRpcmVjdGlvbkxhdFxyXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKGRtc0Nvb3JkUGF0dGVybik7XHJcblxyXG4gICAgaWYgKGRpcmVjdGlvbkxvbiA9PT0gJ1MnIHx8IGRpcmVjdGlvbkxvbiA9PT0gJ04nKSB7XHJcbiAgICAgIGRlZ3JlZXNMb24gPSBbZGVncmVlc0xhdCwgKGRlZ3JlZXNMYXQgPSBkZWdyZWVzTG9uKV1bMF07XHJcbiAgICAgIG1pbnV0ZXNMb24gPSBbbWludXRlc0xhdCwgKG1pbnV0ZXNMYXQgPSBtaW51dGVzTG9uKV1bMF07XHJcbiAgICAgIHNlY29uZHNMb24gPSBbc2Vjb25kc0xhdCwgKHNlY29uZHNMYXQgPSBzZWNvbmRzTG9uKV1bMF07XHJcbiAgICAgIGRpcmVjdGlvbkxvbiA9IFtkaXJlY3Rpb25MYXQsIChkaXJlY3Rpb25MYXQgPSBkaXJlY3Rpb25Mb24pXVswXTtcclxuICAgIH1cclxuXHJcbiAgICBsb24gPSBjb252ZXJ0RE1TVG9ERChcclxuICAgICAgcGFyc2VGbG9hdChkZWdyZWVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcclxuICAgICAgcGFyc2VGbG9hdChzZWNvbmRzTG9uKSxcclxuICAgICAgZGlyZWN0aW9uTG9uXHJcbiAgICApO1xyXG4gICAgbGF0ID0gY29udmVydERNU1RvREQoXHJcbiAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXHJcbiAgICAgIGRpcmVjdGlvbkxhdFxyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKHV0bVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcclxuICAgIFssICwgem9uZSwgbG9uLCBsYXRdID0gY29vcmRTdHIubWF0Y2gocGF0dGVyblV0bSk7XHJcbiAgICBjb25zdCBlcHNnVXRtID0gTnVtYmVyKHpvbmUpIDwgMTAgPyBgRVBTRzozMjYwJHt6b25lfWAgOiBgRVBTRzozMjYke3pvbmV9YDtcclxuICAgIFtsb24sIGxhdF0gPSBvbHByb2oudHJhbnNmb3JtKFxyXG4gICAgICBbcGFyc2VGbG9hdChsb24pLCBwYXJzZUZsb2F0KGxhdCldLFxyXG4gICAgICBlcHNnVXRtLFxyXG4gICAgICAnRVBTRzo0MzI2J1xyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKG10bVJlZ2V4LnRlc3QoY29vcmRTdHIpKSB7XHJcbiAgICBpc1hZQ29vcmRzID0gdHJ1ZTtcclxuICAgIFssICwgem9uZSwgbG9uLCBsYXRdID0gY29vcmRTdHIubWF0Y2gocGF0dGVybk10bSk7XHJcbiAgICBjb25zdCBlcHNnTXRtID1cclxuICAgICAgTnVtYmVyKHpvbmUpIDwgMTAgPyBgRVBTRzozMjE4JHt6b25lfWAgOiBgRVBTRzozMjEkezgwICsgTnVtYmVyKHpvbmUpfWA7XHJcbiAgICBbbG9uLCBsYXRdID0gb2xwcm9qLnRyYW5zZm9ybShcclxuICAgICAgW3BhcnNlRmxvYXQobG9uKSwgcGFyc2VGbG9hdChsYXQpXSxcclxuICAgICAgZXBzZ010bSxcclxuICAgICAgJ0VQU0c6NDMyNidcclxuICAgICk7XHJcbiAgfSBlbHNlIGlmIChkbWRSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgW1xyXG4gICAgICAsXHJcbiAgICAgIG5lZ2F0aXZlTG9uLFxyXG4gICAgICBkZWdyZWVzTG9uLFxyXG4gICAgICBtaW51dGVzTG9uLFxyXG4gICAgICBzZWNvbmRzTG9uLFxyXG4gICAgICBkZWNpbWFsTG9uLFxyXG4gICAgICBuZWdhdGl2ZUxhdCxcclxuICAgICAgZGVncmVlc0xhdCxcclxuICAgICAgbWludXRlc0xhdCxcclxuICAgICAgc2Vjb25kc0xhdCxcclxuICAgICAgZGVjaW1hbExhdFxyXG4gICAgXSA9IGNvb3JkU3RyLm1hdGNoKHBhdHRlcm5EbWQpO1xyXG5cclxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXHJcbiAgICAgIGRpcmVjdGlvbkxvblxyXG4gICAgKTtcclxuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXHJcbiAgICAgIGRpcmVjdGlvbkxhdFxyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKGRkUmVnZXgudGVzdChjb29yZFN0cikpIHtcclxuICAgIFtcclxuICAgICAgLFxyXG4gICAgICBuZWdhdGl2ZUxvbixcclxuICAgICAgZGVncmVlc0xvbixcclxuICAgICAgZGVjaW1hbExvbixcclxuICAgICAgbmVnYXRpdmVMYXQsXHJcbiAgICAgIGRlZ3JlZXNMYXQsXHJcbiAgICAgIGRlY2ltYWxMYXRcclxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuRGQpO1xyXG5cclxuICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xvbiksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xvbiksXHJcbiAgICAgIGRpcmVjdGlvbkxvblxyXG4gICAgKTtcclxuICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICBwYXJzZUZsb2F0KChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQobWludXRlc0xhdCksXHJcbiAgICAgIHBhcnNlRmxvYXQoc2Vjb25kc0xhdCksXHJcbiAgICAgIGRpcmVjdGlvbkxhdFxyXG4gICAgKTtcclxuICB9IGVsc2UgaWYgKGJlbGxSZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgW1xyXG4gICAgICAsXHJcbiAgICAgIG5lZ2F0aXZlTGF0LFxyXG4gICAgICBkZWdyZWVzTGF0LFxyXG4gICAgICBtaW51dGVzTGF0LFxyXG4gICAgICBzZWNvbmRzTGF0LFxyXG4gICAgICAsXHJcbiAgICAgIGRpcmVjdGlvbkxhdCxcclxuICAgICAgbmVnYXRpdmVMb24sXHJcbiAgICAgIGRlZ3JlZXNMb24sXHJcbiAgICAgIG1pbnV0ZXNMb24sXHJcbiAgICAgIHNlY29uZHNMb24sXHJcbiAgICAgICxcclxuICAgICAgZGlyZWN0aW9uTG9uLFxyXG4gICAgICByYWRpdXMsXHJcbiAgICAgIGNvbmZcclxuICAgIF0gPSBjb29yZFN0ci5tYXRjaChwYXR0ZXJuQkVMTCk7XHJcblxyXG4gICAgLy8gU2V0IGRlZmF1bHQgdmFsdWUgZm9yIE5vcnRoIEFtZXJpY2FcclxuICAgIGlmICghZGlyZWN0aW9uTG9uKSB7XHJcbiAgICAgIGRpcmVjdGlvbkxvbiA9ICdXJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiByZWFsIG1pbnV0ZXMgb3IgZGVjaW1hbHNcclxuICAgIGlmIChtaW51dGVzTG9uICYmIG1pbnV0ZXNMb24ubGVuZ3RoID4gMikge1xyXG4gICAgICBsb24gPSBwYXJzZUZsb2F0KFxyXG4gICAgICAgIChuZWdhdGl2ZUxvbiA/IG5lZ2F0aXZlTG9uIDogJycpICsgZGVncmVlc0xvbiArICcuJyArIG1pbnV0ZXNMb25cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxvbiA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xvbiksXHJcbiAgICAgICAgcGFyc2VGbG9hdChtaW51dGVzTG9uKSxcclxuICAgICAgICBwYXJzZUZsb2F0KHNlY29uZHNMb24pLFxyXG4gICAgICAgIGRpcmVjdGlvbkxvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtaW51dGVzTGF0ICYmIG1pbnV0ZXNMYXQubGVuZ3RoID4gMikge1xyXG4gICAgICBsYXQgPSBwYXJzZUZsb2F0KFxyXG4gICAgICAgIChuZWdhdGl2ZUxhdCA/IG5lZ2F0aXZlTGF0IDogJycpICsgZGVncmVlc0xhdCArICcuJyArIG1pbnV0ZXNMYXRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxhdCA9IGNvbnZlcnRETVNUb0REKFxyXG4gICAgICAgIHBhcnNlRmxvYXQoZGVncmVlc0xhdCksXHJcbiAgICAgICAgcGFyc2VGbG9hdChtaW51dGVzTGF0KSxcclxuICAgICAgICBwYXJzZUZsb2F0KHNlY29uZHNMYXQpLFxyXG4gICAgICAgIGRpcmVjdGlvbkxhdFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAobW1SZWdleC50ZXN0KGNvb3JkU3RyKSkge1xyXG4gICAgaXNYWUNvb3JkcyA9IHRydWU7XHJcbiAgICBbLCBsb24sIGRlY2ltYWxMb24sIGxhdCwgZGVjaW1hbExhdF0gPSBjb29yZFN0ci5tYXRjaChtbVBhdHRlcm4pO1xyXG5cclxuICAgIGlmIChkZWNpbWFsTG9uKSB7XHJcbiAgICAgIGxvbiA9IHBhcnNlRmxvYXQobG9uICsgJy4nICsgZGVjaW1hbExvbik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlY2ltYWxMYXQpIHtcclxuICAgICAgbGF0ID0gcGFyc2VGbG9hdChsYXQgKyAnLicgKyBkZWNpbWFsTGF0KTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXHJcbiAgICAgIG1lc3NhZ2U6ICcnLFxyXG4gICAgICByYWRpdXM6IHVuZGVmaW5lZCxcclxuICAgICAgY29uZjogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgaWYgKG9wdHMuZm9yY2VOQSAmJiAhaXNYWUNvb3Jkcykge1xyXG4gICAgLy8gU2V0IGEgbmVnYXRpdmUgY29vcmRpbmF0ZSBmb3IgTm9ydGggQW1lcmljYSB6b25lXHJcbiAgICBpZiAobG9uID4gMCAmJiBsYXQgPiAwKSB7XHJcbiAgICAgIGlmIChsb24gPiBsYXQpIHtcclxuICAgICAgICBsb24gPSAtbG9uO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxhdCA9IC1sYXQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXZlcnNlIGNvb3JkaW5hdGUgdG8gcmVzcGVjdCBsb25MYXQgY29udmVudGlvblxyXG4gICAgaWYgKGxvbiA+IGxhdCkge1xyXG4gICAgICBsb24gPSBbbGF0LCAobGF0ID0gbG9uKV1bMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb25MYXQgPSBbTnVtYmVyKGxvbiksIE51bWJlcihsYXQpXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG5cclxuICAvLyBSZXByb2plY3QgdGhlIGNvb3JkaW5hdGUgaWYgcHJvamVjdGlvbiBwYXJhbWV0ZXIgaGF2ZSBiZWVuIHNldCBhbmQgY29vcmQgaXMgbm90IDQzMjZcclxuICBpZiAoXHJcbiAgICAocHJvamVjdGlvblN0ciAhPT0gdW5kZWZpbmVkICYmIHByb2plY3Rpb25TdHIgIT09IHRvUHJvamVjdGlvbikgfHxcclxuICAgIGxvbkxhdFswXSA+IDE4MCB8fFxyXG4gICAgbG9uTGF0WzBdIDwgLTE4MCB8fFxyXG4gICAgbG9uTGF0WzFdID4gOTAgfHxcclxuICAgIGxvbkxhdFsxXSA8IC05MFxyXG4gICkge1xyXG4gICAgY29uc3Qgc291cmNlID0gcHJvamVjdGlvblN0ciA/ICdFUFNHOicgKyBwcm9qZWN0aW9uU3RyIDogbWFwUHJvamVjdGlvbjtcclxuICAgIGNvbnN0IGRlc3QgPSAnRVBTRzonICsgdG9Qcm9qZWN0aW9uO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxvbkxhdCA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCBzb3VyY2UsIGRlc3QpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbG9uTGF0OiB1bmRlZmluZWQsXHJcbiAgICAgICAgbWVzc2FnZTogJ1Byb2plY3Rpb24gJyArIHNvdXJjZSArICcgbm90IHN1cHBvcnRlZCcsXHJcbiAgICAgICAgcmFkaXVzOiB1bmRlZmluZWQsXHJcbiAgICAgICAgY29uZjogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChNYXRoLmFicyhsb25MYXRbMF0pIDw9IDE4MCAmJiBNYXRoLmFicyhsb25MYXRbMV0pIDw9IDkwKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb25MYXQsXHJcbiAgICAgIG1lc3NhZ2U6ICcnLFxyXG4gICAgICByYWRpdXM6IHJhZGl1cyA/IHBhcnNlSW50KHJhZGl1cywgMTApIDogdW5kZWZpbmVkLFxyXG4gICAgICBjb25mOiBjb25mID8gcGFyc2VJbnQoY29uZiwgMTApIDogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsb25MYXQ6IHVuZGVmaW5lZCxcclxuICAgICAgbWVzc2FnZTogJ0Nvb3JkaW5hdGUgb3V0IG9mIExvbmdpdHVkZS9MYXRpdHVkZSBib3VuZHMnLFxyXG4gICAgICByYWRpdXM6IHVuZGVmaW5lZCxcclxuICAgICAgY29uZjogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgZGVncmVlcyBtaW51dGVzIHNlY29uZHMgdG8gZGRcclxuICogQHBhcmFtIGRlZ3JlZXMgRGVncmVlc1xyXG4gKiBAcGFyYW0gbWludXRlcyBNaW51dGVzXHJcbiAqIEBwYXJhbSBzZWNvbmRzIFNlY29uZHNcclxuICogQHBhcmFtIGRpcmVjdGlvbiBEaXJlY3Rpb25cclxuICovXHJcbmZ1bmN0aW9uIGNvbnZlcnRETVNUb0REKFxyXG4gIGRlZ3JlZXM6IG51bWJlcixcclxuICBtaW51dGVzOiBudW1iZXIsXHJcbiAgc2Vjb25kczogbnVtYmVyLFxyXG4gIGRpcmVjdGlvbjogc3RyaW5nXHJcbikge1xyXG4gIG1pbnV0ZXMgPSBtaW51dGVzIHx8IDA7XHJcbiAgc2Vjb25kcyA9IHNlY29uZHMgfHwgMDtcclxuXHJcbiAgY29uc3QgbmVnID0gZGVncmVlcyA8IDA7XHJcbiAgbGV0IGRkID0gTWF0aC5hYnMoZGVncmVlcykgKyBtaW51dGVzIC8gNjAgKyBzZWNvbmRzIC8gMzYwMDtcclxuXHJcbiAgaWYgKG5lZyB8fCBkaXJlY3Rpb24gPT09ICdTJyB8fCBkaXJlY3Rpb24gPT09ICdXJykge1xyXG4gICAgZGQgPSAtZGQ7XHJcbiAgfSAvLyBEb24ndCBkbyBhbnl0aGluZyBmb3IgTiBvciBFXHJcbiAgcmV0dXJuIGRkO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBkZCB0byBkZWdyZWVzIG1pbnV0ZXMgc2Vjb25kc1xyXG4gKiBAcGFyYW0gbG9uTGF0REQgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkZFxyXG4gKiBAcGFyYW0gZGVjaW1hbCBudW1iZXIgb2YgZGVjaW1hbHMgZm9yIHNlY29uZHNcclxuICogQHJldHVybnMgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBpbiBkbXNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RERUb0RNUyhcclxuICBsb25MYXRERDogW251bWJlciwgbnVtYmVyXSxcclxuICBkZWNpbWFsOiBudW1iZXIgPSAzXHJcbik6IHN0cmluZ1tdIHtcclxuICBjb25zdCBsb25MYXRETVMgPSBbXTtcclxuXHJcbiAgbG9uTGF0REQuZm9yRWFjaCgoZGQpID0+IHtcclxuICAgIGNvbnN0IGRlZ3JlZXMgPSBkZCA8IDAgPyBNYXRoLmNlaWwoZGQpIDogTWF0aC5mbG9vcihkZCk7XHJcbiAgICBjb25zdCBpbnQgPSBkZCA8IDAgPyAoZGVncmVlcyAtIGRkKSAqIDYwIDogKGRkIC0gZGVncmVlcykgKiA2MDtcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKGludCk7XHJcbiAgICBjb25zdCBzZWNvbmRzID0gKChpbnQgLSBtaW51dGVzKSAqIDYwKS50b0ZpeGVkKGRlY2ltYWwpO1xyXG5cclxuICAgIGxvbkxhdERNUy5wdXNoKGAke2RlZ3JlZXN9wrAgJHttaW51dGVzfScgJHtzZWNvbmRzfVwiYCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGxvbkxhdERNUztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0cnVlIG9mIHR3byB2aWV3IHN0YXRlcyBhcmUgZXF1YWwuXHJcbiAqIEBwYXJhbSBzdGF0ZTEgVmlldyBzdGF0ZVxyXG4gKiBAcGFyYW0gc3RhdGUyIFZpZXcgc3RhdGVcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdmlldyBzdGF0ZXMgYXJlIGVxdWFsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdmlld1N0YXRlc0FyZUVxdWFsKFxyXG4gIHN0YXRlMTogTWFwVmlld1N0YXRlLFxyXG4gIHN0YXRlMjogTWFwVmlld1N0YXRlXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmIChzdGF0ZTEgPT09IHVuZGVmaW5lZCB8fCBzdGF0ZTIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgdG9sZXJhbmNlID0gMSAvIDEwMDAwO1xyXG4gIHJldHVybiAoXHJcbiAgICBzdGF0ZTEuem9vbSA9PT0gc3RhdGUyLnpvb20gJiZcclxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgPT09XHJcbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclswXSAvIHRvbGVyYW5jZSkgJiZcclxuICAgIE1hdGgudHJ1bmMoc3RhdGUxLmNlbnRlclsxXSAvIHRvbGVyYW5jZSkgPT09XHJcbiAgICAgIE1hdGgudHJ1bmMoc3RhdGUyLmNlbnRlclsxXSAvIHRvbGVyYW5jZSlcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogRm9ybWF0IHRoZSBzY2FsZSB0byBhIGh1bWFuIHJlYWRhYmxlIHRleHRcclxuICogQHBhcmFtIFNjYWxlIG9mIHRoZSBtYXBcclxuICogQHJldHVybnMgSHVtYW4gcmVhZGFibGUgc2NhbGUgdGV4dFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNjYWxlKHNjYWxlKSB7XHJcbiAgc2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlKTtcclxuICBpZiAoc2NhbGUgPCAxMDAwMCkge1xyXG4gICAgcmV0dXJuIHNjYWxlICsgJyc7XHJcbiAgfVxyXG5cclxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcclxuICBpZiAoc2NhbGUgPCAxMDAwKSB7XHJcbiAgICByZXR1cm4gc2NhbGUgKyAnSyc7XHJcbiAgfVxyXG5cclxuICBzY2FsZSA9IE1hdGgucm91bmQoc2NhbGUgLyAxMDAwKTtcclxuICByZXR1cm4gc2NhbGUgKyAnTSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm4gdGhlIHJlc29sdXRpb24gZnJvbSBhIHNjYWxlIGRlbm9tXHJcbiAqIEBwYXJhbSBzY2FsZSBTY2FsZSBkZW5vbVxyXG4gKiBAcGFyYW0gZHBpIERQSVxyXG4gKiBAcmV0dXJucyBSZXNvbHV0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShcclxuICBzY2FsZTogbnVtYmVyLFxyXG4gIGRwaTogbnVtYmVyID0gOTZcclxuKTogbnVtYmVyIHtcclxuICBjb25zdCBpbmNoZXNQZXJNZXRlciA9IDM5LjM3MDE7XHJcbiAgcmV0dXJuIHNjYWxlIC8gKGluY2hlc1Blck1ldGVyICogZHBpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgcmVzb2x1dGlvbiBmcm9tIGEgc2NhbGUgZGVub21cclxuICogQHBhcmFtIFNjYWxlIGRlbm9tXHJcbiAqIEByZXR1cm5zIFJlc29sdXRpb25cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZyb21SZXNvbHV0aW9uKFxyXG4gIHJlc29sdXRpb246IG51bWJlcixcclxuICB1bml0OiBzdHJpbmcgPSAnbScsXHJcbiAgZHBpOiBudW1iZXIgPSA5NlxyXG4pOiBudW1iZXIge1xyXG4gIGNvbnN0IGluY2hlc1Blck1ldGVyID0gMzkuMzcwMTtcclxuICByZXR1cm4gcmVzb2x1dGlvbiAqIG9scHJvai5NRVRFUlNfUEVSX1VOSVRbdW5pdF0gKiBpbmNoZXNQZXJNZXRlciAqIGRwaTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgQ1RSTCBrZXkgaXMgcHVzaGVkIGR1cmluZyBhbiBPbCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XHJcbiAqIEBwYXJhbSBldmVudCBPTCBNYXBCcm93c2VyUG9pbnRlckV2ZW50XHJcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIENUUkwga2V5IGlzIHB1c2hlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGN0cmxLZXlEb3duKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pOiBib29sZWFuIHtcclxuICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudDtcclxuICByZXR1cm4gKFxyXG4gICAgIW9yaWdpbmFsRXZlbnQuYWx0S2V5ICYmXHJcbiAgICAoTUFDID8gb3JpZ2luYWxFdmVudC5tZXRhS2V5IDogb3JpZ2luYWxFdmVudC5jdHJsS2V5KSAmJlxyXG4gICAgIW9yaWdpbmFsRXZlbnQuc2hpZnRLZXlcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvKFxyXG4gIGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gIGRlY2ltYWw6IG51bWJlciA9IDNcclxuKTogW251bWJlciwgbnVtYmVyXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIE51bWJlclV0aWxzLnJvdW5kVG9ORGVjaW1hbChjb29yZFswXSwgZGVjaW1hbCksXHJcbiAgICBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoY29vcmRbMV0sIGRlY2ltYWwpXHJcbiAgXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRDb29yZFRvU3RyaW5nKFxyXG4gIGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gIGRlY2ltYWw6IG51bWJlciA9IDNcclxuKTogW3N0cmluZywgc3RyaW5nXSB7XHJcbiAgcmV0dXJuIHJvdW5kQ29vcmRUbyhjb29yZCwgZGVjaW1hbCkubWFwKChyKSA9PiByLnRvU3RyaW5nKCkpIGFzIFtcclxuICAgIHN0cmluZyxcclxuICAgIHN0cmluZ1xyXG4gIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIGNvbnZlcnRlZCBjb29yZGluYXRlcy5cclxuICogQ29udmVyc2lvbiBpcyBkb25lIGZvciBldmVyeSBjb25maWd1cmVkIHByb2plY3Rpb25zXHJcbiAqIGFuZCBmb3IgdGhlIGN1cnJlbnQgVVRNIHpvbmUgYW5kIE1UTSB6b25lLlxyXG4gKiBAcGFyYW0gbG9uTGF0IFtudW1iZXIsIG51bWJlcl0gYXJyYXkgb2YgdGhlIGNvb3JkaW5hdGUgdG8gdHJhbnNmb3JtLlxyXG4gKiBAcGFyYW0gcHJvamVjdGlvbnMgIFByb2plY3Rpb25bXSBBcnJheSBvZiBkZXN0aW5hdGlvbiBwcm9qZWN0aW9uLlxyXG4gKiBAcGFyYW0gcmV2ZXJzZUNvb3JkcyBUbyByZXZlcnNlIGNvb3JkcyBmcm9tIGxhdExvbiB0byBsb25MYXQgKHNlYXJjaCBvcHRpb24pXHJcbiAqIEByZXR1cm5zIFJldHVybnMgYW4gYXJyYXkgb2YgY29udmVydGVkIGNvb3JkaW5hdGVzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGxvbkxhdENvbnZlcnNpb24oXHJcbiAgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gIHByb2plY3Rpb25zOiBQcm9qZWN0aW9uW11cclxuKToge1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBhbGlhczogc3RyaW5nO1xyXG4gIGNvb3JkOiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIGlnbzJDb29yZEZvcm1hdDogc3RyaW5nO1xyXG59W10ge1xyXG4gIGNvbnN0IHJhd0Nvb3JkMzg1NyA9IG9scHJvai50cmFuc2Zvcm0obG9uTGF0LCAnRVBTRzo0MzI2JywgJ0VQU0c6Mzg1NycpIGFzIFtcclxuICAgIG51bWJlcixcclxuICAgIG51bWJlclxyXG4gIF07XHJcbiAgY29uc3QgY29udmVydGVkTG9uTGF0ID0gW1xyXG4gICAge1xyXG4gICAgICBjb2RlOiAnRVBTRzozODU3JyxcclxuICAgICAgYWxpYXM6ICdXZWIgTWVyY2F0b3InLFxyXG4gICAgICBjb29yZDogcmF3Q29vcmQzODU3LFxyXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3JvdW5kQ29vcmRUbyhyYXdDb29yZDM4NTcpLmpvaW4oJywgJyl9IDsgMzg1N2BcclxuICAgIH1cclxuICBdO1xyXG5cclxuICAvLyBkZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUuXHJcbiAgY29uc3QgdXRtWm9uZSA9IHV0bVpvbmVGcm9tTG9uTGF0KGxvbkxhdCk7XHJcbiAgY29uc3QgZXBzZ1V0bSA9IHV0bVpvbmUgPCAxMCA/IGBFUFNHOjMyNjAke3V0bVpvbmV9YCA6IGBFUFNHOjMyNiR7dXRtWm9uZX1gO1xyXG4gIGNvbnN0IHV0bU5hbWUgPSBgVVRNLSR7dXRtWm9uZX1gO1xyXG4gIGNvbnN0IHJhd0Nvb3JkVXRtID0gb2xwcm9qLnRyYW5zZm9ybShsb25MYXQsICdFUFNHOjQzMjYnLCBlcHNnVXRtKSBhcyBbXHJcbiAgICBudW1iZXIsXHJcbiAgICBudW1iZXJcclxuICBdO1xyXG4gIGNvbnZlcnRlZExvbkxhdC5wdXNoKHtcclxuICAgIGNvZGU6IGVwc2dVdG0sXHJcbiAgICBhbGlhczogJ1VUTScsXHJcbiAgICBjb29yZDogcmF3Q29vcmRVdG0sXHJcbiAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3V0bU5hbWV9ICR7cm91bmRDb29yZFRvKHJhd0Nvb3JkVXRtKS5qb2luKCcsICcpfWBcclxuICB9KTtcclxuXHJcbiAgLy8gZGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lLlxyXG4gIGNvbnN0IG10bVpvbmUgPSBtdG1ab25lRnJvbUxvbkxhdChsb25MYXQpO1xyXG4gIGlmIChtdG1ab25lKSB7XHJcbiAgICBjb25zdCBlcHNnTXRtID1cclxuICAgICAgbXRtWm9uZSA8IDEwID8gYEVQU0c6MzIxOCR7bXRtWm9uZX1gIDogYEVQU0c6MzIxJHs4MCArIG10bVpvbmV9YDtcclxuICAgIGNvbnN0IG10bU5hbWUgPSBgTVRNLSR7bXRtWm9uZX1gO1xyXG4gICAgY29uc3QgcmF3Q29vcmRNdG0gPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIGVwc2dNdG0pIGFzIFtcclxuICAgICAgbnVtYmVyLFxyXG4gICAgICBudW1iZXJcclxuICAgIF07XHJcbiAgICBjb252ZXJ0ZWRMb25MYXQucHVzaCh7XHJcbiAgICAgIGNvZGU6IGVwc2dNdG0sXHJcbiAgICAgIGFsaWFzOiAnTVRNJyxcclxuICAgICAgY29vcmQ6IHJhd0Nvb3JkTXRtLFxyXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke210bU5hbWV9ICR7cm91bmRDb29yZFRvKHJhd0Nvb3JkTXRtKS5qb2luKCcsICcpfWBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvamVjdGlvbnMuZm9yRWFjaCgocHJvamVjdGlvbikgPT4ge1xyXG4gICAgY29uc3QgcmF3Q29vcmQgPSBvbHByb2oudHJhbnNmb3JtKGxvbkxhdCwgJ0VQU0c6NDMyNicsIHByb2plY3Rpb24uY29kZSkgYXMgW1xyXG4gICAgICBudW1iZXIsXHJcbiAgICAgIG51bWJlclxyXG4gICAgXTtcclxuICAgIGNvbnN0IG51bWVyaWNFcHNnQ29kZSA9IHByb2plY3Rpb24uY29kZS5zcGxpdCgnOicpWzFdO1xyXG4gICAgY29udmVydGVkTG9uTGF0LnB1c2goe1xyXG4gICAgICBjb2RlOiBwcm9qZWN0aW9uLmNvZGUsXHJcbiAgICAgIGFsaWFzOiBwcm9qZWN0aW9uLmFsaWFzIHx8IHByb2plY3Rpb24uY29kZSxcclxuICAgICAgY29vcmQ6IHJhd0Nvb3JkLFxyXG4gICAgICBpZ28yQ29vcmRGb3JtYXQ6IGAke3JvdW5kQ29vcmRUbyhyYXdDb29yZCkuam9pbihcclxuICAgICAgICAnLCAnXHJcbiAgICAgICl9IDsgJHtudW1lcmljRXBzZ0NvZGV9YFxyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb252ZXJ0ZWRMb25MYXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlY3QgdGhlIGN1cnJlbnQgdXRtIHpvbmUgb2YgdGhlIGxvbi9sYXQgY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIGxvbkxhdCBbbnVtYmVyLCBudW1iZXJdIGFycmF5IG9mIHRoZSBjb29yZGluYXRlIHRvIGRldGVjdCB0aGUgVVRNIHpvbmUuXHJcbiAqIEByZXR1cm5zIG51bWJlciBUaGUgVVRNIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgcmV0dXJuIE1hdGguY2VpbCgobG9uTGF0WzBdICsgMTgwKSAvIDYpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZWN0IHRoZSBjdXJyZW50IG10bSB6b25lIG9mIHRoZSBsb24vbGF0IGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSBsb25MYXQgW251bWJlciwgbnVtYmVyXSBhcnJheSBvZiB0aGUgY29vcmRpbmF0ZSB0byBkZXRlY3QgdGhlIE1UTSB6b25lLlxyXG4gKiBAcmV0dXJucyBudW1iZXIgVGhlIE1UTSB6b25lLiBVbmRlZmluZWQgaWYgb3V0c2lkZSBvZiB0aGUgbXRtIGFwcGxpY2F0aW9uIHpvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbXRtWm9uZUZyb21Mb25MYXQobG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgY29uc3QgbG9uZyA9IGxvbkxhdFswXTtcclxuICBsZXQgbXRtWm9uZTtcclxuICBpZiAobG9uZyA8IC01MSAmJiBsb25nID4gLTU0KSB7XHJcbiAgICBtdG1ab25lID0gMTtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNTQgJiYgbG9uZyA+IC01Nykge1xyXG4gICAgbXRtWm9uZSA9IDI7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTU3ICYmIGxvbmcgPiAtNjApIHtcclxuICAgIG10bVpvbmUgPSAzO1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02MCAmJiBsb25nID4gLTYzKSB7XHJcbiAgICBtdG1ab25lID0gNDtcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNjMgJiYgbG9uZyA+IC02Nikge1xyXG4gICAgbXRtWm9uZSA9IDU7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTY2ICYmIGxvbmcgPiAtNjkpIHtcclxuICAgIG10bVpvbmUgPSA2O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC02OSAmJiBsb25nID4gLTcyKSB7XHJcbiAgICBtdG1ab25lID0gNztcclxuICB9XHJcbiAgaWYgKGxvbmcgPCAtNzIgJiYgbG9uZyA+IC03NSkge1xyXG4gICAgbXRtWm9uZSA9IDg7XHJcbiAgfVxyXG4gIGlmIChsb25nIDwgLTc1ICYmIGxvbmcgPiAtNzgpIHtcclxuICAgIG10bVpvbmUgPSA5O1xyXG4gIH1cclxuICBpZiAobG9uZyA8IC03OCAmJiBsb25nID4gLTgxKSB7XHJcbiAgICBtdG1ab25lID0gMTA7XHJcbiAgfVxyXG4gIHJldHVybiBtdG1ab25lO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { MapBrowserComponent } from '../map-browser/map-browser.component';
|
|
2
|
+
import { MessageService, NetworkService } from '@igo2/core';
|
|
4
3
|
import { combineLatest } from 'rxjs';
|
|
4
|
+
import { MapBrowserComponent } from '../map-browser/map-browser.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../map-browser/map-browser.component";
|
|
7
7
|
import * as i2 from "@igo2/core";
|
|
@@ -104,4 +104,4 @@ export class MapOfflineDirective {
|
|
|
104
104
|
selector: '[igoMapOffline]'
|
|
105
105
|
}]
|
|
106
106
|
}], function () { return [{ type: i1.MapBrowserComponent }, { type: i2.NetworkService }, { type: i2.MessageService }]; }, null); })();
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2ZmbGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL21hcE9mZmxpbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQW1CLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUc3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBV3JDLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhGLFNBQVMsQ0FBc0I7SUFFdkMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRU8saUJBQWlCLENBQUM7SUFFMUIsWUFDRSxTQUE4QixFQUN0QixjQUE4QixFQUM5QixjQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBc0IsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLG1EQUFtRDtZQUNuRCxJQUFJLGFBQWEsSUFBSSxhQUFhLEtBQUssTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUMvRCxPQUFPO2FBQ1I7WUFD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UUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDeEMsT0FBTztxQkFDUjtvQkFDQSxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBVSxDQUFDLE1BQU0sQ0FDbEMsNEJBQTRCLENBQUMsR0FBRyxDQUNqQyxDQUFDO2lCQUNIO3FCQUFNO29CQUNMLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN2RTthQUNGO2lCQUFNO2dCQUNMLHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RFLE9BQU87YUFDUjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs2RUEvR1UsbUJBQW1COzZEQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FIL0IsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7YUFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlLCBDb25uZWN0aW9uU3RhdGUsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5cbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4vbWFwJztcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi9tYXAtYnJvd3Nlci9tYXAtYnJvd3Nlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9kYXRhc291cmNlLmludGVyZmFjZSc7XG5cbmludGVyZmFjZSBPZmZsaW5hYmxlU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgcGF0aE9mZmxpbmU/OiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ29NYXBPZmZsaW5lXSdcbn0pXG5leHBvcnQgY2xhc3MgTWFwT2ZmbGluZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudDtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmlvdXNNZXNzYWdlSWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGluaXRpYWxPbmxpbmUgPSB3aW5kb3cubmF2aWdhdG9yLm9uTGluZTtcbiAgICB0aGlzLm1hcC5mb3JjZWRPZmZsaW5lJC5zdWJzY3JpYmUoKGZvcmNlZE9mZmxpbmU6IGJvb2xlYW4pID0+IHtcbiAgICAgIGNvbnN0IG9ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xuICAgICAgLy8gcHJldmVudCBmaXJzdCBvbmxpbmUgbWVzc2FnZSBpZiBubyBzdGF0ZSBjaGFuZ2UuXG4gICAgICBpZiAoaW5pdGlhbE9ubGluZSAmJiBpbml0aWFsT25saW5lID09PSBvbmxpbmUgJiYgIWZvcmNlZE9mZmxpbmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJldmlvdXNNZXNzYWdlSWQpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5yZW1vdmUodGhpcy5wcmV2aW91c01lc3NhZ2VJZCk7XG4gICAgICB9XG4gICAgICBpZiAoIWZvcmNlZE9mZmxpbmUgJiYgb25saW5lKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VPYmogPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oXG4gICAgICAgICAgJ2lnby5nZW8ubmV0d29yay5vbmxpbmUubWVzc2FnZScsXG4gICAgICAgICAgJ2lnby5nZW8ubmV0d29yay5vbmxpbmUudGl0bGUnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlSWQgPSBtZXNzYWdlT2JqLnRvYXN0SWQ7XG4gICAgICB9IGVsc2UgaWYgKGZvcmNlZE9mZmxpbmUpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZU9iaiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mbyhcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9mZmxpbmUubWVzc2FnZScsXG4gICAgICAgICAgJ2lnby5nZW8ubmV0d29yay5vZmZsaW5lLnRpdGxlJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZUlkID0gbWVzc2FnZU9iai50b2FzdElkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm5ldHdvcmtTZXJ2aWNlLmN1cnJlbnRTdGF0ZSgpLFxuICAgICAgdGhpcy5tYXAuZm9yY2VkT2ZmbGluZSQsXG4gICAgICB0aGlzLm1hcC5sYXllcnMkXG4gICAgXSkuc3Vic2NyaWJlKChidW5jaDogW0Nvbm5lY3Rpb25TdGF0ZSwgYm9vbGVhbiwgTGF5ZXJbXV0pID0+IHtcbiAgICAgIGNvbnN0IG9ubGluZSA9IGJ1bmNoWzBdLmNvbm5lY3Rpb247XG4gICAgICBjb25zdCBmb3JjZWRPZmZsaW5lID0gYnVuY2hbMV07XG4gICAgICBjb25zdCBsYXllcnMgPSBidW5jaFsyXTtcbiAgICAgIHRoaXMuaGFuZGxlTGF5ZXJzT25saW5lU3RhdGUob25saW5lLCBmb3JjZWRPZmZsaW5lLCBsYXllcnMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb25PZmZsaW5hYmxlTGF5ZXJSZXNvbHV0aW9uKFxuICAgIG9ubGluZTogYm9vbGVhbixcbiAgICBmb3JjZWRPZmZsaW5lOiBib29sZWFuLFxuICAgIGxheWVyOiBMYXllclxuICApIHtcbiAgICBpZiAoIW9ubGluZSB8fCBmb3JjZWRPZmZsaW5lKSB7XG4gICAgICBsYXllci5tYXhSZXNvbHV0aW9uID0gMDtcbiAgICB9IGVsc2UgaWYgKG9ubGluZSB8fCAhZm9yY2VkT2ZmbGluZSkge1xuICAgICAgbGF5ZXIubWF4UmVzb2x1dGlvbiA9IGxheWVyLm9wdGlvbnMubWF4UmVzb2x1dGlvbiB8fCBJbmZpbml0eTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxheWVyc09ubGluZVN0YXRlKFxuICAgIG9ubGluZTogYm9vbGVhbixcbiAgICBmb3JjZWRPZmZsaW5lOiBib29sZWFuLFxuICAgIGxheWVyczogTGF5ZXJbXVxuICApIHtcbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgIGxldCBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zO1xuICAgICAgaWYgKGxheWVyLmlzSWdvSW50ZXJuYWxMYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBkZXRlY3QgaWYgbGF5ZXIvc291cmNlIGFyZSBvZmZsaW5hYmxlIGJ5IHVybC9wYXRoT2ZmbGluZSBwcm9wZXJ0aWVzXG4gICAgICBpZiAoXG4gICAgICAgIChsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMgYXMgT2ZmbGluYWJsZVNvdXJjZU9wdGlvbnMpPy5wYXRoT2ZmbGluZVxuICAgICAgKSB7XG4gICAgICAgIG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnM7XG4gICAgICB9XG4gICAgICBpZiAob2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucykge1xuICAgICAgICBjb25zdCB0eXBlID0gb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucy50eXBlO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ212dCcpIHtcbiAgICAgICAgICBsYXllci5vbC5nZXRTb3VyY2UoKS5yZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvbmxpbmUgfHwgZm9yY2VkT2ZmbGluZSkge1xuICAgICAgICAgIGlmIChbJ3ZlY3RvcicsICdjbHVzdGVyJ10uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgKGxheWVyLm9sLmdldFNvdXJjZSgpIGFzIGFueSkuc2V0VXJsKFxuICAgICAgICAgICAgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucy5wYXRoT2ZmbGluZVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoIW9ubGluZSB8fCAhZm9yY2VkT2ZmbGluZSkge1xuICAgICAgICAgIGlmIChbJ3ZlY3RvcicsICdjbHVzdGVyJ10uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgKGxheWVyLm9sLmdldFNvdXJjZSgpIGFzIGFueSkuc2V0VXJsKFxuICAgICAgICAgICAgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucy51cmxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGFuZGxlTm9uT2ZmbGluYWJsZUxheWVyUmVzb2x1dGlvbihvbmxpbmUsIGZvcmNlZE9mZmxpbmUsIGxheWVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRk9SIEFMTCBOT04gT0ZGTElOQUJMRSBTT1VSQ0UgKGkuZS4gRVhDRVBUIFBSRVZJT1VTKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOb25PZmZsaW5hYmxlTGF5ZXJSZXNvbHV0aW9uKG9ubGluZSwgZm9yY2VkT2ZmbGluZSwgbGF5ZXIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwT2ZmbGluZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL21hcE9mZmxpbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBbUIsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXJDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7O0FBVTNFLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhGLFNBQVMsQ0FBc0I7SUFFdkMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRU8saUJBQWlCLENBQUM7SUFFMUIsWUFDRSxTQUE4QixFQUN0QixjQUE4QixFQUM5QixjQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXRDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBc0IsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLG1EQUFtRDtZQUNuRCxJQUFJLGFBQWEsSUFBSSxhQUFhLEtBQUssTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUMvRCxPQUFPO2FBQ1I7WUFD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UUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDeEMsT0FBTztxQkFDUjtvQkFDQSxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBVSxDQUFDLE1BQU0sQ0FDbEMsNEJBQTRCLENBQUMsR0FBRyxDQUNqQyxDQUFDO2lCQUNIO3FCQUFNO29CQUNMLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUN2RTthQUNGO2lCQUFNO2dCQUNMLHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RFLE9BQU87YUFDUjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs2RUEvR1UsbUJBQW1COzZEQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FIL0IsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7YUFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0ZSwgTWVzc2FnZVNlcnZpY2UsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyJztcclxuaW1wb3J0IHsgTWFwQnJvd3NlckNvbXBvbmVudCB9IGZyb20gJy4uL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4vbWFwJztcclxuXHJcbmludGVyZmFjZSBPZmZsaW5hYmxlU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcclxuICBwYXRoT2ZmbGluZT86IHN0cmluZztcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvTWFwT2ZmbGluZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXBPZmZsaW5lRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQ7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXZpb3VzTWVzc2FnZUlkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcclxuICAgIHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgY29uc3QgaW5pdGlhbE9ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xyXG4gICAgdGhpcy5tYXAuZm9yY2VkT2ZmbGluZSQuc3Vic2NyaWJlKChmb3JjZWRPZmZsaW5lOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xyXG4gICAgICAvLyBwcmV2ZW50IGZpcnN0IG9ubGluZSBtZXNzYWdlIGlmIG5vIHN0YXRlIGNoYW5nZS5cclxuICAgICAgaWYgKGluaXRpYWxPbmxpbmUgJiYgaW5pdGlhbE9ubGluZSA9PT0gb25saW5lICYmICFmb3JjZWRPZmZsaW5lKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzTWVzc2FnZUlkKSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5yZW1vdmUodGhpcy5wcmV2aW91c01lc3NhZ2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmb3JjZWRPZmZsaW5lICYmIG9ubGluZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VPYmogPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAnaWdvLmdlby5uZXR3b3JrLm9ubGluZS5tZXNzYWdlJyxcclxuICAgICAgICAgICdpZ28uZ2VvLm5ldHdvcmsub25saW5lLnRpdGxlJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2VJZCA9IG1lc3NhZ2VPYmoudG9hc3RJZDtcclxuICAgICAgfSBlbHNlIGlmIChmb3JjZWRPZmZsaW5lKSB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZU9iaiA9IHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mbyhcclxuICAgICAgICAgICdpZ28uZ2VvLm5ldHdvcmsub2ZmbGluZS5tZXNzYWdlJyxcclxuICAgICAgICAgICdpZ28uZ2VvLm5ldHdvcmsub2ZmbGluZS50aXRsZSdcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlSWQgPSBtZXNzYWdlT2JqLnRvYXN0SWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLm5ldHdvcmtTZXJ2aWNlLmN1cnJlbnRTdGF0ZSgpLFxyXG4gICAgICB0aGlzLm1hcC5mb3JjZWRPZmZsaW5lJCxcclxuICAgICAgdGhpcy5tYXAubGF5ZXJzJFxyXG4gICAgXSkuc3Vic2NyaWJlKChidW5jaDogW0Nvbm5lY3Rpb25TdGF0ZSwgYm9vbGVhbiwgTGF5ZXJbXV0pID0+IHtcclxuICAgICAgY29uc3Qgb25saW5lID0gYnVuY2hbMF0uY29ubmVjdGlvbjtcclxuICAgICAgY29uc3QgZm9yY2VkT2ZmbGluZSA9IGJ1bmNoWzFdO1xyXG4gICAgICBjb25zdCBsYXllcnMgPSBidW5jaFsyXTtcclxuICAgICAgdGhpcy5oYW5kbGVMYXllcnNPbmxpbmVTdGF0ZShvbmxpbmUsIGZvcmNlZE9mZmxpbmUsIGxheWVycyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTm9uT2ZmbGluYWJsZUxheWVyUmVzb2x1dGlvbihcclxuICAgIG9ubGluZTogYm9vbGVhbixcclxuICAgIGZvcmNlZE9mZmxpbmU6IGJvb2xlYW4sXHJcbiAgICBsYXllcjogTGF5ZXJcclxuICApIHtcclxuICAgIGlmICghb25saW5lIHx8IGZvcmNlZE9mZmxpbmUpIHtcclxuICAgICAgbGF5ZXIubWF4UmVzb2x1dGlvbiA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKG9ubGluZSB8fCAhZm9yY2VkT2ZmbGluZSkge1xyXG4gICAgICBsYXllci5tYXhSZXNvbHV0aW9uID0gbGF5ZXIub3B0aW9ucy5tYXhSZXNvbHV0aW9uIHx8IEluZmluaXR5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVMYXllcnNPbmxpbmVTdGF0ZShcclxuICAgIG9ubGluZTogYm9vbGVhbixcclxuICAgIGZvcmNlZE9mZmxpbmU6IGJvb2xlYW4sXHJcbiAgICBsYXllcnM6IExheWVyW11cclxuICApIHtcclxuICAgIGxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xyXG4gICAgICBsZXQgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucztcclxuICAgICAgaWYgKGxheWVyLmlzSWdvSW50ZXJuYWxMYXllcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBkZXRlY3QgaWYgbGF5ZXIvc291cmNlIGFyZSBvZmZsaW5hYmxlIGJ5IHVybC9wYXRoT2ZmbGluZSBwcm9wZXJ0aWVzXHJcbiAgICAgIGlmIChcclxuICAgICAgICAobGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zIGFzIE9mZmxpbmFibGVTb3VyY2VPcHRpb25zKT8ucGF0aE9mZmxpbmVcclxuICAgICAgKSB7XHJcbiAgICAgICAgb2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucztcclxuICAgICAgfVxyXG4gICAgICBpZiAob2ZmbGluYWJsZUJ5VXJsU291cmNlT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnR5cGU7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdtdnQnKSB7XHJcbiAgICAgICAgICBsYXllci5vbC5nZXRTb3VyY2UoKS5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghb25saW5lIHx8IGZvcmNlZE9mZmxpbmUpIHtcclxuICAgICAgICAgIGlmIChbJ3ZlY3RvcicsICdjbHVzdGVyJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgKGxheWVyLm9sLmdldFNvdXJjZSgpIGFzIGFueSkuc2V0VXJsKFxyXG4gICAgICAgICAgICBvZmZsaW5hYmxlQnlVcmxTb3VyY2VPcHRpb25zLnBhdGhPZmZsaW5lXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIW9ubGluZSB8fCAhZm9yY2VkT2ZmbGluZSkge1xyXG4gICAgICAgICAgaWYgKFsndmVjdG9yJywgJ2NsdXN0ZXInXS5pbmNsdWRlcyh0eXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAobGF5ZXIub2wuZ2V0U291cmNlKCkgYXMgYW55KS5zZXRVcmwoXHJcbiAgICAgICAgICAgIG9mZmxpbmFibGVCeVVybFNvdXJjZU9wdGlvbnMudXJsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZU5vbk9mZmxpbmFibGVMYXllclJlc29sdXRpb24ob25saW5lLCBmb3JjZWRPZmZsaW5lLCBsYXllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEZPUiBBTEwgTk9OIE9GRkxJTkFCTEUgU09VUkNFIChpLmUuIEVYQ0VQVCBQUkVWSU9VUyk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVOb25PZmZsaW5hYmxlTGF5ZXJSZXNvbHV0aW9uKG9ubGluZSwgZm9yY2VkT2ZmbGluZSwgbGF5ZXIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbi5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9wcm9qZWN0aW9uLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUHJvamVjdGlvbiB7XHJcbiAgYWxpYXM/OiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIGRlZjogc3RyaW5nO1xyXG4gIGV4dGVudDogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFByb2plY3Rpb25zIGV4dGVuZHMgUHJvamVjdGlvbiB7XHJcbiAgdHJhbnNsYXRlS2V5Pzogc3RyaW5nO1xyXG4gIHRyYW5zbGF0ZWRWYWx1ZT86IHN0cmluZztcclxuICB6b25lOiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0aW9uc0xpbWl0YXRpb25zT3B0aW9ucyB7XHJcbiAgcHJvakZyb21Db25maWc/OiBib29sZWFuO1xyXG4gIG5hZDgzPzogYm9vbGVhbjtcclxuICB3Z3M4ND86IGJvb2xlYW47XHJcbiAgd2ViTWVyY2F0b3I/OiBib29sZWFuO1xyXG4gIHV0bT86IGJvb2xlYW47XHJcbiAgbXRtPzogYm9vbGVhbjtcclxuICB1dG1ab25lPzoge1xyXG4gICAgbWluWm9uZT86IG51bWJlcjtcclxuICAgIG1heFpvbmU/OiBudW1iZXI7XHJcbiAgfTtcclxuICBtdG1ab25lPzoge1xyXG4gICAgbWluWm9uZT86IG51bWJlcjtcclxuICAgIG1heFpvbmU/OiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import
|
|
2
|
+
import { ConfigService } from '@igo2/core';
|
|
3
3
|
import * as olproj from 'ol/proj';
|
|
4
4
|
import * as olproj4 from 'ol/proj/proj4';
|
|
5
|
-
import
|
|
5
|
+
import proj4 from 'proj4';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@igo2/core";
|
|
8
8
|
/**
|
|
@@ -64,4 +64,4 @@ export class ProjectionService {
|
|
|
64
64
|
providedIn: 'root'
|
|
65
65
|
}]
|
|
66
66
|
}], function () { return [{ type: i1.ConfigService }]; }, null); })();
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9wcm9qZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7O0FBSTFCOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQ1I7SUFBcEIsWUFBb0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUN2QyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0MsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ2pDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN6RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDO1lBQ3pFLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixPQUFPLGlDQUFpQyxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxHQUFlLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBRUQseUJBQXlCO1FBQ3pCLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxJQUFJLEdBQ1IsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDbkUsSUFBSSxJQUFJLENBQUM7WUFDVCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6QztpQkFBTTtnQkFDTCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwQztZQUNELE1BQU0sR0FBRyxHQUFHLCtCQUErQixJQUFJLHNGQUFzRixDQUFDO1lBQ3RJLE1BQU0sSUFBSSxHQUFlLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLFVBQXNCO1FBQ3ZDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7MkVBN0NVLGlCQUFpQjtnRUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFGaEIsTUFBTTs7dUZBRVAsaUJBQWlCO2NBSDdCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcclxuaW1wb3J0ICogYXMgb2xwcm9qNCBmcm9tICdvbC9wcm9qL3Byb2o0JztcclxuXHJcbmltcG9ydCBwcm9qNCBmcm9tICdwcm9qNCc7XHJcblxyXG5pbXBvcnQgeyBQcm9qZWN0aW9uIH0gZnJvbSAnLi9wcm9qZWN0aW9uLmludGVyZmFjZXMnO1xyXG5cclxuLyoqXHJcbiAqIFdoZW4gaW5qZWN0ZWQsIHRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhbmRcclxuICogcHJvamVjdGlvbiBkZWZpbmVkIGluIHRoZSBhcHBsaWNhdGlvbiBjb25maWcuIEEgY3VzdG9tIHByb2plY3Rpb25cclxuICogbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCB0byBiZSB1c2FibGUgYnkgT0wuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9qZWN0aW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UpIHtcclxuICAgIGNvbnN0IHByb2plY3Rpb25zOiBQcm9qZWN0aW9uW10gPVxyXG4gICAgICB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ3Byb2plY3Rpb25zJykgfHwgW107XHJcbiAgICBwcm9qZWN0aW9ucy5mb3JFYWNoKChwcm9qZWN0aW9uKSA9PiB7XHJcbiAgICAgIHByb2plY3Rpb24uYWxpYXMgPSBwcm9qZWN0aW9uLmFsaWFzID8gcHJvamVjdGlvbi5hbGlhcyA6IHByb2plY3Rpb24uY29kZTtcclxuICAgICAgdGhpcy5yZWdpc3RlclByb2plY3Rpb24ocHJvamVjdGlvbik7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyByZWdpc3RlciBhbGwgdXRtIHpvbmVzXHJcbiAgICBmb3IgKGxldCB1dG1ab25lID0gMTsgdXRtWm9uZSA8IDYxOyB1dG1ab25lKyspIHtcclxuICAgICAgY29uc3QgY29kZSA9IHV0bVpvbmUgPCAxMCA/IGBFUFNHOjMyNjAke3V0bVpvbmV9YCA6IGBFUFNHOjMyNiR7dXRtWm9uZX1gO1xyXG4gICAgICBjb25zdCBkZWYgPSBgK3Byb2o9dXRtICt6b25lPSR7dXRtWm9uZX0gK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzYDtcclxuICAgICAgY29uc3QgcHJvajogUHJvamVjdGlvbiA9IHsgY29kZSwgZGVmLCBleHRlbnQ6IHVuZGVmaW5lZCB9O1xyXG4gICAgICB0aGlzLnJlZ2lzdGVyUHJvamVjdGlvbihwcm9qKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZWdpc3RlciBhbGwgbXRtIHpvbmVzXHJcbiAgICBmb3IgKGxldCBtdG1ab25lID0gMTsgbXRtWm9uZSA8IDExOyBtdG1ab25lKyspIHtcclxuICAgICAgY29uc3QgY29kZSA9XHJcbiAgICAgICAgbXRtWm9uZSA8IDEwID8gYEVQU0c6MzIxOCR7bXRtWm9uZX1gIDogYEVQU0c6MzIxJHs4MCArIG10bVpvbmV9YDtcclxuICAgICAgbGV0IGxvbjA7XHJcbiAgICAgIGlmIChOdW1iZXIobXRtWm9uZSkgPD0gMikge1xyXG4gICAgICAgIGxvbjAgPSAtNTAgLSBOdW1iZXIobXRtWm9uZSkgKiAzO1xyXG4gICAgICB9IGVsc2UgaWYgKE51bWJlcihtdG1ab25lKSA+PSAxMikge1xyXG4gICAgICAgIGxvbjAgPSAtODEgLSAoTnVtYmVyKG10bVpvbmUpIC0gMTIpICogMztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsb24wID0gLTQ5LjUgLSBOdW1iZXIobXRtWm9uZSkgKiAzO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRlZiA9IGArcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9JHtsb24wfSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzXCJgO1xyXG4gICAgICBjb25zdCBwcm9qOiBQcm9qZWN0aW9uID0geyBjb2RlLCBkZWYsIGV4dGVudDogdW5kZWZpbmVkIH07XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJQcm9qZWN0aW9uKHByb2opO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIGEgcHJvajQgcHJvamVjdGlvbiBhbmQgcmVnaXN0ZXIgaXQgaW4gT0xcclxuICAgKiBAcGFyYW0gcHJvamVjdGlvbiBQcm9qZWN0aW9uXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJQcm9qZWN0aW9uKHByb2plY3Rpb246IFByb2plY3Rpb24pIHtcclxuICAgIHByb2o0LmRlZnMocHJvamVjdGlvbi5jb2RlLCBwcm9qZWN0aW9uLmRlZik7XHJcbiAgICBvbHByb2o0LnJlZ2lzdGVyKHByb2o0KTtcclxuICAgIGlmIChwcm9qZWN0aW9uLmV4dGVudCkge1xyXG4gICAgICBvbHByb2ouZ2V0KHByb2plY3Rpb24uY29kZSkuc2V0RXh0ZW50KHByb2plY3Rpb24uZXh0ZW50KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|