@nextgis/leaflet-map-adapter 1.19.4 → 1.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /** Bundle of @nextgis/leaflet-map-adapter; version: 1.19.4; author: NextGIS */
1
+ /** Bundle of @nextgis/leaflet-map-adapter; version: 1.19.5; author: NextGIS */
2
2
  import { EventEmitter } from 'events';
3
3
  import { Control, DomEvent, GeoJSON, DivIcon, Marker, CircleMarker, FeatureGroup, ImageOverlay as ImageOverlay$1, Layer, Util, CRS, GridLayer, DomUtil, TileLayer as TileLayer$1, Map } from 'leaflet';
4
4
  import { defined, debounce as debounce$1 } from '@nextgis/utils';
@@ -824,6 +824,7 @@ class GeoJsonAdapter extends BaseAdapter {
824
824
  layer,
825
825
  ...createFeaturePositionOptions(feature),
826
826
  };
827
+ // @ts-ignore
827
828
  layer.options.pane = this.pane;
828
829
  this._layers.push(def);
829
830
  let ok = true;
@@ -1 +1 @@
1
- {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/controls/Attribution.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/utils/boundsToArray.ts","../src/utils/detectType.ts","../src/utils/geometries.ts","../src/layer-adapters/BaseAdapter.ts","../src/utils/convertMapClickEvent.ts","../src/utils/createMouseEvent.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeoJsonEvents.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeojsonPaint.ts","../src/layer-adapters/GeoJsonAdapter/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import { Control } from 'leaflet';\n\nimport type { AttributionControlOptions } from '@nextgis/webmap';\nimport type { ControlOptions } from 'leaflet';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import { Control, DomEvent } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapAdapter,\n MapControl,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { DomEvent } from 'leaflet';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport type { Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBounds } from 'leaflet';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from './boundsToArray';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import type { AdapterOptions, MainLayerAdapter } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(\n public map: Map,\n public options: O,\n ) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import type { MapClickEvent } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import { createMouseEvent } from '../../../utils/createMouseEvent';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\nimport type { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { Layer } from 'leaflet';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nexport class GeoJsonEvents {\n private layer: GeoJsonAdapter;\n\n private _onclick?: (e: LeafletMouseEvent) => void;\n private _mouseout?: (e: LeafletMouseEvent) => void;\n private _mouseover?: (e: LeafletMouseEvent) => void;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } =\n this.layer.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n\n if (onClick_) {\n this._onclick = (e: LeafletMouseEvent) => {\n const selected = !!this.layer._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n };\n layer.on('click', this._onclick, this);\n }\n if (onMouseOut) {\n this._mouseout = (e: LeafletMouseEvent) => {\n onMouseOut(this._createMouseEvent(e));\n };\n layer.on('mouseout', this._mouseout, this);\n }\n if (onMouseOver) {\n this._mouseover = (e: LeafletMouseEvent) => {\n onMouseOver(this._createMouseEvent(e));\n };\n layer.on('mouseover', this._mouseover, this);\n }\n }\n\n stopMouseEvents(layer: Layer) {\n if (this._mouseover) {\n layer.off('mouseover', this._mouseover, this);\n }\n if (this._mouseout) {\n layer.off('mouseout', this._mouseout, this);\n }\n if (this._onclick) {\n layer.off('click', this._onclick, this);\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this.layer,\n source: source as LeafletMouseEvent,\n });\n }\n}\n","import { isPaint, isPaintCallback } from '@nextgis/paint';\nimport { defined } from '@nextgis/utils';\nimport { CircleMarker, DivIcon, Marker } from 'leaflet';\n\nimport { PAINT } from '../../../utils/geometries';\n\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\nimport type {\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type {\n CircleMarkerOptions,\n GeoJSONOptions,\n LatLngExpression,\n Path,\n PathOptions,\n} from 'leaflet';\n\nexport class GeoJsonPaint {\n private layer: GeoJsonAdapter;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n setPaintEachLayer(paint: VectorAdapterLayerPaint) {\n this.layer._layers.forEach((layerDef) => {\n this.setPaint(layerDef, paint);\n });\n }\n\n setPaint(layerDef: LayerDef, paint: VectorAdapterLayerPaint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = layerDef;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.layer.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n setTimeout(() => {\n marker.setIcon(divIcon);\n }, 10);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this.preparePaint(style));\n }\n }\n }\n }\n\n preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.layer.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n const opacity = this.layer.options.opacity;\n let paintProp = (paint as PathPaint)[from];\n if (defined(opacity) && from.toLowerCase().indexOf('opacity') !== -1) {\n paintProp = Number(paintProp) * opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n _createDivIcon(icon: IconPaint) {\n const { html, rotate, className, ...toLIconOpt } = icon;\n\n const element = document.createElement('div');\n if (className) {\n element.className = className;\n }\n if (rotate) {\n element.style.transform = `rotateZ(${rotate}deg)`;\n }\n if (html) {\n element.innerHTML = html;\n }\n\n const divIcon = new DivIcon({\n className: '',\n ...toLIconOpt,\n html: element,\n });\n return divIcon;\n }\n\n createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (_: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (_: any, latlng: LatLngExpression) => {\n return new Marker(latlng);\n };\n }\n }\n return (_: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this.preparePaint({ ...p, ...icon }));\n };\n }\n\n createPaintOptions(paint: VectorAdapterLayerPaint): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const newPaint = this.preparePaint(paint);\n if (paint) {\n geoJsonOptions.style = () => {\n return newPaint;\n };\n }\n if (this.layer.type === 'point') {\n (geoJsonOptions as any).pointToLayer = this.createPaintToLayer(\n paint as IconPaint,\n );\n } else if (this.layer.type === 'line') {\n newPaint.stroke = true;\n }\n return geoJsonOptions;\n }\n}\n","import { debounce, defined } from '@nextgis/utils';\nimport { DomEvent, FeatureGroup, GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from '../../utils/boundsToArray';\nimport { detectType } from '../../utils/detectType';\nimport {\n PAINT,\n createFeaturePositionOptions,\n filterGeometries,\n typeAlias,\n} from '../../utils/geometries';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { GeoJsonEvents } from './utils/GeoJsonEvents';\nimport { GeoJsonPaint } from './utils/GeojsonPaint';\n\nimport type { IconPaint, Paint, VectorAdapterLayerPaint } from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n DataLayerFilter,\n GeoJsonAdapterOptions,\n LayerDefinition,\n OnLayerSelectType,\n PopupOnCloseFunction,\n PopupOptions,\n VectorAdapterLayerType,\n VectorLayerAdapter,\n} from '@nextgis/webmap';\nimport type { Feature, GeoJsonObject, Point } from 'geojson';\nimport type {\n GeoJSONOptions,\n PopupOptions as LPopupOptions,\n LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n} from 'leaflet';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n type?: VectorAdapterLayerType;\n _layers: LayerDef[] = [];\n _events: GeoJsonEvents;\n private paint?: Paint;\n private selectedPaint?: Paint;\n\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n private _paint: GeoJsonPaint;\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n this._events = new GeoJsonEvents(this);\n this._paint = new GeoJsonPaint(this);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._paint.setPaintEachLayer(\n this.selectedPaint as VectorAdapterLayerPaint,\n );\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._paint.setPaintEachLayer(this.paint as VectorAdapterLayerPaint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, this.paint as VectorAdapterLayerPaint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, this.selectedPaint as VectorAdapterLayerPaint);\n }\n }\n\n _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n const { label, labelField, labelOnHover } = this.options;\n if (layer) {\n layer.unbindTooltip();\n let message: string | undefined;\n if (feature.properties && labelField) {\n message = feature.properties[labelField];\n } else if (label) {\n message = label({\n target: this,\n ...layerDef,\n ...createFeaturePositionOptions(feature),\n });\n }\n if (message) {\n const permanent = !labelOnHover;\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._paint.createPaintToLayer(\n iconOpt as IconPaint,\n );\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._paint.preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._paint.preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._paint.createPaintOptions(paint as VectorAdapterLayerPaint);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._events.handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._paint.setPaint(def, selectedPaint as VectorAdapterLayerPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._paint.setPaint(\n def,\n this.options.paint as VectorAdapterLayerPaint,\n );\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { label, labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if ((labelField || label) && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import { ImageOverlay as LImageOverlay } from 'leaflet';\n\nimport { callAjax } from '../../utils/callAjax';\n\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { CRS, Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\n\nimport type { MainLayerAdapter } from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\n\nimport { debounce } from '../../../utils/src';\n\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileAdapter } from './TileAdapter/TileAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayer } from 'leaflet';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import { TileLayer } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { WmsLayer as WMS } from './WmsLayer';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBoundsExpression } from 'leaflet';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\n\nimport { Control, Map } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n ButtonControlOptions,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\n ControlPosition,\n FitBoundsOptions,\n GridLayer,\n LatLngBoundsExpression,\n Layer,\n LeafletEvent,\n LeafletMouseEvent,\n LocationEvent,\n} from 'leaflet';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) ?? undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"leaflet-map-adapter.esm-bundler.js","sources":["../src/controls/Attribution.ts","../src/controls/createControl.ts","../src/controls/createButtonControl.ts","../src/utils/boundsToArray.ts","../src/utils/detectType.ts","../src/utils/geometries.ts","../src/layer-adapters/BaseAdapter.ts","../src/utils/convertMapClickEvent.ts","../src/utils/createMouseEvent.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeoJsonEvents.ts","../src/layer-adapters/GeoJsonAdapter/utils/GeojsonPaint.ts","../src/layer-adapters/GeoJsonAdapter/GeoJsonAdapter.ts","../src/utils/callAjax.ts","../src/layer-adapters/ImageAdapter/ImageOverlay.ts","../src/layer-adapters/ImageAdapter/ImageLayer.ts","../src/layer-adapters/ImageAdapter/ImageAdapter.ts","../../utils/src/debounce.ts","../src/utils/makeRemoteTileLayer.ts","../src/layer-adapters/TileAdapter/TileLayer.ts","../src/layer-adapters/TileAdapter/TileAdapter.ts","../src/layer-adapters/OsmAdapter.ts","../src/layer-adapters/WmsAdapter/WmsLayer.ts","../src/layer-adapters/WmsAdapter/WmsAdapter.ts","../src/utils/arrayToBoundsExpression.ts","../src/LeafletMapAdapter.ts","../src/index.ts"],"sourcesContent":["import { Control } from 'leaflet';\n\nimport type { AttributionControlOptions } from '@nextgis/webmap';\nimport type { ControlOptions } from 'leaflet';\n\nexport class AttributionControl extends Control.Attribution {\n // options: AttributionControlOptions\n constructor(options: AttributionControlOptions & ControlOptions) {\n super(options);\n const customAttribution = options && options.customAttribution;\n if (customAttribution) {\n let attributions: string[] = [];\n if (Array.isArray(customAttribution)) {\n attributions = customAttribution;\n } else if (customAttribution) {\n attributions = [customAttribution];\n }\n attributions.forEach((x) => this.addAttribution(x));\n }\n }\n}\n","import { Control, DomEvent } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapAdapter,\n MapControl,\n} from '@nextgis/webmap';\n\nexport function createControl(\n control: MapControl,\n options: CreateControlOptions = {},\n map: MapAdapter,\n): Control {\n const C = Control.extend({\n onAdd() {\n const element = document.createElement('div');\n const content = control.onAdd(map);\n element.classList.add('leaflet-control');\n if (options.bar) {\n element.classList.add('leaflet-bar');\n }\n if (options.addClass) {\n element.classList.add(options.addClass);\n }\n if (!options.margin && !options.bar) {\n element.style.marginBottom = '0px';\n element.style.marginTop = '0px';\n element.style.marginLeft = '0px';\n element.style.marginRight = '0px';\n }\n if (content) {\n element.appendChild(content);\n }\n\n DomEvent.disableClickPropagation(element);\n\n return element;\n },\n onRemove() {\n control.onRemove();\n },\n });\n return new C();\n}\n","import { DomEvent } from 'leaflet';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions, MapAdapter } from '@nextgis/webmap';\nimport type { Control } from 'leaflet';\n\nexport function createButtonControl(\n options: ButtonControlOptions,\n map: MapAdapter,\n): Control {\n const link = document.createElement('a');\n\n const title = options.title || '';\n link.href = '#';\n link.title = title;\n\n link.setAttribute('role', 'button');\n link.setAttribute('aria-label', title);\n\n if (options.addClass) {\n link.classList.add(options.addClass);\n }\n\n DomEvent.disableClickPropagation(link);\n DomEvent.on(link, 'click', DomEvent.stop);\n\n if (options.html instanceof HTMLElement) {\n link.appendChild(options.html);\n } else if (typeof options.html === 'string') {\n link.innerHTML = options.html;\n }\n\n const onClick = (e: Event) => {\n e.stopPropagation();\n options.onClick();\n };\n\n return createControl(\n {\n onAdd() {\n if (options.onClick !== undefined) {\n link.addEventListener('click', onClick);\n }\n return link;\n },\n onRemove() {\n const parent = link.parentNode;\n if (parent) {\n parent.removeChild(link);\n }\n if (options.onClick !== undefined) {\n link.removeEventListener('click', onClick);\n }\n },\n },\n { bar: true },\n map,\n );\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBounds } from 'leaflet';\n\nexport function boundsToArray(bounds: LatLngBounds): LngLatBoundsArray {\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n}\n","import type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\n\nfunction findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName = '';\n for (const c in counts) {\n const maxCount = maxName ? counts[maxName] : 0;\n if (counts[c] > maxCount) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\nexport function detectType(geojson: GeoJsonObject): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from './boundsToArray';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FeaturePosition, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n Feature,\n FeatureCollection,\n GeoJsonGeometryTypes,\n GeoJsonObject,\n GeometryCollection,\n} from 'geojson';\nimport type { LatLngBounds } from 'leaflet';\n\nexport const typeAlias: {\n [key in GeoJsonGeometryTypes]: VectorAdapterLayerType;\n} = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n GeometryCollection: 'polygon',\n};\n\nexport const PAINT = {\n stroke: false,\n opacity: 1,\n};\n\nexport const backAliases: {\n [key in VectorAdapterLayerType]?: GeoJsonGeometryTypes[];\n} = {};\n\nfor (const a in typeAlias) {\n const layerType = typeAlias[a as GeoJsonGeometryTypes];\n const backAlias = backAliases[layerType] || [];\n backAlias.push(a as GeoJsonGeometryTypes);\n backAliases[layerType] = backAlias;\n}\n\nexport function geometryFilter(\n geometry: GeoJsonGeometryTypes,\n type: VectorAdapterLayerType,\n): boolean {\n const geoJsonGeometry = backAliases[type] || [];\n return geoJsonGeometry.indexOf(geometry) !== -1;\n}\n\nexport function filterGeometries(\n data: GeoJsonObject,\n type: VectorAdapterLayerType,\n): GeoJsonObject | false {\n if (data.type === 'FeatureCollection') {\n const _data = data as FeatureCollection;\n _data.features = _data.features.filter((f) =>\n geometryFilter(f.geometry.type, type),\n );\n } else if (data.type === 'Feature') {\n const allow = geometryFilter((data as Feature).geometry.type, type);\n if (!allow) {\n return false;\n }\n } else if (data.type === 'GeometryCollection') {\n const _data = data as GeometryCollection;\n _data.geometries = _data.geometries.filter((g) =>\n geometryFilter(g.type, type),\n );\n }\n return data;\n}\n\nfunction featuresBounds(features: Feature | Feature[]): LatLngBounds {\n const geoJsonLayer = new GeoJSON();\n const features_ = Array.isArray(features) ? features : [features];\n features_.forEach((f) => geoJsonLayer.addData(f));\n return geoJsonLayer.getBounds();\n}\n\nexport function getFeaturesBounds(\n features: Feature | Feature[],\n): LngLatBoundsArray {\n return boundsToArray(featuresBounds(features));\n}\n\nexport function getFeaturesCenter(features: Feature | Feature[]): LngLatArray {\n const { lat, lng } = featuresBounds(features).getCenter();\n return [lng, lat];\n}\n\nexport function createFeaturePositionOptions(\n features: Feature | Feature[],\n): FeaturePosition {\n return {\n getBounds: () => getFeaturesBounds(features),\n getCenter: () => getFeaturesCenter(features),\n };\n}\n","import type { AdapterOptions, MainLayerAdapter } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class BaseAdapter<O extends AdapterOptions = AdapterOptions, L = any>\n implements MainLayerAdapter<Map, L, O>\n{\n layer?: L;\n protected pane = 'order-0';\n\n constructor(\n public map: Map,\n public options: O,\n ) {\n if (options.order !== undefined) {\n const pane = 'order-' + options.order;\n let exist = map.getPane(pane);\n if (!exist) {\n exist = map.createPane(pane);\n }\n exist.style.zIndex = String(Math.round(options.order * 100));\n this.pane = pane;\n }\n }\n\n addLayer(options: O): L | Promise<L> | undefined {\n Object.assign(this.options, options);\n return undefined;\n }\n}\n","import type { MapClickEvent } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport function convertMapClickEvent(evt: LeafletMouseEvent): MapClickEvent {\n const coord = evt.containerPoint;\n const latLng = evt.latlng;\n const { lat, lng } = latLng;\n return {\n latLng,\n lngLat: [lng, lat],\n pixel: { left: coord.x, top: coord.y },\n source: evt,\n };\n}\n","import { convertMapClickEvent } from './convertMapClickEvent';\nimport { createFeaturePositionOptions } from './geometries';\n\nimport type { LayerDef } from '../layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport type { LayerAdapter, OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { LeafletMouseEvent } from 'leaflet';\n\nexport interface CreateMouseEventOptions {\n layer: LayerAdapter;\n source: LeafletMouseEvent;\n}\n\nexport function createMouseEvent({\n layer,\n source,\n}: CreateMouseEventOptions): OnLayerMouseOptions {\n const layer_ = source.target as LayerDef;\n const feature = layer_.feature;\n const opt: OnLayerMouseOptions = {\n layer,\n feature,\n event: convertMapClickEvent(source),\n source,\n ...createFeaturePositionOptions(feature),\n };\n return opt;\n}\n","import { createMouseEvent } from '../../../utils/createMouseEvent';\n\nimport type { GeoJsonAdapter } from '../GeoJsonAdapter';\nimport type { OnLayerMouseOptions } from '@nextgis/webmap';\nimport type { Layer } from 'leaflet';\nimport type { LeafletEvent, LeafletMouseEvent } from 'leaflet';\n\nexport class GeoJsonEvents {\n private layer: GeoJsonAdapter;\n\n private _onclick?: (e: LeafletMouseEvent) => void;\n private _mouseout?: (e: LeafletMouseEvent) => void;\n private _mouseover?: (e: LeafletMouseEvent) => void;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n handleMouseEvents(layer: Layer) {\n const { onClick, onLayerClick, onMouseOut, onMouseOver } =\n this.layer.options;\n // TODO: remove backward compatibility for onLayerClick\n const onClick_ = onClick || onLayerClick;\n\n if (onClick_) {\n this._onclick = (e: LeafletMouseEvent) => {\n const selected = !!this.layer._getSelected(layer);\n onClick_({\n selected,\n ...this._createMouseEvent(e),\n });\n };\n layer.on('click', this._onclick, this);\n }\n if (onMouseOut) {\n this._mouseout = (e: LeafletMouseEvent) => {\n onMouseOut(this._createMouseEvent(e));\n };\n layer.on('mouseout', this._mouseout, this);\n }\n if (onMouseOver) {\n this._mouseover = (e: LeafletMouseEvent) => {\n onMouseOver(this._createMouseEvent(e));\n };\n layer.on('mouseover', this._mouseover, this);\n }\n }\n\n stopMouseEvents(layer: Layer) {\n if (this._mouseover) {\n layer.off('mouseover', this._mouseover, this);\n }\n if (this._mouseout) {\n layer.off('mouseout', this._mouseout, this);\n }\n if (this._onclick) {\n layer.off('click', this._onclick, this);\n }\n }\n\n private _createMouseEvent(source: LeafletEvent): OnLayerMouseOptions {\n return createMouseEvent({\n layer: this.layer,\n source: source as LeafletMouseEvent,\n });\n }\n}\n","import { isPaint, isPaintCallback } from '@nextgis/paint';\nimport { defined } from '@nextgis/utils';\nimport { CircleMarker, DivIcon, Marker } from 'leaflet';\n\nimport { PAINT } from '../../../utils/geometries';\n\nimport type { GeoJsonAdapter, LayerDef } from '../GeoJsonAdapter';\nimport type {\n IconPaint,\n PathPaint,\n VectorAdapterLayerPaint,\n} from '@nextgis/paint';\nimport type {\n CircleMarkerOptions,\n GeoJSONOptions,\n LatLngExpression,\n Path,\n PathOptions,\n} from 'leaflet';\n\nexport class GeoJsonPaint {\n private layer: GeoJsonAdapter;\n\n constructor(layer: GeoJsonAdapter) {\n this.layer = layer;\n }\n\n setPaintEachLayer(paint: VectorAdapterLayerPaint) {\n this.layer._layers.forEach((layerDef) => {\n this.setPaint(layerDef, paint);\n });\n }\n\n setPaint(layerDef: LayerDef, paint: VectorAdapterLayerPaint) {\n let style: VectorAdapterLayerPaint | undefined = undefined;\n const { layer, feature } = layerDef;\n if (layer && feature) {\n if (isPaintCallback(paint)) {\n style = paint(feature);\n } else if (isPaint(paint)) {\n style = paint;\n }\n if (style) {\n if (this.layer.type === 'point' && style.type === 'icon') {\n const marker = layer as Marker;\n const divIcon = this._createDivIcon(style);\n setTimeout(() => {\n marker.setIcon(divIcon);\n }, 10);\n } else if ('setStyle' in layer) {\n (layer as Path).setStyle(this.preparePaint(style));\n }\n }\n }\n }\n\n preparePaint(paint: VectorAdapterLayerPaint): PathOptions {\n if (paint.type !== 'get-paint') {\n const paintAliases: [keyof PathOptions, keyof PathPaint][] = [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['stroke', 'stroke'],\n ['fillColor', 'fillColor'],\n ['fillOpacity', 'fillOpacity'],\n ['fill', 'fill'],\n ['weight', 'weight'],\n ];\n const aliases: [keyof PathOptions, keyof PathPaint][] =\n this.layer.type === 'line'\n ? [\n ['color', 'strokeColor'],\n ['opacity', 'strokeOpacity'],\n ['weight', 'weight'],\n ]\n : paintAliases;\n\n const readyPaint: PathOptions & CircleMarkerOptions = {};\n\n if ('radius' in paint && typeof paint.radius === 'number') {\n readyPaint.radius = paint.radius;\n }\n for (const [to, from] of aliases) {\n const opacity = this.layer.options.opacity;\n let paintProp = (paint as PathPaint)[from];\n if (defined(opacity) && from.toLowerCase().indexOf('opacity') !== -1) {\n paintProp = Number(paintProp) * opacity;\n }\n\n if (paintProp !== undefined) {\n Object.defineProperty(readyPaint, to, {\n enumerable: true,\n value: paintProp,\n });\n }\n }\n\n return readyPaint;\n }\n return PAINT;\n }\n\n _createDivIcon(icon: IconPaint) {\n const { html, rotate, className, ...toLIconOpt } = icon;\n\n const element = document.createElement('div');\n if (className) {\n element.className = className;\n }\n if (rotate) {\n element.style.transform = `rotateZ(${rotate}deg)`;\n }\n if (html) {\n element.innerHTML = html;\n }\n\n const divIcon = new DivIcon({\n className: '',\n ...toLIconOpt,\n html: element,\n });\n return divIcon;\n }\n\n createPaintToLayer(icon: IconPaint) {\n if (icon && icon.type) {\n if (icon.type === 'icon') {\n const iconClassName = icon.className;\n const html = icon.html;\n if (iconClassName || html) {\n return (_: any, latlng: LatLngExpression) => {\n const divIcon = this._createDivIcon(icon);\n return new Marker(latlng, { icon: divIcon });\n };\n }\n } else if (icon.type === 'pin') {\n return (_: any, latlng: LatLngExpression) => {\n return new Marker(latlng);\n };\n }\n }\n return (_: any, latlng: LatLngExpression) => {\n const p: any = PAINT;\n return new CircleMarker(latlng, this.preparePaint({ ...p, ...icon }));\n };\n }\n\n createPaintOptions(paint: VectorAdapterLayerPaint): GeoJSONOptions {\n const geoJsonOptions: GeoJSONOptions = {};\n const newPaint = this.preparePaint(paint);\n if (paint) {\n geoJsonOptions.style = () => {\n return newPaint;\n };\n }\n if (this.layer.type === 'point') {\n (geoJsonOptions as any).pointToLayer = this.createPaintToLayer(\n paint as IconPaint,\n );\n } else if (this.layer.type === 'line') {\n newPaint.stroke = true;\n }\n return geoJsonOptions;\n }\n}\n","import { debounce, defined } from '@nextgis/utils';\nimport { DomEvent, FeatureGroup, GeoJSON } from 'leaflet';\n\nimport { boundsToArray } from '../../utils/boundsToArray';\nimport { detectType } from '../../utils/detectType';\nimport {\n PAINT,\n createFeaturePositionOptions,\n filterGeometries,\n typeAlias,\n} from '../../utils/geometries';\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { GeoJsonEvents } from './utils/GeoJsonEvents';\nimport { GeoJsonPaint } from './utils/GeojsonPaint';\n\nimport type { IconPaint, Paint, VectorAdapterLayerPaint } from '@nextgis/paint';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n DataLayerFilter,\n GeoJsonAdapterOptions,\n LayerDefinition,\n OnLayerSelectType,\n PopupOnCloseFunction,\n PopupOptions,\n VectorAdapterLayerType,\n VectorLayerAdapter,\n} from '@nextgis/webmap';\nimport type { Feature, GeoJsonObject, Point } from 'geojson';\nimport type {\n GeoJSONOptions,\n PopupOptions as LPopupOptions,\n LatLng,\n LatLngExpression,\n Layer,\n LeafletMouseEvent,\n Map,\n} from 'leaflet';\n\nexport type LayerDef = LayerDefinition<Feature, Layer>;\n\nexport class GeoJsonAdapter\n extends BaseAdapter<GeoJsonAdapterOptions>\n implements VectorLayerAdapter<Map>\n{\n layer?: FeatureGroup;\n selected = false;\n\n type?: VectorAdapterLayerType;\n _layers: LayerDef[] = [];\n _events: GeoJsonEvents;\n private paint?: Paint;\n private selectedPaint?: Paint;\n\n private _selectedLayers: LayerDef[] = [];\n private _filteredLayers: LayerDef[] = [];\n private _filterFun?: DataLayerFilter<Feature>;\n private _openedPopup: [Layer, PopupOnCloseFunction[], LayerDef][] = [];\n private _paint: GeoJsonPaint;\n\n private $updateTooltip = debounce(() => {\n this.updateTooltip();\n }, 300);\n\n constructor(map: Map, options: GeoJsonAdapterOptions) {\n super(map, options);\n this._events = new GeoJsonEvents(this);\n this._paint = new GeoJsonPaint(this);\n }\n\n addLayer(options: GeoJsonAdapterOptions): FeatureGroup<any> | undefined {\n Object.assign(this.options, options);\n this.paint = options.paint;\n this.layer = new FeatureGroup([], {\n ...options.nativeOptions,\n pane: this.pane,\n });\n this.selectedPaint = options.selectedPaint;\n options.paint = this.paint;\n\n if (options.data) {\n this.addData(options.data);\n }\n\n this._addMapListener();\n\n return this.layer;\n }\n\n beforeRemove(): void {\n this._removeMapListener();\n }\n\n select(findFeatureFun?: DataLayerFilter): void {\n this.unselect();\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n for (const x of def) {\n this._selectLayer(x, 'api');\n }\n } else if (!this.selected) {\n this.selected = true;\n if (this.selectedPaint) {\n this._paint.setPaintEachLayer(\n this.selectedPaint as VectorAdapterLayerPaint,\n );\n }\n }\n }\n\n unselect(findFeatureFun?: DataLayerFilter): void {\n if (findFeatureFun) {\n const feature = this._layers.filter(findFeatureFun);\n feature.forEach((x) => {\n this._unSelectLayer(x);\n });\n } else if (this.selected) {\n for (const p of this._openedPopup) {\n this._removePopup(p[0]);\n }\n if (this.paint) {\n this._paint.setPaintEachLayer(this.paint as VectorAdapterLayerPaint);\n }\n this._selectedLayers.length = 0;\n this.selected = false;\n }\n }\n\n getSelected(): LayerDefinition<Feature, LayerDef>[] {\n return this._selectedLayers.map((x) => {\n return {\n target: this,\n feature: x.feature,\n layer: x,\n ...createFeaturePositionOptions(x.feature),\n };\n });\n }\n\n getFiltered(): LayerDef[] {\n return this._filteredLayers;\n }\n\n filter(fun?: DataLayerFilter): LayerDef[] {\n // Some optimization\n this._filterFun = fun;\n const layer_ = this.layer;\n const map = layer_ && (layer_ as any)._map;\n if (layer_ && map) {\n layer_.remove();\n\n const filteredLayers: LayerDef[] = [];\n this._layers.forEach(({ feature, layer }) => {\n if (layer) {\n const ok = fun\n ? fun({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n })\n : true;\n if (ok) {\n layer_.addLayer(layer);\n filteredLayers.push({\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n layer_.removeLayer(layer);\n }\n }\n });\n this._filteredLayers = filteredLayers;\n\n layer_.addTo(map);\n }\n return this._filteredLayers;\n }\n\n cleanFilter(): void {\n this.filter();\n }\n\n getLayers(): LayerDef[] {\n return this._layers.map(({ layer, feature }) => {\n const visible = layer && !!(layer as any)._map;\n return {\n feature,\n layer,\n visible,\n target: this,\n ...createFeaturePositionOptions(feature),\n };\n });\n }\n\n clearLayer(cb?: (feature: Feature) => boolean): void {\n this.unselect();\n const layer_ = this.layer;\n if (layer_) {\n if (cb) {\n for (let fry = this._layers.length; fry--; ) {\n const def = this._layers[fry];\n if (def) {\n const { feature, layer } = def;\n if (feature && layer) {\n const exist = cb(feature);\n if (exist) {\n layer_.removeLayer(layer);\n this._layers.splice(fry, 1);\n }\n }\n }\n }\n } else {\n layer_.clearLayers();\n this._layers = [];\n }\n }\n }\n\n setData(data: GeoJsonObject): void {\n this.clearLayer();\n this.addData(data);\n }\n\n addData(data: GeoJsonObject | false): void {\n const options = this.options;\n let geoJsonOptions: GeoJSONOptions | undefined;\n if (options) {\n if (data) {\n let type: VectorAdapterLayerType;\n\n if (!options.type) {\n const detectedType = detectType(data);\n type = typeAlias[detectedType];\n } else {\n type = options.type;\n }\n if (this.type && this.type !== type) {\n console.warn('no other data type than layer can be added');\n return;\n }\n this.type = type;\n\n data = filterGeometries(data, type);\n if (data) {\n geoJsonOptions = this._getGeoJsonOptions(options, type);\n }\n }\n new GeoJSON(data || undefined, geoJsonOptions);\n }\n }\n\n openPopup(findFeatureFun: DataLayerFilter, options?: PopupOptions): void {\n if (findFeatureFun) {\n const def = this._layers.filter(findFeatureFun);\n def.forEach((x) => {\n this._openPopup(x, options, 'api');\n });\n }\n }\n\n closePopup(findFeatureFun?: DataLayerFilter): void {\n const popupToClose = findFeatureFun\n ? this._openedPopup.filter((x) => findFeatureFun(x[2]))\n : this._openedPopup;\n\n popupToClose.forEach((x) => {\n this._removePopup(x[0]);\n });\n }\n\n updateTooltip(layerDef?: LayerDefinition): void {\n if (layerDef) {\n this._updateTooltip(layerDef);\n } else {\n this.getLayers().forEach((x) =>\n this._updateTooltip({ feature: x.feature, layer: x.layer }),\n );\n }\n }\n\n /** @deprecated use {@link GeoJsonAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.layer) {\n const bounds = this.layer.getBounds();\n if (bounds.isValid()) {\n return boundsToArray(bounds);\n }\n }\n }\n\n setOpacity(value: number): void {\n this.options.opacity = value;\n this.setPaint(this.paint);\n this.setSelectedPaint(this.selectedPaint);\n }\n\n setPaint(paint?: Paint | null): void {\n if (paint) {\n this.paint = paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n setSelectedPaint(paint?: Paint | null): void {\n if (paint) {\n this.selectedPaint = paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, paint as VectorAdapterLayerPaint);\n }\n }\n }\n updatePaint(paint: Partial<Paint>): void {\n this.paint = { ...this.paint, ...paint } as Paint;\n for (const l of this._layers) {\n this._paint.setPaint(l, this.paint as VectorAdapterLayerPaint);\n }\n }\n updateSelectedPaint(paint: Partial<Paint>): void {\n this.selectedPaint = { ...this.selectedPaint, ...paint } as Paint;\n for (const l of this._selectedLayers) {\n this._paint.setPaint(l, this.selectedPaint as VectorAdapterLayerPaint);\n }\n }\n\n _getSelected(layer: LayerDef['layer']) {\n return this._selectedLayers.find((x) => x.layer === layer);\n }\n\n private $unselect = () => {\n this.unselect();\n };\n\n private _updateTooltip(layerDef: Pick<LayerDef, 'feature' | 'layer'>) {\n const { feature, layer } = layerDef;\n const { label, labelField, labelOnHover } = this.options;\n if (layer) {\n layer.unbindTooltip();\n let message: string | undefined;\n if (feature.properties && labelField) {\n message = feature.properties[labelField];\n } else if (label) {\n message = label({\n target: this,\n ...layerDef,\n ...createFeaturePositionOptions(feature),\n });\n }\n if (message) {\n const permanent = !labelOnHover;\n layer.bindTooltip(String(message), { permanent, sticky: false });\n }\n }\n }\n\n private async _openPopup(\n def: LayerDef,\n options: PopupOptions = {},\n type: OnLayerSelectType,\n latLng?: LatLngExpression,\n ) {\n const { feature, layer } = def;\n const {\n minWidth,\n autoPan,\n maxWidth,\n closeButton: closeButton_,\n } = {\n minWidth: 300,\n ...options,\n };\n const closeButton = closeButton_ ?? !this.options.selectOnHover;\n let popup: Layer;\n const _closeHandlers: PopupOnCloseFunction[] = [];\n const onClose = (handler: PopupOnCloseFunction) => {\n _closeHandlers.push(handler);\n };\n const close = () => {\n if (popup) {\n this._removePopup(popup);\n }\n };\n let content;\n if (options.createPopupContent) {\n content = await options.createPopupContent({\n layer,\n feature,\n target: this,\n type,\n close,\n onClose,\n ...createFeaturePositionOptions(feature),\n });\n } else {\n content = options.popupContent;\n }\n\n if (content && layer) {\n const popupOptions: LPopupOptions = {\n minWidth,\n autoPan,\n // maxWidth,\n closeButton,\n closeOnClick: false,\n autoClose: false,\n };\n if (defined(maxWidth)) {\n popupOptions.maxWidth = maxWidth;\n }\n popup = layer.bindPopup(content, popupOptions);\n\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n if (unselectOnClose) {\n const p = layer.getPopup();\n p &&\n p.once(\n 'remove',\n () => {\n close();\n },\n this,\n );\n }\n this._openedPopup.push([popup, _closeHandlers, def]);\n popup.openPopup(latLng);\n }\n }\n\n private _removePopup(popup: Layer) {\n const map = this.map;\n if (map) {\n popup.closePopup().unbindPopup();\n const index = this._openedPopup.findIndex((x) => x[0] === popup);\n if (index !== -1) {\n const unselectOnClose =\n this.options.popupOptions?.unselectOnClose ?? true;\n const [, closeHandlers, def] = this._openedPopup[index];\n for (const h of closeHandlers) {\n h(def);\n }\n closeHandlers.length = 0;\n if (unselectOnClose) {\n this._unSelectLayer(def);\n }\n this._openedPopup.splice(index, 1);\n }\n }\n }\n\n private _getGeoJsonOptions(\n options: GeoJsonAdapterOptions,\n type: VectorAdapterLayerType,\n ): GeoJSONOptions {\n const paint = options.paint;\n let lopt: GeoJSONOptions = {};\n\n if (typeof paint === 'function') {\n if (type === 'point') {\n // TODO: fix types (@geoman-io/leaflet-geoman-free)\n (lopt as any).pointToLayer = (\n feature: Feature<Point, any>,\n latLng: LatLng,\n ) => {\n const iconOpt = paint(feature);\n const pointToLayer = this._paint.createPaintToLayer(\n iconOpt as IconPaint,\n );\n return pointToLayer(feature, latLng);\n };\n } else {\n lopt = {\n style: (feature) => {\n if (feature) {\n return this._paint.preparePaint({ ...PAINT, ...paint(feature) });\n } else {\n return this._paint.preparePaint({ ...PAINT, type: 'path' });\n }\n },\n };\n }\n } else {\n lopt = this._paint.createPaintOptions(paint as VectorAdapterLayerPaint);\n }\n\n lopt.onEachFeature = (feature: Feature, layer) => {\n this._onEachFeature(feature, layer);\n };\n\n return lopt;\n }\n\n private _onEachFeature(feature: Feature, layer: Layer) {\n const layer_ = this.layer;\n if (layer_) {\n const def = {\n target: this,\n feature,\n layer,\n ...createFeaturePositionOptions(feature),\n };\n // @ts-ignore\n layer.options.pane = this.pane;\n this._layers.push(def);\n let ok = true;\n if (this._filterFun) {\n ok = this._filterFun(def);\n }\n if (ok) {\n const { popup, popupOptions, selectable, interactive, selectOnHover } =\n this.options;\n // @ts-ignore\n layer.options.interactive = defined(interactive) ? interactive : true;\n layer_.addLayer(layer);\n if (selectable) {\n if (selectOnHover) {\n layer.on('mouseover', () => {\n this._selectLayer(def, 'hover');\n });\n layer.on('mouseout', () => {\n this._unSelectLayer(def);\n });\n } else {\n layer.on(\n 'click',\n (e) => this._selectOnLayerClick(e as LeafletMouseEvent),\n this,\n );\n }\n }\n this._events.handleMouseEvents(layer);\n // The timeout is needed to display the popup immediately when adding a layer to the map.\n // Without a timeout, the layer may not yet have a _map object\n setTimeout(() => {\n if (popup) {\n this._openPopup(\n {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n },\n popupOptions,\n 'api',\n );\n }\n this._updateTooltip({ layer, feature });\n });\n }\n }\n }\n\n private _selectOnLayerClick(e: LeafletMouseEvent) {\n DomEvent.stopPropagation(e);\n const layer = e.target as Layer;\n const feature = (layer as any).feature;\n const def: LayerDef = {\n target: this,\n layer,\n feature,\n ...createFeaturePositionOptions(feature),\n };\n const isSelected = this._getSelected(layer);\n if (isSelected) {\n if (this.options && this.options.unselectOnSecondClick) {\n this._unSelectLayer(isSelected);\n }\n } else {\n this._selectLayer(def, 'click', e.latlng);\n }\n }\n\n private _selectLayer(\n def: LayerDef,\n type: OnLayerSelectType,\n latlng?: LatLngExpression,\n ) {\n const { multiselect } = this.options;\n if (!multiselect) {\n // To unselect layer on another layer click\n (this.map as any)._addUnselectCb(() => {\n this._unSelectLayer(def);\n });\n this._selectedLayers.forEach((x) => this._unSelectLayer(x));\n }\n this._selectedLayers.push(def);\n this.selected = true;\n const { selectedPaint, popupOnSelect, popupOptions } = this.options;\n\n if (selectedPaint && def.layer) {\n this._paint.setPaint(def, selectedPaint as VectorAdapterLayerPaint);\n }\n if (popupOnSelect) {\n this._openPopup(def, popupOptions, type, latlng);\n }\n if (this.options.onSelect) {\n const features = def.feature ? [def.feature] : [];\n this.options.onSelect({\n type,\n layer: this,\n features,\n ...createFeaturePositionOptions(features),\n });\n }\n }\n\n private _unSelectLayer(def: LayerDef) {\n const index = this._selectedLayers.indexOf(def);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n if (this.options) {\n if (this.options.paint) {\n this._paint.setPaint(\n def,\n this.options.paint as VectorAdapterLayerPaint,\n );\n }\n\n if (this.options.popupOnSelect && def.layer) {\n this._removePopup(def.layer);\n }\n }\n }\n this.selected = this._selectedLayers.length > 0;\n }\n\n private _addMapClickListener() {\n const map = this.map;\n if (map) {\n const { unselectOnClick } = this.options;\n const uoc = unselectOnClick ?? true;\n if (uoc) {\n map.on('click', this.$unselect);\n }\n }\n }\n\n private _removeMapClickListener() {\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n this.map.off('click', this.$unselect);\n }\n\n private _addMapListener() {\n const map = this.map;\n if (map) {\n const { label, labelField, labelOnHover } = this.options;\n this._addMapClickListener();\n if ((labelField || label) && !labelOnHover) {\n map.on('zoomend', this.$updateTooltip);\n map.on('moveend', this.$updateTooltip);\n }\n }\n }\n\n private _removeMapListener() {\n this._removeMapClickListener();\n this.map.off('zoomend', this.$updateTooltip);\n this.map.off('moveend', this.$updateTooltip);\n }\n}\n","export function callAjax(\n src: string,\n callback: (resp: any) => any,\n headers: Record<string, any>,\n): () => void {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', src);\n xhr.responseType = 'arraybuffer';\n for (const h in headers) {\n xhr.setRequestHeader(h, headers[h]);\n }\n xhr.onload = function () {\n const arrayBufferView = new Uint8Array(this.response);\n const blob = new Blob([arrayBufferView], { type: 'image/png' });\n // @ts-ignore for typedoc\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(blob);\n callback(imageUrl);\n };\n xhr.send();\n return () => {\n xhr.abort();\n };\n}\n","import { ImageOverlay as LImageOverlay } from 'leaflet';\n\nimport { callAjax } from '../../utils/callAjax';\n\nimport type { ImageOverlayOptions, LatLngBoundsExpression } from 'leaflet';\n\ntype IOptions = ImageOverlayOptions & { headers?: any };\n\nexport class ImageOverlay extends LImageOverlay {\n private _abort: (() => void)[] = [];\n\n constructor(\n imageUrl: string,\n bounds: LatLngBoundsExpression,\n options?: IOptions,\n ) {\n super(imageUrl, bounds, options);\n }\n\n cancelLoad(): void {\n if (this._abort) {\n this._abort.forEach((x) => x());\n this._abort = [];\n }\n }\n\n _initImage(): void {\n // @ts-ignore\n super._initImage();\n // @ts-ignore\n const headers = this.options.headers;\n if (headers) {\n // @ts-ignore\n const img: HTMLImageElement = this._image;\n const src = img.src;\n img.src = '';\n this._abort.push(\n callAjax(\n src,\n (response) => {\n img.src = response;\n },\n headers,\n ),\n );\n }\n }\n}\n","/*!\n * leaflet.wms.js\n * A collection of Leaflet utilities for working with Web Mapping services.\n * (c) 2014-2016, Houston Engineering, Inc.\n * MIT License\n */\n\nimport { debounce } from '@nextgis/utils';\nimport { CRS, Layer, Util } from 'leaflet';\n\nimport { ImageOverlay } from './ImageOverlay';\n\nimport type { Map } from 'leaflet';\n\ninterface OverlayOptions {\n crs?: null;\n uppercase?: boolean;\n attribution?: string;\n opacity?: number;\n isBack?: boolean;\n minZoom?: number;\n maxZoom?: number;\n zIndex?: number;\n pane?: string;\n headers?: any;\n viewPortBuffer?: number;\n setViewDelay?: number;\n}\n\n/*\n * Overlay:\n * \"Single Tile\" WMS image overlay that updates with map changes.\n * Portions of wms.Overlay are directly extracted from L.TileLayer.WMS.\n * See Leaflet license.\n */\nexport class ImageLayer extends Layer {\n defaultWmsParams = {\n service: 'WMS',\n request: 'GetMap',\n version: '1.1.1',\n layers: '',\n styles: '',\n format: 'image/jpeg',\n transparent: false,\n };\n\n options: OverlayOptions = {\n crs: null,\n uppercase: false,\n attribution: '',\n opacity: 1,\n isBack: false,\n minZoom: 0,\n pane: 'tilePane',\n headers: null,\n viewPortBuffer: 0,\n setViewDelay: 100,\n };\n\n private wmsParams: any;\n private _url?: string;\n private _currentUrl?: string;\n private _currentOverlay?: ImageOverlay;\n\n constructor(url: string, options: OverlayOptions) {\n super(options);\n this._url = url;\n\n // Move WMS parameters to params object\n const params: any = {};\n const opts: any = {};\n let opt: keyof OverlayOptions;\n for (opt in options) {\n if (opt in this.options) {\n opts[opt] = options[opt];\n } else {\n params[opt] = options[opt];\n }\n }\n Util.setOptions(this, opts);\n this.wmsParams = Util.extend({}, this.defaultWmsParams, params);\n }\n\n setParams(params: Record<string, any>): void {\n Util.extend(this.wmsParams, params);\n this.update();\n }\n\n getAttribution(): string {\n return this.options.attribution || '';\n }\n\n onAdd(): this {\n this.update();\n return this;\n }\n\n onRemove(map: Map): this {\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n map.removeLayer(this._currentOverlay);\n delete this._currentOverlay;\n }\n if (this._currentUrl) {\n delete this._currentUrl;\n }\n return this;\n }\n\n getEvents(): {\n moveend: () => void;\n } {\n return {\n moveend: debounce(this.update, this.options.setViewDelay),\n };\n }\n\n update(): void {\n if (!this._map) {\n return;\n }\n // Determine image URL and whether it has changed since last update\n this.updateWmsParams();\n const url = this.getImageUrl();\n if (this._currentUrl === url) {\n return;\n }\n this._currentUrl = url;\n\n // Keep current image overlay in place until new one loads\n // (inspired by esri.leaflet)\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = this._map.getBounds().pad(viewPortBuffer);\n\n const overlay = new ImageOverlay(url, bounds, {\n opacity: 0,\n pane: this.options.pane,\n headers: this.options.headers,\n });\n overlay.addTo(this._map);\n if (this._currentOverlay) {\n this._currentOverlay.cancelLoad();\n }\n overlay.once(\n 'load',\n () => {\n if (!this._map) {\n return;\n }\n // @ts-ignore\n if (overlay._url !== this._currentUrl) {\n this._map.removeLayer(overlay);\n return;\n } else if (this._currentOverlay) {\n this._map.removeLayer(this._currentOverlay);\n }\n this._currentOverlay = overlay;\n overlay.setOpacity(\n this.options.opacity !== undefined ? this.options.opacity : 1,\n );\n if (this.options.isBack === true) {\n overlay.bringToBack();\n }\n if (this.options.isBack === false) {\n overlay.bringToFront();\n }\n if (this.options.zIndex !== undefined) {\n overlay.setZIndex(this.options.zIndex);\n }\n },\n this,\n );\n const { minZoom, maxZoom } = this.options;\n if (\n (minZoom && this._map.getZoom() < minZoom) ||\n (maxZoom && this._map.getZoom() > maxZoom)\n ) {\n this._map.removeLayer(overlay);\n }\n }\n\n setOpacity(opacity: number): void {\n this.options.opacity = opacity;\n if (this._currentOverlay) {\n this._currentOverlay.setOpacity(opacity);\n }\n }\n\n bringToBack(): void {\n this.options.isBack = true;\n if (this._currentOverlay) {\n this._currentOverlay.bringToBack();\n }\n }\n\n bringToFront(): void {\n this.options.isBack = false;\n if (this._currentOverlay) {\n this._currentOverlay.bringToFront();\n }\n }\n\n setZIndex(zIndex: number): void {\n this.options.zIndex = zIndex;\n if (this._currentOverlay) {\n this._currentOverlay.setZIndex(zIndex);\n }\n }\n\n // See L.TileLayer.WMS: onAdd() & getTileUrl()\n updateWmsParams(map?: Map): void {\n if (!map) {\n map = this._map;\n }\n // Compute WMS options\n const viewPortBuffer = this.options.viewPortBuffer || 0;\n const bounds = map.getBounds().pad(viewPortBuffer);\n const size = map.getSize();\n if (this.options.viewPortBuffer !== 0) {\n const factor = viewPortBuffer + 1;\n size.x = Math.ceil(size.x * factor);\n size.y = Math.ceil(size.y * factor);\n }\n const wmsVersion = parseFloat(this.wmsParams.version);\n const crs = this.options.crs || map.options.crs;\n const projectionKey = wmsVersion >= 1.3 ? 'crs' : 'srs';\n if (crs) {\n const nw = crs.project(bounds.getNorthWest());\n const se = crs.project(bounds.getSouthEast());\n\n // Assemble WMS parameter string\n const params: any = {\n width: size.x,\n height: size.y,\n };\n params[projectionKey] = crs.code;\n params.bbox = (\n wmsVersion >= 1.3 && crs === CRS.EPSG4326\n ? [se.y, nw.x, nw.y, se.x]\n : [nw.x, se.y, se.x, nw.y]\n ).join(',');\n\n Util.extend(this.wmsParams, params);\n }\n }\n\n getImageUrl(): string {\n const uppercase = this.options.uppercase || false;\n const pstr = Util.getParamString(this.wmsParams, this._url, uppercase);\n return this._url + pstr;\n }\n}\n","import { BaseAdapter } from '../BaseAdapter';\n\nimport { ImageLayer } from './ImageLayer';\n\nimport type { MainLayerAdapter } from '@nextgis/webmap';\nimport type { ImageAdapterOptions } from '@nextgis/webmap';\nimport type { Map } from 'leaflet';\n\nexport class ImageAdapter\n extends BaseAdapter<ImageAdapterOptions>\n implements MainLayerAdapter<Map>\n{\n layer: any;\n\n addLayer(options: ImageAdapterOptions): any {\n const url = options && options.url;\n if (url) {\n options = { transparent: true, ...options };\n const updateWmsParamsFromOpt = options.updateWmsParams;\n this.layer = new ImageLayer(url, {\n pane: this.pane,\n headers: options.headers,\n setViewDelay: options.setViewDelay,\n /**\n * TODO: safe remove, use only options.nativeOptions\n */\n ...options,\n ...options.params,\n ...options.nativeOptions,\n });\n if (updateWmsParamsFromOpt) {\n const updateWmsParams = this.layer.updateWmsParams;\n this.layer.updateWmsParams = function (map: Map) {\n updateWmsParams.call(this, map);\n this.wmsParams = updateWmsParamsFromOpt(this.wmsParams);\n };\n }\n return this.layer;\n }\n }\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","import { DomUtil, GridLayer, Util } from 'leaflet';\n\nimport { debounce } from '../../../utils/src';\n\nimport { callAjax } from './callAjax';\n\n// import type { TileLayerOptionsExtended } from './TileAdapter/TileLayer';\n\ntype Constructor = new (...args: any[]) => any;\n\nexport function makeRemote<\n TBase extends Constructor,\n // O extends TileLayerOptionsExtended = TileLayerOptionsExtended\n>(Base: TBase): TBase {\n return class RemoteTileLayer extends Base {\n constructor(...args: any[]) {\n super(...args);\n if (this.options.setViewDelay) {\n // @ts-ignore\n this._update = debounce((...a: any[]) => {\n // @ts-ignore\n GridLayer.prototype._update.call(this, ...a);\n }, this.options.setViewDelay);\n }\n }\n\n createTile(\n coords: Record<string, unknown>,\n done: (error: any, tile: HTMLImageElement) => void,\n ): HTMLImageElement {\n // @ts-ignore\n const url = this.getTileUrl(coords);\n\n const tile = document.createElement('img');\n (tile as any).abort = callAjax(\n url,\n (response) => {\n tile.src = response;\n done(null, tile);\n },\n // @ts-ignore\n this.options.headers,\n );\n\n if (this.options.crossOrigin || this.options.crossOrigin === '') {\n tile.crossOrigin =\n this.options.crossOrigin === true ? '' : this.options.crossOrigin;\n }\n\n tile.alt = '';\n tile.setAttribute('role', 'presentation');\n\n return tile;\n }\n\n _abortLoading() {\n // @ts-ignore\n const tiles = this._tiles;\n // @ts-ignore\n const tileZoom = this._tileZoom;\n for (const i in tiles) {\n if (tiles[i].coords.z !== tileZoom) {\n const tile = tiles[i].el;\n\n tile.onload = Util.falseFn;\n tile.onerror = Util.falseFn;\n if (!tile.complete) {\n if (tile.abort) {\n tile.abort();\n }\n tile.src = Util.emptyImageUrl;\n DomUtil.remove(tile);\n delete tiles[i];\n }\n }\n }\n }\n };\n}\n","import { TileLayer as TL } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { TileLayerOptions } from 'leaflet';\n\nexport type TileLayerOptionsExtended = TileLayerOptions & {\n headers: Record<string, any>;\n setViewDelay?: number;\n};\n\nclass TileLayerBase extends TL {\n constructor(urlTemplate: string, options?: TileLayerOptionsExtended) {\n super(urlTemplate, options);\n Object.assign(this.options, options);\n }\n}\n\nexport const TileLayer = makeRemote(TileLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { TileLayer as TL } from './TileLayer';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayerOptions } from 'leaflet';\n\nexport class TileAdapter\n extends BaseAdapter<TileAdapterOptions, TileLayer>\n implements MainLayerAdapter\n{\n addLayer(options: TileAdapterOptions): TileLayer | undefined {\n this.options = Object.assign(this.options, options);\n if (options) {\n const { url, ...opt } = options;\n if (url) {\n const tileLayerOptions: TileLayerOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n\n ...opt.nativeOptions,\n };\n if (opt.subdomains) {\n tileLayerOptions.subdomains = opt.subdomains;\n }\n let layer;\n if (opt.headers) {\n layer = new TL(url, {\n ...tileLayerOptions,\n headers: opt.headers,\n setViewDelay: opt.setViewDelay,\n });\n } else {\n layer = new TileLayer(url, tileLayerOptions);\n }\n return layer;\n }\n }\n }\n}\n","import { TileAdapter } from './TileAdapter/TileAdapter';\n\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { TileLayer } from 'leaflet';\n\nexport class OsmAdapter extends TileAdapter implements MainLayerAdapter {\n addLayer(options: Omit<TileAdapterOptions, 'url'>): TileLayer | undefined {\n const url = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\n return super.addLayer({\n name: 'OpenStreetMap',\n attribution:\n '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n ...options,\n url,\n });\n }\n}\n","import { TileLayer } from 'leaflet';\n\nimport { makeRemote } from '../../utils/makeRemoteTileLayer';\n\nimport type { WMSOptions } from 'leaflet';\n\ntype LayerOptions = WMSOptions & { headers: any };\n\nclass WmsLayerBase extends TileLayer.WMS {\n constructor(urlTemplate: string, options: LayerOptions) {\n super(urlTemplate, options);\n }\n}\n\nexport const WmsLayer = makeRemote(WmsLayerBase);\n","import { TileLayer } from 'leaflet';\n\nimport { BaseAdapter } from '../BaseAdapter';\n\nimport { WmsLayer as WMS } from './WmsLayer';\n\nimport type { MainLayerAdapter, WmsAdapterOptions } from '@nextgis/webmap';\nimport type { WMSOptions } from 'leaflet';\n\nexport class WmsAdapter\n extends BaseAdapter<WmsAdapterOptions, TileLayer.WMS>\n implements MainLayerAdapter\n{\n addLayer(options: WmsAdapterOptions): TileLayer.WMS | undefined {\n Object.assign(this.options, options);\n const { url, ...opt } = options;\n if (url) {\n const layerOptions: WMSOptions = {\n pane: this.pane,\n attribution: opt.attribution,\n minZoom: opt.minZoom,\n maxZoom: opt.maxZoom,\n layers: options.layers,\n format: options.format,\n ...options.nativeOptions,\n };\n let layer;\n if (opt.headers) {\n layer = new WMS(url, { ...layerOptions, headers: opt.headers });\n } else {\n layer = new TileLayer.WMS(url, layerOptions);\n }\n return layer;\n }\n }\n}\n","import type { LngLatBoundsArray } from '@nextgis/utils';\nimport type { LatLngBoundsExpression } from 'leaflet';\n\nexport function arrayToBoundsExpression(\n bounds: LngLatBoundsArray,\n): LatLngBoundsExpression {\n const e = bounds;\n // top, left, bottom, right\n return [\n [e[3], e[0]],\n [e[1], e[2]],\n ];\n}\n","import { EventEmitter } from 'events';\n\nimport { Control, Map } from 'leaflet';\n\nimport { AttributionControl } from './controls/Attribution';\nimport { createButtonControl } from './controls/createButtonControl';\nimport { createControl } from './controls/createControl';\nimport { GeoJsonAdapter } from './layer-adapters/GeoJsonAdapter/GeoJsonAdapter';\nimport { ImageAdapter } from './layer-adapters/ImageAdapter/ImageAdapter';\nimport { OsmAdapter } from './layer-adapters/OsmAdapter';\nimport { TileAdapter } from './layer-adapters/TileAdapter/TileAdapter';\nimport { WmsAdapter } from './layer-adapters/WmsAdapter/WmsAdapter';\nimport { arrayToBoundsExpression } from './utils/arrayToBoundsExpression';\nimport { convertMapClickEvent } from './utils/convertMapClickEvent';\n\nimport type { LngLatArray, LngLatBoundsArray } from '@nextgis/utils';\nimport type {\n ButtonControlOptions,\n CreateControlOptions,\n FitOptions,\n LayerAdapter,\n Locate,\n LocateOptions,\n LocationEvents,\n MainMapEvents,\n MapAdapter,\n MapControl,\n MapOptions,\n ViewOptions,\n} from '@nextgis/webmap';\nimport type {\n ControlPosition,\n FitBoundsOptions,\n GridLayer,\n LatLngBoundsExpression,\n Layer,\n LeafletEvent,\n LeafletMouseEvent,\n LocationEvent,\n} from 'leaflet';\n\nexport type Type<T> = new (...args: any[]) => T;\nexport type UnselectCb = () => void;\nexport type UnselectDef = UnselectCb;\nexport class LeafletMapAdapter implements MapAdapter<Map, any, Control> {\n static layerAdapters: {\n [name: string]: Type<LayerAdapter<Map, any, any>>;\n } = {\n GEOJSON: GeoJsonAdapter,\n IMAGE: ImageAdapter,\n TILE: TileAdapter,\n WMS: WmsAdapter,\n // // MVT: MvtAdapter,\n OSM: OsmAdapter,\n };\n\n static controlAdapters = {\n ZOOM: Control.Zoom,\n ATTRIBUTION: AttributionControl,\n };\n\n static Map = Map;\n\n options: MapOptions<Map> = { target: 'map' };\n\n layerAdapters = LeafletMapAdapter.layerAdapters;\n controlAdapters = LeafletMapAdapter.controlAdapters;\n emitter = new EventEmitter();\n map?: Map;\n\n private _resizeObserver?: ResizeObserver;\n private _unselectCb: UnselectDef[] = [];\n private _universalEvents: (keyof MainMapEvents)[] = [\n 'move',\n 'zoom',\n 'zoomend',\n 'zoomstart',\n 'moveend',\n 'movestart',\n ];\n private _positionEvents: (keyof MainMapEvents)[] = [\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n create(options: MapOptions<Map>): void {\n this.options = { ...options };\n if (this.options.target) {\n const {\n zoom,\n center,\n maxZoom,\n minZoom,\n maxBounds: mb,\n mapAdapterOptions,\n } = this.options;\n\n this.map =\n this.options.map ||\n new Map(this.options.target, {\n attributionControl: false,\n zoomControl: false,\n maxBounds: mb ? arrayToBoundsExpression(mb) : undefined,\n maxZoom,\n minZoom,\n center: center && [center[1], center[0]],\n zoom,\n ...mapAdapterOptions,\n });\n // create default pane\n const defPane = this.map.createPane('order-0');\n (this.map as any)._addUnselectCb = (def: UnselectDef) => {\n this._addUnselectCb(def);\n };\n defPane.style.zIndex = String(0);\n this.emitter.emit('create', this);\n this._addMapListeners();\n }\n }\n\n destroy(): void {\n if (this.map) {\n this.map.remove();\n }\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n\n getContainer(): HTMLElement | undefined {\n return this.map && this.map.getContainer();\n }\n\n getControlContainer(): HTMLElement {\n const controlContainer = this.map && (this.map as any)._controlContainer;\n if (controlContainer) {\n return controlContainer;\n }\n throw new Error('Leaflet Map is not initialized yet');\n }\n\n setCursor(cursor: string): void {\n if (this.map) {\n this.map.getContainer().style.cursor = cursor;\n }\n }\n\n setView(lngLat: LngLatArray, zoom?: number): void;\n setView(options: ViewOptions): void;\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n const map = this.map;\n if (!map) return;\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n const [lng, lat] = lngLat;\n if (this.map) {\n if (typeof zoom === 'number') {\n this.map.setView([lat, lng], zoom, { animate: false });\n } else {\n this.setCenter([lng, lat]);\n }\n }\n } else {\n const { zoom, center, maxBounds, bounds, minZoom, maxZoom } = lngLatOrOpt;\n if (center && zoom !== undefined) {\n this.setView(center, zoom);\n } else {\n if (zoom !== undefined) {\n this.setZoom(zoom);\n }\n if (center) {\n this.setCenter(center);\n }\n }\n if (bounds) {\n this.fitBounds(bounds);\n }\n if (maxBounds !== undefined) {\n if (maxBounds) {\n const b = arrayToBoundsExpression(maxBounds);\n map.setMaxBounds(b);\n map.setMinZoom(map.getBoundsZoom(b));\n this._watchSizeChangeToUpdateMinZoom(b);\n } else {\n // @ts-ignore `null` works for unset maxBounds, but not in typing\n map.setMaxBounds(null);\n this._stopWatchSizeChangeToUpdateMinZoom();\n }\n }\n if (maxZoom !== undefined) {\n map.setMaxZoom(maxZoom);\n }\n if (minZoom !== undefined) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n map.setMinZoom(minZoom);\n }\n }\n }\n\n setCenter(lngLat: LngLatArray): void {\n const [lng, lat] = lngLat;\n if (this.map) {\n this.map.panTo([lat, lng]);\n }\n }\n\n getCenter(): LngLatArray | undefined {\n const map = this.map;\n if (map) {\n const bounds = map.getBounds();\n const center = bounds.getCenter();\n return [center.lng, center.lat];\n }\n }\n\n setZoom(zoom: number): void {\n if (this.map) {\n this.map.setZoom(zoom);\n }\n }\n\n getZoom(): number | undefined {\n return (this.map && this.map.getZoom()) ?? undefined;\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (!this.map) return undefined;\n const b = this.map.getBounds();\n const sw = b.getSouthWest();\n const ne = b.getNorthEast();\n return [sw.lng, sw.lat, ne.lng, ne.lat];\n }\n\n // [west, south, east, north]\n fitBounds(bounds: LngLatBoundsArray, options: FitOptions = {}): void {\n if (this.map) {\n const { maxZoom, offset, padding } = options;\n const opt: FitBoundsOptions = {};\n if (maxZoom) {\n opt.maxZoom = maxZoom;\n }\n if (padding) {\n opt.padding = [padding, padding];\n }\n if (offset) {\n opt.padding = offset;\n }\n\n this.map.fitBounds(arrayToBoundsExpression(bounds), opt);\n }\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter<Map, any, any>> {\n return LeafletMapAdapter.layerAdapters[name];\n }\n\n createControl(control: MapControl, options: CreateControlOptions): Control {\n return createControl(control, options, this);\n }\n\n createButtonControl(options: ButtonControlOptions): Control {\n return createButtonControl(options, this);\n }\n\n addControl(control: Control, position: string): Control | undefined {\n control.options.position = position.replace('-', '') as ControlPosition;\n if (this.map) {\n this.map.addControl(control);\n return control;\n }\n }\n\n removeControl(control: Control): void {\n if (this.map) {\n this.map.removeControl(control);\n }\n }\n\n removeLayer(layer: Layer): void {\n layer && layer.remove && layer.remove();\n }\n\n showLayer(layer: Layer): void {\n if (this.map) {\n layer.addTo(this.map);\n }\n }\n\n hideLayer(layer: Layer): void {\n layer.remove();\n }\n\n setLayerOpacity(layer: GridLayer | Layer, value: number): void {\n if ('setOpacity' in layer) {\n layer.setOpacity(value);\n }\n }\n\n setLayerOrder(\n layer: Layer,\n order: number,\n layers: { [x: string]: LayerAdapter },\n ): void {\n //\n }\n\n onMapClick(evt: LeafletMouseEvent): void {\n const converted = convertMapClickEvent(evt);\n this.emitter.emit('preclick', converted);\n this.emitter.emit('click', converted);\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n const map = this.map;\n if (map) {\n map.locate(opt);\n if (events) {\n const { locationfound, locationerror } = events;\n const locationFound = (e: LeafletEvent) => {\n const event = e as LocationEvent;\n const lngLat: [number, number] = [event.latlng.lng, event.latlng.lat];\n locationfound({ lngLat });\n };\n if (locationfound !== undefined) {\n map.on('locationfound', locationFound, this);\n }\n if (locationerror) {\n map.on('locationerror', locationerror, this);\n }\n const stop = () => {\n if (locationfound !== undefined) {\n map.off('locationfound', locationFound);\n }\n if (locationerror) {\n map.off('locationerror', locationerror);\n }\n };\n return { stop };\n }\n }\n const stop = () => void 'fake function';\n return { stop };\n }\n\n private _addUnselectCb(cb: UnselectDef) {\n for (const p of this._unselectCb) {\n p();\n }\n this._unselectCb.length = 0;\n this._unselectCb.push(cb);\n }\n\n private _watchSizeChangeToUpdateMinZoom(bounds: LatLngBoundsExpression) {\n this._stopWatchSizeChangeToUpdateMinZoom();\n const container = this.getContainer();\n const map = this.map;\n if (container && map && window.ResizeObserver) {\n this._resizeObserver = new ResizeObserver(() => {\n map.setMinZoom(map.getBoundsZoom(bounds));\n });\n this._resizeObserver.observe(container);\n }\n }\n\n private _stopWatchSizeChangeToUpdateMinZoom() {\n const map = this.map;\n if (map) {\n map.setMinZoom(0);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n this._resizeObserver = undefined;\n }\n }\n\n private _addMapListeners() {\n const map = this.map;\n if (map) {\n map.on('click', (evt) => {\n this.onMapClick(evt as LeafletMouseEvent);\n });\n for (const e of this._universalEvents) {\n map.on(e, () => this.emitter.emit(e, this), map);\n }\n\n for (const e of this._positionEvents) {\n map.on(\n e,\n (evt) =>\n this.emitter.emit(\n e,\n convertMapClickEvent(evt as LeafletMouseEvent),\n ),\n map,\n );\n }\n }\n }\n}\n","/**\n * @module leaflet-map-adapter\n */\n\nimport { LeafletMapAdapter } from './LeafletMapAdapter';\n\nexport default LeafletMapAdapter;\n"],"names":["debounce","LImageOverlay","TL","TileLayer","WMS","LeafletMapAdapter"],"mappings":";;;;;;AAKa,MAAA,kBAAmB,SAAQ,OAAO,CAAC,WAAW,CAAA;;AAEzD,IAAA,WAAA,CAAY,OAAmD,EAAA;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;AACf,QAAA,MAAM,iBAAiB,GAAG,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;AAC/D,QAAA,IAAI,iBAAiB,EAAE;YACrB,IAAI,YAAY,GAAa,EAAE,CAAC;AAChC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBACpC,YAAY,GAAG,iBAAiB,CAAC;AAClC,aAAA;AAAM,iBAAA,IAAI,iBAAiB,EAAE;AAC5B,gBAAA,YAAY,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,SAAA;KACF;AACF;;ACZK,SAAU,aAAa,CAC3B,OAAmB,EACnB,OAAgC,GAAA,EAAE,EAClC,GAAe,EAAA;AAEf,IAAA,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACvB,KAAK,GAAA;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtC,aAAA;YACD,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACzC,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACnC,gBAAA,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AACnC,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AAChC,gBAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACjC,gBAAA,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,QAAQ,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAE1C,YAAA,OAAO,OAAO,CAAC;SAChB;QACD,QAAQ,GAAA;YACN,OAAO,CAAC,QAAQ,EAAE,CAAC;SACpB;AACF,KAAA,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB;;ACpCgB,SAAA,mBAAmB,CACjC,OAA6B,EAC7B,GAAe,EAAA;IAEf,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAClC,IAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,IAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,IAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,IAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtC,KAAA;AAED,IAAA,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE1C,IAAA,IAAI,OAAO,CAAC,IAAI,YAAY,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,KAAA;AAAM,SAAA,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,CAAQ,KAAI;QAC3B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,EAAE,CAAC;AACpB,KAAC,CAAC;AAEF,IAAA,OAAO,aAAa,CAClB;QACE,KAAK,GAAA;AACH,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb;QACD,QAAQ,GAAA;AACN,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,aAAA;SACF;KACF,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,EACb,GAAG,CACJ,CAAC;AACJ;;ACxDM,SAAU,aAAa,CAAC,MAAoB,EAAA;AAChD,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACjC,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;AACjC,IAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC1C;;ACCA,SAAS,wBAAwB,CAC/B,GAA2B,EAAA;IAE3B,MAAM,MAAM,GAA4B,EAAE,CAAC;AAC3C,IAAA,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,KAAA;IACD,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,IAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAA,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE;YACxB,OAAO,GAAG,CAAC,CAAC;AACb,SAAA;AACF,KAAA;AACD,IAAA,OAAO,OAA+B,CAAC;AACzC,CAAC;AAEK,SAAU,UAAU,CAAC,OAAsB,EAAA;AAC/C,IAAA,IAAI,QAA8B,CAAC;AACnC,IAAA,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACxC,QAAA,MAAM,aAAa,GAAI,OAA6B,CAAC,QAAQ,CAAC,GAAG,CAC/D,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CACvB,CAAC;AACF,QAAA,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACpD,KAAA;AAAM,SAAA,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAChD,QAAA,MAAM,aAAa,GAAI,OAA8B,CAAC,UAAU,CAAC,GAAG,CAClE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACd,CAAC;AACF,QAAA,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;AACpD,KAAA;AAAM,SAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACrC,QAAA,QAAQ,GAAI,OAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/C,KAAA;AAAM,SAAA;AACL,QAAA,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,KAAA;AACD,IAAA,OAAO,QAAQ,CAAC;AAClB;;AC5BO,MAAM,SAAS,GAElB;AACF,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,kBAAkB,EAAE,SAAS;CAC9B,CAAC;AAEK,MAAM,KAAK,GAAG;AACnB,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,OAAO,EAAE,CAAC;CACX,CAAC;AAEK,MAAM,WAAW,GAEpB,EAAE,CAAC;AAEP,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AACzB,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAyB,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAC/C,IAAA,SAAS,CAAC,IAAI,CAAC,CAAyB,CAAC,CAAC;AAC1C,IAAA,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACpC,CAAA;AAEe,SAAA,cAAc,CAC5B,QAA8B,EAC9B,IAA4B,EAAA;IAE5B,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAEe,SAAA,gBAAgB,CAC9B,IAAmB,EACnB,IAA4B,EAAA;AAE5B,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE;QACrC,MAAM,KAAK,GAAG,IAAyB,CAAC;QACxC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KACvC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CACtC,CAAC;AACH,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,cAAc,CAAE,IAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACF,KAAA;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;QAC7C,MAAM,KAAK,GAAG,IAA0B,CAAC;QACzC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAC3C,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAC7B,CAAC;AACH,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,QAA6B,EAAA;AACnD,IAAA,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AACnC,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClE,IAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,IAAA,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC;AAClC,CAAC;AAEK,SAAU,iBAAiB,CAC/B,QAA6B,EAAA;AAE7B,IAAA,OAAO,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC;AAEK,SAAU,iBAAiB,CAAC,QAA6B,EAAA;AAC7D,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1D,IAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,CAAC;AAEK,SAAU,4BAA4B,CAC1C,QAA6B,EAAA;IAE7B,OAAO;AACL,QAAA,SAAS,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;AAC5C,QAAA,SAAS,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;KAC7C,CAAC;AACJ;;MChGa,WAAW,CAAA;IAMtB,WACS,CAAA,GAAQ,EACR,OAAU,EAAA;QADV,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QACR,IAAO,CAAA,OAAA,GAAP,OAAO,CAAG;QAJT,IAAI,CAAA,IAAA,GAAG,SAAS,CAAC;AAMzB,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AAC/B,YAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;YACtC,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;AACD,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,OAAU,EAAA;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,SAAS,CAAC;KAClB;AACF;;ACzBK,SAAU,oBAAoB,CAAC,GAAsB,EAAA;AACzD,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC;AACjC,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,OAAO;QACL,MAAM;AACN,QAAA,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAClB,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE;AACtC,QAAA,MAAM,EAAE,GAAG;KACZ,CAAC;AACJ;;SCDgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,MAAM,GACkB,EAAA;AACxB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAkB,CAAC;AACzC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC/B,IAAA,MAAM,GAAG,GAAwB;QAC/B,KAAK;QACL,OAAO;AACP,QAAA,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC;QACnC,MAAM;QACN,GAAG,4BAA4B,CAAC,OAAO,CAAC;KACzC,CAAC;AACF,IAAA,OAAO,GAAG,CAAC;AACb;;MCnBa,aAAa,CAAA;AAOxB,IAAA,WAAA,CAAY,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,GACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;AAErB,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,YAAY,CAAC;AAEzC,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAoB,KAAI;AACvC,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAClD,gBAAA,QAAQ,CAAC;oBACP,QAAQ;AACR,oBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAoB,KAAI;gBACxC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,aAAC,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5C,SAAA;AACD,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAoB,KAAI;gBACzC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,aAAC,CAAC;YACF,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAY,EAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC/C,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7C,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACzC,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,MAAoB,EAAA;AAC5C,QAAA,OAAO,gBAAgB,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,MAAM,EAAE,MAA2B;AACpC,SAAA,CAAC,CAAC;KACJ;AACF;;MC9CY,YAAY,CAAA;AAGvB,IAAA,WAAA,CAAY,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,KAA8B,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,CAAC,QAAkB,EAAE,KAA8B,EAAA;QACzD,IAAI,KAAK,GAAwC,SAAS,CAAC;AAC3D,QAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QACpC,IAAI,KAAK,IAAI,OAAO,EAAE;AACpB,YAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,KAAK,GAAG,KAAK,CAAC;AACf,aAAA;AACD,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;oBACxD,MAAM,MAAM,GAAG,KAAe,CAAC;oBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAC3C,UAAU,CAAC,MAAK;AACd,wBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACzB,EAAE,EAAE,CAAC,CAAC;AACR,iBAAA;qBAAM,IAAI,UAAU,IAAI,KAAK,EAAE;oBAC7B,KAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,YAAY,CAAC,KAA8B,EAAA;AACzC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9B,YAAA,MAAM,YAAY,GAA2C;gBAC3D,CAAC,OAAO,EAAE,aAAa,CAAC;gBACxB,CAAC,SAAS,EAAE,eAAe,CAAC;gBAC5B,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACpB,CAAC,WAAW,EAAE,WAAW,CAAC;gBAC1B,CAAC,aAAa,EAAE,aAAa,CAAC;gBAC9B,CAAC,MAAM,EAAE,MAAM,CAAC;gBAChB,CAAC,QAAQ,EAAE,QAAQ,CAAC;aACrB,CAAC;YACF,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;AACxB,kBAAE;oBACE,CAAC,OAAO,EAAE,aAAa,CAAC;oBACxB,CAAC,SAAS,EAAE,eAAe,CAAC;oBAC5B,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrB,iBAAA;kBACD,YAAY,CAAC;YAEnB,MAAM,UAAU,GAAsC,EAAE,CAAC;YAEzD,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AACzD,gBAAA,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClC,aAAA;YACD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,gBAAA,IAAI,SAAS,GAAI,KAAmB,CAAC,IAAI,CAAC,CAAC;AAC3C,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AACpE,oBAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;AACzC,iBAAA;gBAED,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,oBAAA,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,EAAE;AACpC,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;QAExD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAW,QAAA,EAAA,MAAM,MAAM,CAAC;AACnD,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;AAC1B,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,GAAG,UAAU;AACb,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,kBAAkB,CAAC,IAAe,EAAA;AAChC,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACxB,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,oBAAA,OAAO,CAAC,CAAM,EAAE,MAAwB,KAAI;wBAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;wBAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,qBAAC,CAAC;AACH,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC9B,gBAAA,OAAO,CAAC,CAAM,EAAE,MAAwB,KAAI;AAC1C,oBAAA,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,iBAAC,CAAC;AACH,aAAA;AACF,SAAA;AACD,QAAA,OAAO,CAAC,CAAM,EAAE,MAAwB,KAAI;YAC1C,MAAM,CAAC,GAAQ,KAAK,CAAC;AACrB,YAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,SAAC,CAAC;KACH;AAED,IAAA,kBAAkB,CAAC,KAA8B,EAAA;QAC/C,MAAM,cAAc,GAAmB,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,cAAc,CAAC,KAAK,GAAG,MAAK;AAC1B,gBAAA,OAAO,QAAQ,CAAC;AAClB,aAAC,CAAC;AACH,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC9B,cAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAC5D,KAAkB,CACnB,CAAC;AACH,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACrC,YAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACvB;AACF;;AC1HK,MAAO,cACX,SAAQ,WAAkC,CAAA;IAsB1C,WAAY,CAAA,GAAQ,EAAE,OAA8B,EAAA;AAClD,QAAA,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAnBtB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAGjB,IAAO,CAAA,OAAA,GAAe,EAAE,CAAC;QAKjB,IAAe,CAAA,eAAA,GAAe,EAAE,CAAC;QACjC,IAAe,CAAA,eAAA,GAAe,EAAE,CAAC;QAEjC,IAAY,CAAA,YAAA,GAAgD,EAAE,CAAC;AAG/D,QAAA,IAAA,CAAA,cAAc,GAAGA,UAAQ,CAAC,MAAK;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,EAAE,GAAG,CAAC,CAAC;QAqRA,IAAS,CAAA,SAAA,GAAG,MAAK;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClB,SAAC,CAAC;QAnRA,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;KACtC;AAED,IAAA,QAAQ,CAAC,OAA8B,EAAA;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE;YAChC,GAAG,OAAO,CAAC,aAAa;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC3C,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,YAAY,GAAA;QACV,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,MAAM,CAAC,cAAgC,EAAA;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,IAAI,cAAc,EAAE;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,YAAA,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACnB,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC3B,IAAI,CAAC,aAAwC,CAC9C,CAAC;AACH,aAAA;AACF,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,cAAgC,EAAA;AACvC,QAAA,IAAI,cAAc,EAAE;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACpD,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpB,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACjC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,aAAA;YACD,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC;AACtE,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACpC,OAAO;AACL,gBAAA,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;AAClB,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,GAAG,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC;aAC3C,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,MAAM,CAAC,GAAqB,EAAA;;AAE1B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,MAAM,GAAG,GAAG,MAAM,IAAK,MAAc,CAAC,IAAI,CAAC;QAC3C,IAAI,MAAM,IAAI,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,EAAE,CAAC;YAEhB,MAAM,cAAc,GAAe,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAI;AAC1C,gBAAA,IAAI,KAAK,EAAE;oBACT,MAAM,EAAE,GAAG,GAAG;0BACV,GAAG,CAAC;AACF,4BAAA,MAAM,EAAE,IAAI;4BACZ,OAAO;4BACP,KAAK;4BACL,GAAG,4BAA4B,CAAC,OAAO,CAAC;yBACzC,CAAC;0BACF,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,EAAE;AACN,wBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACvB,cAAc,CAAC,IAAI,CAAC;AAClB,4BAAA,MAAM,EAAE,IAAI;4BACZ,OAAO;4BACP,KAAK;4BACL,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACzC,yBAAA,CAAC,CAAC;AACJ,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AAEtC,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAI;YAC7C,MAAM,OAAO,GAAG,KAAK,IAAI,CAAC,CAAE,KAAa,CAAC,IAAI,CAAC;YAC/C,OAAO;gBACL,OAAO;gBACP,KAAK;gBACL,OAAO;AACP,gBAAA,MAAM,EAAE,IAAI;gBACZ,GAAG,4BAA4B,CAAC,OAAO,CAAC;aACzC,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,EAAkC,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;gBACN,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,GAAI;oBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,oBAAA,IAAI,GAAG,EAAE;AACP,wBAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;wBAC/B,IAAI,OAAO,IAAI,KAAK,EAAE;AACpB,4BAAA,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAC1B,4BAAA,IAAI,KAAK,EAAE;AACT,gCAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gCAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,WAAW,EAAE,CAAC;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,aAAA;AACF,SAAA;KACF;AAED,IAAA,OAAO,CAAC,IAAmB,EAAA;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB;AAED,IAAA,OAAO,CAAC,IAA2B,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,cAA0C,CAAC;AAC/C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,IAA4B,CAAC;AAEjC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACjB,oBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACtC,oBAAA,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;AAChC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACrB,iBAAA;gBACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACnC,oBAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBAC3D,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAEjB,gBAAA,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,IAAI,EAAE;oBACR,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,iBAAA;AACF,aAAA;YACD,IAAI,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,cAAc,CAAC,CAAC;AAChD,SAAA;KACF;IAED,SAAS,CAAC,cAA+B,EAAE,OAAsB,EAAA;AAC/D,QAAA,IAAI,cAAc,EAAE;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChD,YAAA,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBAChB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,UAAU,CAAC,cAAgC,EAAA;QACzC,MAAM,YAAY,GAAG,cAAc;AACjC,cAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,cAAE,IAAI,CAAC,YAAY,CAAC;AAEtB,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,aAAa,CAAC,QAA0B,EAAA;AACtC,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KACzB,IAAI,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAC5D,CAAC;AACH,SAAA;KACF;;IAGD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;KACzB;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;AACtC,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;AACpB,gBAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC3C;AAED,IAAA,QAAQ,CAAC,KAAoB,EAAA;AAC3B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAgC,CAAC,CAAC;AAC3D,aAAA;AACF,SAAA;KACF;AACD,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAgC,CAAC,CAAC;AAC3D,aAAA;AACF,SAAA;KACF;AACD,IAAA,WAAW,CAAC,KAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAW,CAAC;AAClD,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,KAAgC,CAAC,CAAC;AAChE,SAAA;KACF;AACD,IAAA,mBAAmB,CAAC,KAAqB,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,EAAW,CAAC;AAClE,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,aAAwC,CAAC,CAAC;AACxE,SAAA;KACF;AAED,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;KAC5D;AAMO,IAAA,cAAc,CAAC,QAA6C,EAAA;AAClE,QAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QACpC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AACzD,QAAA,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,aAAa,EAAE,CAAC;AACtB,YAAA,IAAI,OAA2B,CAAC;AAChC,YAAA,IAAI,OAAO,CAAC,UAAU,IAAI,UAAU,EAAE;AACpC,gBAAA,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA,IAAI,KAAK,EAAE;gBAChB,OAAO,GAAG,KAAK,CAAC;AACd,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,GAAG,QAAQ;oBACX,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACzC,iBAAA,CAAC,CAAC;AACJ,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC;AAChC,gBAAA,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,aAAA;AACF,SAAA;KACF;IAEO,MAAM,UAAU,CACtB,GAAa,EACb,UAAwB,EAAE,EAC1B,IAAuB,EACvB,MAAyB,EAAA;;AAEzB,QAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC/B,MAAM,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EAAE,YAAY,GAC1B,GAAG;AACF,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,GAAG,OAAO;SACX,CAAC;AACF,QAAA,MAAM,WAAW,GAAG,YAAY,KAAA,IAAA,IAAZ,YAAY,KAAZ,KAAA,CAAA,GAAA,YAAY,GAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAChE,QAAA,IAAI,KAAY,CAAC;QACjB,MAAM,cAAc,GAA2B,EAAE,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,CAAC,OAA6B,KAAI;AAChD,YAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAC,CAAC;QACF,MAAM,KAAK,GAAG,MAAK;AACjB,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC;AACF,QAAA,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,CAAC,kBAAkB,EAAE;AAC9B,YAAA,OAAO,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC;gBACzC,KAAK;gBACL,OAAO;AACP,gBAAA,MAAM,EAAE,IAAI;gBACZ,IAAI;gBACJ,KAAK;gBACL,OAAO;gBACP,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACzC,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;AAChC,SAAA;QAED,IAAI,OAAO,IAAI,KAAK,EAAE;AACpB,YAAA,MAAM,YAAY,GAAkB;gBAClC,QAAQ;gBACR,OAAO;;gBAEP,WAAW;AACX,gBAAA,YAAY,EAAE,KAAK;AACnB,gBAAA,SAAS,EAAE,KAAK;aACjB,CAAC;AACF,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AACrB,gBAAA,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAClC,aAAA;YACD,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAE/C,YAAA,MAAM,eAAe,GACnB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AACrD,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC3B,CAAC;AACC,oBAAA,CAAC,CAAC,IAAI,CACJ,QAAQ,EACR,MAAK;AACH,wBAAA,KAAK,EAAE,CAAC;qBACT,EACD,IAAI,CACL,CAAC;AACL,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,YAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,KAAY,EAAA;;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,KAAK,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACjE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,MAAM,eAAe,GACnB,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AACrD,gBAAA,MAAM,GAAG,aAAa,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACxD,gBAAA,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;oBAC7B,CAAC,CAAC,GAAG,CAAC,CAAC;AACR,iBAAA;AACD,gBAAA,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,gBAAA,IAAI,eAAe,EAAE;AACnB,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC1B,iBAAA;gBACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpC,aAAA;AACF,SAAA;KACF;IAEO,kBAAkB,CACxB,OAA8B,EAC9B,IAA4B,EAAA;AAE5B,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,IAAI,GAAmB,EAAE,CAAC;AAE9B,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC/B,IAAI,IAAI,KAAK,OAAO,EAAE;;gBAEnB,IAAY,CAAC,YAAY,GAAG,CAC3B,OAA4B,EAC5B,MAAc,KACZ;AACF,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CACjD,OAAoB,CACrB,CAAC;AACF,oBAAA,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACvC,iBAAC,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,GAAG;AACL,oBAAA,KAAK,EAAE,CAAC,OAAO,KAAI;AACjB,wBAAA,IAAI,OAAO,EAAE;AACX,4BAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAClE,yBAAA;AAAM,6BAAA;AACL,4BAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7D,yBAAA;qBACF;iBACF,CAAC;AACH,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAgC,CAAC,CAAC;AACzE,SAAA;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,OAAgB,EAAE,KAAK,KAAI;AAC/C,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,cAAc,CAAC,OAAgB,EAAE,KAAY,EAAA;AACnD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,GAAG,GAAG;AACV,gBAAA,MAAM,EAAE,IAAI;gBACZ,OAAO;gBACP,KAAK;gBACL,GAAG,4BAA4B,CAAC,OAAO,CAAC;aACzC,CAAC;;YAEF,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAA;AACD,YAAA,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,GACnE,IAAI,CAAC,OAAO,CAAC;;AAEf,gBAAA,KAAK,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC;AACtE,gBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,gBAAA,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,aAAa,EAAE;AACjB,wBAAA,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAK;AACzB,4BAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClC,yBAAC,CAAC,CAAC;AACH,wBAAA,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAK;AACxB,4BAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3B,yBAAC,CAAC,CAAC;AACJ,qBAAA;AAAM,yBAAA;AACL,wBAAA,KAAK,CAAC,EAAE,CACN,OAAO,EACP,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAsB,CAAC,EACvD,IAAI,CACL,CAAC;AACH,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;;;gBAGtC,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,KAAK,EAAE;wBACT,IAAI,CAAC,UAAU,CACb;AACE,4BAAA,MAAM,EAAE,IAAI;4BACZ,KAAK;4BACL,OAAO;4BACP,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACzC,yBAAA,EACD,YAAY,EACZ,KAAK,CACN,CAAC;AACH,qBAAA;oBACD,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,CAAoB,EAAA;AAC9C,QAAA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;AAChC,QAAA,MAAM,OAAO,GAAI,KAAa,CAAC,OAAO,CAAC;AACvC,QAAA,MAAM,GAAG,GAAa;AACpB,YAAA,MAAM,EAAE,IAAI;YACZ,KAAK;YACL,OAAO;YACP,GAAG,4BAA4B,CAAC,OAAO,CAAC;SACzC,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACtD,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAA;KACF;AAEO,IAAA,YAAY,CAClB,GAAa,EACb,IAAuB,EACvB,MAAyB,EAAA;AAEzB,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;;AAEf,YAAA,IAAI,CAAC,GAAW,CAAC,cAAc,CAAC,MAAK;AACpC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;AAEpE,QAAA,IAAI,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAwC,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzB,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACpB,IAAI;AACJ,gBAAA,KAAK,EAAE,IAAI;gBACX,QAAQ;gBACR,GAAG,4BAA4B,CAAC,QAAQ,CAAC;AAC1C,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,GAAa,EAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,oBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,KAAgC,CAC9C,CAAC;AACH,iBAAA;gBAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,GAAG,CAAC,KAAK,EAAE;AAC3C,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;KACjD;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACzC,MAAM,GAAG,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,eAAe,GAAI,IAAI,CAAC;AACpC,YAAA,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,aAAA;AACF,SAAA;KACF;IAEO,uBAAuB,GAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACvC;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;YACP,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACzD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,YAAY,EAAE;gBAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACxC,aAAA;AACF,SAAA;KACF;IAEO,kBAAkB,GAAA;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KAC9C;AACF;;SC9pBe,QAAQ,CACtB,GAAW,EACX,QAA4B,EAC5B,OAA4B,EAAA;AAE5B,IAAA,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC,IAAA,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrB,IAAA,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC;AACjC,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,KAAA;IACD,GAAG,CAAC,MAAM,GAAG,YAAA;QACX,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;;QAEhE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACrB,KAAC,CAAC;IACF,GAAG,CAAC,IAAI,EAAE,CAAC;AACX,IAAA,OAAO,MAAK;QACV,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,KAAC,CAAC;AACJ;;ACfM,MAAO,YAAa,SAAQC,cAAa,CAAA;AAG7C,IAAA,WAAA,CACE,QAAgB,EAChB,MAA8B,EAC9B,OAAkB,EAAA;AAElB,QAAA,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAP3B,IAAM,CAAA,MAAA,GAAmB,EAAE,CAAC;KAQnC;IAED,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAClB,SAAA;KACF;IAED,UAAU,GAAA;;QAER,KAAK,CAAC,UAAU,EAAE,CAAC;;AAEnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,OAAO,EAAE;;AAEX,YAAA,MAAM,GAAG,GAAqB,IAAI,CAAC,MAAM,CAAC;AAC1C,YAAA,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AACpB,YAAA,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,CACN,GAAG,EACH,CAAC,QAAQ,KAAI;AACX,gBAAA,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC;AACrB,aAAC,EACD,OAAO,CACR,CACF,CAAC;AACH,SAAA;KACF;AACF;;AC/CD;;;;;AAKG;AAwBH;;;;;AAKG;AACG,MAAO,UAAW,SAAQ,KAAK,CAAA;IA6BnC,WAAY,CAAA,GAAW,EAAE,OAAuB,EAAA;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;AA7BjB,QAAA,IAAA,CAAA,gBAAgB,GAAG;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAmB;AACxB,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,YAAY,EAAE,GAAG;SAClB,CAAC;AASA,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;;QAGhB,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAI,GAAyB,CAAC;QAC9B,KAAK,GAAG,IAAI,OAAO,EAAE;AACnB,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBACvB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KACjE;AAED,IAAA,SAAS,CAAC,MAA2B,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;KACvC;IAED,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;AACd,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,GAAQ,EAAA;QACf,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAClC,YAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC;AACzB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,GAAA;QAGP,OAAO;AACL,YAAA,OAAO,EAAED,UAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1D,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;AACR,SAAA;;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,EAAE;YAC5B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;;QAIvB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;AACxD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE;AAC5C,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;AACvB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9B,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,CAAC,IAAI,CACV,MAAM,EACN,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,OAAO;AACR,aAAA;;AAED,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AACrC,gBAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO;AACR,aAAA;iBAAM,IAAI,IAAI,CAAC,eAAe,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,UAAU,CAChB,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAC9D,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;gBAChC,OAAO,CAAC,WAAW,EAAE,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;gBACjC,OAAO,CAAC,YAAY,EAAE,CAAC;AACxB,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;gBACrC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC,aAAA;SACF,EACD,IAAI,CACL,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1C,IACE,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO;aACxC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,EAC1C;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAChC,SAAA;KACF;AAED,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACpC,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AACrC,SAAA;KACF;AAED,IAAA,SAAS,CAAC,MAAc,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAC7B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;KACF;;AAGD,IAAA,eAAe,CAAC,GAAS,EAAA;QACvB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AACjB,SAAA;;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE;AACrC,YAAA,MAAM,MAAM,GAAG,cAAc,GAAG,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACrC,SAAA;QACD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAChD,QAAA,MAAM,aAAa,GAAG,UAAU,IAAI,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC;AACxD,QAAA,IAAI,GAAG,EAAE;YACP,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;;AAG9C,YAAA,MAAM,MAAM,GAAQ;gBAClB,KAAK,EAAE,IAAI,CAAC,CAAC;gBACb,MAAM,EAAE,IAAI,CAAC,CAAC;aACf,CAAC;AACF,YAAA,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,MAAM,CAAC,IAAI,GAAG,CACZ,UAAU,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ;AACvC,kBAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;kBACxB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;YAEZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACrC,SAAA;KACF;IAED,WAAW,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvE,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACzB;AACF;;ACnPK,MAAO,YACX,SAAQ,WAAgC,CAAA;AAKxC,IAAA,QAAQ,CAAC,OAA4B,EAAA;AACnC,QAAA,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,GAAG,EAAE;YACP,OAAO,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5C,YAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;AACvD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,OAAO,CAAC,YAAY;AAClC;;AAEG;AACH,gBAAA,GAAG,OAAO;gBACV,GAAG,OAAO,CAAC,MAAM;gBACjB,GAAG,OAAO,CAAC,aAAa;AACzB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,sBAAsB,EAAE;AAC1B,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACnD,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU,GAAQ,EAAA;AAC7C,oBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1D,iBAAC,CAAC;AACH,aAAA;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;KACF;AACF;;ACxCD;SAEgB,QAAQ,CACtB,EAAK,EACL,IAAI,GAAG,EAAE,EAAA;AAET,IAAA,IAAI,SAAc,CAAC;IAEnB,SAAS,OAAO,CAAY,GAAG,IAAW,EAAA;QACxC,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,QAAA,SAAS,GAAG,UAAU,CAAC,MAAK;YAC1B,SAAS,GAAG,IAAI,CAAC;AACjB,YAAA,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACtB,EAAE,IAAI,CAAC,CAAC;KACV;IAED,OAAO,CAAC,KAAK,GAAG,YAAA;AACd,QAAA,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;AAClB,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,OAAO,OAAoC,CAAC;AAC9C;;ACfM,SAAU,UAAU,CAGxB,IAAW,EAAA;IACX,OAAO,MAAM,eAAgB,SAAQ,IAAI,CAAA;AACvC,QAAA,WAAA,CAAY,GAAG,IAAW,EAAA;AACxB,YAAA,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;;gBAE7B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAQ,KAAI;;AAEtC,oBAAA,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/C,iBAAC,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/B,aAAA;SACF;QAED,UAAU,CACR,MAA+B,EAC/B,IAAkD,EAAA;;YAGlD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAY,CAAC,KAAK,GAAG,QAAQ,CAC5B,GAAG,EACH,CAAC,QAAQ,KAAI;AACX,gBAAA,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;AACpB,gBAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClB;;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,EAAE,EAAE;AAC/D,gBAAA,IAAI,CAAC,WAAW;AACd,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AACrE,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1C,YAAA,OAAO,IAAI,CAAC;SACb;QAED,aAAa,GAAA;;AAEX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;;AAE1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAEzB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,oBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBAClB,IAAI,IAAI,CAAC,KAAK,EAAE;4BACd,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,yBAAA;AACD,wBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9B,wBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,wBAAA,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;KACF,CAAC;AACJ;;ACnEA,MAAM,aAAc,SAAQE,WAAE,CAAA;IAC5B,WAAY,CAAA,WAAmB,EAAE,OAAkC,EAAA;AACjE,QAAA,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACtC;AACF,CAAA;AAEM,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC;;ACT5C,MAAO,WACX,SAAQ,WAA0C,CAAA;AAGlD,IAAA,QAAQ,CAAC,OAA2B,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,QAAA,IAAI,OAAO,EAAE;YACX,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;AAChC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,gBAAgB,GAAqB;oBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBAEpB,GAAG,GAAG,CAAC,aAAa;iBACrB,CAAC;gBACF,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,oBAAA,gBAAgB,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAC9C,iBAAA;AACD,gBAAA,IAAI,KAAK,CAAC;gBACV,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,oBAAA,KAAK,GAAG,IAAIA,SAAE,CAAC,GAAG,EAAE;AAClB,wBAAA,GAAG,gBAAgB;wBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,YAAY,EAAE,GAAG,CAAC,YAAY;AAC/B,qBAAA,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;oBACL,KAAK,GAAG,IAAIC,WAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;KACF;AACF;;ACtCK,MAAO,UAAW,SAAQ,WAAW,CAAA;AACzC,IAAA,QAAQ,CAAC,OAAwC,EAAA;QAC/C,MAAM,GAAG,GAAG,oDAAoD,CAAC;QACjE,OAAO,KAAK,CAAC,QAAQ,CAAC;AACpB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,WAAW,EACT,yFAAyF;AAC3F,YAAA,GAAG,OAAO;YACV,GAAG;AACJ,SAAA,CAAC,CAAC;KACJ;AACF;;ACRD,MAAM,YAAa,SAAQA,WAAS,CAAC,GAAG,CAAA;IACtC,WAAY,CAAA,WAAmB,EAAE,OAAqB,EAAA;AACpD,QAAA,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KAC7B;AACF,CAAA;AAEM,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC;;ACL1C,MAAO,UACX,SAAQ,WAA6C,CAAA;AAGrD,IAAA,QAAQ,CAAC,OAA0B,EAAA;QACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;AAChC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,YAAY,GAAe;gBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,OAAO,CAAC,aAAa;aACzB,CAAC;AACF,YAAA,IAAI,KAAK,CAAC;YACV,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,gBAAA,KAAK,GAAG,IAAIC,QAAG,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACjE,aAAA;AAAM,iBAAA;gBACL,KAAK,GAAG,IAAID,WAAS,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;AACF;;AChCK,SAAU,uBAAuB,CACrC,MAAyB,EAAA;IAEzB,MAAM,CAAC,GAAG,MAAM,CAAC;;IAEjB,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACb,CAAC;AACJ;;MCgCaE,mBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;AAmBE,QAAA,IAAA,CAAA,OAAO,GAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,aAAa,GAAGA,mBAAiB,CAAC,aAAa,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAGA,mBAAiB,CAAC,eAAe,CAAC;AACpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAIrB,IAAW,CAAA,WAAA,GAAkB,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAA4B;YAClD,MAAM;YACN,MAAM;YACN,SAAS;YACT,WAAW;YACX,SAAS;YACT,WAAW;SACZ,CAAC;AACM,QAAA,IAAA,CAAA,eAAe,GAA4B;YACjD,WAAW;YACX,UAAU;YACV,WAAW;SACZ,CAAC;KAyTH;AAvTC,IAAA,MAAM,CAAC,OAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,MAAM,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EAAE,EAAE,EACb,iBAAiB,GAClB,GAAG,IAAI,CAAC,OAAO,CAAC;AAEjB,YAAA,IAAI,CAAC,GAAG;gBACN,IAAI,CAAC,OAAO,CAAC,GAAG;AAChB,oBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,wBAAA,kBAAkB,EAAE,KAAK;AACzB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,SAAS,EAAE,EAAE,GAAG,uBAAuB,CAAC,EAAE,CAAC,GAAG,SAAS;wBACvD,OAAO;wBACP,OAAO;AACP,wBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;wBACxC,IAAI;AACJ,wBAAA,GAAG,iBAAiB;AACrB,qBAAA,CAAC,CAAC;;YAEL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAW,CAAC,cAAc,GAAG,CAAC,GAAgB,KAAI;AACtD,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAC,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AACnB,SAAA;QACD,IAAI,CAAC,mCAAmC,EAAE,CAAC;KAC5C;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC5C;IAED,mBAAmB,GAAA;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAK,IAAI,CAAC,GAAW,CAAC,iBAAiB,CAAC;AACzE,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,OAAO,gBAAgB,CAAC;AACzB,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;AAED,IAAA,SAAS,CAAC,MAAc,EAAA;QACtB,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/C,SAAA;KACF;IAID,OAAO,CAAC,WAAsC,EAAE,IAAa,EAAA;AAC3D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG;YAAE,OAAO;AACjB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,MAAM,MAAM,GAAG,WAAW,CAAC;AAC3B,YAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;YAC1B,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;AAC1E,YAAA,IAAI,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpB,iBAAA;AACD,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxB,aAAA;YACD,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,gBAAA,IAAI,SAAS,EAAE;AACb,oBAAA,MAAM,CAAC,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAC7C,oBAAA,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACpB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;AACzC,iBAAA;AAAM,qBAAA;;AAEL,oBAAA,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC5C,iBAAA;AACF,aAAA;YACD,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,gBAAA,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,aAAA;YACD,IAAI,OAAO,KAAK,SAAS,EAAE;gBACzB,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,gBAAA,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,aAAA;AACF,SAAA;KACF;AAED,IAAA,SAAS,CAAC,MAAmB,EAAA;AAC3B,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;QAC1B,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5B,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;AAC/B,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACjC,SAAA;KACF;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;KACF;IAED,OAAO,GAAA;;AACL,QAAA,OAAO,CAAA,EAAA,IAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS,CAAC;KACtD;IAED,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,SAAS,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;AAC/B,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;AAC5B,QAAA,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;KACzC;;AAGD,IAAA,SAAS,CAAC,MAAyB,EAAE,OAAA,GAAsB,EAAE,EAAA;QAC3D,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAC7C,MAAM,GAAG,GAAqB,EAAE,CAAC;AACjC,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,aAAA;AACD,YAAA,IAAI,OAAO,EAAE;gBACX,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,aAAA;AACD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,SAAA;KACF;AAED,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAOA,mBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC9C;IAED,aAAa,CAAC,OAAmB,EAAE,OAA6B,EAAA;QAC9D,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KAC9C;AAED,IAAA,mBAAmB,CAAC,OAA6B,EAAA;AAC/C,QAAA,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3C;IAED,UAAU,CAAC,OAAgB,EAAE,QAAgB,EAAA;AAC3C,QAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAoB,CAAC;QACxE,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,YAAA,OAAO,OAAO,CAAC;AAChB,SAAA;KACF;AAED,IAAA,aAAa,CAAC,OAAgB,EAAA;QAC5B,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;KACzC;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,KAAK,CAAC,MAAM,EAAE,CAAC;KAChB;IAED,eAAe,CAAC,KAAwB,EAAE,KAAa,EAAA;QACrD,IAAI,YAAY,IAAI,KAAK,EAAE;AACzB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzB,SAAA;KACF;AAED,IAAA,aAAa,CACX,KAAY,EACZ,KAAa,EACb,MAAqC,EAAA;;KAGtC;AAED,IAAA,UAAU,CAAC,GAAsB,EAAA;AAC/B,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KACvC;IAED,MAAM,CAAC,GAAkB,EAAE,MAAuB,EAAA;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;AAChD,gBAAA,MAAM,aAAa,GAAG,CAAC,CAAe,KAAI;oBACxC,MAAM,KAAK,GAAG,CAAkB,CAAC;AACjC,oBAAA,MAAM,MAAM,GAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtE,oBAAA,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAC5B,iBAAC,CAAC;gBACF,IAAI,aAAa,KAAK,SAAS,EAAE;oBAC/B,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,IAAI,aAAa,EAAE;oBACjB,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AAC9C,iBAAA;gBACD,MAAM,IAAI,GAAG,MAAK;oBAChB,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,wBAAA,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACzC,qBAAA;AACD,oBAAA,IAAI,aAAa,EAAE;AACjB,wBAAA,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AACzC,qBAAA;AACH,iBAAC,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,CAAC;AACjB,aAAA;AACF,SAAA;AACD,QAAA,MAAM,IAAI,GAAG,MAAM,KAAK,eAAe,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;AAEO,IAAA,cAAc,CAAC,EAAe,EAAA;AACpC,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,CAAC,EAAE,CAAC;AACL,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3B;AAEO,IAAA,+BAA+B,CAAC,MAA8B,EAAA;QACpE,IAAI,CAAC,mCAAmC,EAAE,CAAC;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,SAAS,IAAI,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE;AAC7C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,MAAK;gBAC7C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACzC,SAAA;KACF;IAEO,mCAAmC,GAAA;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnB,SAAA;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAClC,SAAA;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAwB,CAAC,CAAC;AAC5C,aAAC,CAAC,CAAC;AACH,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACrC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,aAAA;AAED,YAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACpC,GAAG,CAAC,EAAE,CACJ,CAAC,EACD,CAAC,GAAG,KACF,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,CAAC,EACD,oBAAoB,CAAC,GAAwB,CAAC,CAC/C,EACH,GAAG,CACJ,CAAC;AACH,aAAA;AACF,SAAA;KACF;;AA/VMA,mBAAA,CAAA,aAAa,GAEhB;AACF,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,GAAG,EAAE,UAAU;;AAEf,IAAA,GAAG,EAAE,UAAU;AAChB,CATmB,CASlB;AAEKA,mBAAA,CAAA,eAAe,GAAG;IACvB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,IAAA,WAAW,EAAE,kBAAkB;AAChC,CAHqB,CAGpB;AAEKA,mBAAG,CAAA,GAAA,GAAG,GAAH;;AC7DZ;;AAEG;AAIH,wBAAeA,mBAAiB;;;;"}