@igo2/geo 16.1.0 → 16.2.0
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 +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
- package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +3 -3
- package/esm2022/lib/catalog/index.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
- package/esm2022/lib/datasource/shared/index.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options-api.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
- package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +3 -3
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +3 -3
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
- package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions.component.mjs +3 -3
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
- package/esm2022/lib/directions/shared/store.mjs +1 -1
- package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
- package/esm2022/lib/download/shared/download.service.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
- package/esm2022/lib/draw/draw/draw.component.mjs +3 -3
- package/esm2022/lib/draw/shared/draw-icon.service.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +3 -3
- package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
- package/esm2022/lib/feature/index.mjs +1 -1
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/index.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
- 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/selection.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
- package/esm2022/lib/filter/index.mjs +1 -1
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- 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 +3 -3
- package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +3 -3
- 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 +3 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
- package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/ogc-filter.service.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/spatial-filter.service.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2022/lib/filter/shared/time-filter.service.mjs +1 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
- 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 +3 -3
- 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 +3 -3
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +3 -3
- package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +3 -3
- package/esm2022/lib/geometry/index.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
- package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
- package/esm2022/lib/import-export/index.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.service.mjs +1 -1
- package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +3 -3
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
- package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2022/lib/layer/shared/layer.service.mjs +6 -6
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
- package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +3 -3
- package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
- package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
- package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/index.mjs +1 -1
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +9 -11
- package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +3 -3
- package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
- package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
- package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2022/lib/map/info-section/info-section.component.mjs +3 -3
- package/esm2022/lib/map/map-browser/index.mjs +1 -1
- package/esm2022/lib/map/map-center/map-center.component.mjs +3 -3
- package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
- package/esm2022/lib/map/offline-button/offline-button.component.mjs +3 -3
- package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
- package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +2 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +4 -4
- package/esm2022/lib/map/shared/index.mjs +1 -1
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +1 -1
- package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
- package/esm2022/lib/map/shared/map.interface.mjs +1 -1
- package/esm2022/lib/map/shared/map.mjs +1 -1
- package/esm2022/lib/map/shared/map.utils.mjs +1 -1
- package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2022/lib/map/shared/projection.service.mjs +1 -1
- package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
- package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
- package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +3 -3
- package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +3 -3
- package/esm2022/lib/measure/index.mjs +1 -1
- package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
- package/esm2022/lib/measure/measurer/measurer.component.mjs +3 -3
- package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
- package/esm2022/lib/metadata/index.mjs +1 -1
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +5 -5
- package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2022/lib/offline/geoDB/geoDB.service.mjs +1 -1
- package/esm2022/lib/offline/layerDB/index.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
- package/esm2022/lib/offline/layerDB/layerDB.service.mjs +1 -1
- package/esm2022/lib/offline/shared/geo-network.service.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.service.mjs +1 -1
- package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
- package/esm2022/lib/print/print/print.component.mjs +3 -3
- package/esm2022/lib/print/print-form/print-form.component.mjs +3 -3
- package/esm2022/lib/print/shared/geopdf.mjs +1 -1
- package/esm2022/lib/print/shared/print.interface.mjs +1 -1
- package/esm2022/lib/print/shared/print.service.mjs +1 -1
- package/esm2022/lib/print/shared/print.type.mjs +1 -1
- package/esm2022/lib/query/shared/query-search-source.mjs +1 -1
- package/esm2022/lib/query/shared/query-search-source.providers.mjs +1 -1
- package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2022/lib/query/shared/query.utils.mjs +1 -1
- package/esm2022/lib/search/index.mjs +1 -1
- package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -3
- package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
- package/esm2022/lib/search/search-selector/search-selector.component.mjs +3 -3
- package/esm2022/lib/search/search-settings/search-settings.component.mjs +3 -3
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +2 -2
- package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
- package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.enums.mjs +1 -1
- package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/search.service.mjs +1 -1
- package/esm2022/lib/search/shared/search.utils.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.mjs +1 -1
- package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.mjs +1 -1
- package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.mjs +1 -1
- package/esm2022/lib/search/shared/sources/icherche.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.mjs +1 -1
- package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/nominatim.mjs +2 -2
- package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/source.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.providers.mjs +1 -1
- package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
- package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
- package/esm2022/lib/style/shared/font.enum.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
- package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
- package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.module.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
- package/esm2022/lib/style/style-list/style-list.service.mjs +1 -1
- package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
- package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
- package/esm2022/lib/style/style-service/draw-style.service.mjs +1 -1
- package/esm2022/lib/style/style-service/style.service.mjs +1 -1
- package/esm2022/lib/toast/toast.component.mjs +3 -3
- package/esm2022/lib/utils/googleLinks.mjs +1 -1
- package/esm2022/lib/utils/id-generator.mjs +1 -1
- package/esm2022/lib/utils/index.mjs +1 -1
- package/esm2022/lib/utils/osmLinks.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
- package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +1 -1
- package/esm2022/lib/wkt/shared/wkt.service.mjs +15 -15
- package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
- package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +1 -1
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +1 -1
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
- package/fesm2022/igo2-geo.mjs +183 -180
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +2 -2
- package/lib/filter/shared/ogc-filter.interface.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/layer/shared/layers/layer.d.ts +1 -1
- package/lib/layer/shared/layers/layer.interface.d.ts +2 -0
- package/lib/layer/utils/image-watcher.d.ts +1 -1
- package/lib/layer/utils/tile-watcher.d.ts +2 -2
- package/lib/layer/utils/vector-watcher.d.ts +1 -1
- package/lib/map/shared/controllers/geolocation.d.ts +1 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +1 -1
- package/lib/map/shared/map.d.ts +1 -1
- package/lib/overlay/shared/overlay.d.ts +1 -1
- package/lib/search/search-results/search-results.component.d.ts +2 -2
- package/lib/style/shared/vector/vector-style.interface.d.ts +1 -1
- package/package.json +5 -4
- package/src/_index.scss +2 -0
- package/src/geo-theme.scss +23 -23
- package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
- package/src/lib/catalog/catalog.theming.scss +5 -5
- package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
- package/src/lib/directions/directions.theming.scss +6 -6
- package/src/lib/draw/draw.theming.scss +32 -32
- package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
- package/src/lib/feature/feature.theming.scss +4 -4
- package/src/lib/filter/filter.theming.scss +13 -13
- package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
- package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
- package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
- package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
- package/src/lib/layer/layer.theming.scss +10 -10
- package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
- package/src/lib/map/map.theming.scss +9 -9
- package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
- package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
- package/src/lib/measure/measure.theming.scss +5 -5
- package/src/lib/measure/measurer/measurer.theming.scss +26 -26
- package/src/lib/search/search-bar/search-bar.theming.scss +0 -9
- package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
- package/src/lib/search/search.theming.scss +7 -7
- package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
- package/src/lib/workspace/workspace.theming.scss +6 -6
- package/src/style/style.scss +1 -1
|
@@ -5,4 +5,4 @@ export var GeolocationOverlayType;
|
|
|
5
5
|
GeolocationOverlayType["Accuracy"] = "accuracy";
|
|
6
6
|
GeolocationOverlayType["Buffer"] = "buffer";
|
|
7
7
|
})(GeolocationOverlayType || (GeolocationOverlayType = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9jb250cm9sbGVycy9nZW9sb2NhdGlvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0NBLE1BQU0sQ0FBTixJQUFZLHNCQUtYO0FBTEQsV0FBWSxzQkFBc0I7SUFDaEMsK0NBQXFCLENBQUE7SUFDckIsaUVBQXVDLENBQUE7SUFDdkMsK0NBQXFCLENBQUE7SUFDckIsMkNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLHNCQUFzQixLQUF0QixzQkFBc0IsUUFLakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0aW9uTGlrZSB9IGZyb20gJ29sL3Byb2onO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlb2xvY2F0aW9uT3B0aW9ucyB7XG4gIGFjdGl2YXRlRGVmYXVsdD86IGJvb2xlYW47XG4gIGJhc2ljPzogYm9vbGVhbjsgLy8gdG8gY29udHJvbCB0aGUgYnV0dG9uIGljb24uXG4gIGZvbGxvd1Bvc2l0aW9uPzogYm9vbGVhbjsgLy8gdG8gb3ZlcmlkZSB0aGUgZm9sbG93UG9zaXRpb24gZGVmaW5lIGF0IHRoZSBjb250ZXh0IGxldmVsLlxuICBidXR0b24/OiB7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zIHtcbiAgcHJvamVjdGlvbjogUHJvamVjdGlvbkxpa2U7XG4gIGFjY3VyYWN5VGhyZXNob2xkPzogbnVtYmVyO1xuICBmb2xsb3dQb3NpdGlvbj86IGJvb2xlYW47XG4gIGJ1ZmZlcj86IEdlb2xvY2F0aW9uQnVmZmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcEdlb2xvY2F0aW9uU3RhdGUge1xuICBwb3NpdGlvbjogbnVtYmVyW107XG4gIHByb2plY3Rpb246IHN0cmluZztcbiAgYWNjdXJhY3k6IG51bWJlcjtcbiAgYWx0aXR1ZGU6IG51bWJlcjtcbiAgYWx0aXR1ZGVBY2N1cmFjeTogbnVtYmVyO1xuICBoZWFkaW5nOiBudW1iZXI7XG4gIHNwZWVkOiBudW1iZXI7XG4gIGVuYWJsZUhpZ2hBY2N1cmFjeTogYm9vbGVhbjtcbiAgdGltZXN0YW1wOiBEYXRlO1xufVxuZXhwb3J0IGludGVyZmFjZSBHZW9sb2NhdGlvbkJ1ZmZlciB7XG4gIGJ1ZmZlclJhZGl1cz86IG51bWJlcjtcbiAgYnVmZmVyU3Ryb2tlPzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGJ1ZmZlckZpbGw/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgc2hvd0J1ZmZlclJhZGl1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUge1xuICBQb3NpdGlvbiA9ICdwb3NpdGlvbicsXG4gIFBvc2l0aW9uRGlyZWN0aW9uID0gJ3Bvc2l0aW9uRGlyZWN0aW9uJyxcbiAgQWNjdXJhY3kgPSAnYWNjdXJhY3knLFxuICBCdWZmZXIgPSAnYnVmZmVyJ1xufVxuIl19
|
|
@@ -428,4 +428,4 @@ export class MapGeolocationController extends MapController {
|
|
|
428
428
|
}
|
|
429
429
|
}
|
|
430
430
|
}
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFnSy9DO0lBQ0E7SUFDQTtJQUNBO0lBbEtGLGFBQWEsQ0FBUztJQUN0QixlQUFl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LENBQUMsY0FBYyxJQUFJLFlBQVk7Z0JBQ2pDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDcEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7YUFDN0I7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IG9sR2VvbG9jYXRpb24gZnJvbSAnb2wvR2VvbG9jYXRpb24nO1xyXG5pbXBvcnQgT2xNYXAgZnJvbSAnb2wvTWFwJztcclxuaW1wb3J0IHsgUG9pbnQsIFBvbHlnb24gfSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcclxuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBmcm9tQ2lyY2xlIH0gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcclxuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgKiBhcyBvbFNwaGVyZSBmcm9tICdvbC9zcGhlcmUnO1xyXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7XHJcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXHJcbiAgZmVhdHVyZXNBcmVPdXRPZlZpZXcsXHJcbiAgaGlkZU9sRmVhdHVyZSxcclxuICBtb3ZlVG9PbEZlYXR1cmVzXHJcbn0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS51dGlscyc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcclxuaW1wb3J0IHsgTWFwQmFzZSB9IGZyb20gJy4uL21hcC5hYnN0cmFjdCc7XHJcbmltcG9ydCB7IE1hcFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vbWFwLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE1hcENvbnRyb2xsZXIgfSBmcm9tICcuL2NvbnRyb2xsZXInO1xyXG5pbXBvcnQge1xyXG4gIEdlb2xvY2F0aW9uQnVmZmVyLFxyXG4gIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUsXHJcbiAgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyT3B0aW9ucyxcclxuICBNYXBHZW9sb2NhdGlvblN0YXRlXHJcbn0gZnJvbSAnLi9nZW9sb2NhdGlvbi5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIENvbnRyb2xsZXIgdG8gaGFuZGxlIG1hcCB2aWV3IGludGVyYWN0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xyXG4gIHByaXZhdGUgYXJyb3dSb3RhdGlvbjogbnVtYmVyO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHByaXZhdGUgZ2VvbG9jYXRpb25PdmVybGF5OiBPdmVybGF5O1xyXG4gIHByaXZhdGUgcG9zaXRpb25GZWF0dXJlU3R5bGU6IG9sc3R5bGUuU3R5bGUgfCBvbHN0eWxlLlN0eWxlW10gPVxyXG4gICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICByYWRpdXM6IDYsXHJcbiAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICBjb2xvcjogJyMzMzk5Q0MnXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgY29sb3I6ICcjZmZmJyxcclxuICAgICAgICAgIHdpZHRoOiAyXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIHByaXZhdGUgYWNjdXJhY3lGZWF0dXJlU3R5bGU6IG9sc3R5bGUuU3R5bGUgfCBvbHN0eWxlLlN0eWxlW10gPVxyXG4gICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgY29sb3I6ICdyZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNCknLFxyXG4gICAgICAgIHdpZHRoOiAxXHJcbiAgICAgIH0pLFxyXG4gICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KSdcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG5cclxuICBwcml2YXRlIGdldCBidWZmZXJTdHlsZSgpOiBvbHN0eWxlLlN0eWxlIHtcclxuICAgIHJldHVybiBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHsgd2lkdGg6IDIsIGNvbG9yOiB0aGlzLmJ1ZmZlci5idWZmZXJTdHJva2UgfSksXHJcbiAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoeyBjb2xvcjogdGhpcy5idWZmZXIuYnVmZmVyRmlsbCB9KSxcclxuICAgICAgdGV4dDogbmV3IG9sc3R5bGUuVGV4dCh7XHJcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXHJcbiAgICAgICAgb2Zmc2V0WDogMTAsXHJcbiAgICAgICAgb2Zmc2V0WTogLTEwLFxyXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXHJcbiAgICAgICAgdGV4dDogdGhpcy5idWZmZXIuc2hvd0J1ZmZlclJhZGl1c1xyXG4gICAgICAgICAgPyBgJHt0aGlzLmJ1ZmZlci5idWZmZXJSYWRpdXN9bWBcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7IGNvbG9yOiAnIzAwMCcgfSksXHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2UoeyBjb2xvcjogJyNmZmYnLCB3aWR0aDogMyB9KVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBhcnJvd1N0eWxlKCk6IG9sc3R5bGUuU3R5bGUge1xyXG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XHJcbiAgICAgICAgcmFkaXVzOiA1LjUsXHJcbiAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTMyLCAyMDIpJ1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgIGNvbG9yOiAnI2ZmZicsXHJcbiAgICAgICAgICB3aWR0aDogMS41XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgcG9pbnRzOiAzLFxyXG4gICAgICAgIGRpc3BsYWNlbWVudDogWzAsIDldLFxyXG4gICAgICAgIHJvdGF0aW9uOiB0aGlzLmFycm93Um90YXRpb24sXHJcbiAgICAgICAgcm90YXRlV2l0aFZpZXc6IHRydWVcclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW9sb2NhdGlvbjogb2xHZW9sb2NhdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBlbWlzc2lvbiBpbnRlcnZhbCBvZiB0aGUgcG9zaXRpb24uIEluIHNlY29uZHNcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZW1pc3Npb25JbnRlcnZhbFNlY29uZHMkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KDUpO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwR2VvbG9jYXRpb25TdGF0ZT4oXHJcbiAgICB1bmRlZmluZWRcclxuICApO1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIHRyYWNraW5nIHN0YXRlXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHRyYWNraW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBmb2xsb3cgcG9zaXRpb24gc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgZm9sbG93UG9zaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xyXG5cclxuICBwcml2YXRlIGxhc3RQb3NpdGlvbjogeyBjb29yZGluYXRlczogbnVtYmVyW107IGRhdGVUaW1lOiBEYXRlIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdlb2xvY2F0ZSBzaG91bGQgc2hvdyBhIGJ1ZmZlciBhcm91bmQgdGhlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgKi9cclxuICBzZXQgYnVmZmVyKHZhbHVlOiBHZW9sb2NhdGlvbkJ1ZmZlcikge1xyXG4gICAgdGhpcy5fYnVmZmVyID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XHJcbiAgfVxyXG4gIGdldCBidWZmZXIoKTogR2VvbG9jYXRpb25CdWZmZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2J1ZmZlcjtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYnVmZmVyOiBHZW9sb2NhdGlvbkJ1ZmZlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgZ2VvbG9jYXRlIGNvbnRyb2xsZXIgYWNjdXJhY3kgdGhyZXNob2xkIHRvIHN0b3JlL3Nob3cgdGhlIHBvc2l0aW9uLlxyXG4gICAqL1xyXG4gIHNldCBhY2N1cmFjeVRocmVzaG9sZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24odGhpcy5wb3NpdGlvbiQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjY3VyYWN5VGhyZXNob2xkKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWNjdXJhY3lUaHJlc2hvbGQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FjY3VyYWN5VGhyZXNob2xkO1xyXG5cclxuICBnZXQgb2xHZW9sb2NhdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmdlb2xvY2F0aW9uO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgYWN0aXZhdGUgdGhlIGdlb2xvY2F0aW9uLlxyXG4gICAqL1xyXG4gIGdldCB0cmFja2luZygpIHtcclxuICAgIHJldHVybiB0aGlzLmdlb2xvY2F0aW9uLmdldFRyYWNraW5nKCk7XHJcbiAgfVxyXG5cclxuICBzZXQgdHJhY2tpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZ2VvbG9jYXRpb24uc2V0VHJhY2tpbmcodmFsdWUgfHwgZmFsc2UpO1xyXG4gICAgdGhpcy50cmFja2luZyQubmV4dCh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdnZW9sb2NhdGlvbi50cmFja2luZycsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgYWN0aXZhdGUgdGhlIHZpZXcgdHJhY2tpbmcgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgKi9cclxuICBzZXQgZm9sbG93UG9zaXRpb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ZvbGxvd1Bvc2l0aW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uJC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2U/LmdldENvbmZpZygnZ2VvbG9jYXRlLmZvbGxvd1Bvc2l0aW9uJykgPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuX2ZvbGxvd1Bvc2l0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZm9sbG93UG9zaXRpb24kLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24odGhpcy5wb3NpdGlvbiQudmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnZ2VvbG9jYXRpb24uZm9sbG93UG9zaXRpb24nLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZm9sbG93UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9sbG93UG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb2xsb3dQb3NpdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hcDogTWFwQmFzZSxcclxuICAgIHByaXZhdGUgb3B0aW9ucz86IE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlck9wdGlvbnMsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlPzogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U/OiBDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzLm1hcCk7XHJcbiAgICB0aGlzLl9mb2xsb3dQb3NpdGlvbiA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuZm9sbG93UG9zaXRpb25cclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxyXG4gICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgdGhpcy5fYnVmZmVyID1cclxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5idWZmZXIgPyB0aGlzLm9wdGlvbnMuYnVmZmVyIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5fYWNjdXJhY3lUaHJlc2hvbGQgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuYWNjdXJhY3lUaHJlc2hvbGRcclxuICAgICAgICA6IDUwMDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgb3IgcmVtb3ZlIHRoaXMgY29udHJvbGxlciB0by9mcm9tIGEgbWFwLlxyXG4gICAqIEBwYXJhbSBtYXAgT0wgTWFwXHJcbiAgICovXHJcbiAgc2V0T2xNYXAob2xNYXA6IE9sTWFwIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBzdXBlci5zZXRPbE1hcChvbE1hcCk7XHJcbiAgICB0aGlzLnNldHVwT2JzZXJ2ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlbGV0ZUdlb2xvY2F0aW9uRmVhdHVyZXMoKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XHJcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvbik7XHJcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeSk7XHJcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBPYnNlcnZlcnMoKSB7XHJcbiAgICB0aGlzLnRyYWNraW5nJC5zdWJzY3JpYmUoKHRyYWNraW5nKSA9PiB7XHJcbiAgICAgIGlmICh0cmFja2luZykge1xyXG4gICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlLCB0cnVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRlbGV0ZUdlb2xvY2F0aW9uRmVhdHVyZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5nZW9sb2NhdGlvbiA9IG5ldyBvbEdlb2xvY2F0aW9uKHtcclxuICAgICAgLy8gZW5hYmxlSGlnaEFjY3VyYWN5IG11c3QgYmUgc2V0IHRvIHRydWUgdG8gaGF2ZSB0aGUgaGVhZGluZyB2YWx1ZS5cclxuICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlLFxyXG4gICAgICAgIG1heGltdW1BZ2U6IDEwMDAwLFxyXG4gICAgICAgIHRpbWVvdXQ6IDYwMDAwMFxyXG4gICAgICB9LFxyXG4gICAgICBwcm9qZWN0aW9uOiB0aGlzLm9wdGlvbnMucHJvamVjdGlvblxyXG4gICAgfSk7XHJcbiAgICBsZXQgdHJhY2tpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLnB1c2goXHJcbiAgICAgIHRoaXMuZW1pc3Npb25JbnRlcnZhbFNlY29uZHMkXHJcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCh2YWx1ZSkgPT4gaW50ZXJ2YWwodmFsdWUgKiAxMDAwKSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodHJhY2tpbmcgPT09IHRoaXMudHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdHJhY2tpbmcgPSB0aGlzLnRyYWNraW5nO1xyXG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi5vbignY2hhbmdlJywgKGV2dCkgPT4ge1xyXG4gICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UoZmFsc2UsIGZhbHNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQXJyb3dGZWF0dXJlT3JpZW50YXRpb24ocG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUpIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uNDMyNiA9IG9scHJvai50cmFuc2Zvcm0oXHJcbiAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxyXG4gICAgICBwb3NpdGlvbi5wcm9qZWN0aW9uLFxyXG4gICAgICAnRVBTRzo0MzI2J1xyXG4gICAgKTtcclxuICAgIGlmICghdGhpcy5sYXN0UG9zaXRpb24pIHtcclxuICAgICAgdGhpcy5sYXN0UG9zaXRpb24gPSB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbjQzMjYsIGRhdGVUaW1lOiBuZXcgRGF0ZSgpIH07XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGFycm93RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxyXG4gICAgKTtcclxuICAgIGNvbnN0IGlzTW92aW5nID1cclxuICAgICAgcG9zaXRpb24/LnNwZWVkID4gMS4yNSAmJlxyXG4gICAgICB0aGlzLmRpc3RhbmNlQmV0d2VlblBvaW50cyh0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlcywgcG9zaXRpb240MzI2KSA+XHJcbiAgICAgICAgMC4wMDM7XHJcbiAgICBpZiAocG9zaXRpb24uYWNjdXJhY3kgPD0gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCAmJiBpc01vdmluZykge1xyXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIGhlYWRpbmcgdXNpbmcgY3VycmVudCBwb3NpdGlvbiBhbmQgbGFzdCByZWNvcmRlZFxyXG4gICAgICAvLyBiZWNhdXNlIG9sIGhlYWRpbmcgbm90IHJldHVybmluZyByaWdodCB2YWx1ZVxyXG4gICAgICB2YXIgZHggPSBwb3NpdGlvbjQzMjZbMV0gLSB0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlc1sxXTtcclxuICAgICAgdmFyIGR5ID0gcG9zaXRpb240MzI2WzBdIC0gdGhpcy5sYXN0UG9zaXRpb24uY29vcmRpbmF0ZXNbMF07XHJcbiAgICAgIHZhciB0aGV0YSA9IE1hdGguYXRhbjIoZHksIGR4KTtcclxuICAgICAgaWYgKHRoZXRhIDwgMCkgdGhldGEgPSAyICogTWF0aC5QSSArIHRoZXRhO1xyXG4gICAgICB0aGlzLmFycm93Um90YXRpb24gPSB0aGV0YTtcclxuICAgICAgaWYgKGFycm93RmVhdHVyZSkge1xyXG4gICAgICAgIGFycm93RmVhdHVyZS5zZXRTdHlsZSh0aGlzLmFycm93U3R5bGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdFBvc2l0aW9uID0geyBjb29yZGluYXRlczogcG9zaXRpb240MzI2LCBkYXRlVGltZTogbmV3IERhdGUoKSB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGFycm93RmVhdHVyZSAmJlxyXG4gICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5sYXN0UG9zaXRpb24uZGF0ZVRpbWUuZ2V0VGltZSgpID4gMzAwMFxyXG4gICAgICApXHJcbiAgICAgICAgaGlkZU9sRmVhdHVyZShhcnJvd0ZlYXR1cmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJldHVybnMgZGlzdGFuY2UgaW4ga20gYmV0d2VlbiBjb29yZDEgYW5kIGNvb3JkMlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKGNvb3JkMTogbnVtYmVyW10sIGNvb3JkMjogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIG9sU3BoZXJlLmdldERpc3RhbmNlKGNvb3JkMSwgY29vcmQyKSAvIDEwMDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkT25DaGFuZ2VkTGlzdGVuZXIoZXZlbnQ6IChnZW86IG9sR2VvbG9jYXRpb24pID0+IGFueSkge1xyXG4gICAgbGV0IGxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgICBldmVudCh0aGlzLmdlb2xvY2F0aW9uKTtcclxuICAgIH07XHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uLm9uKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XHJcbiAgICByZXR1cm4gbGlzdGVuZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlQ2hhbmdlZExpc3RlbmVyKGV2ZW50OiAoKSA9PiBhbnkpIHtcclxuICAgIHRoaXMuZ2VvbG9jYXRpb24udW4oJ2NoYW5nZScsIGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVHZW9sb2NhdGlvbk9wdGlvbnMob3B0aW9uczogTWFwVmlld09wdGlvbnMpIHtcclxuICAgIGlmICghb3B0aW9ucykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyB0b2RvIG1heWJlIGEgZGVkaWNhdGVkIGludGVyZmFjZSBmb3IgZ2VvbG9jYXRpb24gc2hvdWxkIGJlIGRlZmluZWQgaW5zdGVhZCBvZiBwdXR0aW5nIHRoZXNlIGluc2lkZSB0aGUgbWFwdmlld29wdGlvbnM/XHJcbiAgICBsZXQgdHJhY2tpbmcgPSBvcHRpb25zLmdlb2xvY2F0ZTtcclxuICAgIGxldCBmb2xsb3dQb3NpdGlvbiA9IG9wdGlvbnMuYWx3YXlzVHJhY2tpbmc7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZSkge1xyXG4gICAgICBjb25zdCBzdG9yZWRUcmFja2luZyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICdnZW9sb2NhdGlvbi50cmFja2luZydcclxuICAgICAgKSBhcyBib29sZWFuO1xyXG4gICAgICBpZiAoc3RvcmVkVHJhY2tpbmcgIT09IG51bGwgJiYgc3RvcmVkVHJhY2tpbmcgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRyYWNraW5nID0gc3RvcmVkVHJhY2tpbmc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN0b3JlZEZvbGxvd1Bvc2l0aW9uID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXHJcbiAgICAgICAgJ2dlb2xvY2F0aW9uLmZvbGxvd1Bvc2l0aW9uJ1xyXG4gICAgICApIGFzIGJvb2xlYW47XHJcbiAgICAgIGlmIChzdG9yZWRGb2xsb3dQb3NpdGlvbiAhPT0gbnVsbCAmJiBzdG9yZWRGb2xsb3dQb3NpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZm9sbG93UG9zaXRpb24gPSBzdG9yZWRGb2xsb3dQb3NpdGlvbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy50cmFja2luZyA9IHRyYWNraW5nO1xyXG4gICAgdGhpcy5mb2xsb3dQb3NpdGlvbiA9IGZvbGxvd1Bvc2l0aW9uO1xyXG4gICAgdGhpcy5idWZmZXIgPSBvcHRpb25zLmJ1ZmZlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlYXJkb3duIGFueSBvYnNlcnZlcnNcclxuICAgKi9cclxuICB0ZWFyZG93bk9ic2VydmVycygpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMkJC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIudGVhcmRvd25PYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIHBvc2l0aW9uIGNoYW5nZSwgZ2V0IHRoZSBwb3NpdGlvbiwgc2hvdyBpdCBvbiB0aGUgbWFwIGFuZCByZWNvcmQgaXQuXHJcbiAgICogQHBhcmFtIGVtaXRFdmVudCBNYXAgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uUG9zaXRpb25DaGFuZ2UoXHJcbiAgICBlbWl0RXZlbnQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIHpvb21UbzogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMudHJhY2tpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZ2VvbG9jYXRlUHJvcGVydGllcyA9IHRoaXMuZ2VvbG9jYXRpb24uZ2V0UHJvcGVydGllcygpO1xyXG5cclxuICAgIGlmIChnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5ID4gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1Bvb3IgZ2VvbG9jYXRpb24gYWNjdXJhY3kuIE5vIHBvc2l0aW9uIGFyZSBzdG9yZWQvc2hvd24nKTtcclxuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUgPSB7XHJcbiAgICAgIHBvc2l0aW9uOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLnBvc2l0aW9uLFxyXG4gICAgICBwcm9qZWN0aW9uOiB0aGlzLmdlb2xvY2F0aW9uLmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCksXHJcbiAgICAgIGFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5LFxyXG4gICAgICBhbHRpdHVkZTogZ2VvbG9jYXRlUHJvcGVydGllcy5hbHRpdHVkZSxcclxuICAgICAgYWx0aXR1ZGVBY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy5hbHRpdHVkZUFjY3VyYWN5LFxyXG4gICAgICBoZWFkaW5nOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmhlYWRpbmcsXHJcbiAgICAgIHNwZWVkOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLnNwZWVkLFxyXG4gICAgICBlbmFibGVIaWdoQWNjdXJhY3k6IGdlb2xvY2F0ZVByb3BlcnRpZXMudHJhY2tpbmdPcHRpb25zXHJcbiAgICAgICAgPy5lbmFibGVIaWdoQWNjdXJhY3lcclxuICAgICAgICA/IHRydWVcclxuICAgICAgICA6IGZhbHNlLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcclxuICAgIH07XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbihwb3NpdGlvbik7XHJcbiAgICB0aGlzLmhhbmRsZVZpZXdGcm9tRmVhdHVyZXMocG9zaXRpb24sIHpvb21Ubyk7XHJcbiAgICBpZiAoZW1pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24kLm5leHQocG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQnlUeXBlKHR5cGU6IEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUpOiBvbEZlYXR1cmU8R2VvbWV0cnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5kYXRhU291cmNlLm9sLmdldEZlYXR1cmVCeUlkKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWxldGVGZWF0dXJlQnlUeXBlKHR5cGU6IEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUpIHtcclxuICAgIGNvbnN0IGZlYXR1cmVCeUlkID1cclxuICAgICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXk/LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQodHlwZSk7XHJcbiAgICBpZiAoZmVhdHVyZUJ5SWQpIHtcclxuICAgICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuZGF0YVNvdXJjZS5vbC5yZW1vdmVGZWF0dXJlKGZlYXR1cmVCeUlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XHJcbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFwb3NpdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBwb3NpdGlvbkdlb21ldHJ5ID0gbmV3IFBvaW50KHBvc2l0aW9uLnBvc2l0aW9uKTtcclxuICAgIGNvbnN0IGFjY3VyYWN5R2VvbWV0cnkgPSBmcm9tQ2lyY2xlKFxyXG4gICAgICBuZXcgT2xDaXJjbGUocG9zaXRpb24ucG9zaXRpb24sIHBvc2l0aW9uLmFjY3VyYWN5IHx8IDApXHJcbiAgICApO1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxyXG4gICAgKTtcclxuICAgIGxldCBwb3NpdGlvbkZlYXR1cmVBcnJvdyA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxyXG4gICAgKTtcclxuICAgIGxldCBhY2N1cmFjeUZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3lcclxuICAgICk7XHJcbiAgICBjb25zdCBwb3NpdGlvbkZlYXR1cmVFeGlzdHMgPSBwb3NpdGlvbkZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZUFycm93ID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgY29uc3QgYWNjdXJhY3lGZWF0dXJlRXhpc3RzID0gYWNjdXJhY3lGZWF0dXJlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKCFwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0cykge1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHtcclxuICAgICAgICBnZW9tZXRyeTogcG9zaXRpb25HZW9tZXRyeVxyXG4gICAgICB9KTtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3cuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvbik7XHJcbiAgICAgIGhpZGVPbEZlYXR1cmUocG9zaXRpb25GZWF0dXJlQXJyb3cpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFwb3NpdGlvbkZlYXR1cmVFeGlzdHMpIHtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlID0gbmV3IG9sRmVhdHVyZTxQb2ludD4oeyBnZW9tZXRyeTogcG9zaXRpb25HZW9tZXRyeSB9KTtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlLnNldElkKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb24pO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0U3R5bGUodGhpcy5wb3NpdGlvbkZlYXR1cmVTdHlsZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWFjY3VyYWN5RmVhdHVyZUV4aXN0cykge1xyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlPFBvbHlnb24+KHsgZ2VvbWV0cnk6IGFjY3VyYWN5R2VvbWV0cnkgfSk7XHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZS5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5KTtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlLnNldFN0eWxlKHRoaXMuYWNjdXJhY3lGZWF0dXJlU3R5bGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwb3NpdGlvbkdlb21ldHJ5KSB7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUV4aXN0c1xyXG4gICAgICAgID8gcG9zaXRpb25GZWF0dXJlLnNldEdlb21ldHJ5KHBvc2l0aW9uR2VvbWV0cnkpXHJcbiAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXHJcbiAgICAgICAgICAgIHBvc2l0aW9uRmVhdHVyZSxcclxuICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICApO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0c1xyXG4gICAgICAgID8gcG9zaXRpb25GZWF0dXJlQXJyb3cuc2V0R2VvbWV0cnkocG9zaXRpb25HZW9tZXRyeSlcclxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3csXHJcbiAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgdGhpcy51cGRhdGVBcnJvd0ZlYXR1cmVPcmllbnRhdGlvbihwb3NpdGlvbik7XHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZUV4aXN0c1xyXG4gICAgICAgID8gYWNjdXJhY3lGZWF0dXJlLnNldEdlb21ldHJ5KGFjY3VyYWN5R2VvbWV0cnkpXHJcbiAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXHJcbiAgICAgICAgICAgIGFjY3VyYWN5RmVhdHVyZSxcclxuICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYnVmZmVyKSB7XHJcbiAgICAgICAgbGV0IGJ1ZmZlckZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgYnVmZmVyRmVhdHVyZUV4aXN0cyA9IGJ1ZmZlckZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgY29uc3QgYnVmZmVyR2VvbWV0cnkgPSBuZXcgT2xDaXJjbGUoXHJcbiAgICAgICAgICBwb3NpdGlvbi5wb3NpdGlvbixcclxuICAgICAgICAgIHRoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKCFidWZmZXJGZWF0dXJlRXhpc3RzKSB7XHJcbiAgICAgICAgICBidWZmZXJGZWF0dXJlID0gbmV3IG9sRmVhdHVyZShidWZmZXJHZW9tZXRyeSk7XHJcbiAgICAgICAgICBidWZmZXJGZWF0dXJlLnNldElkKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcclxuICAgICAgICAgIGJ1ZmZlckZlYXR1cmUuc2V0U3R5bGUodGhpcy5wb3NpdGlvbkZlYXR1cmVTdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJ1ZmZlckZlYXR1cmUuc2V0U3R5bGUodGhpcy5idWZmZXJTdHlsZSk7XHJcbiAgICAgICAgYnVmZmVyRmVhdHVyZUV4aXN0c1xyXG4gICAgICAgICAgPyBidWZmZXJGZWF0dXJlLnNldEdlb21ldHJ5KGJ1ZmZlckdlb21ldHJ5KVxyXG4gICAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgYnVmZmVyRmVhdHVyZSxcclxuICAgICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBoYW5kbGVWaWV3RnJvbUZlYXR1cmVzKFxyXG4gICAgcG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUsXHJcbiAgICB6b29tVG86IGJvb2xlYW4gPSBmYWxzZVxyXG4gICkge1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxyXG4gICAgKTtcclxuICAgIGxldCBwb3NpdGlvbkZlYXR1cmVBcnJvdyA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxyXG4gICAgKTtcclxuICAgIGxldCBhY2N1cmFjeUZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXHJcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3lcclxuICAgICk7XHJcbiAgICBsZXQgYnVmZmVyRmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XHJcbiAgICBjb25zdCBmZWF0dXJlcyA9IFtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlLFxyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyxcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlLFxyXG4gICAgICBidWZmZXJGZWF0dXJlXHJcbiAgICBdLmZpbHRlcigoZikgPT4gZik7XHJcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmZWF0dXJlc0V4dGVudCA9IGNvbXB1dGVPbEZlYXR1cmVzRXh0ZW50KFxyXG4gICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgIHRoaXMubWFwLnZpZXdQcm9qZWN0aW9uXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGVkZ2VSYXRpb3MgPVxyXG4gICAgICAgIHBvc2l0aW9uPy5zcGVlZCA+IDEyLjVcclxuICAgICAgICAgID8gWzAuMjUsIDAuMjUsIDAuMjUsIDAuMjVdXHJcbiAgICAgICAgICA6IFswLjE1LCAwLjEsIDAuMSwgMC4xXTtcclxuICAgICAgY29uc3QgYXJlT3V0T2ZWaWV3ID0gZmVhdHVyZXNBcmVPdXRPZlZpZXcoXHJcbiAgICAgICAgdGhpcy5tYXAuZ2V0RXh0ZW50KCksXHJcbiAgICAgICAgZmVhdHVyZXNFeHRlbnQsXHJcbiAgICAgICAgZWRnZVJhdGlvc1xyXG4gICAgICApO1xyXG4gICAgICBsZXQgbW90aW9uID1cclxuICAgICAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uICYmIGFyZU91dE9mVmlld1xyXG4gICAgICAgICAgPyBGZWF0dXJlTW90aW9uLk1vdmVcclxuICAgICAgICAgIDogRmVhdHVyZU1vdGlvbi5Ob25lO1xyXG4gICAgICBpZiAoem9vbVRvKSB7XHJcbiAgICAgICAgbW90aW9uID0gRmVhdHVyZU1vdGlvbi5ab29tO1xyXG4gICAgICB9XHJcbiAgICAgIG1vdGlvbiAhPT0gRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgPyBtb3ZlVG9PbEZlYXR1cmVzKHRoaXMubWFwLnZpZXdDb250cm9sbGVyLCBmZWF0dXJlcywgbW90aW9uKVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFnSy9DO0lBQ0E7SUFDQTtJQUNBO0lBbEtGLGFBQWEsQ0FBUztJQUN0QixlQUFl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LENBQUMsY0FBYyxJQUFJLFlBQVk7Z0JBQ2pDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDcEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7YUFDN0I7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IG9sR2VvbG9jYXRpb24gZnJvbSAnb2wvR2VvbG9jYXRpb24nO1xyXG5pbXBvcnQgT2xNYXAgZnJvbSAnb2wvTWFwJztcclxuaW1wb3J0IHsgUG9pbnQsIFBvbHlnb24gfSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcclxuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBmcm9tQ2lyY2xlIH0gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcclxuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xyXG5pbXBvcnQgKiBhcyBvbFNwaGVyZSBmcm9tICdvbC9zcGhlcmUnO1xyXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7XHJcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXHJcbiAgZmVhdHVyZXNBcmVPdXRPZlZpZXcsXHJcbiAgaGlkZU9sRmVhdHVyZSxcclxuICBtb3ZlVG9PbEZlYXR1cmVzXHJcbn0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS51dGlscyc7XHJcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5JztcclxuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi4vbWFwLmFic3RyYWN0JztcclxuaW1wb3J0IHsgTWFwVmlld09wdGlvbnMgfSBmcm9tICcuLi9tYXAuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTWFwQ29udHJvbGxlciB9IGZyb20gJy4vY29udHJvbGxlcic7XHJcbmltcG9ydCB7XHJcbiAgR2VvbG9jYXRpb25CdWZmZXIsXHJcbiAgR2VvbG9jYXRpb25PdmVybGF5VHlwZSxcclxuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxyXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGVcclxufSBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQ29udHJvbGxlciB0byBoYW5kbGUgbWFwIHZpZXcgaW50ZXJhY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTWFwR2VvbG9jYXRpb25Db250cm9sbGVyIGV4dGVuZHMgTWFwQ29udHJvbGxlciB7XHJcbiAgcHJpdmF0ZSBhcnJvd1JvdGF0aW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHJpdmF0ZSBnZW9sb2NhdGlvbk92ZXJsYXk6IE92ZXJsYXk7XHJcbiAgcHJpdmF0ZSBwb3NpdGlvbkZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XHJcbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xyXG4gICAgICAgIHJhZGl1czogNixcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgIGNvbG9yOiAnIzMzOTlDQydcclxuICAgICAgICB9KSxcclxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICBjb2xvcjogJyNmZmYnLFxyXG4gICAgICAgICAgd2lkdGg6IDJcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgcHJpdmF0ZSBhY2N1cmFjeUZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XHJcbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KScsXHJcbiAgICAgICAgd2lkdGg6IDFcclxuICAgICAgfSksXHJcbiAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgIGNvbG9yOiAncmdiYSgxMjAsIDEyMCwgMTIwLCAwLjQpJ1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcblxyXG4gIHByaXZhdGUgZ2V0IGJ1ZmZlclN0eWxlKCk6IG9sc3R5bGUuU3R5bGUge1xyXG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2UoeyB3aWR0aDogMiwgY29sb3I6IHRoaXMuYnVmZmVyLmJ1ZmZlclN0cm9rZSB9KSxcclxuICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7IGNvbG9yOiB0aGlzLmJ1ZmZlci5idWZmZXJGaWxsIH0pLFxyXG4gICAgICB0ZXh0OiBuZXcgb2xzdHlsZS5UZXh0KHtcclxuICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcclxuICAgICAgICBvZmZzZXRYOiAxMCxcclxuICAgICAgICBvZmZzZXRZOiAtMTAsXHJcbiAgICAgICAgZm9udDogJzEycHggQ2FsaWJyaSxzYW5zLXNlcmlmJyxcclxuICAgICAgICB0ZXh0OiB0aGlzLmJ1ZmZlci5zaG93QnVmZmVyUmFkaXVzXHJcbiAgICAgICAgICA/IGAke3RoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c31tYFxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHsgY29sb3I6ICcjMDAwJyB9KSxcclxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGFycm93U3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XHJcbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuUmVndWxhclNoYXBlKHtcclxuICAgICAgICByYWRpdXM6IDUuNSxcclxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAxMzIsIDIwMiknXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgY29sb3I6ICcjZmZmJyxcclxuICAgICAgICAgIHdpZHRoOiAxLjVcclxuICAgICAgICB9KSxcclxuICAgICAgICBwb2ludHM6IDMsXHJcbiAgICAgICAgZGlzcGxhY2VtZW50OiBbMCwgOV0sXHJcbiAgICAgICAgcm90YXRpb246IHRoaXMuYXJyb3dSb3RhdGlvbixcclxuICAgICAgICByb3RhdGVXaXRoVmlldzogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlb2xvY2F0aW9uOiBvbEdlb2xvY2F0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IGVtaXNzaW9uIGludGVydmFsIG9mIHRoZSBwb3NpdGlvbi4gSW4gc2Vjb25kc1xyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBlbWlzc2lvbkludGVydmFsU2Vjb25kcyQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3QoNSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb25cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgcG9zaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXBHZW9sb2NhdGlvblN0YXRlPihcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgdHJhY2tpbmcgc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdHJhY2tpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGZvbGxvdyBwb3NpdGlvbiBzdGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBmb2xsb3dQb3NpdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByaXZhdGUgbGFzdFBvc2l0aW9uOiB7IGNvb3JkaW5hdGVzOiBudW1iZXJbXTsgZGF0ZVRpbWU6IERhdGUgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgZ2VvbG9jYXRlIHNob3VsZCBzaG93IGEgYnVmZmVyIGFyb3VuZCB0aGUgY3VycmVudCBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHNldCBidWZmZXIodmFsdWU6IEdlb2xvY2F0aW9uQnVmZmVyKSB7XHJcbiAgICB0aGlzLl9idWZmZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IGJ1ZmZlcigpOiBHZW9sb2NhdGlvbkJ1ZmZlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnVmZmVyO1xyXG4gIH1cclxuICBwcml2YXRlIF9idWZmZXI6IEdlb2xvY2F0aW9uQnVmZmVyO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBnZW9sb2NhdGUgY29udHJvbGxlciBhY2N1cmFjeSB0aHJlc2hvbGQgdG8gc3RvcmUvc2hvdyB0aGUgcG9zaXRpb24uXHJcbiAgICovXHJcbiAgc2V0IGFjY3VyYWN5VGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2FjY3VyYWN5VGhyZXNob2xkID0gdmFsdWU7XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjdXJhY3lUaHJlc2hvbGQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWNjdXJhY3lUaHJlc2hvbGQ7XHJcblxyXG4gIGdldCBvbEdlb2xvY2F0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb247XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgZ2VvbG9jYXRpb24uXHJcbiAgICovXHJcbiAgZ2V0IHRyYWNraW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb24uZ2V0VHJhY2tpbmcoKTtcclxuICB9XHJcblxyXG4gIHNldCB0cmFja2luZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi5zZXRUcmFja2luZyh2YWx1ZSB8fCBmYWxzZSk7XHJcbiAgICB0aGlzLnRyYWNraW5nJC5uZXh0KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2dlb2xvY2F0aW9uLnRyYWNraW5nJywgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgdmlldyB0cmFja2luZyBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxyXG4gICAqL1xyXG4gIHNldCBmb2xsb3dQb3NpdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMuZm9sbG93UG9zaXRpb24kLm5leHQodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZT8uZ2V0Q29uZmlnKCdnZW9sb2NhdGUuZm9sbG93UG9zaXRpb24nKSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5mb2xsb3dQb3NpdGlvbiQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdnZW9sb2NhdGlvbi5mb2xsb3dQb3NpdGlvbicsIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBmb2xsb3dQb3NpdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2xsb3dQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZvbGxvd1Bvc2l0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWFwOiBNYXBCYXNlLFxyXG4gICAgcHJpdmF0ZSBvcHRpb25zPzogTWFwR2VvbG9jYXRpb25Db250cm9sbGVyT3B0aW9ucyxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U/OiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZT86IENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheSA9IG5ldyBPdmVybGF5KHRoaXMubWFwKTtcclxuICAgIHRoaXMuX2ZvbGxvd1Bvc2l0aW9uID1cclxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxyXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmZvbGxvd1Bvc2l0aW9uXHJcbiAgICAgICAgOiBmYWxzZTtcclxuXHJcbiAgICB0aGlzLl9idWZmZXIgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmJ1ZmZlciA/IHRoaXMub3B0aW9ucy5idWZmZXIgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYWNjdXJhY3lUaHJlc2hvbGRcclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5hY2N1cmFjeVRocmVzaG9sZFxyXG4gICAgICAgIDogNTAwMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcclxuICAgKi9cclxuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcclxuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcclxuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpIHtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uKTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uKTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5KTtcclxuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XHJcbiAgfVxyXG5cclxuICBzZXR1cE9ic2VydmVycygpIHtcclxuICAgIHRoaXMudHJhY2tpbmckLnN1YnNjcmliZSgodHJhY2tpbmcpID0+IHtcclxuICAgICAgaWYgKHRyYWNraW5nKSB7XHJcbiAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUsIHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uID0gbmV3IG9sR2VvbG9jYXRpb24oe1xyXG4gICAgICAvLyBlbmFibGVIaWdoQWNjdXJhY3kgbXVzdCBiZSBzZXQgdG8gdHJ1ZSB0byBoYXZlIHRoZSBoZWFkaW5nIHZhbHVlLlxyXG4gICAgICB0cmFja2luZ09wdGlvbnM6IHtcclxuICAgICAgICBlbmFibGVIaWdoQWNjdXJhY3k6IHRydWUsXHJcbiAgICAgICAgbWF4aW11bUFnZTogMTAwMDAsXHJcbiAgICAgICAgdGltZW91dDogNjAwMDAwXHJcbiAgICAgIH0sXHJcbiAgICAgIHByb2plY3Rpb246IHRoaXMub3B0aW9ucy5wcm9qZWN0aW9uXHJcbiAgICB9KTtcclxuICAgIGxldCB0cmFja2luZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaChcclxuICAgICAgdGhpcy5lbWlzc2lvbkludGVydmFsU2Vjb25kcyRcclxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHZhbHVlKSA9PiBpbnRlcnZhbCh2YWx1ZSAqIDEwMDApKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0cmFja2luZyA9PT0gdGhpcy50cmFja2luZykge1xyXG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0cmFja2luZyA9IHRoaXMudHJhY2tpbmc7XHJcbiAgICAgICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmdlb2xvY2F0aW9uLm9uKCdjaGFuZ2UnLCAoZXZ0KSA9PiB7XHJcbiAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZShmYWxzZSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBcnJvd0ZlYXR1cmVPcmllbnRhdGlvbihwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSkge1xyXG4gICAgY29uc3QgcG9zaXRpb240MzI2ID0gb2xwcm9qLnRyYW5zZm9ybShcclxuICAgICAgcG9zaXRpb24ucG9zaXRpb24sXHJcbiAgICAgIHBvc2l0aW9uLnByb2plY3Rpb24sXHJcbiAgICAgICdFUFNHOjQzMjYnXHJcbiAgICApO1xyXG4gICAgaWYgKCF0aGlzLmxhc3RQb3NpdGlvbikge1xyXG4gICAgICB0aGlzLmxhc3RQb3NpdGlvbiA9IHsgY29vcmRpbmF0ZXM6IHBvc2l0aW9uNDMyNiwgZGF0ZVRpbWU6IG5ldyBEYXRlKCkgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXJyb3dGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgY29uc3QgaXNNb3ZpbmcgPVxyXG4gICAgICBwb3NpdGlvbj8uc3BlZWQgPiAxLjI1ICYmXHJcbiAgICAgIHRoaXMuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzLCBwb3NpdGlvbjQzMjYpID5cclxuICAgICAgICAwLjAwMztcclxuICAgIGlmIChwb3NpdGlvbi5hY2N1cmFjeSA8PSB0aGlzLmFjY3VyYWN5VGhyZXNob2xkICYmIGlzTW92aW5nKSB7XHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaGVhZGluZyB1c2luZyBjdXJyZW50IHBvc2l0aW9uIGFuZCBsYXN0IHJlY29yZGVkXHJcbiAgICAgIC8vIGJlY2F1c2Ugb2wgaGVhZGluZyBub3QgcmV0dXJuaW5nIHJpZ2h0IHZhbHVlXHJcbiAgICAgIHZhciBkeCA9IHBvc2l0aW9uNDMyNlsxXSAtIHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICB2YXIgZHkgPSBwb3NpdGlvbjQzMjZbMF0gLSB0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlc1swXTtcclxuICAgICAgdmFyIHRoZXRhID0gTWF0aC5hdGFuMihkeSwgZHgpO1xyXG4gICAgICBpZiAodGhldGEgPCAwKSB0aGV0YSA9IDIgKiBNYXRoLlBJICsgdGhldGE7XHJcbiAgICAgIHRoaXMuYXJyb3dSb3RhdGlvbiA9IHRoZXRhO1xyXG4gICAgICBpZiAoYXJyb3dGZWF0dXJlKSB7XHJcbiAgICAgICAgYXJyb3dGZWF0dXJlLnNldFN0eWxlKHRoaXMuYXJyb3dTdHlsZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sYXN0UG9zaXRpb24gPSB7IGNvb3JkaW5hdGVzOiBwb3NpdGlvbjQzMjYsIGRhdGVUaW1lOiBuZXcgRGF0ZSgpIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXJyb3dGZWF0dXJlICYmXHJcbiAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLmxhc3RQb3NpdGlvbi5kYXRlVGltZS5nZXRUaW1lKCkgPiAzMDAwXHJcbiAgICAgIClcclxuICAgICAgICBoaWRlT2xGZWF0dXJlKGFycm93RmVhdHVyZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcmV0dXJucyBkaXN0YW5jZSBpbiBrbSBiZXR3ZWVuIGNvb3JkMSBhbmQgY29vcmQyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkaXN0YW5jZUJldHdlZW5Qb2ludHMoY29vcmQxOiBudW1iZXJbXSwgY29vcmQyOiBudW1iZXJbXSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gb2xTcGhlcmUuZ2V0RGlzdGFuY2UoY29vcmQxLCBjb29yZDIpIC8gMTAwMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRPbkNoYW5nZWRMaXN0ZW5lcihldmVudDogKGdlbzogb2xHZW9sb2NhdGlvbikgPT4gYW55KSB7XHJcbiAgICBsZXQgbGlzdGVuZXIgPSAoKSA9PiB7XHJcbiAgICAgIGV2ZW50KHRoaXMuZ2VvbG9jYXRpb24pO1xyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VvbG9jYXRpb24ub24oJ2NoYW5nZScsIGxpc3RlbmVyKTtcclxuICAgIHJldHVybiBsaXN0ZW5lcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVDaGFuZ2VkTGlzdGVuZXIoZXZlbnQ6ICgpID0+IGFueSkge1xyXG4gICAgdGhpcy5nZW9sb2NhdGlvbi51bignY2hhbmdlJywgZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUdlb2xvY2F0aW9uT3B0aW9ucyhvcHRpb25zOiBNYXBWaWV3T3B0aW9ucykge1xyXG4gICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIHRvZG8gbWF5YmUgYSBkZWRpY2F0ZWQgaW50ZXJmYWNlIGZvciBnZW9sb2NhdGlvbiBzaG91bGQgYmUgZGVmaW5lZCBpbnN0ZWFkIG9mIHB1dHRpbmcgdGhlc2UgaW5zaWRlIHRoZSBtYXB2aWV3b3B0aW9ucz9cclxuICAgIGxldCB0cmFja2luZyA9IG9wdGlvbnMuZ2VvbG9jYXRlO1xyXG4gICAgbGV0IGZvbGxvd1Bvc2l0aW9uID0gb3B0aW9ucy5hbHdheXNUcmFja2luZztcclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZFRyYWNraW5nID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoXHJcbiAgICAgICAgJ2dlb2xvY2F0aW9uLnRyYWNraW5nJ1xyXG4gICAgICApIGFzIGJvb2xlYW47XHJcbiAgICAgIGlmIChzdG9yZWRUcmFja2luZyAhPT0gbnVsbCAmJiBzdG9yZWRUcmFja2luZyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdHJhY2tpbmcgPSBzdG9yZWRUcmFja2luZztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3RvcmVkRm9sbG93UG9zaXRpb24gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChcclxuICAgICAgICAnZ2VvbG9jYXRpb24uZm9sbG93UG9zaXRpb24nXHJcbiAgICAgICkgYXMgYm9vbGVhbjtcclxuICAgICAgaWYgKHN0b3JlZEZvbGxvd1Bvc2l0aW9uICE9PSBudWxsICYmIHN0b3JlZEZvbGxvd1Bvc2l0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBmb2xsb3dQb3NpdGlvbiA9IHN0b3JlZEZvbGxvd1Bvc2l0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYWNraW5nID0gdHJhY2tpbmc7XHJcbiAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uID0gZm9sbG93UG9zaXRpb247XHJcbiAgICB0aGlzLmJ1ZmZlciA9IG9wdGlvbnMuYnVmZmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xyXG4gICAqL1xyXG4gIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucyQkLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5tYXAoKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB9XHJcbiAgICBzdXBlci50ZWFyZG93bk9ic2VydmVycygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gcG9zaXRpb24gY2hhbmdlLCBnZXQgdGhlIHBvc2l0aW9uLCBzaG93IGl0IG9uIHRoZSBtYXAgYW5kIHJlY29yZCBpdC5cclxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IE1hcCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Qb3NpdGlvbkNoYW5nZShcclxuICAgIGVtaXRFdmVudDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgem9vbVRvOiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGlmICghdGhpcy50cmFja2luZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBnZW9sb2NhdGVQcm9wZXJ0aWVzID0gdGhpcy5nZW9sb2NhdGlvbi5nZXRQcm9wZXJ0aWVzKCk7XHJcblxyXG4gICAgaWYgKGdlb2xvY2F0ZVByb3BlcnRpZXMuYWNjdXJhY3kgPiB0aGlzLmFjY3VyYWN5VGhyZXNob2xkKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignUG9vciBnZW9sb2NhdGlvbiBhY2N1cmFjeS4gTm8gcG9zaXRpb24gYXJlIHN0b3JlZC9zaG93bicpO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSA9IHtcclxuICAgICAgcG9zaXRpb246IGdlb2xvY2F0ZVByb3BlcnRpZXMucG9zaXRpb24sXHJcbiAgICAgIHByb2plY3Rpb246IHRoaXMuZ2VvbG9jYXRpb24uZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKSxcclxuICAgICAgYWNjdXJhY3k6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWNjdXJhY3ksXHJcbiAgICAgIGFsdGl0dWRlOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlLFxyXG4gICAgICBhbHRpdHVkZUFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlQWNjdXJhY3ksXHJcbiAgICAgIGhlYWRpbmc6IGdlb2xvY2F0ZVByb3BlcnRpZXMuaGVhZGluZyxcclxuICAgICAgc3BlZWQ6IGdlb2xvY2F0ZVByb3BlcnRpZXMuc3BlZWQsXHJcbiAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy50cmFja2luZ09wdGlvbnNcclxuICAgICAgICA/LmVuYWJsZUhpZ2hBY2N1cmFjeVxyXG4gICAgICAgID8gdHJ1ZVxyXG4gICAgICAgIDogZmFsc2UsXHJcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKVxyXG4gICAgfTtcclxuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uKTtcclxuICAgIHRoaXMuaGFuZGxlVmlld0Zyb21GZWF0dXJlcyhwb3NpdGlvbiwgem9vbVRvKTtcclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dChwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZlYXR1cmVCeVR5cGUodHlwZTogR2VvbG9jYXRpb25PdmVybGF5VHlwZSk6IG9sRmVhdHVyZTxHZW9tZXRyeT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQodHlwZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlbGV0ZUZlYXR1cmVCeVR5cGUodHlwZTogR2VvbG9jYXRpb25PdmVybGF5VHlwZSkge1xyXG4gICAgY29uc3QgZmVhdHVyZUJ5SWQgPVxyXG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheT8uZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZCh0eXBlKTtcclxuICAgIGlmIChmZWF0dXJlQnlJZCkge1xyXG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5kYXRhU291cmNlLm9sLnJlbW92ZUZlYXR1cmUoZmVhdHVyZUJ5SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVGZWF0dXJlQ3JlYXRpb24ocG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUpIHtcclxuICAgIGlmICghcG9zaXRpb24gfHwgIXBvc2l0aW9uLnBvc2l0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHBvc2l0aW9uR2VvbWV0cnkgPSBuZXcgUG9pbnQocG9zaXRpb24ucG9zaXRpb24pO1xyXG4gICAgY29uc3QgYWNjdXJhY3lHZW9tZXRyeSA9IGZyb21DaXJjbGUoXHJcbiAgICAgIG5ldyBPbENpcmNsZShwb3NpdGlvbi5wb3NpdGlvbiwgcG9zaXRpb24uYWNjdXJhY3kgfHwgMClcclxuICAgICk7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUV4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzID0gcG9zaXRpb25GZWF0dXJlQXJyb3cgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBjb25zdCBhY2N1cmFjeUZlYXR1cmVFeGlzdHMgPSBhY2N1cmFjeUZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzKSB7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93ID0gbmV3IG9sRmVhdHVyZTxQb2ludD4oe1xyXG4gICAgICAgIGdlb21ldHJ5OiBwb3NpdGlvbkdlb21ldHJ5XHJcbiAgICAgIH0pO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdy5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uKTtcclxuICAgICAgaGlkZU9sRmVhdHVyZShwb3NpdGlvbkZlYXR1cmVBcnJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUV4aXN0cykge1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlPFBvaW50Pih7IGdlb21ldHJ5OiBwb3NpdGlvbkdlb21ldHJ5IH0pO1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcclxuICAgIH1cclxuICAgIGlmICghYWNjdXJhY3lGZWF0dXJlRXhpc3RzKSB7XHJcbiAgICAgIGFjY3VyYWN5RmVhdHVyZSA9IG5ldyBvbEZlYXR1cmU8UG9seWdvbj4oeyBnZW9tZXRyeTogYWNjdXJhY3lHZW9tZXRyeSB9KTtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlLnNldElkKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3kpO1xyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0U3R5bGUodGhpcy5hY2N1cmFjeUZlYXR1cmVTdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uR2VvbWV0cnkpIHtcclxuICAgICAgcG9zaXRpb25GZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgPyBwb3NpdGlvbkZlYXR1cmUuc2V0R2VvbWV0cnkocG9zaXRpb25HZW9tZXRyeSlcclxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgcG9zaXRpb25GZWF0dXJlLFxyXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICk7XHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzXHJcbiAgICAgICAgPyBwb3NpdGlvbkZlYXR1cmVBcnJvdy5zZXRHZW9tZXRyeShwb3NpdGlvbkdlb21ldHJ5KVxyXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxyXG4gICAgICAgICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyxcclxuICAgICAgICAgICAgRmVhdHVyZU1vdGlvbi5Ob25lXHJcbiAgICAgICAgICApO1xyXG4gICAgICB0aGlzLnVwZGF0ZUFycm93RmVhdHVyZU9yaWVudGF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgYWNjdXJhY3lGZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgPyBhY2N1cmFjeUZlYXR1cmUuc2V0R2VvbWV0cnkoYWNjdXJhY3lHZW9tZXRyeSlcclxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgYWNjdXJhY3lGZWF0dXJlLFxyXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5idWZmZXIpIHtcclxuICAgICAgICBsZXQgYnVmZmVyRmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBidWZmZXJGZWF0dXJlRXhpc3RzID0gYnVmZmVyRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBjb25zdCBidWZmZXJHZW9tZXRyeSA9IG5ldyBPbENpcmNsZShcclxuICAgICAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxyXG4gICAgICAgICAgdGhpcy5idWZmZXIuYnVmZmVyUmFkaXVzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoIWJ1ZmZlckZlYXR1cmVFeGlzdHMpIHtcclxuICAgICAgICAgIGJ1ZmZlckZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlKGJ1ZmZlckdlb21ldHJ5KTtcclxuICAgICAgICAgIGJ1ZmZlckZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xyXG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLmJ1ZmZlclN0eWxlKTtcclxuICAgICAgICBidWZmZXJGZWF0dXJlRXhpc3RzXHJcbiAgICAgICAgICA/IGJ1ZmZlckZlYXR1cmUuc2V0R2VvbWV0cnkoYnVmZmVyR2VvbWV0cnkpXHJcbiAgICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcclxuICAgICAgICAgICAgICBidWZmZXJGZWF0dXJlLFxyXG4gICAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhhbmRsZVZpZXdGcm9tRmVhdHVyZXMoXHJcbiAgICBwb3NpdGlvbjogTWFwR2VvbG9jYXRpb25TdGF0ZSxcclxuICAgIHpvb21UbzogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxyXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXHJcbiAgICApO1xyXG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcclxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeVxyXG4gICAgKTtcclxuICAgIGxldCBidWZmZXJGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcclxuICAgIGNvbnN0IGZlYXR1cmVzID0gW1xyXG4gICAgICBwb3NpdGlvbkZlYXR1cmUsXHJcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LFxyXG4gICAgICBhY2N1cmFjeUZlYXR1cmUsXHJcbiAgICAgIGJ1ZmZlckZlYXR1cmVcclxuICAgIF0uZmlsdGVyKChmKSA9PiBmKTtcclxuICAgIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZlYXR1cmVzRXh0ZW50ID0gY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQoXHJcbiAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgdGhpcy5tYXAudmlld1Byb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgICAgY29uc3QgZWRnZVJhdGlvcyA9XHJcbiAgICAgICAgcG9zaXRpb24/LnNwZWVkID4gMTIuNVxyXG4gICAgICAgICAgPyBbMC4yNSwgMC4yNSwgMC4yNSwgMC4yNV1cclxuICAgICAgICAgIDogWzAuMTUsIDAuMSwgMC4xLCAwLjFdO1xyXG4gICAgICBjb25zdCBhcmVPdXRPZlZpZXcgPSBmZWF0dXJlc0FyZU91dE9mVmlldyhcclxuICAgICAgICB0aGlzLm1hcC5nZXRFeHRlbnQoKSxcclxuICAgICAgICBmZWF0dXJlc0V4dGVudCxcclxuICAgICAgICBlZGdlUmF0aW9zXHJcbiAgICAgICk7XHJcbiAgICAgIGxldCBtb3Rpb24gPVxyXG4gICAgICAgIHRoaXMuZm9sbG93UG9zaXRpb24gJiYgYXJlT3V0T2ZWaWV3XHJcbiAgICAgICAgICA/IEZlYXR1cmVNb3Rpb24uTW92ZVxyXG4gICAgICAgICAgOiBGZWF0dXJlTW90aW9uLk5vbmU7XHJcbiAgICAgIGlmICh6b29tVG8pIHtcclxuICAgICAgICBtb3Rpb24gPSBGZWF0dXJlTW90aW9uLlpvb207XHJcbiAgICAgIH1cclxuICAgICAgbW90aW9uICE9PSBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICA/IG1vdmVUb09sRmVhdHVyZXModGhpcy5tYXAudmlld0NvbnRyb2xsZXIsIGZlYXR1cmVzLCBtb3Rpb24pXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -2,4 +2,4 @@ export * from './controller';
|
|
|
2
2
|
export * from './geolocation';
|
|
3
3
|
export * from './geolocation.interface';
|
|
4
4
|
export * from './view';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9sb2NhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xuIl19
|
|
@@ -107,6 +107,7 @@ export class MapViewController extends MapController {
|
|
|
107
107
|
this.observerKeys.push(this.olMap.getView().on('change:rotation', (evt) => {
|
|
108
108
|
this.rotation$.next(evt.target.getRotation());
|
|
109
109
|
}));
|
|
110
|
+
this.rotation$.next(this.getRotation());
|
|
110
111
|
}
|
|
111
112
|
/**
|
|
112
113
|
* Teardown any observers
|
|
@@ -357,4 +358,4 @@ export class MapViewController extends MapController {
|
|
|
357
358
|
this.state$.next(state);
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWtFOUI7SUFqRXBCOztPQUVHO0lBQ00sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0gsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ0gsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUVyQjs7T0FFRztJQUNILGtCQUFrQixDQUFZO0lBRTlCOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO0lBRTlFOztPQUVHO0lBQ0ssUUFBUSxDQUFl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QUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XHJcbmltcG9ydCBPbE1hcEV2ZW50IGZyb20gJ29sL01hcEV2ZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xyXG5pbXBvcnQgT2xWaWV3IGZyb20gJ29sL1ZpZXcnO1xyXG5pbXBvcnQgKiBhcyBvbGVhc2luZyBmcm9tICdvbC9lYXNpbmcnO1xyXG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcFZpZXdBY3Rpb24gfSBmcm9tICcuLi9tYXAuZW51bXMnO1xyXG5pbXBvcnQgeyBNYXBFeHRlbnQsIE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4uL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBnZXRTY2FsZUZyb21SZXNvbHV0aW9uLCB2aWV3U3RhdGVzQXJlRXF1YWwgfSBmcm9tICcuLi9tYXAudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld0NvbnRyb2xsZXJPcHRpb25zIHtcclxuICBzdGF0ZUhpc3Rvcnk6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNYXBWaWV3Q29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcm90YXRpb24gaW4gcmFkaWFuc1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJvdGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCByZXNvbHV0aW9uXHJcbiAgICovXHJcbiAgcmVzb2x1dGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBzdGF0ZVxyXG4gICAqL1xyXG4gIHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwVmlld1N0YXRlPih1bmRlZmluZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBWaWV3IFBhZGRpbmdcclxuICAgKiBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgKi9cclxuICBwYWRkaW5nID0gWzAsIDAsIDAsIDBdO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggem9vbSBhZnRlciBzZXQgZXh0ZW50XHJcbiAgICovXHJcbiAgbWF4Wm9vbU9uRXh0ZW50ID0gMTk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBleHRlbnQgcG9zc2libGUgd2hlbiB6b29taW5nXHJcbiAgICovXHJcbiAgbWF4TGF5ZXJab29tRXh0ZW50OiBNYXBFeHRlbnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQgPSBuZXcgU3ViamVjdDx7IGV4dGVudDogTWFwRXh0ZW50OyBhY3Rpb246IE1hcFZpZXdBY3Rpb24gfT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBtb3ZlbWVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0ZXM6IE1hcFZpZXdTdGF0ZVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgc3RhdGUgaW5kZXhcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgY29udHJvbGxlciBzaG91bGQga2VlcCB0aGUgdmlldydzIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBnZXQgc3RhdGVIaXN0b3J5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyA/IHRoaXMub3B0aW9ucy5zdGF0ZUhpc3RvcnkgPT09IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9MIFZpZXdcclxuICAgKi9cclxuICBnZXQgb2xWaWV3KCk6IE9sVmlldyB7XHJcbiAgICByZXR1cm4gdGhpcy5vbE1hcC5nZXRWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM/OiBNYXBWaWV3Q29udHJvbGxlck9wdGlvbnMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWRkaW5nKHBhZGRpbmc6IHtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIGJvdHRvbT86IG51bWJlcjtcclxuICAgIGxlZnQ/OiBudW1iZXI7XHJcbiAgICByaWdodD86IG51bWJlcjtcclxuICB9KSB7XHJcbiAgICAvLyBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgIGlmIChwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnRvcCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMF0gPSBwYWRkaW5nLnRvcDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLnJpZ2h0IHx8IHBhZGRpbmcucmlnaHQgPT09IDApIHtcclxuICAgICAgdGhpcy5wYWRkaW5nWzFdID0gcGFkZGluZy5yaWdodDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmJvdHRvbSB8fCBwYWRkaW5nLmJvdHRvbSA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMl0gPSBwYWRkaW5nLmJvdHRvbTtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmxlZnQgfHwgcGFkZGluZy5sZWZ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGFkZGluZ1szXSA9IHBhZGRpbmcubGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcclxuICAgKi9cclxuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcclxuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcclxuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmUgbW92ZSBtb3ZlZW5kIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBzZXR1cE9ic2VydmVycygpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlSGlzdG9yeSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLm9ic2VydmVyS2V5cy5wdXNoKFxyXG4gICAgICAgIHRoaXMub2xNYXAub24oJ21vdmVlbmQnLCAoZXZlbnQ6IE9sTWFwRXZlbnQpID0+XHJcbiAgICAgICAgICB0aGlzLm9uTW92ZUVuZChldmVudClcclxuICAgICAgICApIGFzIEV2ZW50c0tleVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZXh0ZW50JCQgPSB0aGlzLmV4dGVudCRcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1KSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHsgZXh0ZW50OiBNYXBFeHRlbnQ7IGFjdGlvbjogTWFwVmlld0FjdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFeHRlbnQodmFsdWUuZXh0ZW50LCB2YWx1ZS5hY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG1vbml0b3JSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2JzZXJ2ZXJLZXlzLnB1c2goXHJcbiAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLm9uKCdjaGFuZ2U6cm90YXRpb24nLCAoZXZ0OiBPYmplY3RFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm90YXRpb24kLm5leHQoZXZ0LnRhcmdldC5nZXRSb3RhdGlvbigpKTtcclxuICAgICAgfSkgYXMgRXZlbnRzS2V5XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xyXG4gICAqL1xyXG4gIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xyXG4gICAgc3VwZXIudGVhcmRvd25PYnNlcnZlcnMoKTtcclxuICAgIGlmICh0aGlzLmV4dGVudCQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5leHRlbnQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmV4dGVudCQkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB2aWV3J3MgT0wgcHJvamVjdGlvblxyXG4gICAqIEByZXR1cm5zIE9MIHByb2plY3Rpb25cclxuICAgKi9cclxuICBnZXRPbFByb2plY3Rpb24oKTogT2xQcm9qZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRQcm9qZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbWFwIHZpZXcgY2VudGVyXHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBDZW50ZXJcclxuICAgKi9cclxuICBnZXRDZW50ZXIocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl0ge1xyXG4gICAgbGV0IGNlbnRlciA9IHRoaXMub2xWaWV3LmdldENlbnRlcigpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICBpZiAocHJvamVjdGlvbiAmJiBjZW50ZXIpIHtcclxuICAgICAgY2VudGVyID0gb2xwcm9qLnRyYW5zZm9ybShjZW50ZXIsIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCksIHByb2plY3Rpb24pIGFzIFtcclxuICAgICAgICBudW1iZXIsXHJcbiAgICAgICAgbnVtYmVyXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHZpZXcgZXh0ZW50XHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBFeHRlbnRcclxuICAgKi9cclxuICBnZXRFeHRlbnQocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IE1hcEV4dGVudCB7XHJcbiAgICBsZXQgZXh0ZW50ID0gdGhpcy5vbFZpZXcuY2FsY3VsYXRlRXh0ZW50KHRoaXMub2xNYXAuZ2V0U2l6ZSgpKTtcclxuICAgIGlmIChwcm9qZWN0aW9uICYmIGV4dGVudCkge1xyXG4gICAgICBleHRlbnQgPSBvbHByb2oudHJhbnNmb3JtRXh0ZW50KFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICB0aGlzLmdldE9sUHJvamVjdGlvbigpLFxyXG4gICAgICAgIHByb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBleHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVcclxuICAgKiBAcGFyYW0gZHBpIERvdCBwZXIgaW5jaGVzXHJcbiAgICogQHJldHVybnMgVmlldyBzY2FsZVxyXG4gICAqL1xyXG4gIGdldFNjYWxlKGRwaSA9IDk2KSB7XHJcbiAgICByZXR1cm4gZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbihcclxuICAgICAgdGhpcy5nZXRSZXNvbHV0aW9uKCksXHJcbiAgICAgIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCkuZ2V0VW5pdHMoKSxcclxuICAgICAgZHBpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHJlc29sdXRpb25cclxuICAgKiBAcmV0dXJucyBQcm9qZWN0aW9uIGRlbm9taW5hdG9yXHJcbiAgICovXHJcbiAgZ2V0UmVzb2x1dGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJlc29sdXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCB6b29tIGxldmVsXHJcbiAgICogQHJldHVybnMgWm9vbSBsZXZlbFxyXG4gICAqL1xyXG4gIGdldFpvb20oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMub2xWaWV3LmdldFpvb20oKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIGluXHJcbiAgICovXHJcbiAgem9vbUluKCkge1xyXG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIG91dFxyXG4gICAqL1xyXG4gIHpvb21PdXQoKSB7XHJcbiAgICB0aGlzLnpvb21Ubyh0aGlzLm9sVmlldy5nZXRab29tKCkgLSAxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFpvb20gdG8gc3BlY2lmaWMgem9vbSBsZXZlbFxyXG4gICAqIEBwYXJhbSB6b29tIFpvb20gbGV2ZWxcclxuICAgKi9cclxuICB6b29tVG8oem9vbTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9sVmlldy5jYW5jZWxBbmltYXRpb25zKCk7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgem9vbSxcclxuICAgICAgZHVyYXRpb246IDI1MCxcclxuICAgICAgZWFzaW5nOiBvbGVhc2luZy5lYXNlT3V0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gZXh0ZW50IGFmdGVyIGEgc2hvcnQgZGVsYXkgKDEwMG1zKSB1bmxlc3NcclxuICAgKiBhIG5ldyBtb3ZlbWVudCBnZXRzIHJlZ2lzdGVyZWQgaW4gdGhlIG1lYW50aW1lLlxyXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50IHRvIG1vdmUgdG9cclxuICAgKi9cclxuICBtb3ZlVG9FeHRlbnQoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xyXG4gICAgdGhpcy5leHRlbnQkLm5leHQoeyBleHRlbnQsIGFjdGlvbjogTWFwVmlld0FjdGlvbi5Nb3ZlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogWm9vbSB0byBleHRlbnQgYWZ0ZXIgYSBzaG9ydCBkZWxheSAoMTAwbXMpIHVubGVzc1xyXG4gICAqIGEgbmV3IG1vdmVtZW50IGdldHMgcmVnaXN0ZXJlZCBpbiB0aGUgbWVhbnRpbWUuXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnQgdG8gem9vbSB0b1xyXG4gICAqL1xyXG4gIHpvb21Ub0V4dGVudChleHRlbnQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgICB0aGlzLmV4dGVudCQubmV4dCh7IGV4dGVudCwgYWN0aW9uOiBNYXBWaWV3QWN0aW9uLlpvb20gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmlldyByb3RhdGlvblxyXG4gICAqIEByZXR1cm5zIFJvdGF0aW9uIGFuZ2xlIGluIHJhZGlhbnNcclxuICAgKi9cclxuICBnZXRSb3RhdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJvdGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0aGUgdmlldyByb3RhdGlvbiB0byAwXHJcbiAgICovXHJcbiAgcmVzZXRSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2xWaWV3LmFuaW1hdGUoeyByb3RhdGlvbjogMCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgcHJldmlvdXMgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIHByZXZpb3VzIHN0YXRlXHJcbiAgICovXHJcbiAgaGFzUHJldmlvdXNTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlcy5sZW5ndGggPiAxICYmIHRoaXMuc3RhdGVJbmRleCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKi9cclxuICBoYXNOZXh0U3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPCB0aGlzLnN0YXRlcy5sZW5ndGggLSAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgcHJldmlvdXMgdmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIHByZXZpb3VzU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNQcmV2aW91c1N0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgbmV4dCB2aWV3IHN0YXRlXHJcbiAgICovXHJcbiAgbmV4dFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzTmV4dFN0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBjbGVhclN0YXRlSGlzdG9yeSgpIHtcclxuICAgIHRoaXMuc3RhdGVzID0gW107XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSB0aGUgdmlldyB0byBpdCdzIGludGlhbCBzdGF0ZVxyXG4gICAqL1xyXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGVJbmRleCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gdGhlIGV4dGVudCByZXRyaWV2ZWQgZnJvbSB0aGUgc3RyZWFtXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEVpdGhlciB6b29tIG9yIG1vdmVcclxuICAgKiBAcGFyYW0gYW5pbWF0aW9uIFdpdGggb3Igd2l0aG91dCBhbmltYXRpb24gdG8gdGhlIHRhcmdldCBleHRlbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRFeHRlbnQoXHJcbiAgICBleHRlbnQ6IE1hcEV4dGVudCxcclxuICAgIGFjdGlvbjogTWFwVmlld0FjdGlvbixcclxuICAgIGFuaW1hdGlvbjogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGNvbnN0IG9sVmlldyA9IHRoaXMub2xWaWV3O1xyXG4gICAgb2xWaWV3LmNhbmNlbEFuaW1hdGlvbnMoKTtcclxuICAgIGNvbnN0IGR1cmF0aW9uID0gYW5pbWF0aW9uID8gNTAwIDogMDtcclxuICAgIGNvbnN0IHpvb20gPSBvbFZpZXcuZ2V0Wm9vbSgpO1xyXG5cclxuICAgIGNvbnN0IGZyb21DZW50ZXIgPSBvbFZpZXcuZ2V0Q2VudGVyKCk7XHJcbiAgICBjb25zdCB0b0NlbnRlciA9IFtcclxuICAgICAgZXh0ZW50WzBdICsgKGV4dGVudFsyXSAtIGV4dGVudFswXSkgLyAyLFxyXG4gICAgICBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDJcclxuICAgIF07XHJcbiAgICBjb25zdCBkaXN0Q2VudGVyID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzBdIC0gdG9DZW50ZXJbMF0sIDIpICtcclxuICAgICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzFdIC0gdG9DZW50ZXJbMV0sIDIpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZnJvbUV4dGVudCA9IG9sVmlldy5jYWxjdWxhdGVFeHRlbnQoKTtcclxuICAgIGNvbnN0IGZyb21TaXplID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tRXh0ZW50WzJdIC0gZnJvbUV4dGVudFswXSwgMikgK1xyXG4gICAgICAgIE1hdGgucG93KGZyb21FeHRlbnRbM10gLSBmcm9tRXh0ZW50WzFdLCAyKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRvU2l6ZSA9IE1hdGguc3FydChcclxuICAgICAgTWF0aC5wb3coZXh0ZW50WzJdIC0gZXh0ZW50WzBdLCAyKSArIE1hdGgucG93KGV4dGVudFszXSAtIGV4dGVudFsxXSwgMilcclxuICAgICk7XHJcbiAgICBjb25zdCBtb3lTaXplID0gKHRvU2l6ZSArIGZyb21TaXplKSAvIDI7XHJcbiAgICBjb25zdCB4U2l6ZSA9IGRpc3RDZW50ZXIgLyBtb3lTaXplO1xyXG5cclxuICAgIGNvbnN0IG1heFpvb20gPVxyXG4gICAgICBhY3Rpb24gPT09IE1hcFZpZXdBY3Rpb24uTW92ZSB8fCB6b29tID4gdGhpcy5tYXhab29tT25FeHRlbnRcclxuICAgICAgICA/IHpvb21cclxuICAgICAgICA6IHRoaXMubWF4Wm9vbU9uRXh0ZW50O1xyXG5cclxuICAgIG9sVmlldy5maXQoZXh0ZW50LCB7XHJcbiAgICAgIHNpemU6IHRoaXMub2xNYXAuZ2V0U2l6ZSgpLFxyXG4gICAgICBtYXhab29tLFxyXG4gICAgICBwYWRkaW5nOiB0aGlzLnBhZGRpbmcsXHJcbiAgICAgIGR1cmF0aW9uOiB4U2l6ZSA+IDQgPyAwIDogZHVyYXRpb24sXHJcbiAgICAgIGNhbGxiYWNrOiAoaXNGaW5pc2hlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmICghaXNGaW5pc2hlZCkge1xyXG4gICAgICAgICAgb2xWaWV3LmZpdChleHRlbnQsIHtcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5vbE1hcC5nZXRTaXplKCksXHJcbiAgICAgICAgICAgIG1heFpvb20sXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IHRoaXMucGFkZGluZyxcclxuICAgICAgICAgICAgZHVyYXRpb246IHhTaXplID4gNCA/IDAgOiBkdXJhdGlvblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZSBpbmRleFxyXG4gICAqIEBwYXJhbSBpbmRleCBTdGF0ZSBpbmRleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0U3RhdGVJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZXNbaW5kZXhdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZVxyXG4gICAqIEBwYXJhbSBzdGF0ZSBWaWV3IHN0YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTdGF0ZShzdGF0ZTogTWFwVmlld1N0YXRlKSB7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgcmVzb2x1dGlvbjogc3RhdGUucmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiBzdGF0ZS5jZW50ZXIsXHJcbiAgICAgIGR1cmF0aW9uOiAwXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1vdmUgZW5kLCBnZXQgdGhlIHZpZXcgc3RhdGUgYW5kIHJlY29yZCBpdC5cclxuICAgKiBAcGFyYW0gZXZlbnQgTWFwIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdmVFbmQoZXZlbnQ6IE9sTWFwRXZlbnQpIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLmdldFJlc29sdXRpb24oKTtcclxuICAgIGlmICh0aGlzLnJlc29sdXRpb24kLnZhbHVlICE9PSByZXNvbHV0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQubmV4dChyZXNvbHV0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGF0ZSA9IHtcclxuICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiB0aGlzLmdldENlbnRlcigpLFxyXG4gICAgICB6b29tOiB0aGlzLmdldFpvb20oKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zdGF0ZUhpc3RvcnkgPT09IHRydWUpIHtcclxuICAgICAgY29uc3Qgc3RhdGVJbmRleCA9IHRoaXMuc3RhdGVJbmRleDtcclxuICAgICAgY29uc3Qgc3RhdGVBdEluZGV4ID1cclxuICAgICAgICB0aGlzLnN0YXRlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlc1tzdGF0ZUluZGV4XTtcclxuICAgICAgaWYgKCF2aWV3U3RhdGVzQXJlRXF1YWwoc3RhdGUsIHN0YXRlQXRJbmRleCkpIHtcclxuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMuc3RhdGVzLnNsaWNlKDAsIHN0YXRlSW5kZXggKyAxKS5jb25jYXQoW3N0YXRlXSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZGV4ID0gdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9zaGFyZWQvY29udHJvbGxlcnMvdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWtFOUI7SUFqRXBCOztPQUVHO0lBQ00sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBEOztPQUVHO0lBQ0gsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXJEOztPQUVHO0lBQ0gsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFlLFNBQVMsQ0FBQyxDQUFDO0lBRXREOzs7T0FHRztJQUNILE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZCOztPQUVHO0lBQ0gsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUVyQjs7T0FFRztJQUNILGtCQUFrQixDQUFZO0lBRTlCOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksT0FBTyxFQUFnRCxDQUFDO0lBRTlFOztPQUVHO0lBQ0ssUUFBUSxDQUFl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QUM7WUFDbkMsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XHJcbmltcG9ydCBPbE1hcEV2ZW50IGZyb20gJ29sL01hcEV2ZW50JztcclxuaW1wb3J0IHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xyXG5pbXBvcnQgT2xWaWV3IGZyb20gJ29sL1ZpZXcnO1xyXG5pbXBvcnQgKiBhcyBvbGVhc2luZyBmcm9tICdvbC9lYXNpbmcnO1xyXG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xyXG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XHJcbmltcG9ydCBPbFByb2plY3Rpb24gZnJvbSAnb2wvcHJvai9Qcm9qZWN0aW9uJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hcFZpZXdBY3Rpb24gfSBmcm9tICcuLi9tYXAuZW51bXMnO1xyXG5pbXBvcnQgeyBNYXBFeHRlbnQsIE1hcFZpZXdTdGF0ZSB9IGZyb20gJy4uL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBnZXRTY2FsZUZyb21SZXNvbHV0aW9uLCB2aWV3U3RhdGVzQXJlRXF1YWwgfSBmcm9tICcuLi9tYXAudXRpbHMnO1xyXG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwVmlld0NvbnRyb2xsZXJPcHRpb25zIHtcclxuICBzdGF0ZUhpc3Rvcnk6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNYXBWaWV3Q29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xyXG4gIC8qKlxyXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGN1cnJlbnQgcm90YXRpb24gaW4gcmFkaWFuc1xyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJvdGF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCByZXNvbHV0aW9uXHJcbiAgICovXHJcbiAgcmVzb2x1dGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4odW5kZWZpbmVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBzdGF0ZVxyXG4gICAqL1xyXG4gIHN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwVmlld1N0YXRlPih1bmRlZmluZWQpO1xyXG5cclxuICAvKipcclxuICAgKiBWaWV3IFBhZGRpbmdcclxuICAgKiBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgKi9cclxuICBwYWRkaW5nID0gWzAsIDAsIDAsIDBdO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggem9vbSBhZnRlciBzZXQgZXh0ZW50XHJcbiAgICovXHJcbiAgbWF4Wm9vbU9uRXh0ZW50ID0gMTk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBleHRlbnQgcG9zc2libGUgd2hlbiB6b29taW5nXHJcbiAgICovXHJcbiAgbWF4TGF5ZXJab29tRXh0ZW50OiBNYXBFeHRlbnQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQgPSBuZXcgU3ViamVjdDx7IGV4dGVudDogTWFwRXh0ZW50OyBhY3Rpb246IE1hcFZpZXdBY3Rpb24gfT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBtb3ZlbWVudCBzdHJlYW1cclxuICAgKi9cclxuICBwcml2YXRlIGV4dGVudCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpc3Rvcnkgb2Ygc3RhdGVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0ZXM6IE1hcFZpZXdTdGF0ZVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1cnJlbnQgc3RhdGUgaW5kZXhcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRlSW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgY29udHJvbGxlciBzaG91bGQga2VlcCB0aGUgdmlldydzIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBnZXQgc3RhdGVIaXN0b3J5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyA/IHRoaXMub3B0aW9ucy5zdGF0ZUhpc3RvcnkgPT09IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9MIFZpZXdcclxuICAgKi9cclxuICBnZXQgb2xWaWV3KCk6IE9sVmlldyB7XHJcbiAgICByZXR1cm4gdGhpcy5vbE1hcC5nZXRWaWV3KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9wdGlvbnM/OiBNYXBWaWV3Q29udHJvbGxlck9wdGlvbnMpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWRkaW5nKHBhZGRpbmc6IHtcclxuICAgIHRvcD86IG51bWJlcjtcclxuICAgIGJvdHRvbT86IG51bWJlcjtcclxuICAgIGxlZnQ/OiBudW1iZXI7XHJcbiAgICByaWdodD86IG51bWJlcjtcclxuICB9KSB7XHJcbiAgICAvLyBWYWx1ZXMgaW4gdGhlIGFycmF5IGFyZSB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgcGFkZGluZy5cclxuICAgIGlmIChwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnRvcCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMF0gPSBwYWRkaW5nLnRvcDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLnJpZ2h0IHx8IHBhZGRpbmcucmlnaHQgPT09IDApIHtcclxuICAgICAgdGhpcy5wYWRkaW5nWzFdID0gcGFkZGluZy5yaWdodDtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmJvdHRvbSB8fCBwYWRkaW5nLmJvdHRvbSA9PT0gMCkge1xyXG4gICAgICB0aGlzLnBhZGRpbmdbMl0gPSBwYWRkaW5nLmJvdHRvbTtcclxuICAgIH1cclxuICAgIGlmIChwYWRkaW5nLmxlZnQgfHwgcGFkZGluZy5sZWZ0ID09PSAwKSB7XHJcbiAgICAgIHRoaXMucGFkZGluZ1szXSA9IHBhZGRpbmcubGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvciByZW1vdmUgdGhpcyBjb250cm9sbGVyIHRvL2Zyb20gYSBtYXAuXHJcbiAgICogQHBhcmFtIG1hcCBPTCBNYXBcclxuICAgKi9cclxuICBzZXRPbE1hcChvbE1hcDogT2xNYXAgfCB1bmRlZmluZWQpIHtcclxuICAgIHN1cGVyLnNldE9sTWFwKG9sTWFwKTtcclxuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9ic2VydmUgbW92ZSBtb3ZlZW5kIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGV4dGVudCBzdHJlYW1cclxuICAgKi9cclxuICBzZXR1cE9ic2VydmVycygpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlSGlzdG9yeSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLm9ic2VydmVyS2V5cy5wdXNoKFxyXG4gICAgICAgIHRoaXMub2xNYXAub24oJ21vdmVlbmQnLCAoZXZlbnQ6IE9sTWFwRXZlbnQpID0+XHJcbiAgICAgICAgICB0aGlzLm9uTW92ZUVuZChldmVudClcclxuICAgICAgICApIGFzIEV2ZW50c0tleVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZXh0ZW50JCQgPSB0aGlzLmV4dGVudCRcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1KSlcclxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IHsgZXh0ZW50OiBNYXBFeHRlbnQ7IGFjdGlvbjogTWFwVmlld0FjdGlvbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFeHRlbnQodmFsdWUuZXh0ZW50LCB2YWx1ZS5hY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG1vbml0b3JSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2JzZXJ2ZXJLZXlzLnB1c2goXHJcbiAgICAgIHRoaXMub2xNYXAuZ2V0VmlldygpLm9uKCdjaGFuZ2U6cm90YXRpb24nLCAoZXZ0OiBPYmplY3RFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm90YXRpb24kLm5leHQoZXZ0LnRhcmdldC5nZXRSb3RhdGlvbigpKTtcclxuICAgICAgfSkgYXMgRXZlbnRzS2V5XHJcbiAgICApO1xyXG4gICAgdGhpcy5yb3RhdGlvbiQubmV4dCh0aGlzLmdldFJvdGF0aW9uKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xyXG4gICAqL1xyXG4gIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xyXG4gICAgc3VwZXIudGVhcmRvd25PYnNlcnZlcnMoKTtcclxuICAgIGlmICh0aGlzLmV4dGVudCQkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5leHRlbnQkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLmV4dGVudCQkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB2aWV3J3MgT0wgcHJvamVjdGlvblxyXG4gICAqIEByZXR1cm5zIE9MIHByb2plY3Rpb25cclxuICAgKi9cclxuICBnZXRPbFByb2plY3Rpb24oKTogT2xQcm9qZWN0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9sVmlldy5nZXRQcm9qZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgbWFwIHZpZXcgY2VudGVyXHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBDZW50ZXJcclxuICAgKi9cclxuICBnZXRDZW50ZXIocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IFtudW1iZXIsIG51bWJlcl0ge1xyXG4gICAgbGV0IGNlbnRlciA9IHRoaXMub2xWaWV3LmdldENlbnRlcigpIGFzIFtudW1iZXIsIG51bWJlcl07XHJcbiAgICBpZiAocHJvamVjdGlvbiAmJiBjZW50ZXIpIHtcclxuICAgICAgY2VudGVyID0gb2xwcm9qLnRyYW5zZm9ybShjZW50ZXIsIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCksIHByb2plY3Rpb24pIGFzIFtcclxuICAgICAgICBudW1iZXIsXHJcbiAgICAgICAgbnVtYmVyXHJcbiAgICAgIF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHZpZXcgZXh0ZW50XHJcbiAgICogQHBhcmFtIHByb2plY3Rpb24gT3V0cHV0IHByb2plY3Rpb25cclxuICAgKiBAcmV0dXJucyBFeHRlbnRcclxuICAgKi9cclxuICBnZXRFeHRlbnQocHJvamVjdGlvbj86IHN0cmluZyB8IE9sUHJvamVjdGlvbik6IE1hcEV4dGVudCB7XHJcbiAgICBsZXQgZXh0ZW50ID0gdGhpcy5vbFZpZXcuY2FsY3VsYXRlRXh0ZW50KHRoaXMub2xNYXAuZ2V0U2l6ZSgpKTtcclxuICAgIGlmIChwcm9qZWN0aW9uICYmIGV4dGVudCkge1xyXG4gICAgICBleHRlbnQgPSBvbHByb2oudHJhbnNmb3JtRXh0ZW50KFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICB0aGlzLmdldE9sUHJvamVjdGlvbigpLFxyXG4gICAgICAgIHByb2plY3Rpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBleHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVcclxuICAgKiBAcGFyYW0gZHBpIERvdCBwZXIgaW5jaGVzXHJcbiAgICogQHJldHVybnMgVmlldyBzY2FsZVxyXG4gICAqL1xyXG4gIGdldFNjYWxlKGRwaSA9IDk2KSB7XHJcbiAgICByZXR1cm4gZ2V0U2NhbGVGcm9tUmVzb2x1dGlvbihcclxuICAgICAgdGhpcy5nZXRSZXNvbHV0aW9uKCksXHJcbiAgICAgIHRoaXMuZ2V0T2xQcm9qZWN0aW9uKCkuZ2V0VW5pdHMoKSxcclxuICAgICAgZHBpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBjdXJyZW50IHJlc29sdXRpb25cclxuICAgKiBAcmV0dXJucyBQcm9qZWN0aW9uIGRlbm9taW5hdG9yXHJcbiAgICovXHJcbiAgZ2V0UmVzb2x1dGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJlc29sdXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgY3VycmVudCB6b29tIGxldmVsXHJcbiAgICogQHJldHVybnMgWm9vbSBsZXZlbFxyXG4gICAqL1xyXG4gIGdldFpvb20oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHRoaXMub2xWaWV3LmdldFpvb20oKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIGluXHJcbiAgICovXHJcbiAgem9vbUluKCkge1xyXG4gICAgdGhpcy56b29tVG8odGhpcy5vbFZpZXcuZ2V0Wm9vbSgpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBab29tIG91dFxyXG4gICAqL1xyXG4gIHpvb21PdXQoKSB7XHJcbiAgICB0aGlzLnpvb21Ubyh0aGlzLm9sVmlldy5nZXRab29tKCkgLSAxKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFpvb20gdG8gc3BlY2lmaWMgem9vbSBsZXZlbFxyXG4gICAqIEBwYXJhbSB6b29tIFpvb20gbGV2ZWxcclxuICAgKi9cclxuICB6b29tVG8oem9vbTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9sVmlldy5jYW5jZWxBbmltYXRpb25zKCk7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgem9vbSxcclxuICAgICAgZHVyYXRpb246IDI1MCxcclxuICAgICAgZWFzaW5nOiBvbGVhc2luZy5lYXNlT3V0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gZXh0ZW50IGFmdGVyIGEgc2hvcnQgZGVsYXkgKDEwMG1zKSB1bmxlc3NcclxuICAgKiBhIG5ldyBtb3ZlbWVudCBnZXRzIHJlZ2lzdGVyZWQgaW4gdGhlIG1lYW50aW1lLlxyXG4gICAqIEBwYXJhbSBleHRlbnQgRXh0ZW50IHRvIG1vdmUgdG9cclxuICAgKi9cclxuICBtb3ZlVG9FeHRlbnQoZXh0ZW50OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xyXG4gICAgdGhpcy5leHRlbnQkLm5leHQoeyBleHRlbnQsIGFjdGlvbjogTWFwVmlld0FjdGlvbi5Nb3ZlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogWm9vbSB0byBleHRlbnQgYWZ0ZXIgYSBzaG9ydCBkZWxheSAoMTAwbXMpIHVubGVzc1xyXG4gICAqIGEgbmV3IG1vdmVtZW50IGdldHMgcmVnaXN0ZXJlZCBpbiB0aGUgbWVhbnRpbWUuXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnQgdG8gem9vbSB0b1xyXG4gICAqL1xyXG4gIHpvb21Ub0V4dGVudChleHRlbnQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdKSB7XHJcbiAgICB0aGlzLmV4dGVudCQubmV4dCh7IGV4dGVudCwgYWN0aW9uOiBNYXBWaWV3QWN0aW9uLlpvb20gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmlldyByb3RhdGlvblxyXG4gICAqIEByZXR1cm5zIFJvdGF0aW9uIGFuZ2xlIGluIHJhZGlhbnNcclxuICAgKi9cclxuICBnZXRSb3RhdGlvbigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2xWaWV3LmdldFJvdGF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0aGUgdmlldyByb3RhdGlvbiB0byAwXHJcbiAgICovXHJcbiAgcmVzZXRSb3RhdGlvbigpIHtcclxuICAgIHRoaXMub2xWaWV3LmFuaW1hdGUoeyByb3RhdGlvbjogMCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIHZpZXcgaGFzIGEgcHJldmlvdXMgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIHByZXZpb3VzIHN0YXRlXHJcbiAgICovXHJcbiAgaGFzUHJldmlvdXNTdGF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlcy5sZW5ndGggPiAxICYmIHRoaXMuc3RhdGVJbmRleCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2aWV3IGhhcyBhIG5leHQgc3RhdGVcclxuICAgKi9cclxuICBoYXNOZXh0U3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXMubGVuZ3RoID4gMSAmJiB0aGlzLnN0YXRlSW5kZXggPCB0aGlzLnN0YXRlcy5sZW5ndGggLSAxO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgcHJldmlvdXMgdmlldyBzdGF0ZVxyXG4gICAqL1xyXG4gIHByZXZpb3VzU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5oYXNQcmV2aW91c1N0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzdG9yZSB0aGUgbmV4dCB2aWV3IHN0YXRlXHJcbiAgICovXHJcbiAgbmV4dFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaGFzTmV4dFN0YXRlKCkpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZUluZGV4KHRoaXMuc3RhdGVJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHN0YXRlIGhpc3RvcnlcclxuICAgKi9cclxuICBjbGVhclN0YXRlSGlzdG9yeSgpIHtcclxuICAgIHRoaXMuc3RhdGVzID0gW107XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHRoZSB0aGUgdmlldyB0byBpdCdzIGludGlhbCBzdGF0ZVxyXG4gICAqL1xyXG4gIHNldEluaXRpYWxTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGVJbmRleCgwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgdG8gdGhlIGV4dGVudCByZXRyaWV2ZWQgZnJvbSB0aGUgc3RyZWFtXHJcbiAgICogQHBhcmFtIGV4dGVudCBFeHRlbnRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEVpdGhlciB6b29tIG9yIG1vdmVcclxuICAgKiBAcGFyYW0gYW5pbWF0aW9uIFdpdGggb3Igd2l0aG91dCBhbmltYXRpb24gdG8gdGhlIHRhcmdldCBleHRlbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRFeHRlbnQoXHJcbiAgICBleHRlbnQ6IE1hcEV4dGVudCxcclxuICAgIGFjdGlvbjogTWFwVmlld0FjdGlvbixcclxuICAgIGFuaW1hdGlvbjogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGNvbnN0IG9sVmlldyA9IHRoaXMub2xWaWV3O1xyXG4gICAgb2xWaWV3LmNhbmNlbEFuaW1hdGlvbnMoKTtcclxuICAgIGNvbnN0IGR1cmF0aW9uID0gYW5pbWF0aW9uID8gNTAwIDogMDtcclxuICAgIGNvbnN0IHpvb20gPSBvbFZpZXcuZ2V0Wm9vbSgpO1xyXG5cclxuICAgIGNvbnN0IGZyb21DZW50ZXIgPSBvbFZpZXcuZ2V0Q2VudGVyKCk7XHJcbiAgICBjb25zdCB0b0NlbnRlciA9IFtcclxuICAgICAgZXh0ZW50WzBdICsgKGV4dGVudFsyXSAtIGV4dGVudFswXSkgLyAyLFxyXG4gICAgICBleHRlbnRbMV0gKyAoZXh0ZW50WzNdIC0gZXh0ZW50WzFdKSAvIDJcclxuICAgIF07XHJcbiAgICBjb25zdCBkaXN0Q2VudGVyID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzBdIC0gdG9DZW50ZXJbMF0sIDIpICtcclxuICAgICAgICBNYXRoLnBvdyhmcm9tQ2VudGVyWzFdIC0gdG9DZW50ZXJbMV0sIDIpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZnJvbUV4dGVudCA9IG9sVmlldy5jYWxjdWxhdGVFeHRlbnQoKTtcclxuICAgIGNvbnN0IGZyb21TaXplID0gTWF0aC5zcXJ0KFxyXG4gICAgICBNYXRoLnBvdyhmcm9tRXh0ZW50WzJdIC0gZnJvbUV4dGVudFswXSwgMikgK1xyXG4gICAgICAgIE1hdGgucG93KGZyb21FeHRlbnRbM10gLSBmcm9tRXh0ZW50WzFdLCAyKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRvU2l6ZSA9IE1hdGguc3FydChcclxuICAgICAgTWF0aC5wb3coZXh0ZW50WzJdIC0gZXh0ZW50WzBdLCAyKSArIE1hdGgucG93KGV4dGVudFszXSAtIGV4dGVudFsxXSwgMilcclxuICAgICk7XHJcbiAgICBjb25zdCBtb3lTaXplID0gKHRvU2l6ZSArIGZyb21TaXplKSAvIDI7XHJcbiAgICBjb25zdCB4U2l6ZSA9IGRpc3RDZW50ZXIgLyBtb3lTaXplO1xyXG5cclxuICAgIGNvbnN0IG1heFpvb20gPVxyXG4gICAgICBhY3Rpb24gPT09IE1hcFZpZXdBY3Rpb24uTW92ZSB8fCB6b29tID4gdGhpcy5tYXhab29tT25FeHRlbnRcclxuICAgICAgICA/IHpvb21cclxuICAgICAgICA6IHRoaXMubWF4Wm9vbU9uRXh0ZW50O1xyXG5cclxuICAgIG9sVmlldy5maXQoZXh0ZW50LCB7XHJcbiAgICAgIHNpemU6IHRoaXMub2xNYXAuZ2V0U2l6ZSgpLFxyXG4gICAgICBtYXhab29tLFxyXG4gICAgICBwYWRkaW5nOiB0aGlzLnBhZGRpbmcsXHJcbiAgICAgIGR1cmF0aW9uOiB4U2l6ZSA+IDQgPyAwIDogZHVyYXRpb24sXHJcbiAgICAgIGNhbGxiYWNrOiAoaXNGaW5pc2hlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmICghaXNGaW5pc2hlZCkge1xyXG4gICAgICAgICAgb2xWaWV3LmZpdChleHRlbnQsIHtcclxuICAgICAgICAgICAgc2l6ZTogdGhpcy5vbE1hcC5nZXRTaXplKCksXHJcbiAgICAgICAgICAgIG1heFpvb20sXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IHRoaXMucGFkZGluZyxcclxuICAgICAgICAgICAgZHVyYXRpb246IHhTaXplID4gNCA/IDAgOiBkdXJhdGlvblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZSBpbmRleFxyXG4gICAqIEBwYXJhbSBpbmRleCBTdGF0ZSBpbmRleFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0U3RhdGVJbmRleChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXRlSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZXNbaW5kZXhdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgdmlldyBzdGF0ZVxyXG4gICAqIEBwYXJhbSBzdGF0ZSBWaWV3IHN0YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTdGF0ZShzdGF0ZTogTWFwVmlld1N0YXRlKSB7XHJcbiAgICB0aGlzLm9sVmlldy5hbmltYXRlKHtcclxuICAgICAgcmVzb2x1dGlvbjogc3RhdGUucmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiBzdGF0ZS5jZW50ZXIsXHJcbiAgICAgIGR1cmF0aW9uOiAwXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1vdmUgZW5kLCBnZXQgdGhlIHZpZXcgc3RhdGUgYW5kIHJlY29yZCBpdC5cclxuICAgKiBAcGFyYW0gZXZlbnQgTWFwIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1vdmVFbmQoZXZlbnQ6IE9sTWFwRXZlbnQpIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLmdldFJlc29sdXRpb24oKTtcclxuICAgIGlmICh0aGlzLnJlc29sdXRpb24kLnZhbHVlICE9PSByZXNvbHV0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQubmV4dChyZXNvbHV0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGF0ZSA9IHtcclxuICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgY2VudGVyOiB0aGlzLmdldENlbnRlcigpLFxyXG4gICAgICB6b29tOiB0aGlzLmdldFpvb20oKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zdGF0ZUhpc3RvcnkgPT09IHRydWUpIHtcclxuICAgICAgY29uc3Qgc3RhdGVJbmRleCA9IHRoaXMuc3RhdGVJbmRleDtcclxuICAgICAgY29uc3Qgc3RhdGVBdEluZGV4ID1cclxuICAgICAgICB0aGlzLnN0YXRlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiB0aGlzLnN0YXRlc1tzdGF0ZUluZGV4XTtcclxuICAgICAgaWYgKCF2aWV3U3RhdGVzQXJlRXF1YWwoc3RhdGUsIHN0YXRlQXRJbmRleCkpIHtcclxuICAgICAgICB0aGlzLnN0YXRlcyA9IHRoaXMuc3RhdGVzLnNsaWNlKDAsIHN0YXRlSW5kZXggKyAxKS5jb25jYXQoW3N0YXRlXSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZUluZGV4ID0gdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RhdGUkLm5leHQoc3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -78,14 +78,14 @@ export class HoverFeatureDirective {
|
|
|
78
78
|
* @internal
|
|
79
79
|
*/
|
|
80
80
|
ngOnInit() {
|
|
81
|
-
this.listenToMapPointerMove();
|
|
82
|
-
this.subscribeToPointerStore();
|
|
83
|
-
this.listenToMapClick();
|
|
84
81
|
this.map.status$
|
|
85
82
|
.pipe(first((status) => status === SubjectStatus.Done))
|
|
86
83
|
.subscribe(() => {
|
|
87
84
|
this.store = new FeatureStore([], { map: this.map });
|
|
88
85
|
this.initStore();
|
|
86
|
+
this.listenToMapPointerMove();
|
|
87
|
+
this.subscribeToPointerStore();
|
|
88
|
+
this.listenToMapClick();
|
|
89
89
|
});
|
|
90
90
|
// To handle context change without using the contextService.
|
|
91
91
|
this.layers$$ = this.map.layers$.subscribe((layers) => {
|
|
@@ -488,4 +488,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
488
488
|
type: HostListener,
|
|
489
489
|
args: ['mouseout']
|
|
490
490
|
}] } });
|
|
491
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxpQkFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBR3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBUyxXQUFXLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFt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QUMsQ0FBQyxDQUFDO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDM0MsTUFBTTthQUNUO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzt3R0FqaUJVLHFCQUFxQjs0RkFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzswQkFrREksSUFBSTtrR0ExQkUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XHJcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3JUaWxlIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xyXG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XHJcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUtc3RvcmUudXRpbHMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XHJcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciwgVmVjdG9yVGlsZUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xyXG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkL3ZlY3Rvci92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0cmlnZ2VyIGEgcmV2ZXJzZSBzZWFyY2ggb24gYXZhaWxhYmxlIHNlYXJjaCBzb3VyY2VzLlxyXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxyXG4gKiBCeSBkZWZhdWx0LCBubyBzZWFyY2ggc291cmNlcy4gQ29uZmlnIGluIGNvbmZpZyBmaWxlIG11c3QgYmUgZGVmaW5lZC5cclxuICogdGhlIGxheWVyIGxldmVsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvSG92ZXJGZWF0dXJlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdmVyRmVhdHVyZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgc3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcclxuICBwcml2YXRlIHBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZTogRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PiA9XHJcbiAgICBuZXcgRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PihbXSk7XHJcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XHJcbiAgcHJpdmF0ZSBzdG9yZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkxheWVyOiBvbExheWVyVmVjdG9yVGlsZTtcclxuICBwcml2YXRlIHNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gIHByaXZhdGUgbXZ0U3R5bGVPcHRpb25zOiBTdHlsZUJ5QXR0cmlidXRlO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xyXG5cclxuICBwcml2YXRlIHNpbmdsZUNsaWNrTWFwTGlzdGVuZXI7XHJcblxyXG4gIHByaXZhdGUgaG92ZXJGZWF0dXJlSWQ6IHN0cmluZyA9ICdob3ZlckZlYXR1cmVJZCc7XHJcbiAgLyoqXHJcbiAgICogVGhlIGRlbGF5IHdoZXJlIHRoZSBtb3VzZSBtdXN0IGJlIG1vdGlvbmxlc3MgYmVmb3JlIHRyaWdnZXIgdGhlIHJldmVyc2Ugc2VhcmNoXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRGVsYXk6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSB1c2VyIGhhcyBlbmFibGVkIG9yIG5vdCB0aGUgZGlyZWN0aXZlXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpXHJcbiAgbW91c2VvdXQoKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJR08gbWFwXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcclxuXHJcbiAgICB0aGlzLm1hcC5zdGF0dXMkXHJcbiAgICAgIC5waXBlKGZpcnN0KChzdGF0dXMpID0+IHN0YXR1cyA9PT0gU3ViamVjdFN0YXR1cy5Eb25lKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHsgbWFwOiB0aGlzLm1hcCB9KTtcclxuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyBUbyBoYW5kbGUgY29udGV4dCBjaGFuZ2Ugd2l0aG91dCB1c2luZyB0aGUgY29udGV4dFNlcnZpY2UuXHJcbiAgICB0aGlzLmxheWVycyQkID0gdGhpcy5tYXAubGF5ZXJzJC5zdWJzY3JpYmUoKGxheWVyczogTGF5ZXJbXSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zdG9yZSAmJiAhbGF5ZXJzLmZpbmQoKGwpID0+IGwuaWQgPT09ICdob3ZlckZlYXR1cmVJZCcpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBwb2ludGVyIHBvc2l0aW9uIHN0b3JlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0U3RvcmUoKSB7XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmU7XHJcblxyXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXHJcbiAgICAgIGlkOiAnaG92ZXJGZWF0dXJlSWQnLFxyXG4gICAgICB0aXRsZTogJ2hvdmVyRmVhdHVyZScsXHJcbiAgICAgIHpJbmRleDogOTAwLFxyXG4gICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxyXG4gICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxyXG4gICAgICBleHBvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgYnJvd3NhYmxlOiBmYWxzZSxcclxuICAgICAgc3R5bGU6IGhvdmVyRmVhdHVyZU1hcmtlclN0eWxlXHJcbiAgICB9KTtcclxuICAgIHRyeUJpbmRTdG9yZUxheWVyKHN0b3JlLCBsYXllcik7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25MYXllciA9IG5ldyBvbExheWVyVmVjdG9yVGlsZSh7XHJcbiAgICAgIG1hcDogdGhpcy5tYXAub2wsXHJcbiAgICAgIHpJbmRleDogOTAxLFxyXG4gICAgICByZW5kZXJNb2RlOiAndmVjdG9yJyxcclxuICAgICAgZGVjbHV0dGVyOiB0cnVlLFxyXG4gICAgICBzb3VyY2U6IG5ldyBvbFZlY3RvclRpbGVTb3VyY2UoeyBwcm9qZWN0aW9uOiB0aGlzLm1hcC5wcm9qZWN0aW9uIH0pLFxyXG4gICAgICBzdHlsZTogKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcclxuICAgICAgICBpZiAodGhpcy5tdnRTdHlsZU9wdGlvbnMgJiYgZmVhdHVyZS5nZXRJZCgpIGluIHRoaXMuc2VsZWN0aW9uTVZUKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgICAgICAgICBmZWF0dXJlLFxyXG4gICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyxcclxuICAgICAgICAgICAgcmVzb2x1dGlvblxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlSG92ZXJTdHlsZShcclxuICAgIGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sXHJcbiAgICBob3ZlclN0eWxlOiBTdHlsZUJ5QXR0cmlidXRlLFxyXG4gICAgcmVzb2x1dGlvbjogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBjb25zdCBsb2NhbEhvdmVyU3R5bGUgPSB7IC4uLmhvdmVyU3R5bGUgfTtcclxuICAgIGxldCBsYWJlbCA9IGhvdmVyU3R5bGUubGFiZWwgPyBob3ZlclN0eWxlLmxhYmVsLmF0dHJpYnV0ZSA6IHVuZGVmaW5lZDtcclxuICAgIGxldCBoYXNMYWJlbFN0eWxlID0gaG92ZXJTdHlsZS5sYWJlbD8uc3R5bGUgPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgaWYgKCFmZWF0dXJlLmdldCgnX2lzTGFiZWwnKSkge1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUubGFiZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGhhc0xhYmVsU3R5bGUgPSBmYWxzZTtcclxuICAgICAgbGFiZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjbGVhciB0aGUgc3R5bGUgZm9yIGxhYmVsLi4uLlxyXG4gICAgICBjb25zdCBzaXplID0gbG9jYWxIb3ZlclN0eWxlLmRhdGEgPyBsb2NhbEhvdmVyU3R5bGUuZGF0YS5sZW5ndGggOiAwO1xyXG4gICAgICBjb25zdCByYWRpdXMgPSBbXTtcclxuICAgICAgY29uc3Qgc3Ryb2tlID0gW107XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gW107XHJcbiAgICAgIGNvbnN0IGZpbGwgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcclxuICAgICAgICByYWRpdXMucHVzaCgwKTtcclxuICAgICAgICBzdHJva2UucHVzaCgncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpO1xyXG4gICAgICAgIHdpZHRoLnB1c2goMCk7XHJcbiAgICAgICAgZmlsbC5wdXNoKCdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7XHJcbiAgICAgIH1cclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLnJhZGl1cyA9IHJhZGl1cztcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLnN0cm9rZSA9IHN0cm9rZTtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLndpZHRoID0gd2lkdGg7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5maWxsID0gZmlsbDtcclxuICAgIH1cclxuICAgIGlmICghaGFzTGFiZWxTdHlsZSAmJiBsYWJlbCkge1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUubGFiZWwuc3R5bGUgPSB7XHJcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXHJcbiAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcclxuICAgICAgICBmb250OiAnMTJweCBDYWxpYnJpLHNhbnMtc2VyaWYnLFxyXG4gICAgICAgIGZpbGw6IHsgY29sb3I6ICcjMDAwJyB9LFxyXG4gICAgICAgIGJhY2tncm91bmRGaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyB9LFxyXG4gICAgICAgIGJhY2tncm91bmRTdHJva2U6IHsgY29sb3I6ICdyZ2JhKDIwMCwgMjAwLCAyMDAsIDAuNzUpJywgd2lkdGg6IDIgfSxcclxuICAgICAgICBzdHJva2U6IHsgY29sb3I6ICcjZmZmJywgd2lkdGg6IDMgfSxcclxuICAgICAgICBvdmVyZmxvdzogdHJ1ZSxcclxuICAgICAgICBvZmZzZXRYOiAxMCxcclxuICAgICAgICBvZmZzZXRZOiAyMCxcclxuICAgICAgICBwYWRkaW5nOiBbMi41LCAyLjUsIDIuNSwgMi41XVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlQnlBdHRyaWJ1dGUoXHJcbiAgICAgIGZlYXR1cmUsXHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZSxcclxuICAgICAgcmVzb2x1dGlvblxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpO1xyXG4gICAgdGhpcy51bmxpc3RlblRvTWFwU2luZ2xlQ2xpY2soKTtcclxuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBwb2ludGVybW92ZSByZXN1bHQgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBzdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpIHtcclxuICAgIHRoaXMuc3RvcmUkJCA9IHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXN1bHRzVW5kZXJQb2ludGVyUG9zaXRpb24pID0+IHtcclxuICAgICAgICB0aGlzLmFkZEZlYXR1cmVPdmVybGF5KHJlc3VsdHNVbmRlclBvaW50ZXJQb3NpdGlvbik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgcG9pbnRlcm1vdmVcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XHJcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcclxuICAgICAgKGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uTWFwRXZlbnQoZXZlbnQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gbWFwIHNpbmdsZWNsaWNrXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcENsaWNrKCkge1xyXG4gICAgdGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXHJcbiAgICAgICdzaW5nbGVjbGljaycsXHJcbiAgICAgIChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcFNpbmdsZUNsaWNrRXZlbnQoZXZlbnQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVW5zdWJzY3JpYmUgdG8gcG9pbnRlciBzdG9yZS5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICB1bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xyXG4gICAgdGhpcy5zdG9yZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHBvaW50ZXJtb3ZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XHJcbiAgICB1bkJ5S2V5KHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lcik7XHJcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHNpbmdsZWNsaWNrXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwU2luZ2xlQ2xpY2soKSB7XHJcbiAgICB1bkJ5S2V5KHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lcik7XHJcbiAgICB0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyIGNsZWFyIGxheWVyIG9uIHNpbmdsZWNsaWNrLlxyXG4gICAqIEBwYXJhbSBldmVudCBPTCBtYXAgYnJvd3NlciBzaW5nbGVjbGljayBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25NYXBTaW5nbGVDbGlja0V2ZW50KGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSB7XHJcbiAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXIgaG92ZXIgd2hlbiB0aGUgbW91c2UgaXMgbW90aW9ubGVzcyBkdXJpbmcgdGhlIGRlZmluZWQgZGVsYXkgKHBvaW50ZXJNb3ZlRGVsYXkpLlxyXG4gICAqIEBwYXJhbSBldmVudCBPTCBtYXAgYnJvd3NlciBwb2ludGVyIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1hcEV2ZW50KGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50LmRyYWdnaW5nIHx8XHJcbiAgICAgICF0aGlzLmlnb0hvdmVyRmVhdHVyZUVuYWJsZWQgfHxcclxuICAgICAgdGhpcy5tZWRpYVNlcnZpY2UuaXNUb3VjaFNjcmVlbigpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIC8vIGNhbmNlbCB0aW1lb3V0IHdoZW4gdGhlIG1vdXNlIG1vdmVzXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgICBsZXQgbWF4aW11bVppbmRleCA9IC1JbmZpbml0eTtcclxuICAgIGxldCB0b3BNb3N0T2xMYXllcjtcclxuICAgIGNvbnN0IHBpeGVsID0gdGhpcy5tYXAub2wuZ2V0UGl4ZWxGcm9tQ29vcmRpbmF0ZShldmVudC5jb29yZGluYXRlKTtcclxuICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIHJldHJpZXZlIHRoZSB0b3Btb3N0IGxheWVyIHdpdGggZmVhdHVyZSB0byBvbmx5IGFwcGx5IHRoZSBob3ZlciBvbiB0aGlzIGxheWVyLlxyXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXHJcbiAgICAgICAgcGl4ZWwsXHJcbiAgICAgICAgKG1hcEZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGxheWVyT0w6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFsYXllck9MKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGlnb0xheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKChsYXllck9MIGFzIGFueSkub2xfdWlkKTtcclxuICAgICAgICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzSG92ZXIoaWdvTGF5ZXIgYXMgYW55KSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaWdvTGF5ZXIuekluZGV4IDw9IG1heGltdW1aaW5kZXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbWF4aW11bVppbmRleCA9IGlnb0xheWVyLnpJbmRleDtcclxuICAgICAgICAgIHRvcE1vc3RPbExheWVyID0gbGF5ZXJPTDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhpdFRvbGVyYW5jZTogMTAsXHJcbiAgICAgICAgICBsYXllckZpbHRlcjogKG9sTGF5ZXIpID0+XHJcbiAgICAgICAgICAgIG9sTGF5ZXIgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yIHx8XHJcbiAgICAgICAgICAgIG9sTGF5ZXIgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgaWYgKCF0b3BNb3N0T2xMYXllcikge1xyXG4gICAgICAgIC8vIFRvIGNsZWFyIGxhYmVsXHJcbiAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubWFwLm9sLmZvckVhY2hGZWF0dXJlQXRQaXhlbChcclxuICAgICAgICBwaXhlbCxcclxuICAgICAgICAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyBUbyBhdm9pZCBmbGFzaGluZyBmZWF0dXJlXHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0KCdob3ZlclN1bW1hcnknKSA9PT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0UHJvcGVydGllcygpICE9PVxyXG4gICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmFsbCgpWzBdPy5nZXRQcm9wZXJ0aWVzKClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICAgICAgbGV0IGlnb0xheWVyO1xyXG4gICAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IpIHtcclxuICAgICAgICAgICAgICBjb25zdCBteUxheWVyVmVjdG9yID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKFxyXG4gICAgICAgICAgICAgICAgKGxheWVyT0wgYXMgYW55KS5vbF91aWRcclxuICAgICAgICAgICAgICApIGFzIFZlY3RvckxheWVyO1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzSG92ZXIobXlMYXllclZlY3RvcikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IGxvY2FsT2xGZWF0dXJlID0gdGhpcy5oYW5kbGVSZW5kZXJGZWF0dXJlKG1hcEZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKG15TGF5ZXJWZWN0b3IsIGxvY2FsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlc1RvTG9hZCA9IFtsb2NhbE9sRmVhdHVyZV07XHJcbiAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0UHJvcGVydGllcyhsb2NhbE9sRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsR2VvbSA9XHJcbiAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50J1xyXG4gICAgICAgICAgICAgICAgICA/IGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KClcclxuICAgICAgICAgICAgICAgICAgOiBuZXcgT2xHZW9tLlBvaW50KGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0R2VvbWV0cnkobGFiZWxHZW9tKTtcclxuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldElkKGxvY2FsT2xGZWF0dXJlLmdldElkKCkpO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIHRydWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKG15TGF5ZXJWZWN0b3IsIG15TGFiZWxPbEZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIGZlYXR1cmVzVG9Mb2FkLnB1c2gobXlMYWJlbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUubG9hZChmZWF0dXJlc1RvTG9hZCk7XHJcbiAgICAgICAgICAgICAgaWdvTGF5ZXIgPSBteUxheWVyVmVjdG9yO1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChsYXllck9MIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvclRpbGUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBteUxheWVyVmVjdG9yVGlsZSA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZChcclxuICAgICAgICAgICAgICAgIChsYXllck9MIGFzIGFueSkub2xfdWlkXHJcbiAgICAgICAgICAgICAgKSBhcyBWZWN0b3JUaWxlTGF5ZXI7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihteUxheWVyVmVjdG9yVGlsZSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGU/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgICAgID8uaG92ZXJTdHlsZVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMgPVxyXG4gICAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZS5vcHRpb25zLmlnb1N0eWxlLnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG15TGF5ZXJWZWN0b3JUaWxlPy5vcHRpb25zPy5pZ29TdHlsZT8uaG92ZXJTdHlsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMgPVxyXG4gICAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZS5vcHRpb25zLmlnb1N0eWxlLmhvdmVyU3R5bGU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuc2V0U291cmNlKGxheWVyT0wuZ2V0U291cmNlKCkpO1xyXG4gICAgICAgICAgICAgIGxheWVyT0xcclxuICAgICAgICAgICAgICAgIC5nZXRGZWF0dXJlcyhldmVudC5waXhlbClcclxuICAgICAgICAgICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAobXZ0RmVhdHVyZXM6IChSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+KVtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtdnRGZWF0dXJlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTVZUID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gbXZ0RmVhdHVyZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmZWF0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsT2xGZWF0dXJlID0gdGhpcy5oYW5kbGVSZW5kZXJGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXlMYWJlbE9sRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoKTtcclxuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKClcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsR2VvbSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXcgT2xHZW9tLlBvaW50KGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0R2VvbWV0cnkobGFiZWxHZW9tKTtcclxuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldElkKGxvY2FsT2xGZWF0dXJlLmdldElkKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKFxyXG4gICAgICAgICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKFtteUxhYmVsT2xGZWF0dXJlXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25NVlRbZmVhdHVyZS5nZXRJZCgpXSA9IGxvY2FsT2xGZWF0dXJlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlnb0xheWVyID0gbXlMYXllclZlY3RvclRpbGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhpdFRvbGVyYW5jZTogMTAsXHJcbiAgICAgICAgICBsYXllckZpbHRlcjogKG9sTGF5ZXIpID0+IG9sTGF5ZXIgPT09IHRvcE1vc3RPbExheWVyXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSwgdGhpcy5pZ29Ib3ZlckZlYXR1cmVEZWxheSk7XHJcbiAgfVxyXG5cclxuICBjYW5Qcm9jZXNzSG92ZXIoaWdvTGF5ZXI6IFZlY3RvckxheWVyIHwgVmVjdG9yVGlsZUxheWVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlnb0xheWVyKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghaWdvTGF5ZXIudmlzaWJsZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlnb0xheWVyLm9wdGlvbnMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUgJiZcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LmhvdmVyU3R5bGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlICYmXHJcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGUgJiZcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LmhvdmVyU3R5bGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVJlbmRlckZlYXR1cmUoXHJcbiAgICBmZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+XHJcbiAgKTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+IHtcclxuICAgIGxldCBsb2NhbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PjtcclxuICAgIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgUmVuZGVyRmVhdHVyZSkge1xyXG4gICAgICBsb2NhbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHtcclxuICAgICAgICBnZW9tZXRyeTogdGhpcy5nZXRHZW9tZXRyeShmZWF0dXJlKVxyXG4gICAgICB9KTtcclxuICAgICAgbG9jYWxGZWF0dXJlLnNldElkKGZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICB9IGVsc2UgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBPbEZlYXR1cmUpIHtcclxuICAgICAgbG9jYWxGZWF0dXJlID0gZmVhdHVyZTtcclxuICAgIH1cclxuICAgIGxvY2FsRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKGZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcclxuICAgIHJldHVybiBsb2NhbEZlYXR1cmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBmZWF0dXJlIHRvIHRoZSBwb2ludGVyIHN0b3JlXHJcbiAgICogQHBhcmFtIHRleHQgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRGZWF0dXJlT3ZlcmxheShob3ZlckVudGl0eTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+W10pIHtcclxuICAgIGlmIChob3ZlckVudGl0eS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGhvdmVyRW50aXR5WzBdO1xyXG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgY29uc3QgZmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoe1xyXG4gICAgICAgIGdlb21ldHJ5OiByZXN1bHQuZ2V0R2VvbWV0cnkoKSxcclxuICAgICAgICBtZXRhOiB7IGlkOiB0aGlzLmhvdmVyRmVhdHVyZUlkIH0sXHJcbiAgICAgICAgaG92ZXJTdW1tYXJ5OiB0aGlzLmdldEhvdmVyU3VtbWFyeShyZXN1bHQuZ2V0UHJvcGVydGllcygpKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0TGF5ZXJPbEZlYXR1cmVzKFtmZWF0dXJlXSwgRmVhdHVyZU1vdGlvbi5Ob25lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKFxyXG4gICAgaWdvTGF5ZXI6IFZlY3RvckxheWVyIHwgVmVjdG9yVGlsZUxheWVyLFxyXG4gICAgZmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+XHJcbiAgKSB7XHJcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5zdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpO1xyXG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZT8uaG92ZXJTdHlsZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKFxyXG4gICAgICAgIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcclxuICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICBpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlLnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSxcclxuICAgICAgICAgIHJlc29sdXRpb25cclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uaWdvU3R5bGU/LmhvdmVyU3R5bGUpIHtcclxuICAgICAgdGhpcy5zdG9yZS5sYXllci5vbC5zZXRTdHlsZShcclxuICAgICAgICB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXHJcbiAgICAgICAgICBmZWF0dXJlLFxyXG4gICAgICAgICAgaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZS5ob3ZlclN0eWxlLFxyXG4gICAgICAgICAgcmVzb2x1dGlvblxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SG92ZXJTdW1tYXJ5KHByb3BlcnRpZXMpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN1bW1hcnkgPSAnJztcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoJ18nKSAmJiBrZXkgIT09ICdnZW9tZXRyeScpIHtcclxuICAgICAgICBzdW1tYXJ5ICs9IGAke2tleX06ICR7dmFsdWV9YCArICdcXG4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VtbWFyeS5sZW5ndGggPj0gMiA/IHN1bW1hcnkuc2xpY2UoMCwgLTIpIDogc3VtbWFyeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R2VvbWV0cnkoZmVhdHVyZSk6IE9sR2VvbS5HZW9tZXRyeSB7XHJcbiAgICBsZXQgZ2VvbTtcclxuICAgIGlmICghZmVhdHVyZS5nZXRPcmllbnRlZEZsYXRDb29yZGluYXRlcykge1xyXG4gICAgICBnZW9tID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29vcmRzID0gZmVhdHVyZS5nZXRPcmllbnRlZEZsYXRDb29yZGluYXRlcygpO1xyXG4gICAgICBjb25zdCBmbGF0Q29vcmRzID0gW107XHJcblxyXG4gICAgICBjb29yZHMuZm9yRWFjaCgoYywgaWR4KSA9PiB7XHJcbiAgICAgICAgaWYgKGlkeCAlIDIgPT09IDApIHtcclxuICAgICAgICAgIGZsYXRDb29yZHMucHVzaChbXHJcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoY29vcmRzW2lkeF0pLFxyXG4gICAgICAgICAgICBwYXJzZUZsb2F0KGNvb3Jkc1tpZHggKyAxXSlcclxuICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyBUT0RPOiB0ZXN0IE11bHRpWFxyXG4gICAgICBzd2l0Y2ggKGZlYXR1cmUuZ2V0VHlwZSgpKSB7XHJcbiAgICAgICAgY2FzZSAnUG9pbnQnOlxyXG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uUG9pbnQoZmxhdENvb3Jkcyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdQb2x5Z29uJzpcclxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLlBvbHlnb24oW2ZsYXRDb29yZHNdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0xpbmVTdHJpbmcnOlxyXG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uTGluZVN0cmluZyhbZmxhdENvb3Jkc10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ2VvbTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBwb2ludGVyIHN0b3JlIGZlYXR1cmVzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhckxheWVyKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25NVlQgPSB7fTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxheWVyKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZS5jbGVhckxheWVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
491
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBRW5DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxpQkFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLGFBQWEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBR3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBUyxXQUFXLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFt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QUMsQ0FBQyxDQUFDO29CQUN4QyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDM0MsTUFBTTthQUNUO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDL0I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQzt3R0FoaUJVLHFCQUFxQjs0RkFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzswQkFrREksSUFBSTtrR0ExQkUsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFHTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3RTdGF0dXMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xNYXBCcm93c2VyRXZlbnQgfSBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xyXG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XHJcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcclxuaW1wb3J0IG9sTGF5ZXJWZWN0b3JUaWxlIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xyXG5pbXBvcnQgUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XHJcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xyXG5cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUtc3RvcmUudXRpbHMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XHJcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciwgVmVjdG9yVGlsZUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xyXG5pbXBvcnQgeyBTdHlsZUJ5QXR0cmlidXRlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkL3ZlY3Rvci92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0cmlnZ2VyIGEgcmV2ZXJzZSBzZWFyY2ggb24gYXZhaWxhYmxlIHNlYXJjaCBzb3VyY2VzLlxyXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxyXG4gKiBCeSBkZWZhdWx0LCBubyBzZWFyY2ggc291cmNlcy4gQ29uZmlnIGluIGNvbmZpZyBmaWxlIG11c3QgYmUgZGVmaW5lZC5cclxuICogdGhlIGxheWVyIGxldmVsLlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvSG92ZXJGZWF0dXJlXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvdmVyRmVhdHVyZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgc3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcclxuICBwcml2YXRlIHBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZTogRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PiA9XHJcbiAgICBuZXcgRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PihbXSk7XHJcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XHJcbiAgcHJpdmF0ZSBzdG9yZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkxheWVyOiBvbExheWVyVmVjdG9yVGlsZTtcclxuICBwcml2YXRlIHNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gIHByaXZhdGUgbXZ0U3R5bGVPcHRpb25zOiBTdHlsZUJ5QXR0cmlidXRlO1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb2ludGVyTW92ZUxpc3RlbmVyO1xyXG5cclxuICBwcml2YXRlIHNpbmdsZUNsaWNrTWFwTGlzdGVuZXI7XHJcblxyXG4gIHByaXZhdGUgaG92ZXJGZWF0dXJlSWQ6IHN0cmluZyA9ICdob3ZlckZlYXR1cmVJZCc7XHJcbiAgLyoqXHJcbiAgICogVGhlIGRlbGF5IHdoZXJlIHRoZSBtb3VzZSBtdXN0IGJlIG1vdGlvbmxlc3MgYmVmb3JlIHRyaWdnZXIgdGhlIHJldmVyc2Ugc2VhcmNoXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRGVsYXk6IG51bWJlciA9IDEwMDA7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZSB1c2VyIGhhcyBlbmFibGVkIG9yIG5vdCB0aGUgZGlyZWN0aXZlXHJcbiAgICovXHJcbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpXHJcbiAgbW91c2VvdXQoKSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJR08gbWFwXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcclxuICB9XHJcblxyXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXHJcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tYXAuc3RhdHVzJFxyXG4gICAgICAucGlwZShmaXJzdCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7IG1hcDogdGhpcy5tYXAgfSk7XHJcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgICAgICB0aGlzLmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFRvIGhhbmRsZSBjb250ZXh0IGNoYW5nZSB3aXRob3V0IHVzaW5nIHRoZSBjb250ZXh0U2VydmljZS5cclxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzOiBMYXllcltdKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnN0b3JlICYmICFsYXllcnMuZmluZCgobCkgPT4gbC5pZCA9PT0gJ2hvdmVyRmVhdHVyZUlkJykpIHtcclxuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIHBvaW50ZXIgcG9zaXRpb24gc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTdG9yZSgpIHtcclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZTtcclxuXHJcbiAgICBjb25zdCBsYXllciA9IG5ldyBWZWN0b3JMYXllcih7XHJcbiAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgICAgaWQ6ICdob3ZlckZlYXR1cmVJZCcsXHJcbiAgICAgIHRpdGxlOiAnaG92ZXJGZWF0dXJlJyxcclxuICAgICAgekluZGV4OiA5MDAsXHJcbiAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICBicm93c2FibGU6IGZhbHNlLFxyXG4gICAgICBzdHlsZTogaG92ZXJGZWF0dXJlTWFya2VyU3R5bGVcclxuICAgIH0pO1xyXG4gICAgdHJ5QmluZFN0b3JlTGF5ZXIoc3RvcmUsIGxheWVyKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkxheWVyID0gbmV3IG9sTGF5ZXJWZWN0b3JUaWxlKHtcclxuICAgICAgbWFwOiB0aGlzLm1hcC5vbCxcclxuICAgICAgekluZGV4OiA5MDEsXHJcbiAgICAgIHJlbmRlck1vZGU6ICd2ZWN0b3InLFxyXG4gICAgICBkZWNsdXR0ZXI6IHRydWUsXHJcbiAgICAgIHNvdXJjZTogbmV3IG9sVmVjdG9yVGlsZVNvdXJjZSh7IHByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb24gfSksXHJcbiAgICAgIHN0eWxlOiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm12dFN0eWxlT3B0aW9ucyAmJiBmZWF0dXJlLmdldElkKCkgaW4gdGhpcy5zZWxlY3Rpb25NVlQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXHJcbiAgICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zLFxyXG4gICAgICAgICAgICByZXNvbHV0aW9uXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgZmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PixcclxuICAgIGhvdmVyU3R5bGU6IFN0eWxlQnlBdHRyaWJ1dGUsXHJcbiAgICByZXNvbHV0aW9uOiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IGxvY2FsSG92ZXJTdHlsZSA9IHsgLi4uaG92ZXJTdHlsZSB9O1xyXG4gICAgbGV0IGxhYmVsID0gaG92ZXJTdHlsZS5sYWJlbCA/IGhvdmVyU3R5bGUubGFiZWwuYXR0cmlidXRlIDogdW5kZWZpbmVkO1xyXG4gICAgbGV0IGhhc0xhYmVsU3R5bGUgPSBob3ZlclN0eWxlLmxhYmVsPy5zdHlsZSA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICBpZiAoIWZlYXR1cmUuZ2V0KCdfaXNMYWJlbCcpKSB7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgICAgaGFzTGFiZWxTdHlsZSA9IGZhbHNlO1xyXG4gICAgICBsYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGNsZWFyIHRoZSBzdHlsZSBmb3IgbGFiZWwuLi4uXHJcbiAgICAgIGNvbnN0IHNpemUgPSBsb2NhbEhvdmVyU3R5bGUuZGF0YSA/IGxvY2FsSG92ZXJTdHlsZS5kYXRhLmxlbmd0aCA6IDA7XHJcbiAgICAgIGNvbnN0IHJhZGl1cyA9IFtdO1xyXG4gICAgICBjb25zdCBzdHJva2UgPSBbXTtcclxuICAgICAgY29uc3Qgd2lkdGggPSBbXTtcclxuICAgICAgY29uc3QgZmlsbCA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgIHJhZGl1cy5wdXNoKDApO1xyXG4gICAgICAgIHN0cm9rZS5wdXNoKCdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7XHJcbiAgICAgICAgd2lkdGgucHVzaCgwKTtcclxuICAgICAgICBmaWxsLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcclxuICAgICAgfVxyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUucmFkaXVzID0gcmFkaXVzO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUuc3Ryb2tlID0gc3Ryb2tlO1xyXG4gICAgICBsb2NhbEhvdmVyU3R5bGUud2lkdGggPSB3aWR0aDtcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLmZpbGwgPSBmaWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCFoYXNMYWJlbFN0eWxlICYmIGxhYmVsKSB7XHJcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbC5zdHlsZSA9IHtcclxuICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcclxuICAgICAgICB0ZXh0QmFzZWxpbmU6ICd0b3AnLFxyXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXHJcbiAgICAgICAgZmlsbDogeyBjb2xvcjogJyMwMDAnIH0sXHJcbiAgICAgICAgYmFja2dyb3VuZEZpbGw6IHsgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIH0sXHJcbiAgICAgICAgYmFja2dyb3VuZFN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwMCwgMC43NSknLCB3aWR0aDogMiB9LFxyXG4gICAgICAgIHN0cm9rZTogeyBjb2xvcjogJyNmZmYnLCB3aWR0aDogMyB9LFxyXG4gICAgICAgIG92ZXJmbG93OiB0cnVlLFxyXG4gICAgICAgIG9mZnNldFg6IDEwLFxyXG4gICAgICAgIG9mZnNldFk6IDIwLFxyXG4gICAgICAgIHBhZGRpbmc6IFsyLjUsIDIuNSwgMi41LCAyLjVdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGVCeUF0dHJpYnV0ZShcclxuICAgICAgZmVhdHVyZSxcclxuICAgICAgbG9jYWxIb3ZlclN0eWxlLFxyXG4gICAgICByZXNvbHV0aW9uXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmUgYW5kIHJldmVyc2Ugc2VhcmNoIHJlc3VsdHMuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XHJcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpO1xyXG4gICAgdGhpcy5sYXllcnMkJC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIHBvaW50ZXJtb3ZlIHJlc3VsdCBzdG9yZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xyXG4gICAgdGhpcy5zdG9yZSQkID0gdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZShcclxuICAgICAgKHJlc3VsdHNVbmRlclBvaW50ZXJQb3NpdGlvbikgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZU92ZXJsYXkocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxyXG4gICAgICAncG9pbnRlcm1vdmUnLFxyXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBFdmVudChldmVudClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtYXAgc2luZ2xlY2xpY2tcclxuICAgKi9cclxuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XHJcbiAgICB0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcclxuICAgICAgJ3NpbmdsZWNsaWNrJyxcclxuICAgICAgKGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uTWFwU2luZ2xlQ2xpY2tFdmVudChldmVudClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbnN1YnNjcmliZSB0byBwb2ludGVyIHN0b3JlLlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XHJcbiAgICB0aGlzLnN0b3JlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcclxuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcclxuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgc2luZ2xlY2xpY2tcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIHVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpIHtcclxuICAgIHVuQnlLZXkodGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyKTtcclxuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXIgY2xlYXIgbGF5ZXIgb24gc2luZ2xlY2xpY2suXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHNpbmdsZWNsaWNrIGV2ZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbk1hcFNpbmdsZUNsaWNrRXZlbnQoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pIHtcclxuICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlciBob3ZlciB3aGVuIHRoZSBtb3VzZSBpcyBtb3Rpb25sZXNzIGR1cmluZyB0aGUgZGVmaW5lZCBkZWxheSAocG9pbnRlck1vdmVEZWxheSkuXHJcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uTWFwRXZlbnQoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQuZHJhZ2dpbmcgfHxcclxuICAgICAgIXRoaXMuaWdvSG92ZXJGZWF0dXJlRW5hYmxlZCB8fFxyXG4gICAgICB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKClcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIGxldCBtYXhpbXVtWmluZGV4ID0gLUluZmluaXR5O1xyXG4gICAgbGV0IHRvcE1vc3RPbExheWVyO1xyXG4gICAgY29uc3QgcGl4ZWwgPSB0aGlzLm1hcC5vbC5nZXRQaXhlbEZyb21Db29yZGluYXRlKGV2ZW50LmNvb3JkaW5hdGUpO1xyXG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gcmV0cmlldmUgdGhlIHRvcG1vc3QgbGF5ZXIgd2l0aCBmZWF0dXJlIHRvIG9ubHkgYXBwbHkgdGhlIGhvdmVyIG9uIHRoaXMgbGF5ZXIuXHJcbiAgICAgIHRoaXMubWFwLm9sLmZvckVhY2hGZWF0dXJlQXRQaXhlbChcclxuICAgICAgICBwaXhlbCxcclxuICAgICAgICAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWxheWVyT0wpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaWdvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoKGxheWVyT0wgYXMgYW55KS5vbF91aWQpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllciBhcyBhbnkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpZ29MYXllci56SW5kZXggPD0gbWF4aW11bVppbmRleCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBtYXhpbXVtWmluZGV4ID0gaWdvTGF5ZXIuekluZGV4O1xyXG4gICAgICAgICAgdG9wTW9zdE9sTGF5ZXIgPSBsYXllck9MO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcclxuICAgICAgICAgIGxheWVyRmlsdGVyOiAob2xMYXllcikgPT5cclxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgfHxcclxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoIXRvcE1vc3RPbExheWVyKSB7XHJcbiAgICAgICAgLy8gVG8gY2xlYXIgbGFiZWxcclxuICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcclxuICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKFxyXG4gICAgICAgIHBpeGVsLFxyXG4gICAgICAgIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIFRvIGF2b2lkIGZsYXNoaW5nIGZlYXR1cmVcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgbWFwRmVhdHVyZS5nZXQoJ2hvdmVyU3VtbWFyeScpID09PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgbWFwRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkgIT09XHJcbiAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuYWxsKClbMF0/LmdldFByb3BlcnRpZXMoKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgICAgICBsZXQgaWdvTGF5ZXI7XHJcbiAgICAgICAgICAgIGlmIChsYXllck9MIGluc3RhbmNlb2Ygb2xMYXllclZlY3Rvcikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGF5ZXJWZWN0b3IgPSB0aGlzLm1hcC5nZXRMYXllckJ5T2xVSWQoXHJcbiAgICAgICAgICAgICAgICAobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZFxyXG4gICAgICAgICAgICAgICkgYXMgVmVjdG9yTGF5ZXI7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihteUxheWVyVmVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUobWFwRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbG9jYWxPbEZlYXR1cmUpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzVG9Mb2FkID0gW2xvY2FsT2xGZWF0dXJlXTtcclxuICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRQcm9wZXJ0aWVzKGxvY2FsT2xGZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cclxuICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnXHJcbiAgICAgICAgICAgICAgICAgID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xyXG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbXlMYWJlbE9sRmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgZmVhdHVyZXNUb0xvYWQucHVzaChteUxhYmVsT2xGZWF0dXJlKTtcclxuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKGZlYXR1cmVzVG9Mb2FkKTtcclxuICAgICAgICAgICAgICBpZ29MYXllciA9IG15TGF5ZXJWZWN0b3I7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGxheWVyT0wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG15TGF5ZXJWZWN0b3JUaWxlID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKFxyXG4gICAgICAgICAgICAgICAgKGxheWVyT0wgYXMgYW55KS5vbF91aWRcclxuICAgICAgICAgICAgICApIGFzIFZlY3RvclRpbGVMYXllcjtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKG15TGF5ZXJWZWN0b3JUaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZT8ub3B0aW9ucz8uaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgPy5ob3ZlclN0eWxlXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobXlMYXllclZlY3RvclRpbGU/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuaG92ZXJTdHlsZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5zZXRTb3VyY2UobGF5ZXJPTC5nZXRTb3VyY2UoKSk7XHJcbiAgICAgICAgICAgICAgbGF5ZXJPTFxyXG4gICAgICAgICAgICAgICAgLmdldEZlYXR1cmVzKGV2ZW50LnBpeGVsKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgIChtdnRGZWF0dXJlczogKFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pW10pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIW12dEZlYXR1cmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25NVlQgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBtdnRGZWF0dXJlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZlYXR1cmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0UHJvcGVydGllcyhcclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldFByb3BlcnRpZXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cclxuICAgICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xyXG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZSxcclxuICAgICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmVcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmxvYWQoW215TGFiZWxPbEZlYXR1cmVdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVFtmZWF0dXJlLmdldElkKCldID0gbG9jYWxPbEZlYXR1cmU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWdvTGF5ZXIgPSBteUxheWVyVmVjdG9yVGlsZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcclxuICAgICAgICAgIGxheWVyRmlsdGVyOiAob2xMYXllcikgPT4gb2xMYXllciA9PT0gdG9wTW9zdE9sTGF5ZXJcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9LCB0aGlzLmlnb0hvdmVyRmVhdHVyZURlbGF5KTtcclxuICB9XHJcblxyXG4gIGNhblByb2Nlc3NIb3ZlcihpZ29MYXllcjogVmVjdG9yTGF5ZXIgfCBWZWN0b3JUaWxlTGF5ZXIpOiBib29sZWFuIHtcclxuICAgIGlmICghaWdvTGF5ZXIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpZ29MYXllci52aXNpYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZSAmJlxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uaG92ZXJTdHlsZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUgJiZcclxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSAmJlxyXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uaG92ZXJTdHlsZVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVuZGVyRmVhdHVyZShcclxuICAgIGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cclxuICApOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4ge1xyXG4gICAgbGV0IGxvY2FsRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xyXG4gICAgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBSZW5kZXJGZWF0dXJlKSB7XHJcbiAgICAgIGxvY2FsRmVhdHVyZSA9IG5ldyBPbEZlYXR1cmUoe1xyXG4gICAgICAgIGdlb21ldHJ5OiB0aGlzLmdldEdlb21ldHJ5KGZlYXR1cmUpXHJcbiAgICAgIH0pO1xyXG4gICAgICBsb2NhbEZlYXR1cmUuc2V0SWQoZmVhdHVyZS5nZXRJZCgpKTtcclxuICAgIH0gZWxzZSBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIE9sRmVhdHVyZSkge1xyXG4gICAgICBsb2NhbEZlYXR1cmUgPSBmZWF0dXJlO1xyXG4gICAgfVxyXG4gICAgbG9jYWxGZWF0dXJlLnNldFByb3BlcnRpZXMoZmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkpO1xyXG4gICAgcmV0dXJuIGxvY2FsRmVhdHVyZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIGZlYXR1cmUgdG8gdGhlIHBvaW50ZXIgc3RvcmVcclxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZlYXR1cmVPdmVybGF5KGhvdmVyRW50aXR5OiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5bXSkge1xyXG4gICAgaWYgKGhvdmVyRW50aXR5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gaG92ZXJFbnRpdHlbMF07XHJcbiAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xyXG4gICAgICBjb25zdCBmZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XHJcbiAgICAgICAgZ2VvbWV0cnk6IHJlc3VsdC5nZXRHZW9tZXRyeSgpLFxyXG4gICAgICAgIG1ldGE6IHsgaWQ6IHRoaXMuaG92ZXJGZWF0dXJlSWQgfSxcclxuICAgICAgICBob3ZlclN1bW1hcnk6IHRoaXMuZ2V0SG92ZXJTdW1tYXJ5KHJlc3VsdC5nZXRQcm9wZXJ0aWVzKCkpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5zdG9yZS5zZXRMYXllck9sRmVhdHVyZXMoW2ZlYXR1cmVdLCBGZWF0dXJlTW90aW9uLk5vbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoXHJcbiAgICBpZ29MYXllcjogVmVjdG9yTGF5ZXIgfCBWZWN0b3JUaWxlTGF5ZXIsXHJcbiAgICBmZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cclxuICApIHtcclxuICAgIGNvbnN0IHJlc29sdXRpb24gPSB0aGlzLnN0b3JlLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKCk7XHJcbiAgICBpZiAoaWdvTGF5ZXI/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlPy5ob3ZlclN0eWxlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoXHJcbiAgICAgICAgdGhpcy5jcmVhdGVIb3ZlclN0eWxlKFxyXG4gICAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlLFxyXG4gICAgICAgICAgcmVzb2x1dGlvblxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5pZ29TdHlsZT8uaG92ZXJTdHlsZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKFxyXG4gICAgICAgIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcclxuICAgICAgICAgIGZlYXR1cmUsXHJcbiAgICAgICAgICBpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlLmhvdmVyU3R5bGUsXHJcbiAgICAgICAgICByZXNvbHV0aW9uXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIb3ZlclN1bW1hcnkocHJvcGVydGllcyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3VtbWFyeSA9ICcnO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykpIHtcclxuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnXycpICYmIGtleSAhPT0gJ2dlb21ldHJ5Jykge1xyXG4gICAgICAgIHN1bW1hcnkgKz0gYCR7a2V5fTogJHt2YWx1ZX1gICsgJ1xcbic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdW1tYXJ5Lmxlbmd0aCA+PSAyID8gc3VtbWFyeS5zbGljZSgwLCAtMikgOiBzdW1tYXJ5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRHZW9tZXRyeShmZWF0dXJlKTogT2xHZW9tLkdlb21ldHJ5IHtcclxuICAgIGxldCBnZW9tO1xyXG4gICAgaWYgKCFmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjb29yZHMgPSBmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKCk7XHJcbiAgICAgIGNvbnN0IGZsYXRDb29yZHMgPSBbXTtcclxuXHJcbiAgICAgIGNvb3Jkcy5mb3JFYWNoKChjLCBpZHgpID0+IHtcclxuICAgICAgICBpZiAoaWR4ICUgMiA9PT0gMCkge1xyXG4gICAgICAgICAgZmxhdENvb3Jkcy5wdXNoKFtcclxuICAgICAgICAgICAgcGFyc2VGbG9hdChjb29yZHNbaWR4XSksXHJcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoY29vcmRzW2lkeCArIDFdKVxyXG4gICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFRPRE86IHRlc3QgTXVsdGlYXHJcbiAgICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRUeXBlKCkpIHtcclxuICAgICAgICBjYXNlICdQb2ludCc6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2ludChmbGF0Q29vcmRzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1BvbHlnb24nOlxyXG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uUG9seWdvbihbZmxhdENvb3Jkc10pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XHJcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5MaW5lU3RyaW5nKFtmbGF0Q29vcmRzXSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBnZW9tO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIHBvaW50ZXIgc3RvcmUgZmVhdHVyZXNcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTGF5ZXIoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGF5ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlLmNsZWFyTGF5ZXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|