casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 24.8 kB
Source Map (JSON)
{"version":3,"file":"use-zoom-control.mjs","sources":["../../../../../../packages/components/controls/navigation-sm/use-zoom-control.ts"],"sourcesContent":["import type { AnyFunction, VcComponentInternalInstance, VcViewerProvider } from 'casc-cesium-utils/types'\nimport { $, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { ref } from 'vue'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-cesium-utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n // state\n const zoombarTop = ref(65)\n const zoomInTooltipRef = ref<VcTooltipRef>(null)\n const zoomOutTooltipRef = ref<VcTooltipRef>(null)\n const zoomBarTooltipRef = ref<VcTooltipRef>(null)\n let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n let zoominTickFunction: AnyFunction<void>\n let zoominMouseUpFunction: AnyFunction<void>\n let isZoomin = false\n let zoominLastTimestamp = 0\n let unsubscribeFromClockTickZoomin: AnyFunction<void>\n\n let zoomoutTickFunction: AnyFunction<void>\n let zoomoutMouseUpFunction: AnyFunction<void>\n let iszoomout = false\n let zoomoutLastTimestamp = 0\n let unsubscribeFromClockTickZoomout: AnyFunction<void>\n\n let zoomBarScrollMouseMoveFunction: AnyFunction<void>\n let zoomBarScrollMouseUpFunction: AnyFunction<void>\n let zoombarTickFunction: AnyFunction<void>\n let isZoomBarScrolling = false\n let unsubscribeFromClockTickZoomBar: AnyFunction<void>\n let container: HTMLElement\n\n // methods\n const handleZoomInMouseDown = e => {\n const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n const { viewer } = $services\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n ;(zoominMouseUpFunction as any) = undefined\n ;(zoominTickFunction as any) = undefined\n isZoomin = true\n zoominLastTimestamp = getTimestamp()\n const scene = viewer.scene\n const camera = scene.camera\n zoominTickFunction = () => {\n viewer.scene.mode === SceneMode.COLUMBUS_VIEW ? camera.zoomIn() : handlezoom(1)\n }\n\n zoominMouseUpFunction = () => {\n isZoomin = false\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n ;(zoominMouseUpFunction as any) = undefined\n ;(zoominTickFunction as any) = undefined\n }\n\n screenSpaceEventHandler.setInputAction(zoominMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n unsubscribeFromClockTickZoomin = viewer.clock.onTick.addEventListener(zoominTickFunction)\n }\n\n const handleZoomOutMouseDown = event => {\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n const { viewer } = $services\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n ;(zoomoutMouseUpFunction as any) = undefined\n ;(zoomoutTickFunction as any) = undefined\n iszoomout = false\n zoomoutLastTimestamp = getTimestamp()\n const scene = viewer.scene\n const camera = scene.camera\n zoomoutTickFunction = () => {\n viewer.scene.mode === SceneMode.COLUMBUS_VIEW ? camera.zoomOut() : handlezoom(-1)\n }\n\n zoomoutMouseUpFunction = () => {\n iszoomout = false\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n ;(zoomoutMouseUpFunction as any) = undefined\n ;(zoomoutTickFunction as any) = undefined\n }\n\n screenSpaceEventHandler.setInputAction(zoomoutMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n unsubscribeFromClockTickZoomout = viewer.clock.onTick.addEventListener(zoomoutTickFunction)\n }\n\n const handleZoomBarScrollMouseDown = event => {\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n const { Cartesian2, defined, SceneMode } = Cesium\n const { viewer } = $services\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n ;(zoomBarScrollMouseUpFunction as any) = undefined\n ;(zoombarTickFunction as any) = undefined\n isZoomBarScrolling = true\n const scene = viewer.scene\n const camera = scene.camera\n\n zoombarTickFunction = () => {\n const zoomOffset = zoombarTop.value - 65\n if (zoomOffset > 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n camera.zoomOut()\n } else {\n handlezoom(-1)\n }\n } else if (zoomOffset < 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n camera.zoomIn()\n } else {\n handlezoom(1)\n }\n }\n }\n zoomBarScrollMouseMoveFunction = e => {\n const zoombarTopMove = zoombarTop.value\n const clientRect = e.target.parentElement.getBoundingClientRect()\n const rectNavigation = container.getBoundingClientRect()\n const endPosition = new Cesium.Cartesian2()\n endPosition.x = e.type === 'touchmove' ? e.changedTouches[0].clientX - rectNavigation.left : e.clientX - rectNavigation.left\n endPosition.y = e.type === 'touchmove' ? e.changedTouches[0].clientY - rectNavigation.top : e.clientY - rectNavigation.top\n const padding = new Cartesian2(clientRect.width - endPosition.x, clientRect.height - endPosition.y)\n let offset = padding.y - 16\n offset = offset < 0 ? 0 : offset\n offset = offset > 120 ? 120 : offset\n zoombarTop.value = 120 - offset\n\n const zoomFlag = zoombarTop.value - zoombarTopMove\n if (zoomFlag > 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n camera.zoomOut()\n } else {\n handlezoom(-1)\n }\n } else {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n camera.zoomIn()\n } else {\n handlezoom(1)\n }\n }\n }\n\n zoomBarScrollMouseUpFunction = () => {\n isZoomBarScrolling = false\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n ;(zoomBarScrollMouseUpFunction as any) = undefined\n ;(zoomBarScrollMouseMoveFunction as any) = undefined\n ;(zoombarTickFunction as any) = undefined\n zoombarTop.value = 65\n }\n document.addEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.addEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.addEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.addEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n unsubscribeFromClockTickZoomBar = viewer.clock.onTick.addEventListener(zoombarTickFunction)\n }\n\n const handlezoom = i => {\n const { Cartesian2, Cartesian3, defined, Ellipsoid, Math } = Cesium\n const { viewer } = $services\n const scene = viewer.scene\n const camera = scene.camera\n const canvas = scene.canvas\n const centerPixel = new Cartesian2()\n centerPixel.x = canvas.clientWidth / 2\n centerPixel.y = canvas.clientHeight / 2\n const centerPosition = pickGlobe(centerPixel)\n if (defined(centerPosition)) {\n const distance = Cartesian3.distance(camera.position, centerPosition)\n let factor = 0.0618 * i * 0.2\n factor = distance > 300 ? factor : 2 * factor\n const amount = distance * factor\n const direction = new Cartesian3()\n Cartesian3.subtract(centerPosition, camera.position, direction)\n const cameraRight = Cartesian3.clone(camera.right)\n const dot = Cartesian3.dot(direction, cameraRight)\n const movementVector = new Cartesian3()\n Cartesian3.multiplyByScalar(cameraRight, dot, movementVector)\n Cartesian3.subtract(direction, movementVector, direction)\n Cartesian3.normalize(direction, direction)\n camera.move(direction, amount)\n const centerPositionNormal = new Cartesian3()\n Cartesian3.normalize(centerPosition, centerPositionNormal)\n\n const pickPosition = camera.pickEllipsoid(centerPixel, viewer.scene.globe.ellipsoid)\n if (\n isObject(pickPosition) &&\n defined(pickPosition) &&\n !isNaN(pickPosition.x) &&\n !isNaN(pickPosition.y) &&\n !isNaN(pickPosition.z) &&\n !(camera.positionCartographic.height < 0)\n ) {\n Cartesian3.normalize(pickPosition, pickPosition)\n const angle = Cartesian3.angleBetween(centerPositionNormal, pickPosition)\n if (!Math.equalsEpsilon(angle, 0, Math.EPSILON10)) {\n const axis = Cartesian3.cross(centerPositionNormal, pickPosition, new Cartesian3())\n camera.rotate(axis, angle)\n const listener = getInstanceListener(vcInstance, 'zoomEvt')\n listener &&\n emit('zoomEvt', {\n type: i === 1 ? 'zoomIn' : 'zoomOut',\n camera: viewer.camera,\n status: 'end'\n })\n }\n }\n }\n }\n\n const pickGlobe = mousePosition => {\n const { defined, Cartesian3 } = Cesium\n const { viewer } = $services\n const scene = viewer.scene\n const globe = scene.globe\n const camera = scene.camera\n if (defined(globe)) {\n let depthIntersection\n if (scene.pickPositionSupported) {\n depthIntersection = scene.pickPositionWorldCoordinates(mousePosition)\n }\n const ray = camera.getPickRay(mousePosition)\n const rayIntersection = globe.pick(ray, scene)\n const pickDistance = defined(depthIntersection) ? Cartesian3.distance(depthIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n const rayDistance =\n isObject(rayIntersection) && defined(rayIntersection) ? Cartesian3.distance(rayIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n return rayDistance > pickDistance ? depthIntersection : rayIntersection\n }\n }\n\n const onTooltipBeforeShow = e => {\n if (zoomBarScrollMouseMoveFunction !== undefined || zoominTickFunction !== undefined || zoomoutTickFunction !== undefined) {\n e.cancel = true\n }\n }\n\n const load = el => {\n container = el\n screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n return true\n }\n\n const unload = () => {\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n unsubscribeFromClockTickZoomin?.()\n unsubscribeFromClockTickZoomout?.()\n unsubscribeFromClockTickZoomBar?.()\n screenSpaceEventHandler?.destroy()\n return true\n }\n\n return {\n handleZoomInMouseDown,\n handleZoomOutMouseDown,\n handleZoomBarScrollMouseDown,\n load,\n unload,\n zoombarTop,\n zoomInTooltipRef,\n zoomOutTooltipRef,\n zoomBarTooltipRef,\n onTooltipBeforeShow\n }\n}\n"],"names":[],"mappings":";;;;;AAGe,uBAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;AAChE,EAAE,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,EAAE,MAAM,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,IAAI,uBAAuB,CAAC;AAC9B,EAAE,IAAI,kBAAkB,CAAC;AACzB,EAAE,IAAI,qBAAqB,CAAC;AAC5B,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC;AACvB,EAAE,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAC9B,EAAE,IAAI,8BAA8B,CAAC;AACrC,EAAE,IAAI,mBAAmB,CAAC;AAC1B,EAAE,IAAI,sBAAsB,CAAC;AAC7B,EAAE,IAAI,SAAS,GAAG,KAAK,CAAC;AACxB,EAAE,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC/B,EAAE,IAAI,+BAA+B,CAAC;AACtC,EAAE,IAAI,8BAA8B,CAAC;AACrC,EAAE,IAAI,4BAA4B,CAAC;AACnC,EAAE,IAAI,mBAAmB,CAAC;AAC1B,EAAE,IAAI,kBAAkB,GAAG,KAAK,CAAC;AACjC,EAAE,IAAI,+BAA+B,CAAC;AACtC,EAAE,IAAI,SAAS,CAAC;AAChB,EAAE,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK;AACvC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACnB,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;AAC9E,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACjC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AAC/F,IAAI,qBAAqB,GAAG,KAAK,CAAC,CAAC;AACnC,IAAI,kBAAkB,GAAG,KAAK,CAAC,CAAC;AAChC,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,mBAAmB,GAAG,YAAY,EAAE,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,kBAAkB,GAAG,MAAM;AAC/B,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtF,KAAK,CAAC;AACN,IAAI,qBAAqB,GAAG,MAAM;AAClC,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9E,MAAM,OAAO,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;AACjG,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC;AACrC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,uBAAuB,CAAC,cAAc,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAChG,IAAI,8BAA8B,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAC9F,GAAG,CAAC;AACJ,EAAE,MAAM,sBAAsB,GAAG,CAAC,KAAK,KAAK;AAC5C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACnB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;AAC9E,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACjC,IAAI,uBAAuB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC5E,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AACjG,IAAI,sBAAsB,GAAG,KAAK,CAAC,CAAC;AACpC,IAAI,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACjC,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,IAAI,oBAAoB,GAAG,YAAY,EAAE,CAAC;AAC1C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,mBAAmB,GAAG,MAAM;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,KAAK,CAAC;AACN,IAAI,sBAAsB,GAAG,MAAM;AACnC,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9E,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AACnG,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC;AACtC,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACnC,KAAK,CAAC;AACN,IAAI,uBAAuB,CAAC,cAAc,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACjG,IAAI,+BAA+B,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AAChG,GAAG,CAAC;AACJ,EAAE,MAAM,4BAA4B,GAAG,CAAC,KAAK,KAAK;AAClD,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACnB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AAC7D,IAAI,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AACtD,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACjC,IAAI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACrF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACrF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACjF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAClF,IAAI,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AACjG,IAAI,4BAA4B,GAAG,KAAK,CAAC,CAAC;AAC1C,IAAI,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACjC,IAAI,kBAAkB,GAAG,IAAI,CAAC;AAC9B,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,mBAAmB,GAAG,MAAM;AAChC,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/C,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,EAAE;AAC3D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS,MAAM;AACf,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AACjC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,EAAE;AAC3D,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS,MAAM;AACf,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,IAAI,8BAA8B,GAAG,CAAC,CAAC,KAAK;AAC5C,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;AAClD,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;AACnI,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC;AACjI,MAAM,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1G,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AACvC,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;AAC3C,MAAM,UAAU,CAAC,KAAK,GAAG,GAAG,GAAG,MAAM,CAAC;AACtC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,GAAG,cAAc,CAAC;AACzD,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;AACxB,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,EAAE;AAC3D,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAS,MAAM;AACf,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,aAAa,EAAE;AAC3D,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAS,MAAM;AACf,UAAU,UAAU,CAAC,CAAC,CAAC,CAAC;AACxB,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,IAAI,4BAA4B,GAAG,MAAM;AACzC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACnF,MAAM,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACpF,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AACnG,MAAM,4BAA4B,GAAG,KAAK,CAAC,CAAC;AAC5C,MAAM,8BAA8B,GAAG,KAAK,CAAC,CAAC;AAC9C,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACnC,MAAM,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;AAC5B,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AAClF,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AAClF,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAC9E,IAAI,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAC/E,IAAI,+BAA+B,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AAChG,GAAG,CAAC;AACJ,EAAE,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK;AAC5B,IAAI,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AACxE,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,MAAM,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;AACzC,IAAI,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAC3C,IAAI,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5C,IAAI,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;AAClD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;AACjC,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC5E,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;AACpC,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvC,MAAM,MAAM,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;AACzC,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,IAAI,UAAU,EAAE,CAAC;AAC9C,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;AACpE,MAAM,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;AAChE,MAAM,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACjD,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACrC,MAAM,MAAM,oBAAoB,GAAG,IAAI,UAAU,EAAE,CAAC;AACpD,MAAM,UAAU,CAAC,SAAS,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3F,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACtL,QAAQ,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACzD,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC3D,UAAU,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,EAAE,YAAY,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;AAC9F,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,UAAU,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACtE,UAAU,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AACtC,YAAY,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS;AAChD,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM;AACjC,YAAY,MAAM,EAAE,KAAK;AACzB,WAAW,CAAC,CAAC;AACb,SAAS;AACT,OAAO;AACP,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,SAAS,GAAG,CAAC,aAAa,KAAK;AACvC,IAAI,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAC3C,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAChC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,MAAM,IAAI,iBAAiB,CAAC;AAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE;AACvC,QAAQ,iBAAiB,GAAG,KAAK,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;AAC9E,OAAO;AACP,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7I,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrK,MAAM,OAAO,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAC9E,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK;AACrC,IAAI,IAAI,8BAA8B,KAAK,KAAK,CAAC,IAAI,kBAAkB,KAAK,KAAK,CAAC,IAAI,mBAAmB,KAAK,KAAK,CAAC,EAAE;AACtH,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK;AACvB,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,IAAI,uBAAuB,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACrE,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,IAAI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACrF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACrF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AACjF,IAAI,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAC;AAClF,IAAI,8BAA8B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,8BAA8B,EAAE,CAAC;AACvF,IAAI,+BAA+B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,+BAA+B,EAAE,CAAC;AACzF,IAAI,+BAA+B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,+BAA+B,EAAE,CAAC;AACzF,IAAI,uBAAuB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,uBAAuB,CAAC,OAAO,EAAE,CAAC;AACjF,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,qBAAqB;AACzB,IAAI,sBAAsB;AAC1B,IAAI,4BAA4B;AAChC,IAAI,IAAI;AACR,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AACrB,IAAI,iBAAiB;AACrB,IAAI,mBAAmB;AACvB,GAAG,CAAC;AACJ;;;;"}