{
"version": 3,
"sources": ["../../../node_modules/chartkick/dist/chartkick.js", "../../../vendor/assets/javascripts/chosen.jquery.js", "../../../vendor/assets/javascripts/blowup.js", "../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/leaflet/src/core/Util.js", "../../../node_modules/leaflet/src/core/Class.js", "../../../node_modules/leaflet/src/core/Events.js", "../../../node_modules/leaflet/src/geometry/Point.js", "../../../node_modules/leaflet/src/geometry/Bounds.js", "../../../node_modules/leaflet/src/geo/LatLngBounds.js", "../../../node_modules/leaflet/src/geo/LatLng.js", "../../../node_modules/leaflet/src/geo/crs/CRS.js", "../../../node_modules/leaflet/src/geo/crs/CRS.Earth.js", "../../../node_modules/leaflet/src/geo/projection/Projection.SphericalMercator.js", "../../../node_modules/leaflet/src/geometry/Transformation.js", "../../../node_modules/leaflet/src/geo/crs/CRS.EPSG3857.js", "../../../node_modules/leaflet/src/layer/vector/SVG.Util.js", "../../../node_modules/leaflet/src/core/Browser.js", "../../../node_modules/leaflet/src/dom/DomEvent.Pointer.js", "../../../node_modules/leaflet/src/dom/DomEvent.DoubleTap.js", "../../../node_modules/leaflet/src/dom/DomUtil.js", "../../../node_modules/leaflet/src/dom/DomEvent.js", "../../../node_modules/leaflet/src/dom/PosAnimation.js", "../../../node_modules/leaflet/src/map/Map.js", "../../../node_modules/leaflet/src/control/Control.js", "../../../node_modules/leaflet/src/control/Control.Layers.js", "../../../node_modules/leaflet/src/control/Control.Zoom.js", "../../../node_modules/leaflet/src/control/Control.Scale.js", "../../../node_modules/leaflet/src/control/Control.Attribution.js", "../../../node_modules/leaflet/src/control/index.js", "../../../node_modules/leaflet/src/core/Handler.js", "../../../node_modules/leaflet/src/core/index.js", "../../../node_modules/leaflet/src/dom/Draggable.js", "../../../node_modules/leaflet/src/geometry/PolyUtil.js", "../../../node_modules/leaflet/src/geometry/LineUtil.js", "../../../node_modules/leaflet/src/geo/projection/Projection.LonLat.js", "../../../node_modules/leaflet/src/geo/projection/Projection.Mercator.js", "../../../node_modules/leaflet/src/geo/projection/index.js", "../../../node_modules/leaflet/src/geo/crs/CRS.EPSG3395.js", "../../../node_modules/leaflet/src/geo/crs/CRS.EPSG4326.js", "../../../node_modules/leaflet/src/geo/crs/CRS.Simple.js", "../../../node_modules/leaflet/src/geo/crs/index.js", "../../../node_modules/leaflet/src/layer/Layer.js", "../../../node_modules/leaflet/src/layer/LayerGroup.js", "../../../node_modules/leaflet/src/layer/FeatureGroup.js", "../../../node_modules/leaflet/src/layer/marker/Icon.js", "../../../node_modules/leaflet/src/layer/marker/Icon.Default.js", "../../../node_modules/leaflet/src/layer/marker/Marker.Drag.js", "../../../node_modules/leaflet/src/layer/marker/Marker.js", "../../../node_modules/leaflet/src/layer/vector/Path.js", "../../../node_modules/leaflet/src/layer/vector/CircleMarker.js", "../../../node_modules/leaflet/src/layer/vector/Circle.js", "../../../node_modules/leaflet/src/layer/vector/Polyline.js", "../../../node_modules/leaflet/src/layer/vector/Polygon.js", "../../../node_modules/leaflet/src/layer/GeoJSON.js", "../../../node_modules/leaflet/src/layer/ImageOverlay.js", "../../../node_modules/leaflet/src/layer/VideoOverlay.js", "../../../node_modules/leaflet/src/layer/SVGOverlay.js", "../../../node_modules/leaflet/src/layer/DivOverlay.js", "../../../node_modules/leaflet/src/layer/Popup.js", "../../../node_modules/leaflet/src/layer/Tooltip.js", "../../../node_modules/leaflet/src/layer/marker/DivIcon.js", "../../../node_modules/leaflet/src/layer/marker/index.js", "../../../node_modules/leaflet/src/layer/tile/GridLayer.js", "../../../node_modules/leaflet/src/layer/tile/TileLayer.js", "../../../node_modules/leaflet/src/layer/tile/TileLayer.WMS.js", "../../../node_modules/leaflet/src/layer/tile/index.js", "../../../node_modules/leaflet/src/layer/vector/Renderer.js", "../../../node_modules/leaflet/src/layer/vector/Canvas.js", "../../../node_modules/leaflet/src/layer/vector/SVG.VML.js", "../../../node_modules/leaflet/src/layer/vector/SVG.js", "../../../node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js", "../../../node_modules/leaflet/src/layer/vector/Rectangle.js", "../../../node_modules/leaflet/src/layer/vector/index.js", "../../../node_modules/leaflet/src/layer/index.js", "../../../node_modules/leaflet/src/map/handler/Map.BoxZoom.js", "../../../node_modules/leaflet/src/map/handler/Map.DoubleClickZoom.js", "../../../node_modules/leaflet/src/map/handler/Map.Drag.js", "../../../node_modules/leaflet/src/map/handler/Map.Keyboard.js", "../../../node_modules/leaflet/src/map/handler/Map.ScrollWheelZoom.js", "../../../node_modules/leaflet/src/map/handler/Map.TapHold.js", "../../../node_modules/leaflet/src/map/handler/Map.TouchZoom.js", "../../../node_modules/leaflet/src/map/index.js", "../../../node_modules/maplibre-gl/node_modules/tslib/tslib.es6.js", "../../../node_modules/maplibre-gl/node_modules/@mapbox/point-geometry/index.js", "../../../node_modules/maplibre-gl/node_modules/@mapbox/unitbezier/index.js", "../../../node_modules/maplibre-gl/src/util/offscreen_canvas_supported.ts", "../../../node_modules/maplibre-gl/src/util/offscreen_canvas_distorted.ts", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/common.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/mat3.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/mat4.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/vec3.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/vec4.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/quat.js", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/vec2.js", "../../../node_modules/maplibre-gl/src/data/extent.ts", "../../../node_modules/maplibre-gl/src/source/pixels_to_tile_units.ts", "../../../node_modules/maplibre-gl/src/util/util.ts", "../../../node_modules/maplibre-gl/src/util/abort_error.ts", "../../../node_modules/maplibre-gl/src/util/config.ts", "../../../node_modules/maplibre-gl/src/source/protocol_crud.ts", "../../../node_modules/maplibre-gl/src/util/ajax.ts", "../../../node_modules/maplibre-gl/src/util/evented.ts", "../../../node_modules/maplibre-gl/node_modules/@maplibre/maplibre-gl-style-spec/dist/index.mjs", "../../../node_modules/maplibre-gl/src/style/validate_style.ts", "../../../node_modules/maplibre-gl/src/util/transferable_grid_index.ts", "../../../node_modules/maplibre-gl/src/util/web_worker_transfer.ts", "../../../node_modules/maplibre-gl/src/style/zoom_history.ts", "../../../node_modules/maplibre-gl/src/util/unicode_properties.g.ts", "../../../node_modules/maplibre-gl/src/util/script_detection.ts", "../../../node_modules/maplibre-gl/src/source/rtl_text_plugin_worker.ts", "../../../node_modules/maplibre-gl/src/style/evaluation_parameters.ts", "../../../node_modules/maplibre-gl/src/style/properties.ts", "../../../node_modules/maplibre-gl/src/style/style_layer.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/raster_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/raster_style_layer.ts", "../../../node_modules/maplibre-gl/src/util/struct_array.ts", "../../../node_modules/maplibre-gl/src/data/array_types.g.ts", "../../../node_modules/maplibre-gl/src/data/bucket/circle_attributes.ts", "../../../node_modules/maplibre-gl/src/data/segment.ts", "../../../node_modules/maplibre-gl/src/shaders/encode_attribute.ts", "../../../node_modules/maplibre-gl/src/data/bucket/pattern_attributes.ts", "../../../node_modules/maplibre-gl/src/data/bucket/dash_attributes.ts", "../../../node_modules/maplibre-gl/node_modules/murmurhash-js/index.js", "../../../node_modules/maplibre-gl/node_modules/murmurhash-js/murmurhash3_gc.js", "../../../node_modules/maplibre-gl/node_modules/murmurhash-js/murmurhash2_gc.js", "../../../node_modules/maplibre-gl/src/data/feature_position_map.ts", "../../../node_modules/maplibre-gl/src/webgl/uniform_binding.ts", "../../../node_modules/maplibre-gl/src/data/program_configuration.ts", "../../../node_modules/maplibre-gl/src/data/load_geometry.ts", "../../../node_modules/maplibre-gl/src/data/evaluation_feature.ts", "../../../node_modules/maplibre-gl/src/data/bucket/circle_bucket.ts", "../../../node_modules/maplibre-gl/src/util/intersection_tests.ts", "../../../node_modules/maplibre-gl/src/style/query_utils.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/circle_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/circle_style_layer.ts", "../../../node_modules/maplibre-gl/src/data/bucket/heatmap_bucket.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/heatmap_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/util/image.ts", "../../../node_modules/maplibre-gl/src/util/color_ramp.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/heatmap_style_layer.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/hillshade_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/hillshade_style_layer.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/color_relief_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/webgl/texture.ts", "../../../node_modules/maplibre-gl/src/data/dem_data.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/color_relief_style_layer.ts", "../../../node_modules/maplibre-gl/src/data/bucket/fill_attributes.ts", "../../../node_modules/maplibre-gl/src/data/bucket/pattern_bucket_features.ts", "../../../node_modules/maplibre-gl/node_modules/earcut/src/earcut.js", "../../../node_modules/maplibre-gl/src/render/subdivision_granularity_settings.ts", "../../../node_modules/maplibre-gl/src/render/subdivision.ts", "../../../node_modules/maplibre-gl/src/render/fill_large_mesh_arrays.ts", "../../../node_modules/maplibre-gl/src/data/bucket/fill_bucket.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/fill_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/fill_style_layer.ts", "../../../node_modules/maplibre-gl/src/data/bucket/fill_extrusion_attributes.ts", "../../../node_modules/maplibre-gl/node_modules/@mapbox/vector-tile/index.js", "../../../node_modules/maplibre-gl/src/data/bucket/fill_extrusion_bucket.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/fill_extrusion_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/fill_extrusion_style_layer.ts", "../../../node_modules/maplibre-gl/node_modules/kdbush/index.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/geojson-vt/dist/geojson-vt.mjs", "../../../node_modules/maplibre-gl/src/data/bucket/line_attributes.ts", "../../../node_modules/maplibre-gl/src/data/bucket/line_attributes_ext.ts", "../../../node_modules/maplibre-gl/src/data/bucket/line_bucket.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/line_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/line_style_layer.ts", "../../../node_modules/maplibre-gl/src/data/bucket/symbol_attributes.ts", "../../../node_modules/maplibre-gl/src/symbol/transform_text.ts", "../../../node_modules/maplibre-gl/src/symbol/one_em.ts", "../../../node_modules/maplibre-gl/src/util/verticalize_punctuation.ts", "../../../node_modules/maplibre-gl/src/symbol/tagged_string.ts", "../../../node_modules/maplibre-gl/node_modules/pbf/index.js", "../../../node_modules/maplibre-gl/src/style/parse_glyph_pbf.ts", "../../../node_modules/maplibre-gl/node_modules/potpack/index.js", "../../../node_modules/maplibre-gl/src/render/image_atlas.ts", "../../../node_modules/maplibre-gl/src/symbol/shaping.ts", "../../../node_modules/maplibre-gl/src/symbol/symbol_size.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/overlap_mode.ts", "../../../node_modules/maplibre-gl/src/data/bucket/symbol_bucket.ts", "../../../node_modules/maplibre-gl/src/symbol/merge_lines.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/symbol_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/format_section_override.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/symbol_style_layer.ts", "../../../node_modules/maplibre-gl/src/util/resolve_tokens.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/background_style_layer_properties.g.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/background_style_layer.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/custom_style_layer.ts", "../../../node_modules/maplibre-gl/src/util/throttled_invoker.ts", "../../../node_modules/maplibre-gl/src/util/actor.ts", "../../../node_modules/maplibre-gl/src/geo/lng_lat.ts", "../../../node_modules/maplibre-gl/src/geo/mercator_coordinate.ts", "../../../node_modules/maplibre-gl/node_modules/@mapbox/whoots-js/index.mjs", "../../../node_modules/maplibre-gl/src/tile/tile_id.ts", "../../../node_modules/maplibre-gl/src/util/world_bounds.ts", "../../../node_modules/maplibre-gl/src/geo/bounds.ts", "../../../node_modules/maplibre-gl/src/util/dictionary_coder.ts", "../../../node_modules/maplibre-gl/src/util/vectortile_to_geojson.ts", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/vector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/fixedSizeVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/int32FlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/doubleFlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/sequence/sequenceVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/sequence/int32SequenceVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/constant/int32ConstVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/featureTable.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/intWrapper.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/logicalLevelTechnique.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/physicalLevelTechnique.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/fastPforShared.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/fastPforDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/fastPforUnpack.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/integerDecodingUtils.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/physicalStreamType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/dictionaryType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/offsetType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/lengthType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/vectorType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/geometryType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/vertexBufferType.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tile/streamMetadataDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/bitVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/unpackNullableUtils.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/integerStreamDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/bigEndianDecode.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/int64FlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/sequence/int64SequenceVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/zOrderCurve.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/geometryVectorConverter.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/geometryVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/constGeometryVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/flatGeometryVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/gpuVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/constGpuVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/geometry/flatGpuVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/geometryDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/booleanFlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/floatFlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/constant/int64ConstVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/decodingUtils.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/variableSizeVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/flat/stringFlatVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/dictionary/stringDictionaryVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/fsstDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/propertyDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tileset/tilesetMetadata.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/decoding/stringDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tileset/typeMap.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js", "../../../node_modules/maplibre-gl/node_modules/@maplibre/mlt/dist/mltDecoder.js", "../../../node_modules/maplibre-gl/src/source/vector_tile_mlt.ts", "../../../node_modules/maplibre-gl/node_modules/@maplibre/vt-pbf/dist/index.es.js", "../../../node_modules/maplibre-gl/src/data/feature_index.ts", "../../../node_modules/maplibre-gl/src/symbol/clip_line.ts", "../../../node_modules/maplibre-gl/src/symbol/anchor.ts", "../../../node_modules/maplibre-gl/src/symbol/check_max_angle.ts", "../../../node_modules/maplibre-gl/src/symbol/get_anchors.ts", "../../../node_modules/maplibre-gl/src/symbol/quads.ts", "../../../node_modules/maplibre-gl/src/symbol/collision_feature.ts", "../../../node_modules/maplibre-gl/node_modules/tinyqueue/index.js", "../../../node_modules/maplibre-gl/src/util/find_pole_of_inaccessibility.ts", "../../../node_modules/maplibre-gl/src/style/style_layer/variable_text_anchor.ts", "../../../node_modules/maplibre-gl/src/symbol/symbol_layout.ts", "../../../node_modules/maplibre-gl/src/tile/tile_cache.ts", "../../../node_modules/maplibre-gl/src/style/create_style_layer.ts", "../../../node_modules/maplibre-gl/src/style/style_layer_index.ts", "../../../node_modules/maplibre-gl/src/render/glyph_atlas.ts", "../../../node_modules/maplibre-gl/src/source/worker_tile.ts", "../../../node_modules/maplibre-gl/src/source/worker_tile_state.ts", "../../../node_modules/maplibre-gl/src/util/request_performance.ts", "../../../node_modules/maplibre-gl/src/source/vector_tile_overzoomed.ts", "../../../node_modules/maplibre-gl/src/source/vector_tile_worker_source.ts", "../../../node_modules/maplibre-gl/src/source/raster_dem_tile_worker_source.ts", "../../../node_modules/maplibre-gl/src/source/geojson_worker_source.ts", "../../../node_modules/maplibre-gl/src/source/worker.ts", "../../../node_modules/maplibre-gl/node_modules/gl-matrix/esm/mat2.js", "../../../node_modules/maplibre-gl/src/util/browser.ts", "../../../node_modules/maplibre-gl/src/util/time_control.ts", "../../../node_modules/maplibre-gl/src/util/image_request.ts", "../../../node_modules/maplibre-gl/src/util/dom.ts", "../../../node_modules/maplibre-gl/src/util/request_manager.ts", "../../../node_modules/maplibre-gl/src/util/style.ts", "../../../node_modules/maplibre-gl/src/style/load_sprite.ts", "../../../node_modules/maplibre-gl/src/style/style_image.ts", "../../../node_modules/maplibre-gl/src/render/image_manager.ts", "../../../node_modules/maplibre-gl/node_modules/@mapbox/tiny-sdf/index.js", "../../../node_modules/maplibre-gl/src/render/glyph_manager.ts", "../../../node_modules/maplibre-gl/src/style/load_glyph_range.ts", "../../../node_modules/maplibre-gl/src/style/light.ts", "../../../node_modules/maplibre-gl/src/style/sky.ts", "../../../node_modules/maplibre-gl/src/render/line_atlas.ts", "../../../node_modules/maplibre-gl/src/util/worker_pool.ts", "../../../node_modules/maplibre-gl/src/util/web_worker.ts", "../../../node_modules/maplibre-gl/src/util/global_worker_pool.ts", "../../../node_modules/maplibre-gl/src/util/dispatcher.ts", "../../../node_modules/maplibre-gl/src/source/query_features.ts", "../../../node_modules/maplibre-gl/src/source/load_tilejson.ts", "../../../node_modules/maplibre-gl/src/geo/lng_lat_bounds.ts", "../../../node_modules/maplibre-gl/src/tile/tile_bounds.ts", "../../../node_modules/maplibre-gl/src/source/vector_tile_source.ts", "../../../node_modules/maplibre-gl/src/source/raster_tile_source.ts", "../../../node_modules/maplibre-gl/src/source/raster_dem_tile_source.ts", "../../../node_modules/maplibre-gl/src/source/geojson_source_diff.ts", "../../../node_modules/maplibre-gl/src/util/geojson_bounds.ts", "../../../node_modules/maplibre-gl/src/source/geojson_source.ts", "../../../node_modules/maplibre-gl/src/tile/tile_id_to_lng_lat_bounds.ts", "../../../node_modules/maplibre-gl/src/source/image_source.ts", "../../../node_modules/maplibre-gl/src/source/video_source.ts", "../../../node_modules/maplibre-gl/src/source/canvas_source.ts", "../../../node_modules/maplibre-gl/src/source/source.ts", "../../../node_modules/maplibre-gl/src/source/rtl_text_plugin_status.ts", "../../../node_modules/maplibre-gl/src/source/rtl_text_plugin_main_thread.ts", "../../../node_modules/maplibre-gl/src/tile/tile.ts", "../../../node_modules/maplibre-gl/src/data/bucket.ts", "../../../node_modules/maplibre-gl/src/source/source_state.ts", "../../../node_modules/maplibre-gl/src/geo/projection/mercator_utils.ts", "../../../node_modules/maplibre-gl/src/geo/projection/covering_tiles.ts", "../../../node_modules/maplibre-gl/src/data/extent_bounds.ts", "../../../node_modules/maplibre-gl/src/tile/tile_manager_raster.ts", "../../../node_modules/maplibre-gl/src/tile/tile_manager_raster_dem.ts", "../../../node_modules/maplibre-gl/src/tile/tile_manager_in_view_tiles.ts", "../../../node_modules/maplibre-gl/src/tile/tile_manager.ts", "../../../node_modules/maplibre-gl/src/symbol/path_interpolator.ts", "../../../node_modules/maplibre-gl/src/symbol/grid_index.ts", "../../../node_modules/maplibre-gl/src/util/fast_maths.ts", "../../../node_modules/maplibre-gl/src/symbol/projection.ts", "../../../node_modules/maplibre-gl/src/symbol/collision_index.ts", "../../../node_modules/maplibre-gl/src/symbol/placement.ts", "../../../node_modules/maplibre-gl/src/style/pauseable_placement.ts", "../../../node_modules/maplibre-gl/src/symbol/cross_tile_symbol_index.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/_prelude.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/clipping_mask.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/shaders.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/_prelude.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/_projection_mercator.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/_projection_globe.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/background.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/background.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/background_pattern.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/background_pattern.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/circle.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/circle.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/clipping_mask.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/heatmap.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/heatmap.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/heatmap_texture.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/heatmap_texture.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/collision_box.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/collision_box.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/collision_circle.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/collision_circle.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/color_relief.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/color_relief.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/debug.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/debug.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/depth.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_outline.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_outline.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_outline_pattern.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_outline_pattern.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_pattern.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_pattern.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_extrusion.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_extrusion.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_extrusion_pattern.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/fill_extrusion_pattern.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/hillshade_prepare.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/hillshade_prepare.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/hillshade.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/hillshade.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_gradient.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_gradient.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_pattern.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_pattern.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_sdf.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_sdf.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_gradient_sdf.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/line_gradient_sdf.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/raster.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/raster.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_icon.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_icon.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_sdf.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_sdf.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_text_and_icon.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/symbol_text_and_icon.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain_depth.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain_depth.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain_coords.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/terrain_coords.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/projection_error_measurement.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/projection_error_measurement.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/atmosphere.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/atmosphere.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/sky.fragment.glsl.g.ts", "../../../node_modules/maplibre-gl/src/shaders/glsl/sky.vertex.glsl.g.ts", "../../../node_modules/maplibre-gl/src/render/mesh.ts", "../../../node_modules/maplibre-gl/src/data/pos_attributes.ts", "../../../node_modules/maplibre-gl/src/geo/projection/mercator_projection.ts", "../../../node_modules/maplibre-gl/src/geo/edge_insets.ts", "../../../node_modules/maplibre-gl/src/geo/transform_helper.ts", "../../../node_modules/maplibre-gl/src/util/primitives/aabb.ts", "../../../node_modules/maplibre-gl/src/geo/projection/mercator_covering_tiles_details_provider.ts", "../../../node_modules/maplibre-gl/src/util/primitives/frustum.ts", "../../../node_modules/maplibre-gl/src/geo/projection/mercator_transform.ts", "../../../node_modules/maplibre-gl/src/geo/projection/camera_helper.ts", "../../../node_modules/maplibre-gl/src/geo/projection/mercator_camera_helper.ts", "../../../node_modules/maplibre-gl/src/webgl/color_mode.ts", "../../../node_modules/maplibre-gl/src/webgl/cull_face_mode.ts", "../../../node_modules/maplibre-gl/src/webgl/depth_mode.ts", "../../../node_modules/maplibre-gl/src/webgl/stencil_mode.ts", "../../../node_modules/maplibre-gl/src/webgl/webgl2.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_projection_error_measurement.ts", "../../../node_modules/maplibre-gl/src/webgl/program/projection_error_measurement_program.ts", "../../../node_modules/maplibre-gl/src/util/create_tile_mesh.ts", "../../../node_modules/maplibre-gl/src/geo/projection/vertical_perspective_projection.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_projection.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_utils.ts", "../../../node_modules/maplibre-gl/src/util/primitives/bounding_volume_cache.ts", "../../../node_modules/maplibre-gl/src/util/primitives/convex_volume.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_covering_tiles_details_provider.ts", "../../../node_modules/maplibre-gl/src/geo/projection/vertical_perspective_transform.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_transform.ts", "../../../node_modules/maplibre-gl/src/geo/projection/vertical_perspective_camera_helper.ts", "../../../node_modules/maplibre-gl/src/geo/projection/globe_camera_helper.ts", "../../../node_modules/maplibre-gl/src/style/style.ts", "../../../node_modules/maplibre-gl/src/geo/projection/projection_factory.ts", "../../../node_modules/maplibre-gl/src/data/raster_bounds_attributes.ts", "../../../node_modules/maplibre-gl/src/webgl/vertex_array_object.ts", "../../../node_modules/maplibre-gl/src/webgl/program/terrain_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/projection_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/pattern.ts", "../../../node_modules/maplibre-gl/src/webgl/program/fill_extrusion_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/fill_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/circle_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/collision_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/debug_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/heatmap_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/hillshade_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/color_relief_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/line_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/raster_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/symbol_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/background_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/program_uniforms.ts", "../../../node_modules/maplibre-gl/src/webgl/program/atmosphere_program.ts", "../../../node_modules/maplibre-gl/src/webgl/program/sky_program.ts", "../../../node_modules/maplibre-gl/src/webgl/index_buffer.ts", "../../../node_modules/maplibre-gl/src/webgl/vertex_buffer.ts", "../../../node_modules/maplibre-gl/src/webgl/value.ts", "../../../node_modules/maplibre-gl/src/util/framebuffer_error.ts", "../../../node_modules/maplibre-gl/src/webgl/framebuffer.ts", "../../../node_modules/maplibre-gl/src/webgl/context.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_collision_debug.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_symbol.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_heatmap.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_line.ts", "../../../node_modules/maplibre-gl/src/render/update_pattern_positions_in_program.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_fill.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_fill_extrusion.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_hillshade.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_color_relief.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_raster.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_debug.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_terrain.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_sky.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/index.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_circle.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_background.ts", "../../../node_modules/maplibre-gl/src/webgl/draw/draw_custom.ts", "../../../node_modules/maplibre-gl/src/render/painter.ts", "../../../node_modules/maplibre-gl/src/util/throttle.ts", "../../../node_modules/maplibre-gl/src/ui/hash.ts", "../../../node_modules/maplibre-gl/src/ui/handler_inertia.ts", "../../../node_modules/maplibre-gl/src/ui/events.ts", "../../../node_modules/maplibre-gl/src/ui/handler/map_event.ts", "../../../node_modules/maplibre-gl/src/ui/handler/transform-provider.ts", "../../../node_modules/maplibre-gl/src/ui/handler/box_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/handler_util.ts", "../../../node_modules/maplibre-gl/src/ui/handler/tap_recognizer.ts", "../../../node_modules/maplibre-gl/src/ui/handler/tap_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/drag_handler.ts", "../../../node_modules/maplibre-gl/src/ui/handler/drag_move_state_manager.ts", "../../../node_modules/maplibre-gl/src/ui/handler/mouse.ts", "../../../node_modules/maplibre-gl/src/ui/handler/touch_pan.ts", "../../../node_modules/maplibre-gl/src/ui/handler/two_fingers_touch.ts", "../../../node_modules/maplibre-gl/src/ui/handler/keyboard.ts", "../../../node_modules/maplibre-gl/src/ui/handler/scroll_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/shim/dblclick_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/click_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/tap_drag_zoom.ts", "../../../node_modules/maplibre-gl/src/ui/handler/shim/drag_pan.ts", "../../../node_modules/maplibre-gl/src/ui/handler/shim/drag_rotate.ts", "../../../node_modules/maplibre-gl/src/ui/handler/shim/two_fingers_touch.ts", "../../../node_modules/maplibre-gl/src/ui/handler/cooperative_gestures.ts", "../../../node_modules/maplibre-gl/src/ui/handler_manager.ts", "../../../node_modules/maplibre-gl/src/ui/camera.ts", "../../../node_modules/maplibre-gl/src/ui/control/attribution_control.ts", "../../../node_modules/maplibre-gl/src/ui/control/logo_control.ts", "../../../node_modules/maplibre-gl/src/util/task_queue.ts", "../../../node_modules/maplibre-gl/src/data/pos3d_attributes.ts", "../../../node_modules/maplibre-gl/src/tile/terrain_tile_manager.ts", "../../../node_modules/maplibre-gl/src/render/terrain.ts", "../../../node_modules/maplibre-gl/src/webgl/render_pool.ts", "../../../node_modules/maplibre-gl/src/webgl/render_to_texture.ts", "../../../node_modules/maplibre-gl/src/ui/default_locale.ts", "../../../node_modules/maplibre-gl/src/ui/map.ts", "../../../node_modules/maplibre-gl/src/ui/control/navigation_control.ts", "../../../node_modules/maplibre-gl/src/util/geolocation_support.ts", "../../../node_modules/maplibre-gl/src/util/smart_wrap.ts", "../../../node_modules/maplibre-gl/src/ui/anchor.ts", "../../../node_modules/maplibre-gl/src/ui/marker.ts", "../../../node_modules/maplibre-gl/src/ui/control/geolocate_control.ts", "../../../node_modules/maplibre-gl/src/ui/control/scale_control.ts", "../../../node_modules/maplibre-gl/src/ui/popup.ts", "../../../node_modules/maplibre-gl/src/index.ts", "../../../node_modules/maplibre-gl/src/ui/control/fullscreen_control.ts", "../../../node_modules/maplibre-gl/src/ui/control/globe_control.ts", "../../../node_modules/maplibre-gl/src/ui/control/terrain_control.ts", "../../../node_modules/maplibre-gl/build/rollup/maplibregl.js", "../../../node_modules/object-assign/index.js", "../../../node_modules/react/cjs/react.development.js", "../../../node_modules/react/index.js", "../../../node_modules/scheduler/cjs/scheduler.development.js", "../../../node_modules/scheduler/index.js", "../../../node_modules/scheduler/cjs/scheduler-tracing.development.js", "../../../node_modules/scheduler/tracing.js", "../../../node_modules/react-dom/cjs/react-dom.development.js", "../../../node_modules/react-dom/index.js", "../../../node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-is/index.js", "../../../node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/prop-types/lib/has.js", "../../../node_modules/prop-types/checkPropTypes.js", "../../../node_modules/prop-types/factoryWithTypeCheckers.js", "../../../node_modules/prop-types/index.js", "../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-redux/node_modules/react-is/index.js", "../../../node_modules/classnames/index.js", "../../../node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../node_modules/dom-helpers/class/hasClass.js", "../../../node_modules/dom-helpers/class/addClass.js", "../../../node_modules/dom-helpers/class/removeClass.js", "../../../node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js", "../../../node_modules/react-transition-group/utils/PropTypes.js", "../../../node_modules/react-transition-group/TransitionGroupContext.js", "../../../node_modules/react-transition-group/Transition.js", "../../../node_modules/react-transition-group/CSSTransition.js", "../../../node_modules/react-transition-group/utils/ChildMapping.js", "../../../node_modules/react-transition-group/TransitionGroup.js", "../../../node_modules/react-transition-group/ReplaceTransition.js", "../../../node_modules/react-transition-group/index.js", "../../../node_modules/leaflet.markercluster/src/MarkerClusterGroup.js", "../../../node_modules/leaflet.markercluster/src/MarkerCluster.js", "../../../node_modules/leaflet.markercluster/src/MarkerOpacity.js", "../../../node_modules/leaflet.markercluster/src/DistanceGrid.js", "../../../node_modules/leaflet.markercluster/src/MarkerCluster.QuickHull.js", "../../../node_modules/leaflet.markercluster/src/MarkerCluster.Spiderfier.js", "../../../node_modules/leaflet.markercluster/src/MarkerClusterGroup.Refresh.js", "../../../node_modules/redux-logger/dist/redux-logger.js", "../../../node_modules/@babel/runtime/helpers/typeof.js", "../../../node_modules/@babel/runtime/helpers/toPrimitive.js", "../../../node_modules/@babel/runtime/helpers/toPropertyKey.js", "../../../node_modules/@babel/runtime/helpers/defineProperty.js", "../../../node_modules/@babel/runtime/helpers/objectSpread2.js", "../../../node_modules/redux/lib/redux.js", "../../../node_modules/redux-devtools-extension/index.js", "../../../node_modules/stackframe/stackframe.js", "../../../node_modules/error-stack-parser/error-stack-parser.js", "../../../node_modules/cross-fetch/dist/browser-ponyfill.js", "../../../node_modules/bintrees/lib/treebase.js", "../../../node_modules/bintrees/lib/rbtree.js", "../../../node_modules/bintrees/lib/bintree.js", "../../../node_modules/bintrees/index.js", "../../../node_modules/tdigest/tdigest.js", "../../../node_modules/chartkick/chart.js/chart.esm.js", "../../../node_modules/@kurkle/color/dist/color.esm.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.core.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.math.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.collection.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.extras.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.easing.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.color.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animations.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.layouts.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.intl.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.ticks.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.defaults.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.canvas.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.options.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.config.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.curve.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.dom.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.interpolation.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.rtl.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.segment.js", "../../../node_modules/chartkick/node_modules/chart.js/src/helpers/helpers.dataset.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animator.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animation.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.animations.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.datasetController.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.bar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.bubble.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.doughnut.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.line.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.polarArea.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.pie.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.radar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/controllers/controller.scatter.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.adapters.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.interaction.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.layouts.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.base.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.basic.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/platform.dom.js", "../../../node_modules/chartkick/node_modules/chart.js/src/platform/index.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.element.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.autoskip.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.scale.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.typedRegistry.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.registry.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.plugins.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.config.js", "../../../node_modules/chartkick/node_modules/chart.js/src/core/core.controller.js", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.arc.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.line.js", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.point.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/elements/element.bar.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.colors.ts", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.decimation.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.options.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.target.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.filler/index.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.legend.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.title.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.subtitle.js", "../../../node_modules/chartkick/node_modules/chart.js/src/plugins/plugin.tooltip.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.category.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.linearbase.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.linear.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.logarithmic.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.radialLinear.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.time.js", "../../../node_modules/chartkick/node_modules/chart.js/src/scales/scale.timeseries.js", "../../../node_modules/chartkick/node_modules/chart.js/src/index.ts", "../../../node_modules/chartkick/node_modules/chart.js/auto/auto.js", "../../../node_modules/date-fns/constants.js", "../../../node_modules/date-fns/constructFrom.js", "../../../node_modules/date-fns/toDate.js", "../../../node_modules/date-fns/addDays.js", "../../../node_modules/date-fns/addMonths.js", "../../../node_modules/date-fns/addMilliseconds.js", "../../../node_modules/date-fns/addHours.js", "../../../node_modules/date-fns/_lib/defaultOptions.js", "../../../node_modules/date-fns/startOfWeek.js", "../../../node_modules/date-fns/startOfISOWeek.js", "../../../node_modules/date-fns/getISOWeekYear.js", "../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../node_modules/date-fns/_lib/normalizeDates.js", "../../../node_modules/date-fns/startOfDay.js", "../../../node_modules/date-fns/differenceInCalendarDays.js", "../../../node_modules/date-fns/startOfISOWeekYear.js", "../../../node_modules/date-fns/addMinutes.js", "../../../node_modules/date-fns/addQuarters.js", "../../../node_modules/date-fns/addSeconds.js", "../../../node_modules/date-fns/addWeeks.js", "../../../node_modules/date-fns/addYears.js", "../../../node_modules/date-fns/compareAsc.js", "../../../node_modules/date-fns/isDate.js", "../../../node_modules/date-fns/isValid.js", "../../../node_modules/date-fns/differenceInCalendarMonths.js", "../../../node_modules/date-fns/differenceInCalendarYears.js", "../../../node_modules/date-fns/differenceInDays.js", "../../../node_modules/date-fns/_lib/getRoundingMethod.js", "../../../node_modules/date-fns/differenceInHours.js", "../../../node_modules/date-fns/differenceInMilliseconds.js", "../../../node_modules/date-fns/differenceInMinutes.js", "../../../node_modules/date-fns/endOfDay.js", "../../../node_modules/date-fns/endOfMonth.js", "../../../node_modules/date-fns/isLastDayOfMonth.js", "../../../node_modules/date-fns/differenceInMonths.js", "../../../node_modules/date-fns/differenceInQuarters.js", "../../../node_modules/date-fns/differenceInSeconds.js", "../../../node_modules/date-fns/differenceInWeeks.js", "../../../node_modules/date-fns/differenceInYears.js", "../../../node_modules/date-fns/startOfQuarter.js", "../../../node_modules/date-fns/startOfMonth.js", "../../../node_modules/date-fns/endOfYear.js", "../../../node_modules/date-fns/startOfYear.js", "../../../node_modules/date-fns/endOfHour.js", "../../../node_modules/date-fns/endOfWeek.js", "../../../node_modules/date-fns/endOfMinute.js", "../../../node_modules/date-fns/endOfQuarter.js", "../../../node_modules/date-fns/endOfSecond.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../node_modules/date-fns/locale/en-US/_lib/match.js", "../../../node_modules/date-fns/locale/en-US.js", "../../../node_modules/date-fns/getDayOfYear.js", "../../../node_modules/date-fns/getISOWeek.js", "../../../node_modules/date-fns/getWeekYear.js", "../../../node_modules/date-fns/startOfWeekYear.js", "../../../node_modules/date-fns/getWeek.js", "../../../node_modules/date-fns/_lib/addLeadingZeros.js", "../../../node_modules/date-fns/_lib/format/lightFormatters.js", "../../../node_modules/date-fns/_lib/format/formatters.js", "../../../node_modules/date-fns/_lib/format/longFormatters.js", "../../../node_modules/date-fns/_lib/protectedTokens.js", "../../../node_modules/date-fns/format.js", "../../../node_modules/date-fns/getDefaultOptions.js", "../../../node_modules/date-fns/getISODay.js", "../../../node_modules/date-fns/transpose.js", "../../../node_modules/date-fns/parse/_lib/Setter.js", "../../../node_modules/date-fns/parse/_lib/Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/EraParser.js", "../../../node_modules/date-fns/parse/_lib/constants.js", "../../../node_modules/date-fns/parse/_lib/utils.js", "../../../node_modules/date-fns/parse/_lib/parsers/YearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MonthParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js", "../../../node_modules/date-fns/setWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js", "../../../node_modules/date-fns/setISOWeek.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DateParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js", "../../../node_modules/date-fns/setDay.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js", "../../../node_modules/date-fns/setISODay.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js", "../../../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/SecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js", "../../../node_modules/date-fns/parse/_lib/parsers.js", "../../../node_modules/date-fns/parse.js", "../../../node_modules/date-fns/startOfHour.js", "../../../node_modules/date-fns/startOfMinute.js", "../../../node_modules/date-fns/startOfSecond.js", "../../../node_modules/date-fns/parseISO.js", "../../../node_modules/chartkick/node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js", "../../../vendor/assets/javascripts/parallax.min.js", "../../../vendor/assets/javascripts/jquery.mousewheel.js", "../../javascript/application.js", "../../javascript/js/add_child.js", "../../javascript/js/buildings.js", "../../javascript/js/cell_renderers.js", "../../../node_modules/axios/lib/helpers/bind.js", "../../../node_modules/axios/lib/utils.js", "../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/axios/lib/helpers/sanitizeHeaderValue.js", "../../../node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/axios/lib/helpers/null.js", "../../../node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/axios/lib/platform/common/utils.js", "../../../node_modules/axios/lib/platform/index.js", "../../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/axios/lib/core/methodList.js", "../../../node_modules/axios/lib/defaults/index.js", "../../../node_modules/axios/lib/core/transformData.js", "../../../node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/axios/lib/core/settle.js", "../../../node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js", "../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/axios/lib/helpers/throttle.js", "../../../node_modules/axios/lib/helpers/progressEventReducer.js", "../../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/axios/lib/core/setFormDataHeaders.js", "../../../node_modules/axios/lib/helpers/resolveConfig.js", "../../../node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/axios/lib/helpers/composeSignals.js", "../../../node_modules/axios/lib/helpers/trackStream.js", "../../../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js", "../../../node_modules/axios/lib/env/data.js", "../../../node_modules/axios/lib/adapters/fetch.js", "../../../node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/axios/lib/helpers/validator.js", "../../../node_modules/axios/lib/core/Axios.js", "../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/axios/lib/helpers/spread.js", "../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../../node_modules/axios/lib/axios.js", "../../../node_modules/axios/index.js", "../../javascript/search/addAttributeFilter.js", "../../javascript/search/selectScope.js", "../../javascript/search/selectAttribute.js", "../../javascript/search/AdvancedSearch.js", "../../javascript/js/census_form.js", "../../javascript/js/home_page.js", "../../javascript/js/terms.js", "../../javascript/passkeys.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@stimulus/core/src/event_listener.ts", "../../../node_modules/@stimulus/core/src/dispatcher.ts", "../../../node_modules/@stimulus/core/src/action_descriptor.ts", "../../../node_modules/@stimulus/core/src/action.ts", "../../../node_modules/@stimulus/core/src/binding.ts", "../../../node_modules/@stimulus/mutation-observers/src/element_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/attribute_observer.ts", "../../../node_modules/@stimulus/multimap/src/set_operations.ts", "../../../node_modules/@stimulus/multimap/src/multimap.ts", "../../../node_modules/@stimulus/multimap/src/indexed_multimap.ts", "../../../node_modules/@stimulus/mutation-observers/src/token_list_observer.ts", "../../../node_modules/@stimulus/mutation-observers/src/value_list_observer.ts", "../../../node_modules/@stimulus/core/src/binding_observer.ts", "../../../node_modules/@stimulus/core/src/context.ts", "../../../node_modules/@stimulus/core/src/definition.ts", "../../../node_modules/@stimulus/core/src/module.ts", "../../../node_modules/@stimulus/core/src/data_map.ts", "../../../node_modules/@stimulus/core/src/selectors.ts", "../../../node_modules/@stimulus/core/src/target_set.ts", "../../../node_modules/@stimulus/core/src/scope.ts", "../../../node_modules/@stimulus/core/src/scope_observer.ts", "../../../node_modules/@stimulus/core/src/router.ts", "../../../node_modules/@stimulus/core/src/schema.ts", "../../../node_modules/@stimulus/core/src/application.ts", "../../../node_modules/@stimulus/core/src/target_properties.ts", "../../../node_modules/@stimulus/core/src/controller.ts", "../../javascript/controllers/autocomplete_controller.js", "../../javascript/controllers/blowup_controller.js", "../../javascript/controllers/census_autocomplete_controller.js", "../../javascript/controllers/hint_popover_controller.js", "../../javascript/js/saved_searches.js", "../../javascript/controllers/load_saved_search_controller.js", "../../javascript/controllers/photo_wizard_controller.js", "../../../node_modules/@maplibre/maplibre-gl-leaflet/dist/leaflet-maplibre-gl.mjs", "../../javascript/forge/maplibreImageFallback.js", "../../javascript/forge/maplibreHousenumbers.js", "../../javascript/forge/mapFunctions.js", "../../javascript/controllers/save_search_controller.js", "../../javascript/controllers/saved_searches_controller.js", "../../javascript/controllers/index.js", "../../javascript/forge/index.jsx", "../../javascript/forge/App.jsx", "../../javascript/forge/Layers.jsx", "../../../node_modules/react-redux/es/components/Provider.js", "../../../node_modules/react-redux/es/components/Context.js", "../../../node_modules/react-redux/es/utils/batch.js", "../../../node_modules/react-redux/es/utils/Subscription.js", "../../../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js", "../../../node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/react-redux/es/components/connectAdvanced.js", "../../../node_modules/react-redux/es/utils/shallowEqual.js", "../../../node_modules/react-redux/es/utils/bindActionCreators.js", "../../../node_modules/react-redux/es/utils/isPlainObject.js", "../../../node_modules/react-redux/es/utils/warning.js", "../../../node_modules/react-redux/es/utils/verifyPlainObject.js", "../../../node_modules/react-redux/es/connect/wrapMapToProps.js", "../../../node_modules/react-redux/es/connect/mapDispatchToProps.js", "../../../node_modules/react-redux/es/connect/mapStateToProps.js", "../../../node_modules/react-redux/es/connect/mergeProps.js", "../../../node_modules/react-redux/es/connect/verifySubselectors.js", "../../../node_modules/react-redux/es/connect/selectorFactory.js", "../../../node_modules/react-redux/es/connect/connect.js", "../../../node_modules/react-redux/es/hooks/useStore.js", "../../../node_modules/react-redux/es/hooks/useReduxContext.js", "../../../node_modules/react-redux/es/hooks/useDispatch.js", "../../../node_modules/react-redux/es/hooks/useSelector.js", "../../../node_modules/react-redux/es/utils/reactBatchedUpdates.js", "../../../node_modules/react-redux/es/index.js", "../../../node_modules/reactstrap/es/utils.js", "../../../node_modules/reactstrap/es/Row.js", "../../../node_modules/reactstrap/es/Col.js", "../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js", "../../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/reactstrap/es/ButtonGroup.js", "../../../node_modules/reactstrap/es/Fade.js", "../../../node_modules/reactstrap/es/Modal.js", "../../../node_modules/reactstrap/es/Portal.js", "../../../node_modules/reactstrap/es/ModalHeader.js", "../../../node_modules/reactstrap/es/ModalBody.js", "../../../node_modules/reactstrap/es/ModalFooter.js", "../../../node_modules/reactstrap/es/FormGroup.js", "../../../node_modules/reactstrap/es/Input.js", "../../../node_modules/reactstrap/es/Label.js", "../../javascript/forge/Map.jsx", "../../javascript/forge/hooks/useLayers.js", "../../javascript/forge/wms.js", "../../javascript/forge/hooks/useMarkers.js", "../../javascript/forge/actions.js", "../../javascript/forge/hooks/useMapTargeting.js", "../../javascript/forge/CensusSearch/index.jsx", "../../javascript/forge/CensusSearch/YearButtons.jsx", "../../javascript/forge/CensusSearch/AddFilter.jsx", "../../javascript/forge/CensusSearch/FilterListItem.jsx", "../../javascript/forge/CensusSearch/Filters.jsx", "../../javascript/forge/CensusSearch/FilterField.jsx", "../../javascript/forge/CensusSearch/BasicField.jsx", "../../javascript/forge/CensusSearch/ScopeSelector.jsx", "../../javascript/forge/CensusSearch/BooleanField.jsx", "../../javascript/forge/CensusSearch/ListField.jsx", "../../javascript/forge/Building/Building.jsx", "../../javascript/forge/Building/Residents.jsx", "../../javascript/forge/Building/Details.jsx", "../../javascript/forge/SimpleFormat.jsx", "../../javascript/forge/Forges.jsx", "../../javascript/forge/reducers/index.js", "../../javascript/forge/reducers/search.js", "../../javascript/forge/reducers/layers.js", "../../javascript/forge/reducers/buildings.js", "../../javascript/forge/store.js", "../../../node_modules/redux-thunk/es/index.js", "../../javascript/miniforge/index.jsx", "../../javascript/miniforge/App.jsx", "../../javascript/miniforge/Layers.jsx", "../../javascript/miniforge/Map.jsx", "../../javascript/miniforge/fullscreenControl.js", "../../javascript/miniforge/Buildings.jsx", "../../javascript/miniforge/reducers.js", "../../../node_modules/promise-polyfill/src/finally.js", "../../../node_modules/promise-polyfill/src/allSettled.js", "../../../node_modules/promise-polyfill/src/any.js", "../../../node_modules/promise-polyfill/src/index.js", "../../../node_modules/@airbrake/browser/src/jsonify_notice.ts", "../../../node_modules/@airbrake/browser/src/metrics.ts", "../../../node_modules/@airbrake/browser/src/scope.ts", "../../../node_modules/@airbrake/browser/src/processor/esp.ts", "../../../node_modules/@airbrake/browser/src/filter/angular_message.ts", "../../../node_modules/@airbrake/browser/src/filter/debounce.ts", "../../../node_modules/@airbrake/browser/src/filter/ignore_noise.ts", "../../../node_modules/@airbrake/browser/src/filter/uncaught_message.ts", "../../../node_modules/@airbrake/browser/src/http_req/fetch.ts", "../../../node_modules/@airbrake/browser/src/http_req/api.ts", "../../../node_modules/@airbrake/browser/src/http_req/node.ts", "../../../node_modules/@airbrake/browser/src/http_req/index.ts", "../../../node_modules/@airbrake/browser/src/tdshared.ts", "../../../node_modules/@airbrake/browser/src/queries.ts", "../../../node_modules/@airbrake/browser/src/queues.ts", "../../../node_modules/@airbrake/browser/src/routes.ts", "../../../node_modules/@airbrake/browser/src/version.ts", "../../../node_modules/@airbrake/browser/src/remote_settings.ts", "../../../node_modules/@airbrake/browser/src/base_notifier.ts", "../../../node_modules/@airbrake/browser/src/filter/window.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/console.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/dom.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/fetch.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/location.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/xhr.ts", "../../../node_modules/@airbrake/browser/src/instrumentation/unhandledrejection.ts", "../../../node_modules/@airbrake/browser/src/notifier.ts"],
"sourcesContent": ["/*!\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v4.2.0\n * MIT License\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Chartkick = factory());\n})(this, (function () { 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n }\n\n // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n function extend(target, source) {\n var key;\n for (key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") { continue; }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i;\n\n function negativeValues(series) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n return false;\n }\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n var matches, year, month, day;\n if (typeof n !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n if ((matches = n.match(DATE_PATTERN))) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n // Date.parse returns milliseconds if valid and NaN if invalid\n n = new Date(Date.parse(str) || n);\n }\n }\n }\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [], i;\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n n = arr;\n }\n return n;\n }\n\n function jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n }\n\n // min\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n }\n\n // max\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n }\n\n // merge library last\n options = merge(options, opts.library || {});\n\n return options;\n };\n }\n\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n\n function sortByNumber(a, b) {\n return a - b;\n }\n\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n function formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var suffixIdx;\n var baseValue = axis ? options.byteScale : value;\n\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n }\n\n // TODO handle manual precision case\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n precision = value >= 1000 ? 4 : 3;\n }\n suffix = \" \" + byteSuffixes[suffixIdx];\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n }\n\n function seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n return null;\n }\n\n function allZeros(data) {\n var i, j, d;\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n return true;\n }\n\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n };\n\n var defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n };\n\n // http://there4.io/2012/05/02/google-chart-color-list/\n var defaultColors = [\n \"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\",\n \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\",\n \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"\n ];\n\n var hideLegend$2 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n };\n\n var setTitle$2 = function (options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n };\n\n var setMin$2 = function (options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n };\n\n var setMax$2 = function (options, max) {\n options.scales.y.max = toFloat(max);\n };\n\n var setBarMin$1 = function (options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n };\n\n var setBarMax$1 = function (options, max) {\n options.scales.x.max = toFloat(max);\n };\n\n var setStacked$2 = function (options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n };\n\n var setXtitle$2 = function (options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n };\n\n var setYtitle$2 = function (options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n };\n\n // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var addOpacity = function (hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n };\n\n // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n var notnull = function (x) {\n return x != null;\n };\n\n var setLabelSize = function (chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n\n var setFormatOptions$1 = function (chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n if (chart.options.bytes) {\n var series = chart.data;\n if (chartType === \"pie\") {\n series = [{data: series}];\n }\n\n // calculate max\n var max = 0;\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n for (var j = 0; j < s.data.length; j++) {\n if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n }\n\n // calculate scale\n var scale = 1;\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n // set step size\n formatOptions.byteScale = scale;\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return label + '(' + context.label + ', ' + context.formattedValue + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var dataPoint = context.raw;\n return label + '(' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n var dataLabel = context.label;\n var value = ': ';\n\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return formatValue(dataLabel, context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n }\n };\n\n var jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n var createDataTable = function (chart, options, chartType) {\n var datasets = [];\n var labels = [];\n\n var colors = chart.options.colors || defaultColors;\n\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n\n var series = chart.data;\n\n var max = 0;\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n\n var i, j, s, d, key, rows = [], rows2 = [];\n\n if (chartType === \"bar\" || chartType === \"column\" || (chart.xtype !== \"number\" && chart.xtype !== \"bubble\")) {\n var sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n rows[key][i] = toFloat(d[1]);\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n\n var value;\n var k;\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i));\n // TODO make this efficient\n day = day && isDay(value);\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n labels.push(value);\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max;\n // custom attribute, for tooltip\n point.v = s$2.data[j$2][2];\n }\n d$1.push(point);\n }\n rows2.push(d$1);\n }\n }\n\n var color;\n var backgroundColor;\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n // use colors for each bar for single series format\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n for (var j$3 = 0; j$3 < colors.length; j$3++) {\n backgroundColor[j$3] = addOpacity(color[j$3], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n // for empty datetime chart\n if (chart.xtype === \"datetime\" && labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n\n if (chart.xtype === \"datetime\" && labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n if (value$1 < minTime) {\n minTime = value$1;\n }\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n if (year || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {hour: \"MMM d, h a\"};\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.x.time.displayFormats = {minute: \"h:mm a\"};\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n options.scales.x.time.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (day) {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (hour) {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (minute) {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n\n var data = {\n labels: labels,\n datasets: datasets\n };\n\n return data;\n };\n\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n\n defaultExport$2.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n var chartOptions = {};\n // fix for https://github.com/chartjs/Chart.js/issues/2441\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n\n var data = createDataTable(chart, options, chartType || \"line\");\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position ||\"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n };\n\n defaultExport$2.prototype.renderPieChart = function renderPieChart (chart) {\n var options = merge({}, baseOptions);\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n\n var labels = [];\n var values = [];\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n\n this.drawChart(chart, \"pie\", data, options);\n };\n\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n var options;\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\";\n\n // ensure gridlines have proper orientation\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n this.drawChart(chart, \"bar\", data, options);\n };\n\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"area\");\n };\n\n defaultExport$2.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart (chart, chartType) {\n chartType = chartType || \"scatter\";\n\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n\n // prevent grouping hover and tooltips\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n };\n\n defaultExport$2.prototype.renderBubbleChart = function renderBubbleChart (chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n\n defaultExport$2.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$2.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n };\n\n var defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n };\n\n var hideLegend$1 = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n };\n\n var setTitle$1 = function (options, title) {\n options.title.text = title;\n };\n\n var setMin$1 = function (options, min) {\n options.yAxis.min = min;\n };\n\n var setMax$1 = function (options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked$1 = function (options, stacked) {\n var stackedValue = stacked ? (stacked === true ? \"normal\" : stacked) : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n };\n\n var setXtitle$1 = function (options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle$1 = function (options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n var setFormatOptions = function(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n };\n\n // skip when axis is an array (like with min/max)\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF ' + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n };\n\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n\n defaultExport$1.prototype.renderLineChart = function renderLineChart (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions), data, i, j;\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n setFormatOptions(chart, options, chartType);\n\n var series = chart.data;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n series[i].marker = {symbol: \"circle\"};\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderScatterChart = function renderScatterChart (chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n };\n\n defaultExport$1.prototype.renderPieChart = function renderPieChart (chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.plotOptions = {pie: {innerSize: \"50%\"}};\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n\n this.drawChart(chart, series, options);\n };\n\n defaultExport$1.prototype.renderColumnChart = function renderColumnChart (chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options), i, j, s, d, rows = [], categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n\n var newSeries = [], d2;\n for (i = 0; i < series.length; i++) {\n d = [];\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n };\n\n defaultExport$1.prototype.renderBarChart = function renderBarChart (chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart (chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n\n defaultExport$1.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$1.prototype.drawChart = function drawChart (chart, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n };\n\n var loaded = {};\n var callbacks = [];\n\n // Set chart options\n var defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n\n var hideLegend = function (options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n };\n\n var setTitle = function (options, title) {\n options.title = title;\n options.titleTextStyle = {color: \"#333\", fontSize: \"20px\"};\n };\n\n var setMin = function (options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax = function (options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin = function (options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax = function (options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked = function (options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n\n var setXtitle = function (options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle = function (options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n var resize = function (callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n callback();\n };\n\n var defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n\n defaultExport.prototype.renderLineChart = function renderLineChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderPieChart = function renderPieChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderColumnChart = function renderColumnChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderBarChart = function renderBarChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderAreaChart = function renderAreaChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderGeoChart = function renderGeoChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderScatterChart = function renderScatterChart (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n\n var series = chart.data, rows2 = [], i, j, data, d;\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n for (j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n\n defaultExport.prototype.renderTimeline = function renderTimeline (chart) {\n var this$1$1 = this;\n\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({type: \"string\", id: \"Name\"});\n data.addColumn({type: \"date\", id: \"Start\"});\n data.addColumn({type: \"date\", id: \"End\"});\n data.addRows(chart.data);\n\n chart.element.style.lineHeight = \"normal\";\n\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n };\n\n // TODO remove resize events\n defaultExport.prototype.destroy = function destroy (chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n\n defaultExport.prototype.drawChart = function drawChart (chart, type, data, options) {\n this.destroy(chart);\n if (chart.destroyed) { return; }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n };\n\n defaultExport.prototype.waitForLoaded = function waitForLoaded (chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({pack: pack, callback: callback});\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true;\n\n // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n var loadOptions = {\n packages: [pack],\n callback: function () { this$1$1.runCallbacks(); }\n };\n var config = chart.__config();\n if (config.language) {\n loadOptions.language = config.language;\n }\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n };\n\n defaultExport.prototype.runCallbacks = function runCallbacks () {\n var cb, call;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = this.library.visualization && ((cb.pack === \"corechart\" && this.library.visualization.LineChart) || (cb.pack === \"timeline\" && this.library.visualization.Timeline) || (cb.pack === \"geochart\" && this.library.visualization.GeoChart));\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n // cant use object as key\n defaultExport.prototype.createDataTable = function createDataTable (series, columnType) {\n var i, j, s, d, key, rows = [], sortedLabels = [];\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = (columnType === \"datetime\") ? d[0].getTime() : d[0];\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n rows[key][i] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var day = true;\n var value;\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n rows2.push([value].concat(rows[i]));\n }\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][0]);\n }\n\n columnType = \"string\";\n }\n\n // create datatable\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n data.addRows(rows2);\n\n return data;\n };\n\n function formatSeriesData(data, keyType) {\n var r = [], j, keyFunc;\n\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n if (keyType === \"bubble\") {\n for (j = 0; j < data.length; j++) {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n }\n } else {\n for (j = 0; j < data.length; j++) {\n r.push([keyFunc(data[j][0]), toFloat(data[j][1])]);\n }\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n\n return r;\n }\n\n function detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n }\n\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n for (j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n return true;\n }\n\n // creates a shallow copy of each element of the array\n // elements are expected to be objects\n function copySeries(series) {\n var newSeries = [], i, j;\n for (i = 0; i < series.length; i++) {\n var copy = {};\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n newSeries.push(copy);\n }\n return newSeries;\n }\n\n function processSeries(chart, keyType, noDatetime) {\n var i;\n\n var opts = chart.options;\n var series = chart.rawData;\n\n // see if one series or multiple\n chart.singleSeriesFormat = (!isArray(series) || typeof series[0] !== \"object\" || isArray(series[0]));\n if (chart.singleSeriesFormat) {\n series = [{name: opts.label, data: series}];\n }\n\n // convert to array\n // must come before dataEmpty check\n series = copySeries(series);\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType ? keyType : (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts));\n\n // right format\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n\n return series;\n }\n\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData), i;\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n return perfectData;\n }\n\n function dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n return true;\n }\n }\n\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\n\n var download = chart.options.download;\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {filename: download};\n }\n link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n var image = document.createElement(\"img\");\n image.alt = \"Download\";\n image.style.border = \"none\";\n // icon from font-awesome\n // http://fa2png.io/\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n\n chart.__downloadAttached = true;\n\n // mouseenter\n chart.__enterEvent = addEvent(element, \"mouseover\", function(e) {\n var related = e.relatedTarget;\n // check download option again to ensure it wasn't changed\n if ((!related || (related !== this && !childOf(this, related))) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n });\n\n // mouseleave\n chart.__leaveEvent = addEvent(element, \"mouseout\", function(e) {\n var related = e.relatedTarget;\n if (!related || (related !== this && !childOf(this, related))) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n }\n\n // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function() {\n // set the this pointer same as addEventListener when fn is called\n return(fn.call(elem, window.event));\n };\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n }\n\n // https://gist.github.com/shawnbot/4166283\n function childOf(p, c) {\n if (p === c) { return false; }\n while (c && c !== p) { c = c.parentNode; }\n return c === p;\n }\n\n var pendingRequests = [], runningRequests = 0, maxRequests = 4;\n\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n\n function runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n }\n\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = (typeof errorThrown === \"string\") ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n xhr.onload = function () {\n requestComplete();\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n xhr.send();\n }\n }\n\n var config = {};\n var adapters = [];\n\n // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n // TODO remove prefix for all messages\n function chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n setText(element, message);\n element.style.color = \"#ff0000\";\n }\n\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n }\n\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n throw new Error(\"Unknown adapter\");\n }\n\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n\n function loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n }\n\n function renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || (chart.options.messages && chart.options.messages.empty) || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart);\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n }\n\n // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n\n loadAdapters();\n\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n }\n\n // define classes\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n\n Chartkick.charts[element.id] = this;\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n\n Chart.prototype.getElement = function getElement () {\n return this.element;\n };\n\n Chart.prototype.getDataSource = function getDataSource () {\n return this.dataSource;\n };\n\n Chart.prototype.getData = function getData () {\n return this.data;\n };\n\n Chart.prototype.getOptions = function getOptions () {\n return this.options;\n };\n\n Chart.prototype.getChartObject = function getChartObject () {\n return this.chart;\n };\n\n Chart.prototype.getAdapter = function getAdapter () {\n return this.adapter;\n };\n\n Chart.prototype.updateData = function updateData (dataSource, options) {\n this.dataSource = dataSource;\n if (options) {\n this.__updateOptions(options);\n }\n fetchDataSource(this, dataSource, true);\n };\n\n Chart.prototype.setOptions = function setOptions (options) {\n this.__updateOptions(options);\n this.redraw();\n };\n\n Chart.prototype.redraw = function redraw () {\n fetchDataSource(this, this.rawData);\n };\n\n Chart.prototype.refreshData = function refreshData () {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + (new Date()).getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n };\n\n Chart.prototype.startRefresh = function startRefresh () {\n var this$1$1 = this;\n\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval( function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n\n Chart.prototype.stopRefresh = function stopRefresh () {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n\n Chart.prototype.toImage = function toImage (download) {\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n };\n\n Chart.prototype.destroy = function destroy () {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n\n Chart.prototype.__updateOptions = function __updateOptions (options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n };\n\n Chart.prototype.__render = function __render () {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n\n Chart.prototype.__config = function __config () {\n return config;\n };\n\n var LineChart = /*@__PURE__*/(function (Chart) {\n function LineChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create( Chart && Chart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName () {\n return \"LineChart\";\n };\n\n return LineChart;\n }(Chart));\n\n var PieChart = /*@__PURE__*/(function (Chart) {\n function PieChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create( Chart && Chart.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName () {\n return \"PieChart\";\n };\n\n return PieChart;\n }(Chart));\n\n var ColumnChart = /*@__PURE__*/(function (Chart) {\n function ColumnChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create( Chart && Chart.prototype );\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName () {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n }(Chart));\n\n var BarChart = /*@__PURE__*/(function (Chart) {\n function BarChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create( Chart && Chart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData () {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName () {\n return \"BarChart\";\n };\n\n return BarChart;\n }(Chart));\n\n var AreaChart = /*@__PURE__*/(function (Chart) {\n function AreaChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create( Chart && Chart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData () {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName () {\n return \"AreaChart\";\n };\n\n return AreaChart;\n }(Chart));\n\n var GeoChart = /*@__PURE__*/(function (Chart) {\n function GeoChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create( Chart && Chart.prototype );\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData () {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName () {\n return \"GeoChart\";\n };\n\n return GeoChart;\n }(Chart));\n\n var ScatterChart = /*@__PURE__*/(function (Chart) {\n function ScatterChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create( Chart && Chart.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData () {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName () {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n }(Chart));\n\n var BubbleChart = /*@__PURE__*/(function (Chart) {\n function BubbleChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create( Chart && Chart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData () {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName () {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n }(Chart));\n\n var Timeline = /*@__PURE__*/(function (Chart) {\n function Timeline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create( Chart && Chart.prototype );\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData () {\n var i, data = this.rawData;\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName () {\n return \"Timeline\";\n };\n\n return Timeline;\n }(Chart));\n\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function (options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function (opts) {\n Chartkick.options = opts;\n },\n eachChart: function (callback) {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function() {\n for (var chartId in Chartkick.charts) {\n if (Chartkick.charts.hasOwnProperty(chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n };\n\n // not ideal, but allows for simpler integration\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n\n // clean up previous charts before Turbolinks loads new page\n document.addEventListener(\"turbolinks:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n document.addEventListener(\"turbo:before-render\", function() {\n if (config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n });\n\n // use setTimeout so charting library can come later in same JS file\n setTimeout(function() {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n }\n\n // backwards compatibility for esm require\n Chartkick.default = Chartkick;\n\n return Chartkick;\n\n}));\n", "// Chosen, a Select Box Enhancer for jQuery and Prototype\n// by Patrick Filler for Harvest, http://getharvest.com\n//\n// Version 1.0.0\n// Full source at https://github.com/harvesthq/chosen\n// Copyright (c) 2011 Harvest http://getharvest.com\n\n// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md\n// This file is generated by `grunt build`, do not edit it by hand.\n(function() {\n var $, AbstractChosen, Chosen, SelectParser, _ref,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n SelectParser = (function() {\n function SelectParser() {\n this.options_index = 0;\n this.parsed = [];\n }\n\n SelectParser.prototype.add_node = function(child) {\n if (child.nodeName.toUpperCase() === \"OPTGROUP\") {\n return this.add_group(child);\n } else {\n return this.add_option(child);\n }\n };\n\n SelectParser.prototype.add_group = function(group) {\n var group_position, option, _i, _len, _ref, _results;\n\n group_position = this.parsed.length;\n this.parsed.push({\n array_index: group_position,\n group: true,\n label: this.escapeExpression(group.label),\n children: 0,\n disabled: group.disabled\n });\n _ref = group.childNodes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n option = _ref[_i];\n _results.push(this.add_option(option, group_position, group.disabled));\n }\n return _results;\n };\n\n SelectParser.prototype.add_option = function(option, group_position, group_disabled) {\n if (option.nodeName.toUpperCase() === \"OPTION\") {\n if (option.text !== \"\") {\n if (group_position != null) {\n this.parsed[group_position].children += 1;\n }\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n value: option.value,\n text: option.text,\n html: option.innerHTML,\n selected: option.selected,\n disabled: group_disabled === true ? group_disabled : option.disabled,\n group_array_index: group_position,\n classes: option.className,\n style: option.style.cssText\n });\n } else {\n this.parsed.push({\n array_index: this.parsed.length,\n options_index: this.options_index,\n empty: true\n });\n }\n return this.options_index += 1;\n }\n };\n\n SelectParser.prototype.escapeExpression = function(text) {\n var map, unsafe_chars;\n\n if ((text == null) || text === false) {\n return \"\";\n }\n if (!/[\\&\\<\\>\\\"\\'\\`]/.test(text)) {\n return text;\n }\n map = {\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"`\": \"`\"\n };\n unsafe_chars = /&(?!\\w+;)|[\\<\\>\\\"\\'\\`]/g;\n return text.replace(unsafe_chars, function(chr) {\n return map[chr] || \"&\";\n });\n };\n\n return SelectParser;\n\n })();\n\n SelectParser.select_to_array = function(select) {\n var child, parser, _i, _len, _ref;\n\n parser = new SelectParser();\n _ref = select.childNodes;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n child = _ref[_i];\n parser.add_node(child);\n }\n return parser.parsed;\n };\n\n AbstractChosen = (function() {\n function AbstractChosen(form_field, options) {\n this.form_field = form_field;\n this.options = options != null ? options : {};\n if (!AbstractChosen.browser_is_supported()) {\n return;\n }\n this.is_multiple = this.form_field.multiple;\n this.set_default_text();\n this.set_default_values();\n this.setup();\n this.set_up_html();\n this.register_observers();\n }\n\n AbstractChosen.prototype.set_default_values = function() {\n var _this = this;\n\n this.click_test_action = function(evt) {\n return _this.test_active_click(evt);\n };\n this.activate_action = function(evt) {\n return _this.activate_field(evt);\n };\n this.active_field = false;\n this.mouse_on_container = false;\n this.results_showing = false;\n this.result_highlighted = null;\n this.result_single_selected = null;\n this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === \"\" ? this.options.allow_single_deselect : false;\n this.disable_search_threshold = this.options.disable_search_threshold || 0;\n this.disable_search = this.options.disable_search || false;\n this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;\n this.group_search = this.options.group_search != null ? this.options.group_search : true;\n this.search_contains = this.options.search_contains || false;\n this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;\n this.max_selected_options = this.options.max_selected_options || Infinity;\n this.inherit_select_classes = this.options.inherit_select_classes || false;\n this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;\n return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;\n };\n\n AbstractChosen.prototype.set_default_text = function() {\n if (this.form_field.getAttribute(\"data-placeholder\")) {\n this.default_text = this.form_field.getAttribute(\"data-placeholder\");\n } else if (this.is_multiple) {\n this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;\n } else {\n this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;\n }\n return this.results_none_found = this.form_field.getAttribute(\"data-no_results_text\") || this.options.no_results_text || AbstractChosen.default_no_result_text;\n };\n\n AbstractChosen.prototype.mouse_enter = function() {\n return this.mouse_on_container = true;\n };\n\n AbstractChosen.prototype.mouse_leave = function() {\n return this.mouse_on_container = false;\n };\n\n AbstractChosen.prototype.input_focus = function(evt) {\n var _this = this;\n\n if (this.is_multiple) {\n if (!this.active_field) {\n return setTimeout((function() {\n return _this.container_mousedown();\n }), 50);\n }\n } else {\n if (!this.active_field) {\n return this.activate_field();\n }\n }\n };\n\n AbstractChosen.prototype.input_blur = function(evt) {\n var _this = this;\n\n if (!this.mouse_on_container) {\n this.active_field = false;\n return setTimeout((function() {\n return _this.blur_test();\n }), 100);\n }\n };\n\n AbstractChosen.prototype.results_option_build = function(options) {\n var content, data, _i, _len, _ref;\n\n content = '';\n _ref = this.results_data;\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n data = _ref[_i];\n if (data.group) {\n content += this.result_add_group(data);\n } else {\n content += this.result_add_option(data);\n }\n if (options != null ? options.first : void 0) {\n if (data.selected && this.is_multiple) {\n this.choice_build(data);\n } else if (data.selected && !this.is_multiple) {\n this.single_set_selected_text(data.text);\n }\n }\n }\n return content;\n };\n\n AbstractChosen.prototype.result_add_option = function(option) {\n var classes, style;\n\n if (!option.search_match) {\n return '';\n }\n if (!this.include_option_in_results(option)) {\n return '';\n }\n classes = [];\n if (!option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"active-result\");\n }\n if (option.disabled && !(option.selected && this.is_multiple)) {\n classes.push(\"disabled-result\");\n }\n if (option.selected) {\n classes.push(\"result-selected\");\n }\n if (option.group_array_index != null) {\n classes.push(\"group-option\");\n }\n if (option.classes !== \"\") {\n classes.push(option.classes);\n }\n style = option.style.cssText !== \"\" ? \" style=\\\"\" + option.style + \"\\\"\" : \"\";\n return \"