@igo2/geo 1.11.1 → 1.12.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/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/bundles/igo2-geo.umd.js +3043 -1236
- package/bundles/igo2-geo.umd.js.map +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-group.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser-layer.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +1 -1
- package/esm2015/lib/catalog/catalog-browser/catalog-browser.module.js +1 -1
- package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library-item.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +1 -1
- package/esm2015/lib/catalog/catalog-library/catalog-library.module.js +1 -1
- package/esm2015/lib/catalog/catalog.module.js +1 -1
- package/esm2015/lib/catalog/index.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.abstract.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.enum.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.interface.js +1 -1
- package/esm2015/lib/catalog/shared/catalog.service.js +113 -42
- package/esm2015/lib/catalog/shared/index.js +1 -1
- package/esm2015/lib/datasource/datasource.module.js +1 -1
- package/esm2015/lib/datasource/index.js +1 -1
- package/esm2015/lib/datasource/shared/capabilities.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasource.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/any-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/carto-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/cluster-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/data.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/feature-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/index.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/osm-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/tiledebug-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/websocket-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +4 -1
- package/esm2015/lib/datasource/shared/datasources/wfs.service.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +5 -2
- package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/wmts-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.interface.js +1 -1
- package/esm2015/lib/datasource/shared/datasources/xyz-datasource.js +1 -1
- package/esm2015/lib/datasource/shared/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/index.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.interface.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.providers.js +1 -1
- package/esm2015/lib/datasource/shared/options/options-api.service.js +1 -1
- package/esm2015/lib/datasource/shared/options/options.service.js +1 -1
- package/esm2015/lib/datasource/utils/esri-style-generator.js +1 -1
- package/esm2015/lib/datasource/utils/index.js +1 -1
- package/esm2015/lib/datasource/utils/tilegrid.js +1 -1
- package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +1 -1
- package/esm2015/lib/directions/directions-buttons/index.js +1 -1
- package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +1 -1
- package/esm2015/lib/directions/directions-inputs/index.js +1 -1
- package/esm2015/lib/directions/directions-results/directions-results.component.js +1 -1
- package/esm2015/lib/directions/directions-results/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.interface.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.js +1 -1
- package/esm2015/lib/directions/directions-sources/directions-source.provider.js +1 -1
- package/esm2015/lib/directions/directions-sources/index.js +1 -1
- package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +1 -1
- package/esm2015/lib/directions/directions.component.js +1 -1
- package/esm2015/lib/directions/directions.module.js +1 -1
- package/esm2015/lib/directions/index.js +1 -1
- package/esm2015/lib/directions/shared/directions-source.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.enum.js +1 -1
- package/esm2015/lib/directions/shared/directions.interface.js +1 -1
- package/esm2015/lib/directions/shared/directions.service.js +1 -1
- package/esm2015/lib/directions/shared/directions.utils.js +1 -1
- package/esm2015/lib/directions/shared/index.js +1 -1
- package/esm2015/lib/directions/shared/store.js +1 -1
- package/esm2015/lib/download/download-button/download-button.component.js +1 -1
- package/esm2015/lib/download/download-button/index.js +1 -1
- package/esm2015/lib/download/download.module.js +1 -1
- package/esm2015/lib/download/index.js +1 -1
- package/esm2015/lib/download/shared/download.interface.js +1 -1
- package/esm2015/lib/download/shared/download.service.js +1 -1
- package/esm2015/lib/download/shared/index.js +1 -1
- package/esm2015/lib/draw/draw/draw-popup.component.js +21 -15
- package/esm2015/lib/draw/draw/draw-shorcuts.component.js +1 -1
- package/esm2015/lib/draw/draw/draw.component.js +185 -77
- package/esm2015/lib/draw/draw/draw.module.js +1 -1
- package/esm2015/lib/draw/drawingTool.module.js +1 -1
- package/esm2015/lib/draw/index.js +1 -1
- package/esm2015/lib/draw/shared/draw-icon.service.js +1 -1
- package/esm2015/lib/draw/shared/draw-style.service.js +24 -5
- package/esm2015/lib/draw/shared/draw.enum.js +17 -1
- package/esm2015/lib/draw/shared/draw.interface.js +1 -1
- package/esm2015/lib/draw/shared/draw.utils.js +1 -1
- package/esm2015/lib/draw/shared/index.js +1 -1
- package/esm2015/lib/feature/feature-details/feature-details.component.js +119 -43
- package/esm2015/lib/feature/feature-details/feature-details.directive.js +2 -57
- package/esm2015/lib/feature/feature-details/feature-details.module.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.component.js +1 -1
- package/esm2015/lib/feature/feature-form/feature-form.module.js +1 -1
- package/esm2015/lib/feature/feature.module.js +1 -1
- package/esm2015/lib/feature/index.js +1 -1
- package/esm2015/lib/feature/shared/feature.enums.js +1 -1
- package/esm2015/lib/feature/shared/feature.interfaces.js +1 -1
- package/esm2015/lib/feature/shared/feature.utils.js +1 -1
- package/esm2015/lib/feature/shared/index.js +1 -1
- package/esm2015/lib/feature/shared/store.js +1 -1
- package/esm2015/lib/feature/shared/strategies/in-map-extent.js +1 -1
- package/esm2015/lib/feature/shared/strategies/in-map-resolution.js +1 -1
- package/esm2015/lib/feature/shared/strategies/index.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading-layer.js +1 -1
- package/esm2015/lib/feature/shared/strategies/loading.js +1 -1
- package/esm2015/lib/feature/shared/strategies/selection.js +1 -1
- package/esm2015/lib/feature/shared/strategies.utils.js +1 -1
- package/esm2015/lib/filter/filter.module.js +6 -3
- package/esm2015/lib/filter/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +32 -7
- package/esm2015/lib/filter/ogc-filter-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-form/ogc-filter-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +652 -290
- package/esm2015/lib/filter/ogc-filter-time/index.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.js +1 -1
- package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-form/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-form/ogc-filterable-form.component.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-item/ogc-filterable-item.component.js +3 -2
- package/esm2015/lib/filter/ogc-filterable-list/index.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/ogc-filterable-list/ogc-filterable-list.component.js +1 -1
- package/esm2015/lib/filter/shared/filterable-datasource.pipe.js +3 -2
- package/esm2015/lib/filter/shared/index.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter-time.service.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/ogc-filter.js +17 -6
- package/esm2015/lib/filter/shared/ogc-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/spatial-filter.service.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.enum.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.interface.js +1 -1
- package/esm2015/lib/filter/shared/time-filter.service.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/index.js +1 -1
- package/esm2015/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.js +1 -1
- package/esm2015/lib/filter/time-filter-button/index.js +1 -1
- package/esm2015/lib/filter/time-filter-button/time-filter-button.component.js +1 -1
- package/esm2015/lib/filter/time-filter-form/index.js +1 -1
- package/esm2015/lib/filter/time-filter-form/time-filter-form.component.js +1 -1
- package/esm2015/lib/filter/time-filter-item/index.js +1 -1
- package/esm2015/lib/filter/time-filter-item/time-filter-item.component.js +1 -1
- package/esm2015/lib/filter/time-filter-list/index.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list-binding.directive.js +1 -1
- package/esm2015/lib/filter/time-filter-list/time-filter-list.component.js +1 -1
- package/esm2015/lib/geo.module.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field-input.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.component.js +1 -1
- package/esm2015/lib/geometry/geometry-form-field/geometry-form-field.module.js +1 -1
- package/esm2015/lib/geometry/geometry.module.js +1 -1
- package/esm2015/lib/geometry/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/draw.js +1 -1
- package/esm2015/lib/geometry/shared/controls/index.js +1 -1
- package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
- package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.errors.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.interfaces.js +1 -1
- package/esm2015/lib/geometry/shared/geometry.utils.js +1 -1
- package/esm2015/lib/geometry/shared/index.js +1 -1
- package/esm2015/lib/import-export/export-button/export-button.component.js +1 -1
- package/esm2015/lib/import-export/export-button/index.js +1 -1
- package/esm2015/lib/import-export/import-export/import-export.component.js +1 -1
- package/esm2015/lib/import-export/import-export/index.js +1 -1
- package/esm2015/lib/import-export/import-export.module.js +1 -1
- package/esm2015/lib/import-export/index.js +1 -1
- package/esm2015/lib/import-export/shared/drop-geo-file.directive.js +1 -1
- package/esm2015/lib/import-export/shared/export.errors.js +1 -1
- package/esm2015/lib/import-export/shared/export.interface.js +1 -1
- package/esm2015/lib/import-export/shared/export.service.js +10 -2
- package/esm2015/lib/import-export/shared/export.type.js +1 -1
- package/esm2015/lib/import-export/shared/export.utils.js +1 -1
- package/esm2015/lib/import-export/shared/import.errors.js +1 -1
- package/esm2015/lib/import-export/shared/import.interface.js +1 -1
- package/esm2015/lib/import-export/shared/import.service.js +1 -1
- package/esm2015/lib/import-export/shared/import.utils.js +65 -38
- package/esm2015/lib/import-export/shared/index.js +1 -1
- package/esm2015/lib/import-export/style-list/index.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.interface.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.module.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.provider.js +1 -1
- package/esm2015/lib/import-export/style-list/style-list.service.js +1 -1
- package/esm2015/lib/layer/index.js +1 -1
- package/esm2015/lib/layer/layer-item/index.js +1 -1
- package/esm2015/lib/layer/layer-item/layer-item.component.js +15 -8
- package/esm2015/lib/layer/layer-legend/index.js +1 -1
- package/esm2015/lib/layer/layer-legend/layer-legend.component.js +6 -5
- package/esm2015/lib/layer/layer-legend-item/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-item/layer-legend-item.component.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/index.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-legend-list/layer-legend-list.component.js +1 -1
- package/esm2015/lib/layer/layer-list/index.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list-binding.directive.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list.component.js +1 -1
- package/esm2015/lib/layer/layer-list/layer-list.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/index.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.component.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.enum.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.interface.js +1 -1
- package/esm2015/lib/layer/layer-list-tool/layer-list-tool.service.js +1 -1
- package/esm2015/lib/layer/layer.module.js +1 -1
- package/esm2015/lib/layer/shared/clusterParam.js +1 -1
- package/esm2015/lib/layer/shared/index.js +1 -1
- package/esm2015/lib/layer/shared/layer.enums.js +1 -1
- package/esm2015/lib/layer/shared/layer.service.js +44 -20
- package/esm2015/lib/layer/shared/layers/any-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/any-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/image-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/index.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/tile-layer.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vector-layer.js +94 -43
- package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
- package/esm2015/lib/layer/shared/layers/vectortile-layer.js +1 -1
- package/esm2015/lib/layer/shared/style.service.js +80 -11
- package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
- package/esm2015/lib/layer/track-feature-button/index.js +1 -1
- package/esm2015/lib/layer/track-feature-button/track-feature-button.component.js +1 -1
- package/esm2015/lib/layer/utils/image-watcher.js +1 -1
- package/esm2015/lib/layer/utils/index.js +1 -1
- package/esm2015/lib/layer/utils/layer.utils.js +1 -1
- package/esm2015/lib/layer/utils/layerSync-watcher.js +1 -1
- package/esm2015/lib/layer/utils/outputLegend.js +5 -3
- package/esm2015/lib/layer/utils/tile-watcher.js +1 -1
- package/esm2015/lib/layer/utils/vector-watcher.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.animation.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/baselayers-switcher.component.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/index.js +1 -1
- package/esm2015/lib/map/baselayers-switcher/mini-basemap.component.js +1 -1
- package/esm2015/lib/map/geolocate-button/geolocate-button.component.js +52 -17
- package/esm2015/lib/map/geolocate-button/index.js +1 -1
- package/esm2015/lib/map/index.js +2 -1
- package/esm2015/lib/map/info-section/index.js +1 -1
- package/esm2015/lib/map/info-section/info-section.component.js +1 -1
- package/esm2015/lib/map/map-browser/index.js +1 -1
- package/esm2015/lib/map/map-browser/map-browser.component.js +2 -2
- package/esm2015/lib/map/map-center/index.js +1 -1
- package/esm2015/lib/map/map-center/map-center.component.js +1 -1
- package/esm2015/lib/map/map.module.js +6 -1
- package/esm2015/lib/map/menu-button/index.js +1 -1
- package/esm2015/lib/map/menu-button/menu-button.component.js +1 -1
- package/esm2015/lib/map/offline-button/index.js +1 -1
- package/esm2015/lib/map/offline-button/offline-button.component.js +1 -1
- package/esm2015/lib/map/rotation-button/index.js +1 -1
- package/esm2015/lib/map/rotation-button/rotation-button.component.js +1 -1
- package/esm2015/lib/map/shared/controllers/controller.js +1 -1
- package/esm2015/lib/map/shared/controllers/geolocation.js +295 -0
- package/esm2015/lib/map/shared/controllers/index.js +2 -1
- package/esm2015/lib/map/shared/controllers/view.js +17 -1
- package/esm2015/lib/map/shared/hover-feature.directive.js +8 -7
- package/esm2015/lib/map/shared/index.js +1 -1
- package/esm2015/lib/map/shared/map-pointer-position.directive.js +1 -1
- package/esm2015/lib/map/shared/map.enums.js +1 -1
- package/esm2015/lib/map/shared/map.interface.js +1 -1
- package/esm2015/lib/map/shared/map.js +14 -135
- package/esm2015/lib/map/shared/map.service.js +1 -1
- package/esm2015/lib/map/shared/map.utils.js +1 -1
- package/esm2015/lib/map/shared/mapOffline.directive.js +1 -1
- package/esm2015/lib/map/shared/projection.interfaces.js +1 -1
- package/esm2015/lib/map/shared/projection.service.js +1 -1
- package/esm2015/lib/map/shared/projection.utils.js +1 -1
- package/esm2015/lib/map/swipe-control/index.js +1 -1
- package/esm2015/lib/map/swipe-control/swipe-control.component.js +1 -1
- package/esm2015/lib/map/utils/layer-watcher.js +1 -1
- package/esm2015/lib/map/wake-lock-button/index.js +2 -0
- package/esm2015/lib/map/wake-lock-button/wake-lock-button.component.js +122 -0
- package/esm2015/lib/map/zoom-button/index.js +1 -1
- package/esm2015/lib/map/zoom-button/zoom-button.component.js +1 -1
- package/esm2015/lib/measure/index.js +1 -1
- package/esm2015/lib/measure/measure.module.js +1 -1
- package/esm2015/lib/measure/measurer/measure-format.pipe.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-dialog.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer-item.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer.component.js +1 -1
- package/esm2015/lib/measure/measurer/measurer.module.js +1 -1
- package/esm2015/lib/measure/shared/index.js +1 -1
- package/esm2015/lib/measure/shared/measure.enum.js +1 -1
- package/esm2015/lib/measure/shared/measure.interfaces.js +1 -1
- package/esm2015/lib/measure/shared/measure.utils.js +1 -1
- package/esm2015/lib/metadata/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/index.js +1 -1
- package/esm2015/lib/metadata/metadata-button/metadata-button.component.js +1 -1
- package/esm2015/lib/metadata/metadata.module.js +1 -1
- package/esm2015/lib/metadata/shared/index.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.interface.js +1 -1
- package/esm2015/lib/metadata/shared/metadata.service.js +1 -1
- package/esm2015/lib/offline/geoDB/geoDB.enums.js +6 -0
- package/esm2015/lib/offline/geoDB/geoDB.interface.js +2 -0
- package/esm2015/lib/offline/geoDB/geoDB.service.js +161 -0
- package/esm2015/lib/offline/geoDB/index.js +4 -0
- package/esm2015/lib/offline/index.js +3 -0
- package/esm2015/lib/offline/shared/geo-network.service.js +66 -0
- package/esm2015/lib/offline/shared/index.js +2 -0
- package/esm2015/lib/overlay/index.js +1 -1
- package/esm2015/lib/overlay/overlay.module.js +1 -1
- package/esm2015/lib/overlay/shared/index.js +1 -1
- package/esm2015/lib/overlay/shared/overlay-marker-style.utils.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.directive.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.enum.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.service.js +1 -1
- package/esm2015/lib/overlay/shared/overlay.utils.js +3 -3
- package/esm2015/lib/print/index.js +1 -1
- package/esm2015/lib/print/print/print.component.js +1 -1
- package/esm2015/lib/print/print-form/index.js +1 -1
- package/esm2015/lib/print/print-form/print-form.component.js +1 -1
- package/esm2015/lib/print/print.module.js +1 -1
- package/esm2015/lib/print/shared/index.js +1 -1
- package/esm2015/lib/print/shared/print.interface.js +1 -1
- package/esm2015/lib/print/shared/print.service.js +22 -16
- package/esm2015/lib/print/shared/print.type.js +1 -1
- package/esm2015/lib/query/index.js +1 -1
- package/esm2015/lib/query/query.module.js +5 -4
- package/esm2015/lib/query/shared/index.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.js +1 -1
- package/esm2015/lib/query/shared/query-search-source.providers.js +1 -1
- package/esm2015/lib/query/shared/query.directive.js +1 -1
- package/esm2015/lib/query/shared/query.enums.js +1 -1
- package/esm2015/lib/query/shared/query.interfaces.js +1 -1
- package/esm2015/lib/query/shared/query.service.js +33 -6
- package/esm2015/lib/query/shared/query.utils.js +1 -1
- package/esm2015/lib/search/index.js +1 -1
- package/esm2015/lib/search/search-bar/search-bar.component.js +1 -1
- package/esm2015/lib/search/search-bar/search-bar.module.js +1 -1
- package/esm2015/lib/search/search-bar/search-url-param.directive.js +1 -1
- package/esm2015/lib/search/search-results/search-results-add-button.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results-item.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.component.js +1 -1
- package/esm2015/lib/search/search-results/search-results.module.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.component.js +1 -1
- package/esm2015/lib/search/search-selector/search-selector.module.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.component.js +1 -1
- package/esm2015/lib/search/search-settings/search-settings.module.js +1 -1
- package/esm2015/lib/search/search.module.js +1 -1
- package/esm2015/lib/search/shared/index.js +1 -1
- package/esm2015/lib/search/shared/search-pointer-summary.directive.js +1 -1
- package/esm2015/lib/search/shared/search-source-service.providers.js +1 -1
- package/esm2015/lib/search/shared/search-source.service.js +1 -1
- package/esm2015/lib/search/shared/search.enums.js +1 -1
- package/esm2015/lib/search/shared/search.interfaces.js +1 -1
- package/esm2015/lib/search/shared/search.service.js +1 -1
- package/esm2015/lib/search/shared/search.utils.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.js +1 -1
- package/esm2015/lib/search/shared/sources/cadastre.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.js +1 -1
- package/esm2015/lib/search/shared/sources/coordinates.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.js +1 -1
- package/esm2015/lib/search/shared/sources/icherche.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.js +1 -1
- package/esm2015/lib/search/shared/sources/ilayer.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/index.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/nominatim.js +2 -2
- package/esm2015/lib/search/shared/sources/nominatim.providers.js +1 -1
- package/esm2015/lib/search/shared/sources/source.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/source.js +2 -2
- package/esm2015/lib/search/shared/sources/storedqueries.interfaces.js +1 -1
- package/esm2015/lib/search/shared/sources/storedqueries.js +1 -1
- package/esm2015/lib/search/shared/sources/storedqueries.providers.js +1 -1
- package/esm2015/lib/toast/index.js +1 -1
- package/esm2015/lib/toast/toast.component.js +1 -1
- package/esm2015/lib/toast/toast.module.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.interface.js +1 -1
- package/esm2015/lib/utils/commonVectorStyle.js +1 -1
- package/esm2015/lib/utils/googleLinks.js +1 -1
- package/esm2015/lib/utils/id-generator.js +1 -1
- package/esm2015/lib/utils/index.js +1 -1
- package/esm2015/lib/utils/osmLinks.js +1 -1
- package/esm2015/lib/wkt/index.js +1 -1
- package/esm2015/lib/wkt/shared/index.js +1 -1
- package/esm2015/lib/wkt/shared/wkt.service.js +15 -15
- package/esm2015/lib/wkt/wkt.module.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +1 -1
- package/esm2015/lib/workspace/confirmation-popup/index.js +1 -1
- package/esm2015/lib/workspace/index.js +1 -1
- package/esm2015/lib/workspace/shared/edition-workspace.js +12 -4
- package/esm2015/lib/workspace/shared/edition-workspace.service.js +40 -13
- package/esm2015/lib/workspace/shared/feature-workspace.js +1 -1
- package/esm2015/lib/workspace/shared/feature-workspace.service.js +10 -5
- package/esm2015/lib/workspace/shared/index.js +1 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.js +1 -1
- package/esm2015/lib/workspace/shared/wfs-workspace.service.js +10 -5
- package/esm2015/lib/workspace/shared/wms-workspace.service.js +31 -7
- package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
- package/esm2015/lib/workspace/widgets/index.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.component.js +1 -1
- package/esm2015/lib/workspace/widgets/ogc-filter/ogc-filter.module.js +1 -1
- package/esm2015/lib/workspace/widgets/widgets.js +1 -1
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +1 -1
- package/esm2015/lib/workspace/workspace-selector/workspace-selector.module.js +1 -1
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +1 -1
- package/esm2015/lib/workspace/workspace-updator/workspace-updator.module.js +1 -1
- package/esm2015/lib/workspace/workspace.module.js +1 -1
- package/esm2015/public_api.js +2 -1
- package/fesm2015/igo2-geo.js +2421 -937
- package/fesm2015/igo2-geo.js.map +1 -1
- package/lib/catalog/shared/catalog.interface.d.ts +9 -1
- package/lib/catalog/shared/catalog.service.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +7 -1
- package/lib/draw/draw/draw-popup.component.d.ts +4 -2
- package/lib/draw/draw/draw.component.d.ts +19 -2
- package/lib/draw/shared/draw-style.service.d.ts +6 -0
- package/lib/draw/shared/draw.enum.d.ts +15 -0
- package/lib/feature/feature-details/feature-details.component.d.ts +12 -2
- package/lib/feature/feature-details/feature-details.directive.d.ts +2 -13
- package/lib/filter/filter.module.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +31 -13
- package/lib/filter/shared/ogc-filter.interface.d.ts +19 -2
- package/lib/import-export/shared/import.utils.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +1 -0
- package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
- package/lib/layer/shared/layer.service.d.ts +6 -3
- package/lib/layer/shared/layers/layer.interface.d.ts +1 -0
- package/lib/layer/shared/layers/vector-layer.d.ts +5 -1
- package/lib/layer/shared/style.service.d.ts +38 -3
- package/lib/layer/shared/vector-style.interface.d.ts +11 -0
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +8 -1
- package/lib/map/index.d.ts +1 -0
- package/lib/map/map.module.d.ts +13 -12
- package/lib/map/shared/controllers/geolocation.d.ts +111 -0
- package/lib/map/shared/controllers/index.d.ts +1 -0
- package/lib/map/shared/controllers/view.d.ts +7 -0
- package/lib/map/shared/hover-feature.directive.d.ts +1 -1
- package/lib/map/shared/map.d.ts +6 -19
- package/lib/map/shared/map.interface.d.ts +0 -1
- package/lib/map/wake-lock-button/index.d.ts +1 -0
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -0
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -0
- package/lib/offline/geoDB/geoDB.interface.d.ts +9 -0
- package/lib/offline/geoDB/geoDB.service.d.ts +35 -0
- package/lib/offline/geoDB/index.d.ts +3 -0
- package/lib/offline/index.d.ts +2 -0
- package/lib/offline/shared/geo-network.service.d.ts +28 -0
- package/lib/offline/shared/index.d.ts +1 -0
- package/lib/print/shared/print.service.d.ts +3 -2
- package/lib/query/query.module.d.ts +2 -1
- package/lib/query/shared/query.service.d.ts +7 -1
- package/lib/workspace/shared/edition-workspace.d.ts +2 -1
- package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
- package/lib/workspace/shared/feature-workspace.service.d.ts +3 -2
- package/lib/workspace/shared/wfs-workspace.service.d.ts +3 -2
- package/lib/workspace/shared/wms-workspace.service.d.ts +5 -2
- package/ngcc.config.js +3 -3
- package/package.json +7 -5
- package/public_api.d.ts +1 -0
- package/style/geo.theming.scss +12 -12
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './ogc-filter-time.component';
|
|
2
2
|
export * from './ogc-filter-time-slider.component';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlci10aW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb2djLWZpbHRlci10aW1lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQnO1xyXG4iXX0=
|
|
@@ -182,4 +182,4 @@ OgcFilterTimeSliderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
|
|
|
182
182
|
type: ViewChild,
|
|
183
183
|
args: [MatSlider]
|
|
184
184
|
}] }); })();
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlci10aW1lL29nYy1maWx0ZXItdGltZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL29nYy1maWx0ZXItdGltZS9vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUNyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsTUFBTSxPQUFPLDRCQUE0QjtJQWdEdkMsWUFBbUIsb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUEzQ25ELG1CQUFjLEdBSW5CLElBQUksWUFBWSxFQUFPLENBQUM7UUFJN0IsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDbEIsMEJBQXFCLEdBQVcsb0JBQW9CLENBQUM7UUFDckQsMkJBQXNCLEdBQVcsSUFBSSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxhQUFhLENBQUM7UUFDekIsY0FBUyxHQUFHLFFBQVEsQ0FBQztRQStCMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQTlCRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJ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U0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL29nYy1maWx0ZXItdGltZS5zZXJ2aWNlJztcblxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTWF0U2xpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29nYy1maWx0ZXItdGltZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT2djRmlsdGVyVGltZVNsaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRGaWx0ZXI6IGFueTtcbiAgQElucHV0KCkgYmVnaW46IGFueTtcbiAgQElucHV0KCkgbWF4OiBhbnk7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2U6IGFueTtcbiAgQE91dHB1dCgpIGNoYW5nZVByb3BlcnR5OiBFdmVudEVtaXR0ZXI8e1xuICAgIHZhbHVlOiBhbnk7XG4gICAgcG9zOiBudW1iZXI7XG4gICAgcmVmcmVzaEZpbHRlcjogYm9vbGVhbjtcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZChNYXRTbGlkZXIpIHNsaWRlcjogTWF0U2xpZGVyO1xuXG4gIGludGVydmFsO1xuICBzbGlkZXJWYWx1ZTogbnVtYmVyID0gMTtcbiAgY2FsY3VsYXRlZFN0ZXA6IG51bWJlciA9IDA7XG4gIHJlYWRvbmx5IF9kZWZhdWx0RGlzcGxheUZvcm1hdDogc3RyaW5nID0gJ0REL01NL1lZWVkgSEg6bW0gQSc7XG4gIHJlYWRvbmx5IF9kZWZhdWx0U2xpZGVySW50ZXJ2YWw6IG51bWJlciA9IDIwMDA7XG4gIHB1YmxpYyBwbGF5SWNvbiA9ICdwbGF5LWNpcmNsZSc7XG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcblxuICBnZXQgc2xpZGVySW50ZXJ2YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcbiAgICAgID8gdGhpcy5fZGVmYXVsdFNsaWRlckludGVydmFsXG4gICAgICA6IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJJbnRlcnZhbDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zPy5kaXNwbGF5Rm9ybWF0KXtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucy5kaXNwbGF5Rm9ybWF0O1xuICAgIH1cbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIuZGlzcGxheUZvcm1hdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHREaXNwbGF5Rm9ybWF0O1xuICB9XG5cbiAgZ2V0IGJlZ2luTWlsbGlzZWNvbmQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5kYXRlVG9OdW1iZXIodGhpcy5iZWdpbik7XG4gIH1cblxuICBnZXQgbWF4TWlsbGlzZWNvbmQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5kYXRlVG9OdW1iZXIodGhpcy5tYXgpO1xuICB9XG5cbiAgZ2V0IHN0ZXBNaWxsaXNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBNaWxsaXNlY29uZCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb2djRmlsdGVyVGltZVNlcnZpY2U6IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlKSB7XG4gICAgdGhpcy5zbGlkZXJEaXNwbGF5V2l0aCA9IHRoaXMuc2xpZGVyRGlzcGxheVdpdGguYmluZCh0aGlzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCl7XG4gICAgdGhpcy5jYWxjdWxhdGVTdGVwKCk7XG4gICAgdGhpcy5oYW5kbGVTbGlkZXJJbnB1dCh7dmFsdWU6IDF9KTtcbiAgfVxuXG4gIHNsaWRlckRpc3BsYXlXaXRoKHZhbHVlKSB7XG4gICAgbGV0IGRhdGVUbXAgPSBuZXcgRGF0ZSh0aGlzLmJlZ2luTWlsbGlzZWNvbmQgKyAoKHZhbHVlIC0gMSkgKiB0aGlzLnN0ZXBNaWxsaXNlY29uZCkpO1xuXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpKSB7XG4gICAgICBjb25zdCB0b0FkZCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKS55ZWFycygpO1xuICAgICAgZGF0ZVRtcCA9IG1vbWVudCh0aGlzLmJlZ2luTWlsbGlzZWNvbmQpLmFkZCgodmFsdWUgLSAxKSAqIHRvQWRkLCAneWVhcicpLnRvRGF0ZSgpO1xuICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKSkge1xuICAgICAgY29uc3QgdG9BZGQgPSBtb21lbnQuZHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkubW9udGhzKCk7XG4gICAgICBkYXRlVG1wID0gbW9tZW50KHRoaXMuYmVnaW5NaWxsaXNlY29uZCkuYWRkKCh2YWx1ZSAtIDEpICogdG9BZGQsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnQoZGF0ZVRtcCkuZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7XG4gIH1cblxuICBwbGF5RmlsdGVyKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgdGhpcy5zdG9wRmlsdGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxheUljb24gPSAncGF1c2UtY2lyY2xlJztcbiAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChcbiAgICAgICAgdGhhdCA9PiB7XG5cbiAgICAgICAgICBpZiAodGhpcy5zbGlkZXIudmFsdWUgPCB0aGlzLmNhbGN1bGF0ZWRTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCBfaW5jcmVtZW50ID0gJ19pbmNyZW1lbnQnO1xuICAgICAgICAgICAgY29uc3QgX2VtaXRJbnB1dEV2ZW50ID0gJ19lbWl0SW5wdXRFdmVudCc7XG4gICAgICAgICAgICB0aGlzLnNsaWRlcltfaW5jcmVtZW50XSgxKTtcbiAgICAgICAgICAgIHRoaXMuc2xpZGVyW19lbWl0SW5wdXRFdmVudF0oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdG9wRmlsdGVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnNsaWRlckludGVydmFsLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BGaWx0ZXIoKSB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wbGF5SWNvbiA9ICdwbGF5LWNpcmNsZSc7XG4gIH1cblxuICByZXNldEZpbHRlcihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wbGF5SWNvbiA9ICdwbGF5LWNpcmNsZSc7XG4gICAgdGhpcy5zbGlkZXIudmFsdWUgPSAxO1xuICAgIGNvbnN0IF9pbmNyZW1lbnQgPSAnX2luY3JlbWVudCc7XG4gICAgY29uc3QgX2VtaXRJbnB1dEV2ZW50ID0gJ19lbWl0SW5wdXRFdmVudCc7XG4gICAgdGhpcy5zbGlkZXJbX2VtaXRJbnB1dEV2ZW50XSgpO1xuICB9XG5cbiAgaGFuZGxlU2xpZGVySW5wdXQobWF0U2xpZGVyQ2hhbmdlKSB7XG4gICAgaWYgKG1hdFNsaWRlckNoYW5nZSkge1xuXG4gICAgICBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpICkge1xuICAgICAgICBjb25zdCB0b0FkZCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKS55ZWFycygpO1xuICAgICAgICBjb25zdCBkYXRlQmVnaW5UbXAgPSBtb21lbnQodGhpcy5iZWdpbk1pbGxpc2Vjb25kKS5hZGQoKG1hdFNsaWRlckNoYW5nZS52YWx1ZSAtIDEpICogdG9BZGQsICd5ZWFyJykudG9EYXRlKCk7XG4gICAgICAgIGNvbnN0IGRhdGVFbmRUbXAgPSBtb21lbnQoZGF0ZUJlZ2luVG1wKS5hZGQodG9BZGQsICd5ZWFyJykudG9EYXRlKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7dmFsdWU6IG1vbWVudChkYXRlQmVnaW5UbXApLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDEsIHJlZnJlc2hGaWx0ZXI6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7dmFsdWU6IG1vbWVudChkYXRlRW5kVG1wKS50b0RhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zOiAyLCByZWZyZXNoRmlsdGVyOiB0cnVlfSk7XG5cbiAgICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKSApIHtcbiAgICAgICAgY29uc3QgdG9BZGQgPSBtb21lbnQuZHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkubW9udGhzKCk7XG4gICAgICAgIGNvbnN0IGRhdGVCZWdpblRtcCA9IG1vbWVudCh0aGlzLmJlZ2luTWlsbGlzZWNvbmQpLmFkZCgobWF0U2xpZGVyQ2hhbmdlLnZhbHVlIC0gMSkgKiB0b0FkZCwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGNvbnN0IGRhdGVFbmRUbXAgPSBtb21lbnQoZGF0ZUJlZ2luVG1wKS5hZGQodG9BZGQsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoe3ZhbHVlOiBtb21lbnQoZGF0ZUJlZ2luVG1wKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDEsIHJlZnJlc2hGaWx0ZXI6IGZhbHNlfSk7XG4gICAgICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7dmFsdWU6IG1vbWVudChkYXRlRW5kVG1wKS50b0RhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zOiAyLCByZWZyZXNoRmlsdGVyOiB0cnVlfSk7XG5cbiAgICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzRGF5RHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkgfHxcbiAgICAgICAgICB0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0hvdXJEdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKSB8fFxuICAgICAgICAgIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkgKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlVG1wID0gbmV3IERhdGUodGhpcy5iZWdpbk1pbGxpc2Vjb25kICsgKHRoaXMuc3RlcE1pbGxpc2Vjb25kICogKG1hdFNsaWRlckNoYW5nZS52YWx1ZSAtIDEpKSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoe3ZhbHVlOiBkYXRlVG1wLnRvSVNPU3RyaW5nKCksIHBvczogMSwgcmVmcmVzaEZpbHRlcjogZmFsc2V9KTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7dmFsdWU6IG5ldyBEYXRlKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2UuYWRkU3RlcChkYXRlVG1wLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwTWlsbGlzZWNvbmQpKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogMiwgcmVmcmVzaEZpbHRlcjogdHJ1ZX0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZVN0ZXAoKXtcbiAgICBmb3IgKGxldCBpID0gMTsgKHRoaXMubWF4TWlsbGlzZWNvbmQgLSAodGhpcy5iZWdpbk1pbGxpc2Vjb25kICsgKGkgKiB0aGlzLnN0ZXBNaWxsaXNlY29uZCkpKSA+PSAtMTsgaSsrKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZWRTdGVwID0gaTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInNsaWRlci1jb250YWluZXJcIj5cbiAgPG1hdC1zbGlkZXJcbiAgICBpZD1cInRpbWUtc2xpZGVyXCJcbiAgICBbc3RlcF09XCIxXCJcbiAgICBbbWluXT1cIjFcIlxuICAgIFttYXhdPVwiY2FsY3VsYXRlZFN0ZXBcIlxuICAgIFsobmdNb2RlbCldPVwic2xpZGVyVmFsdWVcIlxuICAgIFtkaXNwbGF5V2l0aF09XCJzbGlkZXJEaXNwbGF5V2l0aFwiXG4gICAgKGlucHV0KT1cImhhbmRsZVNsaWRlcklucHV0KCRldmVudClcIlxuICAgIHRodW1iTGFiZWxcbiAgICA+XG4gIDwvbWF0LXNsaWRlcj5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInBsYXlGaWx0ZXIoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJwbGF5SWNvblwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicmVzZXRGaWx0ZXIoJGV2ZW50KVwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICBcbjwvZGl2PiJdfQ==
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlci10aW1lL29nYy1maWx0ZXItdGltZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL29nYy1maWx0ZXItdGltZS9vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQUNyRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsTUFBTSxPQUFPLDRCQUE0QjtJQWdEdkMsWUFBbUIsb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUEzQ25ELG1CQUFjLEdBSW5CLElBQUksWUFBWSxFQUFPLENBQUM7UUFJN0IsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDbEIsMEJBQXFCLEdBQVcsb0JBQW9CLENBQUM7UUFDckQsMkJBQXNCLEdBQVcsSUFBSSxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxhQUFhLENBQUM7UUFDekIsY0FBUyxHQUFHLFFBQVEsQ0FBQztRQStCMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQTlCRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJ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U0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPR0NGaWx0ZXJUaW1lU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLXRpbWUuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE1hdFNsaWRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlcic7XHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vb2djLWZpbHRlci10aW1lLXNsaWRlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJUaW1lU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBjdXJyZW50RmlsdGVyOiBhbnk7XHJcbiAgQElucHV0KCkgYmVnaW46IGFueTtcclxuICBASW5wdXQoKSBtYXg6IGFueTtcclxuICBASW5wdXQoKSBkYXRhc291cmNlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNoYW5nZVByb3BlcnR5OiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIHBvczogbnVtYmVyO1xyXG4gICAgcmVmcmVzaEZpbHRlcjogYm9vbGVhbjtcclxuICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U2xpZGVyKSBzbGlkZXI6IE1hdFNsaWRlcjtcclxuXHJcbiAgaW50ZXJ2YWw7XHJcbiAgc2xpZGVyVmFsdWU6IG51bWJlciA9IDE7XHJcbiAgY2FsY3VsYXRlZFN0ZXA6IG51bWJlciA9IDA7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHREaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSAnREQvTU0vWVlZWSBISDptbSBBJztcclxuICByZWFkb25seSBfZGVmYXVsdFNsaWRlckludGVydmFsOiBudW1iZXIgPSAyMDAwO1xyXG4gIHB1YmxpYyBwbGF5SWNvbiA9ICdwbGF5LWNpcmNsZSc7XHJcbiAgcHVibGljIHJlc2V0SWNvbiA9ICdyZXBsYXknO1xyXG5cclxuICBnZXQgc2xpZGVySW50ZXJ2YWwoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVySW50ZXJ2YWwgPT09IHVuZGVmaW5lZFxyXG4gICAgICA/IHRoaXMuX2RlZmF1bHRTbGlkZXJJbnRlcnZhbFxyXG4gICAgICA6IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJJbnRlcnZhbDtcclxuICB9XHJcblxyXG4gIGdldCBkaXNwbGF5Rm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmRpc3BsYXlGb3JtYXQpe1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZGlzcGxheUZvcm1hdDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuZGlzcGxheUZvcm1hdCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdERpc3BsYXlGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBnZXQgYmVnaW5NaWxsaXNlY29uZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2UuZGF0ZVRvTnVtYmVyKHRoaXMuYmVnaW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heE1pbGxpc2Vjb25kKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5kYXRlVG9OdW1iZXIodGhpcy5tYXgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHN0ZXBNaWxsaXNlY29uZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcE1pbGxpc2Vjb25kKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvZ2NGaWx0ZXJUaW1lU2VydmljZTogT0dDRmlsdGVyVGltZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2xpZGVyRGlzcGxheVdpdGggPSB0aGlzLnNsaWRlckRpc3BsYXlXaXRoLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5jYWxjdWxhdGVTdGVwKCk7XHJcbiAgICB0aGlzLmhhbmRsZVNsaWRlcklucHV0KHt2YWx1ZTogMX0pO1xyXG4gIH1cclxuXHJcbiAgc2xpZGVyRGlzcGxheVdpdGgodmFsdWUpIHtcclxuICAgIGxldCBkYXRlVG1wID0gbmV3IERhdGUodGhpcy5iZWdpbk1pbGxpc2Vjb25kICsgKCh2YWx1ZSAtIDEpICogdGhpcy5zdGVwTWlsbGlzZWNvbmQpKTtcclxuXHJcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNZZWFyRHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkpIHtcclxuICAgICAgY29uc3QgdG9BZGQgPSBtb21lbnQuZHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkueWVhcnMoKTtcclxuICAgICAgZGF0ZVRtcCA9IG1vbWVudCh0aGlzLmJlZ2luTWlsbGlzZWNvbmQpLmFkZCgodmFsdWUgLSAxKSAqIHRvQWRkLCAneWVhcicpLnRvRGF0ZSgpO1xyXG4gICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNNb250aER1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpKSB7XHJcbiAgICAgIGNvbnN0IHRvQWRkID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpLm1vbnRocygpO1xyXG4gICAgICBkYXRlVG1wID0gbW9tZW50KHRoaXMuYmVnaW5NaWxsaXNlY29uZCkuYWRkKCh2YWx1ZSAtIDEpICogdG9BZGQsICdtb250aCcpLnRvRGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtb21lbnQoZGF0ZVRtcCkuZm9ybWF0KHRoaXMuZGlzcGxheUZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBwbGF5RmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIHRoaXMuc3RvcEZpbHRlcigpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wbGF5SWNvbiA9ICdwYXVzZS1jaXJjbGUnO1xyXG4gICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoXHJcbiAgICAgICAgdGhhdCA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc2xpZGVyLnZhbHVlIDwgdGhpcy5jYWxjdWxhdGVkU3RlcCkge1xyXG4gICAgICAgICAgICBjb25zdCBfaW5jcmVtZW50ID0gJ19pbmNyZW1lbnQnO1xyXG4gICAgICAgICAgICBjb25zdCBfZW1pdElucHV0RXZlbnQgPSAnX2VtaXRJbnB1dEV2ZW50JztcclxuICAgICAgICAgICAgdGhpcy5zbGlkZXJbX2luY3JlbWVudF0oMSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVyW19lbWl0SW5wdXRFdmVudF0oKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEZpbHRlcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy5zbGlkZXJJbnRlcnZhbCxcclxuICAgICAgICB0aGlzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wRmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW50ZXJ2YWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnBsYXlJY29uID0gJ3BsYXktY2lyY2xlJztcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmludGVydmFsID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5wbGF5SWNvbiA9ICdwbGF5LWNpcmNsZSc7XHJcbiAgICB0aGlzLnNsaWRlci52YWx1ZSA9IDE7XHJcbiAgICBjb25zdCBfaW5jcmVtZW50ID0gJ19pbmNyZW1lbnQnO1xyXG4gICAgY29uc3QgX2VtaXRJbnB1dEV2ZW50ID0gJ19lbWl0SW5wdXRFdmVudCc7XHJcbiAgICB0aGlzLnNsaWRlcltfZW1pdElucHV0RXZlbnRdKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVTbGlkZXJJbnB1dChtYXRTbGlkZXJDaGFuZ2UpIHtcclxuICAgIGlmIChtYXRTbGlkZXJDaGFuZ2UpIHtcclxuXHJcbiAgICAgIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNZZWFyRHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkgKSB7XHJcbiAgICAgICAgY29uc3QgdG9BZGQgPSBtb21lbnQuZHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkueWVhcnMoKTtcclxuICAgICAgICBjb25zdCBkYXRlQmVnaW5UbXAgPSBtb21lbnQodGhpcy5iZWdpbk1pbGxpc2Vjb25kKS5hZGQoKG1hdFNsaWRlckNoYW5nZS52YWx1ZSAtIDEpICogdG9BZGQsICd5ZWFyJykudG9EYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZGF0ZUVuZFRtcCA9IG1vbWVudChkYXRlQmVnaW5UbXApLmFkZCh0b0FkZCwgJ3llYXInKS50b0RhdGUoKTtcclxuICAgICAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoe3ZhbHVlOiBtb21lbnQoZGF0ZUJlZ2luVG1wKS50b0RhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDEsIHJlZnJlc2hGaWx0ZXI6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHt2YWx1ZTogbW9tZW50KGRhdGVFbmRUbXApLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogMiwgcmVmcmVzaEZpbHRlcjogdHJ1ZX0pO1xyXG5cclxuICAgICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNNb250aER1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpICkge1xyXG4gICAgICAgIGNvbnN0IHRvQWRkID0gbW9tZW50LmR1cmF0aW9uKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcCh0aGlzLmRhdGFzb3VyY2UsIHRoaXMuY3VycmVudEZpbHRlcikpLm1vbnRocygpO1xyXG4gICAgICAgIGNvbnN0IGRhdGVCZWdpblRtcCA9IG1vbWVudCh0aGlzLmJlZ2luTWlsbGlzZWNvbmQpLmFkZCgobWF0U2xpZGVyQ2hhbmdlLnZhbHVlIC0gMSkgKiB0b0FkZCwgJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZGF0ZUVuZFRtcCA9IG1vbWVudChkYXRlQmVnaW5UbXApLmFkZCh0b0FkZCwgJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHt2YWx1ZTogbW9tZW50KGRhdGVCZWdpblRtcCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDEsIHJlZnJlc2hGaWx0ZXI6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHt2YWx1ZTogbW9tZW50KGRhdGVFbmRUbXApLnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvczogMiwgcmVmcmVzaEZpbHRlcjogdHJ1ZX0pO1xyXG5cclxuICAgICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNEYXlEdXJhdGlvbih0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXAodGhpcy5kYXRhc291cmNlLCB0aGlzLmN1cnJlbnRGaWx0ZXIpKSB8fFxyXG4gICAgICAgICAgdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkgfHxcclxuICAgICAgICAgIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwKHRoaXMuZGF0YXNvdXJjZSwgdGhpcy5jdXJyZW50RmlsdGVyKSkgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGVUbXAgPSBuZXcgRGF0ZSh0aGlzLmJlZ2luTWlsbGlzZWNvbmQgKyAodGhpcy5zdGVwTWlsbGlzZWNvbmQgKiAobWF0U2xpZGVyQ2hhbmdlLnZhbHVlIC0gMSkpKTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHt2YWx1ZTogZGF0ZVRtcC50b0lTT1N0cmluZygpLCBwb3M6IDEsIHJlZnJlc2hGaWx0ZXI6IGZhbHNlfSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dCh7dmFsdWU6IG5ldyBEYXRlKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2UuYWRkU3RlcChkYXRlVG1wLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0ZXBNaWxsaXNlY29uZCkpLnRvSVNPU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M6IDIsIHJlZnJlc2hGaWx0ZXI6IHRydWV9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FsY3VsYXRlU3RlcCgpe1xyXG4gICAgZm9yIChsZXQgaSA9IDE7ICh0aGlzLm1heE1pbGxpc2Vjb25kIC0gKHRoaXMuYmVnaW5NaWxsaXNlY29uZCArIChpICogdGhpcy5zdGVwTWlsbGlzZWNvbmQpKSkgPj0gLTE7IGkrKykge1xyXG4gICAgICB0aGlzLmNhbGN1bGF0ZWRTdGVwID0gaTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCI+XHJcbiAgPG1hdC1zbGlkZXJcclxuICAgIGlkPVwidGltZS1zbGlkZXJcIlxyXG4gICAgW3N0ZXBdPVwiMVwiXHJcbiAgICBbbWluXT1cIjFcIlxyXG4gICAgW21heF09XCJjYWxjdWxhdGVkU3RlcFwiXHJcbiAgICBbKG5nTW9kZWwpXT1cInNsaWRlclZhbHVlXCJcclxuICAgIFtkaXNwbGF5V2l0aF09XCJzbGlkZXJEaXNwbGF5V2l0aFwiXHJcbiAgICAoaW5wdXQpPVwiaGFuZGxlU2xpZGVySW5wdXQoJGV2ZW50KVwiXHJcbiAgICB0aHVtYkxhYmVsXHJcbiAgICA+XHJcbiAgPC9tYXQtc2xpZGVyPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJwbGF5RmlsdGVyKCRldmVudClcIj5cclxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJwbGF5SWNvblwiPjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInJlc2V0RmlsdGVyKCRldmVudClcIj5cclxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgXHJcbjwvZGl2PiJdfQ==
|
|
@@ -895,4 +895,4 @@ OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
|
|
|
895
895
|
type: ViewChild,
|
|
896
896
|
args: ['endTime']
|
|
897
897
|
}] }); })();
|
|
898
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVF4RSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0lDakJoQywyQ0FHZ0M7SUFEOUIsOE9BQXdCLGtOQUFBO0lBRXhCLFlBQ0Y7O0lBQUEsaUJBQW1COzs7SUFIakIsMkNBQXdCO0lBRXhCLGVBQ0Y7SUFERSx1RkFDRjs7OztJQUVBLDhCQUFpRDtJQUMvQyxxREFNQztJQURDLHNQQUErQztJQUVqRCxpQkFBNkI7SUFFL0IsaUJBQU07OztJQVJGLGVBQW9CO0lBQXBCLHlDQUFvQixxRUFBQSx1Q0FBQSxpQ0FBQTs7OztJQVl0Qiw4QkFBMkQ7SUFHekQsMENBQW9DO0lBQ2xDLGlDQUFXO0lBQUEsWUFBNkM7O0lBQUEsaUJBQVk7SUFDcEUsaUNBTUc7SUFGRCw2UEFBd0QsT0FBTyxLQUFFO0lBSm5FLGlCQU1HO0lBQ0gsNENBQWlIO0lBRWpILDhDQU1HO0lBREQsMlFBQXNELE9BQU8sS0FBRTtJQUVqRSxpQkFBaUI7SUFFakIsZ0NBU0c7SUFDTCxpQkFBaUI7SUFF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QyxtQkFBbUI7WUFDSSxtQkFBbUI7a0JBQXBELFNBQVM7bUJBQUMscUJBQXFCO1lBQ1IsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0EsT0FBTztrQkFBNUIsU0FBUzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvciB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IE9HQ0ZpbHRlclRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL29nYy1maWx0ZXItdGltZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlckR1cmluZ09wdGlvbnNcbn0gZnJvbSAnLi4vc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcblxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLW9nYy1maWx0ZXItdGltZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9vZ2MtZmlsdGVyLXRpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXRpbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XG4gIEBJbnB1dCgpIGN1cnJlbnRGaWx0ZXI6IGFueTtcbiAgQE91dHB1dCgpIGNoYW5nZVByb3BlcnR5OiBFdmVudEVtaXR0ZXI8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgcG9zOiBudW1iZXI7XG4gICAgcmVmcmVzaEZpbHRlcjogYm9vbGVhbjtcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBiZWdpbkhvdXJzOiBudW1iZXJbXTtcbiAgZW5kSG91cnM6IG51bWJlcltdO1xuICBiZWdpbk1pbnV0ZXM6IG51bWJlcltdO1xuICBlbmRNaW51dGVzOiBudW1iZXJbXTtcbiAgYmVnaW5Ib3VyRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgYmVnaW5NaW51dGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBlbmRIb3VyRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgZW5kTWludXRlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgX2JlZ2luVmFsdWU6IERhdGU7XG4gIF9lbmRWYWx1ZTogRGF0ZTtcbiAgcmVhZG9ubHkgX2RlZmF1bHRNaW46IHN0cmluZyA9ICcxOTAwLTAxLTAxJztcbiAgcmVhZG9ubHkgX2RlZmF1bHRNYXg6IHN0cmluZyA9ICcyMDUyLTAxLTA2JztcbiAgcmVhZG9ubHkgX2RlZmF1bHREaXNwbGF5Rm9ybWF0OiBzdHJpbmcgPSAnREQvTU0vWVlZWSBISDptbSBBJztcbiAgcmVhZG9ubHkgX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIG9nY0ZpbHRlck9wZXJhdG9yID0gT2djRmlsdGVyT3BlcmF0b3I7XG4gIHB1YmxpYyBzbGlkZXJNb2RlID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdFN0ZXBNaWxsaXNlY29uZCA9IDYwMDAwO1xuICBwdWJsaWMgb3B0aW9uczogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zO1xuXG4gIHB1YmxpYyBvbmx5WWVhckJlZ2luOiBudW1iZXI7XG4gIHB1YmxpYyBvbmx5WWVhckVuZDogbnVtYmVyO1xuICBwdWJsaWMgY2FsZW5kYXJUeXBlWWVhciA9IGZhbHNlO1xuICBwdWJsaWMgcmVzZXRJY29uID0gJ3JlcGxheSc7XG4gIHB1YmxpYyBmaWx0ZXJTdGF0ZURpc2FibGU6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZXBpY2tlclRpbWUnKSBlbmREYXRlcGlja2VyVGltZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnYmVnaW5EYXRlcGlja2VyVGltZScpIGJlZ2luRGF0ZXBpY2tlclRpbWU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2JlZ2luVGltZScpIGJlZ2luVGltZTogSFRNTElucHV0RWxlbWVudDtcbiAgQFZpZXdDaGlsZCgnZW5kVGltZScpIGVuZFRpbWU6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgZ2V0IHN0ZXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMuc3RlcERhdGVcbiAgICAgID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMuc3RlcERhdGVcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnN0ZXA7XG4gIH1cblxuICBnZXQgc3RlcE1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xuICAgIGNvbnN0IHN0ZXAgPSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc01pbGxpc2Vjb25kcygpO1xuICAgIHJldHVybiBzdGVwID09PSAwID8gdGhpcy5kZWZhdWx0U3RlcE1pbGxpc2Vjb25kIDogc3RlcDtcbiAgfVxuXG4gIHNldCBiZWdpblZhbHVlKGJlZ2luOiBEYXRlKSB7XG4gICAgdGhpcy5fYmVnaW5WYWx1ZSA9IGJlZ2luO1xuICB9XG5cbiAgZ2V0IGJlZ2luVmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2JlZ2luVmFsdWU7XG4gIH1cblxuICBzZXQgZW5kVmFsdWUoZW5kOiBEYXRlKSB7XG4gICAgdGhpcy5fZW5kVmFsdWUgPSBlbmQ7XG4gIH1cblxuICBnZXQgZW5kVmFsdWUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZFZhbHVlO1xuICB9XG5cbiAgZ2V0IHNsaWRlckludGVydmFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJJbnRlcnZhbCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IDIwMDBcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUgOiB0aGlzLl9kZWZhdWx0TWF4O1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQgPyB0aGlzLmN1cnJlbnRGaWx0ZXIuZGlzcGxheUZvcm1hdCA6IHRoaXMuX2RlZmF1bHREaXNwbGF5Rm9ybWF0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9nY0ZpbHRlclRpbWVTZXJ2aWNlOiBPR0NGaWx0ZXJUaW1lU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpe1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucykge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA9IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgOiB0aGlzLl9kZWZhdWx0U2xpZGVyTW9kZUVuYWJsZWQ7XG4gICAgfVxuICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5oYW5kbGVNaW4oKSk7XG4gICAgdGhpcy5lbmRWYWx1ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5oYW5kbGVNYXgoKSk7XG5cbiAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICB0aGlzLm9ubHlZZWFyRW5kID0gdGhpcy5lbmRWYWx1ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgIHRoaXMuY2FsZW5kYXJUeXBlWWVhciA9IHRoaXMuaXNDYWxlbmRhclllYXJNb2RlKCk7XG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcbiAgICB0aGlzLnVwZGF0ZUhvdXJzTWludXRlc0FycmF5KCk7XG4gICAgLy8gdXBkYXRlIHZhbHVlIGZvciBub3cgdmFsdWVcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xuICB9XG5cbiAgcGFyc2VGaWx0ZXIoZmlsdGVyKTogRGF0ZSB7XG4gICAgaWYgKCFmaWx0ZXIpe1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfSBlbHNlIGlmICggaXNOYU4oIG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpICkgKcKge1xuICAgICAgaWYgKGZpbHRlci5zZWFyY2goJ25vdycpID49IDAgKcKge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IGZpbHRlci5tYXRjaCgveWVhcnN8bW9udGhzfHdlZWtzfGRheXN8aG91cnN8c2Vjb25kcy8pO1xuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXCsvKSkge1xuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoXG4gICAgICAgICAgICBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5zZWFyY2goJysnKSArIDEsIGludGVydmFsLmluZGV4KSxcbiAgICAgICAgICAgIDEwXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KCkuYWRkKGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlci5tYXRjaCgvXFwtLykpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KFxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXG4gICAgICAgICAgICAxMFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgndG9kYXknKSA+PSAwKXtcbiAgICAgICAgY29uc3QgX25vdyA9IG1vbWVudCgpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcbiAgICAgICAgaWYgKCBmaWx0ZXIubWF0Y2goL1xcKy8pICkge1xuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoIGZpbHRlci5zdWJzdHJpbmcoZmlsdGVyLnNlYXJjaCgnKycpICsgMSwgaW50ZXJ2YWwuaW5kZXgpLCAxMCApO1xuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuYWRkKGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBmaWx0ZXIubWF0Y2goL1xcLS8pICkge1xuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksIDEwKTtcbiAgICAgICAgICByZXR1cm4gbW9tZW50KF9ub3cpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9ub3c7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5nZXREYXRlRnJvbVN0cmluZ1dpdGhvdXRUaW1lKGZpbHRlcik7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbHRlciA/IG5ldyBEYXRlKGZpbHRlcikgOiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkodmFsdWUsIHBvc2l0aW9uPywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcbiAgICBsZXQgdmFsdWVUbXAgPSB0aGlzLmdldERhdGVUaW1lKHZhbHVlLCBwb3NpdGlvbik7XG4gICAgaWYgKHRoaXMuaXNDYWxlbmRhclllYXJNb2RlKCkpIHtcbiAgICAgIGxldCBkYXRlU3RyaW5nRnJvbVllYXJOb3RpbWU7XG4gICAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcbiAgICAgICAgdGhpcy5iZWdpblZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICBkYXRlU3RyaW5nRnJvbVllYXJOb3RpbWUgPSBgJHt0aGlzLm9ubHlZZWFyQmVnaW59LTAxLTAxYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbmx5WWVhckVuZCA9IHRoaXMuZW5kVmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lID0gYCR7dGhpcy5vbmx5WWVhckVuZH0tMDEtMDFgO1xuICAgICAgfVxuICAgICAgLy8gY2FsbCBzZXJ2aWNlIHdpdGggc3RyaW5nIGRhdGUgd2l0aG91dCB0aW1lXG4gICAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoeyB2YWx1ZTogZGF0ZVN0cmluZ0Zyb21ZZWFyTm90aW1lLCBwb3M6IHBvc2l0aW9uLCByZWZyZXNoRmlsdGVyIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocG9zaXRpb24gPT09IDIgJiYgdGhpcy5jYWxlbmRhclR5cGUoKSA9PT0gJ2RhdGUnICYmICF0aGlzLnNsaWRlck1vZGUpIHtcbiAgICAgIC8qIEFib3ZlIG1vbnRoOiBzZWUgeWVhclNlbGVjdGVkIG9yIG1vbnRoU2VsZWN0ZWQgKi9cbiAgICAgIHZhbHVlVG1wID0gbW9tZW50KHZhbHVlVG1wKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uID09PSAxKSB7XG4gICAgICB0aGlzLmJlZ2luVmFsdWUgPSB2YWx1ZVRtcDtcbiAgICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSkge1xuICAgICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5hZGRTdGVwKHZhbHVlVG1wLCB0aGlzLnN0ZXBNaWxsaXNlY29uZHMpLCAyLCByZWZyZXNoRmlsdGVyKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmRWYWx1ZSA9IHZhbHVlVG1wO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUhvdXJzTWludXRlc0FycmF5KCk7XG4gICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHsgdmFsdWU6IHZhbHVlVG1wLnRvSVNPU3RyaW5nKCksIHBvczogcG9zaXRpb24sIHJlZnJlc2hGaWx0ZXIgfSk7XG4gIH1cblxuICBoYW5kbGVEYXRlKHZhbHVlKTogRGF0ZSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YodmFsdWUpID09PSAnc3RyaW5nJyAmJiB0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH1cblxuICBjYWxlbmRhclR5cGUoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XG4gICAgICByZXR1cm4gJ3llYXInO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdGVwTWlsbGlzZWNvbmRzIDwgODY0MDAwMDApIHtcbiAgICAgIHJldHVybiAnZGF0ZXRpbWUnO1xuICAgIH1cbiAgICByZXR1cm4gJ2RhdGUnO1xuICB9XG5cbiAgaXNDYWxlbmRhclllYXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAneWVhcicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgeWVhck9ubHlJbnB1dENoYW5nZShjaGFuZ2VFdmVudCwgZGF0ZVBpY2tlcj86IGFueSwgcHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICBjb25zdCB5ZWFyID0gY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUoeWVhcik7XG4gICAgdGhpcy55ZWFyU2VsZWN0ZWQoZGF0ZSwgZGF0ZVBpY2tlciwgcHJvcGVydHkpO1xuICB9XG5cbiAgeWVhclNlbGVjdGVkKHllYXIsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nLCByZWZyZXNoRmlsdGVyID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAoZGF0ZVBpY2tlcikge1xuICAgICAgICBkYXRlUGlja2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmQnKSB7XG4gICAgICAgIC8vIGNoYW5nZSB2YWx1ZSAwMSBqYW4gdG8gMzEgZGVjIHNhbWUgeWVhclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5ID09PSAnYmVnaW4nICYmIHRoaXMucmVzdHJpY3RlZFRvU3RlcCgpICYmICF0aGlzLmNhbGVuZGFyVHlwZVllYXIpIHtcbiAgICAgICAgdGhpcy55ZWFyU2VsZWN0ZWQoeWVhciwgdW5kZWZpbmVkLCAnZW5kJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkoeWVhciwgcHJvcGVydHkgPT09ICdiZWdpbicgPyAxIDogMiwgcmVmcmVzaEZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgbW9udGhTZWxlY3RlZChtb250aCwgZGF0ZVBpY2tlcj86IGFueSwgcHJvcGVydHk/OiBzdHJpbmcsIHJlZnJlc2hGaWx0ZXIgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBpZiAoZGF0ZVBpY2tlcikge1xuICAgICAgICBkYXRlUGlja2VyLmNsb3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmQnKSB7XG4gICAgICAgIG1vbnRoID0gbW9tZW50KG1vbnRoKS5lbmRPZignbW9udGgnKS50b0RhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkpIHtcbiAgICAgICAgdGhpcy5tb250aFNlbGVjdGVkKG1vbnRoLCB1bmRlZmluZWQsICdlbmQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShtb250aCwgcHJvcGVydHkgPT09ICdiZWdpbicgPyAxIDogMiwgcmVmcmVzaEZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgY2FsZW5kYXJWaWV3KCkge1xuICAgIGNvbnN0IHRlc3QgPSB0aGlzLnN0ZXBNaWxsaXNlY29uZHM7XG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKFxuICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuZW5kKS5nZXRUaW1lKCkgLVxuICAgICAgICB0aGlzLnBhcnNlRmlsdGVyKHRoaXMuY3VycmVudEZpbHRlci5iZWdpbikuZ2V0VGltZSgpXG4gICAgKTtcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNZZWFyRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuICdtdWx0aS15ZWFyJztcbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICByZXR1cm4gJ3llYXInO1xuICAgIH0gZWxzZSBpZiAodGVzdCA8IDg2NDAwMDAwICYmIGRpZmYgPCA4NjQwMDAwMCkge1xuICAgICAgcmV0dXJuICdjbG9jayc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnbW9udGgnO1xuICAgIH1cbiAgfVxuXG4gIGRhdGVGaWx0ZXIodHlwZTogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBjb25zdCBkaWZmID0gZGF0ZVZhbHVlLmdldFRpbWUoKSAtIG5ldyBEYXRlKHRoaXMuaGFuZGxlTWluKCkpLmdldFRpbWUoKTtcblxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICBjb25zdCBtb250aERpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ3llYXJzJywgdHJ1ZSk7XG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd5ZWFycycsIHRydWUpO1xuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpKSA9PT0gMDtcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XG4gICAgICAgIHJldHVybiAobW9udGhEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpKSA9PT0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNNb250aER1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAnbW9udGhzJywgdHJ1ZSk7XG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdtb250aHMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIChtb250aERpZmZQbHVzMSAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTW9udGhzKCkpID09PSAwO1xuICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ2JlZ2luJyApIHtcbiAgICAgICAgcmV0dXJuIChtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc01vbnRocygpKSA9PT0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzV2Vla0R1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IHdlZWtEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xuICAgICAgaWYgKCB0eXBlID09PSAnZW5kJyApIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xuICAgICAgICByZXR1cm4gKHdlZWtEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc1dlZWtzKCkpID09PSAwO1xuICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ2JlZ2luJyApIHtcbiAgICAgICAgcmV0dXJuICh3ZWVrRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0RheUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2RheXMnLCB0cnVlKTtcbiAgICAgIGlmICggdHlwZSA9PT0gJ2VuZCcgKSB7XG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XG4gICAgICAgIGNvbnN0IGRheURpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdkYXlzJywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IF9tb2QgPSAoZGF5RGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNEYXlzKCkpO1xuICAgICAgICByZXR1cm4gKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEpIHx8IF9tb2QgPT09IDAgOyAvLyAxIG1pbGxpc2Vjb25kID0gMS4xNTc0MDc0MDc0MDc0MDc2ZS04XG4gICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnYmVnaW4nICkge1xuICAgICAgICBjb25zdCBfbW9kID0gKChkYXlEaWZmICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNEYXlzKCkpICsgMSk7XG4gICAgICAgIHJldHVybiAoX21vZCA8IDAuMDAwMDAwMSAmJiBfbW9kID4gLTAuMDAwMDAwMSAmJiBfbW9kICE9PSAwKSB8fCBfbW9kID09PSAxIDsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzSG91ckR1cmF0aW9uKHRoaXMuc3RlcCkgKSB7XG4gICAgICBjb25zdCBob3VyRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAnaG91cnMnLCB0cnVlKTtcbiAgICAgIHJldHVybiAoaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkpID09PSAwO1xuXG4gICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNNaW51dGVEdXJhdGlvbih0aGlzLnN0ZXApICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmYgJSB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPT09IDA7XG4gIH1cblxuICBnZXREYXRlVGltZShkYXRlLCBwb3MpIHtcbiAgICBjb25zdCB2YWx1ZXRtcCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGxldCB2YWx1ZXRtcDI7XG4gICAgaWYgKCF0aGlzLnNsaWRlck1vZGUpIHtcbiAgICAgIHN3aXRjaCAocG9zKSB7XG4gICAgICAgIGNhc2UgMToge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoMCwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoXG4gICAgICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhc2UgMjoge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoMCwgMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWV0bXAyID0gdmFsdWV0bXAuc2V0SG91cnMoXG4gICAgICAgICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZXRtcDIgPyB2YWx1ZXRtcDIgOiB2YWx1ZXRtcCk7XG4gIH1cblxuICBoYW5kbGVNaW51dGVJbmNyZW1lbnQoKSB7XG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAvIDEwMDAgPT09IDYwID8gMSA6IHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAvIDEwMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAlIDM2MDAwMDApIC8gNjA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc0hvdXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XG4gICAgICByZXR1cm4gNjA7XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaGFuZGxlSG91ckluY3JlbWVudCgpIHtcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAvIDEwMDAgLyA2MCAvIDYwO1xuICAgIH1cbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGZ1bGxCZWdpbkhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5iZWdpbkhvdXJzID0gQXJyYXkuZnJvbShcbiAgICAgICAge1xuICAgICAgICAgIGxlbmd0aDpcbiAgICAgICAgICAgICh0aGlzLmVuZEhvdXJGb3JtQ29udHJvbC52YWx1ZSAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxXG4gICAgICAgIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJlZ2luSG91cnMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5iZWdpblZhbHVlLmdldEhvdXJzKCkpO1xuICB9XG5cbiAgZnVsbEVuZEhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcbiAgICBpZiAoY2hlY2tFbmRWYWx1ZSkge1xuICAgICAgdGhpcy5lbmRIb3VycyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtcbiAgICAgICAgICBsZW5ndGg6XG4gICAgICAgICAgICAoMjMgLSB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnZhbHVlKSAvXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICtcbiAgICAgICAgICAgIDFcbiAgICAgICAgfSxcbiAgICAgICAgKF8sIGkpID0+XG4gICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmRIb3VycyA9IEFycmF5LmZyb20oXG4gICAgICAgIHsgbGVuZ3RoOiAoMjMgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMSB9LFxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRIb3VycygpKTtcbiAgfVxuXG4gIGZ1bGxCZWdpbk1pbnV0ZXNBcnJheShjaGVja0VuZFZhbHVlPykge1xuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XG4gICAgICB0aGlzLmJlZ2luTWludXRlcyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtcbiAgICAgICAgICBsZW5ndGg6XG4gICAgICAgICAgICAodGhpcy5lbmRNaW51dGVGb3JtQ29udHJvbC52YWx1ZSAtIDApIC9cbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArXG4gICAgICAgICAgICAxXG4gICAgICAgIH0sXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmVnaW5NaW51dGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgeyBsZW5ndGg6ICg1OSAtIDApIC8gdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArIDEgfSxcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYmVnaW5WYWx1ZS5nZXRNaW51dGVzKCkpO1xuICB9XG5cbiAgZnVsbEVuZE1pbnV0ZXNBcnJheShjaGVja0VuZFZhbHVlPykge1xuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XG4gICAgICB0aGlzLmVuZE1pbnV0ZXMgPSBBcnJheS5mcm9tKFxuICAgICAgICB7XG4gICAgICAgICAgbGVuZ3RoOlxuICAgICAgICAgICAgKDU5IC0gdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlKSAvXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KCkgK1xuICAgICAgICAgICAgMVxuICAgICAgICB9LFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcbiAgICAgICAgeyBsZW5ndGg6ICg1OSAtIDApIC8gdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArIDEgfSxcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5lbmRNaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmVuZFZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gIH1cblxuICB1cGRhdGVIb3Vyc01pbnV0ZXNBcnJheSgpIHtcbiAgICBjb25zdCBiZWdpblRtcCA9IG5ldyBEYXRlKHRoaXMuYmVnaW5WYWx1ZSk7XG4gICAgY29uc3QgZW5kVG1wID0gbmV3IERhdGUodGhpcy5lbmRWYWx1ZSk7XG4gICAgaWYgKGJlZ2luVG1wLnNldEhvdXJzKDAsIDApID09PSBlbmRUbXAuc2V0SG91cnMoMCwgMCkpIHtcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSh0cnVlKTtcbiAgICAgIHRoaXMuZnVsbEVuZEhvdXJzQXJyYXkodHJ1ZSk7XG4gICAgICBpZiAodGhpcy5iZWdpblZhbHVlLmdldEhvdXJzKCkgPT09IHRoaXMuZW5kVmFsdWUuZ2V0SG91cnMoKSkge1xuICAgICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSh0cnVlKTtcbiAgICAgICAgdGhpcy5mdWxsRW5kTWludXRlc0FycmF5KHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZ1bGxCZWdpbkhvdXJzQXJyYXkoKTtcbiAgICAgIHRoaXMuZnVsbEVuZEhvdXJzQXJyYXkoKTtcbiAgICAgIHRoaXMuZnVsbEJlZ2luTWludXRlc0FycmF5KCk7XG4gICAgICB0aGlzLmZ1bGxFbmRNaW51dGVzQXJyYXkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlcygpIHtcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5iZWdpblZhbHVlLCAxLCBmYWxzZSk7XG4gICAgdGhpcy5jaGFuZ2VUZW1wb3JhbFByb3BlcnR5KHRoaXMuZW5kVmFsdWUsIDIsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHJlc3RyaWN0ZWRUb1N0ZXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5yZXN0cmljdFRvU3RlcFxuICAgICAgPyB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXAgOiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5iZWdpbiA/IHRoaXMuY3VycmVudEZpbHRlci5iZWdpbiA6XG4gICAgICAgICAgICAgICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSA6IHRoaXMuX2RlZmF1bHRNaW4pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmVuZCA/IHRoaXMuY3VycmVudEZpbHRlci5lbmQgOlxuICAgICAgICAgICAgICAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUgOiB0aGlzLl9kZWZhdWx0TWF4KTtcbiAgfVxuXG4gIGNoYW5nZVByb3BlcnR5QnlQYXNzKGV2ZW50KSB7XG4gICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIG1vZGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmlsdGVyU3RhdGVEaXNhYmxlKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGVEaXNhYmxlID0gIXRoaXMuY3VycmVudEZpbHRlci5hY3RpdmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGVEaXNhYmxlID0gZmFsc2U7XG4gICAgfVxuICAgIGlmKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRldGltZScpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUoc3RyaW5nRGF0ZTogc3RyaW5nKTogRGF0ZSB7XG4gICAgLy8gd2FybmluZyBjcmVhdGUgZGF0ZSB3aXRoIG5vIHRpbWUgbWFrZSBhIGRhdGUgVVRDIHdpdGggVFogYW5kIHRoZSBkYXRlIGNyZWF0ZSBtYXliZSBub3QgdGhlIHNhbWUgeWVhciwgbW9udGggYW5kIGRheVxuICAgIC8vIGV4ZW1wbGU6XG4gICAgLy8gbmV3IERhdGUoJzIwMjItMDEtMDEnKSAtPiBGcmkgRGVjIDMxIDIwMjEgMTk6MDA6MDAgR01ULTA1MDAgKGhldXJlIG5vcm1hbGUgZGUgbOKAmUVzdCBub3JkLWFtw6lyaWNhaW4pXG4gICAgLy8gdG8gY3JlYXRlIHNhbWUgZGF0ZSBhcyBzdHJpbmcsIGFkZCB0aW1lIDAwIGluIHRoZSBjcmVhdGlvblxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxuICAgIGxldCB5ZWFyO1xuICAgIGxldCBtb250aCA9ICcwMSc7XG4gICAgbGV0IGRheSA9ICcwMSc7XG4gICAgaWYgKHN0cmluZ0RhdGUubGVuZ3RoID09PSAxMCkge1xuICAgICAgIGNvbnN0IGRhdGVJdGVtcyA9IHN0cmluZ0RhdGUuc3BsaXQoJy0nKTtcbiAgICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGluIGNvbmZpZyBkYXRlIGJlZ2luLWVuZCBmb3Igb2djRmlsdGVyOiBEYXRlIHdpdGhvdXQgdGltZSBmb3JtYXQgbmVlZCB0byBiZSBZWVlZLU1NLUREIG9yIFlZWVknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5ZWFyID0gZGF0ZUl0ZW1zWzBdO1xuICAgICAgICAgIG1vbnRoID0gZGF0ZUl0ZW1zWzFdO1xuICAgICAgICAgIGRheSA9IGRhdGVJdGVtc1syXTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RyaW5nRGF0ZS5sZW5ndGggPT09IDQpIHtcbiAgICAgIHllYXIgPSBzdHJpbmdEYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoc3RyaW5nRGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gMDA6MDA6MDBgKTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVyKCkge1xuICAgIGxldCBmaWx0ZXJPcmlnaW5Db25maWcgPSB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmZpbHRlcnMgYXMgT2djRmlsdGVyRHVyaW5nT3B0aW9ucztcblxuICAgIGxldCBtaW5EZWZhdWx0RGF0ZTtcbiAgICBsZXQgbWF4RGVmYXVsdERhdGU7XG4gICAgbGV0IG1pbkRlZmF1bHRJU09TdHJpbmc7XG4gICAgbGV0IG1heERlZmF1bHRJU09TdHJpbmc7XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhclR5cGVZZWFyKSB7XG4gICAgICBpZiAoZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xuICAgICAgICBsZXQgdG9kYXlEYXRlU3RyaW5nTm9UaW1lID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUNBJyk7IC8vICcyMDIyLTAyLTEzJ1xuICAgICAgICBtYXhEZWZhdWx0SVNPU3RyaW5nID0gYCR7dG9kYXlEYXRlU3RyaW5nTm9UaW1lLnN1YnN0cmluZygwLDQpfS0wMS0wMWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXhEZWZhdWx0SVNPU3RyaW5nID0gYCR7ZmlsdGVyT3JpZ2luQ29uZmlnLmVuZC5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xuICAgICAgfVxuICAgICAgbWluRGVmYXVsdElTT1N0cmluZyA9IGAke2ZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xuICAgICAgbWluRGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWluRGVmYXVsdElTT1N0cmluZyk7XG4gICAgICBtYXhEZWZhdWx0RGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShtYXhEZWZhdWx0SVNPU3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWluRGVmYXVsdERhdGUgPSB0aGlzLnBhcnNlRmlsdGVyKGZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbik7XG4gICAgICBtYXhEZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIoZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCk7XG4gICAgICBtaW5EZWZhdWx0SVNPU3RyaW5nID0gbWluRGVmYXVsdERhdGUudG9JU09TdHJpbmcoKTtcbiAgICAgIG1heERlZmF1bHRJU09TdHJpbmcgPSBtYXhEZWZhdWx0RGF0ZS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICgodGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luICE9PSBtaW5EZWZhdWx0SVNPU3RyaW5nICkgfHxcbiAgICAodGhpcy5jdXJyZW50RmlsdGVyLmVuZCAhPT0gbWF4RGVmYXVsdElTT1N0cmluZykpIHtcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IG1pbkRlZmF1bHREYXRlO1xuICAgICAgdGhpcy5lbmRWYWx1ZSA9IG1heERlZmF1bHREYXRlO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVGaWx0ZXJTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIuYWN0aXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtY29udGFpbmVyXCI+XG4gIDxtYXQtc2xpZGUtdG9nZ2xlIFxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxuICAgIFsobmdNb2RlbCldPVwic2xpZGVyTW9kZVwiXG4gICAgKGNoYW5nZSk9XCJtb2RlQ2hhbmdlKCRldmVudClcIj5cbiAgICB7eydpZ28uZ2VvLmZpbHRlci5zbGlkZXJNb2RlVGl0bGUnIHwgdHJhbnNsYXRlfX1cbiAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XG4gICAgPGlnby1vZ2MtZmlsdGVyLXRpbWUtc2xpZGVyXG4gICAgICBbYmVnaW5dPVwiYmVnaW5WYWx1ZVwiXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXG4gICAgICBbY3VycmVudEZpbHRlcl09XCJjdXJyZW50RmlsdGVyXCIgXG4gICAgICBbZGF0YXNvdXJjZV09XCJkYXRhc291cmNlXCJcbiAgICAgIChjaGFuZ2VQcm9wZXJ0eSk9XCJjaGFuZ2VQcm9wZXJ0eUJ5UGFzcygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9pZ28tb2djLWZpbHRlci10aW1lLXNsaWRlcj5cbiAgICBcbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cIiFzbGlkZXJNb2RlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwieWVhci1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZVllYXJcIj5cbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXG4gICAgICAgIHdpdGggdGhlIGRhdGVwaWNrZXIgIC0tPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkICBjbGFzcz1cInllYXItaW5wdXRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnRZZWFyJ3wgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcbiAgICAgICAgICB2YWx1ZT1cInt7b25seVllYXJCZWdpbn19XCJcbiAgICAgICAgICAoY2hhbmdlKT0gXCJ5ZWFyT25seUlucHV0Q2hhbmdlKCRldmVudCwgYmVnaW5EYXRlcGlja2VyLCAnYmVnaW4nKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxuICAgICAgICAgID5cbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJiZWdpbkRhdGVwaWNrZXJcIiBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gIFxuICAgICAgICA8bWF0LWRhdGVwaWNrZXJcbiAgICAgICAgICBwYW5lbENsYXNzPVwiZGF0ZXBpY2tlci15ZWFyXCJcbiAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXG4gICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgW3N0YXJ0QXRdPVwiYmVnaW5WYWx1ZVwiXG4gICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcbiAgICAgICAgICA+XG4gICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICAgICAgPGlucHV0ICNiZWdpblllYXJcbiAgICAgICAgICBjbGFzcz0gXCJ5ZWFyLWlucHV0LWhpZGVcIlxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcbiAgICAgICAgICBlbmFibGVkPSBmYWxzZVxuICAgICAgICAgIHJlYWRvbmx5PSB0cnVlXG4gICAgICAgICAgW3ZhbHVlXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgW21pbl09XCJoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgW21heF09XCIoZW5kVmFsdWUgJiYgKCFyZXN0cmljdGVkVG9TdGVwKCkpKT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXG4gICAgICAgICAgPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkICBjbGFzcz1cInllYXItaW5wdXRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuZW5kWWVhcid8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgY2xhc3M9XCJ5ZWFyLWlucHV0LW9ubHkteWVhclwiXG4gICAgICAgICAgdmFsdWU9XCJ7e29ubHlZZWFyRW5kfX1cIlxuICAgICAgICAgIChjaGFuZ2UpPSBcInllYXJPbmx5SW5wdXRDaGFuZ2UoJGV2ZW50LCBlbmREYXRlcGlja2VyLCAnZW5kJylcIlxuICAgICAgICAgIFtkaXNhYmxlZF0gPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImVuZERhdGVwaWNrZXJcIiBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxuICAgICAgICAgIHBhbmVsQ2xhc3M9XCJkYXRlcGlja2VyLXllYXJcIlxuICAgICAgICAgICNlbmREYXRlcGlja2VyXG4gICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXG4gICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgICA+XG4gICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG5cbiAgICAgICAgPGlucHV0ICNlbmRZZWFyXG4gICAgICAgICAgY2xhc3M9IFwieWVhci1pbnB1dC1oaWRlXCJcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgIGVuYWJsZWQ9IGZhbHNlXG4gICAgICAgICAgcmVhZG9ubHk9IHRydWVcbiAgICAgICAgICBbdmFsdWVdPVwiZW5kVmFsdWU/ZW5kVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIlxuICAgICAgICAgIFttaW5dPVwiYmVnaW5WYWx1ZT9iZWdpblZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXCJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcbiAgICAgICAgICA+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmZpbHRlci5yZXNldEZpbHRlcnMnIHwgdHJhbnNsYXRlXCIgXG4gICAgICAgIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFxuICAgICAgICBjbGFzcz0ndG9nZ2xlLWZpbHRlci1zdGF0ZScgXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlRmlsdGVyU3RhdGUoKVwiIFxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCIgXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIFxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgW2NoZWNrZWRdPVwiIWZpbHRlclN0YXRlRGlzYWJsZVwiPlxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKSE9PSd5ZWFyJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImJlZ2luRGF0ZXBpY2tlclwiIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgPGlucHV0ICNiZWdpblxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImJlZ2luRGF0ZXBpY2tlclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5zdGFydERhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGJlZ2luLnZhbHVlLCAxKVwiXG4gICAgICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyLmJpbmQodGhpcywgJ2JlZ2luJylcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgICBbbWluXT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXCJcbiAgICAgICAgICAgIFttYXhdPVwiKGVuZFZhbHVlICYmICghcmVzdHJpY3RlZFRvU3RlcCgpKSk/ZW5kVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIiBcbiAgICAgICAgICAgIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxsZXJcIj48L3NwYW4+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXG4gICAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcbiAgICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxuICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcbiAgICAgICAgICAgIChtb250aFNlbGVjdGVkKT1cIm1vbnRoU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCI+XG4gICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dFwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpPT09J2RhdGV0aW1lJ1wiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuaG91cicgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luSG91ckZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGJlZ2luLnZhbHVlLCAxKVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e2hvdXJ9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1pbnV0ZS1pbnB1dFwiICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCk9PT0nZGF0ZXRpbWUnXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8udGltZUZpbHRlci5taW51dGUnIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbk1pbnV0ZUZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGJlZ2luLnZhbHVlLCAxKVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57e21pbnV0ZX19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiICpuZ0lmPVwiIXJlc3RyaWN0ZWRUb1N0ZXAoKVwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYXRlLWlucHV0XCI+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJlbmREYXRlcGlja2VyXCIgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICAgIDxpbnB1dCAjZW5kXG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cImVuZERhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5lbmREYXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXG4gICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoZW5kLnZhbHVlLCAyKVwiXG4gICAgICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzLCAnZW5kJylcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZW5kVmFsdWU/ZW5kVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIlxuICAgICAgICAgICAgICBbbWluXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXG4gICAgICAgICAgICAgIFttYXhdPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIiBcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsbGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNlbmREYXRlcGlja2VyXG4gICAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxuICAgICAgICAgICAgICBbc3RhcnRBdF09XCJlbmRWYWx1ZVwiXG4gICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcbiAgICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiPlxuICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIiA+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8udGltZUZpbHRlci5ob3VyJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgZW5kSG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7aG91cn19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZE1pbnV0ZUZvcm1Db250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7bWludXRlfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxuICAgICAgICBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0RmlsdGVyKClcIiBcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcbiAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJ7e3Jlc2V0SWNvbn19XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlLWZpbHRlci1zdGF0ZVwiIFxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIiBcbiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCIgXG4gICAgICAgIFtjaGVja2VkXT0gXCIhZmlsdGVyU3RhdGVEaXNhYmxlXCI+XG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
898
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXRpbWUvb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQVF4RSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7O0lDakJoQywyQ0FHZ0M7SUFEOUIsOE9BQXdCLGtOQUFBO0lBRXhCLFlBQ0Y7O0lBQUEsaUJBQW1COzs7SUFIakIsMkNBQXdCO0lBRXhCLGVBQ0Y7SUFERSx1RkFDRjs7OztJQUVBLDhCQUFpRDtJQUMvQyxxREFNQztJQURDLHNQQUErQztJQUVqRCxpQkFBNkI7SUFFL0IsaUJBQU07OztJQVJGLGVBQW9CO0lBQXBCLHlDQUFvQixxRUFBQSx1Q0FBQSxpQ0FBQTs7OztJQVl0Qiw4QkFBMkQ7SUFHekQsMENBQW9DO0lBQ2xDLGlDQUFXO0lBQUEsWUFBNkM7O0lBQUEsaUJBQVk7SUFDcEUsaUNBTUc7SUFGRCw2UEFBd0QsT0FBTyxLQUFFO0lBSm5FLGlCQU1HO0lBQ0gsNENBQWlIO0lBRWpILDhDQU1HO0lBREQsMlFBQXNELE9BQU8sS0FBRTtJQUVqRSxpQkFBaUI7SUFFakIsZ0NBU0c7SUFDTCxpQkFBaUI7SUFF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QyxtQkFBbUI7WUFDSSxtQkFBbUI7a0JBQXBELFNBQVM7bUJBQUMscUJBQXFCO1lBQ1IsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ0EsT0FBTztrQkFBNUIsU0FBUzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmVudW0nO1xyXG5pbXBvcnQgeyBPR0NGaWx0ZXJUaW1lU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLXRpbWUuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlLFxyXG4gIE9nY0ZpbHRlckR1cmluZ09wdGlvbnNcclxufSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci10aW1lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlci10aW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXRpbWUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgT2djRmlsdGVyVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XHJcbiAgQElucHV0KCkgY3VycmVudEZpbHRlcjogYW55O1xyXG4gIEBPdXRwdXQoKSBjaGFuZ2VQcm9wZXJ0eTogRXZlbnRFbWl0dGVyPHtcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgICBwb3M6IG51bWJlcjtcclxuICAgIHJlZnJlc2hGaWx0ZXI6IGJvb2xlYW47XHJcbiAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgYmVnaW5Ib3VyczogbnVtYmVyW107XHJcbiAgZW5kSG91cnM6IG51bWJlcltdO1xyXG4gIGJlZ2luTWludXRlczogbnVtYmVyW107XHJcbiAgZW5kTWludXRlczogbnVtYmVyW107XHJcbiAgYmVnaW5Ib3VyRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBiZWdpbk1pbnV0ZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kSG91ckZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZW5kTWludXRlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBfYmVnaW5WYWx1ZTogRGF0ZTtcclxuICBfZW5kVmFsdWU6IERhdGU7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRNaW46IHN0cmluZyA9ICcxOTAwLTAxLTAxJztcclxuICByZWFkb25seSBfZGVmYXVsdE1heDogc3RyaW5nID0gJzIwNTItMDEtMDYnO1xyXG4gIHJlYWRvbmx5IF9kZWZhdWx0RGlzcGxheUZvcm1hdDogc3RyaW5nID0gJ0REL01NL1lZWVkgSEg6bW0gQSc7XHJcbiAgcmVhZG9ubHkgX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgb2djRmlsdGVyT3BlcmF0b3IgPSBPZ2NGaWx0ZXJPcGVyYXRvcjtcclxuICBwdWJsaWMgc2xpZGVyTW9kZSA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seSBkZWZhdWx0U3RlcE1pbGxpc2Vjb25kID0gNjAwMDA7XHJcbiAgcHVibGljIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcclxuXHJcbiAgcHVibGljIG9ubHlZZWFyQmVnaW46IG51bWJlcjtcclxuICBwdWJsaWMgb25seVllYXJFbmQ6IG51bWJlcjtcclxuICBwdWJsaWMgY2FsZW5kYXJUeXBlWWVhciA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXNldEljb24gPSAncmVwbGF5JztcclxuICBwdWJsaWMgZmlsdGVyU3RhdGVEaXNhYmxlOiBib29sZWFuO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbmREYXRlcGlja2VyVGltZScpIGVuZERhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luRGF0ZXBpY2tlclRpbWUnKSBiZWdpbkRhdGVwaWNrZXJUaW1lOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luVGltZScpIGJlZ2luVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdlbmRUaW1lJykgZW5kVGltZTogSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgZ2V0IHN0ZXAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5zdGVwRGF0ZVxyXG4gICAgICA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLnN0ZXBEYXRlXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnN0ZXA7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RlcE1pbGxpc2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgY29uc3Qgc3RlcCA9IG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzTWlsbGlzZWNvbmRzKCk7XHJcbiAgICByZXR1cm4gc3RlcCA9PT0gMCA/IHRoaXMuZGVmYXVsdFN0ZXBNaWxsaXNlY29uZCA6IHN0ZXA7XHJcbiAgfVxyXG5cclxuICBzZXQgYmVnaW5WYWx1ZShiZWdpbjogRGF0ZSkge1xyXG4gICAgdGhpcy5fYmVnaW5WYWx1ZSA9IGJlZ2luO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJlZ2luVmFsdWUoKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYmVnaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCBlbmRWYWx1ZShlbmQ6IERhdGUpIHtcclxuICAgIHRoaXMuX2VuZFZhbHVlID0gZW5kO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZFZhbHVlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNsaWRlckludGVydmFsKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsID09PSB1bmRlZmluZWRcclxuICAgICAgPyAyMDAwXHJcbiAgICAgIDogdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlckludGVydmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heERhdGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXg7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzcGxheUZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEZpbHRlci5kaXNwbGF5Rm9ybWF0ID8gdGhpcy5jdXJyZW50RmlsdGVyLmRpc3BsYXlGb3JtYXQgOiB0aGlzLl9kZWZhdWx0RGlzcGxheUZvcm1hdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvZ2NGaWx0ZXJUaW1lU2VydmljZTogT0dDRmlsdGVyVGltZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA9IHRoaXMuY3VycmVudEZpbHRlci5zbGlkZXJPcHRpb25zLmVuYWJsZWQgIT09IHVuZGVmaW5lZCA/XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnMuZW5hYmxlZCA6IHRoaXMuX2RlZmF1bHRTbGlkZXJNb2RlRW5hYmxlZDtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHRoaXMucGFyc2VGaWx0ZXIodGhpcy5oYW5kbGVNaW4oKSk7XHJcbiAgICB0aGlzLmVuZFZhbHVlID0gdGhpcy5wYXJzZUZpbHRlcih0aGlzLmhhbmRsZU1heCgpKTtcclxuXHJcbiAgICB0aGlzLm9ubHlZZWFyQmVnaW4gPSB0aGlzLmJlZ2luVmFsdWUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIHRoaXMub25seVllYXJFbmQgPSB0aGlzLmVuZFZhbHVlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICB0aGlzLmNhbGVuZGFyVHlwZVllYXIgPSB0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKTtcclxuICAgIC8vIHVwZGF0ZSB2YWx1ZSBmb3Igbm93IHZhbHVlXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VGaWx0ZXIoZmlsdGVyKTogRGF0ZSB7XHJcbiAgICBpZiAoIWZpbHRlcil7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgfSBlbHNlIGlmICggaXNOYU4oIG5ldyBEYXRlKGZpbHRlcikuZ2V0VGltZSgpICkgKcKge1xyXG4gICAgICBpZiAoZmlsdGVyLnNlYXJjaCgnbm93JykgPj0gMCApwqB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXCsvKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCcrJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmFkZChpbnRlcnZhbEludCwgaW50ZXJ2YWxbMF0pLnRvRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyLm1hdGNoKC9cXC0vKSkge1xyXG4gICAgICAgICAgY29uc3QgaW50ZXJ2YWxJbnQgPSBwYXJzZUludChcclxuICAgICAgICAgICAgZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksXHJcbiAgICAgICAgICAgIDEwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWx0ZXIuc2VhcmNoKCd0b2RheScpID49IDApe1xyXG4gICAgICAgIGNvbnN0IF9ub3cgPSBtb21lbnQoKS5lbmRPZignZGF5JykudG9EYXRlKCk7XHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBmaWx0ZXIubWF0Y2goL3llYXJzfG1vbnRoc3x3ZWVrc3xkYXlzfGhvdXJzfHNlY29uZHMvKTtcclxuICAgICAgICBpZiAoIGZpbHRlci5tYXRjaCgvXFwrLykgKSB7XHJcbiAgICAgICAgICBjb25zdCBpbnRlcnZhbEludCA9IHBhcnNlSW50KCBmaWx0ZXIuc3Vic3RyaW5nKGZpbHRlci5zZWFyY2goJysnKSArIDEsIGludGVydmFsLmluZGV4KSwgMTAgKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuYWRkKGludGVydmFsSW50LCBpbnRlcnZhbFswXSkudG9EYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICggZmlsdGVyLm1hdGNoKC9cXC0vKSApIHtcclxuICAgICAgICAgIGNvbnN0IGludGVydmFsSW50ID0gcGFyc2VJbnQoZmlsdGVyLnN1YnN0cmluZyhmaWx0ZXIuc2VhcmNoKCctJykgKyAxLCBpbnRlcnZhbC5pbmRleCksIDEwKTtcclxuICAgICAgICAgIHJldHVybiBtb21lbnQoX25vdykuc3VidHJhY3QoaW50ZXJ2YWxJbnQsIGludGVydmFsWzBdKS50b0RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIF9ub3c7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShmaWx0ZXIpO1xyXG4gICAgICByZXR1cm4gZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXIgPyBuZXcgRGF0ZShmaWx0ZXIpIDogbmV3IERhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVRlbXBvcmFsUHJvcGVydHkodmFsdWUsIHBvc2l0aW9uPywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGxldCB2YWx1ZVRtcCA9IHRoaXMuZ2V0RGF0ZVRpbWUodmFsdWUsIHBvc2l0aW9uKTtcclxuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJZZWFyTW9kZSgpKSB7XHJcbiAgICAgIGxldCBkYXRlU3RyaW5nRnJvbVllYXJOb3RpbWU7XHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMub25seVllYXJCZWdpbiA9IHRoaXMuYmVnaW5WYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJCZWdpbn0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW5kVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLm9ubHlZZWFyRW5kID0gdGhpcy5lbmRWYWx1ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSA9IGAke3RoaXMub25seVllYXJFbmR9LTAxLTAxYDtcclxuICAgICAgfVxyXG4gICAgICAvLyBjYWxsIHNlcnZpY2Ugd2l0aCBzdHJpbmcgZGF0ZSB3aXRob3V0IHRpbWVcclxuICAgICAgdGhpcy5jaGFuZ2VQcm9wZXJ0eS5uZXh0KHsgdmFsdWU6IGRhdGVTdHJpbmdGcm9tWWVhck5vdGltZSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHBvc2l0aW9uID09PSAyICYmIHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICdkYXRlJyAmJiAhdGhpcy5zbGlkZXJNb2RlKSB7XHJcbiAgICAgIC8qIEFib3ZlIG1vbnRoOiBzZWUgeWVhclNlbGVjdGVkIG9yIG1vbnRoU2VsZWN0ZWQgKi9cclxuICAgICAgdmFsdWVUbXAgPSBtb21lbnQodmFsdWVUbXApLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb24gPT09IDEpIHtcclxuICAgICAgdGhpcy5iZWdpblZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRUb1N0ZXAoKSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLmFkZFN0ZXAodmFsdWVUbXAsIHRoaXMuc3RlcE1pbGxpc2Vjb25kcyksIDIsIHJlZnJlc2hGaWx0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gdmFsdWVUbXA7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUhvdXJzTWludXRlc0FycmF5KCk7XHJcbiAgICB0aGlzLmNoYW5nZVByb3BlcnR5Lm5leHQoeyB2YWx1ZTogdmFsdWVUbXAudG9JU09TdHJpbmcoKSwgcG9zOiBwb3NpdGlvbiwgcmVmcmVzaEZpbHRlciB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZURhdGUodmFsdWUpOiBEYXRlIHtcclxuICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ3N0cmluZycgJiYgdGhpcy5jdXJyZW50RmlsdGVyLmNhbGVuZGFyTW9kZVllYXIpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2FsZW5kYXJUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlci5jYWxlbmRhck1vZGVZZWFyKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGVwTWlsbGlzZWNvbmRzIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdkYXRldGltZSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ2RhdGUnO1xyXG4gIH1cclxuXHJcbiAgaXNDYWxlbmRhclllYXJNb2RlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlKCkgPT09ICd5ZWFyJykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJPbmx5SW5wdXRDaGFuZ2UoY2hhbmdlRXZlbnQsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB5ZWFyID0gY2hhbmdlRXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZSh5ZWFyKTtcclxuICAgIHRoaXMueWVhclNlbGVjdGVkKGRhdGUsIGRhdGVQaWNrZXIsIHByb3BlcnR5KTtcclxuICB9XHJcblxyXG4gIHllYXJTZWxlY3RlZCh5ZWFyLCBkYXRlUGlja2VyPzogYW55LCBwcm9wZXJ0eT86IHN0cmluZywgcmVmcmVzaEZpbHRlciA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICAvLyBjaGFuZ2UgdmFsdWUgMDEgamFuIHRvIDMxIGRlYyBzYW1lIHllYXJcclxuICAgICAgICB5ZWFyID0gbW9tZW50KHllYXIpLmVuZE9mKCd5ZWFyJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkgJiYgIXRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICAgIHRoaXMueWVhclNlbGVjdGVkKHllYXIsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eSh5ZWFyLCBwcm9wZXJ0eSA9PT0gJ2JlZ2luJyA/IDEgOiAyLCByZWZyZXNoRmlsdGVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vbnRoU2VsZWN0ZWQobW9udGgsIGRhdGVQaWNrZXI/OiBhbnksIHByb3BlcnR5Pzogc3RyaW5nLCByZWZyZXNoRmlsdGVyID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGlmIChkYXRlUGlja2VyKSB7XHJcbiAgICAgICAgZGF0ZVBpY2tlci5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2VuZCcpIHtcclxuICAgICAgICBtb250aCA9IG1vbWVudChtb250aCkuZW5kT2YoJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkgPT09ICdiZWdpbicgJiYgdGhpcy5yZXN0cmljdGVkVG9TdGVwKCkpIHtcclxuICAgICAgICB0aGlzLm1vbnRoU2VsZWN0ZWQobW9udGgsIHVuZGVmaW5lZCwgJ2VuZCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShtb250aCwgcHJvcGVydHkgPT09ICdiZWdpbicgPyAxIDogMiwgcmVmcmVzaEZpbHRlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYWxlbmRhclZpZXcoKSB7XHJcbiAgICBjb25zdCB0ZXN0ID0gdGhpcy5zdGVwTWlsbGlzZWNvbmRzO1xyXG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKFxyXG4gICAgICB0aGlzLnBhcnNlRmlsdGVyKHRoaXMuY3VycmVudEZpbHRlci5lbmQpLmdldFRpbWUoKSAtXHJcbiAgICAgICAgdGhpcy5wYXJzZUZpbHRlcih0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4pLmdldFRpbWUoKVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1llYXJEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAnbXVsdGkteWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIHJldHVybiAneWVhcic7XHJcbiAgICB9IGVsc2UgaWYgKHRlc3QgPCA4NjQwMDAwMCAmJiBkaWZmIDwgODY0MDAwMDApIHtcclxuICAgICAgcmV0dXJuICdjbG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ21vbnRoJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRhdGVGaWx0ZXIodHlwZTogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgY29uc3QgZGlmZiA9IGRhdGVWYWx1ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSh0aGlzLmhhbmRsZU1pbigpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzWWVhckR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgY29uc3QgbW9udGhEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd5ZWFycycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3QgbW9udGhEaWZmUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlUGx1czEpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAneWVhcnMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNZZWFycygpKSA9PT0gMDtcclxuICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJ2JlZ2luJyApIHtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzWWVhcnMoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTW9udGhEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoRGlmZiA9IG1vbWVudChkYXRlVmFsdWUpLmRpZmYobW9tZW50KHRoaXMuaGFuZGxlTWluKCkpLCAnbW9udGhzJywgdHJ1ZSk7XHJcbiAgICAgIGlmICggdHlwZSA9PT0gJ2VuZCcgKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlUGx1czEgPSBtb21lbnQoZGF0ZVZhbHVlKS5hZGQoMSwgJ2QnKTtcclxuICAgICAgICBjb25zdCBtb250aERpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdtb250aHMnLCB0cnVlKTtcclxuICAgICAgICByZXR1cm4gKG1vbnRoRGlmZlBsdXMxICUgbW9tZW50LmR1cmF0aW9uKHRoaXMuc3RlcCkuYXNNb250aHMoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuIChtb250aERpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc01vbnRocygpKSA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc1dlZWtEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IHdlZWtEaWZmID0gbW9tZW50KGRhdGVWYWx1ZSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICBpZiAoIHR5cGUgPT09ICdlbmQnICkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVWYWx1ZVBsdXMxID0gbW9tZW50KGRhdGVWYWx1ZSkuYWRkKDEsICdkJyk7XHJcbiAgICAgICAgY29uc3Qgd2Vla0RpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICd3ZWVrcycsIHRydWUpO1xyXG4gICAgICAgIHJldHVybiAod2Vla0RpZmZQbHVzMSAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdiZWdpbicgKSB7XHJcbiAgICAgICAgcmV0dXJuICh3ZWVrRGlmZiAlIG1vbWVudC5kdXJhdGlvbih0aGlzLnN0ZXApLmFzV2Vla3MoKSkgPT09IDA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNEYXlEdXJhdGlvbih0aGlzLnN0ZXApKSB7XHJcbiAgICAgIGNvbnN0IGRheURpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2RheXMnLCB0cnVlKTtcclxuICAgICAgaWYgKCB0eXBlID09PSAnZW5kJyApIHtcclxuICAgICAgICBjb25zdCBkYXRlVmFsdWVQbHVzMSA9IG1vbWVudChkYXRlVmFsdWUpLmFkZCgxLCAnZCcpO1xyXG4gICAgICAgIGNvbnN0IGRheURpZmZQbHVzMSA9IG1vbWVudChkYXRlVmFsdWVQbHVzMSkuZGlmZihtb21lbnQodGhpcy5oYW5kbGVNaW4oKSksICdkYXlzJywgdHJ1ZSk7XHJcbiAgICAgICAgY29uc3QgX21vZCA9IChkYXlEaWZmUGx1czEgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSk7XHJcbiAgICAgICAgcmV0dXJuIChfbW9kIDwgMC4wMDAwMDAxICYmIF9tb2QgPiAtMC4wMDAwMDAxKSB8fCBfbW9kID09PSAwIDsgLy8gMSBtaWxsaXNlY29uZCA9IDEuMTU3NDA3NDA3NDA3NDA3NmUtOFxyXG4gICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnYmVnaW4nICkge1xyXG4gICAgICAgIGNvbnN0IF9tb2QgPSAoKGRheURpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0RheXMoKSkgKyAxKTtcclxuICAgICAgICByZXR1cm4gKF9tb2QgPCAwLjAwMDAwMDEgJiYgX21vZCA+IC0wLjAwMDAwMDEgJiYgX21vZCAhPT0gMCkgfHwgX21vZCA9PT0gMSA7IC8vIDEgbWlsbGlzZWNvbmQgPSAxLjE1NzQwNzQwNzQwNzQwNzZlLThcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICggdGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgY29uc3QgaG91ckRpZmYgPSBtb21lbnQoZGF0ZVZhbHVlKS5kaWZmKG1vbWVudCh0aGlzLmhhbmRsZU1pbigpKSwgJ2hvdXJzJywgdHJ1ZSk7XHJcbiAgICAgIHJldHVybiAoaG91ckRpZmYgJSBtb21lbnQuZHVyYXRpb24odGhpcy5zdGVwKS5hc0hvdXJzKCkpID09PSAwO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoIHRoaXMub2djRmlsdGVyVGltZVNlcnZpY2Uuc3RlcElzTWludXRlRHVyYXRpb24odGhpcy5zdGVwKSApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRpZmYgJSB0aGlzLnN0ZXBNaWxsaXNlY29uZHMgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlVGltZShkYXRlLCBwb3MpIHtcclxuICAgIGNvbnN0IHZhbHVldG1wID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICBsZXQgdmFsdWV0bXAyO1xyXG4gICAgaWYgKCF0aGlzLnNsaWRlck1vZGUpIHtcclxuICAgICAgc3dpdGNoIChwb3MpIHtcclxuICAgICAgICBjYXNlIDE6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuY2FsZW5kYXJNb2RlWWVhcikge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycygwLCAwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXRtcDIgPSB2YWx1ZXRtcC5zZXRIb3VycyhcclxuICAgICAgICAgICAgICB0aGlzLmVuZEhvdXJGb3JtQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB0aGlzLmVuZE1pbnV0ZUZvcm1Db250cm9sLnZhbHVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVldG1wMiA/IHZhbHVldG1wMiA6IHZhbHVldG1wKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU1pbnV0ZUluY3JlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLm9nY0ZpbHRlclRpbWVTZXJ2aWNlLnN0ZXBJc01pbnV0ZUR1cmF0aW9uKHRoaXMuc3RlcCkpIHtcclxuICAgICAgaWYgKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyA8IDM2MDAwMDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCA9PT0gNjAgPyAxIDogdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc3RlcE1pbGxpc2Vjb25kcyAlIDM2MDAwMDApIC8gNjA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUhvdXJJbmNyZW1lbnQoKSB7XHJcbiAgICBpZiAodGhpcy5vZ2NGaWx0ZXJUaW1lU2VydmljZS5zdGVwSXNIb3VyRHVyYXRpb24odGhpcy5zdGVwKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGVwTWlsbGlzZWNvbmRzIC8gMTAwMCAvIDYwIC8gNjA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbkhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAodGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICsgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5Ib3VycyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgeyBsZW5ndGg6ICgyMyAtIDApIC8gdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KCkgKyAxIH0sXHJcbiAgICAgICAgKF8sIGkpID0+IDAgKyBpICogdGhpcy5oYW5kbGVIb3VySW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5iZWdpblZhbHVlLmdldEhvdXJzKCkpO1xyXG4gIH1cclxuXHJcbiAgZnVsbEVuZEhvdXJzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kSG91cnMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKDIzIC0gdGhpcy5iZWdpbkhvdXJGb3JtQ29udHJvbC52YWx1ZSkgL1xyXG4gICAgICAgICAgICAgIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luSG91ckZvcm1Db250cm9sLnZhbHVlICsgaSAqIHRoaXMuaGFuZGxlSG91ckluY3JlbWVudCgpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVuZEhvdXJzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDIzIC0gMCkgLyB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKSArIDEgfSxcclxuICAgICAgICAoXywgaSkgPT4gMCArIGkgKiB0aGlzLmhhbmRsZUhvdXJJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRIb3VycygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxCZWdpbk1pbnV0ZXNBcnJheShjaGVja0VuZFZhbHVlPykge1xyXG4gICAgaWYgKGNoZWNrRW5kVmFsdWUpIHtcclxuICAgICAgdGhpcy5iZWdpbk1pbnV0ZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlbmd0aDpcclxuICAgICAgICAgICAgKHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wudmFsdWUgLSAwKSAvXHJcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKSArXHJcbiAgICAgICAgICAgIDFcclxuICAgICAgICB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmVnaW5NaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJlZ2luVmFsdWUuZ2V0TWludXRlcygpKTtcclxuICB9XHJcblxyXG4gIGZ1bGxFbmRNaW51dGVzQXJyYXkoY2hlY2tFbmRWYWx1ZT8pIHtcclxuICAgIGlmIChjaGVja0VuZFZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZW5kTWludXRlcyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVuZ3RoOlxyXG4gICAgICAgICAgICAoNTkgLSB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUpIC9cclxuICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICtcclxuICAgICAgICAgICAgMVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKF8sIGkpID0+XHJcbiAgICAgICAgICB0aGlzLmJlZ2luTWludXRlRm9ybUNvbnRyb2wudmFsdWUgKyBpICogdGhpcy5oYW5kbGVNaW51dGVJbmNyZW1lbnQoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmRNaW51dGVzID0gQXJyYXkuZnJvbShcclxuICAgICAgICB7IGxlbmd0aDogKDU5IC0gMCkgLyB0aGlzLmhhbmRsZU1pbnV0ZUluY3JlbWVudCgpICsgMSB9LFxyXG4gICAgICAgIChfLCBpKSA9PiAwICsgaSAqIHRoaXMuaGFuZGxlTWludXRlSW5jcmVtZW50KClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5lbmRWYWx1ZS5nZXRNaW51dGVzKCkpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSG91cnNNaW51dGVzQXJyYXkoKSB7XHJcbiAgICBjb25zdCBiZWdpblRtcCA9IG5ldyBEYXRlKHRoaXMuYmVnaW5WYWx1ZSk7XHJcbiAgICBjb25zdCBlbmRUbXAgPSBuZXcgRGF0ZSh0aGlzLmVuZFZhbHVlKTtcclxuICAgIGlmIChiZWdpblRtcC5zZXRIb3VycygwLCAwKSA9PT0gZW5kVG1wLnNldEhvdXJzKDAsIDApKSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgdGhpcy5mdWxsRW5kSG91cnNBcnJheSh0cnVlKTtcclxuICAgICAgaWYgKHRoaXMuYmVnaW5WYWx1ZS5nZXRIb3VycygpID09PSB0aGlzLmVuZFZhbHVlLmdldEhvdXJzKCkpIHtcclxuICAgICAgICB0aGlzLmZ1bGxCZWdpbk1pbnV0ZXNBcnJheSh0cnVlKTtcclxuICAgICAgICB0aGlzLmZ1bGxFbmRNaW51dGVzQXJyYXkodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luSG91cnNBcnJheSgpO1xyXG4gICAgICB0aGlzLmZ1bGxFbmRIb3Vyc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEJlZ2luTWludXRlc0FycmF5KCk7XHJcbiAgICAgIHRoaXMuZnVsbEVuZE1pbnV0ZXNBcnJheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5iZWdpblZhbHVlLCAxLCBmYWxzZSk7XHJcbiAgICB0aGlzLmNoYW5nZVRlbXBvcmFsUHJvcGVydHkodGhpcy5lbmRWYWx1ZSwgMiwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdHJpY3RlZFRvU3RlcCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXBcclxuICAgICAgPyB0aGlzLmN1cnJlbnRGaWx0ZXIucmVzdHJpY3RUb1N0ZXAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNaW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luID8gdGhpcy5jdXJyZW50RmlsdGVyLmJlZ2luIDpcclxuICAgICAgICAgICAgICAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSA/IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUgOiB0aGlzLl9kZWZhdWx0TWluKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNYXgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLmVuZCA/IHRoaXMuY3VycmVudEZpbHRlci5lbmQgOlxyXG4gICAgICAgICAgICAgICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlID8gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSA6IHRoaXMuX2RlZmF1bHRNYXgpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUHJvcGVydHlCeVBhc3MoZXZlbnQpIHtcclxuICAgIHRoaXMuY2hhbmdlUHJvcGVydHkubmV4dChldmVudCk7XHJcbiAgfVxyXG5cclxuICBtb2RlQ2hhbmdlKGV2ZW50KSB7XHJcbiAgICBpZiAoIWV2ZW50LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEZpbHRlclN0YXRlRGlzYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0ZURpc2FibGUgPSAhdGhpcy5jdXJyZW50RmlsdGVyLmFjdGl2ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGVEaXNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmNhbGVuZGFyVHlwZSgpID09PSAnZGF0ZXRpbWUnKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclN0YXRlRGlzYWJsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuYmVnaW5NaW51dGVGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5lbmRIb3VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmVnaW5Ib3VyRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5iZWdpbk1pbnV0ZUZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kSG91ckZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZW5kTWludXRlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShzdHJpbmdEYXRlOiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIC8vIHdhcm5pbmcgY3JlYXRlIGRhdGUgd2l0aCBubyB0aW1lIG1ha2UgYSBkYXRlIFVUQyB3aXRoIFRaIGFuZCB0aGUgZGF0ZSBjcmVhdGUgbWF5YmUgbm90IHRoZSBzYW1lIHllYXIsIG1vbnRoIGFuZCBkYXlcclxuICAgIC8vIGV4ZW1wbGU6XHJcbiAgICAvLyBuZXcgRGF0ZSgnMjAyMi0wMS0wMScpIC0+IEZyaSBEZWMgMzEgMjAyMSAxOTowMDowMCBHTVQtMDUwMCAoaGV1cmUgbm9ybWFsZSBkZSBs4oCZRXN0IG5vcmQtYW3DqXJpY2FpbilcclxuICAgIC8vIHRvIGNyZWF0ZSBzYW1lIGRhdGUgYXMgc3RyaW5nLCBhZGQgdGltZSAwMCBpbiB0aGUgY3JlYXRpb25cclxuICAgIC8vIG5ldyBEYXRlKCcyMDIyLTAxLTAxIDAwOjAwOjAwJykgLT4gU2F0IEphbiAwMSAyMDIyIDAwOjAwOjAwIEdNVC0wNTAwIChoZXVyZSBub3JtYWxlIGRlIGzigJlFc3Qgbm9yZC1hbcOpcmljYWluKVxyXG4gICAgbGV0IHllYXI7XHJcbiAgICBsZXQgbW9udGggPSAnMDEnO1xyXG4gICAgbGV0IGRheSA9ICcwMSc7XHJcbiAgICBpZiAoc3RyaW5nRGF0ZS5sZW5ndGggPT09IDEwKSB7XHJcbiAgICAgICBjb25zdCBkYXRlSXRlbXMgPSBzdHJpbmdEYXRlLnNwbGl0KCctJyk7XHJcbiAgICAgICAgaWYgKGRhdGVJdGVtcy5sZW5ndGggIT09IDMpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gY29uZmlnIGRhdGUgYmVnaW4tZW5kIGZvciBvZ2NGaWx0ZXI6IERhdGUgd2l0aG91dCB0aW1lIGZvcm1hdCBuZWVkIHRvIGJlIFlZWVktTU0tREQgb3IgWVlZWScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5ZWFyID0gZGF0ZUl0ZW1zWzBdO1xyXG4gICAgICAgICAgbW9udGggPSBkYXRlSXRlbXNbMV07XHJcbiAgICAgICAgICBkYXkgPSBkYXRlSXRlbXNbMl07XHJcbiAgICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzdHJpbmdEYXRlLmxlbmd0aCA9PT0gNCkge1xyXG4gICAgICB5ZWFyID0gc3RyaW5nRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShzdHJpbmdEYXRlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShgJHt5ZWFyfS0ke21vbnRofS0ke2RheX0gMDA6MDA6MDBgKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVyKCkge1xyXG4gICAgbGV0IGZpbHRlck9yaWdpbkNvbmZpZyA9IHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuZmlsdGVycyBhcyBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zO1xyXG5cclxuICAgIGxldCBtaW5EZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtYXhEZWZhdWx0RGF0ZTtcclxuICAgIGxldCBtaW5EZWZhdWx0SVNPU3RyaW5nO1xyXG4gICAgbGV0IG1heERlZmF1bHRJU09TdHJpbmc7XHJcblxyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUeXBlWWVhcikge1xyXG4gICAgICBpZiAoZmlsdGVyT3JpZ2luQ29uZmlnLmVuZCA9PT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIGxldCB0b2RheURhdGVTdHJpbmdOb1RpbWUgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tQ0EnKTsgLy8gJzIwMjItMDItMTMnXHJcbiAgICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IGAke3RvZGF5RGF0ZVN0cmluZ05vVGltZS5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1heERlZmF1bHRJU09TdHJpbmcgPSBgJHtmaWx0ZXJPcmlnaW5Db25maWcuZW5kLnN1YnN0cmluZygwLDQpfS0wMS0wMWA7XHJcbiAgICAgIH1cclxuICAgICAgbWluRGVmYXVsdElTT1N0cmluZyA9IGAke2ZpbHRlck9yaWdpbkNvbmZpZy5iZWdpbi5zdWJzdHJpbmcoMCw0KX0tMDEtMDFgO1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21TdHJpbmdXaXRob3V0VGltZShtaW5EZWZhdWx0SVNPU3RyaW5nKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLmdldERhdGVGcm9tU3RyaW5nV2l0aG91dFRpbWUobWF4RGVmYXVsdElTT1N0cmluZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtaW5EZWZhdWx0RGF0ZSA9IHRoaXMucGFyc2VGaWx0ZXIoZmlsdGVyT3JpZ2luQ29uZmlnLmJlZ2luKTtcclxuICAgICAgbWF4RGVmYXVsdERhdGUgPSB0aGlzLnBhcnNlRmlsdGVyKGZpbHRlck9yaWdpbkNvbmZpZy5lbmQpO1xyXG4gICAgICBtaW5EZWZhdWx0SVNPU3RyaW5nID0gbWluRGVmYXVsdERhdGUudG9JU09TdHJpbmcoKTtcclxuICAgICAgbWF4RGVmYXVsdElTT1N0cmluZyA9IG1heERlZmF1bHREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLmN1cnJlbnRGaWx0ZXIuYmVnaW4gIT09IG1pbkRlZmF1bHRJU09TdHJpbmcgKSB8fFxyXG4gICAgKHRoaXMuY3VycmVudEZpbHRlci5lbmQgIT09IG1heERlZmF1bHRJU09TdHJpbmcpKSB7XHJcbiAgICAgIHRoaXMuYmVnaW5WYWx1ZSA9IG1pbkRlZmF1bHREYXRlO1xyXG4gICAgICB0aGlzLmVuZFZhbHVlID0gbWF4RGVmYXVsdERhdGU7XHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXJTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIuYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGaWx0ZXJTdGF0ZURpc2FibGUoKTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWVzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRldGltZS1jb250YWluZXJcIj5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICpuZ0lmPVwidGhpcy5jdXJyZW50RmlsdGVyLnNsaWRlck9wdGlvbnM/LmVuYWJsZWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJzbGlkZXJNb2RlXCJcclxuICAgIChjaGFuZ2UpPVwibW9kZUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICB7eydpZ28uZ2VvLmZpbHRlci5zbGlkZXJNb2RlVGl0bGUnIHwgdHJhbnNsYXRlfX1cclxuICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJzbGlkZXItY29udGFpbmVyXCIgKm5nSWY9XCJzbGlkZXJNb2RlXCI+XHJcbiAgICA8aWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXJcclxuICAgICAgW2JlZ2luXT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICBbbWF4XT1cInRoaXMucmVzdHJpY3RlZFRvU3RlcCgpID8gdGhpcy5tYXhEYXRlIDogdGhpcy5lbmRWYWx1ZVwiXHJcbiAgICAgIFtjdXJyZW50RmlsdGVyXT1cImN1cnJlbnRGaWx0ZXJcIiBcclxuICAgICAgW2RhdGFzb3VyY2VdPVwiZGF0YXNvdXJjZVwiXHJcbiAgICAgIChjaGFuZ2VQcm9wZXJ0eSk9XCJjaGFuZ2VQcm9wZXJ0eUJ5UGFzcygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvaWdvLW9nYy1maWx0ZXItdGltZS1zbGlkZXI+XHJcbiAgICBcclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIiFzbGlkZXJNb2RlXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInllYXItaW5wdXQtY29udGFpbmVyXCIgKm5nSWY9XCJjYWxlbmRhclR5cGVZZWFyXCI+XHJcbiAgICAgIDwhLS0gdG8gZW11bGF0ZSBhIHllYXItcGlja2VyLCAyIGlucHV0OiBmaXJzdCBpbnB1dCB0byBzaG93IHVzZXIganVzdCB5ZWFyIGFuZCBzZWNvbmQgaW5wdXQgaGlkZW4gYW5kIGJpbmQgXHJcbiAgICAgICAgd2l0aCB0aGUgZGF0ZXBpY2tlciAgLS0+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCAgY2xhc3M9XCJ5ZWFyLWlucHV0XCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnRZZWFyJ3wgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBjbGFzcz1cInllYXItaW5wdXQtb25seS15ZWFyXCJcclxuICAgICAgICAgIHZhbHVlPVwie3tvbmx5WWVhckJlZ2lufX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT1cImZpbHRlclN0YXRlRGlzYWJsZVwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gIFxyXG4gICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgcGFuZWxDbGFzcz1cImRhdGVwaWNrZXIteWVhclwiXHJcbiAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImJlZ2luVmFsdWVcIlxyXG4gICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2JlZ2luWWVhclxyXG4gICAgICAgICAgY2xhc3M9IFwieWVhci1pbnB1dC1oaWRlXCJcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJiZWdpbkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgZW5hYmxlZD0gZmFsc2VcclxuICAgICAgICAgIHJlYWRvbmx5PSB0cnVlXHJcbiAgICAgICAgICBbdmFsdWVdPVwiYmVnaW5WYWx1ZT9iZWdpblZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1pbkRhdGUpXCJcclxuICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgW21heF09XCIoZW5kVmFsdWUgJiYgKCFyZXN0cmljdGVkVG9TdGVwKCkpKT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgIGNsYXNzPVwieWVhci1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmVuZFllYXInfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwieWVhci1pbnB1dC1vbmx5LXllYXJcIlxyXG4gICAgICAgICAgdmFsdWU9XCJ7e29ubHlZZWFyRW5kfX1cIlxyXG4gICAgICAgICAgKGNoYW5nZSk9IFwieWVhck9ubHlJbnB1dENoYW5nZSgkZXZlbnQsIGVuZERhdGVwaWNrZXIsICdlbmQnKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdID0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImVuZERhdGVwaWNrZXJcIiBbZGlzYWJsZWRdPVwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyXHJcbiAgICAgICAgICBwYW5lbENsYXNzPVwiZGF0ZXBpY2tlci15ZWFyXCJcclxuICAgICAgICAgICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICBbc3RhcnRWaWV3XT1cImNhbGVuZGFyVmlldygpXCJcclxuICAgICAgICAgIFtzdGFydEF0XT1cImVuZFZhbHVlXCJcclxuICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICA8aW5wdXQgI2VuZFllYXJcclxuICAgICAgICAgIGNsYXNzPSBcInllYXItaW5wdXQtaGlkZVwiXHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiZW5kRGF0ZXBpY2tlclwiXHJcbiAgICAgICAgICBlbmFibGVkPSBmYWxzZVxyXG4gICAgICAgICAgcmVhZG9ubHk9IHRydWVcclxuICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICBbbWluXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICBbbWF4XT1cImhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCJcclxuICAgICAgICAgID5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz0ndG9nZ2xlLWZpbHRlci1zdGF0ZScgXHJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVGaWx0ZXJTdGF0ZSgpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnRvZ2dsZUZpbHRlclN0YXRlJyB8IHRyYW5zbGF0ZVwiIFxyXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIFxyXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dC1jb250YWluZXJcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpIT09J3llYXInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiYmVnaW5EYXRlcGlja2VyXCIgW2Rpc2FibGVkXT0gXCJmaWx0ZXJTdGF0ZURpc2FibGVcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICAgIDxpbnB1dCAjYmVnaW5cclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwiYmVnaW5EYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidpZ28uZ2VvLnRpbWVGaWx0ZXIuc3RhcnREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFjdXJyZW50RmlsdGVyLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNoYW5nZVRlbXBvcmFsUHJvcGVydHkoYmVnaW4udmFsdWUsIDEpXCJcclxuICAgICAgICAgICAgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImJlZ2luVmFsdWU/YmVnaW5WYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5taW5EYXRlKVwiXHJcbiAgICAgICAgICAgIFttaW5dPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICBbbWF4XT1cIihlbmRWYWx1ZSAmJiAoIXJlc3RyaWN0ZWRUb1N0ZXAoKSkpP2VuZFZhbHVlOmhhbmRsZURhdGUoZGF0YXNvdXJjZS5vcHRpb25zLm1heERhdGUpXCIgXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAjYmVnaW5EYXRlcGlja2VyXHJcbiAgICAgICAgICAgIFtzdGFydFZpZXddPVwiY2FsZW5kYXJWaWV3KClcIlxyXG4gICAgICAgICAgICBbc3RhcnRBdF09XCJiZWdpblZhbHVlXCJcclxuICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJ5ZWFyU2VsZWN0ZWQoJGV2ZW50LCBiZWdpbkRhdGVwaWNrZXIsICdiZWdpbicpXCJcclxuICAgICAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwibW9udGhTZWxlY3RlZCgkZXZlbnQsIGJlZ2luRGF0ZXBpY2tlciwgJ2JlZ2luJylcIj5cclxuICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhvdXItaW5wdXRcIiAqbmdJZj1cImNhbGVuZGFyVHlwZSgpPT09J2RhdGV0aW1lJ1wiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7J2lnby5nZW8udGltZUZpbHRlci5ob3VyJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJlZ2luSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBiZWdpbkhvdXJzXCIgW3ZhbHVlXT1cImhvdXJcIj57e2hvdXJ9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1pbnV0ZS1pbnB1dFwiICpuZ0lmPVwiY2FsZW5kYXJUeXBlKCk9PT0nZGF0ZXRpbWUnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLm1pbnV0ZScgfCB0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJiZWdpbk1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShiZWdpbi52YWx1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGJlZ2luTWludXRlc1wiIFt2YWx1ZV09XCJtaW51dGVcIj57e21pbnV0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiICpuZ0lmPVwiIXJlc3RyaWN0ZWRUb1N0ZXAoKVwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRhdGUtaW5wdXRcIj5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZW5kRGF0ZXBpY2tlclwiIFtkaXNhYmxlZF09IFwiZmlsdGVyU3RhdGVEaXNhYmxlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjZW5kXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJlbmREYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8udGltZUZpbHRlci5lbmREYXRlJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiIWN1cnJlbnRGaWx0ZXIuYWN0aXZlXCJcclxuICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJjaGFuZ2VUZW1wb3JhbFByb3BlcnR5KGVuZC52YWx1ZSwgMilcIlxyXG4gICAgICAgICAgICAgIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzLCAnZW5kJylcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJlbmRWYWx1ZT9lbmRWYWx1ZTpoYW5kbGVEYXRlKGRhdGFzb3VyY2Uub3B0aW9ucy5tYXhEYXRlKVwiXHJcbiAgICAgICAgICAgICAgW21pbl09XCJiZWdpblZhbHVlP2JlZ2luVmFsdWU6aGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWluRGF0ZSlcIlxyXG4gICAgICAgICAgICAgIFttYXhdPVwiaGFuZGxlRGF0ZShkYXRhc291cmNlLm9wdGlvbnMubWF4RGF0ZSlcIiBcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGxlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNlbmREYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJjYWxlbmRhclZpZXcoKVwiXHJcbiAgICAgICAgICAgICAgW3N0YXJ0QXRdPVwiZW5kVmFsdWVcIlxyXG4gICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwieWVhclNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCJcclxuICAgICAgICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJtb250aFNlbGVjdGVkKCRldmVudCwgZW5kRGF0ZXBpY2tlciwgJ2VuZCcpXCI+XHJcbiAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJob3VyLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIiA+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3snaWdvLmdlby50aW1lRmlsdGVyLmhvdXInIHwgdHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW5kSG91ckZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGhvdXIgb2YgZW5kSG91cnNcIiBbdmFsdWVdPVwiaG91clwiPnt7aG91cn19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWludXRlLWlucHV0XCIgKm5nSWY9XCJjYWxlbmRhclR5cGUoKT09PSdkYXRldGltZSdcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydpZ28uZ2VvLnRpbWVGaWx0ZXIubWludXRlJyB8IHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZE1pbnV0ZUZvcm1Db250cm9sXCJcclxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIhY3VycmVudEZpbHRlci5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlVGVtcG9yYWxQcm9wZXJ0eShlbmQudmFsdWUsIDIpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBlbmRNaW51dGVzXCIgW3ZhbHVlXT1cIm1pbnV0ZVwiPnt7bWludXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlc2V0LWJ1dHRvblwiIFxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcigpXCIgXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiBcclxuICAgICAgICBbZGlzYWJsZWRdPSBcImZpbHRlclN0YXRlRGlzYWJsZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwie3tyZXNldEljb259fVwiPjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBcclxuICAgICAgICBjbGFzcz1cInRvZ2dsZS1maWx0ZXItc3RhdGVcIiBcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUZpbHRlclN0YXRlKClcIiBcclxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBcclxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIudG9nZ2xlRmlsdGVyU3RhdGUnIHwgdHJhbnNsYXRlXCIgXHJcbiAgICAgICAgW2NoZWNrZWRdPSBcIiFmaWx0ZXJTdGF0ZURpc2FibGVcIj5cclxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './ogc-filterable-form.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlcmFibGUtZm9ybS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vZ2MtZmlsdGVyYWJsZS1mb3JtLmNvbXBvbmVudCc7XHJcbiJdfQ==
|
|
@@ -59,4 +59,4 @@ OgcFilterableFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
|
|
|
59
59
|
}], refreshFilters: [{
|
|
60
60
|
type: Input
|
|
61
61
|
}] }); })();
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlcmFibGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlcmFibGUtZm9ybS9vZ2MtZmlsdGVyYWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyYWJsZS1mb3JtL29nYy1maWx0ZXJhYmxlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztJQ0FqRCw4Q0FPMkI7OztJQUp6QixtREFBOEIsaUNBQUEsbUJBQUEsdUNBQUE7OztJQVVoQyx5Q0FLc0I7Ozs7SUFKcEIsZ0RBQStCLHNDQUFBLGlDQUFBLG1CQUFBOzs7SUFMakMsNkZBVWM7OztJQVBkLGtGQUE2RDs7QURKN0QsTUFBTSxPQUFPLDBCQUEwQjtJQTBCckM7UUFGTyxVQUFLLEdBQUcsU0FBUyxDQUFDO0lBRVYsQ0FBQztJQWxCaEIsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQztTQUM5RDtRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN4RSxDQUFDOztvR0F0QlUsMEJBQTBCOzZFQUExQiwwQkFBMEI7UUNSdkMscUhBTzJCO1FBRTNCLDJFQVVjOztRQWxCWCw4Q0FBeUI7UUFTM0IsZUFBa0U7UUFBbEUsMkZBQWtFOzt1RkRGdEQsMEJBQTBCO2NBSnRDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxXQUFXLEVBQUUsc0NBQXNDO2FBQ3BEO3NDQUdVLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxHQUFHO2tCQUFYLEtBQUs7WUFFRyxjQUFjO2tCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1vZ2MtZmlsdGVyYWJsZS1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlcmFibGUtZm9ybS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE9nY0ZpbHRlcmFibGVGb3JtQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XHJcblxyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICBASW5wdXQoKSByZWZyZXNoRmlsdGVyczogKCkgPT4gdm9pZDtcclxuXHJcbiAgZ2V0IHJlZnJlc2hGdW5jKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaEZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICBnZXQgYWR2YW5jZWRPZ2NGaWx0ZXJzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuYWR2YW5jZWRPZ2NGaWx0ZXJzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRGaWx0ZXIoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnMgP1xyXG4gICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzWzBdIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbG9yID0gJ3ByaW1hcnknO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcbn1cclxuIiwiPGlnby1vZ2MtZmlsdGVyLXNlbGVjdGlvblxyXG4gICpuZ0lmPVwiIWFkdmFuY2VkT2djRmlsdGVyc1wiXHJcbiAgaWdvTGlzdEl0ZW1cclxuICBbcmVmcmVzaEZpbHRlcnNdPVwicmVmcmVzaEZ1bmNcIlxyXG4gIFtkYXRhc291cmNlXT1cImRhdGFzb3VyY2VcIlxyXG4gIFttYXBdPVwibWFwXCJcclxuICBbY3VycmVudEZpbHRlcl09XCJjdXJyZW50RmlsdGVyXCI+XHJcbjwvaWdvLW9nYy1maWx0ZXItc2VsZWN0aW9uPlxyXG5cclxuPG5nLXRlbXBsYXRlIFxyXG4qbmdJZj1cImFkdmFuY2VkT2djRmlsdGVycyAmJiBkYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5lZGl0YWJsZVwiXHJcbm5nRm9yIGxldC1jdXJyZW50RmlsdGVyIFxyXG5bbmdGb3JPZl09XCJkYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzXCI+XHJcbjxpZ28tb2djLWZpbHRlci1mb3JtXHJcbiAgW2N1cnJlbnRGaWx0ZXJdPVwiY3VycmVudEZpbHRlclwiXHJcbiAgW3JlZnJlc2hGaWx0ZXJzXT1cInJlZnJlc2hGdW5jXCJcclxuICBbZGF0YXNvdXJjZV09XCJkYXRhc291cmNlXCJcclxuICBbbWFwXT1cIm1hcFwiPlxyXG48L2lnby1vZ2MtZmlsdGVyLWZvcm0+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './ogc-filterable-item.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvb2djLWZpbHRlcmFibGUtaXRlbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vZ2MtZmlsdGVyYWJsZS1pdGVtLmNvbXBvbmVudCc7XHJcbiJdfQ==
|