react-map4d-map 1.2.9 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/context/Map4dContext.ts","../src/context/MarkerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale,\r\n bearing,\r\n elevation,\r\n height,\r\n model,\r\n texture,\r\n coordinates,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n selected,\r\n growUp,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && (coordinates && coordinates?.length > 0 || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n name != undefined && buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n scale != undefined && buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n if (bearing != undefined) {\r\n buildingRef.current?.setBearing(bearing)\r\n }\r\n }, [bearing])\r\n useEffect(() => {\r\n elevation != undefined && buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n height != undefined && buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n model != undefined && buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n texture != undefined && buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n coordinates != undefined && buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n visible != undefined && buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && buildingRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n useEffect(() => {\r\n selected != undefined && buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n growUp != undefined && buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor,\r\n fillOpacity,\r\n visible,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n userInteractionEnabled,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<map4d.Circle>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(userInteractionEnabled)) {\r\n circleRef.current?.setUserInteraction(userInteractionEnabled as boolean)\r\n }\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated, \r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n let options = props.options\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + props.environment : \"\"}.map4d.vn`\r\n if (props.sdkDomain) {\r\n domain = props.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${props.version}&key=${props.accessKey}&callback=${callback.current}`\r\n if (props.mapid) {\r\n urlNew += `&mapId=${props.mapid}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current.getCamera()\r\n camera.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: any\r\n draggable?: boolean\r\n iconView?: string | Node\r\n userInteractionEnabled?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: label,\r\n draggable: draggable,\r\n iconView: iconView,\r\n userInteractionEnabled: userInteractionEnabled\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n label != undefined && markerRef.current?.setLabel(label)\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && markerRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && poiRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n zIndex,\r\n userInteractionEnabled,\r\n map,\r\n onHover,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polygonRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n userInteractionEnabled,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n userInteractionEnabled: userInteractionEnabled,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polylineRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"],"names":["defaultCt","map","Map4dContext","createContext","markerClusterDefaultContext","addMarker","removeMarker","MarkerClusterContext","MFBuilding","props","position","name","scale","bearing","elevation","height","model","texture","coordinates","visible","draggable","userInteractionEnabled","selected","growUp","onCreated","map4dContext","useContext","theMap","buildingRef","useRef","useEffect","current","length","option","lat","lng","Object","keys","forEach","key","undefined","map4d","Building","setMap","setPosition","setName","setScale","setBearing","setElevation","setHeight","setModel","setTexture","setCoordinates","setVisible","setDraggable","setUserInteraction","setSelected","setGrowUp","MFBuildingOverlay","getUrl","parserData","prefixId","buildingOverlayRef","reCreate","BuildingOverlay","VariableTool","variable","MFCircle","center","radius","fillColor","fillOpacity","strokeColor","strokeWidth","zIndex","circleRef","Circle","hasValue","setCenter","setRadius","setFillColor","setFillOpacity","setStrokeColor","setStrokeWidth","setZIndex","MFDataLayer","geoJsonString","dataLayerRef","feature","data","remove","addGeoJson","MFDirectionsRenderer","routes","activedIndex","activeStrokeWidth","activeStrokeColor","activeOutlineWidth","activeOutlineColor","activeStrokePattern","inactiveStrokeWidth","inactiveStrokeColor","inactiveOutlineWidth","inactiveOutlineColor","inactiveStrokePattern","originMarkerOptions","destinationMarkerOptions","waypointMarkerOptions","onMarkerDragEnd","onHover","onMouseOut","onMouseOver","onMouseMove","directionRef","DirectionsRenderer","setRoutes","setActivedIndex","setActiveStrokePattern","setInactiveStrokePattern","setOptions","MFGroundOverlay","bounds","override","opacity","groundOverlayRef","TileOverlay","setOpacity","MFImageOverlay","url","imageOverlayRef","ImageOverlay","addLibrary","id","scriptId","exist","document","getElementById","script","createElement","src","defer","body","appendChild","createId","dt","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","MFMap","callback","mapDomRef","mapRef","scriptElement","events","useState","createCallback","window","options","Map","onMapReady","registerEvent","domain","environment","sdkDomain","urlNew","version","accessKey","mapid","destroy","t","mapType","setMapType","camera","getCamera","setTarget","moveCamera","eventClickMarker","addListener","args","marker","onClick","eventRightClickMarker","onRightClick","eventDragEndMarker","onDragEnd","eventHoverMarker","eventHoverPolygon","polygon","eventHoverPolyline","polyline","eventHoverDirection","renderer","directions","eventClickPolyline","eventMouseOutDirection","eventMouseOverDirection","eventMouseMoveDirection","eventMouseOutPolyline","eventMouseOverPolyline","eventMouseMovePolyline","eventMouseOutMarker","eventMouseOverMarker","eventMouseMoveMarker","eventClickPoi","poi","eventHoverPoi","concat","onClickLocation","location","push","onRightClickLocation","onTilesLoaded","onCameraChanging","newContext","React","Fragment","style","width","display","ref","Provider","value","children","MFMarker","anchor","labelAnchor","icon","rotation","title","snippet","windowAnchor","label","iconView","markerClusterContext","markerRef","iconT","Icon","Marker","infoWindow","setInfoWindow","infoContents","setInfoContents","showInfoWindow","hideInfoWindow","setAnchor","setLabelAnchor","setIcon","setRotation","setTitle","setSnippet","setWindowAnchor","setLabel","setIconView","MFMarkerCluster","minZoom","maxZoom","zoomOnClick","markerRefs","markerClusterRef","drawCluster","MarkerClusterer","clusterContext","newMarkers","filter","setZoomOnClick","MFPOI","subtitle","color","type","poiRef","POI","setSubtitle","setColor","setType","MFPOIOverlay","poiOverlayRef","POIOverlay","MFPolygon","paths","polygonRef","Polygon","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","a","invert","rotate90","add","subtract","multiply","rotateBy","cos","PI","sin","rotateByRadian","cross","dot","perp","v1","v2","neg","v","sqrt","MathUtils","clamp","min","max","toRadians","angleDegrees","distance","p1","p2","findNextPowerOf2","n","lg","log2","findPreviousPowerOf2","clz32","Vector3","z","buffer","Float32Array","Matrix4","setIdentity","copy","other","translate","rotateX","alpha","sinA","cosA","setRotationX","r1","r2","rotateY","setRotationY","r0","rotateZ","setRotationZ","matrix","result","i","j","k","ortho","left","right","bottom","top","near","far","setOrtho","perspective","fov","aspect","tan","frustum","setPerspective","setFrustum","transform","vector","w","inverse","rows","cols","A","slice","B","console","log","Ac","Ar","Bc","Br","f","s","Color","red","green","blue","_buffer","rgbBuffer","fromHex","hexString","substring","split","join","colorCode","parseInt","fromInt","fromVec3","mix","b","factor","isValid","colorString","test","float2hex","hex","substr","MapConstants","CameraConstants","MathConstants","rad2Deg","radiusEarthMeters","halfEarthCircumFerenceInMeter","Number","MIN_SAFE_INTEGER","deg2Rad","ColorConstants","getSkyColor","skyColors","getFogColor","fogColors","getLightColor","lightColors","ClassType","Map4dObject","classType","isClassType","mapObject","mfClassType","LatLng","LATLNG","equals","valid","isFinite","abs","convert","input","Array","isArray","Error","distanceTo","target","desc","latStartRadian","longStartRadian","latDescRadian","longDescRadian","u","asin","sign","ProjectionMercator","projectInternal","latLng","worldSize","latitude","minLatitude","maxLatitude","maxLongitude","maxDegrees","convertToMeterFromLatLng","constrainedLatitude","constrainedLongitude","m","easting","northing","convertToLatLngFromMeter","meters","atan","exp","longitude","projectZoom","zoom","CoordinateTransformer","coordinate","addCoordinates","rotate","degree","centerInMeters","transformedCoordinates","degreeInRadians","point","newCenter","oldCenter","translateVectorX","translateVectorY"],"mappings":";;;;;AAEO,IAAMA,SAAS,GAAG;EACrBC,GAAG,EAAE;AADgB,CAAlB;AAGA,IAAMC,YAAY,GAAGC,mBAAa,CAACH,SAAD,CAAlC;;ACHA,IAAMI,2BAA2B,GAAG;EACvCC,SAAS,EAAE,IAD4B;EAEvCC,YAAY,EAAE;AAFyB,CAApC;AAIP,AAAO,IAAMC,oBAAoB,GAAGJ,mBAAa,CAACC,2BAAD,CAA1C;;ACgBP,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD;EACf,IACIC,QADJ,GAiBID,KAjBJ,CACIC,QADJ;MAEIC,IAFJ,GAiBIF,KAjBJ,CAEIE,IAFJ;MAGIC,KAHJ,GAiBIH,KAjBJ,CAGIG,KAHJ;MAIIC,OAJJ,GAiBIJ,KAjBJ,CAIII,OAJJ;MAKIC,SALJ,GAiBIL,KAjBJ,CAKIK,SALJ;MAMIC,MANJ,GAiBIN,KAjBJ,CAMIM,MANJ;MAOIC,KAPJ,GAiBIP,KAjBJ,CAOIO,KAPJ;MAQIC,OARJ,GAiBIR,KAjBJ,CAQIQ,OARJ;MASIC,WATJ,GAiBIT,KAjBJ,CASIS,WATJ;MAUIC,OAVJ,GAiBIV,KAjBJ,CAUIU,OAVJ;MAWIC,SAXJ,GAiBIX,KAjBJ,CAWIW,SAXJ;MAYIC,sBAZJ,GAiBIZ,KAjBJ,CAYIY,sBAZJ;MAaIC,QAbJ,GAiBIb,KAjBJ,CAaIa,QAbJ;MAcIC,MAdJ,GAiBId,KAjBJ,CAcIc,MAdJ;MAeItB,GAfJ,GAiBIQ,KAjBJ,CAeIR,GAfJ;MAgBIuB,SAhBJ,GAiBIf,KAjBJ,CAgBIe,SAhBJ;EAmBA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM2B,WAAW,GAAGC,YAAM,CAAC,IAAD,CAA1B;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACC,WAAW,CAACG,OAAvB,KAAmCb,WAAW,IAAI,CAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEc,MAAb,IAAsB,CAArC,IAA0ChB,KAA7E,CAAJ,EAAyF;MAAA;;MACrF,IAAIiB,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAETxB,IAAI,EAAEA,IAFG;QAGTC,KAAK,EAAEA,KAHE;QAITC,OAAO,EAAEA,OAJA;QAKTC,SAAS,EAAEA,SALF;QAMTC,MAAM,EAAEA,MANC;QAOTC,KAAK,EAAEA,KAPE;QAQTC,OAAO,EAAEA,OARA;QASTC,WAAW,EAAEA,WATJ;QAUTC,OAAO,EAAEA,OAVA;QAWTC,SAAS,EAAEA,SAXF;QAYTC,sBAAsB,EAAEA,sBAZf;QAaTC,QAAQ,EAAEA,QAbD;QAcTC,MAAM,EAAEA;OAdZ;MAgBAa,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAX,WAAW,CAACG,OAAZ,GAAsB,IAAIU,KAAK,CAACC,QAAV,CAAmBT,MAAnB,CAAtB;MACA,wBAAAL,WAAW,CAACG,OAAZ,8EAAqBY,MAArB,CAA4BhB,MAA5B;MACAH,SAAS,IAAIA,SAAS,CAACI,WAAW,CAACG,OAAb,CAAtB;;GAzBC,EA2BN,CAACJ,MAAD,EAASjB,QAAT,EAAmBQ,WAAnB,EAAgCF,KAAhC,CA3BM,CAAT;EA6BAc,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,yBAAAC,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4BhB,MAA5B;;;IAEJ,OAAO;;;MACH,yBAAAC,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBa,WAArB,CAAiClC,QAAjC;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,eAAS,CAAC;;;IACNnB,IAAI,IAAI6B,SAAR,8BAAqBZ,WAAW,CAACG,OAAjC,0DAAqB,sBAAqBc,OAArB,CAA6BlC,IAA7B,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGAmB,eAAS,CAAC;;;IACNlB,KAAK,IAAI4B,SAAT,8BAAsBZ,WAAW,CAACG,OAAlC,0DAAsB,sBAAqBe,QAArB,CAA8BlC,KAA9B,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAkB,eAAS,CAAC;IACN,IAAIjB,OAAO,IAAI2B,SAAf,EAA0B;MAAA;;MACtB,yBAAAZ,WAAW,CAACG,OAAZ,gFAAqBgB,UAArB,CAAgClC,OAAhC;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKAiB,eAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,8BAA0BZ,WAAW,CAACG,OAAtC,0DAA0B,sBAAqBiB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,eAAS,CAAC;;;IACNf,MAAM,IAAIyB,SAAV,+BAAuBZ,WAAW,CAACG,OAAnC,2DAAuB,uBAAqBkB,SAArB,CAA+BlC,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAe,eAAS,CAAC;;;IACNd,KAAK,IAAIwB,SAAT,+BAAsBZ,WAAW,CAACG,OAAlC,2DAAsB,uBAAqBmB,QAArB,CAA8BlC,KAA9B,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAc,eAAS,CAAC;;;IACNb,OAAO,IAAIuB,SAAX,+BAAwBZ,WAAW,CAACG,OAApC,2DAAwB,uBAAqBoB,UAArB,CAAgClC,OAAhC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAa,eAAS,CAAC;;;IACNZ,WAAW,IAAIsB,SAAf,+BAA4BZ,WAAW,CAACG,OAAxC,2DAA4B,uBAAqBqB,cAArB,CAAoClC,WAApC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGAY,eAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,+BAAwBZ,WAAW,CAACG,OAApC,2DAAwB,uBAAqBsB,UAArB,CAAgClC,OAAhC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,+BAA0BZ,WAAW,CAACG,OAAtC,2DAA0B,uBAAqBuB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,eAAS,CAAC;;;IACNT,sBAAsB,IAAImB,SAA1B,+BAAuCZ,WAAW,CAACG,OAAnD,2DAAuC,uBAAqBwB,kBAArB,CAAwClC,sBAAxC,CAAvC;GADK,EAEN,CAACA,sBAAD,CAFM,CAAT;EAGAS,eAAS,CAAC;;;IACNR,QAAQ,IAAIkB,SAAZ,+BAAyBZ,WAAW,CAACG,OAArC,2DAAyB,uBAAqByB,WAArB,CAAiClC,QAAjC,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAQ,eAAS,CAAC;;;IACNP,MAAM,IAAIiB,SAAV,+BAAuBZ,WAAW,CAACG,OAAnC,2DAAuB,uBAAqB0B,SAArB,CAA+BlC,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CAhHD;;ACXA,IAAMmC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACjD,KAAD;EACtB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;MAEIxC,OAFJ,GAOIV,KAPJ,CAEIU,OAFJ;MAGIyC,UAHJ,GAOInD,KAPJ,CAGImD,UAHJ;MAIIC,QAJJ,GAOIpD,KAPJ,CAIIoD,QAJJ;MAKI5D,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM6D,kBAAkB,GAAGjC,YAAM,EAAjC;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAD,kBAAkB,CAAC/B,OAAnB,gFAA4BY,MAA5B,CAAmC,IAAnC;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTyC,UAAU,EAAEA,UAHH;MAITC,QAAQ,EAAEA;KAJd;IAMAzB,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAuB,kBAAkB,CAAC/B,OAAnB,GAA6B,IAAIU,KAAK,CAACuB,eAAV,CAA0B/B,MAA1B,CAA7B;IACA,0BAAA6B,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmChB,MAAnC;IACAH,SAAS,IAAIA,SAAS,CAACsC,kBAAkB,CAAC/B,OAApB,CAAtB;GAfJ;;EAkBAD,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACmC,kBAAkB,CAAC/B,OAAlC,EAA2C;MACvCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAmC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmChB,MAAnC;;;IAEJ,OAAO;;;MACH,0BAAAmC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmC,IAAnC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAAgC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmC,IAAnC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,EAASC,UAAT,EAAqBC,QAArB,EAA+B1C,OAA/B,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA3DD;;ICXa8C,YAAb;;AACWA,qBAAA,GAAW,UAACC,QAAD;EACd,IAAIA,QAAQ,IAAI1B,SAAZ,IAAyB0B,QAAQ,IAAI,IAAzC,EAA+C;IAC3C,OAAO,IAAP;;;EAEJ,OAAO,KAAP;AACH,CALM;;ACmBX,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC1D,KAAD;EACb,IACI2D,MADJ,GAcI3D,KAdJ,CACI2D,MADJ;MAEIC,MAFJ,GAcI5D,KAdJ,CAEI4D,MAFJ;MAGIC,SAHJ,GAcI7D,KAdJ,CAGI6D,SAHJ;MAIIC,WAJJ,GAcI9D,KAdJ,CAII8D,WAJJ;MAKIpD,OALJ,GAcIV,KAdJ,CAKIU,OALJ;MAMIqD,WANJ,GAcI/D,KAdJ,CAMI+D,WANJ;MAOIC,WAPJ,GAcIhE,KAdJ,CAOIgE,WAPJ;MAQIrD,SARJ,GAcIX,KAdJ,CAQIW,SARJ;MASIsD,MATJ,GAcIjE,KAdJ,CASIiE,MATJ;MAUI5D,SAVJ,GAcIL,KAdJ,CAUIK,SAVJ;MAWIO,sBAXJ,GAcIZ,KAdJ,CAWIY,sBAXJ;MAYIpB,GAZJ,GAcIQ,KAdJ,CAYIR,GAZJ;MAaIuB,SAbJ,GAcIf,KAdJ,CAaIe,SAbJ;EAgBA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM0E,SAAS,GAAG9C,YAAM,EAAxB;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACgD,SAAS,CAAC5C,OAAzB,EAAkC;MAAA;;MAC9B,IAAIE,MAAM,GAAG;QACTmC,MAAM,EAAEA,MAAM,IAAI;UAAElC,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADhC;QAETkC,MAAM,EAAEA,MAFC;QAGTC,SAAS,EAAEA,SAHF;QAITC,WAAW,EAAEA,WAJJ;QAKTpD,OAAO,EAAEA,OALA;QAMTqD,WAAW,EAAEA,WANJ;QAOTC,WAAW,EAAEA,WAPJ;QAQTrD,SAAS,EAAEA,SARF;QASTsD,MAAM,EAAEA,MATC;QAUT5D,SAAS,EAAEA,SAVF;QAWTO,sBAAsB,EAAEA;OAX5B;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAoC,SAAS,CAAC5C,OAAV,GAAoB,IAAIU,KAAK,CAACmC,MAAV,CAAiB3C,MAAjB,CAApB;MACA,sBAAA0C,SAAS,CAAC5C,OAAV,0EAAmBY,MAAnB,CAA0BhB,MAA1B;MACAH,SAAS,IAAIA,SAAS,CAACmD,SAAS,CAAC5C,OAAX,CAAtB;;GAtBC,EAwBN,CAACJ,MAAD,CAxBM,CAAT;EA0BAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,uBAAAgD,SAAS,CAAC5C,OAAV,4EAAmBY,MAAnB,CAA0BhB,MAA1B;;;IAEJ,OAAO;;;MACH,uBAAAgD,SAAS,CAAC5C,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,uBAAA6C,SAAS,CAAC5C,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBT,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,uBAAAO,SAAS,CAAC5C,OAAV,4EAAmB+C,SAAnB,CAA6BV,MAA7B;;GAFC,EAKN,CAACA,MAAD,CALM,CAAT;EAMAtC,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBR,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,uBAAAM,SAAS,CAAC5C,OAAV,4EAAmBgD,SAAnB,CAA6BV,MAA7B;;GAFC,EAIN,CAACA,MAAD,CAJM,CAAT;EAKAvC,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBP,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,uBAAAK,SAAS,CAAC5C,OAAV,4EAAmBiD,YAAnB,CAAgCV,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAxC,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBN,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,uBAAAI,SAAS,CAAC5C,OAAV,4EAAmBkD,cAAnB,CAAkCV,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKAzC,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsB1D,OAAtB,CAAJ,EAAoC;MAAA;;MAChC,uBAAAwD,SAAS,CAAC5C,OAAV,4EAAmBsB,UAAnB,CAA8BlC,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKAW,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBL,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,wBAAAG,SAAS,CAAC5C,OAAV,8EAAmBmD,cAAnB,CAAkCV,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKA1C,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBJ,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,wBAAAE,SAAS,CAAC5C,OAAV,8EAAmBoD,cAAnB,CAAkCV,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKA3C,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBzD,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,wBAAAuD,SAAS,CAAC5C,OAAV,8EAAmBuB,YAAnB,CAAgClC,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAU,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBH,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,wBAAAC,SAAS,CAAC5C,OAAV,8EAAmBqD,SAAnB,CAA6BV,MAA7B;;GAFC,EAIN,CAACA,MAAD,CAJM,CAAT;EAKA5C,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsB/D,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,wBAAA6D,SAAS,CAAC5C,OAAV,8EAAmBiB,YAAnB,CAAgClC,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAgB,eAAS,CAAC;IACN,IAAImC,YAAY,CAACY,QAAb,CAAsBxD,sBAAtB,CAAJ,EAAmD;MAAA;;MAC/C,wBAAAsD,SAAS,CAAC5C,OAAV,8EAAmBwB,kBAAnB,CAAsClC,sBAAtC;;GAFC,EAIN,CAACA,sBAAD,CAJM,CAAT;EAMA,OAAO,IAAP;AACH,CAvHD;;ACXA,IAAMgE,WAAW,GAAG,SAAdA,WAAc,CAAC5E,KAAD;EAChB,IACI6E,aADJ,GAII7E,KAJJ,CACI6E,aADJ;MAEIrF,GAFJ,GAIIQ,KAJJ,CAEIR,GAFJ;MAGIuB,SAHJ,GAIIf,KAJJ,CAGIe,SAHJ;EAMA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMsF,YAAY,GAAG1D,YAAM,EAA3B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAwB,YAAY,CAACxD,OAAb,gFAAsBO,OAAtB,CAA8B,UAACkD,OAAD;;;MAC1B7D,MAAM,SAAN,IAAAA,MAAM,WAAN,4BAAAA,MAAM,CAAE8D,IAAR,8DAAcC,MAAd,CAAqBF,OAArB;KADJ;IAGAD,YAAY,CAACxD,OAAb,GAAuBJ,MAAvB,aAAuBA,MAAvB,wCAAuBA,MAAM,CAAE8D,IAA/B,kDAAuB,cAAcE,UAAd,CAAyBL,aAAzB,CAAvB;IACA9D,SAAS,IAAIA,SAAS,CAAC+D,YAAY,CAACxD,OAAd,CAAtB;GALJ;;EAQAD,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAAyD,YAAY,CAACxD,OAAb,kFAAsBO,OAAtB,CAA8B,UAACkD,OAAD;;;QAC1B7D,MAAM,SAAN,IAAAA,MAAM,WAAN,6BAAAA,MAAM,CAAE8D,IAAR,gEAAcC,MAAd,CAAqBF,OAArB;OADJ;KADJ;GADK,EAMN,EANM,CAAT;EAOA,OAAO,IAAP;AACH,CAlCD;;AC8BA,IAAMI,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACnF,KAAD;EACzB,IACIoF,MADJ,GAuBIpF,KAvBJ,CACIoF,MADJ;MAEIC,YAFJ,GAuBIrF,KAvBJ,CAEIqF,YAFJ;MAGIC,iBAHJ,GAuBItF,KAvBJ,CAGIsF,iBAHJ;MAIIC,iBAJJ,GAuBIvF,KAvBJ,CAIIuF,iBAJJ;MAKIC,kBALJ,GAuBIxF,KAvBJ,CAKIwF,kBALJ;MAMIC,kBANJ,GAuBIzF,KAvBJ,CAMIyF,kBANJ;MAOIC,mBAPJ,GAuBI1F,KAvBJ,CAOI0F,mBAPJ;MAQIC,mBARJ,GAuBI3F,KAvBJ,CAQI2F,mBARJ;MASIC,mBATJ,GAuBI5F,KAvBJ,CASI4F,mBATJ;MAUIC,oBAVJ,GAuBI7F,KAvBJ,CAUI6F,oBAVJ;MAWIC,oBAXJ,GAuBI9F,KAvBJ,CAWI8F,oBAXJ;MAYIC,qBAZJ,GAuBI/F,KAvBJ,CAYI+F,qBAZJ;MAaIC,mBAbJ,GAuBIhG,KAvBJ,CAaIgG,mBAbJ;MAcIC,wBAdJ,GAuBIjG,KAvBJ,CAcIiG,wBAdJ;MAeIC,qBAfJ,GAuBIlG,KAvBJ,CAeIkG,qBAfJ;MAgBIC,eAhBJ,GAuBInG,KAvBJ,CAgBImG,eAhBJ;MAiBI3G,GAjBJ,GAuBIQ,KAvBJ,CAiBIR,GAjBJ;MAkBI4G,OAlBJ,GAuBIpG,KAvBJ,CAkBIoG,OAlBJ;MAmBIrF,SAnBJ,GAuBIf,KAvBJ,CAmBIe,SAnBJ;MAoBIsF,UApBJ,GAuBIrG,KAvBJ,CAoBIqG,UApBJ;MAqBIC,WArBJ,GAuBItG,KAvBJ,CAqBIsG,WArBJ;MAsBIC,WAtBJ,GAuBIvG,KAvBJ,CAsBIuG,WAtBJ;EAyBA,IAAMvF,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMgH,YAAY,GAAGpF,YAAM,EAA3B;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACsF,YAAY,CAAClF,OAA5B,EAAqC;MAAA;;MACjC,IAAIE,MAAM,GAAG;QACT4D,MAAM,EAANA,MADS;QAETC,YAAY,EAAZA,YAFS;QAGTC,iBAAiB,EAAjBA,iBAHS;QAITC,iBAAiB,EAAjBA,iBAJS;QAKTC,kBAAkB,EAAlBA,kBALS;QAMTC,kBAAkB,EAAlBA,kBANS;QAOTC,mBAAmB,EAAnBA,mBAPS;QAQTC,mBAAmB,EAAnBA,mBARS;QASTC,mBAAmB,EAAnBA,mBATS;QAUTC,oBAAoB,EAApBA,oBAVS;QAWTC,oBAAoB,EAApBA,oBAXS;QAYTC,qBAAqB,EAArBA,qBAZS;QAaTC,mBAAmB,EAAnBA,mBAbS;QAcTC,wBAAwB,EAAxBA,wBAdS;QAeTC,qBAAqB,EAArBA,qBAfS;QAgBTC,eAAe,EAAfA;OAhBJ;MAkBAxE,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKA0E,YAAY,CAAClF,OAAb,GAAuB,IAAIU,KAAK,CAACyE,kBAAV,CAA6BjF,MAA7B,CAAvB;MACA,yBAAAgF,YAAY,CAAClF,OAAb,gFAAsBY,MAAtB,CAA6BhB,MAA7B;MACAsF,YAAY,CAAClF,OAAb,CAAqB8E,OAArB,GAA+BpG,KAAK,CAACoG,OAArC;MACAI,YAAY,CAAClF,OAAb,CAAqB+E,UAArB,GAAkCA,UAAlC;MACAG,YAAY,CAAClF,OAAb,CAAqBgF,WAArB,GAAmCA,WAAnC;MACAE,YAAY,CAAClF,OAAb,CAAqBiF,WAArB,GAAmCA,WAAnC;MACAxF,SAAS,IAAIA,SAAS,CAACyF,YAAY,CAAClF,OAAd,CAAtB;;GA/BC,EAiCN,CAACJ,MAAD,CAjCM,CAAT;EAmCAG,eAAS,CAAC;IACN,IAAImF,YAAY,CAAClF,OAAjB,EAA0B;MACtBkF,YAAY,CAAClF,OAAb,CAAqB8E,OAArB,GAA+BA,OAA/B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA/E,eAAS,CAAC;IACN,IAAImF,YAAY,CAAClF,OAAjB,EAA0B;MACtBkF,YAAY,CAAClF,OAAb,CAAqB+E,UAArB,GAAkCA,UAAlC;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAhF,eAAS,CAAC;IACN,IAAImF,YAAY,CAAClF,OAAjB,EAA0B;MACtBkF,YAAY,CAAClF,OAAb,CAAqBgF,WAArB,GAAmCA,WAAnC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAjF,eAAS,CAAC;IACN,IAAImF,YAAY,CAAClF,OAAjB,EAA0B;MACtBkF,YAAY,CAAClF,OAAb,CAAqBiF,WAArB,GAAmCA,WAAnC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAsF,YAAY,CAAClF,OAAb,kFAAsBY,MAAtB,CAA6BhB,MAA7B;;;IAEJ,OAAO;;;MACH,0BAAAsF,YAAY,CAAClF,OAAb,kFAAsBY,MAAtB,CAA6B,IAA7B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAAmF,YAAY,CAAClF,OAAb,kFAAsBY,MAAtB,CAA6B,IAA7B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;;;IACN+D,MAAM,IAAIrD,SAAV,+BAAuByE,YAAY,CAAClF,OAApC,2DAAuB,uBAAsBoF,SAAtB,CAAgCtB,MAAhC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA/D,eAAS,CAAC;;;IACNgE,YAAY,IAAItD,SAAhB,+BAA6ByE,YAAY,CAAClF,OAA1C,2DAA6B,uBAAsBqF,eAAtB,CAAsCtB,YAAtC,CAA7B;GADK,EAEN,CAACA,YAAD,CAFM,CAAT;EAGAhE,eAAS,CAAC;;;IACNqE,mBAAmB,IAAI3D,SAAvB,+BAAoCyE,YAAY,CAAClF,OAAjD,2DAAoC,uBAAsBsF,sBAAtB,CAA6ClB,mBAA7C,CAApC;GADK,EAEN,CAACA,mBAAD,CAFM,CAAT;EAGArE,eAAS,CAAC;;;IACN0E,qBAAqB,IAAIhE,SAAzB,+BAAsCyE,YAAY,CAAClF,OAAnD,2DAAsC,uBAAsBuF,wBAAtB,CAA+Cd,qBAA/C,CAAtC;GADK,EAEN,CAACA,qBAAD,CAFM,CAAT;EAGA1E,eAAS,CAAC;;;IACN,IAAIG,MAAM,GAAG;MACT4D,MAAM,EAANA,MADS;MAETC,YAAY,EAAZA,YAFS;MAGTC,iBAAiB,EAAjBA,iBAHS;MAITC,iBAAiB,EAAjBA,iBAJS;MAKTC,kBAAkB,EAAlBA,kBALS;MAMTC,kBAAkB,EAAlBA,kBANS;MAOTC,mBAAmB,EAAnBA,mBAPS;MAQTC,mBAAmB,EAAnBA,mBARS;MASTC,mBAAmB,EAAnBA,mBATS;MAUTC,oBAAoB,EAApBA,oBAVS;MAWTC,oBAAoB,EAApBA,oBAXS;MAYTC,qBAAqB,EAArBA,qBAZS;MAaTC,mBAAmB,EAAnBA,mBAbS;MAcTC,wBAAwB,EAAxBA,wBAdS;MAeTC,qBAAqB,EAArBA,qBAfS;MAgBTC,eAAe,EAAfA;KAhBJ;IAkBAxE,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKA,0BAAA0E,YAAY,CAAClF,OAAb,kFAAsBwF,UAAtB,CAAiCtF,MAAjC;GAxBK,EA0BL,CACI8D,iBADJ,EAEIC,iBAFJ,EAGIC,kBAHJ,EAIIC,kBAJJ,EAKIG,mBALJ,EAMIC,oBANJ,EAOIC,oBAPJ,EAQIE,mBARJ,EASIC,wBATJ,EAUIC,qBAVJ,EAWIC,eAXJ,CA1BK,CAAT;EA0CA,OAAO,IAAP;AACH,CA9JD;;AC/BA,IAAMY,eAAe,GAAG,SAAlBA,eAAkB,CAAC/G,KAAD;EACpB,IACIgH,MADJ,GASIhH,KATJ,CACIgH,MADJ;MAEI9D,MAFJ,GASIlD,KATJ,CAEIkD,MAFJ;MAGI+D,QAHJ,GASIjH,KATJ,CAGIiH,QAHJ;MAIIvG,OAJJ,GASIV,KATJ,CAIIU,OAJJ;MAKIuD,MALJ,GASIjE,KATJ,CAKIiE,MALJ;MAMIiD,OANJ,GASIlH,KATJ,CAMIkH,OANJ;MAOI1H,GAPJ,GASIQ,KATJ,CAOIR,GAPJ;MAQIuB,SARJ,GASIf,KATJ,CAQIe,SARJ;EAWA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM2H,gBAAgB,GAAG/F,YAAM,EAA/B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAA6D,gBAAgB,CAAC7F,OAAjB,gFAA0BY,MAA1B,CAAiC,IAAjC;IACA,IAAIV,MAAM,GAAG;MACTwF,MAAM,EAANA,MADS;MAET9D,MAAM,EAAEA,MAFC;MAGT+D,QAAQ,EAARA,QAHS;MAITvG,OAAO,EAAEA,OAJA;MAKTuD,MAAM,EAAEA,MALC;MAMTiD,OAAO,EAAEA;KANb;IAQAvF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAqF,gBAAgB,CAAC7F,OAAjB,GAA2B,IAAIU,KAAK,CAACoF,WAAV,CAAsB5F,MAAtB,CAA3B;IACA,0BAAA2F,gBAAgB,CAAC7F,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;IACAH,SAAS,IAAIA,SAAS,CAACoG,gBAAgB,CAAC7F,OAAlB,CAAtB;GAjBJ;;EAoBAD,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACiG,gBAAgB,CAAC7F,OAAhC,EAAyC;MACrCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAiG,gBAAgB,CAAC7F,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;;;IAEJ,OAAO;;;MACH,0BAAAiG,gBAAgB,CAAC7F,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAA8F,gBAAgB,CAAC7F,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAAC0D,MAAD,EAAS9D,MAAT,EAAiB+D,QAAjB,CAJM,CAAT;EAKA5F,eAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,+BAAwBoF,gBAAgB,CAAC7F,OAAzC,2DAAwB,uBAA0BsB,UAA1B,CAAqClC,OAArC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuBoF,gBAAgB,CAAC7F,OAAxC,2DAAuB,uBAA0BqD,SAA1B,CAAoCV,MAApC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACN6F,OAAO,IAAInF,SAAX,+BAAwBoF,gBAAgB,CAAC7F,OAAzC,2DAAwB,uBAA0B+F,UAA1B,CAAqCH,OAArC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CAxED;;ACAA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAACtH,KAAD;EACnB,IACIuH,GADJ,GAQIvH,KARJ,CACIuH,GADJ;MAEIP,MAFJ,GAQIhH,KARJ,CAEIgH,MAFJ;MAGItG,OAHJ,GAQIV,KARJ,CAGIU,OAHJ;MAIIuD,MAJJ,GAQIjE,KARJ,CAIIiE,MAJJ;MAKIiD,OALJ,GAQIlH,KARJ,CAKIkH,OALJ;MAMI1H,GANJ,GAQIQ,KARJ,CAMIR,GANJ;MAOIuB,SAPJ,GAQIf,KARJ,CAOIe,SAPJ;EAUA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMgI,eAAe,GAAGpG,YAAM,EAA9B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAkE,eAAe,CAAClG,OAAhB,gFAAyBY,MAAzB,CAAgC,IAAhC;IACA,IAAIV,MAAM,GAAG;MACT+F,GAAG,EAAHA,GADS;MAETP,MAAM,EAAEA,MAFC;MAGTtG,OAAO,EAAEA,OAHA;MAITuD,MAAM,EAAEA,MAJC;MAKTiD,OAAO,EAAEA;KALb;IAOAvF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKA0F,eAAe,CAAClG,OAAhB,GAA0B,IAAIU,KAAK,CAACyF,YAAV,CAAuBjG,MAAvB,CAA1B;IACA,0BAAAgG,eAAe,CAAClG,OAAhB,kFAAyBY,MAAzB,CAAgChB,MAAhC;IACAH,SAAS,IAAIA,SAAS,CAACyG,eAAe,CAAClG,OAAjB,CAAtB;GAhBJ;;EAmBAD,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACsG,eAAe,CAAClG,OAA/B,EAAwC;MACpCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAsG,eAAe,CAAClG,OAAhB,kFAAyBY,MAAzB,CAAgChB,MAAhC;;;IAEJ,OAAO;;;MACH,0BAAAsG,eAAe,CAAClG,OAAhB,kFAAyBY,MAAzB,CAAgC,IAAhC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAAmG,eAAe,CAAClG,OAAhB,kFAAyBY,MAAzB,CAAgC,IAAhC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACiE,GAAD,EAAMP,MAAN,EAAc/C,MAAd,CAJM,CAAT;EAKA5C,eAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,+BAAwByF,eAAe,CAAClG,OAAxC,2DAAwB,uBAAyBsB,UAAzB,CAAoClC,OAApC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACN6F,OAAO,IAAInF,SAAX,+BAAwByF,eAAe,CAAClG,OAAxC,2DAAwB,uBAAyB+F,UAAzB,CAAoCH,OAApC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CAnED;;SCJgBQ,WAAWH,KAAaI;EACtC,IAAIC,QAAQ,eAAaD,EAAzB;EACA,IAAIE,KAAK,GAAGC,QAAQ,CAACC,cAAT,CAAwBH,QAAxB,CAAZ;;EACA,IAAIC,KAAJ,EAAW;IACT,OAAO,IAAP;;;EAEF,IAAMG,MAAM,GAAGF,QAAQ,CAACG,aAAT,CAAuB,QAAvB,CAAf;EACAD,MAAM,CAACE,GAAP,GAAaX,GAAb;EACAS,MAAM,CAACG,KAAP,GAAe,IAAf;EACAH,MAAM,CAACL,EAAP,GAAYC,QAAZ;EACAE,QAAQ,CAACM,IAAT,CAAcC,WAAd,CAA0BL,MAA1B;EACA,OAAOA,MAAP;AACD;;AAED,IAAMM,QAAQ,GAAG,SAAXA,QAAW;EACf,IAAIC,EAAE,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAT;EACA,IAAIC,IAAI,GAAG,uCAAuCC,OAAvC,CAA+C,OAA/C,EAAwD,UAAUC,CAAV;IACjE,IAAIC,CAAC,GAAG,CAACN,EAAE,GAAGO,IAAI,CAACC,MAAL,KAAgB,EAAtB,IAA4B,EAA5B,GAAiC,CAAzC;IACAR,EAAE,GAAGO,IAAI,CAACE,KAAL,CAAWT,EAAE,GAAG,EAAhB,CAAL;IACA,OAAO,CAACK,CAAC,IAAI,GAAL,GAAWC,CAAX,GAAgBA,CAAC,GAAG,GAAJ,GAAU,GAA3B,EAAiCI,QAAjC,CAA0C,EAA1C,CAAP;GAHS,CAAX;EAKA,OAAOP,IAAP;AACD,CARD;;AAwCA,IAAMQ,KAAK,GAAG,SAARA,KAAQ,CAAClJ,KAAD;;;EAEZ,IAAMmJ,QAAQ,GAAG/H,YAAM,YAAvB;EACA,IAAMgI,SAAS,GAAGhI,YAAM,EAAxB;EACA,IAAMiI,MAAM,GAAGjI,YAAM,EAArB;EACA,IAAMkI,aAAa,GAAGlI,YAAM,EAA5B;EACA,IAAMmG,GAAG,GAAGnG,YAAM,EAAlB;EACA,IAAMmI,MAAM,GAAGnI,YAAM,CAAQ,EAAR,CAArB;;EAEA,gBAAsBoI,cAAQ,EAA9B;MAAOhK,GAAP;MAAY0C,MAAZ;;EAGAb,eAAS,CAAC;IACR,IAAMsG,EAAE,GAAGW,QAAQ,EAAnB;IACAa,QAAQ,CAAC7H,OAAT,iBAA+BqG,EAA/B;;IACA,IAAM8B,cAAc,GAAG,SAAjBA,cAAiB;MACrBC,MAAM,CAACP,QAAQ,CAAC7H,OAAV,CAAN,GAA2B;QACzB,IAAIqI,OAAO,GAAG3J,KAAK,CAAC2J,OAApB;QACAN,MAAM,CAAC/H,OAAP,GAAiB,IAAIoI,MAAM,CAAC1H,KAAP,CAAa4H,GAAjB,CAAqBR,SAAS,CAAC9H,OAA/B,EAAwCqI,OAAxC,CAAjB;;QACA,IAAI3J,KAAK,CAAC6J,UAAV,EAAsB;UACpB7J,KAAK,CAAC6J,UAAN,CAAiBR,MAAM,CAAC/H,OAAxB,EAAiCqG,EAAjC;;;QAEFmC,aAAa;QACb5H,MAAM,CAACmH,MAAM,CAAC/H,OAAR,CAAN;OAPF;KADF;;IAWA,IAAIyI,MAAM,oBAAiB/J,KAAK,CAACgK,WAAN,GAAoB,MAAMhK,KAAK,CAACgK,WAAhC,GAA8C,EAA/D,eAAV;;IACA,IAAIhK,KAAK,CAACiK,SAAV,EAAqB;MACnBF,MAAM,GAAG/J,KAAK,CAACiK,SAAf;;;IAEF,IAAIC,MAAM,GAAMH,MAAN,4BAAmC/J,KAAK,CAACmK,OAAzC,aAAwDnK,KAAK,CAACoK,SAA9D,kBAAoFjB,QAAQ,CAAC7H,OAAvG;;IACA,IAAItB,KAAK,CAACqK,KAAV,EAAiB;MACfH,MAAM,gBAAclK,KAAK,CAACqK,KAA1B;;;IAEFZ,cAAc;IACd,IAAIzB,MAAM,GAAGN,UAAU,CAACwC,MAAD,EAASvC,EAAT,CAAvB;;IACA,IAAIK,MAAJ,EAAY;MACVsB,aAAa,CAAChI,OAAd,GAAwB0G,MAAxB;;;IAEFT,GAAG,CAACjG,OAAJ,GAAc4I,MAAd;IACA,OAAO;MACL,IAAMI,OAAO,GAAG,SAAVA,OAAU;;;QACd,OAAOZ,MAAM,CAACP,QAAQ,CAAC7H,OAAV,CAAb;;QACA,IAAIgI,aAAa,CAAChI,OAAd,IAAyB,IAA7B,EAAmC;UACjCgI,aAAa,CAAChI,OAAd,CAAsB2D,MAAtB;;;QAEF,mBAAAsE,MAAM,CAACjI,OAAP,oEAAgBO,OAAhB,CAAwB,UAAC0I,CAAD;UACtBA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEtF,MAAH;SADF;QAGA,mBAAAoE,MAAM,CAAC/H,OAAP,oEAAgBgJ,OAAhB;QACA/C,GAAG,CAACjG,OAAJ,GAAcS,SAAd;OATF;;MAWAuI,OAAO;KAZT;GA5BO,EA0CN,CAACtK,KAAK,CAACgK,WAAP,EAAoBhK,KAAK,CAACmK,OAA1B,EAAmCnK,KAAK,CAACoK,SAAzC,CA1CM,CAAT;EA4CA/I,eAAS,CAAC;;;IACR,mBAAArB,KAAK,CAAC2J,OAAN,kEAAea,OAAf,KAA0BzI,SAA1B,yBAAuCsH,MAAM,CAAC/H,OAA9C,qDAAuC,iBAAgBmJ,UAAhB,oBAA2BzK,KAAK,CAAC2J,OAAjC,oDAA2B,gBAAea,OAA1C,CAAvC;GADO,EAEN,oBAACxK,KAAK,CAAC2J,OAAP,oDAAC,gBAAea,OAAhB,CAFM,CAAT;EAIAnJ,eAAS,CAAC;;;IACR,IAAI,oBAAArB,KAAK,CAAC2J,OAAN,oEAAehG,MAAf,KAAyB5B,SAA7B,EAAwC;MAAA;;MACtC,IAAI2I,MAAM,GAAGrB,MAAM,CAAC/H,OAAP,CAAeqJ,SAAf,EAAb;MACAD,MAAM,CAACE,SAAP,oBAAiB5K,KAAK,CAAC2J,OAAvB,oDAAiB,gBAAehG,MAAhC;MACA,oBAAA0F,MAAM,CAAC/H,OAAP,sEAAgBuJ,UAAhB,CAA2BH,MAA3B;;;IAEF,oBAAA1K,KAAK,CAAC2J,OAAN,oEAAea,OAAf,KAA0BzI,SAA1B,yBAAuCsH,MAAM,CAAC/H,OAA9C,qDAAuC,iBAAgBmJ,UAAhB,oBAA2BzK,KAAK,CAAC2J,OAAjC,oDAA2B,gBAAea,OAA1C,CAAvC;GANO,EAON,oBAACxK,KAAK,CAAC2J,OAAP,oDAAC,gBAAehG,MAAhB,CAPM,CAAT;;EASA,IAAMmG,aAAa,GAAG,SAAhBA,aAAgB;;;IACpB,IAAIgB,gBAAgB,uBAAGzB,MAAM,CAAC/H,OAAV,qDAAG,iBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACrE,iBAAAA,IAAI,CAACC,MAAL,8DAAaC,OAAb,uBAAwBF,IAAI,CAACC,MAA7B,kDAAwB,cAAaC,OAAb,CAAqBF,IAArB,CAAxB;KADqB,EAEpB;MACDC,MAAM,EAAE;KAHa,CAAvB;IAKA,IAAIE,qBAAqB,uBAAG9B,MAAM,CAAC/H,OAAV,qDAAG,iBAAgByJ,WAAhB,aAAA,EAAqD,UAACC,IAAD;;;MAC/E,kBAAAA,IAAI,CAACC,MAAL,gEAAaG,YAAb,uBAA6BJ,IAAI,CAACC,MAAlC,kDAA6B,cAAaG,YAAb,CAA0BJ,IAA1B,CAA7B;KAD0B,EAEzB;MACDC,MAAM,EAAE;KAHkB,CAA5B;IAKA,IAAII,kBAAkB,uBAAGhC,MAAM,CAAC/H,OAAV,qDAAG,iBAAgByJ,WAAhB,UAAA,EAAkD,UAACC,IAAD;;;MACzE,kBAAAA,IAAI,CAACC,MAAL,gEAAaK,SAAb,uBAA0BN,IAAI,CAACC,MAA/B,kDAA0B,cAAaK,SAAb,CAAuBN,IAAvB,CAA1B;KADuB,EAEtB;MACDC,MAAM,EAAE;KAHe,CAAzB;IAMA,IAAIM,gBAAgB,uBAAGlC,MAAM,CAAC/H,OAAV,qDAAG,iBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACrE,kBAAAA,IAAI,CAACC,MAAL,gEAAa7E,OAAb,uBAAwB4E,IAAI,CAACC,MAA7B,kDAAwB,cAAa7E,OAAb,CAAqB4E,IAArB,CAAxB;KADqB,EAEpB;MACDC,MAAM,EAAE;KAHa,CAAvB;IAMA,IAAIO,iBAAiB,uBAAGnC,MAAM,CAAC/H,OAAV,qDAAG,iBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACtE,kBAAAA,IAAI,CAACS,OAAL,gEAAcrF,OAAd,wBAAyB4E,IAAI,CAACS,OAA9B,mDAAyB,eAAcrF,OAAd,CAAsB4E,IAAtB,CAAzB;KADsB,EAErB;MACDS,OAAO,EAAE;KAHa,CAAxB;IAMA,IAAIC,kBAAkB,wBAAGrC,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACvE,mBAAAA,IAAI,CAACW,QAAL,kEAAevF,OAAf,yBAA0B4E,IAAI,CAACW,QAA/B,oDAA0B,gBAAevF,OAAf,CAAuB4E,IAAvB,CAA1B;KADuB,EAEtB;MACDW,QAAQ,EAAE;KAHa,CAAzB;IAMA,IAAIC,mBAAmB,wBAAGvC,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACxE,mBAAAA,IAAI,CAACa,QAAL,kEAAezF,OAAf,yBAA0B4E,IAAI,CAACa,QAA/B,oDAA0B,gBAAezF,OAAf,CAAuB4E,IAAvB,CAA1B;KADwB,EAEvB;MACDc,UAAU,EAAE;KAHY,CAA1B;IAMA,IAAIC,kBAAkB,wBAAG1C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACvE,oBAAAA,IAAI,CAACW,QAAL,oEAAeT,OAAf,yBAA0BF,IAAI,CAACW,QAA/B,oDAA0B,gBAAeT,OAAf,CAAuBF,IAAvB,CAA1B;KADuB,EAEtB;MACDW,QAAQ,EAAE;KAHa,CAAzB;IAMA,IAAIK,sBAAsB,wBAAG3C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC9E,oBAAAA,IAAI,CAACa,QAAL,oEAAexF,UAAf,yBAA6B2E,IAAI,CAACa,QAAlC,oDAA6B,gBAAexF,UAAf,CAA0B2E,IAA1B,CAA7B;KAD2B,EAE1B;MACDc,UAAU,EAAE;KAHe,CAA7B;IAMA,IAAIG,uBAAuB,wBAAG5C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAChF,oBAAAA,IAAI,CAACa,QAAL,oEAAevF,WAAf,yBAA8B0E,IAAI,CAACa,QAAnC,oDAA8B,gBAAevF,WAAf,CAA2B0E,IAA3B,CAA9B;KAD4B,EAE3B;MACDc,UAAU,EAAE;KAHgB,CAA9B;IAMA,IAAII,uBAAuB,wBAAG7C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAChF,oBAAAA,IAAI,CAACa,QAAL,oEAAetF,WAAf,yBAA8ByE,IAAI,CAACa,QAAnC,oDAA8B,gBAAetF,WAAf,CAA2ByE,IAA3B,CAA9B;KAD4B,EAE3B;MACDc,UAAU,EAAE;KAHgB,CAA9B;IAMA,IAAIK,qBAAqB,wBAAG9C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC7E,oBAAAA,IAAI,CAACW,QAAL,oEAAetF,UAAf,yBAA6B2E,IAAI,CAACW,QAAlC,oDAA6B,gBAAetF,UAAf,CAA0B2E,IAA1B,CAA7B;KAD0B,EAEzB;MACDW,QAAQ,EAAE;KAHgB,CAA5B;IAMA,IAAIS,sBAAsB,wBAAG/C,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC/E,oBAAAA,IAAI,CAACW,QAAL,oEAAerF,WAAf,yBAA8B0E,IAAI,CAACW,QAAnC,oDAA8B,gBAAerF,WAAf,CAA2B0E,IAA3B,CAA9B;KAD2B,EAE1B;MACDW,QAAQ,EAAE;KAHiB,CAA7B;IAMA,IAAIU,sBAAsB,wBAAGhD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC/E,oBAAAA,IAAI,CAACW,QAAL,oEAAepF,WAAf,0BAA8ByE,IAAI,CAACW,QAAnC,qDAA8B,iBAAepF,WAAf,CAA2ByE,IAA3B,CAA9B;KAD2B,EAE1B;MACDW,QAAQ,EAAE;KAHiB,CAA7B;IAMA,IAAIW,mBAAmB,wBAAGjD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC3E,kBAAAA,IAAI,CAACC,MAAL,gEAAa5E,UAAb,wBAA2B2E,IAAI,CAACC,MAAhC,mDAA2B,eAAa5E,UAAb,CAAwB2E,IAAxB,CAA3B;KADwB,EAEvB;MACDC,MAAM,EAAE;KAHgB,CAA1B;IAMA,IAAIsB,oBAAoB,wBAAGlD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC7E,mBAAAA,IAAI,CAACC,MAAL,kEAAa3E,WAAb,wBAA4B0E,IAAI,CAACC,MAAjC,mDAA4B,eAAa3E,WAAb,CAAyB0E,IAAzB,CAA5B;KADyB,EAExB;MACDC,MAAM,EAAE;KAHiB,CAA3B;IAMA,IAAIuB,oBAAoB,wBAAGnD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC7E,mBAAAA,IAAI,CAACC,MAAL,kEAAa1E,WAAb,wBAA4ByE,IAAI,CAACC,MAAjC,mDAA4B,eAAa1E,WAAb,CAAyByE,IAAzB,CAA5B;KADyB,EAExB;MACDC,MAAM,EAAE;KAHiB,CAA3B;IAMA,IAAIwB,aAAa,wBAAGpD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MAClE,cAAAA,IAAI,CAAC0B,GAAL,wDAAUxB,OAAV,oBAAqBF,IAAI,CAAC0B,GAA1B,+CAAqB,WAAUxB,OAAV,CAAkBF,IAAlB,CAArB;KADkB,EAEjB;MACD0B,GAAG,EAAE;KAHa,CAApB;IAMA,IAAIC,aAAa,wBAAGtD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MAClE,eAAAA,IAAI,CAAC0B,GAAL,0DAAUtG,OAAV,oBAAqB4E,IAAI,CAAC0B,GAA1B,+CAAqB,WAAUtG,OAAV,CAAkB4E,IAAlB,CAArB;KADkB,EAEjB;MACD0B,GAAG,EAAE;KAHa,CAApB;IAMAnD,MAAM,CAACjI,OAAP,GAAiBiI,MAAM,CAACjI,OAAP,CAAesL,MAAf,CAAsB,CACrC9B,gBADqC,EAErCK,qBAFqC,EAGrCE,kBAHqC,EAIrCE,gBAJqC,EAKrCC,iBALqC,EAMrCE,kBANqC,EAOrCE,mBAPqC,EAQrCG,kBARqC,EASrCC,sBATqC,EAUrCC,uBAVqC,EAWrCC,uBAXqC,EAYrCC,qBAZqC,EAarCC,sBAbqC,EAcrCC,sBAdqC,EAerCC,mBAfqC,EAgBrCC,oBAhBqC,EAiBrCC,oBAjBqC,EAkBrCC,aAlBqC,EAmBrCE,aAnBqC,CAAtB,CAAjB;;IAqBA,IAAI3M,KAAK,CAAC6M,eAAV,EAA2B;MAAA;;MACzB,IAAIA,eAAe,wBAAGxD,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,QAAA,EAAgD,UAACC,IAAD;QACpEhL,KAAK,CAAC6M,eAAN,IAAyB7M,KAAK,CAAC6M,eAAN,CAAsB7B,IAAtB,CAAzB;OADoB,EAEnB;QACD8B,QAAQ,EAAE;OAHU,CAAtB;MAKAvD,MAAM,CAACjI,OAAP,CAAeyL,IAAf,CAAoBF,eAApB;;;IAEF,IAAI7M,KAAK,CAACgN,oBAAV,EAAgC;MAAA;;MAC9B,IAAIA,oBAAoB,wBAAG3D,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,aAAA,EAAqD,UAACC,IAAD;QAC9EhL,KAAK,CAACgN,oBAAN,IAA8BhN,KAAK,CAACgN,oBAAN,CAA2BhC,IAA3B,CAA9B;OADyB,EAExB;QACD8B,QAAQ,EAAE;OAHe,CAA3B;MAKAvD,MAAM,CAACjI,OAAP,CAAeyL,IAAf,CAAoBC,oBAApB;;;IAEF,IAAIhN,KAAK,CAACiN,aAAV,EAAyB;MAAA;;MACvB,IAAIA,aAAa,wBAAG5D,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,cAAA,EAAsD,UAACC,IAAD;QACxEhL,KAAK,CAACiN,aAAN,IAAuBjN,KAAK,CAACiN,aAAN,CAAoBjC,IAApB,CAAvB;OADkB,EAEjB;QACD8B,QAAQ,EAAE;OAHQ,CAApB;MAKAvD,MAAM,CAACjI,OAAP,CAAeyL,IAAf,CAAoBE,aAApB;;;IAEF,IAAIjN,KAAK,CAACkN,gBAAV,EAA4B;MAAA;;MAC1B,IAAIA,gBAAgB,wBAAG7D,MAAM,CAAC/H,OAAV,sDAAG,kBAAgByJ,WAAhB,iBAAA,EAAyD,UAACC,IAAD;QAC9EhL,KAAK,CAACkN,gBAAN,IAA0BlN,KAAK,CAACkN,gBAAN,CAAuBlC,IAAvB,CAA1B;OADqB,EAEpB;QACD8B,QAAQ,EAAE;OAHW,CAAvB;MAKAvD,MAAM,CAACjI,OAAP,CAAeyL,IAAf,CAAoBG,gBAApB;;GApKJ;;EAuKA,IAAIC,UAAU,GAAG;IACf3N,GAAG,EAAEA;GADP;EAGA,OACE4N,4BAAA,CAACC,cAAD,MAAA,EACED,4BAAA,MAAA;IACEE,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBjN,MAAM,EAAE,MAAzB;MAAiCkN,OAAO,EAAE;;IACjDC,GAAG,EAAErE;GAFP,CADF,EAMEgE,4BAAA,CAAC3N,YAAY,CAACiO,QAAd;IAAuBC,KAAK,EAAER;GAA9B,EAGInN,KAAK,CAAC4N,QAHV,CANF,CADF;AAgBD,CA/PD;;ACpBA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC7N,KAAD;EACb,IACIC,QADJ,GAyBID,KAzBJ,CACIC,QADJ;uBAyBID,KAzBJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGIoN,MAHJ,GAyBI9N,KAzBJ,CAGI8N,MAHJ;MAIIC,WAJJ,GAyBI/N,KAzBJ,CAII+N,WAJJ;MAKIC,IALJ,GAyBIhO,KAzBJ,CAKIgO,IALJ;MAMI3N,SANJ,GAyBIL,KAzBJ,CAMIK,SANJ;MAOI4N,QAPJ,GAyBIjO,KAzBJ,CAOIiO,QAPJ;MAQIC,KARJ,GAyBIlO,KAzBJ,CAQIkO,KARJ;MASIC,OATJ,GAyBInO,KAzBJ,CASImO,OATJ;MAUIC,YAVJ,GAyBIpO,KAzBJ,CAUIoO,YAVJ;MAWInK,MAXJ,GAyBIjE,KAzBJ,CAWIiE,MAXJ;MAYIoK,KAZJ,GAyBIrO,KAzBJ,CAYIqO,KAZJ;MAaI1N,SAbJ,GAyBIX,KAzBJ,CAaIW,SAbJ;MAcI2N,QAdJ,GAyBItO,KAzBJ,CAcIsO,QAdJ;MAeI1N,sBAfJ,GAyBIZ,KAzBJ,CAeIY,sBAfJ;MAgBIpB,GAhBJ,GAyBIQ,KAzBJ,CAgBIR,GAhBJ;MAiBIuB,SAjBJ,GAyBIf,KAzBJ,CAiBIe,SAjBJ;MAkBImK,OAlBJ,GAyBIlL,KAzBJ,CAkBIkL,OAlBJ;MAmBIE,YAnBJ,GAyBIpL,KAzBJ,CAmBIoL,YAnBJ;MAoBIE,SApBJ,GAyBItL,KAzBJ,CAoBIsL,SApBJ;MAqBIlF,OArBJ,GAyBIpG,KAzBJ,CAqBIoG,OArBJ;MAsBIC,UAtBJ,GAyBIrG,KAzBJ,CAsBIqG,UAtBJ;MAuBIC,WAvBJ,GAyBItG,KAzBJ,CAuBIsG,WAvBJ;MAwBIC,WAxBJ,GAyBIvG,KAzBJ,CAwBIuG,WAxBJ;EA2BA,IAAMvF,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAM8O,oBAAoB,GAAGtN,gBAAU,CAACnB,oBAAD,CAAvC;EAEA,IAAMoB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMgP,SAAS,GAAGpN,YAAM,EAAxB;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACsN,SAAS,CAAClN,OAAzB,EAAkC;MAC9B,IAAIE,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAEThB,OAAO,EAAEA,OAFA;QAGToN,MAAM,EAAEA,MAHC;QAITC,WAAW,EAAEA,WAJJ;QAKT1N,SAAS,EAAEA,SALF;QAMT4N,QAAQ,EAAEA,QAND;QAOTC,KAAK,EAAEA,KAPE;QAQTC,OAAO,EAAEA,OARA;QASTC,YAAY,EAAEA,YATL;QAUTnK,MAAM,EAAEA,MAVC;QAWToK,KAAK,EAAEA,KAXE;QAYT1N,SAAS,EAAEA,SAZF;QAaT2N,QAAQ,EAAEA,QAbD;QAcT1N,sBAAsB,EAAEA;OAd5B;MAgBAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;;MAKA,IAAIkM,IAAJ,EAAU;QACN,IAAIS,KAAK,GAAG,IAAIzM,KAAK,CAAC0M,IAAV,CAAeV,IAAI,CAACT,KAApB,EAA2BS,IAAI,CAAC1N,MAAhC,EAAwC0N,IAAI,CAACzG,GAA7C,CAAZ;QACA/F,MAAM,CAACwM,IAAP,GAAcS,KAAd;;;MAEJD,SAAS,CAAClN,OAAV,GAAoB,IAAIU,KAAK,CAAC2M,MAAV,CAAiBnN,MAAjB,CAApB;;MACA,IAAIxB,KAAK,CAAC4O,UAAN,IAAoB7M,SAAxB,EAAmC;QAC/ByM,SAAS,CAAClN,OAAV,CAAkBuN,aAAlB,CAAgC7O,KAAK,CAAC4O,UAAtC;;;MAEJ,IAAI5O,KAAK,CAAC8O,YAAN,IAAsB/M,SAA1B,EAAqC;QACjCyM,SAAS,CAAClN,OAAV,CAAkByN,eAAlB,CAAkC/O,KAAK,CAAC8O,YAAxC;;;MAEJ,IAAI,EAACP,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAE3O,SAAvB,CAAJ,EAAsC;QAClC4O,SAAS,CAAClN,OAAV,CAAkBY,MAAlB,CAAyBhB,MAAzB;;;MAEJ,IAAIlB,KAAK,CAACgP,cAAN,IAAwBjN,SAA5B,EAAuC;QAAA;;QACnC/B,KAAK,CAACgP,cAAN,yBAAuBR,SAAS,CAAClN,OAAjC,uDAAuB,mBAAmB0N,cAAnB,EAAvB,0BAA6DR,SAAS,CAAClN,OAAvE,wDAA6D,oBAAmB2N,cAAnB,EAA7D;;;MAEJT,SAAS,CAAClN,OAAV,CAAkB4J,OAAlB,GAA4BA,OAA5B;MACAsD,SAAS,CAAClN,OAAV,CAAkB8J,YAAlB,GAAiCpL,KAAK,CAACoL,YAAvC;MACAoD,SAAS,CAAClN,OAAV,CAAkBgK,SAAlB,GAA8BtL,KAAK,CAACsL,SAApC;MACAkD,SAAS,CAAClN,OAAV,CAAkB8E,OAAlB,GAA4BpG,KAAK,CAACoG,OAAlC;MACAoI,SAAS,CAAClN,OAAV,CAAkB+E,UAAlB,GAA+BA,UAA/B;MACAmI,SAAS,CAAClN,OAAV,CAAkBgF,WAAlB,GAAgCA,WAAhC;MACAkI,SAAS,CAAClN,OAAV,CAAkBiF,WAAlB,GAAgCA,WAAhC;MACAxF,SAAS,IAAIA,SAAS,CAACyN,SAAS,CAAClN,OAAX,CAAtB;MACA,CAAAiN,oBAAoB,SAApB,IAAAA,oBAAoB,WAApB,YAAAA,oBAAoB,CAAE3O,SAAtB,MAAmC2O,oBAAnC,aAAmCA,oBAAnC,uBAAmCA,oBAAoB,CAAE3O,SAAtB,CAAgC4O,SAAS,CAAClN,OAA1C,CAAnC;;GAhDC,EAkDN,CAACJ,MAAD,CAlDM,CAAT;EAoDAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACR,IAAI,EAACqN,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAE3O,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAA4O,SAAS,CAAClN,OAAV,4EAAmBY,MAAnB,CAA0BhB,MAA1B;;;;IAGR,OAAO;MACH,IAAI,EAACqN,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAE3O,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAA4O,SAAS,CAAClN,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;;KAFR;GANK,EAWN,CAAChB,MAAD,CAXM,CAAT;EAYAG,eAAS,CAAC;IACN,OAAO;MACH,IAAI,EAACkN,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAE3O,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAA4O,SAAS,CAAClN,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;;;MAEJsM,SAAS,CAAClN,OAAV,KAAqBiN,oBAArB,aAAqBA,oBAArB,uBAAqBA,oBAAoB,CAAE1O,YAA3C,MAA2D0O,oBAA3D,aAA2DA,oBAA3D,uBAA2DA,oBAAoB,CAAE1O,YAAtB,CAAmC2O,SAAS,CAAClN,OAA7C,CAA3D;KAJJ;GADK,EAON,EAPM,CAAT;EASAD,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkB8E,OAAlB,GAA4BA,OAA5B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA/E,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkB+E,UAAlB,GAA+BA,UAA/B;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAhF,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkBgF,WAAlB,GAAgCA,WAAhC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAjF,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkBiF,WAAlB,GAAgCA,WAAhC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkB4J,OAAlB,GAA4BA,OAA5B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7J,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkB8J,YAAlB,GAAiCA,YAAjC;;GAFC,EAIN,CAACA,YAAD,CAJM,CAAT;EAMA/J,eAAS,CAAC;IACN,IAAImN,SAAS,CAAClN,OAAd,EAAuB;MACnBkN,SAAS,CAAClN,OAAV,CAAkB8E,OAAlB,GAA4BkF,SAA5B;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAMAjK,eAAS,CAAC;;;IACN,uBAAAmN,SAAS,CAAClN,OAAV,4EAAmBa,WAAnB,CAA+BlC,QAA/B;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,eAAS,CAAC;;;IACN,uBAAAmN,SAAS,CAAClN,OAAV,4EAAmBsB,UAAnB,CAA8BlC,OAA9B;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACNyM,MAAM,IAAI/L,SAAV,4BAAuByM,SAAS,CAAClN,OAAjC,wDAAuB,oBAAmB4N,SAAnB,CAA6BpB,MAA7B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAzM,eAAS,CAAC;;;IACN0M,WAAW,IAAIhM,SAAf,4BAA4ByM,SAAS,CAAClN,OAAtC,wDAA4B,oBAAmB6N,cAAnB,CAAkCpB,WAAlC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA1M,eAAS,CAAC;;;IACN2M,IAAI,IAAIjM,SAAR,6BAAqByM,SAAS,CAAClN,OAA/B,yDAAqB,qBAAmB8N,OAAnB,CAA2BpB,IAA3B,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGA3M,eAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,6BAA0ByM,SAAS,CAAClN,OAApC,yDAA0B,qBAAmBiB,YAAnB,CAAgClC,SAAhC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,eAAS,CAAC;;;IACN4M,QAAQ,IAAIlM,SAAZ,6BAAyByM,SAAS,CAAClN,OAAnC,yDAAyB,qBAAmB+N,WAAnB,CAA+BpB,QAA/B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGA5M,eAAS,CAAC;;;IACN6M,KAAK,IAAInM,SAAT,6BAAsByM,SAAS,CAAClN,OAAhC,yDAAsB,qBAAmBgO,QAAnB,CAA4BpB,KAA5B,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGA7M,eAAS,CAAC;;;IACN8M,OAAO,IAAIpM,SAAX,6BAAwByM,SAAS,CAAClN,OAAlC,yDAAwB,qBAAmBiO,UAAnB,CAA8BpB,OAA9B,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA9M,eAAS,CAAC;;;IACN+M,YAAY,IAAIrM,SAAhB,6BAA6ByM,SAAS,CAAClN,OAAvC,yDAA6B,qBAAmBkO,eAAnB,CAAmCpB,YAAnC,CAA7B;GADK,EAEN,CAACA,YAAD,CAFM,CAAT;EAGA/M,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,6BAAuByM,SAAS,CAAClN,OAAjC,yDAAuB,qBAAmBqD,SAAnB,CAA6BV,MAA7B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACNgN,KAAK,IAAItM,SAAT,6BAAsByM,SAAS,CAAClN,OAAhC,yDAAsB,qBAAmBmO,QAAnB,CAA4BpB,KAA5B,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAhN,eAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,6BAA0ByM,SAAS,CAAClN,OAApC,yDAA0B,qBAAmBuB,YAAnB,CAAgClC,SAAhC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIAU,eAAS,CAAC;;;IACNiN,QAAQ,IAAIvM,SAAZ,6BAAyByM,SAAS,CAAClN,OAAnC,yDAAyB,qBAAmBoO,WAAnB,CAA+BpB,QAA/B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAIAjN,eAAS,CAAC;;;IACNT,sBAAsB,IAAImB,SAA1B,6BAAuCyM,SAAS,CAAClN,OAAjD,yDAAuC,qBAAmBwB,kBAAnB,CAAsClC,sBAAtC,CAAvC;GADK,EAEN,CAACA,sBAAD,CAFM,CAAT;EAIAS,eAAS,CAAC;;;IACN2M,IAAI,IAAIjM,SAAR,6BAAqByM,SAAS,CAAClN,OAA/B,yDAAqB,qBAAmB8N,OAAnB,CAA2B,IAAIpN,KAAK,CAAC0M,IAAV,CAAeV,IAAI,CAACT,KAApB,EAA2BS,IAAI,CAAC1N,MAAhC,EAAwC0N,IAAI,CAACzG,GAA7C,CAA3B,CAArB;GADK,EAEN,CAACyG,IAAD,CAFM,CAAT;EAIA3M,eAAS,CAAC;;;IACNrB,KAAK,CAAC4O,UAAN,IAAoB7M,SAApB,6BAAiCyM,SAAS,CAAClN,OAA3C,yDAAiC,qBAAmBuN,aAAnB,CAAiC7O,KAAK,CAAC4O,UAAvC,CAAjC;GADK,EAEN,CAAC5O,KAAK,CAAC4O,UAAP,CAFM,CAAT;EAIAvN,eAAS,CAAC;;;IACNrB,KAAK,CAAC8O,YAAN,IAAsB/M,SAAtB,6BAAmCyM,SAAS,CAAClN,OAA7C,yDAAmC,qBAAmByN,eAAnB,CAAmC/O,KAAK,CAAC8O,YAAzC,CAAnC;GADK,EAEN,CAAC9O,KAAK,CAAC8O,YAAP,CAFM,CAAT;EAIAzN,eAAS,CAAC;IACN,IAAIrB,KAAK,CAACgP,cAAN,IAAwBjN,SAA5B,EAAuC;MAAA;;MACnC/B,KAAK,CAACgP,cAAN,2BAAuBR,SAAS,CAAClN,OAAjC,yDAAuB,qBAAmB0N,cAAnB,EAAvB,2BAA6DR,SAAS,CAAClN,OAAvE,yDAA6D,qBAAmB2N,cAAnB,EAA7D;;GAFC,EAIN,CAACjP,KAAK,CAACgP,cAAP,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CAvND;;AC7BA,IAAMW,eAAe,GAAG,SAAlBA,eAAkB,CAAC3P,KAAD;EACpB,qBAOIA,KAPJ,CACI4P,OADJ;MACIA,OADJ,+BACc,CADd;uBAOI5P,KAPJ,CAEI6P,OAFJ;MAEIA,OAFJ,+BAEc,EAFd;sBAOI7P,KAPJ,CAGI4D,MAHJ;MAGIA,MAHJ,8BAGa,GAHb;MAIIkM,WAJJ,GAOI9P,KAPJ,CAII8P,WAJJ;MAKItQ,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMuQ,UAAU,GAAG3O,YAAM,CAAiB,EAAjB,CAAzB;EACA,IAAM4O,gBAAgB,GAAG5O,YAAM,EAA/B;;EAEA,IAAM6O,WAAW,GAAG,SAAdA,WAAc;;;IAChB,yBAAAD,gBAAgB,CAAC1O,OAAjB,gFAA0BY,MAA1B,CAAiC,IAAjC;;IACA,IAAIhB,MAAJ,EAAY;MAAA;;MACR,IAAIM,MAAM,GAAG;QACToO,OAAO,EAAEA,OADA;QAETC,OAAO,EAAEA,OAFA;QAGTjM,MAAM,EAAEA,MAHC;QAITkM,WAAW,EAAEA;OAJjB;MAMAnO,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAkO,gBAAgB,CAAC1O,OAAjB,GAA2B,IAAIU,KAAK,CAACkO,eAAV,CAA0BH,UAAU,CAACzO,OAArC,EAA8CE,MAA9C,CAA3B;MACA,0BAAAwO,gBAAgB,CAAC1O,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;MACAH,SAAS,IAAIA,SAAS,CAACiP,gBAAgB,CAAC1O,OAAlB,CAAtB;;GAhBR;;EAmBA,IAAM6O,cAAc,GAAG;IACnBvQ,SAAS,EAAE,mBAACqL,MAAD;MACP8E,UAAU,CAACzO,OAAX,CAAmByL,IAAnB,CAAwB9B,MAAxB;MACAgF,WAAW;KAHI;IAKnBpQ,YAAY,EAAE,sBAACoL,MAAD;MACV,IAAImF,UAAU,GAAGL,UAAU,CAACzO,OAAX,CAAmB+O,MAAnB,CAA0B,UAAA9F,CAAC;QAAA,OAAIA,CAAC,IAAIU,MAAT;OAA3B,CAAjB;MACA8E,UAAU,CAACzO,OAAX,GAAqB8O,UAArB;MACAH,WAAW;;GARnB;EAYA5O,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC8O,gBAAgB,CAAC1O,OAAhC,EAAyC;MACrC2O,WAAW;;GAFV,EAIN,CAAC/O,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAA8O,gBAAgB,CAAC1O,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;;;IAEJ,OAAO;;;MACH,0BAAA8O,gBAAgB,CAAC1O,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAA2O,gBAAgB,CAAC1O,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GADK,EAIN,EAJM,CAAT;EAKAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACR+O,WAAW;;GAFV,EAIN,CAACL,OAAD,EAAUC,OAAV,EAAmBjM,MAAnB,CAJM,CAAT;EAKAvC,eAAS,CAAC;;;IACNyO,WAAW,IAAI/N,SAAf,+BAA4BiO,gBAAgB,CAAC1O,OAA7C,2DAA4B,uBAA0BgP,cAA1B,CAAyCR,WAAzC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAIA,OACI1C,4BAAA,CAACtN,oBAAoB,CAAC4N,QAAtB;IAA+BC,KAAK,EAAEwC;GAAtC,EACKnQ,KADL,aACKA,KADL,uBACKA,KAAK,CAAE4N,QADZ,CADJ;AAKH,CA/ED;;ACYA,IAAM2C,KAAK,GAAG,SAARA,KAAQ,CAACvQ,KAAD;EACV,IACIC,QADJ,GAgBID,KAhBJ,CACIC,QADJ;MAEIiO,KAFJ,GAgBIlO,KAhBJ,CAEIkO,KAFJ;MAGIsC,QAHJ,GAgBIxQ,KAhBJ,CAGIwQ,QAHJ;MAIIC,KAJJ,GAgBIzQ,KAhBJ,CAIIyQ,KAJJ;MAKIC,IALJ,GAgBI1Q,KAhBJ,CAKI0Q,IALJ;MAMI1C,IANJ,GAgBIhO,KAhBJ,CAMIgO,IANJ;MAOI3N,SAPJ,GAgBIL,KAhBJ,CAOIK,SAPJ;MAQI4D,MARJ,GAgBIjE,KAhBJ,CAQIiE,MARJ;MASIvD,OATJ,GAgBIV,KAhBJ,CASIU,OATJ;MAUIC,SAVJ,GAgBIX,KAhBJ,CAUIW,SAVJ;MAWIC,sBAXJ,GAgBIZ,KAhBJ,CAWIY,sBAXJ;MAYIpB,GAZJ,GAgBIQ,KAhBJ,CAYIR,GAZJ;MAaIuB,SAbJ,GAgBIf,KAhBJ,CAaIe,SAbJ;MAcImK,OAdJ,GAgBIlL,KAhBJ,CAcIkL,OAdJ;MAeI9E,OAfJ,GAgBIpG,KAhBJ,CAeIoG,OAfJ;EAkBA,IAAMpF,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMmR,MAAM,GAAGvP,YAAM,EAArB;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACyP,MAAM,CAACrP,OAAtB,EAA+B;MAAA;;MAC3B,IAAIE,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAETwM,KAAK,EAAEA,KAFE;QAGTsC,QAAQ,EAAEA,QAHD;QAITC,KAAK,EAAEA,KAJE;QAKTC,IAAI,EAAEA,IALG;QAMT1C,IAAI,EAAEA,IANG;QAOT3N,SAAS,EAAEA,SAPF;QAQT4D,MAAM,EAAEA,MARC;QASTvD,OAAO,EAAEA,OATA;QAUTC,SAAS,EAAEA,SAVF;QAWTC,sBAAsB,EAAEA;OAX5B;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKA6O,MAAM,CAACrP,OAAP,GAAiB,IAAIU,KAAK,CAAC4O,GAAV,CAAcpP,MAAd,CAAjB;MACAmP,MAAM,CAACrP,OAAP,CAAe4J,OAAf,GAAyBA,OAAzB;MACAyF,MAAM,CAACrP,OAAP,CAAe8E,OAAf,GAAyBA,OAAzB;MACA,mBAAAuK,MAAM,CAACrP,OAAP,oEAAgBY,MAAhB,CAAuBhB,MAAvB;MACAH,SAAS,IAAIA,SAAS,CAAC4P,MAAM,CAACrP,OAAR,CAAtB;;GAxBC,EA0BN,CAACJ,MAAD,CA1BM,CAAT;EA4BAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,oBAAAyP,MAAM,CAACrP,OAAP,sEAAgBY,MAAhB,CAAuBhB,MAAvB;;;IAEJ,OAAO;;;MACH,oBAAAyP,MAAM,CAACrP,OAAP,sEAAgBY,MAAhB,CAAuB,IAAvB;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,oBAAAsP,MAAM,CAACrP,OAAP,sEAAgBY,MAAhB,CAAuB,IAAvB;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;;;IACN,oBAAAsP,MAAM,CAACrP,OAAP,sEAAgBa,WAAhB,CAA4BlC,QAA5B;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,eAAS,CAAC;;;IACN6M,KAAK,IAAInM,SAAT,yBAAsB4O,MAAM,CAACrP,OAA7B,qDAAsB,iBAAgBgO,QAAhB,CAAyBpB,KAAzB,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGA7M,eAAS,CAAC;;;IACNmP,QAAQ,IAAIzO,SAAZ,yBAAyB4O,MAAM,CAACrP,OAAhC,qDAAyB,iBAAgBuP,WAAhB,CAA4BL,QAA5B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAnP,eAAS,CAAC;;;IACNoP,KAAK,IAAI1O,SAAT,yBAAsB4O,MAAM,CAACrP,OAA7B,qDAAsB,iBAAgBwP,QAAhB,CAAyBL,KAAzB,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGApP,eAAS,CAAC;;;IACNqP,IAAI,IAAI3O,SAAR,yBAAqB4O,MAAM,CAACrP,OAA5B,qDAAqB,iBAAgByP,OAAhB,CAAwBL,IAAxB,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGArP,eAAS,CAAC;;;IACN2M,IAAI,IAAIjM,SAAR,0BAAqB4O,MAAM,CAACrP,OAA5B,sDAAqB,kBAAgB8N,OAAhB,CAAwBpB,IAAxB,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGA3M,eAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,0BAA0B4O,MAAM,CAACrP,OAAjC,sDAA0B,kBAAgBiB,YAAhB,CAA6BlC,SAA7B,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,0BAAuB4O,MAAM,CAACrP,OAA9B,sDAAuB,kBAAgBqD,SAAhB,CAA0BV,MAA1B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,0BAAwB4O,MAAM,CAACrP,OAA/B,sDAAwB,kBAAgBsB,UAAhB,CAA2BlC,OAA3B,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,0BAA0B4O,MAAM,CAACrP,OAAjC,sDAA0B,kBAAgBuB,YAAhB,CAA6BlC,SAA7B,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,eAAS,CAAC;;;IACNT,sBAAsB,IAAImB,SAA1B,0BAAuC4O,MAAM,CAACrP,OAA9C,sDAAuC,kBAAgBwB,kBAAhB,CAAmClC,sBAAnC,CAAvC;GADK,EAEN,CAACA,sBAAD,CAFM,CAAT;EAIAS,eAAS,CAAC;IACN,IAAIsP,MAAM,CAACrP,OAAX,EAAoB;MAChBqP,MAAM,CAACrP,OAAP,CAAe4J,OAAf,GAAyBA,OAAzB;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKA7J,eAAS,CAAC;IACN,IAAIsP,MAAM,CAACrP,OAAX,EAAoB;MAChBqP,MAAM,CAACrP,OAAP,CAAe8E,OAAf,GAAyBA,OAAzB;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA9GD;;ACbA,IAAM4K,YAAY,GAAG,SAAfA,YAAe,CAAChR,KAAD;EACjB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;uBAOIlD,KAPJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGIyC,UAHJ,GAOInD,KAPJ,CAGImD,UAHJ;MAIIC,QAJJ,GAOIpD,KAPJ,CAIIoD,QAJJ;MAKI5D,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMyR,aAAa,GAAG7P,YAAM,EAA5B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAA2N,aAAa,CAAC3P,OAAd,gFAAuBY,MAAvB,CAA8B,IAA9B;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTyC,UAAU,EAAEA,UAHH;MAITC,QAAQ,EAAEA;KAJd;IAMAzB,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAmP,aAAa,CAAC3P,OAAd,GAAwB,IAAIU,KAAK,CAACkP,UAAV,CAAqB1P,MAArB,CAAxB;IACA,0BAAAyP,aAAa,CAAC3P,OAAd,kFAAuBY,MAAvB,CAA8BhB,MAA9B;IACAH,SAAS,IAAIA,SAAS,CAACkQ,aAAa,CAAC3P,OAAf,CAAtB;GAfJ;;EAkBAD,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC+P,aAAa,CAAC3P,OAA7B,EAAsC;MAClCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAA+P,aAAa,CAAC3P,OAAd,kFAAuBY,MAAvB,CAA8BhB,MAA9B;;;IAEJ,OAAO;;;MACH,0BAAA+P,aAAa,CAAC3P,OAAd,kFAAuBY,MAAvB,CAA8B,IAA9B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAA4P,aAAa,CAAC3P,OAAd,kFAAuBY,MAAvB,CAA8B,IAA9B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,EAASC,UAAT,EAAqBC,QAArB,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA3DD;;ACWA,IAAM+N,SAAS,GAAG,SAAZA,SAAY,CAACnR,KAAD;EACd,IACIoR,KADJ,GAcIpR,KAdJ,CACIoR,KADJ;MAEIvN,SAFJ,GAcI7D,KAdJ,CAEI6D,SAFJ;MAGIC,WAHJ,GAcI9D,KAdJ,CAGI8D,WAHJ;uBAcI9D,KAdJ,CAIIU,OAJJ;MAIIA,OAJJ,+BAIc,IAJd;MAKIqD,WALJ,GAcI/D,KAdJ,CAKI+D,WALJ;MAMIC,WANJ,GAcIhE,KAdJ,CAMIgE,WANJ;MAOIrD,SAPJ,GAcIX,KAdJ,CAOIW,SAPJ;MAQIN,SARJ,GAcIL,KAdJ,CAQIK,SARJ;MASI4D,MATJ,GAcIjE,KAdJ,CASIiE,MATJ;MAUIrD,sBAVJ,GAcIZ,KAdJ,CAUIY,sBAVJ;MAWIpB,GAXJ,GAcIQ,KAdJ,CAWIR,GAXJ;MAYI4G,OAZJ,GAcIpG,KAdJ,CAYIoG,OAZJ;MAaIrF,SAbJ,GAcIf,KAdJ,CAaIe,SAbJ;EAgBA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM6R,UAAU,GAAGjQ,YAAM,EAAzB;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACmQ,UAAU,CAAC/P,OAA1B,EAAmC;MAAA;;MAC/B,IAAIE,MAAM,GAAG;QACT4P,KAAK,EAAEA,KADE;QAETvN,SAAS,EAAEA,SAFF;QAGTC,WAAW,EAAEA,WAHJ;QAITpD,OAAO,EAAEA,OAJA;QAKTqD,WAAW,EAAEA,WALJ;QAMTC,WAAW,EAAEA,WANJ;QAOTrD,SAAS,EAAEA,SAPF;QAQTN,SAAS,EAAEA,SARF;QAST4D,MAAM,EAAEA,MATC;QAUTrD,sBAAsB,EAAEA;OAV5B;MAYAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAuP,UAAU,CAAC/P,OAAX,GAAqB,IAAIU,KAAK,CAACsP,OAAV,CAAkB9P,MAAlB,CAArB;MACA,uBAAA6P,UAAU,CAAC/P,OAAX,4EAAoBY,MAApB,CAA2BhB,MAA3B;MACAmQ,UAAU,CAAC/P,OAAX,CAAmB8E,OAAnB,GAA6BpG,KAAK,CAACoG,OAAnC;MACArF,SAAS,IAAIA,SAAS,CAACsQ,UAAU,CAAC/P,OAAZ,CAAtB;;GAtBC,EAwBN,CAACJ,MAAD,CAxBM,CAAT;EA0BAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,wBAAAmQ,UAAU,CAAC/P,OAAX,8EAAoBY,MAApB,CAA2BhB,MAA3B;;;IAEJ,OAAO;;;MACH,wBAAAmQ,UAAU,CAAC/P,OAAX,8EAAoBY,MAApB,CAA2B,IAA3B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,wBAAAgQ,UAAU,CAAC/P,OAAX,8EAAoBY,MAApB,CAA2B,IAA3B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIgQ,UAAU,CAAC/P,OAAf,EAAwB;MACpB+P,UAAU,CAAC/P,OAAX,CAAmB8E,OAAnB,GAA6BA,OAA7B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA/E,eAAS,CAAC;;;IACN,wBAAAgQ,UAAU,CAAC/P,OAAX,8EAAoBiQ,QAApB,CAA6BH,KAA7B;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGA/P,eAAS,CAAC;;;IACNwC,SAAS,IAAI9B,SAAb,6BAA0BsP,UAAU,CAAC/P,OAArC,yDAA0B,qBAAoBiD,YAApB,CAAiCV,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAxC,eAAS,CAAC;;;IACNyC,WAAW,IAAI/B,SAAf,6BAA4BsP,UAAU,CAAC/P,OAAvC,yDAA4B,qBAAoBkD,cAApB,CAAmCV,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGAzC,eAAS,CAAC;;;IACN,wBAAAgQ,UAAU,CAAC/P,OAAX,8EAAoBsB,UAApB,CAA+BlC,OAA/B;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACN0C,WAAW,IAAIhC,SAAf,6BAA4BsP,UAAU,CAAC/P,OAAvC,yDAA4B,qBAAoBmD,cAApB,CAAmCV,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA1C,eAAS,CAAC;;;IACN2C,WAAW,IAAIjC,SAAf,8BAA4BsP,UAAU,CAAC/P,OAAvC,0DAA4B,sBAAoBoD,cAApB,CAAmCV,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA3C,eAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,8BAA0BsP,UAAU,CAAC/P,OAArC,0DAA0B,sBAAoBuB,YAApB,CAAiClC,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,eAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,8BAA0BsP,UAAU,CAAC/P,OAArC,0DAA0B,sBAAoBiB,YAApB,CAAiClC,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,8BAAuBsP,UAAU,CAAC/P,OAAlC,0DAAuB,sBAAoBqD,SAApB,CAA8BV,MAA9B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACNT,sBAAsB,IAAImB,SAA1B,8BAAuCsP,UAAU,CAAC/P,OAAlD,0DAAuC,sBAAoBwB,kBAApB,CAAuClC,sBAAvC,CAAvC;GADK,EAEN,CAACA,sBAAD,CAFM,CAAT;EAIA,OAAO,IAAP;AACH,CAnGD;;ACKA,IAAM4Q,UAAU,GAAG,SAAbA,UAAa,CAACxR,KAAD;EACf,IACIyR,IADJ,GAmBIzR,KAnBJ,CACIyR,IADJ;MAEIzN,WAFJ,GAmBIhE,KAnBJ,CAEIgE,WAFJ;MAGID,WAHJ,GAmBI/D,KAnBJ,CAGI+D,WAHJ;MAII2N,aAJJ,GAmBI1R,KAnBJ,CAII0R,aAJJ;uBAmBI1R,KAnBJ,CAKIU,OALJ;MAKIA,OALJ,+BAKc,IALd;MAMIiR,MANJ,GAmBI3R,KAnBJ,CAMI2R,MANJ;MAOIhR,SAPJ,GAmBIX,KAnBJ,CAOIW,SAPJ;MAQIsD,MARJ,GAmBIjE,KAnBJ,CAQIiE,MARJ;MASI5D,SATJ,GAmBIL,KAnBJ,CASIK,SATJ;MAUIuR,aAVJ,GAmBI5R,KAnBJ,CAUI4R,aAVJ;MAWIhR,sBAXJ,GAmBIZ,KAnBJ,CAWIY,sBAXJ;MAYIpB,GAZJ,GAmBIQ,KAnBJ,CAYIR,GAZJ;MAaI0L,OAbJ,GAmBIlL,KAnBJ,CAaIkL,OAbJ;MAcI9E,OAdJ,GAmBIpG,KAnBJ,CAcIoG,OAdJ;MAeIrF,SAfJ,GAmBIf,KAnBJ,CAeIe,SAfJ;MAgBIsF,UAhBJ,GAmBIrG,KAnBJ,CAgBIqG,UAhBJ;MAiBIC,WAjBJ,GAmBItG,KAnBJ,CAiBIsG,WAjBJ;MAkBIC,WAlBJ,GAmBIvG,KAnBJ,CAkBIuG,WAlBJ;EAqBA,IAAMvF,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMqS,WAAW,GAAGzQ,YAAM,EAA1B;EAEAC,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC2Q,WAAW,CAACvQ,OAA3B,EAAoC;MAAA;;MAChC,IAAIE,MAAM,GAAG;QACTiQ,IAAI,EAAEA,IAAI,IAAI;UAAEhQ,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SAD5B;QAETsC,WAAW,EAAEA,WAFJ;QAGTD,WAAW,EAAEA,WAHJ;QAIT2N,aAAa,EAAEA,aAJN;QAKThR,OAAO,EAAEA,OALA;QAMTiR,MAAM,EAAEA,MANC;QAOThR,SAAS,EAAEA,SAPF;QAQTsD,MAAM,EAAEA,MARC;QAST5D,SAAS,EAAEA,SATF;QAUTuR,aAAa,EAAEA,aAVN;QAWThR,sBAAsB,EAAEA;OAX5B;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKA+P,WAAW,CAACvQ,OAAZ,GAAsB,IAAIU,KAAK,CAAC8P,QAAV,CAAmBtQ,MAAnB,CAAtB;MACA,wBAAAqQ,WAAW,CAACvQ,OAAZ,8EAAqBY,MAArB,CAA4BhB,MAA5B;MACA2Q,WAAW,CAACvQ,OAAZ,CAAoB8E,OAApB,GAA8BpG,KAAK,CAACoG,OAApC;MACAyL,WAAW,CAACvQ,OAAZ,CAAoB4J,OAApB,GAA8BlL,KAAK,CAACkL,OAApC;MACA2G,WAAW,CAACvQ,OAAZ,CAAoB+E,UAApB,GAAiCA,UAAjC;MACAwL,WAAW,CAACvQ,OAAZ,CAAoBgF,WAApB,GAAkCA,WAAlC;MACAuL,WAAW,CAACvQ,OAAZ,CAAoBiF,WAApB,GAAkCA,WAAlC;MACAxF,SAAS,IAAIA,SAAS,CAAC8Q,WAAW,CAACvQ,OAAb,CAAtB;;GA3BC,EA6BN,CAACJ,MAAD,CA7BM,CAAT;EA+BAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,yBAAA2Q,WAAW,CAACvQ,OAAZ,gFAAqBY,MAArB,CAA4BhB,MAA5B;;;IAEJ,OAAO;;;MACH,yBAAA2Q,WAAW,CAACvQ,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,yBAAAwQ,WAAW,CAACvQ,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GADK,EAIN,EAJM,CAAT;EAOAb,eAAS,CAAC;IACN,IAAIwQ,WAAW,CAACvQ,OAAhB,EAAyB;MACrBuQ,WAAW,CAACvQ,OAAZ,CAAoB8E,OAApB,GAA8BA,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA/E,eAAS,CAAC;IACN,IAAIwQ,WAAW,CAACvQ,OAAhB,EAAyB;MACrBuQ,WAAW,CAACvQ,OAAZ,CAAoB+E,UAApB,GAAiCA,UAAjC;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAhF,eAAS,CAAC;IACN,IAAIwQ,WAAW,CAACvQ,OAAhB,EAAyB;MACrBuQ,WAAW,CAACvQ,OAAZ,CAAoBgF,WAApB,GAAkCA,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAjF,eAAS,CAAC;IACN,IAAIwQ,WAAW,CAACvQ,OAAhB,EAAyB;MACrBuQ,WAAW,CAACvQ,OAAZ,CAAoBiF,WAApB,GAAkCA,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,eAAS,CAAC;IACN,IAAIwQ,WAAW,CAACvQ,OAAhB,EAAyB;MACrBuQ,WAAW,CAACvQ,OAAZ,CAAoB4J,OAApB,GAA8BA,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7J,eAAS,CAAC;;;IACN,yBAAAwQ,WAAW,CAACvQ,OAAZ,gFAAqByQ,OAArB,CAA6BN,IAA7B;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGApQ,eAAS,CAAC;;;IACN2C,WAAW,IAAIjC,SAAf,8BAA4B8P,WAAW,CAACvQ,OAAxC,0DAA4B,sBAAqBoD,cAArB,CAAoCV,WAApC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA3C,eAAS,CAAC;;;IACN0C,WAAW,IAAIhC,SAAf,8BAA4B8P,WAAW,CAACvQ,OAAxC,0DAA4B,sBAAqBmD,cAArB,CAAoCV,WAApC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA1C,eAAS,CAAC;;;IACNqQ,aAAa,IAAI3P,SAAjB,8BAA8B8P,WAAW,CAACvQ,OAA1C,0DAA8B,sBAAqB0Q,gBAArB,CAAsCN,aAAtC,CAA9B;GADK,EAEN,CAACA,aAAD,CAFM,CAAT;EAGArQ,eAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,8BAAwB8P,WAAW,CAACvQ,OAApC,0DAAwB,sBAAqBsB,UAArB,CAAgClC,OAAhC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACNsQ,MAAM,IAAI5P,SAAV,+BAAuB8P,WAAW,CAACvQ,OAAnC,2DAAuB,uBAAqB2Q,SAArB,CAA+BN,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAtQ,eAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,+BAA0B8P,WAAW,CAACvQ,OAAtC,2DAA0B,uBAAqBuB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuB8P,WAAW,CAACvQ,OAAnC,2DAAuB,uBAAqBqD,SAArB,CAA+BV,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,+BAA0B8P,WAAW,CAACvQ,OAAtC,2DAA0B,uBAAqBiB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,eAAS,CAAC;;;IACNuQ,aAAa,IAAI7P,SAAjB,+BAA8B8P,WAAW,CAACvQ,OAA1C,2DAA8B,uBAAqB4Q,gBAArB,CAAsCN,aAAtC,CAA9B;GADK,EAEN,CAACA,aAAD,CAFM,CAAT;EAGAvQ,eAAS,CAAC;;;IACNT,sBAAsB,IAAImB,SAA1B,+BAAuC8P,WAAW,CAACvQ,OAAnD,2DAAuC,uBAAqBwB,kBAArB,CAAwClC,sBAAxC,CAAvC;GADK,EAEN,CAACA,sBAAD,CAFM,CAAT;EAIA,OAAO,IAAP;AACH,CAzID;;ACZA,IAAMuR,aAAa,GAAG,SAAhBA,aAAgB,CAACnS,KAAD;EAClB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;uBAOIlD,KAPJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGIuD,MAHJ,GAOIjE,KAPJ,CAGIiE,MAHJ;MAIIiD,OAJJ,GAOIlH,KAPJ,CAIIkH,OAJJ;MAKI1H,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,gBAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM4S,cAAc,GAAGhR,YAAM,EAA7B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAA8O,cAAc,CAAC9Q,OAAf,gFAAwBY,MAAxB,CAA+B,IAA/B;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTuD,MAAM,EAAEA,MAHC;MAITiD,OAAO,EAAEA;KAJb;IAMAvF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAsQ,cAAc,CAAC9Q,OAAf,GAAyB,IAAIU,KAAK,CAACoF,WAAV,CAAsB5F,MAAtB,CAAzB;IACA,0BAAA4Q,cAAc,CAAC9Q,OAAf,kFAAwBY,MAAxB,CAA+BhB,MAA/B;IACAH,SAAS,IAAIA,SAAS,CAACqR,cAAc,CAAC9Q,OAAhB,CAAtB;GAfJ;;EAkBAD,eAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACkR,cAAc,CAAC9Q,OAA9B,EAAuC;MACnCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAkR,cAAc,CAAC9Q,OAAf,kFAAwBY,MAAxB,CAA+BhB,MAA/B;;;IAEJ,OAAO;;;MACH,0BAAAkR,cAAc,CAAC9Q,OAAf,kFAAwBY,MAAxB,CAA+B,IAA/B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,eAAS,CAAC;IACN,OAAO;;;MACH,0BAAA+Q,cAAc,CAAC9Q,OAAf,kFAAwBY,MAAxB,CAA+B,IAA/B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,eAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,CAJM,CAAT;EAKA7B,eAAS,CAAC;;;IACN,0BAAA+Q,cAAc,CAAC9Q,OAAf,kFAAwBsB,UAAxB,CAAmClC,OAAnC;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,eAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuBqQ,cAAc,CAAC9Q,OAAtC,2DAAuB,uBAAwBqD,SAAxB,CAAkCV,MAAlC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,eAAS,CAAC;;;IACN6F,OAAO,IAAInF,SAAX,+BAAwBqQ,cAAc,CAAC9Q,OAAvC,2DAAwB,uBAAwB+F,UAAxB,CAAmCH,OAAnC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CApED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICTamL,OAAb;EAOE,iBAAmBC,CAAnB,EACmBC,CADnB;QAAmBD;MAAAA,IAAY;;;QACZC;MAAAA,IAAY;;;IADZ,MAAA,GAAAD,CAAA;IACA,MAAA,GAAAC,CAAA;;;EARrB;;EAAA,OAWEC,KAXF,GAWE;IACE,OAAO,IAAIH,OAAJ,CAAY,KAAKC,CAAjB,EAAoB,KAAKC,CAAzB,CAAP;GAZJ;;EAAA,OAkCEE,SAlCF,GAkCE;IACE,IAAIlR,MAAM,GAAG,KAAKA,MAAlB;IACA,IAAI+Q,CAAC,GAAG,GAAR;IACA,IAAIC,CAAC,GAAG,GAAR;;IAEA,IAAIhR,MAAM,GAAG,CAAb,EAAgB;MACd+Q,CAAC,GAAG,KAAKA,CAAL,GAAS/Q,MAAb;MACAgR,CAAC,GAAG,KAAKA,CAAL,GAAShR,MAAb;;;IAGF,OAAO,IAAI8Q,OAAJ,CAAYC,CAAZ,EAAeC,CAAf,CAAP;GA5CJ;;EAAA,OAmDEG,GAnDF,GAmDE,aAAIC,CAAJ;IACE,KAAKL,CAAL,GAASK,CAAC,CAACL,CAAX;IACA,KAAKC,CAAL,GAASI,CAAC,CAACJ,CAAX;GArDJ;;EAAA,OA4DEK,MA5DF,GA4DE;IACE,OAAO,IAAIP,OAAJ,CAAY,CAAC,KAAKC,CAAlB,EAAqB,CAAC,KAAKC,CAA3B,CAAP;GA7DJ;;EAAA,OAoEEM,QApEF,GAoEE;IACE,OAAO,IAAIR,OAAJ,CAAY,KAAKE,CAAjB,EAAoB,CAAC,KAAKD,CAA1B,CAAP;GArEJ;;EAAA,OA6EEQ,GA7EF,GA6EE,aAAIH,CAAJ;IACE,OAAO,IAAIN,OAAJ,CAAYM,CAAC,CAACL,CAAF,GAAM,KAAKA,CAAvB,EAA0BK,CAAC,CAACJ,CAAF,GAAM,KAAKA,CAArC,CAAP;GA9EJ;;EAAA,OAsFEQ,QAtFF,GAsFE,kBAASJ,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,KAAKH,KAAL,EAAP;;;IAEF,OAAO,IAAIH,OAAJ,CAAY,KAAKC,CAAL,GAASK,CAAC,CAACL,CAAvB,EAA2B,KAAKC,CAAL,GAASI,CAAC,CAACJ,CAAtC,CAAP;GA1FJ;;EAAA,OAkGES,QAlGF,GAkGE,kBAASL,CAAT;IACE,OAAO,IAAIN,OAAJ,CAAYM,CAAC,GAAG,KAAKL,CAArB,EAAwBK,CAAC,GAAG,KAAKJ,CAAjC,CAAP;GAnGJ;;EAAA,OA2GEU,QA3GF,GA2GE,kBAASN,CAAT;IACE,IAAIO,GAAG,GAAGpK,IAAI,CAACoK,GAAL,CAASP,CAAC,GAAG7J,IAAI,CAACqK,EAAT,GAAc,GAAvB,CAAV;IACA,IAAIC,GAAG,GAAGtK,IAAI,CAACsK,GAAL,CAAST,CAAC,GAAG7J,IAAI,CAACqK,EAAT,GAAc,GAAvB,CAAV;IACA,OAAO,IAAId,OAAJ,CAAY,KAAKC,CAAL,GAASY,GAAT,GAAe,KAAKX,CAAL,GAASa,GAApC,EAAyC,KAAKd,CAAL,GAASc,GAAT,GAAe,KAAKb,CAAL,GAASW,GAAjE,CAAP;GA9GJ;;EAAA,OAiHEG,cAjHF,GAiHE,wBAAeV,CAAf;IACE,IAAIO,GAAG,GAAGpK,IAAI,CAACoK,GAAL,CAASP,CAAT,CAAV;IACA,IAAIS,GAAG,GAAGtK,IAAI,CAACsK,GAAL,CAAST,CAAT,CAAV;IACA,OAAO,IAAIN,OAAJ,CAAY,KAAKC,CAAL,GAASY,GAAT,GAAe,KAAKX,CAAL,GAASa,GAApC,EAAyC,KAAKd,CAAL,GAASc,GAAT,GAAe,KAAKb,CAAL,GAASW,GAAjE,CAAP;GApHJ;;EAAA,OA4HEI,KA5HF,GA4HE,eAAMX,CAAN;IACE,OAAO,KAAKL,CAAL,GAASK,CAAC,CAACJ,CAAX,GAAe,KAAKA,CAAL,GAASI,CAAC,CAACL,CAAjC;GA7HJ;;EAAA,OAqIEiB,GArIF,GAqIE,aAAIZ,CAAJ;IACE,OAAOA,CAAC,CAACL,CAAF,GAAM,KAAKA,CAAX,GAAeK,CAAC,CAACJ,CAAF,GAAM,KAAKA,CAAjC;GAtIJ;;EAAA,QAyISiB,IAzIT,GAyIE,cAAYC,EAAZ,EAA0BC,EAA1B;IACE,OAAO,IAAIrB,OAAJ,CAAYqB,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAAtB,EACLA,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CADL,CAAP;GA1IJ;;EAAA,QA8ISC,GA9IT,GA8IE,aAAWC,CAAX;IACE,OAAO,IAAIvB,OAAJ,CAAY,CAACuB,CAAC,CAACtB,CAAf,EAAkB,CAACsB,CAAC,CAACrB,CAArB,CAAP;GA/IJ;;EAAA;IAAA;IAAA,KAmBE;MACE,OAAOzJ,IAAI,CAAC+K,IAAL,CAAU,KAAKvB,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAA1C,CAAP;;;IApBJ;IAAA,KA0BE;MACE,OAAO,KAAKD,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAvC;;;;EA3BJ;AAAA;;ICDauB,SAAb;EAAA;;EAAA,UACSC,KADT,GACE,eAAapG,KAAb,EAA4BqG,GAA5B,EAAyCC,GAAzC;IACE,OAAOtG,KAAK,GAAGqG,GAAR,GAAcA,GAAd,GAAqBrG,KAAK,GAAGsG,GAAR,GAAcA,GAAd,GAAoBtG,KAAhD;GAFJ;;EAAA,UAKSuG,SALT,GAKE,mBAAiBC,YAAjB;IACE,OAAQA,YAAY,GAAGrL,IAAI,CAACqK,EAArB,GAA2B,KAAlC;GANJ;;EAAA,UASSiB,QATT,GASE,kBAAgBC,EAAhB,EAA6BC,EAA7B;IACE,OAAOxL,IAAI,CAAC+K,IAAL,CAAU,CAACQ,EAAE,CAAC/B,CAAH,GAAOgC,EAAE,CAAChC,CAAX,KAAe+B,EAAE,CAAC/B,CAAH,GAAOgC,EAAE,CAAChC,CAAzB,IAA8B,CAAC+B,EAAE,CAAC9B,CAAH,GAAO+B,EAAE,CAAC/B,CAAX,KAAe8B,EAAE,CAAC9B,CAAH,GAAO+B,EAAE,CAAC/B,CAAzB,CAAxC,CAAP;GAVJ;;EAAA,UAaSgC,gBAbT,GAaE,0BAAwBC,CAAxB;IAEEA,CAAC,GAAGA,CAAC,GAAG,CAAR;IAGA,IAAIC,EAAE,GAAG3L,IAAI,CAAC4L,IAAL,CAAUF,CAAV,CAAT;IAGA,OAAO,KAAKC,EAAE,GAAG,CAAjB;GArBJ;;EAAA,UAwBSE,oBAxBT,GAwBE,8BAA4BH,CAA5B;IACE,OAAO,KAAK,KAAK1L,IAAI,CAAC8L,KAAL,CAAWJ,CAAX,CAAjB;GAzBJ;;EAAA;AAAA;;ICCaK,OAAb;EAQE,iBAAmBvC,CAAnB,EACmBC,CADnB,EAEmBuC,CAFnB;QAAmBxC;MAAAA,IAAY;;;QACZC;MAAAA,IAAY;;;QACZuC;MAAAA,IAAY;;;IAFZ,MAAA,GAAAxC,CAAA;IACA,MAAA,GAAAC,CAAA;IACA,MAAA,GAAAuC,CAAA;;;EAVrB;;EAAA,OAaEtC,KAbF,GAaE;IACE,OAAO,IAAIqC,OAAJ,CAAY,KAAKvC,CAAjB,EAAoB,KAAKC,CAAzB,EAA4B,KAAKuC,CAAjC,CAAP;GAdJ;;EAAA,OAiBEC,MAjBF,GAiBE;IACE,OAAO,IAAIC,YAAJ,CAAiB,CAAC,KAAK1C,CAAN,EAAS,KAAKC,CAAd,EAAiB,KAAKuC,CAAtB,CAAjB,CAAP;GAlBJ;;EAAA,OAwCErC,SAxCF,GAwCE;IACE,IAAIlR,MAAM,GAAG,KAAKA,MAAlB;IACA,IAAI+Q,CAAC,GAAG,GAAR;IACA,IAAIC,CAAC,GAAG,GAAR;IACA,IAAIuC,CAAC,GAAG,GAAR;;IAEA,IAAIvT,MAAM,GAAG,CAAb,EAAgB;MACd+Q,CAAC,GAAG,KAAKA,CAAL,GAAS/Q,MAAb;MACAgR,CAAC,GAAG,KAAKA,CAAL,GAAShR,MAAb;MACAuT,CAAC,GAAG,KAAKA,CAAL,GAASvT,MAAb;;;IAGF,OAAO,IAAIsT,OAAJ,CAAYvC,CAAZ,EAAeC,CAAf,EAAkBuC,CAAlB,CAAP;GApDJ;;EAAA,OA2DEpC,GA3DF,GA2DE,aAAIC,CAAJ;IACE,KAAKL,CAAL,GAASK,CAAC,CAACL,CAAX;IACA,KAAKC,CAAL,GAASI,CAAC,CAACJ,CAAX;IACA,KAAKuC,CAAL,GAASnC,CAAC,CAACmC,CAAX;GA9DJ;;EAAA,OAqEElC,MArEF,GAqEE;IACE,OAAO,IAAIiC,OAAJ,CAAY,CAAC,KAAKvC,CAAlB,EAAqB,CAAC,KAAKC,CAA3B,EAA8B,CAAC,KAAKuC,CAApC,CAAP;GAtEJ;;EAAA,OA6EEjC,QA7EF,GA6EE;IACE,OAAO,IAAIgC,OAAJ,CAAY,KAAKtC,CAAjB,EAAoB,CAAC,KAAKD,CAA1B,EAA6B,KAAKwC,CAAlC,CAAP;GA9EJ;;EAAA,OAsFEhC,GAtFF,GAsFE,aAAIH,CAAJ;IACE,OAAO,IAAIkC,OAAJ,CAAYlC,CAAC,CAACL,CAAF,GAAM,KAAKA,CAAvB,EAA0BK,CAAC,CAACJ,CAAF,GAAM,KAAKA,CAArC,EAAwCI,CAAC,CAACmC,CAAF,GAAM,KAAKA,CAAnD,CAAP;GAvFJ;;EAAA,OA+FE/B,QA/FF,GA+FE,kBAASJ,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,KAAKH,KAAL,EAAP;;;IAEF,OAAO,IAAIqC,OAAJ,CAAY,KAAKvC,CAAL,GAASK,CAAC,CAACL,CAAvB,EAA2B,KAAKC,CAAL,GAASI,CAAC,CAACJ,CAAtC,EAAyC,KAAKuC,CAAL,GAASnC,CAAC,CAACmC,CAApD,CAAP;GAnGJ;;EAAA,OA2GE9B,QA3GF,GA2GE,kBAASL,CAAT;IACE,OAAO,IAAIkC,OAAJ,CAAYlC,CAAC,GAAG,KAAKL,CAArB,EAAwBK,CAAC,GAAG,KAAKJ,CAAjC,EAAoCI,CAAC,GAAG,KAAKmC,CAA7C,CAAP;GA5GJ;;EAAA,OAoHE7B,QApHF,GAoHE,kBAASN,CAAT;IACE,IAAIO,GAAG,GAAGpK,IAAI,CAACoK,GAAL,CAASP,CAAC,GAAG7J,IAAI,CAACqK,EAAT,GAAc,GAAvB,CAAV;IACA,IAAIC,GAAG,GAAGtK,IAAI,CAACsK,GAAL,CAAST,CAAC,GAAG7J,IAAI,CAACqK,EAAT,GAAc,GAAvB,CAAV;IACA,OAAO,IAAI0B,OAAJ,CAAY,KAAKvC,CAAL,GAASY,GAAT,GAAe,KAAKX,CAAL,GAASa,GAApC,EAAyC,KAAKd,CAAL,GAASc,GAAT,GAAe,KAAKb,CAAL,GAASW,GAAjE,CAAP;GAvHJ;;EAAA,OA+HEI,KA/HF,GA+HE,eAAMX,CAAN;IACE,OAAO,IAAIkC,OAAJ,CACL,KAAKtC,CAAL,GAASI,CAAC,CAACmC,CAAX,GAAe,KAAKA,CAAL,GAASnC,CAAC,CAACJ,CADrB,EAEL,KAAKuC,CAAL,GAASnC,CAAC,CAACL,CAAX,GAAe,KAAKA,CAAL,GAASK,CAAC,CAACmC,CAFrB,EAGL,KAAKxC,CAAL,GAASK,CAAC,CAACJ,CAAX,GAAe,KAAKA,CAAL,GAASI,CAAC,CAACL,CAHrB,CAAP;GAhIJ;;EAAA,OA4IEiB,GA5IF,GA4IE,aAAIZ,CAAJ;IACE,OAAOA,CAAC,CAACL,CAAF,GAAM,KAAKA,CAAX,GAAeK,CAAC,CAACJ,CAAF,GAAM,KAAKA,CAA1B,GAA8BI,CAAC,CAACmC,CAAF,GAAM,KAAKA,CAAhD;GA7IJ;;EAAA,QAgJStB,IAhJT,GAgJE,cAAYC,EAAZ,EAA0BC,EAA1B;IACE,OAAO,IAAImB,OAAJ,CAAYnB,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAAtB,EACLA,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CADL,CAAP;GAjJJ;;EAAA,QAqJSC,GArJT,GAqJE,aAAWC,CAAX;IACE,OAAO,IAAIiB,OAAJ,CAAY,CAACjB,CAAC,CAACtB,CAAf,EAAkB,CAACsB,CAAC,CAACrB,CAArB,EAAwB,CAACqB,CAAC,CAACkB,CAA3B,CAAP;GAtJJ;;EAAA;IAAA;IAAA,KAyBE;MACE,OAAOhM,IAAI,CAAC+K,IAAL,CAAU,KAAKvB,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAhC,GAAoC,KAAKuC,CAAL,GAAS,KAAKA,CAA5D,CAAP;;;IA1BJ;IAAA,KAgCE;MACE,OAAO,KAAKxC,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAhC,GAAoC,KAAKuC,CAAL,GAAS,KAAKA,CAAzD;;;;EAjCJ;AAAA;;ICEaG,OAAb;EAME,iBAAmBjQ,IAAnB;QAAmBA;MAAAA,OAAqB,IAAIgQ,YAAJ,CAAiB,CACvD,GADuD,EAClD,GADkD,EAC7C,GAD6C,EACxC,GADwC,EAEvD,GAFuD,EAElD,GAFkD,EAE7C,GAF6C,EAExC,GAFwC,EAGvD,GAHuD,EAGlD,GAHkD,EAG7C,GAH6C,EAGxC,GAHwC,EAIvD,GAJuD,EAIlD,GAJkD,EAI7C,GAJ6C,EAIxC,GAJwC,CAAjB;;;IAArB,SAAA,GAAAhQ,IAAA;;;EANrB;;EAAA,OAaEkQ,WAbF,GAaE,qBAAY5C,CAAZ,EAAqBC,CAArB,EAA8BuC,CAA9B;QAAYxC;MAAAA,IAAI;;;QAAKC;MAAAA,IAAI;;;QAAKuC;MAAAA,IAAI;;;IAChC,KAAK9P,IAAL,CAAU,CAAV,IAAesN,CAAf;IACA,KAAKtN,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeuN,CAAf;IACA,KAAKvN,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB8P,CAAhB;IACA,KAAK9P,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,GAAhB;IACA,OAAO,IAAP;GA9BJ;;EAAA,OAiCEmQ,IAjCF,GAiCE,cAAKC,KAAL;IACE,KAAKpQ,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAeoQ,KAAK,CAACpQ,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBoQ,KAAK,CAACpQ,IAAN,CAAW,EAAX,CAAhB;IACA,OAAO,IAAP;GAlDJ;;EAAA,QA4DSqQ,SA5DT,GA4DE,mBAAiB/C,CAAjB,EAA4BC,CAA5B,EAAuCuC,CAAvC;QAAuCA;MAAAA,IAAY;;;IAGjD,OAAO,IAAIG,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,GADkC,EAC7B,GAD6B,EACxB,GADwB,EACnB,GADmB,EAElC,GAFkC,EAE7B,GAF6B,EAExB,GAFwB,EAEnB,EAFmB,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,GAHwB,EAGnB,GAHmB,EAIlC1C,CAJkC,EAI/BC,CAJ+B,EAI5BuC,CAJ4B,EAIzB,GAJyB,CAAjB,CAAZ,CAAP;GA/DJ;;EAAA,OAsEEO,SAtEF,GAsEE,mBAAU/C,CAAV,EAAqBC,CAArB,EAAgCuC,CAAhC;QAAgCA;MAAAA,IAAY;;;IAC1C,KAAK9P,IAAL,CAAU,EAAV,KAAiBsN,CAAjB;IACA,KAAKtN,IAAL,CAAU,EAAV,KAAiBuN,CAAjB;IACA,KAAKvN,IAAL,CAAU,EAAV,KAAiB8P,CAAjB;IACA,OAAO,IAAP;GA1EJ;;EAAA,QAsFSQ,OAtFT,GAsFE,iBAAeC,KAAf;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,GADkC,EAC7B,GAD6B,EACxB,GADwB,EACnB,GADmB,EAElC,GAFkC,EAE7BS,IAF6B,EAEvBD,IAFuB,EAEjB,GAFiB,EAGlC,GAHkC,EAG7B,CAACA,IAH4B,EAGtBC,IAHsB,EAGhB,GAHgB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GA7FJ;;EAAA,OAqGEC,YArGF,GAqGE,sBAAaH,KAAb;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAKlQ,IAAL,CAAU,CAAV,IAAeyQ,IAAf;IACA,KAAKzQ,IAAL,CAAU,CAAV,IAAewQ,IAAf;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe,CAACwQ,IAAhB;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgByQ,IAAhB;IACA,OAAO,IAAP;GA9GJ;;EAAA,OAkHEH,OAlHF,GAkHE,iBAAQC,KAAR;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAII,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAT;IACA,IAAI4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,CAAV,CAAT;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe2Q,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe2Q,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAE,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe2Q,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe2Q,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAE,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe2Q,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgB2Q,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IAEAE,EAAE,GAAG,KAAK3Q,IAAL,CAAU,EAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB2Q,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAjC;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgB2Q,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IACA,OAAO,IAAP;GA3IJ;;EAAA,QAoJSI,OApJT,GAoJE,iBAAeN,KAAf;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClCS,IADkC,EAC5B,GAD4B,EACvBD,IADuB,EACjB,GADiB,EAElC,GAFkC,EAE7B,GAF6B,EAExB,GAFwB,EAEnB,GAFmB,EAGlC,CAACA,IAHiC,EAG3B,GAH2B,EAGtBC,IAHsB,EAGhB,GAHgB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GA3JJ;;EAAA,OAmKEK,YAnKF,GAmKE,sBAAaP,KAAb;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAKlQ,IAAL,CAAU,CAAV,IAAeyQ,IAAf;IACA,KAAKzQ,IAAL,CAAU,CAAV,IAAewQ,IAAf;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe,CAACwQ,IAAhB;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgByQ,IAAhB;IACA,OAAO,IAAP;GA5KJ;;EAAA,OA+KEI,OA/KF,GA+KE,iBAAQN,KAAR;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAIQ,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAT;IACA,IAAI4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,CAAV,CAAT;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAaG,EAAE,GAAGJ,IAAjC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAlC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAlC;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgB+Q,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,EAAV,CAAL;IACA4Q,EAAE,GAAG,KAAK5Q,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAnC;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgB+Q,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IACA,OAAO,IAAP;GAxMJ;;EAAA,QAgNSO,OAhNT,GAgNE,iBAAeT,KAAf;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClCS,IADkC,EAC5BD,IAD4B,EACtB,GADsB,EACjB,GADiB,EAElC,CAACA,IAFiC,EAE3BC,IAF2B,EAErB,GAFqB,EAEhB,GAFgB,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,GAHwB,EAGnB,GAHmB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GAvNJ;;EAAA,OA+NEQ,YA/NF,GA+NE,sBAAaV,KAAb;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAKlQ,IAAL,CAAU,CAAV,IAAeyQ,IAAf;IACA,KAAKzQ,IAAL,CAAU,CAAV,IAAewQ,IAAf;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe,CAACwQ,IAAhB;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAeyQ,IAAf;IACA,OAAO,IAAP;GAxOJ;;EAAA,OA2OEO,OA3OF,GA2OE,iBAAQT,KAAR;IACEA,KAAK,IAAIzM,IAAI,CAACqK,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAG1M,IAAI,CAACsK,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAG3M,IAAI,CAACoK,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAIQ,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAT;IACA,IAAI2Q,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAT;IAEA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAL;IACA2Q,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,CAAV,CAAL;IACA2Q,EAAE,GAAG,KAAK3Q,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKxQ,IAAL,CAAU,CAAV,IAAe+Q,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK/Q,IAAL,CAAU,EAAV,CAAL;IACA2Q,EAAE,GAAG,KAAK3Q,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAjC;IACA,KAAKxQ,IAAL,CAAU,EAAV,IAAgB+Q,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAjC;IACA,OAAO,IAAP;GArQJ;;EAAA,OAsUEzC,QAtUF,GAsUE,kBAASkD,MAAT;IACE,IAAIC,MAAM,GAAG,IAAIlB,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CACxC,GADwC,EACnC,GADmC,EAC9B,GAD8B,EACzB,GADyB,EAExC,GAFwC,EAEnC,GAFmC,EAE9B,GAF8B,EAEzB,GAFyB,EAGxC,GAHwC,EAGnC,GAHmC,EAG9B,GAH8B,EAGzB,GAHyB,EAIxC,GAJwC,EAInC,GAJmC,EAI9B,GAJ8B,EAIzB,GAJyB,CAAjB,CAAZ,CAAb;;IAOA,IAAIkB,MAAM,IAAI,IAAd,EAAmB;MACjB,OAAOC,MAAP;;;IAGF,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;MAC1B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;QAC1B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;UAC1BH,MAAM,CAACnR,IAAP,CAAYoR,CAAC,GAAG,CAAJ,GAAQE,CAApB,KAA0B,KAAKtR,IAAL,CAAUoR,CAAC,GAAG,CAAJ,GAAQC,CAAlB,IAAuBH,MAAM,CAAClR,IAAP,CAAYqR,CAAC,GAAG,CAAJ,GAAQC,CAApB,CAAjD;;;;;IAIN,OAAOH,MAAP;GAzVJ;;EAAA,QA6ZSI,KA7ZT,GA6ZE,eAAaC,IAAb,EAA2BC,KAA3B,EACEC,MADF,EACkBC,GADlB,EAEEC,IAFF,EAEyBC,GAFzB;QAEED;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IACrC,OAAO,IAAI5B,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,OAAKyB,KAAK,GAAGD,IAAb,CADkC,EACd,GADc,EACT,GADS,EACJ,GADI,EAElC,GAFkC,EAE7B,OAAKG,GAAG,GAAGD,MAAX,CAF6B,EAET,GAFS,EAEJ,GAFI,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,CAAC,GAAD,IAAMG,GAAG,GAAGD,IAAZ,CAHwB,EAGL,GAHK,EAIlC,EAAEJ,IAAI,GAAGC,KAAT,KAAiBA,KAAK,GAAGD,IAAzB,CAJkC,EAIF,EAAEG,GAAG,GAAGD,MAAR,KAAiBC,GAAG,GAAGD,MAAvB,CAJE,EAI8B,EAAEE,IAAI,GAAGC,GAAT,KAAeD,IAAI,GAAGC,GAAtB,CAJ9B,EAI0D,GAJ1D,CAAjB,CAAZ,CAAP;GAhaJ;;EAAA,OAwaEC,QAxaF,GAwaE,kBAASN,IAAT,EAAuBC,KAAvB,EACaC,MADb,EAC6BC,GAD7B,EAEaC,IAFb,EAEoCC,GAFpC;QAEaD;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IAChD,KAAK7R,IAAL,CAAU,CAAV,IAAe,OAAKyR,KAAK,GAAGD,IAAb,CAAf;IACA,KAAKxR,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,OAAK2R,GAAG,GAAGD,MAAX,CAAf;IACA,KAAK1R,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAC,GAAD,IAAM6R,GAAG,GAAGD,IAAZ,CAAhB;IACA,KAAK5R,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAjB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,EAAEwR,IAAI,GAAGC,KAAT,KAAiBA,KAAK,GAAGD,IAAzB,CAAhB;IACA,KAAKxR,IAAL,CAAU,EAAV,IAAgB,EAAE2R,GAAG,GAAGD,MAAR,KAAiBC,GAAG,GAAGD,MAAvB,CAAhB;IACA,KAAK1R,IAAL,CAAU,EAAV,IAAgB,EAAE4R,IAAI,GAAGC,GAAT,KAAeD,IAAI,GAAGC,GAAtB,CAAhB;IACA,KAAK7R,IAAL,CAAU,EAAV,IAAgB,GAAhB;IACA,OAAO,IAAP;GA3bJ;;EAAA,QAscS+R,WAtcT,GAscE,qBAAmBC,GAAnB,EAAgCC,MAAhC,EAAgDL,IAAhD,EAA8DC,GAA9D;IACE,IAAItE,CAAC,GAAGzJ,IAAI,CAACoO,GAAL,CAASF,GAAG,GAAG,GAAf,IAAsBJ,IAA9B;IACA,IAAItE,CAAC,GAAGC,CAAC,GAAG0E,MAAZ;IACA,OAAOhC,OAAO,CAACkC,OAAR,CAAgB,CAAC7E,CAAjB,EAAoBA,CAApB,EAAuB,CAACC,CAAxB,EAA2BA,CAA3B,EAA8BqE,IAA9B,EAAoCC,GAApC,CAAP;GAzcJ;;EAAA,OA4cEO,cA5cF,GA4cE,wBAAeJ,GAAf,EAA4BC,MAA5B,EAA4CL,IAA5C,EAA0DC,GAA1D;IACE,IAAItE,CAAC,GAAGzJ,IAAI,CAACoO,GAAL,CAASF,GAAG,GAAG,GAAf,IAAsBJ,IAA9B;IACA,IAAItE,CAAC,GAAGC,CAAC,GAAG0E,MAAZ;IACA,OAAO,KAAKI,UAAL,CAAgB,CAAC/E,CAAjB,EAAoBA,CAApB,EAAuB,CAACC,CAAxB,EAA2BA,CAA3B,EAA8BqE,IAA9B,EAAoCC,GAApC,CAAP;GA/cJ;;EAAA,QA4dSM,OA5dT,GA4dE,iBAAeX,IAAf,EAA6BC,KAA7B,EACEC,MADF,EACkBC,GADlB,EAEEC,IAFF,EAEyBC,GAFzB;QAEED;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IACrC,OAAO,IAAI5B,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,IAAI4B,IAAJ,IAAYH,KAAK,GAAGD,IAApB,CADkC,EACP,CADO,EACJ,CADI,EACD,CADC,EAElC,CAFkC,EAE/B,IAAII,IAAJ,IAAYD,GAAG,GAAGD,MAAlB,CAF+B,EAEJ,CAFI,EAED,CAFC,EAGlC,CAACD,KAAK,GAAGD,IAAT,KAAgBC,KAAK,GAAGD,IAAxB,CAHkC,EAGH,CAACG,GAAG,GAAGD,MAAP,KAAkBC,GAAG,GAAGD,MAAxB,CAHG,EAG8B,EAAEG,GAAG,GAAGD,IAAR,KAAiBC,GAAG,GAAGD,IAAvB,CAH9B,EAG4D,CAAC,CAH7D,EAIlC,CAJkC,EAI/B,CAJ+B,EAI5B,CAAC,CAAD,GAAKA,IAAL,GAAYC,GAAZ,IAAmBA,GAAG,GAAGD,IAAzB,CAJ4B,EAII,CAJJ,CAAjB,CAAZ,CAAP;GA/dJ;;EAAA,OAueES,UAveF,GAueE,oBAAWb,IAAX,EAAyBC,KAAzB,EACQC,MADR,EACwBC,GADxB,EAEQC,IAFR,EAE+BC,GAF/B;QAEQD;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IAC3C,KAAK7R,IAAL,CAAU,CAAV,IAAe,IAAI4R,IAAJ,IAAYH,KAAK,GAAGD,IAApB,CAAf;IACA,KAAKxR,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,IAAI4R,IAAJ,IAAYD,GAAG,GAAGD,MAAlB,CAAf;IACA,KAAK1R,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAACyR,KAAK,GAAGD,IAAT,KAAgBC,KAAK,GAAGD,IAAxB,CAAf;IACA,KAAKxR,IAAL,CAAU,CAAV,IAAe,CAAC2R,GAAG,GAAGD,MAAP,KAAkBC,GAAG,GAAGD,MAAxB,CAAf;IACA,KAAK1R,IAAL,CAAU,EAAV,IAAgB,EAAE6R,GAAG,GAAGD,IAAR,KAAiBC,GAAG,GAAGD,IAAvB,CAAhB;IACA,KAAK5R,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAjB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAD,GAAK4R,IAAL,GAAYC,GAAZ,IAAmBA,GAAG,GAAGD,IAAzB,CAAhB;IACA,KAAK5R,IAAL,CAAU,EAAV,IAAgB,CAAhB;GAzfJ;;EAAA,OAigBEsS,SAjgBF,GAigBE,mBAAUC,MAAV,EAA2BC,CAA3B;QAA2BA;MAAAA,IAAY;;;IAErC,IAAIlF,CAAC,GAAG,KAAKtN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACjF,CAA9B,GACJ,KAAKtN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAAChF,CAD1B,GAEJ,KAAKvN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACzC,CAF1B,GAGJ,KAAK9P,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBwS,CAH3B;IAKA,IAAIjF,CAAC,GAAG,KAAKvN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACjF,CAA9B,GACJ,KAAKtN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAAChF,CAD1B,GAEJ,KAAKvN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACzC,CAF1B,GAGJ,KAAK9P,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBwS,CAH3B;IAKA,IAAI1C,CAAC,GAAG,KAAK9P,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACjF,CAA9B,GACJ,KAAKtN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAAChF,CAD1B,GAEJ,KAAKvN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACzC,CAF1B,GAGJ,KAAK9P,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBwS,CAH3B;IAKAA,CAAC,GAAG,KAAKxS,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACjF,CAA9B,GACA,KAAKtN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAAChF,CAD9B,GAEA,KAAKvN,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBuS,MAAM,CAACzC,CAF9B,GAGA,KAAK9P,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBwS,CAH3B;;IAKA,IAAIA,CAAC,IAAI,CAAT,EAAY;MACVA,CAAC,GAAG,CAAJ;;;IAGF,OAAO,IAAI3C,OAAJ,CACLvC,CAAC,GAAGkF,CADC,EACEjF,CAAC,GAAGiF,CADN,EACS1C,CAAC,GAAG0C,CADb,CAAP;GA3hBJ;;EAAA,OAoiBEzC,MApiBF,GAoiBE;IACE,OAAO,KAAK/P,IAAZ;GAriBJ;;EAAA,OAglBEyS,OAhlBF,GAglBE;IASE,IAAMC,IAAI,GAAG,CAAb;IACA,IAAIC,IAAI,GAAG,CAAX;IAEA,IAAIC,CAAC,GAAG,KAAK5S,IAAL,CAAU6S,KAAV,EAAR;IAIA,IAAIC,CAAC,GAAG,IAAI9C,YAAJ,CAAiB,CACvB,GADuB,EAClB,GADkB,EACb,GADa,EACR,GADQ,EAEvB,GAFuB,EAElB,GAFkB,EAEb,GAFa,EAER,GAFQ,EAGvB,GAHuB,EAGlB,GAHkB,EAGb,GAHa,EAGR,GAHQ,EAIvB,GAJuB,EAIlB,GAJkB,EAIb,GAJa,EAIR,GAJQ,CAAjB,CAAR;;IAUA,KAAK,IAAIpM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+O,IAApB,EAA0B,EAAE/O,CAA5B,EAA+B;MAI7B,IAAIC,CAAC,GAAGD,CAAR;;MACA,OAAOC,CAAC,GAAG6O,IAAJ,IAAYE,CAAC,CAAC/O,CAAC,GAAG,CAAJ,GAAQD,CAAT,CAAD,IAAgB,CAAnC,EAAsC;QACpC,EAAEC,CAAF;;;MAEF,IAAIA,CAAC,IAAI6O,IAAL,IAAaE,CAAC,CAAC/O,CAAC,GAAG,CAAJ,GAAQD,CAAT,CAAD,IAAgB,CAAjC,EAAoC;QAGlCmP,OAAO,CAACC,GAAR,CAAY,+CAAZ;QACA,OAAO,IAAP;;;MAEF,IAAInP,CAAC,IAAID,CAAT,EAAY;QACV,IAAIqP,GAAE,GAAGL,CAAC,CAACC,KAAF,CAAQjP,CAAC,GAAG8O,IAAZ,EAAkB,CAAC9O,CAAC,GAAG,CAAL,IAAU8O,IAA5B,CAAT;;QACA,IAAIQ,EAAE,GAAGN,CAAC,CAACC,KAAF,CAAQhP,CAAC,GAAG6O,IAAZ,EAAkB,CAAC7O,CAAC,GAAG,CAAL,IAAU6O,IAA5B,CAAT;QACAE,CAAC,CAAClF,GAAF,CAAMwF,EAAN,EAAUtP,CAAC,GAAG8O,IAAd;QACAE,CAAC,CAAClF,GAAF,CAAMuF,GAAN,EAAUpP,CAAC,GAAG6O,IAAd;;QACA,IAAIS,GAAE,GAAGL,CAAC,CAACD,KAAF,CAAQjP,CAAC,GAAG8O,IAAZ,EAAkB,CAAC9O,CAAC,GAAG,CAAL,IAAU8O,IAA5B,CAAT;;QACA,IAAIU,EAAE,GAAGN,CAAC,CAACD,KAAF,CAAQhP,CAAC,GAAG6O,IAAZ,EAAkB,CAAC7O,CAAC,GAAG,CAAL,IAAU6O,IAA5B,CAAT;QACAI,CAAC,CAACpF,GAAF,CAAM0F,EAAN,EAAUxP,CAAC,GAAG8O,IAAd;QACAI,CAAC,CAACpF,GAAF,CAAMyF,GAAN,EAAUtP,CAAC,GAAG6O,IAAd;;;MAIF,IAAIO,EAAE,GAAGL,CAAC,CAACC,KAAF,CAAQjP,CAAC,GAAG8O,IAAZ,EAAkB,CAAC9O,CAAC,GAAG,CAAL,IAAU8O,IAA5B,CAAT;MACA,IAAIS,EAAE,GAAGL,CAAC,CAACD,KAAF,CAAQjP,CAAC,GAAG8O,IAAZ,EAAkB,CAAC9O,CAAC,GAAG,CAAL,IAAU8O,IAA5B,CAAT;;MAEA,KAAK7O,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6O,IAAhB,EAAsB,EAAE7O,CAAxB,EAA2B;QACzB,IAAIqP,GAAE,GAAGN,CAAC,CAACC,KAAF,CAAQhP,CAAC,GAAG6O,IAAZ,EAAkB,CAAC7O,CAAC,GAAG,CAAL,IAAU6O,IAA5B,CAAT;;QACA,IAAIU,GAAE,GAAGN,CAAC,CAACD,KAAF,CAAQhP,CAAC,GAAG6O,IAAZ,EAAkB,CAAC7O,CAAC,GAAG,CAAL,IAAU6O,IAA5B,CAAT;;QACA,IAAG7O,CAAC,IAAID,CAAR,EAAW;UAGT,IAAIsP,GAAE,CAACtP,CAAD,CAAF,IAAS,CAAb,EAAgB;YACd,IAAIyP,CAAC,GAAG,CAACH,GAAE,CAACtP,CAAD,CAAH,GAASqP,EAAE,CAACrP,CAAD,CAAnB;;YAIA,KAAK,IAAI0P,CAAC,GAAG1P,CAAb,EAAgB0P,CAAC,GAAGX,IAApB,EAA0B,EAAEW,CAA5B,EAA+B;cAC7BJ,GAAE,CAACI,CAAD,CAAF,GAAQJ,GAAE,CAACI,CAAD,CAAF,GAASD,CAAC,GAAGJ,EAAE,CAACK,CAAD,CAAvB;;;YAEFV,CAAC,CAAClF,GAAF,CAAMwF,GAAN,EAAUrP,CAAC,GAAG6O,IAAd;;YACA,KAAK,IAAIY,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGX,IAApB,EAA0B,EAAEW,EAA5B,EAA+B;cAC7BF,GAAE,CAACE,EAAD,CAAF,GAAQF,GAAE,CAACE,EAAD,CAAF,GAASD,CAAC,GAAGF,EAAE,CAACG,EAAD,CAAvB;;;YAEFR,CAAC,CAACpF,GAAF,CAAM0F,GAAN,EAAUvP,CAAC,GAAG6O,IAAd;;SAfJ,MAkBK;UAIH,IAAIW,EAAC,GAAGJ,EAAE,CAACrP,CAAD,CAAV;;UACA,IAAIyP,EAAC,IAAI,CAAT,EAAY;YACVN,OAAO,CAACC,GAAR,CAAY,+CAAZ;YACA,OAAO,IAAP;;;UAEF,KAAK,IAAIM,GAAC,GAAG1P,CAAb,EAAgB0P,GAAC,GAAGX,IAApB,EAA0B,EAAEW,GAA5B,EAA+B;YAC7BJ,GAAE,CAACI,GAAD,CAAF,GAAQJ,GAAE,CAACI,GAAD,CAAF,GAAQD,EAAhB;;;UAEFT,CAAC,CAAClF,GAAF,CAAMwF,GAAN,EAAUrP,CAAC,GAAG6O,IAAd;;UACA,KAAK,IAAIY,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGX,IAApB,EAA0B,EAAEW,GAA5B,EAA+B;YAC7BF,GAAE,CAACE,GAAD,CAAF,GAAQF,GAAE,CAACE,GAAD,CAAF,GAAQD,EAAhB;;;UAEFP,CAAC,CAACpF,GAAF,CAAM0F,GAAN,EAAUvP,CAAC,GAAG6O,IAAd;;;;;IAIN,OAAO,IAAIzC,OAAJ,CAAY6C,CAAZ,CAAP;GAhrBJ;;EAAA;IAAA;IAAA,KA6EE;MACE,OAAO,IAAIjD,OAAJ,CAAY,KAAK7P,IAAL,CAAU,EAAV,CAAZ,EAA2B,KAAKA,IAAL,CAAU,EAAV,CAA3B,EAA0C,KAAKA,IAAL,CAAU,EAAV,CAA1C,CAAP;;;;EA9EJ;AAAA;;ICHauT,KAAb;EAME,eAAYC,GAAZ,EACEC,KADF,EAEEC,IAFF,EAGmBnD,KAHnB;QAAYiD;MAAAA,MAAc;;;QACxBC;MAAAA,QAAgB;;;QAChBC;MAAAA,OAAe;;;QACEnD;MAAAA,QAAgB;;;IAAhB,UAAA,GAAAA,KAAA;IACjB,KAAKoD,OAAL,GAAe,IAAI3D,YAAJ,CAAiB,CAACwD,GAAD,EAAMC,KAAN,EAAaC,IAAb,CAAjB,CAAf;;;EAVJ;;EAAA,OAgBEE,SAhBF,GAgBE;IACE,OAAO,KAAKD,OAAZ;GAjBJ;;EAAA,OAuBE5D,MAvBF,GAuBE;IACE,OAAO,IAAIC,YAAJ,CAAiB,CAAC,KAAKwD,GAAN,EAAW,KAAKC,KAAhB,EAAuB,KAAKC,IAA5B,EAAkC,KAAKnD,KAAvC,CAAjB,CAAP;GAxBJ;;EAAA,MAkDSsD,OAlDT,GAkDE,iBAAeC,SAAf;QAAeA;MAAAA,YAAY;;;IACzB,IAAIA,SAAS,CAACvX,MAAV,IAAoB,CAApB,IAAyBuX,SAAS,CAACvX,MAAV,IAAoB,CAA7C,IAAkDuX,SAAS,CAACvX,MAAV,IAAoB,CAA1E,EAA6E;MAC3EuX,SAAS,GAAGA,SAAS,CAACC,SAAV,CAAoB,CAApB,EAAuBD,SAAS,CAACvX,MAAjC,CAAZ;;;IAEF,IAAIuX,SAAS,CAACvX,MAAV,IAAoB,CAAxB,EAA2B;MACzBuX,SAAS,GAAGA,SAAS,CAACE,KAAV,CAAgB,EAAhB,EAAoBxZ,GAApB,CAAwB,UAAA8S,CAAC;QAAA,OAAIA,CAAC,GAAGA,CAAR;OAAzB,EAAoC2G,IAApC,CAAyC,EAAzC,CAAZ;;;IAGF,IAAIC,SAAS,GAAGC,QAAQ,CAACL,SAAD,EAAY,EAAZ,CAAxB;;IAEA,IAAIA,SAAS,CAACvX,MAAV,IAAoB,CAAxB,EAA2B;MACzB,OAAO,IAAIgX,KAAJ,CACL,CAACW,SAAS,IAAI,EAAd,IAAoB,GADf,EAEL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAFtB,EAGL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAHf,CAAP;KADF,MAOK;MACH,OAAO,IAAIX,KAAJ,CACL,CAAEW,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GADvB,EAEL,CAAEA,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GAFvB,EAGL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAHtB,EAIL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAJf,CAAP;;GApEN;;EAAA,MA6ESE,OA7ET,GA6EE,iBAAeF,SAAf;QAAeA;MAAAA,YAAY;;;IACzB,IAAIA,SAAS,GAAG,CAAhB,EAAmB;MACjBA,SAAS,GAAG,CAAZ;;;IAEF,OAAO,IAAIX,KAAJ,CACL,CAAEW,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GADvB,EAEL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAFtB,EAGL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAHf,CAAP;GAjFJ;;EAAA,MAwFSG,QAxFT,GAwFE,kBAAgB5I,KAAhB;IACE,OAAO,IAAI8H,KAAJ,CACL9H,KAAK,CAAC6B,CADD,EAEL7B,KAAK,CAAC8B,CAFD,EAGL9B,KAAK,CAACqE,CAHD,CAAP;GAzFJ;;EAAA,MAgGSwE,GAhGT,GAgGE,aAAW3G,CAAX,EAAqB4G,CAArB,EAA+BC,MAA/B;IACE,OAAO,IAAIjB,KAAJ,CACL5F,CAAC,CAAC6F,GAAF,GAAQgB,MAAR,GAAiBD,CAAC,CAACf,GAAF,IAAS,IAAIgB,MAAb,CADZ,EAEL7G,CAAC,CAAC8F,KAAF,GAASe,MAAT,GAAkBD,CAAC,CAACd,KAAF,IAAW,IAAIe,MAAf,CAFb,EAGL7G,CAAC,CAAC+F,IAAF,GAASc,MAAT,GAAkBD,CAAC,CAACb,IAAF,IAAU,IAAIc,MAAd,CAHb,EAIL7G,CAAC,CAAC4C,KAAF,GAAUiE,MAAV,GAAmBD,CAAC,CAAChE,KAAF,IAAW,IAAIiE,MAAf,CAJd,CAAP;GAjGJ;;EAAA,MAmHSC,OAnHT,GAmHE,iBAAeC,WAAf;IACE,OAAO,0BAA0BC,IAA1B,CAA+BD,WAA/B,CAAP;GApHJ;;EAAA;IAAA;IAAA,KA2BE;MACE,OAAO,KAAKf,OAAL,CAAa,CAAb,CAAP;;;IA5BJ;IAAA,KA+BE;MACE,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP;;;IAhCJ;IAAA,KAmCE;MACE,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP;;;IApCJ;IAAA,KA2CE;MACE,OAAO,UAAU,KAAKH,GAAL,GAAW,GAArB,GAA2B,GAA3B,GAAiC,KAAKC,KAAL,GAAa,GAA9C,GAAoD,GAApD,GAA0D,KAAKC,IAAL,GAAY,GAAtE,GAA4E,GAA5E,GAAkF,KAAKnD,KAAvF,GAA+F,GAAtG;;;IA5CJ;IAAA,KAyGE;MACE,IAAIqE,SAAS,GAAG,SAAZA,SAAY,CAACvB,CAAD;QACd,IAAIwB,GAAG,GAAG/Q,IAAI,CAACE,KAAL,CAAWqP,CAAC,GAAG,GAAf,EAAoBpP,QAApB,CAA6B,EAA7B,CAAV;QACA4Q,GAAG,GAAGA,GAAG,CAACtY,MAAJ,IAAc,CAAd,GAAkB,MAAMsY,GAAxB,GAA8BA,GAApC;QACAA,GAAG,GAAGA,GAAG,CAACtY,MAAJ,GAAa,CAAb,GAAiBsY,GAAG,CAACC,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAjB,GAAoCD,GAA1C;QACA,OAAOA,GAAP;OAJF;;MAMA,OAAO,MAAMD,SAAS,CAAC,KAAKpB,GAAN,CAAf,GAA4BoB,SAAS,CAAC,KAAKnB,KAAN,CAArC,GAAoDmB,SAAS,CAAC,KAAKlB,IAAN,CAA7D,GAA2EkB,SAAS,CAAC,KAAKrE,KAAN,CAA3F;;;;EAhHJ;AAAA;;ICCawE,YAAb;EAAA;;EAAA;IAAA;IAAA,KA4CE;MACE,OAAO,EAAP;;;IA7CJ;IAAA,KAwGE;MACE,OAAO,OAAOC,eAAe,CAAChD,GAAhB,GAAsBiD,aAAa,CAACC,OAAlD;;;;EAzGJ;AAAA;AAESH,iBAAA,GAAO,CAAC,GAAR;AAEAA,yBAAA,GAAe,GAAf;AAEAA,wBAAA,GAAc,CAAC,kBAAf;AAEAA,wBAAA,GAAc,kBAAd;AAEAA,yBAAA,GAAe,GAAf;AAEAA,yBAAA,GAAe,CAAC,GAAhB;AAEAA,uBAAA,GAAa,GAAb;AAEAA,8BAAA,GAAoB,SAApB;AAEAA,0CAAA,GAAgCA,YAAY,CAACI,iBAAb,GAAiCrR,IAAI,CAACqK,EAAtE;AAEA4G,sCAAA,GAA4BA,YAAY,CAACK,6BAAb,GAA6C,CAAzE;AAEAL,0BAAA,GAAgB,GAAhB;AAEAA,+BAAA,GAAqBM,MAAM,CAACC,gBAA5B;AAEAP,+BAAA,GAAqB,CAAC,KAAtB;AAEAA,+BAAA,GAAqB,CAArB;AAEAA,8BAAA,GAAoB,GAApB;AAEAA,8BAAA,GAAoB,EAApB;AAEAA,+BAAA,GAAqB,EAArB;AAEAA,kCAAA,GAAwB,yBAAxB;AAEAA,uBAAA,GAAa,EAAb;AAEAA,wBAAA,GAAc,EAAd;AAEAA,0BAAA,GAAgB,EAAhB;AAMAA,0BAAA,GAAgB,QAAhB;AAEAA,wBAAA,GAAc,GAAd;AAEAA,uBAAA,GAAa,CAAb;AAEAA,4BAAA,GAAkB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAAlB;AAEAwB,+BAAA,GAAqB,CAAC,GAAD,EAAM,GAAN,CAArB;AAEAA,8BAAA,GAAoB,CAApB;AAGAA,6BAAA,GAAmB,CAAC,OAApB;AAGAA,6BAAA,GAAmB,OAAnB;AAEAA,8BAAA,GAAoB,KAApB;AAEAA,+BAAA,GAAqB,EAArB;AAEAA,gCAAA,GAAsB,EAAtB;AAGAA,6BAAA,GAAmB,IAAnB;AAGAA,6BAAA,GAAmB,KAAnB;AAEAA,4BAAA,GAAkB,GAAlB;AAEAA,2BAAA,GAAiB,CAAjB;AAEAA,6BAAA,GAAmB,EAAnB;AAEAA,2BAAA,GAAiB,EAAjB;AAEAA,iCAAA,GAAuB,EAAvB;AAEAA,iCAAA,GAAuB,EAAvB;AAEAA,mCAAA,GAAyB,EAAzB;AAEAA,uBAAA,GAAa,MAAb;AAEAA,qCAAA,GAA2B,GAA3B;AAEAA,2BAAA,GAAiB,IAAjB;AAEAA,oBAAA,GAAU,GAAV;AAEAA,sBAAA,GAAY,IAAZ;AAEAA,sBAAA,GAAY,IAAZ;AAMAA,6BAAA,GAAmB,IAAnB;AAEAA,0BAAA,GAAgB,KAAhB;AAEAA,8BAAA,GAAoB,KAApB;AAEAA,0BAAA,GAAgB,KAAhB;AAEAA,0BAAA,GAAgB,MAAhB;AAEAA,mCAAA,GAAyB,KAAzB;AAEAA,qCAAA,GAA2B,GAA3B;AAEAA,iCAAA,GAAuBxB,KAAK,CAACM,OAAN,CAAc,SAAd,CAAvB;AAEAkB,iCAAA,GAAuBxB,KAAK,CAACM,OAAN,CAAc,SAAd,CAAvB;AAEAkB,8BAAA,GAAoB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAApB;AAEAwB,6BAAA,GAAmB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAAnB;AAEAwB,oCAAA,GAA0B,OAA1B;AAEAA,iCAAA,GAAuB,OAAvB;AAEAA,uBAAA,GAAa,IAAI9E,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAC/C,GAD+C,EAC1C,GAD0C,EACrC,GADqC,EAChC,GADgC,EAE/C,GAF+C,EAE1C,GAF0C,EAErC,GAFqC,EAEhC,GAFgC,EAG/C,GAH+C,EAG1C,GAH0C,EAGrC,GAHqC,EAGhC,GAHgC,EAI/C,GAJ+C,EAI1C,GAJ0C,EAIrC,GAJqC,EAIhC,GAJgC,CAAjB,CAAZ,CAAb;AAOA+E,gBAAA,GAAM,SAAS,IAAf;AAEAA,oCAAA,GAA0B,UAA1B;AAEAA,+BAAA,GAAqB,iBAArB;AAEAA,yBAAA,GAAe,GAAf;AAEAA,qBAAA,GAAW,IAAX;AAEAA,2CAAA,GAAiC,GAAjC;AAEAA,4BAAA,GAAkB,IAAlB;AAEAA,uBAAA,GAAa,CAAb;AAEAA,6BAAA,GAAmB,CAAnB;AAKT,IAmDaE,aAAb;AAESA,qBAAA,GAAU,MAAMnR,IAAI,CAACqK,EAArB;AAEA8G,qBAAA,GAAUnR,IAAI,CAACqK,EAAL,GAAU,KAApB;AAEA8G,qBAAA,GAAU,IAAV;AAGT,IAAaD,eAAb;AAESA,mBAAA,GAAM,KAAKC,aAAa,CAACM,OAAzB;AAEAP,yBAAA,GAAY,GAAZ;AAEAA,wBAAA,GAAW,IAAX;AAEAA,sBAAA,GAAS,IAAT;AAIT,IA2BaQ,cAAb;EAAA;;EAAA,eAsBSC,WAtBT,GAsBE,qBAAmBva,IAAnB;IACE,OAAOsa,cAAc,CAACE,SAAf,CAAyBxa,IAAzB,CAAP;GAvBJ;;EAAA,eA0BSya,WA1BT,GA0BE,qBAAmBza,IAAnB;IACE,OAAOsa,cAAc,CAACI,SAAf,CAAyB1a,IAAzB,CAAP;GA3BJ;;EAAA,eA8BS2a,aA9BT,GA8BE,uBAAqB3a,IAArB;IACE,OAAOsa,cAAc,CAACM,WAAf,CAA2B5a,IAA3B,CAAP;GA/BJ;;EAAA;AAAA;AACSsa,wBAAA,GAAY;EACjB,WAAWjC,KAAK,CAACM,OAAN,CAAc,QAAd,CADM;EAEjB,QAAQN,KAAK,CAACM,OAAN,CAAc,QAAd,CAFS;EAGjB,aAAaN,KAAK,CAACM,OAAN,CAAc,QAAd,CAHI;EAIjB,WAAWN,KAAK,CAACM,OAAN,CAAc,QAAd;AAJM,CAAZ;AAOA2B,wBAAA,GAAY;EACjB,WAAWjC,KAAK,CAACM,OAAN,CAAc,QAAd,CADM;EAEjB,QAAQN,KAAK,CAACM,OAAN,CAAc,QAAd,CAFS;EAGjB,aAAaN,KAAK,CAACM,OAAN,CAAc,QAAd,CAHI;EAIjB,WAAWN,KAAK,CAACM,OAAN,CAAc,QAAd;AAJM,CAAZ;AAOA2B,0BAAA,GAAc;EACnB,WAAWjC,KAAK,CAACM,OAAN,CAAc,SAAd,CADQ;EAEnB,QAAQN,KAAK,CAACM,OAAN,CAAc,SAAd,CAFW;EAGnB,aAAaN,KAAK,CAACM,OAAN,CAAc,SAAd,CAHM;EAInB,WAAWN,KAAK,CAACM,OAAN,CAAc,SAAd;AAJQ,CAAd;;ACvRT,IAAYkC,SAAZ;;AAAA,WAAYA;EAEVA,kCAAA,WAAA;EACAA,kCAAA,WAAA;EACAA,oCAAA,aAAA;EACAA,mCAAA,YAAA;EACAA,+BAAA,QAAA;EACAA,oCAAA,aAAA;EAGAA,6CAAA,sBAAA;EAGAA,iDAAA,0BAAA;EAGAA,yCAAA,kBAAA;EACAA,wCAAA,iBAAA;EAGAA,iCAAA,SAAA;EACAA,mCAAA,WAAA;EACAA,kCAAA,UAAA;EACAA,4CAAA,oBAAA;EAGAA,0CAAA,kBAAA;EAGAA,yCAAA,iBAAA;EAGAA,oCAAA,YAAA;EACAA,yCAAA,iBAAA;EACAA,gDAAA,wBAAA;AACD,CAnCD,EAAYA,SAAS,KAATA,SAAS,KAAA,CAArB;;AAqCA,IAAaC,WAAb;EAGE,qBAAYC,SAAZ;IACE,KAAKA,SAAL,GAAiBA,SAAjB;;;EAJJ,YAaSC,WAbT,GAaE,qBAAmBC,SAAnB,EAAmCF,SAAnC;IACE,IAAIG,WAAW,GAAG,CAACD,SAAS,IAAI,EAAd,EAAkBF,SAApC;IACA,OAAOG,WAAW,IAAIH,SAAtB;GAfJ;;EAAA;AAAA;;ICjCaI,MAAb;EAAA;;EAQE,gBAAY5Z,GAAZ,EAAyBC,GAAzB;;;IACE,gCAAMqZ,SAAS,CAACO,MAAhB;IACA,MAAK7Z,GAAL,GAAWA,GAAX;IACA,MAAKC,GAAL,GAAWA,GAAX;;;;EAXJ;;EAAA,OAkBE6Z,MAlBF,GAkBE,gBAAOnG,KAAP;IACE,OAAO,KAAK3T,GAAL,IAAY2T,KAAK,CAAC3T,GAAlB,IAAyB,KAAKC,GAAL,IAAY0T,KAAK,CAAC1T,GAAlD;GAnBJ;;EAAA,OAsBE8Z,KAtBF,GAsBE;IACE,OAAOC,QAAQ,CAAC,KAAKha,GAAN,CAAR,IAAsBqH,IAAI,CAAC4S,GAAL,CAAS,KAAKja,GAAd,KAAsB,EAAnD;GAvBJ;;EAAA,OA8BEwH,QA9BF,GA8BE;IACE,OAAO,MAAM,KAAKxH,GAAX,GAAiB,IAAjB,GAAwB,KAAKC,GAA7B,GAAmC,GAA1C;GA/BJ;;EAAA,OAkCSia,OAlCT,GAkCE,iBAAeC,KAAf;IACE,IAAGZ,WAAW,CAACE,WAAZ,CAAwBU,KAAxB,EAA+Bb,SAAS,CAACO,MAAzC,CAAH,EAAqD;MACnD,OAAOM,KAAP;;;IAEF,IAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,KAAyBA,KAAK,CAACra,MAAN,KAAiB,CAA9C,EAAkD;MAChD,OAAO,IAAI8Z,MAAJ,CAAWhB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,CAAjB,EAA6BvB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,CAAnC,CAAP;;;IAEF,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAD,IAAyB,OAAOA,KAAP,KAAiB,QAA1C,IAAsDA,KAAK,KAAK,IAAhE,IAAwE,SAASA,KAAjF,IAA0F,SAASA,KAAvG,EAA8G;MAC5G,OAAO,IAAIP,MAAJ,CACLhB,MAAM,CAACuB,KAAK,CAACna,GAAP,CADD,EAEL4Y,MAAM,CAACuB,KAAK,CAACla,GAAP,CAFD,CAAP;;;IAIF,MAAM,IAAIqa,KAAJ,CAAU,0EACQ,yDADlB,CAAN;GA9CJ;;EAAA,OAkDEC,UAlDF,GAkDE,oBAAWC,MAAX;IACE,IAAIA,MAAM,IAAI,IAAd,EAAoB;MAClB,OAAO,CAAP;;;IAEF,IAAIC,IAAI,GAAGb,MAAM,CAACM,OAAP,CAAeM,MAAf,CAAX;IACA,IAAIE,cAAc,GAAGlC,aAAa,CAACM,OAAd,GAAwB,KAAK9Y,GAAlD;IACA,IAAI2a,eAAe,GAAGnC,aAAa,CAACM,OAAd,GAAwB,KAAK7Y,GAAnD;IACA,IAAI2a,aAAa,GAAGpC,aAAa,CAACM,OAAd,GAAwB2B,IAAI,CAACza,GAAjD;IACA,IAAI6a,cAAc,GAAGrC,aAAa,CAACM,OAAd,GAAwB2B,IAAI,CAACxa,GAAlD;IACA,IAAI6a,CAAC,GAAGzT,IAAI,CAACsK,GAAL,CAAS,CAACiJ,aAAa,GAAGF,cAAjB,IAAiC,CAA1C,CAAR;IACA,IAAIvI,CAAC,GAAG9K,IAAI,CAACsK,GAAL,CAAS,CAACkJ,cAAc,GAAGF,eAAlB,IAAmC,CAA5C,CAAR;IAGA,OAAQ,MAAMrC,YAAY,CAACI,iBAAnB,GACNrR,IAAI,CAAC0T,IAAL,CAAU1T,IAAI,CAAC+K,IAAL,CAAU0I,CAAC,GAAGA,CAAJ,GAAQzT,IAAI,CAACoK,GAAL,CAASiJ,cAAT,IAA2BrT,IAAI,CAACoK,GAAL,CAASmJ,aAAT,CAA3B,GAAqDzI,CAArD,GAAyDA,CAA3E,CAAV,CADF;GA/DJ;;EAAA,OAmEEnB,SAnEF,GAmEE;IACE,IAAIgK,IAAI,GAAG,KAAKhb,GAAL,GAAW,CAAX,GAAe,CAAC,CAAhB,GAAoB,CAA/B;IACA,IAAIA,GAAG,GAAG,CAAC,KAAKA,GAAL,GAAWgb,IAAI,GAAG,EAAnB,IAAyB,GAAzB,GAA+B,KAAKA,IAA9C;IACAA,IAAI,GAAG,KAAK/a,GAAL,GAAW,CAAX,GAAe,CAAC,CAAhB,GAAoB,CAA3B;IACA,IAAIA,GAAG,GAAG,CAAC,KAAKA,GAAL,GAAW+a,IAAI,GAAG,GAAnB,IAA0B,GAA1B,GAAgC,MAAMA,IAAhD;IACA,OAAO,IAAIpB,MAAJ,CAAW5Z,GAAX,EAAgBC,GAAhB,CAAP;GAxEJ;;EAAA,OAgFEoR,GAhFF,GAgFE,aAAIH,CAAJ;IACE,OAAO,IAAI0I,MAAJ,CAAW,KAAK5Z,GAAL,GAAWkR,CAAC,CAAClR,GAAxB,EAA6B,KAAKC,GAAL,GAAWiR,CAAC,CAACjR,GAA1C,EAA+C+Q,SAA/C,EAAP;GAjFJ;;EAAA,OAyFEM,QAzFF,GAyFE,kBAASJ,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,IAAP;;;IAEF,OAAO,IAAI0I,MAAJ,CAAW,KAAK5Z,GAAL,GAAWkR,CAAC,CAAClR,GAAxB,EAA8B,KAAKC,GAAL,GAAWiR,CAAC,CAACjR,GAA3C,EAAgD+Q,SAAhD,EAAP;GA7FJ;;EAAA;AAAA,EAA4BuI,WAA5B;;ICCa0B,kBAAb;EAAA;;EAAA,mBAOiBC,eAPjB,GAOU,yBAAuBC,MAAvB,EAAuCC,SAAvC;IACN,IAAIC,QAAQ,GAAGhJ,SAAS,CAACC,KAAV,CAAgB6I,MAAM,CAACnb,GAAvB,EAA4BsY,YAAY,CAACgD,WAAzC,EAAsDhD,YAAY,CAACiD,WAAnE,CAAf;IACA,OAAO,IAAI3K,OAAJ,CACL0H,YAAY,CAACkD,YAAb,GAA4BL,MAAM,CAAClb,GAD9B,EAELqY,YAAY,CAACkD,YAAb,GAA4BhD,aAAa,CAACC,OAAd,GACxBpR,IAAI,CAACkP,GAAL,CAASlP,IAAI,CAACoO,GAAL,CAASpO,IAAI,CAACqK,EAAL,GAAU,CAAV,GAAc2J,QAAQ,GAAGhU,IAAI,CAACqK,EAAhB,GAAqB4G,YAAY,CAACmD,UAAzD,CAAT,CAHC,EAILlK,QAJK,CAII6J,SAAS,GAAG9C,YAAY,CAACmD,UAJ7B,CAAP;GATJ;;EAAA,mBAoBSC,wBApBT,GAoBE,kCAAgCP,MAAhC;IACE,IAAIQ,mBAAmB,GAAGtJ,SAAS,CAACC,KAAV,CAAgB6I,MAAM,CAACnb,GAAvB,EAA4BsY,YAAY,CAACgD,WAAzC,EAAsDhD,YAAY,CAACiD,WAAnE,CAA1B;IACA,IAAIK,oBAAoB,GAAGT,MAAM,CAAClb,GAAlC;IACA,IAAI4b,CAAC,GAAG,IAAI,KAAZ;IACA,IAAIjF,CAAC,GAAGvE,SAAS,CAACC,KAAV,CAAgBjL,IAAI,CAACsK,GAAL,CAAS6G,aAAa,CAACM,OAAd,GAAwB6C,mBAAjC,CAAhB,EAAuE,CAACE,CAAxE,EAA2EA,CAA3E,CAAR;IACA,IAAIC,OAAO,GAAGxD,YAAY,CAACI,iBAAb,GAAiCkD,oBAAjC,GAAwDpD,aAAa,CAACM,OAApF;IACA,IAAIiD,QAAQ,GAAG,MAAMzD,YAAY,CAACI,iBAAnB,GAAuCrR,IAAI,CAACkP,GAAL,CAAS,CAAC,IAAIK,CAAL,KAAW,IAAIA,CAAf,CAAT,CAAtD;IACA,OAAO,IAAIhG,OAAJ,CAAYkL,OAAZ,EAAqBC,QAArB,CAAP;GA3BJ;;EAAA,mBAkCSC,wBAlCT,GAkCE,kCAAgCC,MAAhC;IACE,IAAIZ,QAAQ,GAAG,CAAC,IAAIhU,IAAI,CAAC6U,IAAL,CAAU7U,IAAI,CAAC8U,GAAL,CAASF,MAAM,CAACnL,CAAP,GAAWwH,YAAY,CAACI,iBAAjC,CAAV,CAAJ,GAAsErR,IAAI,CAACqK,EAAL,GAAU,GAAjF,IACG8G,aAAa,CAACC,OADhC;IAEA,IAAI2D,SAAS,GAAGH,MAAM,CAACpL,CAAP,GAAW2H,aAAa,CAACC,OAAzB,GAAmCH,YAAY,CAACI,iBAAhE;IACA,OAAO,IAAIkB,MAAJ,CAAWyB,QAAX,EAAqBe,SAArB,CAAP;GAtCJ;;EAAA,mBA8CSC,WA9CT,GA8CE,qBAAmBlB,MAAnB,EAAmCmB,IAAnC;IACE,OAAO,KAAKpB,eAAL,CAAqBC,MAArB,EAA6B,KAAKmB,IAAlC,CAAP;GA/CJ;;EAAA;AAAA;;ICAaC,qBAAb;EAIE,+BAAYvd,WAAZ;IAFQ,gBAAA,GAAwB,EAAxB;IAGN,KAAKA,WAAL,GAAmBA,WAAW,CAACjB,GAAZ,CAAgB,UAAAye,UAAU;MAAA,OAAI5C,MAAM,CAACM,OAAP,CAAesC,UAAf,CAAJ;KAA1B,CAAnB;;;EALJ;;EAAA,OAQEtb,cARF,GAQE,wBAAelC,WAAf;IACE,KAAKA,WAAL,GAAmBA,WAAW,CAACjB,GAAZ,CAAgB,UAAAye,UAAU;MAAA,OAAI5C,MAAM,CAACM,OAAP,CAAesC,UAAf,CAAJ;KAA1B,CAAnB;GATJ;;EAAA,OAYEC,cAZF,GAYE,wBAAezd,WAAf;;;IACEA,WAAW,CAACoB,OAAZ,CAAoB,UAAAoc,UAAU;MAAA,OAAI,KAAI,CAACxd,WAAL,CAAiBsM,IAAjB,CAAsBsO,MAAM,CAACM,OAAP,CAAesC,UAAf,CAAtB,CAAJ;KAA9B;GAbJ;;EAAA,OAgBEE,MAhBF,GAgBE,gBAAOC,MAAP,EAAuBtQ,MAAvB;QAAuBA;MAAAA,SAAkB;;;IACvC,IAAI,KAAKrN,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,KAAKd,WAAL,CAAiBoX,KAAjB,EAAP;;;IAEF,IAAIlU,MAAM,GAAG,IAAb;;IACA,IAAImK,MAAM,IAAI,IAAd,EAAoB;MAClBnK,MAAM,GAAG0X,MAAM,CAACM,OAAP,CAAehY,MAAf,CAAT;KADF,MAGK;MACHA,MAAM,GAAG,KAAKA,MAAd;;;IAEF,IAAI0a,cAAc,GAAG3B,kBAAkB,CAACS,wBAAnB,CAA4CxZ,MAA5C,CAArB;IACA,IAAI2a,sBAAsB,GAAa,EAAvC;IACA,IAAIC,eAAe,GAAGzK,SAAS,CAACI,SAAV,CAAoBkK,MAApB,CAAtB;IACA,KAAK3d,WAAL,CAAiBoB,OAAjB,CAAyB,UAAAoc,UAAU;MACjC,IAAIO,KAAK,GAAG9B,kBAAkB,CAACS,wBAAnB,CAA4Cc,UAA5C,CAAZ;MACAO,KAAK,CAAClM,CAAN,IAAW+L,cAAc,CAAC/L,CAA1B;MACAkM,KAAK,CAACjM,CAAN,IAAW8L,cAAc,CAAC9L,CAA1B;MAEA,IAAID,CAAC,GAAGkM,KAAK,CAAClM,CAAd;MACA,IAAIC,CAAC,GAAGiM,KAAK,CAACjM,CAAd;MACAiM,KAAK,CAAClM,CAAN,GAAWA,CAAC,GAAGxJ,IAAI,CAACoK,GAAL,CAASqL,eAAT,CAAJ,GAAgChM,CAAC,GAAGzJ,IAAI,CAACsK,GAAL,CAASmL,eAAT,CAA/C;MACAC,KAAK,CAACjM,CAAN,GAAWD,CAAC,GAAGxJ,IAAI,CAACsK,GAAL,CAASmL,eAAT,CAAJ,GAAgChM,CAAC,GAAGzJ,IAAI,CAACoK,GAAL,CAASqL,eAAT,CAA/C;MAEAD,sBAAsB,CAACvR,IAAvB,CAA4B2P,kBAAkB,CAACe,wBAAnB,CAC1B,IAAIpL,OAAJ,CAAYgM,cAAc,CAAC/L,CAAf,GAAmBkM,KAAK,CAAClM,CAArC,EAAwC+L,cAAc,CAAC9L,CAAf,GAAmBiM,KAAK,CAACjM,CAAjE,CAD0B,CAA5B;KAVF;IAaA,OAAO+L,sBAAP;GA3CJ;;EAAA,OA8CEjJ,SA9CF,GA8CE,mBAAU4G,MAAV,EAA2BnO,MAA3B;QAA2BA;MAAAA,SAAkB;;;IAC3C,IAAI,KAAKrN,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,EAAP;;;IAEF,IAAIkd,SAAS,GAAGpD,MAAM,CAACM,OAAP,CAAeM,MAAf,CAAhB;IACA,IAAIyC,SAAS,GAAG,IAAhB;;IACA,IAAI5Q,MAAM,IAAI,IAAd,EAAoB;MAClB4Q,SAAS,GAAGrD,MAAM,CAACM,OAAP,CAAe7N,MAAf,CAAZ;KADF,MAGK;MACH4Q,SAAS,GAAG,KAAK/a,MAAjB;;;IAGF,IAAI2a,sBAAsB,GAAa,EAAvC;IACA,IAAIK,gBAAgB,GAAGF,SAAS,CAAC/c,GAAV,GAAgBgd,SAAS,CAAChd,GAAjD;IACA,IAAIkd,gBAAgB,GAAGH,SAAS,CAAChd,GAAV,GAAgBid,SAAS,CAACjd,GAAjD;IACA,KAAKhB,WAAL,CAAiBoB,OAAjB,CAAyB,UAAAoc,UAAU;MACjCK,sBAAsB,CAACvR,IAAvB,CAA4B,IAAIsO,MAAJ,CAAW4C,UAAU,CAACxc,GAAX,GAAiBmd,gBAA5B,EAC1BX,UAAU,CAACvc,GAAX,GAAiBid,gBADS,CAA5B;KADF;IAIA,OAAOL,sBAAP;GAlEJ;;EAAA,OAqEEne,KArEF,GAqEE,eAAMA,MAAN,EAAqB2N,MAArB;QAAqBA;MAAAA,SAAkB;;;IACrC,IAAI,KAAKrN,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,KAAKd,WAAL,CAAiBoX,KAAjB,EAAP;;;IAEF,IAAIlU,MAAM,GAAG,IAAb;;IACA,IAAImK,MAAM,IAAI,IAAd,EAAoB;MAClBnK,MAAM,GAAG0X,MAAM,CAACM,OAAP,CAAe7N,MAAf,CAAT;KADF,MAGK;MACHnK,MAAM,GAAG,KAAKA,MAAd;;;IAGF,IAAI0a,cAAc,GAAG3B,kBAAkB,CAACS,wBAAnB,CAA4CxZ,MAA5C,CAArB;IACA,IAAI2a,sBAAsB,GAAa,EAAvC;IACA,KAAK7d,WAAL,CAAiBoB,OAAjB,CAAyB,UAAAoc,UAAU;MACjC,IAAIO,KAAK,GAAG9B,kBAAkB,CAACS,wBAAnB,CAA4Cc,UAA5C,CAAZ;MACAO,KAAK,CAAClM,CAAN,IAAW+L,cAAc,CAAC/L,CAA1B;MACAkM,KAAK,CAACjM,CAAN,IAAW8L,cAAc,CAAC9L,CAA1B;MACAiM,KAAK,CAAClM,CAAN,IAAWnS,MAAX;MACAqe,KAAK,CAACjM,CAAN,IAAWpS,MAAX;MACAme,sBAAsB,CAACvR,IAAvB,CAA4B2P,kBAAkB,CAACe,wBAAnB,CAC1B,IAAIpL,OAAJ,CAAYgM,cAAc,CAAC/L,CAAf,GAAmBkM,KAAK,CAAClM,CAArC,EAAwC+L,cAAc,CAAC9L,CAAf,GAAmBiM,KAAK,CAACjM,CAAjE,CAD0B,CAA5B;KANF;IASA,OAAO+L,sBAAP;GA5FJ;;EAAA;IAAA;IAAA,KA+FE;MACE,IAAI,KAAK7d,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;QAChC,OAAO,IAAP;;;MAEF,IAAIoC,MAAM,GAAG,IAAI0X,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb;;MACA,KAAK,IAAIjF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK3V,WAAL,CAAiBc,MAArC,EAA6C,EAAE6U,CAA/C,EAAkD;QAChDzS,MAAM,CAAClC,GAAP,IAAc,KAAKhB,WAAL,CAAiB2V,CAAjB,EAAoB3U,GAAlC;QACAkC,MAAM,CAACjC,GAAP,IAAc,KAAKjB,WAAL,CAAiB2V,CAAjB,EAAoB1U,GAAlC;;;MAEFiC,MAAM,CAAClC,GAAP,IAAc,KAAKhB,WAAL,CAAiBc,MAA/B;MACAoC,MAAM,CAACjC,GAAP,IAAc,KAAKjB,WAAL,CAAiBc,MAA/B;MACA,OAAOoC,MAAP;;;;EA1GJ;AAAA;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/context/Map4dContext.ts","../src/context/MarkerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale,\r\n bearing,\r\n elevation,\r\n height,\r\n model,\r\n texture,\r\n coordinates,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n selected,\r\n growUp,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && (coordinates && coordinates?.length > 0 || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n name != undefined && buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n scale != undefined && buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n if (bearing != undefined) {\r\n buildingRef.current?.setBearing(bearing)\r\n }\r\n }, [bearing])\r\n useEffect(() => {\r\n elevation != undefined && buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n height != undefined && buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n model != undefined && buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n texture != undefined && buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n coordinates != undefined && buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n visible != undefined && buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && buildingRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n useEffect(() => {\r\n selected != undefined && buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n growUp != undefined && buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor,\r\n fillOpacity,\r\n visible,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n userInteractionEnabled,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<map4d.Circle>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(userInteractionEnabled)) {\r\n circleRef.current?.setUserInteraction(userInteractionEnabled as boolean)\r\n }\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated, \r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n let options = props.options\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + props.environment : \"\"}.map4d.vn`\r\n if (props.sdkDomain) {\r\n domain = props.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${props.version}&key=${props.accessKey}&callback=${callback.current}`\r\n if (props.mapid) {\r\n urlNew += `&mapId=${props.mapid}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current?.getCamera()\r\n camera?.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: any\r\n draggable?: boolean\r\n iconView?: string | Node\r\n userInteractionEnabled?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: label,\r\n draggable: draggable,\r\n iconView: iconView,\r\n userInteractionEnabled: userInteractionEnabled\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n label != undefined && markerRef.current?.setLabel(label)\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && markerRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n userInteractionEnabled,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n userInteractionEnabled: userInteractionEnabled\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && poiRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n zIndex,\r\n userInteractionEnabled,\r\n map,\r\n onHover,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n userInteractionEnabled: userInteractionEnabled,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polygonRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n userInteractionEnabled?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n userInteractionEnabled,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n userInteractionEnabled: userInteractionEnabled,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n userInteractionEnabled != undefined && polylineRef.current?.setUserInteraction(userInteractionEnabled)\r\n }, [userInteractionEnabled])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"],"names":["defaultCt","map","Map4dContext","createContext","markerClusterDefaultContext","addMarker","removeMarker","MarkerClusterContext","MFBuilding","props","position","name","scale","bearing","elevation","height","model","texture","coordinates","visible","draggable","userInteractionEnabled","selected","growUp","onCreated","map4dContext","useContext","theMap","buildingRef","useRef","useEffect","current","length","option","lat","lng","Object","keys","forEach","key","undefined","map4d","Building","setMap","setPosition","setName","setScale","setBearing","setElevation","setHeight","setModel","setTexture","setCoordinates","setVisible","setDraggable","setUserInteraction","setSelected","setGrowUp","MFBuildingOverlay","getUrl","parserData","prefixId","buildingOverlayRef","reCreate","BuildingOverlay","VariableTool","variable","MFCircle","center","radius","fillColor","fillOpacity","strokeColor","strokeWidth","zIndex","circleRef","Circle","hasValue","setCenter","setRadius","setFillColor","setFillOpacity","setStrokeColor","setStrokeWidth","setZIndex","MFDataLayer","geoJsonString","dataLayerRef","feature","data","remove","addGeoJson","MFDirectionsRenderer","routes","activedIndex","activeStrokeWidth","activeStrokeColor","activeOutlineWidth","activeOutlineColor","activeStrokePattern","inactiveStrokeWidth","inactiveStrokeColor","inactiveOutlineWidth","inactiveOutlineColor","inactiveStrokePattern","originMarkerOptions","destinationMarkerOptions","waypointMarkerOptions","onMarkerDragEnd","onHover","onMouseOut","onMouseOver","onMouseMove","directionRef","DirectionsRenderer","setRoutes","setActivedIndex","setActiveStrokePattern","setInactiveStrokePattern","setOptions","MFGroundOverlay","bounds","override","opacity","groundOverlayRef","TileOverlay","setOpacity","MFImageOverlay","url","imageOverlayRef","ImageOverlay","addLibrary","id","scriptId","exist","document","getElementById","script","createElement","src","defer","body","appendChild","createId","dt","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","MFMap","callback","mapDomRef","mapRef","scriptElement","events","useState","createCallback","window","options","Map","onMapReady","registerEvent","domain","environment","sdkDomain","urlNew","version","accessKey","mapid","destroy","t","mapType","setMapType","camera","getCamera","setTarget","moveCamera","eventClickMarker","addListener","args","marker","onClick","eventRightClickMarker","onRightClick","eventDragEndMarker","onDragEnd","eventHoverMarker","eventHoverPolygon","polygon","eventHoverPolyline","polyline","eventHoverDirection","renderer","directions","eventClickPolyline","eventMouseOutDirection","eventMouseOverDirection","eventMouseMoveDirection","eventMouseOutPolyline","eventMouseOverPolyline","eventMouseMovePolyline","eventMouseOutMarker","eventMouseOverMarker","eventMouseMoveMarker","eventClickPoi","poi","eventHoverPoi","concat","onClickLocation","location","push","onRightClickLocation","onTilesLoaded","onCameraChanging","newContext","React","Fragment","style","width","display","ref","Provider","value","children","MFMarker","anchor","labelAnchor","icon","rotation","title","snippet","windowAnchor","label","iconView","markerClusterContext","markerRef","iconT","Icon","Marker","infoWindow","setInfoWindow","infoContents","setInfoContents","showInfoWindow","hideInfoWindow","setAnchor","setLabelAnchor","setIcon","setRotation","setTitle","setSnippet","setWindowAnchor","setLabel","setIconView","MFMarkerCluster","minZoom","maxZoom","zoomOnClick","markerRefs","markerClusterRef","drawCluster","MarkerClusterer","clusterContext","newMarkers","filter","setZoomOnClick","MFPOI","subtitle","color","type","poiRef","POI","setSubtitle","setColor","setType","MFPOIOverlay","poiOverlayRef","POIOverlay","MFPolygon","paths","polygonRef","Polygon","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","a","invert","rotate90","add","subtract","multiply","rotateBy","cos","PI","sin","rotateByRadian","cross","dot","perp","v1","v2","neg","v","sqrt","MathUtils","clamp","min","max","toRadians","angleDegrees","distance","p1","p2","findNextPowerOf2","n","lg","log2","findPreviousPowerOf2","clz32","Vector3","z","buffer","Float32Array","Matrix4","setIdentity","copy","other","translate","rotateX","alpha","sinA","cosA","setRotationX","r1","r2","rotateY","setRotationY","r0","rotateZ","setRotationZ","matrix","result","i","j","k","ortho","left","right","bottom","top","near","far","setOrtho","perspective","fov","aspect","tan","frustum","setPerspective","setFrustum","transform","vector","w","inverse","rows","cols","A","slice","B","console","log","Ac","Ar","Bc","Br","f","s","Color","red","green","blue","_buffer","rgbBuffer","fromHex","hexString","substring","split","join","colorCode","parseInt","fromInt","fromVec3","mix","b","factor","isValid","colorString","test","float2hex","hex","substr","MapConstants","CameraConstants","MathConstants","rad2Deg","radiusEarthMeters","halfEarthCircumFerenceInMeter","Number","MIN_SAFE_INTEGER","deg2Rad","ColorConstants","getSkyColor","skyColors","getFogColor","fogColors","getLightColor","lightColors","ClassType","Map4dObject","classType","isClassType","mapObject","mfClassType","LatLng","LATLNG","equals","valid","isFinite","abs","convert","input","Array","isArray","Error","distanceTo","target","desc","latStartRadian","longStartRadian","latDescRadian","longDescRadian","u","asin","sign","ProjectionMercator","projectInternal","latLng","worldSize","latitude","minLatitude","maxLatitude","maxLongitude","maxDegrees","convertToMeterFromLatLng","constrainedLatitude","constrainedLongitude","m","easting","northing","convertToLatLngFromMeter","meters","atan","exp","longitude","projectZoom","zoom","CoordinateTransformer","coordinate","addCoordinates","rotate","degree","centerInMeters","transformedCoordinates","degreeInRadians","point","newCenter","oldCenter","translateVectorX","translateVectorY"],"mappings":"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"}