@galacean/engine-xr 1.6.2 → 1.6.4
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/browser.js +15 -2
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +15 -2
- package/dist/main.js.map +1 -1
- package/dist/module.js +15 -2
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/input/XRTrackedInputDevice.ts","../src/session/XRSessionState.ts","../src/feature/camera/XRCameraManager.ts","../src/XRPose.ts","../src/input/XRTrackingState.ts","../src/input/XRInput.ts","../src/input/XRCamera.ts","../src/input/XRInputButton.ts","../src/input/XRController.ts","../src/input/XRInputEventType.ts","../src/input/XRTargetRayMode.ts","../src/input/XRInputManager.ts","../src/session/XRSessionMode.ts","../src/session/XRSessionManager.ts","../src/XRManagerExtended.ts","../src/feature/XRFeature.ts","../src/feature/XRFeatureType.ts","../src/feature/trackable/XRRequestTrackingState.ts","../src/feature/trackable/XRTrackableFeature.ts","../src/feature/trackable/XRTracked.ts","../src/feature/hitTest/TrackableType.ts","../src/feature/hitTest/XRHitResult.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/feature/trackable/plane/XRPlaneMode.ts","../src/feature/trackable/XRRequestTracking.ts","../src/feature/trackable/plane/XRRequestPlane.ts","../src/feature/trackable/plane/XRTrackedPlane.ts","../src/feature/trackable/plane/XRPlaneTracking.ts","../src/feature/hitTest/XRHitTest.ts","../src/feature/trackable/anchor/XRAnchor.ts","../src/feature/trackable/anchor/XRRequestAnchor.ts","../src/feature/trackable/anchor/XRAnchorTracking.ts","../src/feature/trackable/image/XRRequestImage.ts","../src/feature/trackable/image/XRTrackedImage.ts","../src/feature/trackable/image/XRImageTracking.ts","../src/feature/trackable/image/XRReferenceImage.ts","../src/loader/XRReferenceImageDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/loader/XRReferenceImageLoader.ts"],"sourcesContent":["function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","/**\n * Enumerates some input devices that can be tracked.(including status, posture and other information)\n */\nexport enum XRTrackedInputDevice {\n /** Controller */\n Controller,\n /** Left controller */\n LeftController,\n /** Right controller */\n RightController,\n /** Camera */\n Camera,\n /** Left camera */\n LeftCamera,\n /** Right camera */\n RightCamera,\n /** Head */\n LeftHand,\n /** Right hand */\n RightHand\n}\n","/**\n * The state of an XRSession.\n */\nexport enum XRSessionState {\n /** Not initialized. */\n None,\n /** Initializing session. */\n Initializing,\n /** Initialized but not started. */\n Initialized,\n /** Running. */\n Running,\n /** Paused. */\n Paused\n}\n","import { Camera, CameraClearFlags, CameraType, Matrix } from \"@galacean/engine\";\nimport { XRManagerExtended } from \"../../XRManagerExtended\";\nimport { XRCamera } from \"../../input/XRCamera\";\nimport { XRTrackedInputDevice } from \"../../input/XRTrackedInputDevice\";\nimport { XRSessionState } from \"../../session/XRSessionState\";\n\n/**\n * The manager of XR camera.\n */\nexport class XRCameraManager {\n /**\n * The fixed foveation of the camera.\n */\n get fixedFoveation(): number {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n if (platformSession) {\n return platformSession.getFixedFoveation();\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n\n set fixedFoveation(value: number) {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n if (platformSession) {\n platformSession.setFixedFoveation(value);\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n\n /**\n * @internal\n */\n constructor(private _xrManager: XRManagerExtended) {}\n\n /**\n * Attach the camera to the specified input type(Camera, LeftCamera or RightCamera).\n * The camera entity need to be moved to the XROrigin entity.\n * @param type - The input type\n * @param camera - The camera to be attached\n */\n attachCamera(\n type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera,\n camera: Camera\n ): void {\n const xrCamera = this._xrManager.inputManager.getTrackedDevice<XRCamera>(type);\n const preCamera = xrCamera._camera;\n if (preCamera !== camera) {\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n switch (type) {\n case XRTrackedInputDevice.Camera:\n // @ts-ignore\n camera._cameraType = CameraType.XRCenterCamera;\n break;\n case XRTrackedInputDevice.LeftCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRLeftCamera;\n break;\n case XRTrackedInputDevice.RightCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRRightCamera;\n break;\n default:\n break;\n }\n xrCamera._camera = camera;\n }\n }\n\n /**\n * Detach the camera from the specified input type.\n * @param type - The input type\n * @returns The camera that was detached\n */\n detachCamera(\n type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera\n ): Camera {\n const xrCamera = this._xrManager.inputManager.getTrackedDevice<XRCamera>(type);\n const preCamera = xrCamera._camera;\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n xrCamera._camera = null;\n return preCamera;\n }\n\n /**\n * @internal\n */\n _onSessionStart(): void {}\n\n /**\n * @internal\n */\n _onUpdate(): void {\n const { _cameras: cameras } = this._xrManager.inputManager;\n for (let i = 0, n = cameras.length; i < n; i++) {\n const cameraDevice = cameras[i];\n const { _camera: camera } = cameraDevice;\n if (!camera) continue;\n // sync position and rotation\n const { transform } = camera.entity;\n const { pose } = cameraDevice;\n transform.position = pose.position;\n transform.rotationQuaternion = pose.rotation;\n // sync viewport\n const { viewport } = camera;\n const { x, y, width, height } = cameraDevice.viewport;\n if (!(x === viewport.x && y === viewport.y && width === viewport.z && height === viewport.w)) {\n camera.viewport = viewport.set(x, y, width, height);\n }\n // sync project matrix\n if (!Matrix.equals(camera.projectionMatrix, cameraDevice.projectionMatrix)) {\n camera.projectionMatrix = cameraDevice.projectionMatrix;\n }\n }\n }\n\n /**\n * @internal\n */\n _onSessionExit(): void {}\n\n /**\n * @internal\n */\n _getIgnoreClearFlags(cameraType: CameraType): CameraClearFlags {\n if (cameraType === CameraType.XRCenterCamera) {\n if (this._xrManager.sessionManager.state === XRSessionState.Running) {\n return CameraClearFlags.Color;\n } else {\n return CameraClearFlags.None;\n }\n } else {\n return CameraClearFlags.None;\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {}\n}\n","import { Matrix, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { IXRPose } from \"@galacean/engine-design\";\n\n/**\n * Data for describing pose in the XR space.\n */\nexport class XRPose implements IXRPose {\n /** The position of the pose in XR space. */\n position: Vector3 = new Vector3();\n /** The rotation of the pose in XR space. */\n rotation: Quaternion = new Quaternion();\n /** The matrix of the pose in XR space. */\n matrix: Matrix = new Matrix();\n /** The inverse matrix of the pose in XR space. */\n inverseMatrix: Matrix = new Matrix();\n}\n","/**\n * Enum for XR tracking state.\n */\nexport enum XRTrackingState {\n /** Not tracking */\n NotTracking,\n /** Tracking */\n Tracking,\n /** Lost track */\n TrackingLost\n}\n","import { IXRInput } from \"@galacean/engine-design\";\nimport { XRTrackedInputDevice } from \"./XRTrackedInputDevice\";\nimport { XRTrackingState } from \"./XRTrackingState\";\n\nexport class XRInput implements IXRInput {\n /** The tracking state of xr input. */\n trackingState: XRTrackingState = XRTrackingState.NotTracking;\n\n /**\n * @internal\n */\n constructor(public type: XRTrackedInputDevice) {}\n}\n","import { IXRCamera } from \"@galacean/engine-design\";\nimport { Matrix, Rect, Camera } from \"@galacean/engine\";\nimport { XRPose } from \"../XRPose\";\nimport { XRInput } from \"./XRInput\";\n\n/**\n * The XR camera.\n */\nexport class XRCamera extends XRInput implements IXRCamera {\n /** The pose of the camera in XR space. */\n pose: XRPose = new XRPose();\n /** The viewport of the camera. */\n viewport: Rect = new Rect();\n /** The projection matrix of the camera. */\n projectionMatrix: Matrix = new Matrix();\n\n /** @internal */\n _camera: Camera;\n}\n","/**\n * Enum for XR input button.\n */\nexport enum XRInputButton {\n /** None */\n None = 0x0,\n /** Select */\n Select = 0x1,\n /** Select */\n Trigger = 0x1,\n /** Squeeze */\n Squeeze = 0x2,\n /** TouchPad */\n TouchPad = 0x4,\n /** A */\n AButton = 0x8,\n /** B */\n BButton = 0x10\n}\n","import { IXRController } from \"@galacean/engine-design\";\nimport { XRPose } from \"../XRPose\";\nimport { XRInput } from \"./XRInput\";\nimport { XRInputButton } from \"./XRInputButton\";\n\n/**\n * The XR controller.\n */\nexport class XRController extends XRInput implements IXRController {\n /** The grip space pose of the controller in XR space. */\n gripPose: XRPose = new XRPose();\n /** The target ray space pose of the controller in XR space. */\n targetRayPose: XRPose = new XRPose();\n /** The currently pressed buttons of this controller. */\n pressedButtons: XRInputButton = XRInputButton.None;\n /** Record button lifted. */\n down: XRInputButton = XRInputButton.None;\n /** Record button pressed. */\n up: XRInputButton = XRInputButton.None;\n\n /**\n *\n * Returns whether the button is pressed.\n * @param button - The button to check\n * @returns Whether the button is pressed\n */\n isButtonDown(button: XRInputButton): boolean {\n return (this.down & button) !== 0;\n }\n\n /**\n * Returns whether the button is lifted.\n * @param button - The button to check\n * @returns Whether the button is lifted\n */\n isButtonUp(button: XRInputButton): boolean {\n return (this.up & button) !== 0;\n }\n\n /**\n * Returns whether the button is held down.\n * @param button - The button to check\n * @returns Whether the button is held down\n */\n isButtonHeldDown(button: XRInputButton): boolean {\n return (this.pressedButtons & button) !== 0;\n }\n}\n","export enum XRInputEventType {\n SelectStart,\n Select,\n SelectEnd,\n SqueezeStart,\n Squeeze,\n SqueezeEnd\n}\n","export enum XRTargetRayMode {\n Gaze,\n TrackedPointer,\n Screen\n}\n","import { Engine, SafeLoopArray } from \"@galacean/engine\";\nimport { IXRInputEvent } from \"@galacean/engine-design\";\nimport { IXRListener, XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRCamera } from \"./XRCamera\";\nimport { XRController } from \"./XRController\";\nimport { XRInput } from \"./XRInput\";\nimport { XRInputButton } from \"./XRInputButton\";\nimport { XRInputEventType } from \"./XRInputEventType\";\nimport { XRTargetRayMode } from \"./XRTargetRayMode\";\nimport { XRTrackedInputDevice } from \"./XRTrackedInputDevice\";\nimport { XRTrackingState } from \"./XRTrackingState\";\n\n/**\n * The manager of XR input.\n */\nexport class XRInputManager {\n /** @internal */\n _cameras: XRCamera[] = [];\n /** @internal */\n _controllers: XRController[] = [];\n\n private _added: XRInput[] = [];\n private _removed: XRInput[] = [];\n private _trackedDevices: XRInput[] = [];\n private _statusSnapshot: XRTrackingState[] = [];\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * @internal\n */\n constructor(\n private _xrManager: XRManagerExtended,\n private _engine: Engine\n ) {\n const { _trackedDevices: trackedDevices, _controllers: controllers, _cameras: cameras } = this;\n for (let i = 0; i < 6; i++) {\n switch (i) {\n case XRTrackedInputDevice.Camera:\n case XRTrackedInputDevice.LeftCamera:\n case XRTrackedInputDevice.RightCamera:\n cameras.push((trackedDevices[i] = new XRCamera(i)));\n break;\n case XRTrackedInputDevice.Controller:\n case XRTrackedInputDevice.LeftController:\n case XRTrackedInputDevice.RightController:\n controllers.push((trackedDevices[i] = new XRController(i)));\n break;\n default:\n break;\n }\n }\n this._statusSnapshot.fill(XRTrackingState.NotTracking, 0, trackedDevices.length);\n }\n\n /**\n * Returns the tracked device instance.\n * @param type - The tracked input device type\n * @returns The input instance\n */\n getTrackedDevice<T extends XRInput>(type: XRTrackedInputDevice): T {\n return <T>this._trackedDevices[type];\n }\n\n /**\n * Add a listener for tracked device changes.\n * @param listener - The listener to add\n */\n addTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listener of tracked device changes.\n * @param listener - The listener to remove\n */\n removeTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n /**\n * @internal\n */\n _onUpdate(): void {\n const { _added: added, _removed: removed, _statusSnapshot: statusSnapshot } = this;\n const { _trackedDevices: trackedDevices, _controllers: controllers } = this;\n // Reset data\n added.length = removed.length = 0;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const controller = controllers[i];\n controller.down = controller.up = 0;\n }\n // Handle events and update tracked devices\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n const { events: platformEvents } = platformSession;\n for (let i = 0, n = platformEvents.length; i < n; i++) {\n this._handleEvent(platformEvents[i]);\n }\n platformSession.resetEvents();\n platformSession.frame.updateInputs(trackedDevices);\n for (let i = 0, n = trackedDevices.length; i < n; i++) {\n const input = trackedDevices[i];\n if (!input) continue;\n const nowState = input.trackingState;\n if (statusSnapshot[i] === XRTrackingState.Tracking) {\n if (nowState !== XRTrackingState.Tracking) {\n removed.push(input);\n }\n } else {\n if (nowState === XRTrackingState.Tracking) {\n added.push(input);\n }\n }\n statusSnapshot[i] = nowState;\n }\n // Dispatch change event\n if (added.length > 0 || removed.length > 0) {\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(added, removed);\n }\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n }\n\n private _handleEvent(event: IXRInputEvent): void {\n const input = <XRController>this._trackedDevices[event.input];\n switch (event.targetRayMode) {\n case XRTargetRayMode.TrackedPointer:\n switch (event.type) {\n case XRInputEventType.SelectStart:\n input.down |= XRInputButton.Select;\n input.pressedButtons |= XRInputButton.Select;\n break;\n case XRInputEventType.SelectEnd:\n input.up |= XRInputButton.Select;\n input.pressedButtons &= ~XRInputButton.Select;\n break;\n case XRInputEventType.SqueezeStart:\n input.down |= XRInputButton.Squeeze;\n input.pressedButtons |= XRInputButton.Squeeze;\n break;\n case XRInputEventType.SqueezeEnd:\n input.up |= XRInputButton.Squeeze;\n input.pressedButtons &= ~XRInputButton.Squeeze;\n break;\n default:\n break;\n }\n break;\n case XRTargetRayMode.Screen:\n const { _engine: engine } = this;\n // @ts-ignore\n const target: EventTarget = engine.inputManager._pointerManager._target;\n // @ts-ignore\n const canvas = <HTMLCanvasElement>engine.canvas._webCanvas;\n const { clientWidth, clientHeight } = canvas;\n const clientX = clientWidth * (event.x + 1) * 0.5;\n const clientY = clientHeight * (event.y + 1) * 0.5;\n // @ts-ignore\n switch (event.type) {\n case XRInputEventType.SelectStart:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerdown\", event.id, clientX, clientY));\n break;\n case XRInputEventType.Select:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointermove\", event.id, clientX, clientY));\n break;\n case XRInputEventType.SelectEnd:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerup\", event.id, clientX, clientY));\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerleave\", event.id, clientX, clientY));\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n }\n\n private _makeUpPointerEvent(type: string, pointerId: number, clientX: number, clientY: number): PointerEvent {\n const eventInitDict: PointerEventInit = {\n pointerId,\n clientX,\n clientY\n };\n switch (type) {\n case \"pointerdown\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 1;\n break;\n case \"pointermove\":\n eventInitDict.button = -1;\n eventInitDict.buttons = 1;\n break;\n case \"pointerup\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n case \"pointerleave\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n default:\n break;\n }\n return new PointerEvent(type, eventInitDict);\n }\n}\n","/**\n * The type of XR session.\n */\nexport enum XRSessionMode {\n None,\n AR,\n VR\n}\n","import { Engine, SafeLoopArray } from \"@galacean/engine\";\nimport { IHardwareRenderer, IXRSession } from \"@galacean/engine-design\";\nimport { IXRListener, XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRFeature } from \"../feature/XRFeature\";\nimport { XRSessionMode } from \"./XRSessionMode\";\nimport { XRSessionState } from \"./XRSessionState\";\n\n/**\n * XRSessionManager manages the life cycle of XR sessions.\n */\nexport class XRSessionManager {\n /** @internal */\n _platformSession: IXRSession;\n\n private _mode: XRSessionMode = XRSessionMode.None;\n private _state: XRSessionState = XRSessionState.None;\n private _rhi: IHardwareRenderer;\n private _raf: (callback: FrameRequestCallback) => number;\n private _caf: (id: number) => void;\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * The current session mode( AR or VR ).\n */\n get mode(): XRSessionMode {\n return this._mode;\n }\n\n /**\n * Return the current session state.\n */\n get state(): XRSessionState {\n return this._state;\n }\n\n /**\n * Return a list of supported frame rates.(only available in-session)\n */\n get supportedFrameRate(): Float32Array {\n return this._platformSession.supportedFrameRates;\n }\n\n /**\n * Return the current frame rate as reported by the device.\n */\n get frameRate(): number {\n return this._platformSession.frameRate;\n }\n\n /**\n * @internal\n */\n constructor(\n private _xrManager: XRManagerExtended,\n private _engine: Engine\n ) {\n // @ts-ignore\n this._rhi = _engine._hardwareRenderer;\n this._raf = requestAnimationFrame.bind(window);\n this._caf = cancelAnimationFrame.bind(window);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n\n /**\n * Check if the specified mode is supported.\n * @param mode - The mode to check\n * @returns A promise that resolves if the mode is supported, otherwise rejects\n */\n isSupportedMode(mode: XRSessionMode): Promise<void> {\n return this._xrManager._platformDevice.isSupportedSessionMode(mode);\n }\n\n /**\n * Run the session.\n */\n run(): void {\n const { _platformSession: platformSession, _engine: engine } = this;\n if (!platformSession) {\n throw new Error(\"Without session to run.\");\n }\n platformSession.start();\n this._setState(XRSessionState.Running);\n this._xrManager._onSessionStart();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * Stop the session.\n */\n stop(): void {\n const { _platformSession: platformSession, _engine: engine, _rhi: rhi } = this;\n if (!platformSession) {\n throw new Error(\"Without session to stop.\");\n }\n if (this._state !== XRSessionState.Running) {\n throw new Error(\"Session is not running.\");\n }\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.stop();\n this._setState(XRSessionState.Paused);\n this._xrManager._onSessionStop();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * Add a listening function for session state changes.\n * @param listener - The listening function\n */\n addStateChangedListener(listener: (state: XRSessionState) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listening function of session state changes.\n * @param listener - The listening function\n */\n removeStateChangedListener(listener: (state: XRSessionState) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n /**\n * @internal\n */\n _setState(value: XRSessionState) {\n this._state = value;\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(value);\n }\n }\n\n /**\n * @internal\n */\n _initialize(mode: XRSessionMode, features: XRFeature[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const { _xrManager: xrManager } = this;\n // Initialize all features\n const platformFeatures = [];\n for (let i = 0, n = features.length; i < n; i++) {\n const { _platformFeature: platformFeature } = features[i];\n platformFeature && platformFeatures.push(platformFeature);\n }\n xrManager._platformDevice\n .requestSession(this._rhi, mode, platformFeatures)\n .then((platformSession: IXRSession) => {\n this._mode = mode;\n this._platformSession = platformSession;\n this._setState(XRSessionState.Initialized);\n platformSession.setSessionExitCallBack(this._onSessionExit);\n platformSession.addEventListener();\n xrManager._onSessionInit();\n resolve();\n }, reject);\n });\n }\n\n /**\n * @internal\n */\n _onUpdate() {\n const { _rhi: rhi, _platformSession: platformSession } = this;\n rhi._mainFrameBuffer = platformSession.framebuffer;\n rhi._mainFrameWidth = platformSession.framebufferWidth;\n rhi._mainFrameHeight = platformSession.framebufferHeight;\n }\n\n /**\n * @internal\n */\n _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.requestAnimationFrame;\n } else {\n return this._raf;\n }\n }\n\n /**\n * @internal\n */\n _getCancelAnimationFrame(): (id: number) => void {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.cancelAnimationFrame;\n } else {\n return this._caf;\n }\n }\n\n /**\n * @internal\n */\n _exit(): Promise<void> {\n const { _platformSession: platformSession } = this;\n if (!platformSession) {\n return Promise.reject(\"Without session to stop.\");\n }\n return platformSession.end();\n }\n\n private _onSessionExit() {\n const { _rhi: rhi, _platformSession: platformSession, _engine: engine } = this;\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.removeEventListener();\n this._platformSession = null;\n this._setState(XRSessionState.None);\n this._xrManager._onSessionExit();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n this._raf = this._caf = null;\n }\n}\n","import { CameraClearFlags, CameraType, Engine, Entity, XRManager } from \"@galacean/engine\";\nimport { IXRDevice } from \"@galacean/engine-design\";\nimport { XRFeature } from \"./feature/XRFeature\";\nimport { XRFeatureType } from \"./feature/XRFeatureType\";\nimport { XRCameraManager } from \"./feature/camera/XRCameraManager\";\nimport { XRInputManager } from \"./input/XRInputManager\";\nimport { XRSessionManager } from \"./session/XRSessionManager\";\nimport { XRSessionMode } from \"./session/XRSessionMode\";\nimport { XRSessionState } from \"./session/XRSessionState\";\n/**\n * @internal\n */\nexport class XRManagerExtended extends XRManager {\n /** @internal */\n static _featureMap: Map<TFeatureConstructor<XRFeature>, XRFeatureType> = new Map();\n\n override inputManager: XRInputManager;\n override sessionManager: XRSessionManager;\n override cameraManager: XRCameraManager;\n\n /** @internal */\n _platformDevice: IXRDevice;\n\n private _features: XRFeature[];\n private _origin: Entity;\n\n override get features(): XRFeature[] {\n return this._features;\n }\n\n override get origin(): Entity {\n return this._origin;\n }\n\n override set origin(value: Entity) {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot set origin when the session is initialized.\");\n }\n this._origin = value;\n }\n\n override isSupportedFeature<T extends XRFeature>(feature: TFeatureConstructor<T>): boolean {\n return this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(feature));\n }\n\n override addFeature<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature>(\n type: T,\n ...args: TFeatureConstructorArguments<T>\n ): InstanceType<T> | null {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot add feature when the session is initialized.\");\n }\n if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {\n throw new Error(\"The feature is not supported\");\n }\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n if (features[i] instanceof type) throw new Error(\"The feature has been added\");\n }\n const feature = new type(this, ...args) as InstanceType<T>;\n features.push(feature);\n return feature;\n }\n\n override getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | null {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n if (feature instanceof type) {\n return feature;\n }\n }\n }\n\n override enterXR(sessionMode: XRSessionMode, autoRun: boolean = true): Promise<void> {\n const { sessionManager } = this;\n if (sessionManager._platformSession) {\n throw new Error(\"Please exit XR immersive mode first.\");\n }\n if (!this._origin) {\n throw new Error(\"Please set origin before enter XR.\");\n }\n return new Promise((resolve, reject) => {\n // 1. Check if this xr mode is supported\n sessionManager.isSupportedMode(sessionMode).then(() => {\n sessionManager._setState(XRSessionState.Initializing);\n // 2. Initialize session\n sessionManager._initialize(sessionMode, this.features).then(() => {\n autoRun && sessionManager.run();\n resolve();\n }, reject);\n }, reject);\n });\n }\n\n override exitXR(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.sessionManager._exit().then(() => {\n resolve();\n }, reject);\n });\n }\n\n override _initialize(engine: Engine, xrDevice: IXRDevice): void {\n this._features = [];\n this._platformDevice = xrDevice;\n this.sessionManager = new XRSessionManager(this, engine);\n this.inputManager = new XRInputManager(this, engine);\n this.cameraManager = new XRCameraManager(this);\n }\n\n override _update(): void {\n const { sessionManager } = this;\n if (sessionManager.state !== XRSessionState.Running) return;\n sessionManager._onUpdate();\n this.inputManager._onUpdate();\n this.cameraManager._onUpdate();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onUpdate();\n }\n }\n\n override _destroy(): void {\n if (this.sessionManager._platformSession) {\n this.exitXR().then(() => {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n });\n } else {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n }\n }\n\n override _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return this.sessionManager._getRequestAnimationFrame();\n }\n\n override _getCancelAnimationFrame(): (id: number) => void {\n return this.sessionManager._getCancelAnimationFrame();\n }\n\n override _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags {\n return this.cameraManager._getIgnoreClearFlags(type);\n }\n\n /**\n * @internal\n */\n _onSessionStop(): void {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionStop();\n }\n }\n\n /**\n * @internal\n */\n _onSessionInit(): void {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionInit();\n }\n }\n\n /**\n * @internal\n */\n _onSessionStart(): void {\n this.cameraManager._onSessionStart();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionStart();\n }\n }\n\n /**\n * @internal\n */\n _onSessionExit(): void {\n this.cameraManager._onSessionExit();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionExit();\n feature._onDestroy();\n }\n features.length = 0;\n }\n}\n\n/**\n * @internal\n */\nexport function registerXRFeature<T extends XRFeature>(type: XRFeatureType): (feature: TFeatureConstructor<T>) => void {\n return (feature: TFeatureConstructor<T>) => {\n XRManagerExtended._featureMap.set(feature, type);\n };\n}\n\nexport interface IXRListener {\n fn: (...args: any[]) => any;\n destroyed?: boolean;\n}\n\ntype TFeatureConstructor<T extends XRFeature> = new (xrManager: XRManagerExtended, ...args: any[]) => T;\n\ntype TFeatureConstructorArguments<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature> =\n T extends new (xrManager: XRManagerExtended, ...args: infer P) => XRFeature ? P : never;\n\ndeclare module \"@galacean/engine\" {\n interface XRManager {\n /** Input manager for XR. */\n inputManager: XRInputManager;\n /** Session manager for XR. */\n sessionManager: XRSessionManager;\n /** Camera manager for XR. */\n cameraManager: XRCameraManager;\n\n /** Initialized features. */\n get features(): XRFeature[];\n\n /**\n * The current origin of XR space.\n * @remarks The connection point between the virtual world and the real world ( XR Space )\n */\n get origin(): Entity;\n set origin(value: Entity);\n\n /**\n * Check if the specified feature is supported.\n * @param type - The type of the feature\n * @returns If the feature is supported\n */\n isSupportedFeature<T extends XRFeature>(feature: TFeatureConstructor<T>): boolean;\n\n /**\n * Add feature based on the xr feature type.\n * @param type - The type of the feature\n * @param args - The constructor params of the feature\n * @returns The feature which has been added\n */\n addFeature<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature>(\n type: T,\n ...args: TFeatureConstructorArguments<T>\n ): InstanceType<T> | null;\n\n /**\n * Get feature which match the type.\n * @param type - The type of the feature\n * @returns\tThe feature which match type\n */\n getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | null;\n /**\n * Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.\n * @param sessionMode - The mode of the session\n * @param autoRun - Whether to automatically run the session, when `autoRun` is set to true, xr will start working immediately after initialization. Otherwise, you need to call `sessionManager.run` later to work.\n * @returns A promise that resolves if the XR virtual world is entered, otherwise rejects\n */\n enterXR(sessionMode: XRSessionMode, autoRun?: boolean): Promise<void>;\n /**\n * Exit XR immersive mode, when you call this method, it will destroy the XR virtual world.\n * @returns A promise that resolves if the XR virtual world is destroyed, otherwise rejects\n */\n exitXR(): Promise<void>;\n\n /**\n * @internal\n */\n _initialize(engine: Engine, xrDevice: IXRDevice): void;\n\n /**\n * @internal\n */\n _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n\n /**\n * @internal\n */\n _getCancelAnimationFrame(): (id: number) => void;\n\n /**\n * @internal\n */\n _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags;\n\n /**\n * @internal\n */\n _update(): void;\n\n /**\n * @internal\n */\n _destroy(): void;\n }\n}\n\n// 实现混入的函数\nfunction ApplyMixins(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}\n\nApplyMixins(XRManager, [XRManagerExtended]);\n","import { IXRPlatformFeature } from \"@galacean/engine-design\";\nimport { XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRFeatureType } from \"./XRFeatureType\";\n\n/**\n * The base class of XR feature manager.\n */\nexport abstract class XRFeature<T extends IXRPlatformFeature = IXRPlatformFeature> {\n /** @internal */\n _platformFeature: T;\n protected _enabled: boolean = true;\n\n /**\n * Returns whether the feature is enabled.\n */\n get enabled(): boolean {\n return this._enabled;\n }\n\n set enabled(value: boolean) {\n if (this.enabled !== value) {\n this._enabled = value;\n value ? this._onEnable() : this._onDisable();\n }\n }\n\n /**\n * @internal\n */\n constructor(\n protected _xrManager: XRManagerExtended,\n protected _type: XRFeatureType,\n ...args: any[]\n ) {\n this._platformFeature = <T>_xrManager._platformDevice.createPlatformFeature(_type, ...args);\n this._onEnable();\n }\n\n /**\n * @internal\n */\n _onEnable(): void {}\n\n /**\n * @internal\n */\n _onDisable(): void {}\n\n /**\n * @internal\n */\n _onUpdate(): void {}\n\n /**\n * @internal\n */\n _onSessionInit(): void {}\n\n /**\n * @internal\n */\n _onSessionStart(): void {}\n\n /**\n * @internal\n */\n _onSessionStop(): void {}\n\n /**\n * @internal\n */\n _onSessionExit(): void {}\n\n /**\n * @internal\n */\n _onDestroy(): void {}\n}\n","export enum XRFeatureType {\n AnchorTracking,\n ImageTracking,\n PlaneTracking,\n HitTest\n}\n","export enum XRRequestTrackingState {\n None,\n Submitted,\n Resolved,\n Rejected,\n Destroyed,\n WaitingDestroy\n}\n","import { SafeLoopArray } from \"@galacean/engine\";\nimport { IXRTrackablePlatformFeature } from \"@galacean/engine-design\";\nimport { IXRListener } from \"../../XRManagerExtended\";\nimport { XRTrackingState } from \"../../input/XRTrackingState\";\nimport { XRFeature } from \"../XRFeature\";\nimport { XRFeatureType } from \"../XRFeatureType\";\nimport { XRRequestTracking } from \"./XRRequestTracking\";\nimport { XRRequestTrackingState } from \"./XRRequestTrackingState\";\nimport { XRTracked } from \"./XRTracked\";\n\n/**\n * The base class of XR trackable manager.\n */\nexport abstract class XRTrackableFeature<\n T extends XRTracked = XRTracked,\n K extends XRRequestTracking<T> = XRRequestTracking<T>\n> extends XRFeature<IXRTrackablePlatformFeature<T, K>> {\n protected static _uuid = 0;\n\n protected _requestTrackings: K[] = [];\n protected _tracked: T[] = [];\n protected _added: T[] = [];\n protected _updated: T[] = [];\n protected _removed: T[] = [];\n protected _statusSnapshot: Record<number, XRTrackingState> = {};\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * Add a listening function for tracked object changes.\n * @param listener - The listening function\n */\n addChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listening function of tracked object changes.\n * @param listener - The listening function\n */\n removeChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n override _onUpdate(): void {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n const { frame: platformFrame } = platformSession;\n const {\n _platformFeature: platformFeature,\n _requestTrackings: requestTrackings,\n _statusSnapshot: statusSnapshot,\n _tracked: allTracked,\n _added: added,\n _updated: updated,\n _removed: removed\n } = this;\n if (!platformFrame || !requestTrackings.length) {\n return;\n }\n if (!platformFeature.checkAvailable(platformSession, platformFrame, requestTrackings)) {\n return;\n }\n added.length = updated.length = removed.length = 0;\n platformFeature.getTrackedResult(platformSession, platformFrame, requestTrackings, this._generateTracked);\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n switch (requestTracking.state) {\n case XRRequestTrackingState.Destroyed:\n const destroyedTracked = requestTracking.tracked;\n for (let j = 0, n = destroyedTracked.length; j < n; j++) {\n const tracked = destroyedTracked[j];\n const trackId = tracked.id;\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(tracked);\n allTracked.splice(allTracked.indexOf(tracked), 1);\n }\n statusSnapshot[trackId] = XRTrackingState.NotTracking;\n }\n break;\n case XRRequestTrackingState.Resolved:\n const { tracked } = requestTracking;\n for (let j = 0, n = tracked.length; j < n; j++) {\n const trackedObject = tracked[j];\n const trackId = trackedObject.id;\n if (trackedObject.state === XRTrackingState.Tracking) {\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n updated.push(trackedObject);\n } else {\n added.push(trackedObject);\n statusSnapshot[trackId] = XRTrackingState.Tracking;\n allTracked.push(trackedObject);\n }\n } else {\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(trackedObject);\n allTracked.splice(allTracked.indexOf(trackedObject), 1);\n }\n statusSnapshot[trackId] = trackedObject.state;\n }\n }\n break;\n default:\n break;\n }\n }\n for (let i = requestTrackings.length - 1; i >= 0; i--) {\n requestTrackings[i].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i, 1);\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(added, updated, removed);\n }\n }\n }\n\n override _onSessionStop(): void {\n this._added.length = this._updated.length = this._removed.length = 0;\n }\n\n override _onSessionExit(): void {\n // prettier-ignore\n this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n }\n\n protected _addRequestTracking(requestTracking: K): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n this._requestTrackings.push(requestTracking);\n platformFeature.onAddRequestTracking(requestTracking);\n }\n\n protected _removeRequestTracking(requestTracking: K): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n platformFeature.onDelRequestTracking(requestTracking);\n }\n\n protected _removeAllRequestTrackings(): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n const { _requestTrackings: requestTrackings } = this;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n platformFeature.onDelRequestTracking(requestTrackings[i]);\n }\n }\n\n protected abstract _generateTracked(): T;\n}\n","import { IXRTracked } from \"@galacean/engine-design\";\nimport { XRPose } from \"../../XRPose\";\nimport { XRTrackingState } from \"../../input/XRTrackingState\";\n\n/**\n * The base class of XR tracked object.\n */\nexport abstract class XRTracked implements IXRTracked {\n /** The unique id of the trackable. */\n id: number;\n /** The pose of the trackable in XR space. */\n pose: XRPose = new XRPose();\n /** The tracking state of the trackable. */\n state: XRTrackingState = XRTrackingState.NotTracking;\n}\n","/**\n * Enum for the types of hit test that can be performed.\n * Note: currently only supports plane.\n */\nexport enum TrackableType {\n /** Tracked plane. */\n Plane = 0x1,\n /** All tracked objects. */\n All = 0x1\n}\n","import { IXRTracked } from \"@galacean/engine-design\";\nimport { TrackableType } from \"./TrackableType\";\nimport { Vector3 } from \"@galacean/engine\";\n\n/**\n * XR hit result.\n * It is the detection result returned by using XR HitTest feature.\n */\nexport class XRHitResult {\n /** The position of the hit point. */\n point: Vector3 = new Vector3();\n /** The normal of the hit point. */\n normal: Vector3 = new Vector3();\n /** The distance from the origin of the ray to the hit point. */\n distance: number;\n /** The hit tracked object, such as IXRTrackedPlane. */\n trackedObject: IXRTracked;\n /** The type of tracked object detected, such as TrackableType.Plane */\n trackableType: TrackableType;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Enumerates modes of plane in XR.\n */\nexport enum XRPlaneMode {\n /** None. */\n None = 0,\n /** Horizontal */\n Horizontal = 0b1,\n /** Vertical */\n Vertical = 0b10,\n /** Includes horizontal and vertical. */\n EveryThing = 0b11\n}\n","import { XRRequestTrackingState } from \"./XRRequestTrackingState\";\nimport { XRTracked } from \"./XRTracked\";\n\n/**\n * @internal\n */\nexport abstract class XRRequestTracking<T extends XRTracked> {\n /** The status of the current request tracking. */\n state: XRRequestTrackingState = XRRequestTrackingState.None;\n /** Tracked instances, make up from the tracking data returned by Session. */\n tracked: T[] = [];\n}\n","import { IXRRequestPlane } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRTrackedPlane } from \"./XRTrackedPlane\";\n\n/**\n * The request plane in XR space.\n */\nexport class XRRequestPlane extends XRRequestTracking<XRTrackedPlane> implements IXRRequestPlane {\n /**\n * @param detectionMode - The plane detection mode\n */\n constructor(public detectionMode: number) {\n super();\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { XRTracked } from \"../XRTracked\";\nimport { XRPlaneMode } from \"./XRPlaneMode\";\n\n/**\n * The tracked plane in XR space.\n */\nexport class XRTrackedPlane extends XRTracked implements IXRTrackedPlane {\n /** Whether the detected plane is horizontal or vertical. */\n planeMode: XRPlaneMode;\n /** The points that make up this plane.\n * Note: These points are in the plane coordinate system,\n * and their Y coordinates are all zero.\n */\n polygon: Vector3[] = [];\n /**\n * Whether this frame changes the attributes of the plane.\n * Note: Includes `polygon` but no `pose`.\n */\n attributesDirty: boolean = false;\n}\n","import { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRPlaneMode } from \"./XRPlaneMode\";\nimport { XRRequestPlane } from \"./XRRequestPlane\";\nimport { XRTrackedPlane } from \"./XRTrackedPlane\";\n\n/**\n * The manager of plane tracking feature.\n */\n@registerXRFeature(XRFeatureType.PlaneTracking)\nexport class XRPlaneTracking extends XRTrackableFeature<XRTrackedPlane, XRRequestPlane> {\n /**\n * The plane detection mode.\n */\n get detectionMode(): XRPlaneMode {\n return this._requestTrackings[0].detectionMode;\n }\n\n /**\n * The tracked planes.\n */\n get trackedPlanes(): readonly XRTrackedPlane[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n * @param detectionMode - The plane detection mode\n */\n constructor(xrManager: XRManagerExtended, detectionMode: XRPlaneMode = XRPlaneMode.EveryThing) {\n super(xrManager, XRFeatureType.PlaneTracking, detectionMode);\n this._addRequestTracking(new XRRequestPlane(detectionMode));\n }\n\n protected override _generateTracked(): XRTrackedPlane {\n const plane = new XRTrackedPlane();\n plane.id = XRTrackableFeature._uuid++;\n return plane;\n }\n}\n","import { Plane, Ray, Vector2, Vector3 } from \"@galacean/engine\";\nimport { IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { XRManagerExtended, registerXRFeature } from \"../../XRManagerExtended\";\nimport { XRCamera } from \"../../input/XRCamera\";\nimport { XRTrackedInputDevice } from \"../../input/XRTrackedInputDevice\";\nimport { XRSessionMode } from \"../../session/XRSessionMode\";\nimport { XRFeature } from \"../XRFeature\";\nimport { XRFeatureType } from \"../XRFeatureType\";\nimport { XRPlaneTracking } from \"../trackable/plane/XRPlaneTracking\";\nimport { TrackableType } from \"./TrackableType\";\nimport { XRHitResult } from \"./XRHitResult\";\n\n/**\n * The manager of XR hit test.\n */\n@registerXRFeature(XRFeatureType.HitTest)\nexport class XRHitTest extends XRFeature {\n private _tempRay: Ray = new Ray();\n private _tempPlane: Plane = new Plane();\n private _tempVec2: Vector2 = new Vector2();\n private _tempVec30: Vector3 = new Vector3();\n private _tempVec31: Vector3 = new Vector3();\n private _tempVec32: Vector3 = new Vector3();\n private _tempVec33: Vector3 = new Vector3();\n private _tempVec34: Vector3 = new Vector3();\n private _tempVec35: Vector3 = new Vector3();\n\n /**\n * @param xrManager - The xr manager\n */\n constructor(xrManager: XRManagerExtended) {\n super(xrManager, XRFeatureType.HitTest);\n }\n\n /**\n * Hit test.\n * @param ray - The ray to test\n * @param type - The type of hit test\n * @returns The hit result\n */\n hitTest(ray: Ray, type: TrackableType): XRHitResult[] {\n const result = [];\n if (type & TrackableType.Plane) {\n this._hitTestPlane(ray, result);\n }\n return result;\n }\n\n /**\n * Screen hit test.\n * @param x - The x coordinate of the screen point\n * @param y - The y coordinate of the screen point\n * @param type - The type of hit test\n * @returns The hit result\n */\n screenHitTest(x: number, y: number, type: TrackableType): XRHitResult[] {\n const { _xrManager: xrManager } = this;\n if (xrManager.sessionManager.mode !== XRSessionMode.AR) {\n throw new Error(\"Only AR mode supports using screen ray hit test.\");\n }\n const { _camera: camera } = xrManager.inputManager.getTrackedDevice<XRCamera>(XRTrackedInputDevice.Camera);\n if (!camera) {\n throw new Error(\"No camera available.\");\n }\n const ray = camera.screenPointToRay(this._tempVec2.set(x, y), this._tempRay);\n return this.hitTest(ray, type);\n }\n\n private _hitTestPlane(ray: Ray, result: XRHitResult[]): void {\n const planeManager = this._xrManager.getFeature(XRPlaneTracking);\n if (!planeManager || !planeManager.enabled) {\n throw new Error(\"The plane estimation function needs to be turned on for plane hit test.\");\n }\n const { _tempPlane: plane, _tempVec30: normal, _tempVec31: hitPoint, _tempVec32: hitPointInPlane } = this;\n const { trackedPlanes } = planeManager;\n for (let i = 0, n = trackedPlanes.length; i < n; i++) {\n const trackedPlane = trackedPlanes[i];\n normal.set(0, 1, 0).transformNormal(trackedPlane.pose.matrix);\n plane.normal.copyFrom(normal);\n plane.distance = -Vector3.dot(normal, trackedPlane.pose.position);\n const distance = ray.intersectPlane(plane);\n if (distance >= 0) {\n ray.getPoint(distance, hitPoint);\n Vector3.transformToVec3(hitPoint, trackedPlane.pose.inverseMatrix, hitPointInPlane);\n // Check if the hit position is within the plane boundary.\n if (this._checkPointerWithinPlane(hitPointInPlane, trackedPlane)) {\n const hitResult = new XRHitResult();\n hitResult.point.copyFrom(hitPoint);\n hitResult.normal.copyFrom(normal);\n hitResult.distance = distance;\n hitResult.trackedObject = trackedPlane;\n hitResult.trackableType = TrackableType.Plane;\n result.push(hitResult);\n }\n }\n }\n }\n\n private _checkPointerWithinPlane(pointer: Vector3, plane: IXRTrackedPlane): boolean {\n const { _tempVec33: preToCur, _tempVec34: preToPointer, _tempVec35: cross } = this;\n const { polygon } = plane;\n const length = polygon.length;\n let prePoint = polygon[length - 1];\n let side = 0;\n for (let i = 0; i < length; i++) {\n const curPoint = polygon[i];\n Vector3.subtract(curPoint, prePoint, preToCur);\n Vector3.subtract(pointer, prePoint, preToPointer);\n Vector3.cross(preToCur, preToPointer, cross);\n const y = cross.y;\n if (side === 0) {\n if (y > 0) {\n side = 1;\n } else if (y < 0) {\n side = -1;\n }\n } else {\n if ((y > 0 && side < 0) || (y < 0 && side > 0)) {\n return false;\n }\n }\n prePoint = curPoint;\n }\n return true;\n }\n}\n","import { XRTracked } from \"../XRTracked\";\n\n/**\n * The anchor in XR space.\n */\nexport class XRAnchor extends XRTracked {}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { IXRRequestAnchor } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRAnchor } from \"./XRAnchor\";\n\n/**\n * The request anchor in XR space.\n */\nexport class XRRequestAnchor extends XRRequestTracking<XRAnchor> implements IXRRequestAnchor {\n /**\n * @param position - Requests the position of the anchor to be added\n * @param rotation - Requests the rotation of the anchor to be added\n */\n constructor(\n public position: Vector3,\n public rotation: Quaternion\n ) {\n super();\n }\n}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRAnchor } from \"./XRAnchor\";\nimport { XRRequestAnchor } from \"./XRRequestAnchor\";\n\n/**\n * The manager of XR anchor tracking.\n */\n@registerXRFeature(XRFeatureType.AnchorTracking)\nexport class XRAnchorTracking extends XRTrackableFeature<XRAnchor, XRRequestAnchor> {\n private _anchors: XRAnchor[] = [];\n\n /**\n * The anchors to tracking.\n */\n get trackingAnchors(): readonly XRAnchor[] {\n return this._anchors;\n }\n\n /**\n * The tracked anchors.\n */\n get trackedAnchors(): readonly XRAnchor[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n */\n constructor(xrManager: XRManagerExtended) {\n super(xrManager, XRFeatureType.AnchorTracking);\n }\n\n /**\n * Add a anchor in XR space.\n * @param anchor - The anchor to be added\n */\n addAnchor(position: Vector3, rotation: Quaternion): XRAnchor {\n if (!this._enabled) {\n throw new Error(\"Cannot add an anchor from a disabled anchor manager.\");\n }\n const { _anchors: anchors } = this;\n const requestAnchor = new XRRequestAnchor(position, rotation);\n const xrAnchor = this._generateTracked();\n requestAnchor.tracked[0] = xrAnchor;\n this._addRequestTracking(requestAnchor);\n anchors.push(xrAnchor);\n return xrAnchor;\n }\n\n /**\n * Remove a anchor in XR space.\n * @param anchor - The anchor to be removed\n */\n removeAnchor(anchor: XRAnchor): void {\n if (!this._enabled) {\n throw new Error(\"Cannot remove an anchor from a disabled anchor manager.\");\n }\n const { _requestTrackings: requestTrackings, _anchors: anchors } = this;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestAnchor = requestTrackings[i];\n if (requestAnchor.tracked[0] === anchor) {\n this._removeRequestTracking(requestAnchor);\n break;\n }\n }\n anchors.splice(anchors.indexOf(anchor), 1);\n }\n\n /**\n * Remove all tracking anchors.\n */\n clearAnchors(): void {\n if (!this._enabled) {\n throw new Error(\"Cannot remove anchors from a disabled anchor manager.\");\n }\n this._removeAllRequestTrackings();\n }\n\n protected override _generateTracked(): XRAnchor {\n const anchor = new XRAnchor();\n anchor.id = XRTrackableFeature._uuid++;\n return anchor;\n }\n}\n","import { IXRRequestImage } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\nimport { XRTrackedImage } from \"./XRTrackedImage\";\n\n/**\n * The request image in XR space.\n */\nexport class XRRequestImage extends XRRequestTracking<XRTrackedImage> implements IXRRequestImage {\n /**\n * @param image - The image to be tracked\n */\n constructor(public image: XRReferenceImage) {\n super();\n }\n}\n","import { IXRTrackedImage } from \"@galacean/engine-design\";\nimport { XRTracked } from \"../XRTracked\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\n\n/**\n * A tracked image in XR space.\n */\nexport class XRTrackedImage extends XRTracked implements IXRTrackedImage {\n /** The reference image which was used to detect this image in the environment. */\n referenceImage: XRReferenceImage;\n /** The width of the image in meters in the physical world. */\n measuredPhysicalWidth: number;\n}\n","import { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\nimport { XRRequestImage } from \"./XRRequestImage\";\nimport { XRTrackedImage } from \"./XRTrackedImage\";\n\n/**\n * The manager of XR image tracking.\n */\n@registerXRFeature(XRFeatureType.ImageTracking)\nexport class XRImageTracking extends XRTrackableFeature<XRTrackedImage, XRRequestImage> {\n private _trackingImages: XRReferenceImage[];\n /**\n * The image to tracking.\n */\n get trackingImages(): readonly XRReferenceImage[] {\n return this._trackingImages;\n }\n\n /**\n * The tracked images.\n */\n get trackedImages(): readonly XRTrackedImage[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n * @param trackingImages - The images to be tracked\n */\n constructor(xrManager: XRManagerExtended, trackingImages: XRReferenceImage[]) {\n super(xrManager, XRFeatureType.ImageTracking, trackingImages);\n this._trackingImages = trackingImages;\n const imageLength = trackingImages ? trackingImages.length : 0;\n if (imageLength > 0) {\n for (let i = 0, n = trackingImages.length; i < n; i++) {\n this._addRequestTracking(new XRRequestImage(trackingImages[i]));\n }\n } else {\n console.warn(\"No image to be tracked.\");\n }\n }\n\n protected override _generateTracked(): XRTrackedImage {\n const image = new XRTrackedImage();\n image.id = XRTrackableFeature._uuid++;\n return image;\n }\n}\n","import { IXRReferenceImage } from \"@galacean/engine-design\";\n\n/**\n * A reference image is an image to look for in the physical environment.\n */\nexport class XRReferenceImage implements IXRReferenceImage {\n /**\n * Create a reference image.\n * @param name - The name of the image to be tracked\n * @param imageSource - The image to be tracked\n * @param physicalWidth - The expected physical width measurement for the real-world image being tracked in meters\n */\n constructor(\n public name: string,\n public imageSource: ImageBitmapSource,\n public physicalWidth: number\n ) {}\n}\n","import { AssetPromise, BufferReader, Engine, decoder } from \"@galacean/engine\";\nimport { XRReferenceImage } from \"../feature/trackable/image/XRReferenceImage\";\n\n@decoder(\"XRReferenceImage\")\nexport class XRReferenceImageDecoder {\n static decode(engine: Engine, bufferReader: BufferReader): AssetPromise<XRReferenceImage> {\n return new AssetPromise((resolve, reject) => {\n const physicalWidth = bufferReader.nextFloat32();\n bufferReader.nextUint8();\n const img = new Image();\n img.onload = () => {\n resolve(new XRReferenceImage(\"\", img, physicalWidth));\n };\n img.src = URL.createObjectURL(new window.Blob([bufferReader.nextImagesData(1)[0]]));\n });\n }\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { AssetPromise, decode, Loader, LoadItem, resourceLoader, ResourceManager } from \"@galacean/engine\";\nimport { XRReferenceImage } from \"../feature/trackable/image/XRReferenceImage\";\n\n@resourceLoader(\"XRReferenceImage\", [])\nexport class XRReferenceImageLoader extends Loader<XRReferenceImage> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<XRReferenceImage> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(item.url, { ...item, type: \"arraybuffer\" })\n .then((data) => {\n decode<XRReferenceImage>(data, resourceManager.engine).then((referenceImage) => {\n resolve(referenceImage);\n });\n })\n .catch(reject);\n });\n }\n}\n"],"names":["XRTrackedInputDevice","XRSessionState","XRCameraManager","_xrManager","attachCamera","type","camera","xrCamera","inputManager","getTrackedDevice","preCamera","_camera","_cameraType","CameraType","Normal","Camera","XRCenterCamera","LeftCamera","XRLeftCamera","RightCamera","XRRightCamera","detachCamera","_onSessionStart","_onUpdate","_cameras","cameras","i","n","length","cameraDevice","transform","entity","pose","position","rotationQuaternion","rotation","viewport","x","y","width","height","z","w","set","Matrix","equals","projectionMatrix","_onSessionExit","_getIgnoreClearFlags","cameraType","sessionManager","state","Running","CameraClearFlags","Color","None","_onDestroy","fixedFoveation","_platformSession","platformSession","getFixedFoveation","Error","value","setFixedFoveation","XRPose","Vector3","Quaternion","matrix","inverseMatrix","XRTrackingState","XRInput","trackingState","NotTracking","XRCamera","Rect","XRInputButton","XRController","gripPose","targetRayPose","pressedButtons","down","up","isButtonDown","button","isButtonUp","isButtonHeldDown","XRInputEventType","XRTargetRayMode","XRInputManager","_engine","_controllers","_added","_removed","_trackedDevices","_statusSnapshot","_listeners","SafeLoopArray","trackedDevices","controllers","push","Controller","LeftController","RightController","fill","addTrackedDeviceChangedListener","listener","fn","removeTrackedDeviceChangedListener","findAndRemove","destroyed","added","removed","statusSnapshot","controller","platformEvents","events","_handleEvent","resetEvents","frame","updateInputs","input","nowState","Tracking","listeners","getLoopArray","event","targetRayMode","TrackedPointer","SelectStart","Select","SelectEnd","SqueezeStart","Squeeze","SqueezeEnd","Screen","engine","target","_pointerManager","_target","canvas","_webCanvas","clientWidth","clientHeight","clientX","clientY","dispatchEvent","_makeUpPointerEvent","id","pointerId","eventInitDict","buttons","PointerEvent","XRSessionMode","XRSessionManager","_mode","_state","_rhi","_hardwareRenderer","_raf","requestAnimationFrame","bind","window","_caf","cancelAnimationFrame","isSupportedMode","mode","_platformDevice","isSupportedSessionMode","run","start","_setState","isPaused","pause","resume","stop","rhi","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","Paused","_onSessionStop","addStateChangedListener","removeStateChangedListener","_initialize","features","Promise","resolve","reject","platformFeatures","platformFeature","_platformFeature","xrManager","requestSession","then","Initialized","setSessionExitCallBack","addEventListener","_onSessionInit","framebuffer","framebufferWidth","framebufferHeight","_getRequestAnimationFrame","_getCancelAnimationFrame","_exit","end","removeEventListener","supportedFrameRate","supportedFrameRates","frameRate","XRManagerExtended","isSupportedFeature","feature","_featureMap","get","addFeature","args","getFeature","enterXR","sessionMode","autoRun","_origin","Initializing","exitXR","xrDevice","_features","cameraManager","_update","enabled","_destroy","_getCameraIgnoreClearFlags","origin","XRManager","Map","registerXRFeature","ApplyMixins","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","name","defineProperty","getOwnPropertyDescriptor","create","XRFeature","_type","_enabled","createPlatformFeature","_onEnable","_onDisable","XRFeatureType","XRRequestTrackingState","XRTrackableFeature","_requestTrackings","_tracked","_updated","addChangedListener","removeChangedListener","platformFrame","requestTrackings","allTracked","updated","checkAvailable","getTrackedResult","_generateTracked","requestTracking","Destroyed","destroyedTracked","tracked","j","trackId","splice","indexOf","Resolved","trackedObject","_addRequestTracking","canModifyRequestTrackingAfterInit","onAddRequestTracking","_removeRequestTracking","onDelRequestTracking","_removeAllRequestTrackings","_uuid","XRTracked","TrackableType","XRHitResult","point","normal","XRPlaneMode","XRRequestTracking","XRRequestPlane","detectionMode","XRTrackedPlane","polygon","attributesDirty","XRPlaneTracking","EveryThing","PlaneTracking","plane","trackedPlanes","XRHitTest","HitTest","_tempRay","Ray","_tempPlane","Plane","_tempVec2","Vector2","_tempVec30","_tempVec31","_tempVec32","_tempVec33","_tempVec34","_tempVec35","hitTest","ray","result","_hitTestPlane","screenHitTest","AR","screenPointToRay","planeManager","hitPoint","hitPointInPlane","trackedPlane","transformNormal","copyFrom","distance","dot","intersectPlane","getPoint","transformToVec3","_checkPointerWithinPlane","hitResult","trackableType","pointer","preToCur","preToPointer","cross","prePoint","side","curPoint","subtract","XRAnchor","XRRequestAnchor","XRAnchorTracking","AnchorTracking","_anchors","addAnchor","anchors","requestAnchor","xrAnchor","removeAnchor","anchor","clearAnchors","trackingAnchors","trackedAnchors","XRRequestImage","image","XRTrackedImage","XRImageTracking","trackingImages","ImageTracking","_trackingImages","imageLength","console","warn","trackedImages","XRReferenceImage","imageSource","physicalWidth","XRReferenceImageDecoder","decode","bufferReader","AssetPromise","nextFloat32","nextUint8","img","Image","onload","src","URL","createObjectURL","Blob","nextImagesData","XRReferenceImageLoader","load","item","resourceManager","_request","url","data","referenceImage","catch","Loader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/input/XRTrackedInputDevice.ts","../src/session/XRSessionState.ts","../src/feature/camera/XRCameraManager.ts","../src/XRPose.ts","../src/input/XRTrackingState.ts","../src/input/XRInput.ts","../src/input/XRCamera.ts","../src/input/XRInputButton.ts","../src/input/XRController.ts","../src/input/XRInputEventType.ts","../src/input/XRTargetRayMode.ts","../src/input/XRInputManager.ts","../src/session/XRSessionMode.ts","../src/session/XRSessionManager.ts","../src/XRManagerExtended.ts","../src/feature/XRFeature.ts","../src/feature/XRFeatureType.ts","../src/feature/trackable/XRRequestTrackingState.ts","../src/feature/trackable/XRTrackableFeature.ts","../src/feature/trackable/XRTracked.ts","../src/feature/hitTest/TrackableType.ts","../src/feature/hitTest/XRHitResult.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/feature/trackable/plane/XRPlaneMode.ts","../src/feature/trackable/XRRequestTracking.ts","../src/feature/trackable/plane/XRRequestPlane.ts","../src/feature/trackable/plane/XRTrackedPlane.ts","../src/feature/trackable/plane/XRPlaneTracking.ts","../src/feature/hitTest/XRHitTest.ts","../src/feature/trackable/anchor/XRAnchor.ts","../src/feature/trackable/anchor/XRRequestAnchor.ts","../src/feature/trackable/anchor/XRAnchorTracking.ts","../src/feature/trackable/image/XRRequestImage.ts","../src/feature/trackable/image/XRTrackedImage.ts","../src/feature/trackable/image/XRImageTracking.ts","../src/feature/trackable/image/XRReferenceImage.ts","../src/loader/XRReferenceImageDecoder.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/loader/XRReferenceImageLoader.ts"],"sourcesContent":["function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","/**\n * Enumerates some input devices that can be tracked.(including status, posture and other information)\n */\nexport enum XRTrackedInputDevice {\n /** Controller */\n Controller,\n /** Left controller */\n LeftController,\n /** Right controller */\n RightController,\n /** Camera */\n Camera,\n /** Left camera */\n LeftCamera,\n /** Right camera */\n RightCamera,\n /** Head */\n LeftHand,\n /** Right hand */\n RightHand\n}\n","/**\n * The state of an XRSession.\n */\nexport enum XRSessionState {\n /** Not initialized. */\n None,\n /** Initializing session. */\n Initializing,\n /** Initialized but not started. */\n Initialized,\n /** Running. */\n Running,\n /** Paused. */\n Paused\n}\n","import { Camera, CameraClearFlags, CameraType, Matrix } from \"@galacean/engine\";\nimport { XRManagerExtended } from \"../../XRManagerExtended\";\nimport { XRCamera } from \"../../input/XRCamera\";\nimport { XRTrackedInputDevice } from \"../../input/XRTrackedInputDevice\";\nimport { XRSessionState } from \"../../session/XRSessionState\";\n\n/**\n * The manager of XR camera.\n */\nexport class XRCameraManager {\n /**\n * The fixed foveation of the camera.\n */\n get fixedFoveation(): number {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n if (platformSession) {\n return platformSession.getFixedFoveation();\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n\n set fixedFoveation(value: number) {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n if (platformSession) {\n platformSession.setFixedFoveation(value);\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n\n /**\n * @internal\n */\n constructor(private _xrManager: XRManagerExtended) {}\n\n /**\n * Attach the camera to the specified input type(Camera, LeftCamera or RightCamera).\n * The camera entity need to be moved to the XROrigin entity.\n * @param type - The input type\n * @param camera - The camera to be attached\n */\n attachCamera(\n type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera,\n camera: Camera\n ): void {\n const xrCamera = this._xrManager.inputManager.getTrackedDevice<XRCamera>(type);\n const preCamera = xrCamera._camera;\n if (preCamera !== camera) {\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n switch (type) {\n case XRTrackedInputDevice.Camera:\n // @ts-ignore\n camera._cameraType = CameraType.XRCenterCamera;\n break;\n case XRTrackedInputDevice.LeftCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRLeftCamera;\n break;\n case XRTrackedInputDevice.RightCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRRightCamera;\n break;\n default:\n break;\n }\n xrCamera._camera = camera;\n }\n }\n\n /**\n * Detach the camera from the specified input type.\n * @param type - The input type\n * @returns The camera that was detached\n */\n detachCamera(\n type: XRTrackedInputDevice.Camera | XRTrackedInputDevice.LeftCamera | XRTrackedInputDevice.RightCamera\n ): Camera {\n const xrCamera = this._xrManager.inputManager.getTrackedDevice<XRCamera>(type);\n const preCamera = xrCamera._camera;\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n xrCamera._camera = null;\n return preCamera;\n }\n\n /**\n * @internal\n */\n _onSessionStart(): void {}\n\n /**\n * @internal\n */\n _onUpdate(): void {\n const cameras = this._xrManager.inputManager._cameras;\n const platformSession = this._xrManager.sessionManager._platformSession;\n for (let i = 0, n = cameras.length; i < n; i++) {\n const cameraDevice = cameras[i];\n const { _camera: camera } = cameraDevice;\n if (!camera) continue;\n // sync position and rotation\n const { transform } = camera.entity;\n const { pose } = cameraDevice;\n transform.position = pose.position;\n transform.rotationQuaternion = pose.rotation;\n // sync viewport\n const { viewport } = camera;\n const { x, y, width, height } = cameraDevice.viewport;\n if (!(x === viewport.x && y === viewport.y && width === viewport.z && height === viewport.w)) {\n camera.viewport = viewport.set(x, y, width, height);\n }\n // sync project matrix\n if (!Matrix.equals(camera.projectionMatrix, cameraDevice.projectionMatrix)) {\n camera.projectionMatrix = cameraDevice.projectionMatrix;\n }\n // sync pixel viewport (only when rendering to XR main framebuffer)\n if (!camera.renderTarget) {\n // @ts-ignore\n camera._adjustPixelViewport(platformSession.framebufferWidth, platformSession.framebufferHeight);\n }\n }\n }\n\n /**\n * @internal\n */\n _onSessionExit(): void {\n const cameras = this._xrManager.inputManager._cameras;\n for (let i = 0, n = cameras.length; i < n; i++) {\n // @ts-ignore\n cameras[i]._camera?._updatePixelViewport();\n }\n }\n\n /**\n * @internal\n */\n _getIgnoreClearFlags(cameraType: CameraType): CameraClearFlags {\n if (cameraType === CameraType.XRCenterCamera) {\n if (this._xrManager.sessionManager.state === XRSessionState.Running) {\n return CameraClearFlags.Color;\n } else {\n return CameraClearFlags.None;\n }\n } else {\n return CameraClearFlags.None;\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {}\n}\n","import { Matrix, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { IXRPose } from \"@galacean/engine-design\";\n\n/**\n * Data for describing pose in the XR space.\n */\nexport class XRPose implements IXRPose {\n /** The position of the pose in XR space. */\n position: Vector3 = new Vector3();\n /** The rotation of the pose in XR space. */\n rotation: Quaternion = new Quaternion();\n /** The matrix of the pose in XR space. */\n matrix: Matrix = new Matrix();\n /** The inverse matrix of the pose in XR space. */\n inverseMatrix: Matrix = new Matrix();\n}\n","/**\n * Enum for XR tracking state.\n */\nexport enum XRTrackingState {\n /** Not tracking */\n NotTracking,\n /** Tracking */\n Tracking,\n /** Lost track */\n TrackingLost\n}\n","import { IXRInput } from \"@galacean/engine-design\";\nimport { XRTrackedInputDevice } from \"./XRTrackedInputDevice\";\nimport { XRTrackingState } from \"./XRTrackingState\";\n\nexport class XRInput implements IXRInput {\n /** The tracking state of xr input. */\n trackingState: XRTrackingState = XRTrackingState.NotTracking;\n\n /**\n * @internal\n */\n constructor(public type: XRTrackedInputDevice) {}\n}\n","import { IXRCamera } from \"@galacean/engine-design\";\nimport { Matrix, Rect, Camera } from \"@galacean/engine\";\nimport { XRPose } from \"../XRPose\";\nimport { XRInput } from \"./XRInput\";\n\n/**\n * The XR camera.\n */\nexport class XRCamera extends XRInput implements IXRCamera {\n /** The pose of the camera in XR space. */\n pose: XRPose = new XRPose();\n /** The viewport of the camera. */\n viewport: Rect = new Rect();\n /** The projection matrix of the camera. */\n projectionMatrix: Matrix = new Matrix();\n\n /** @internal */\n _camera: Camera;\n}\n","/**\n * Enum for XR input button.\n */\nexport enum XRInputButton {\n /** None */\n None = 0x0,\n /** Select */\n Select = 0x1,\n /** Select */\n Trigger = 0x1,\n /** Squeeze */\n Squeeze = 0x2,\n /** TouchPad */\n TouchPad = 0x4,\n /** A */\n AButton = 0x8,\n /** B */\n BButton = 0x10\n}\n","import { IXRController } from \"@galacean/engine-design\";\nimport { XRPose } from \"../XRPose\";\nimport { XRInput } from \"./XRInput\";\nimport { XRInputButton } from \"./XRInputButton\";\n\n/**\n * The XR controller.\n */\nexport class XRController extends XRInput implements IXRController {\n /** The grip space pose of the controller in XR space. */\n gripPose: XRPose = new XRPose();\n /** The target ray space pose of the controller in XR space. */\n targetRayPose: XRPose = new XRPose();\n /** The currently pressed buttons of this controller. */\n pressedButtons: XRInputButton = XRInputButton.None;\n /** Record button lifted. */\n down: XRInputButton = XRInputButton.None;\n /** Record button pressed. */\n up: XRInputButton = XRInputButton.None;\n\n /**\n *\n * Returns whether the button is pressed.\n * @param button - The button to check\n * @returns Whether the button is pressed\n */\n isButtonDown(button: XRInputButton): boolean {\n return (this.down & button) !== 0;\n }\n\n /**\n * Returns whether the button is lifted.\n * @param button - The button to check\n * @returns Whether the button is lifted\n */\n isButtonUp(button: XRInputButton): boolean {\n return (this.up & button) !== 0;\n }\n\n /**\n * Returns whether the button is held down.\n * @param button - The button to check\n * @returns Whether the button is held down\n */\n isButtonHeldDown(button: XRInputButton): boolean {\n return (this.pressedButtons & button) !== 0;\n }\n}\n","export enum XRInputEventType {\n SelectStart,\n Select,\n SelectEnd,\n SqueezeStart,\n Squeeze,\n SqueezeEnd\n}\n","export enum XRTargetRayMode {\n Gaze,\n TrackedPointer,\n Screen\n}\n","import { Engine, SafeLoopArray } from \"@galacean/engine\";\nimport { IXRInputEvent } from \"@galacean/engine-design\";\nimport { IXRListener, XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRCamera } from \"./XRCamera\";\nimport { XRController } from \"./XRController\";\nimport { XRInput } from \"./XRInput\";\nimport { XRInputButton } from \"./XRInputButton\";\nimport { XRInputEventType } from \"./XRInputEventType\";\nimport { XRTargetRayMode } from \"./XRTargetRayMode\";\nimport { XRTrackedInputDevice } from \"./XRTrackedInputDevice\";\nimport { XRTrackingState } from \"./XRTrackingState\";\n\n/**\n * The manager of XR input.\n */\nexport class XRInputManager {\n /** @internal */\n _cameras: XRCamera[] = [];\n /** @internal */\n _controllers: XRController[] = [];\n\n private _added: XRInput[] = [];\n private _removed: XRInput[] = [];\n private _trackedDevices: XRInput[] = [];\n private _statusSnapshot: XRTrackingState[] = [];\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * @internal\n */\n constructor(\n private _xrManager: XRManagerExtended,\n private _engine: Engine\n ) {\n const { _trackedDevices: trackedDevices, _controllers: controllers, _cameras: cameras } = this;\n for (let i = 0; i < 6; i++) {\n switch (i) {\n case XRTrackedInputDevice.Camera:\n case XRTrackedInputDevice.LeftCamera:\n case XRTrackedInputDevice.RightCamera:\n cameras.push((trackedDevices[i] = new XRCamera(i)));\n break;\n case XRTrackedInputDevice.Controller:\n case XRTrackedInputDevice.LeftController:\n case XRTrackedInputDevice.RightController:\n controllers.push((trackedDevices[i] = new XRController(i)));\n break;\n default:\n break;\n }\n }\n this._statusSnapshot.fill(XRTrackingState.NotTracking, 0, trackedDevices.length);\n }\n\n /**\n * Returns the tracked device instance.\n * @param type - The tracked input device type\n * @returns The input instance\n */\n getTrackedDevice<T extends XRInput>(type: XRTrackedInputDevice): T {\n return <T>this._trackedDevices[type];\n }\n\n /**\n * Add a listener for tracked device changes.\n * @param listener - The listener to add\n */\n addTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listener of tracked device changes.\n * @param listener - The listener to remove\n */\n removeTrackedDeviceChangedListener(listener: (added: readonly XRInput[], removed: readonly XRInput[]) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n /**\n * @internal\n */\n _onUpdate(): void {\n const { _added: added, _removed: removed, _statusSnapshot: statusSnapshot } = this;\n const { _trackedDevices: trackedDevices, _controllers: controllers } = this;\n // Reset data\n added.length = removed.length = 0;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const controller = controllers[i];\n controller.down = controller.up = 0;\n }\n // Handle events and update tracked devices\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n const { events: platformEvents } = platformSession;\n for (let i = 0, n = platformEvents.length; i < n; i++) {\n this._handleEvent(platformEvents[i]);\n }\n platformSession.resetEvents();\n platformSession.frame.updateInputs(trackedDevices);\n for (let i = 0, n = trackedDevices.length; i < n; i++) {\n const input = trackedDevices[i];\n if (!input) continue;\n const nowState = input.trackingState;\n if (statusSnapshot[i] === XRTrackingState.Tracking) {\n if (nowState !== XRTrackingState.Tracking) {\n removed.push(input);\n }\n } else {\n if (nowState === XRTrackingState.Tracking) {\n added.push(input);\n }\n }\n statusSnapshot[i] = nowState;\n }\n // Dispatch change event\n if (added.length > 0 || removed.length > 0) {\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(added, removed);\n }\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n }\n\n private _handleEvent(event: IXRInputEvent): void {\n const input = <XRController>this._trackedDevices[event.input];\n switch (event.targetRayMode) {\n case XRTargetRayMode.TrackedPointer:\n switch (event.type) {\n case XRInputEventType.SelectStart:\n input.down |= XRInputButton.Select;\n input.pressedButtons |= XRInputButton.Select;\n break;\n case XRInputEventType.SelectEnd:\n input.up |= XRInputButton.Select;\n input.pressedButtons &= ~XRInputButton.Select;\n break;\n case XRInputEventType.SqueezeStart:\n input.down |= XRInputButton.Squeeze;\n input.pressedButtons |= XRInputButton.Squeeze;\n break;\n case XRInputEventType.SqueezeEnd:\n input.up |= XRInputButton.Squeeze;\n input.pressedButtons &= ~XRInputButton.Squeeze;\n break;\n default:\n break;\n }\n break;\n case XRTargetRayMode.Screen:\n const { _engine: engine } = this;\n // @ts-ignore\n const target: EventTarget = engine.inputManager._pointerManager._target;\n // @ts-ignore\n const canvas = <HTMLCanvasElement>engine.canvas._webCanvas;\n const { clientWidth, clientHeight } = canvas;\n const clientX = clientWidth * (event.x + 1) * 0.5;\n const clientY = clientHeight * (event.y + 1) * 0.5;\n // @ts-ignore\n switch (event.type) {\n case XRInputEventType.SelectStart:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerdown\", event.id, clientX, clientY));\n break;\n case XRInputEventType.Select:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointermove\", event.id, clientX, clientY));\n break;\n case XRInputEventType.SelectEnd:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerup\", event.id, clientX, clientY));\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerleave\", event.id, clientX, clientY));\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n }\n\n private _makeUpPointerEvent(type: string, pointerId: number, clientX: number, clientY: number): PointerEvent {\n const eventInitDict: PointerEventInit = {\n pointerId,\n clientX,\n clientY\n };\n switch (type) {\n case \"pointerdown\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 1;\n break;\n case \"pointermove\":\n eventInitDict.button = -1;\n eventInitDict.buttons = 1;\n break;\n case \"pointerup\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n case \"pointerleave\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n default:\n break;\n }\n return new PointerEvent(type, eventInitDict);\n }\n}\n","/**\n * The type of XR session.\n */\nexport enum XRSessionMode {\n None,\n AR,\n VR\n}\n","import { Engine, SafeLoopArray } from \"@galacean/engine\";\nimport { IHardwareRenderer, IXRSession } from \"@galacean/engine-design\";\nimport { IXRListener, XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRFeature } from \"../feature/XRFeature\";\nimport { XRSessionMode } from \"./XRSessionMode\";\nimport { XRSessionState } from \"./XRSessionState\";\n\n/**\n * XRSessionManager manages the life cycle of XR sessions.\n */\nexport class XRSessionManager {\n /** @internal */\n _platformSession: IXRSession;\n\n private _mode: XRSessionMode = XRSessionMode.None;\n private _state: XRSessionState = XRSessionState.None;\n private _rhi: IHardwareRenderer;\n private _raf: (callback: FrameRequestCallback) => number;\n private _caf: (id: number) => void;\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * The current session mode( AR or VR ).\n */\n get mode(): XRSessionMode {\n return this._mode;\n }\n\n /**\n * Return the current session state.\n */\n get state(): XRSessionState {\n return this._state;\n }\n\n /**\n * Return a list of supported frame rates.(only available in-session)\n */\n get supportedFrameRate(): Float32Array {\n return this._platformSession.supportedFrameRates;\n }\n\n /**\n * Return the current frame rate as reported by the device.\n */\n get frameRate(): number {\n return this._platformSession.frameRate;\n }\n\n /**\n * @internal\n */\n constructor(\n private _xrManager: XRManagerExtended,\n private _engine: Engine\n ) {\n // @ts-ignore\n this._rhi = _engine._hardwareRenderer;\n this._raf = requestAnimationFrame.bind(window);\n this._caf = cancelAnimationFrame.bind(window);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n\n /**\n * Check if the specified mode is supported.\n * @param mode - The mode to check\n * @returns A promise that resolves if the mode is supported, otherwise rejects\n */\n isSupportedMode(mode: XRSessionMode): Promise<void> {\n return this._xrManager._platformDevice.isSupportedSessionMode(mode);\n }\n\n /**\n * Run the session.\n */\n run(): void {\n const { _platformSession: platformSession, _engine: engine } = this;\n if (!platformSession) {\n throw new Error(\"Without session to run.\");\n }\n platformSession.start();\n this._setState(XRSessionState.Running);\n this._xrManager._onSessionStart();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * Stop the session.\n */\n stop(): void {\n const { _platformSession: platformSession, _engine: engine, _rhi: rhi } = this;\n if (!platformSession) {\n throw new Error(\"Without session to stop.\");\n }\n if (this._state !== XRSessionState.Running) {\n throw new Error(\"Session is not running.\");\n }\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.stop();\n this._setState(XRSessionState.Paused);\n this._xrManager._onSessionStop();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * Add a listening function for session state changes.\n * @param listener - The listening function\n */\n addStateChangedListener(listener: (state: XRSessionState) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listening function of session state changes.\n * @param listener - The listening function\n */\n removeStateChangedListener(listener: (state: XRSessionState) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n /**\n * @internal\n */\n _setState(value: XRSessionState) {\n this._state = value;\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(value);\n }\n }\n\n /**\n * @internal\n */\n _initialize(mode: XRSessionMode, features: XRFeature[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const { _xrManager: xrManager } = this;\n // Initialize all features\n const platformFeatures = [];\n for (let i = 0, n = features.length; i < n; i++) {\n const { _platformFeature: platformFeature } = features[i];\n platformFeature && platformFeatures.push(platformFeature);\n }\n xrManager._platformDevice\n .requestSession(this._rhi, mode, platformFeatures)\n .then((platformSession: IXRSession) => {\n this._mode = mode;\n this._platformSession = platformSession;\n this._setState(XRSessionState.Initialized);\n platformSession.setSessionExitCallBack(this._onSessionExit);\n platformSession.addEventListener();\n xrManager._onSessionInit();\n resolve();\n }, reject);\n });\n }\n\n /**\n * @internal\n */\n _onUpdate() {\n const { _rhi: rhi, _platformSession: platformSession } = this;\n rhi._mainFrameBuffer = platformSession.framebuffer;\n rhi._mainFrameWidth = platformSession.framebufferWidth;\n rhi._mainFrameHeight = platformSession.framebufferHeight;\n }\n\n /**\n * @internal\n */\n _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.requestAnimationFrame;\n } else {\n return this._raf;\n }\n }\n\n /**\n * @internal\n */\n _getCancelAnimationFrame(): (id: number) => void {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.cancelAnimationFrame;\n } else {\n return this._caf;\n }\n }\n\n /**\n * @internal\n */\n _exit(): Promise<void> {\n const { _platformSession: platformSession } = this;\n if (!platformSession) {\n return Promise.reject(\"Without session to stop.\");\n }\n return platformSession.end();\n }\n\n private _onSessionExit() {\n const { _rhi: rhi, _platformSession: platformSession, _engine: engine } = this;\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.removeEventListener();\n this._platformSession = null;\n this._setState(XRSessionState.None);\n this._xrManager._onSessionExit();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n }\n\n /**\n * @internal\n */\n _onDestroy(): void {\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n this._raf = this._caf = null;\n }\n}\n","import { CameraClearFlags, CameraType, Engine, Entity, XRManager } from \"@galacean/engine\";\nimport { IXRDevice } from \"@galacean/engine-design\";\nimport { XRFeature } from \"./feature/XRFeature\";\nimport { XRFeatureType } from \"./feature/XRFeatureType\";\nimport { XRCameraManager } from \"./feature/camera/XRCameraManager\";\nimport { XRInputManager } from \"./input/XRInputManager\";\nimport { XRSessionManager } from \"./session/XRSessionManager\";\nimport { XRSessionMode } from \"./session/XRSessionMode\";\nimport { XRSessionState } from \"./session/XRSessionState\";\n/**\n * @internal\n */\nexport class XRManagerExtended extends XRManager {\n /** @internal */\n static _featureMap: Map<TFeatureConstructor<XRFeature>, XRFeatureType> = new Map();\n\n override inputManager: XRInputManager;\n override sessionManager: XRSessionManager;\n override cameraManager: XRCameraManager;\n\n /** @internal */\n _platformDevice: IXRDevice;\n\n private _features: XRFeature[];\n private _origin: Entity;\n\n override get features(): XRFeature[] {\n return this._features;\n }\n\n override get origin(): Entity {\n return this._origin;\n }\n\n override set origin(value: Entity) {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot set origin when the session is initialized.\");\n }\n this._origin = value;\n }\n\n override isSupportedFeature<T extends XRFeature>(feature: TFeatureConstructor<T>): boolean {\n return this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(feature));\n }\n\n override addFeature<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature>(\n type: T,\n ...args: TFeatureConstructorArguments<T>\n ): InstanceType<T> | null {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot add feature when the session is initialized.\");\n }\n if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {\n throw new Error(\"The feature is not supported\");\n }\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n if (features[i] instanceof type) throw new Error(\"The feature has been added\");\n }\n const feature = new type(this, ...args) as InstanceType<T>;\n features.push(feature);\n return feature;\n }\n\n override getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | null {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n if (feature instanceof type) {\n return feature;\n }\n }\n }\n\n override enterXR(sessionMode: XRSessionMode, autoRun: boolean = true): Promise<void> {\n const { sessionManager } = this;\n if (sessionManager._platformSession) {\n throw new Error(\"Please exit XR immersive mode first.\");\n }\n if (!this._origin) {\n throw new Error(\"Please set origin before enter XR.\");\n }\n return new Promise((resolve, reject) => {\n // 1. Check if this xr mode is supported\n sessionManager.isSupportedMode(sessionMode).then(() => {\n sessionManager._setState(XRSessionState.Initializing);\n // 2. Initialize session\n sessionManager._initialize(sessionMode, this.features).then(() => {\n autoRun && sessionManager.run();\n resolve();\n }, reject);\n }, reject);\n });\n }\n\n override exitXR(): Promise<void> {\n return new Promise((resolve, reject) => {\n this.sessionManager._exit().then(() => {\n resolve();\n }, reject);\n });\n }\n\n override _initialize(engine: Engine, xrDevice: IXRDevice): void {\n this._features = [];\n this._platformDevice = xrDevice;\n this.sessionManager = new XRSessionManager(this, engine);\n this.inputManager = new XRInputManager(this, engine);\n this.cameraManager = new XRCameraManager(this);\n }\n\n override _update(): void {\n const { sessionManager } = this;\n if (sessionManager.state !== XRSessionState.Running) return;\n sessionManager._onUpdate();\n this.inputManager._onUpdate();\n this.cameraManager._onUpdate();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onUpdate();\n }\n }\n\n override _destroy(): void {\n if (this.sessionManager._platformSession) {\n this.exitXR().then(() => {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n });\n } else {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n }\n }\n\n override _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number {\n return this.sessionManager._getRequestAnimationFrame();\n }\n\n override _getCancelAnimationFrame(): (id: number) => void {\n return this.sessionManager._getCancelAnimationFrame();\n }\n\n override _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags {\n return this.cameraManager._getIgnoreClearFlags(type);\n }\n\n /**\n * @internal\n */\n _onSessionStop(): void {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionStop();\n }\n }\n\n /**\n * @internal\n */\n _onSessionInit(): void {\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionInit();\n }\n }\n\n /**\n * @internal\n */\n _onSessionStart(): void {\n this.cameraManager._onSessionStart();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionStart();\n }\n }\n\n /**\n * @internal\n */\n _onSessionExit(): void {\n this.cameraManager._onSessionExit();\n const { features } = this;\n for (let i = 0, n = features.length; i < n; i++) {\n const feature = features[i];\n feature.enabled && feature._onSessionExit();\n feature._onDestroy();\n }\n features.length = 0;\n }\n}\n\n/**\n * @internal\n */\nexport function registerXRFeature<T extends XRFeature>(type: XRFeatureType): (feature: TFeatureConstructor<T>) => void {\n return (feature: TFeatureConstructor<T>) => {\n XRManagerExtended._featureMap.set(feature, type);\n };\n}\n\nexport interface IXRListener {\n fn: (...args: any[]) => any;\n destroyed?: boolean;\n}\n\ntype TFeatureConstructor<T extends XRFeature> = new (xrManager: XRManagerExtended, ...args: any[]) => T;\n\ntype TFeatureConstructorArguments<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature> =\n T extends new (xrManager: XRManagerExtended, ...args: infer P) => XRFeature ? P : never;\n\ndeclare module \"@galacean/engine\" {\n interface XRManager {\n /** Input manager for XR. */\n inputManager: XRInputManager;\n /** Session manager for XR. */\n sessionManager: XRSessionManager;\n /** Camera manager for XR. */\n cameraManager: XRCameraManager;\n\n /** Initialized features. */\n get features(): XRFeature[];\n\n /**\n * The current origin of XR space.\n * @remarks The connection point between the virtual world and the real world ( XR Space )\n */\n get origin(): Entity;\n set origin(value: Entity);\n\n /**\n * Check if the specified feature is supported.\n * @param type - The type of the feature\n * @returns If the feature is supported\n */\n isSupportedFeature<T extends XRFeature>(feature: TFeatureConstructor<T>): boolean;\n\n /**\n * Add feature based on the xr feature type.\n * @param type - The type of the feature\n * @param args - The constructor params of the feature\n * @returns The feature which has been added\n */\n addFeature<T extends new (xrManager: XRManagerExtended, ...args: any[]) => XRFeature>(\n type: T,\n ...args: TFeatureConstructorArguments<T>\n ): InstanceType<T> | null;\n\n /**\n * Get feature which match the type.\n * @param type - The type of the feature\n * @returns\tThe feature which match type\n */\n getFeature<T extends XRFeature>(type: TFeatureConstructor<T>): T | null;\n /**\n * Enter XR immersive mode, when you call this method, it will initialize and display the XR virtual world.\n * @param sessionMode - The mode of the session\n * @param autoRun - Whether to automatically run the session, when `autoRun` is set to true, xr will start working immediately after initialization. Otherwise, you need to call `sessionManager.run` later to work.\n * @returns A promise that resolves if the XR virtual world is entered, otherwise rejects\n */\n enterXR(sessionMode: XRSessionMode, autoRun?: boolean): Promise<void>;\n /**\n * Exit XR immersive mode, when you call this method, it will destroy the XR virtual world.\n * @returns A promise that resolves if the XR virtual world is destroyed, otherwise rejects\n */\n exitXR(): Promise<void>;\n\n /**\n * @internal\n */\n _initialize(engine: Engine, xrDevice: IXRDevice): void;\n\n /**\n * @internal\n */\n _getRequestAnimationFrame(): (callback: FrameRequestCallback) => number;\n\n /**\n * @internal\n */\n _getCancelAnimationFrame(): (id: number) => void;\n\n /**\n * @internal\n */\n _getCameraIgnoreClearFlags(type: CameraType): CameraClearFlags;\n\n /**\n * @internal\n */\n _update(): void;\n\n /**\n * @internal\n */\n _destroy(): void;\n }\n}\n\n// 实现混入的函数\nfunction ApplyMixins(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}\n\nApplyMixins(XRManager, [XRManagerExtended]);\n","import { IXRPlatformFeature } from \"@galacean/engine-design\";\nimport { XRManagerExtended } from \"../XRManagerExtended\";\nimport { XRFeatureType } from \"./XRFeatureType\";\n\n/**\n * The base class of XR feature manager.\n */\nexport abstract class XRFeature<T extends IXRPlatformFeature = IXRPlatformFeature> {\n /** @internal */\n _platformFeature: T;\n protected _enabled: boolean = true;\n\n /**\n * Returns whether the feature is enabled.\n */\n get enabled(): boolean {\n return this._enabled;\n }\n\n set enabled(value: boolean) {\n if (this.enabled !== value) {\n this._enabled = value;\n value ? this._onEnable() : this._onDisable();\n }\n }\n\n /**\n * @internal\n */\n constructor(\n protected _xrManager: XRManagerExtended,\n protected _type: XRFeatureType,\n ...args: any[]\n ) {\n this._platformFeature = <T>_xrManager._platformDevice.createPlatformFeature(_type, ...args);\n this._onEnable();\n }\n\n /**\n * @internal\n */\n _onEnable(): void {}\n\n /**\n * @internal\n */\n _onDisable(): void {}\n\n /**\n * @internal\n */\n _onUpdate(): void {}\n\n /**\n * @internal\n */\n _onSessionInit(): void {}\n\n /**\n * @internal\n */\n _onSessionStart(): void {}\n\n /**\n * @internal\n */\n _onSessionStop(): void {}\n\n /**\n * @internal\n */\n _onSessionExit(): void {}\n\n /**\n * @internal\n */\n _onDestroy(): void {}\n}\n","export enum XRFeatureType {\n AnchorTracking,\n ImageTracking,\n PlaneTracking,\n HitTest\n}\n","export enum XRRequestTrackingState {\n None,\n Submitted,\n Resolved,\n Rejected,\n Destroyed,\n WaitingDestroy\n}\n","import { SafeLoopArray } from \"@galacean/engine\";\nimport { IXRTrackablePlatformFeature } from \"@galacean/engine-design\";\nimport { IXRListener } from \"../../XRManagerExtended\";\nimport { XRTrackingState } from \"../../input/XRTrackingState\";\nimport { XRFeature } from \"../XRFeature\";\nimport { XRFeatureType } from \"../XRFeatureType\";\nimport { XRRequestTracking } from \"./XRRequestTracking\";\nimport { XRRequestTrackingState } from \"./XRRequestTrackingState\";\nimport { XRTracked } from \"./XRTracked\";\n\n/**\n * The base class of XR trackable manager.\n */\nexport abstract class XRTrackableFeature<\n T extends XRTracked = XRTracked,\n K extends XRRequestTracking<T> = XRRequestTracking<T>\n> extends XRFeature<IXRTrackablePlatformFeature<T, K>> {\n protected static _uuid = 0;\n\n protected _requestTrackings: K[] = [];\n protected _tracked: T[] = [];\n protected _added: T[] = [];\n protected _updated: T[] = [];\n protected _removed: T[] = [];\n protected _statusSnapshot: Record<number, XRTrackingState> = {};\n private _listeners: SafeLoopArray<IXRListener> = new SafeLoopArray<IXRListener>();\n\n /**\n * Add a listening function for tracked object changes.\n * @param listener - The listening function\n */\n addChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void {\n this._listeners.push({ fn: listener });\n }\n\n /**\n * Remove a listening function of tracked object changes.\n * @param listener - The listening function\n */\n removeChangedListener(listener: (added: readonly T[], updated: readonly T[], removed: readonly T[]) => void): void {\n this._listeners.findAndRemove((value) => (value.fn === listener ? (value.destroyed = true) : false));\n }\n\n override _onUpdate(): void {\n const { _platformSession: platformSession } = this._xrManager.sessionManager;\n const { frame: platformFrame } = platformSession;\n const {\n _platformFeature: platformFeature,\n _requestTrackings: requestTrackings,\n _statusSnapshot: statusSnapshot,\n _tracked: allTracked,\n _added: added,\n _updated: updated,\n _removed: removed\n } = this;\n if (!platformFrame || !requestTrackings.length) {\n return;\n }\n if (!platformFeature.checkAvailable(platformSession, platformFrame, requestTrackings)) {\n return;\n }\n added.length = updated.length = removed.length = 0;\n platformFeature.getTrackedResult(platformSession, platformFrame, requestTrackings, this._generateTracked);\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n switch (requestTracking.state) {\n case XRRequestTrackingState.Destroyed:\n const destroyedTracked = requestTracking.tracked;\n for (let j = 0, n = destroyedTracked.length; j < n; j++) {\n const tracked = destroyedTracked[j];\n const trackId = tracked.id;\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(tracked);\n allTracked.splice(allTracked.indexOf(tracked), 1);\n }\n statusSnapshot[trackId] = XRTrackingState.NotTracking;\n }\n break;\n case XRRequestTrackingState.Resolved:\n const { tracked } = requestTracking;\n for (let j = 0, n = tracked.length; j < n; j++) {\n const trackedObject = tracked[j];\n const trackId = trackedObject.id;\n if (trackedObject.state === XRTrackingState.Tracking) {\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n updated.push(trackedObject);\n } else {\n added.push(trackedObject);\n statusSnapshot[trackId] = XRTrackingState.Tracking;\n allTracked.push(trackedObject);\n }\n } else {\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(trackedObject);\n allTracked.splice(allTracked.indexOf(trackedObject), 1);\n }\n statusSnapshot[trackId] = trackedObject.state;\n }\n }\n break;\n default:\n break;\n }\n }\n for (let i = requestTrackings.length - 1; i >= 0; i--) {\n requestTrackings[i].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i, 1);\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n const listeners = this._listeners.getLoopArray();\n for (let i = 0, n = listeners.length; i < n; i++) {\n const listener = listeners[i];\n !listener.destroyed && listener.fn(added, updated, removed);\n }\n }\n }\n\n override _onSessionStop(): void {\n this._added.length = this._updated.length = this._removed.length = 0;\n }\n\n override _onSessionExit(): void {\n // prettier-ignore\n this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;\n this._listeners.findAndRemove((value) => (value.destroyed = true));\n }\n\n protected _addRequestTracking(requestTracking: K): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n this._requestTrackings.push(requestTracking);\n platformFeature.onAddRequestTracking(requestTracking);\n }\n\n protected _removeRequestTracking(requestTracking: K): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n platformFeature.onDelRequestTracking(requestTracking);\n }\n\n protected _removeAllRequestTrackings(): void {\n const { _platformFeature: platformFeature } = this;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n const { _requestTrackings: requestTrackings } = this;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n platformFeature.onDelRequestTracking(requestTrackings[i]);\n }\n }\n\n protected abstract _generateTracked(): T;\n}\n","import { IXRTracked } from \"@galacean/engine-design\";\nimport { XRPose } from \"../../XRPose\";\nimport { XRTrackingState } from \"../../input/XRTrackingState\";\n\n/**\n * The base class of XR tracked object.\n */\nexport abstract class XRTracked implements IXRTracked {\n /** The unique id of the trackable. */\n id: number;\n /** The pose of the trackable in XR space. */\n pose: XRPose = new XRPose();\n /** The tracking state of the trackable. */\n state: XRTrackingState = XRTrackingState.NotTracking;\n}\n","/**\n * Enum for the types of hit test that can be performed.\n * Note: currently only supports plane.\n */\nexport enum TrackableType {\n /** Tracked plane. */\n Plane = 0x1,\n /** All tracked objects. */\n All = 0x1\n}\n","import { IXRTracked } from \"@galacean/engine-design\";\nimport { TrackableType } from \"./TrackableType\";\nimport { Vector3 } from \"@galacean/engine\";\n\n/**\n * XR hit result.\n * It is the detection result returned by using XR HitTest feature.\n */\nexport class XRHitResult {\n /** The position of the hit point. */\n point: Vector3 = new Vector3();\n /** The normal of the hit point. */\n normal: Vector3 = new Vector3();\n /** The distance from the origin of the ray to the hit point. */\n distance: number;\n /** The hit tracked object, such as IXRTrackedPlane. */\n trackedObject: IXRTracked;\n /** The type of tracked object detected, such as TrackableType.Plane */\n trackableType: TrackableType;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Enumerates modes of plane in XR.\n */\nexport enum XRPlaneMode {\n /** None. */\n None = 0,\n /** Horizontal */\n Horizontal = 0b1,\n /** Vertical */\n Vertical = 0b10,\n /** Includes horizontal and vertical. */\n EveryThing = 0b11\n}\n","import { XRRequestTrackingState } from \"./XRRequestTrackingState\";\nimport { XRTracked } from \"./XRTracked\";\n\n/**\n * @internal\n */\nexport abstract class XRRequestTracking<T extends XRTracked> {\n /** The status of the current request tracking. */\n state: XRRequestTrackingState = XRRequestTrackingState.None;\n /** Tracked instances, make up from the tracking data returned by Session. */\n tracked: T[] = [];\n}\n","import { IXRRequestPlane } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRTrackedPlane } from \"./XRTrackedPlane\";\n\n/**\n * The request plane in XR space.\n */\nexport class XRRequestPlane extends XRRequestTracking<XRTrackedPlane> implements IXRRequestPlane {\n /**\n * @param detectionMode - The plane detection mode\n */\n constructor(public detectionMode: number) {\n super();\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { XRTracked } from \"../XRTracked\";\nimport { XRPlaneMode } from \"./XRPlaneMode\";\n\n/**\n * The tracked plane in XR space.\n */\nexport class XRTrackedPlane extends XRTracked implements IXRTrackedPlane {\n /** Whether the detected plane is horizontal or vertical. */\n planeMode: XRPlaneMode;\n /** The points that make up this plane.\n * Note: These points are in the plane coordinate system,\n * and their Y coordinates are all zero.\n */\n polygon: Vector3[] = [];\n /**\n * Whether this frame changes the attributes of the plane.\n * Note: Includes `polygon` but no `pose`.\n */\n attributesDirty: boolean = false;\n}\n","import { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRPlaneMode } from \"./XRPlaneMode\";\nimport { XRRequestPlane } from \"./XRRequestPlane\";\nimport { XRTrackedPlane } from \"./XRTrackedPlane\";\n\n/**\n * The manager of plane tracking feature.\n */\n@registerXRFeature(XRFeatureType.PlaneTracking)\nexport class XRPlaneTracking extends XRTrackableFeature<XRTrackedPlane, XRRequestPlane> {\n /**\n * The plane detection mode.\n */\n get detectionMode(): XRPlaneMode {\n return this._requestTrackings[0].detectionMode;\n }\n\n /**\n * The tracked planes.\n */\n get trackedPlanes(): readonly XRTrackedPlane[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n * @param detectionMode - The plane detection mode\n */\n constructor(xrManager: XRManagerExtended, detectionMode: XRPlaneMode = XRPlaneMode.EveryThing) {\n super(xrManager, XRFeatureType.PlaneTracking, detectionMode);\n this._addRequestTracking(new XRRequestPlane(detectionMode));\n }\n\n protected override _generateTracked(): XRTrackedPlane {\n const plane = new XRTrackedPlane();\n plane.id = XRTrackableFeature._uuid++;\n return plane;\n }\n}\n","import { Plane, Ray, Vector2, Vector3 } from \"@galacean/engine\";\nimport { IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { XRManagerExtended, registerXRFeature } from \"../../XRManagerExtended\";\nimport { XRCamera } from \"../../input/XRCamera\";\nimport { XRTrackedInputDevice } from \"../../input/XRTrackedInputDevice\";\nimport { XRSessionMode } from \"../../session/XRSessionMode\";\nimport { XRFeature } from \"../XRFeature\";\nimport { XRFeatureType } from \"../XRFeatureType\";\nimport { XRPlaneTracking } from \"../trackable/plane/XRPlaneTracking\";\nimport { TrackableType } from \"./TrackableType\";\nimport { XRHitResult } from \"./XRHitResult\";\n\n/**\n * The manager of XR hit test.\n */\n@registerXRFeature(XRFeatureType.HitTest)\nexport class XRHitTest extends XRFeature {\n private _tempRay: Ray = new Ray();\n private _tempPlane: Plane = new Plane();\n private _tempVec2: Vector2 = new Vector2();\n private _tempVec30: Vector3 = new Vector3();\n private _tempVec31: Vector3 = new Vector3();\n private _tempVec32: Vector3 = new Vector3();\n private _tempVec33: Vector3 = new Vector3();\n private _tempVec34: Vector3 = new Vector3();\n private _tempVec35: Vector3 = new Vector3();\n\n /**\n * @param xrManager - The xr manager\n */\n constructor(xrManager: XRManagerExtended) {\n super(xrManager, XRFeatureType.HitTest);\n }\n\n /**\n * Hit test.\n * @param ray - The ray to test\n * @param type - The type of hit test\n * @returns The hit result\n */\n hitTest(ray: Ray, type: TrackableType): XRHitResult[] {\n const result = [];\n if (type & TrackableType.Plane) {\n this._hitTestPlane(ray, result);\n }\n return result;\n }\n\n /**\n * Screen hit test.\n * @param x - The x coordinate of the screen point\n * @param y - The y coordinate of the screen point\n * @param type - The type of hit test\n * @returns The hit result\n */\n screenHitTest(x: number, y: number, type: TrackableType): XRHitResult[] {\n const { _xrManager: xrManager } = this;\n if (xrManager.sessionManager.mode !== XRSessionMode.AR) {\n throw new Error(\"Only AR mode supports using screen ray hit test.\");\n }\n const { _camera: camera } = xrManager.inputManager.getTrackedDevice<XRCamera>(XRTrackedInputDevice.Camera);\n if (!camera) {\n throw new Error(\"No camera available.\");\n }\n const ray = camera.screenPointToRay(this._tempVec2.set(x, y), this._tempRay);\n return this.hitTest(ray, type);\n }\n\n private _hitTestPlane(ray: Ray, result: XRHitResult[]): void {\n const planeManager = this._xrManager.getFeature(XRPlaneTracking);\n if (!planeManager || !planeManager.enabled) {\n throw new Error(\"The plane estimation function needs to be turned on for plane hit test.\");\n }\n const { _tempPlane: plane, _tempVec30: normal, _tempVec31: hitPoint, _tempVec32: hitPointInPlane } = this;\n const { trackedPlanes } = planeManager;\n for (let i = 0, n = trackedPlanes.length; i < n; i++) {\n const trackedPlane = trackedPlanes[i];\n normal.set(0, 1, 0).transformNormal(trackedPlane.pose.matrix);\n plane.normal.copyFrom(normal);\n plane.distance = -Vector3.dot(normal, trackedPlane.pose.position);\n const distance = ray.intersectPlane(plane);\n if (distance >= 0) {\n ray.getPoint(distance, hitPoint);\n Vector3.transformToVec3(hitPoint, trackedPlane.pose.inverseMatrix, hitPointInPlane);\n // Check if the hit position is within the plane boundary.\n if (this._checkPointerWithinPlane(hitPointInPlane, trackedPlane)) {\n const hitResult = new XRHitResult();\n hitResult.point.copyFrom(hitPoint);\n hitResult.normal.copyFrom(normal);\n hitResult.distance = distance;\n hitResult.trackedObject = trackedPlane;\n hitResult.trackableType = TrackableType.Plane;\n result.push(hitResult);\n }\n }\n }\n }\n\n private _checkPointerWithinPlane(pointer: Vector3, plane: IXRTrackedPlane): boolean {\n const { _tempVec33: preToCur, _tempVec34: preToPointer, _tempVec35: cross } = this;\n const { polygon } = plane;\n const length = polygon.length;\n let prePoint = polygon[length - 1];\n let side = 0;\n for (let i = 0; i < length; i++) {\n const curPoint = polygon[i];\n Vector3.subtract(curPoint, prePoint, preToCur);\n Vector3.subtract(pointer, prePoint, preToPointer);\n Vector3.cross(preToCur, preToPointer, cross);\n const y = cross.y;\n if (side === 0) {\n if (y > 0) {\n side = 1;\n } else if (y < 0) {\n side = -1;\n }\n } else {\n if ((y > 0 && side < 0) || (y < 0 && side > 0)) {\n return false;\n }\n }\n prePoint = curPoint;\n }\n return true;\n }\n}\n","import { XRTracked } from \"../XRTracked\";\n\n/**\n * The anchor in XR space.\n */\nexport class XRAnchor extends XRTracked {}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { IXRRequestAnchor } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRAnchor } from \"./XRAnchor\";\n\n/**\n * The request anchor in XR space.\n */\nexport class XRRequestAnchor extends XRRequestTracking<XRAnchor> implements IXRRequestAnchor {\n /**\n * @param position - Requests the position of the anchor to be added\n * @param rotation - Requests the rotation of the anchor to be added\n */\n constructor(\n public position: Vector3,\n public rotation: Quaternion\n ) {\n super();\n }\n}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRAnchor } from \"./XRAnchor\";\nimport { XRRequestAnchor } from \"./XRRequestAnchor\";\n\n/**\n * The manager of XR anchor tracking.\n */\n@registerXRFeature(XRFeatureType.AnchorTracking)\nexport class XRAnchorTracking extends XRTrackableFeature<XRAnchor, XRRequestAnchor> {\n private _anchors: XRAnchor[] = [];\n\n /**\n * The anchors to tracking.\n */\n get trackingAnchors(): readonly XRAnchor[] {\n return this._anchors;\n }\n\n /**\n * The tracked anchors.\n */\n get trackedAnchors(): readonly XRAnchor[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n */\n constructor(xrManager: XRManagerExtended) {\n super(xrManager, XRFeatureType.AnchorTracking);\n }\n\n /**\n * Add a anchor in XR space.\n * @param anchor - The anchor to be added\n */\n addAnchor(position: Vector3, rotation: Quaternion): XRAnchor {\n if (!this._enabled) {\n throw new Error(\"Cannot add an anchor from a disabled anchor manager.\");\n }\n const { _anchors: anchors } = this;\n const requestAnchor = new XRRequestAnchor(position, rotation);\n const xrAnchor = this._generateTracked();\n requestAnchor.tracked[0] = xrAnchor;\n this._addRequestTracking(requestAnchor);\n anchors.push(xrAnchor);\n return xrAnchor;\n }\n\n /**\n * Remove a anchor in XR space.\n * @param anchor - The anchor to be removed\n */\n removeAnchor(anchor: XRAnchor): void {\n if (!this._enabled) {\n throw new Error(\"Cannot remove an anchor from a disabled anchor manager.\");\n }\n const { _requestTrackings: requestTrackings, _anchors: anchors } = this;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestAnchor = requestTrackings[i];\n if (requestAnchor.tracked[0] === anchor) {\n this._removeRequestTracking(requestAnchor);\n break;\n }\n }\n anchors.splice(anchors.indexOf(anchor), 1);\n }\n\n /**\n * Remove all tracking anchors.\n */\n clearAnchors(): void {\n if (!this._enabled) {\n throw new Error(\"Cannot remove anchors from a disabled anchor manager.\");\n }\n this._removeAllRequestTrackings();\n }\n\n protected override _generateTracked(): XRAnchor {\n const anchor = new XRAnchor();\n anchor.id = XRTrackableFeature._uuid++;\n return anchor;\n }\n}\n","import { IXRRequestImage } from \"@galacean/engine-design\";\nimport { XRRequestTracking } from \"../XRRequestTracking\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\nimport { XRTrackedImage } from \"./XRTrackedImage\";\n\n/**\n * The request image in XR space.\n */\nexport class XRRequestImage extends XRRequestTracking<XRTrackedImage> implements IXRRequestImage {\n /**\n * @param image - The image to be tracked\n */\n constructor(public image: XRReferenceImage) {\n super();\n }\n}\n","import { IXRTrackedImage } from \"@galacean/engine-design\";\nimport { XRTracked } from \"../XRTracked\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\n\n/**\n * A tracked image in XR space.\n */\nexport class XRTrackedImage extends XRTracked implements IXRTrackedImage {\n /** The reference image which was used to detect this image in the environment. */\n referenceImage: XRReferenceImage;\n /** The width of the image in meters in the physical world. */\n measuredPhysicalWidth: number;\n}\n","import { XRManagerExtended, registerXRFeature } from \"../../../XRManagerExtended\";\nimport { XRFeatureType } from \"../../XRFeatureType\";\nimport { XRTrackableFeature } from \"../XRTrackableFeature\";\nimport { XRReferenceImage } from \"./XRReferenceImage\";\nimport { XRRequestImage } from \"./XRRequestImage\";\nimport { XRTrackedImage } from \"./XRTrackedImage\";\n\n/**\n * The manager of XR image tracking.\n */\n@registerXRFeature(XRFeatureType.ImageTracking)\nexport class XRImageTracking extends XRTrackableFeature<XRTrackedImage, XRRequestImage> {\n private _trackingImages: XRReferenceImage[];\n /**\n * The image to tracking.\n */\n get trackingImages(): readonly XRReferenceImage[] {\n return this._trackingImages;\n }\n\n /**\n * The tracked images.\n */\n get trackedImages(): readonly XRTrackedImage[] {\n return this._tracked;\n }\n\n /**\n * @param xrManager - The xr manager\n * @param trackingImages - The images to be tracked\n */\n constructor(xrManager: XRManagerExtended, trackingImages: XRReferenceImage[]) {\n super(xrManager, XRFeatureType.ImageTracking, trackingImages);\n this._trackingImages = trackingImages;\n const imageLength = trackingImages ? trackingImages.length : 0;\n if (imageLength > 0) {\n for (let i = 0, n = trackingImages.length; i < n; i++) {\n this._addRequestTracking(new XRRequestImage(trackingImages[i]));\n }\n } else {\n console.warn(\"No image to be tracked.\");\n }\n }\n\n protected override _generateTracked(): XRTrackedImage {\n const image = new XRTrackedImage();\n image.id = XRTrackableFeature._uuid++;\n return image;\n }\n}\n","import { IXRReferenceImage } from \"@galacean/engine-design\";\n\n/**\n * A reference image is an image to look for in the physical environment.\n */\nexport class XRReferenceImage implements IXRReferenceImage {\n /**\n * Create a reference image.\n * @param name - The name of the image to be tracked\n * @param imageSource - The image to be tracked\n * @param physicalWidth - The expected physical width measurement for the real-world image being tracked in meters\n */\n constructor(\n public name: string,\n public imageSource: ImageBitmapSource,\n public physicalWidth: number\n ) {}\n}\n","import { AssetPromise, BufferReader, Engine, decoder } from \"@galacean/engine\";\nimport { XRReferenceImage } from \"../feature/trackable/image/XRReferenceImage\";\n\n@decoder(\"XRReferenceImage\")\nexport class XRReferenceImageDecoder {\n static decode(engine: Engine, bufferReader: BufferReader): AssetPromise<XRReferenceImage> {\n return new AssetPromise((resolve, reject) => {\n const physicalWidth = bufferReader.nextFloat32();\n bufferReader.nextUint8();\n const img = new Image();\n img.onload = () => {\n resolve(new XRReferenceImage(\"\", img, physicalWidth));\n };\n img.src = URL.createObjectURL(new window.Blob([bufferReader.nextImagesData(1)[0]]));\n });\n }\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { AssetPromise, decode, Loader, LoadItem, resourceLoader, ResourceManager } from \"@galacean/engine\";\nimport { XRReferenceImage } from \"../feature/trackable/image/XRReferenceImage\";\n\n@resourceLoader(\"XRReferenceImage\", [])\nexport class XRReferenceImageLoader extends Loader<XRReferenceImage> {\n load(item: LoadItem, resourceManager: ResourceManager): AssetPromise<XRReferenceImage> {\n return new AssetPromise((resolve, reject) => {\n resourceManager\n // @ts-ignore\n ._request<ArrayBuffer>(item.url, { ...item, type: \"arraybuffer\" })\n .then((data) => {\n decode<XRReferenceImage>(data, resourceManager.engine).then((referenceImage) => {\n resolve(referenceImage);\n });\n })\n .catch(reject);\n });\n }\n}\n"],"names":["XRTrackedInputDevice","XRSessionState","XRCameraManager","_xrManager","attachCamera","type","camera","xrCamera","inputManager","getTrackedDevice","preCamera","_camera","_cameraType","CameraType","Normal","Camera","XRCenterCamera","LeftCamera","XRLeftCamera","RightCamera","XRRightCamera","detachCamera","_onSessionStart","_onUpdate","cameras","_cameras","platformSession","sessionManager","_platformSession","i","n","length","cameraDevice","transform","entity","pose","position","rotationQuaternion","rotation","viewport","x","y","width","height","z","w","set","Matrix","equals","projectionMatrix","renderTarget","_adjustPixelViewport","framebufferWidth","framebufferHeight","_onSessionExit","_updatePixelViewport","_getIgnoreClearFlags","cameraType","state","Running","CameraClearFlags","Color","None","_onDestroy","fixedFoveation","getFixedFoveation","Error","value","setFixedFoveation","XRPose","Vector3","Quaternion","matrix","inverseMatrix","XRTrackingState","XRInput","trackingState","NotTracking","XRCamera","Rect","XRInputButton","XRController","gripPose","targetRayPose","pressedButtons","down","up","isButtonDown","button","isButtonUp","isButtonHeldDown","XRInputEventType","XRTargetRayMode","XRInputManager","_engine","_controllers","_added","_removed","_trackedDevices","_statusSnapshot","_listeners","SafeLoopArray","trackedDevices","controllers","push","Controller","LeftController","RightController","fill","addTrackedDeviceChangedListener","listener","fn","removeTrackedDeviceChangedListener","findAndRemove","destroyed","added","removed","statusSnapshot","controller","platformEvents","events","_handleEvent","resetEvents","frame","updateInputs","input","nowState","Tracking","listeners","getLoopArray","event","targetRayMode","TrackedPointer","SelectStart","Select","SelectEnd","SqueezeStart","Squeeze","SqueezeEnd","Screen","engine","target","_pointerManager","_target","canvas","_webCanvas","clientWidth","clientHeight","clientX","clientY","dispatchEvent","_makeUpPointerEvent","id","pointerId","eventInitDict","buttons","PointerEvent","XRSessionMode","XRSessionManager","_mode","_state","_rhi","_hardwareRenderer","_raf","requestAnimationFrame","bind","window","_caf","cancelAnimationFrame","isSupportedMode","mode","_platformDevice","isSupportedSessionMode","run","start","_setState","isPaused","pause","resume","stop","rhi","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","Paused","_onSessionStop","addStateChangedListener","removeStateChangedListener","_initialize","features","Promise","resolve","reject","platformFeatures","platformFeature","_platformFeature","xrManager","requestSession","then","Initialized","setSessionExitCallBack","addEventListener","_onSessionInit","framebuffer","_getRequestAnimationFrame","_getCancelAnimationFrame","_exit","end","removeEventListener","supportedFrameRate","supportedFrameRates","frameRate","XRManagerExtended","isSupportedFeature","feature","_featureMap","get","addFeature","args","getFeature","enterXR","sessionMode","autoRun","_origin","Initializing","exitXR","xrDevice","_features","cameraManager","_update","enabled","_destroy","_getCameraIgnoreClearFlags","origin","XRManager","Map","registerXRFeature","ApplyMixins","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","name","defineProperty","getOwnPropertyDescriptor","create","XRFeature","_type","_enabled","createPlatformFeature","_onEnable","_onDisable","XRFeatureType","XRRequestTrackingState","XRTrackableFeature","_requestTrackings","_tracked","_updated","addChangedListener","removeChangedListener","platformFrame","requestTrackings","allTracked","updated","checkAvailable","getTrackedResult","_generateTracked","requestTracking","Destroyed","destroyedTracked","tracked","j","trackId","splice","indexOf","Resolved","trackedObject","_addRequestTracking","canModifyRequestTrackingAfterInit","onAddRequestTracking","_removeRequestTracking","onDelRequestTracking","_removeAllRequestTrackings","_uuid","XRTracked","TrackableType","XRHitResult","point","normal","XRPlaneMode","XRRequestTracking","XRRequestPlane","detectionMode","XRTrackedPlane","polygon","attributesDirty","XRPlaneTracking","EveryThing","PlaneTracking","plane","trackedPlanes","XRHitTest","HitTest","_tempRay","Ray","_tempPlane","Plane","_tempVec2","Vector2","_tempVec30","_tempVec31","_tempVec32","_tempVec33","_tempVec34","_tempVec35","hitTest","ray","result","_hitTestPlane","screenHitTest","AR","screenPointToRay","planeManager","hitPoint","hitPointInPlane","trackedPlane","transformNormal","copyFrom","distance","dot","intersectPlane","getPoint","transformToVec3","_checkPointerWithinPlane","hitResult","trackableType","pointer","preToCur","preToPointer","cross","prePoint","side","curPoint","subtract","XRAnchor","XRRequestAnchor","XRAnchorTracking","AnchorTracking","_anchors","addAnchor","anchors","requestAnchor","xrAnchor","removeAnchor","anchor","clearAnchors","trackingAnchors","trackedAnchors","XRRequestImage","image","XRTrackedImage","XRImageTracking","trackingImages","ImageTracking","_trackingImages","imageLength","console","warn","trackedImages","XRReferenceImage","imageSource","physicalWidth","XRReferenceImageDecoder","decode","bufferReader","AssetPromise","nextFloat32","nextUint8","img","Image","onload","src","URL","createObjectURL","Blob","nextImagesData","XRReferenceImageLoader","load","item","resourceManager","_request","url","data","referenceImage","catch","Loader"],"mappings":";;;;;;AAAA,SAAS,4BAA4B,GAAG;AACxC;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA,QAAQ,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACpG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,CAAC,4BAA4B,GAAG,WAAW;AACtD,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK,GAAG,CAAC;AACT;;ACbA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,iBAAiB,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/E,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB;AACA,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC;;ACNA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,4BAA4B,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AACvE,SAAS;AACT,QAAQ,UAAU,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7D,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,YAAY,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAY,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAC7C;AACA,YAAY,IAAI,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACpE;AACA,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS,CAAC;AACV,KAAK;AACL;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C;;AClBA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;AAC/D,QAAQ,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;AACvC;AACA,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9D;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClE,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;AAC7D,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,WAAW,CAAC;AACvB;;ACdA,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;AACjE,QAAQ,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;AAClF,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACrJ;AACA,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5D;;ACVA,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACrF,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,MAAM,OAAO,IAAI,YAAY,KAAK,CAAC;AACxC;;ACJA;;IAGO,IAAKA,oBAAAA,iBAAAA,SAAAA,oBAAAA,EAAAA;sBACK,oBAAA,CAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;2BAEK,oBAAA,CAAA,oBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA,CAAA;4BAEC,oBAAA,CAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA,CAAA;kBAEV,oBAAA,CAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;uBAEK,oBAAA,CAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;wBAEC,oBAAA,CAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;gBAER,oBAAA,CAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;sBAEM,oBAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAA,CAAA;AAfLA,IAAAA,OAAAA,oBAAAA,CAAAA;AAiBX,CAAA,CAAA,EAAA;;ACpBD;;IAGO,IAAKC,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;4BACW,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;iCAEK,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;wCAEO,cAAA,CAAA,cAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;oBAEpB,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;mBAED,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;AATFA,IAAAA,OAAAA,cAAAA,CAAAA;AAWX,CAAA,CAAA,EAAA;;ACRD;;IAGO,IAAMC,eAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,eAAAA,CAyBC,UAAqC,EAAA;aAA7BC,UAAAA,GAAAA,UAAAA,CAAAA;;AAzBTD,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AA2BX;;;;;AAKC,MACDE,OAAAA,YA2BC,GA3BDA,SAAAA,YACEC,CAAAA,IAAsG,EACtGC,MAAc,EAAA;QAEd,IAAMC,QAAAA,GAAW,IAAI,CAACJ,UAAU,CAACK,YAAY,CAACC,gBAAgB,CAAWJ,IAAAA,CAAAA,CAAAA;QACzE,IAAMK,SAAAA,GAAYH,SAASI,OAAO,CAAA;AAClC,QAAA,IAAID,cAAcJ,MAAQ,EAAA;;AAExBI,YAAAA,SAAAA,KAAcA,SAAUE,CAAAA,WAAW,GAAGC,iBAAAA,CAAWC,MAAM,CAAD,CAAA;YACtD,OAAQT,IAAAA;AACN,gBAAA,KAAKL,qBAAqBe,MAAM;;oBAE9BT,MAAOM,CAAAA,WAAW,GAAGC,iBAAAA,CAAWG,cAAc,CAAA;AAC9C,oBAAA,MAAA;AACF,gBAAA,KAAKhB,qBAAqBiB,UAAU;;oBAElCX,MAAOM,CAAAA,WAAW,GAAGC,iBAAAA,CAAWK,YAAY,CAAA;AAC5C,oBAAA,MAAA;AACF,gBAAA,KAAKlB,qBAAqBmB,WAAW;;oBAEnCb,MAAOM,CAAAA,WAAW,GAAGC,iBAAAA,CAAWO,aAAa,CAAA;AAC7C,oBAAA,MAAA;AAGJ,aAAA;AACAb,YAAAA,QAAAA,CAASI,OAAO,GAAGL,MAAAA,CAAAA;AACrB,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDe,MAAAA,CAAAA,YASC,GATDA,SAAAA,aACEhB,IAAsG,EAAA;QAEtG,IAAME,QAAAA,GAAW,IAAI,CAACJ,UAAU,CAACK,YAAY,CAACC,gBAAgB,CAAWJ,IAAAA,CAAAA,CAAAA;QACzE,IAAMK,SAAAA,GAAYH,SAASI,OAAO,CAAA;;AAElCD,QAAAA,SAAAA,KAAcA,SAAUE,CAAAA,WAAW,GAAGC,iBAAAA,CAAWC,MAAM,CAAD,CAAA;AACtDP,QAAAA,QAAAA,CAASI,OAAO,GAAG,IAAA,CAAA;QACnB,OAAOD,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACDY,MAAAA,CAAAA,eAA0B,GAA1BA,SAAAA,eAAyB,GAAA,EAAA,CAAA;AAEzB;;MAGAC,MAAAA,CAAAA,SA4BC,GA5BDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAMC,UAAU,IAAI,CAACrB,UAAU,CAACK,YAAY,CAACiB,QAAQ,CAAA;AACrD,QAAA,IAAMC,kBAAkB,IAAI,CAACvB,UAAU,CAACwB,cAAc,CAACC,gBAAgB,CAAA;QACvE,IAAK,IAAIC,IAAI,CAAGC,EAAAA,CAAAA,GAAIN,QAAQO,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC9C,IAAMG,YAAAA,GAAeR,OAAO,CAACK,CAAE,CAAA,CAAA;YAC/B,IAAiBvB,SAAW0B,YAApBrB,CAAAA,OAAAA,CAAAA;AACR,YAAA,IAAI,CAACL,MAAQ,EAAA,SAAA;;AAEb,YAAA,IAAM,SAAE2B,GAAc3B,MAAO4B,CAAAA,MAAM,CAA3BD,SAAAA,CAAAA;YACR,IAAQE,OAASH,YAATG,CAAAA,IAAAA,CAAAA;YACRF,SAAUG,CAAAA,QAAQ,GAAGD,IAAAA,CAAKC,QAAQ,CAAA;YAClCH,SAAUI,CAAAA,kBAAkB,GAAGF,IAAAA,CAAKG,QAAQ,CAAA;;YAE5C,IAAQC,WAAajC,MAAbiC,CAAAA,QAAAA,CAAAA;AACR,YAAA,IAAgCP,sBAAAA,GAAAA,YAAAA,CAAaO,QAAQ,EAA7CC,IAAwBR,sBAAxBQ,CAAAA,CAAAA,EAAGC,CAAqBT,GAAAA,sBAAAA,CAArBS,CAAGC,EAAAA,KAAAA,GAAkBV,sBAAlBU,CAAAA,KAAAA,EAAOC,SAAWX,sBAAXW,CAAAA,MAAAA,CAAAA;AACrB,YAAA,IAAI,EAAEH,CAAAA,KAAMD,SAASC,CAAC,IAAIC,MAAMF,QAASE,CAAAA,CAAC,IAAIC,KAAAA,KAAUH,SAASK,CAAC,IAAID,WAAWJ,QAASM,CAAAA,CAAC,CAAG,EAAA;AAC5FvC,gBAAAA,MAAAA,CAAOiC,QAAQ,GAAGA,QAAAA,CAASO,GAAG,CAACN,CAAAA,EAAGC,GAAGC,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AAC9C,aAAA;;YAEA,IAAI,CAACI,cAAOC,MAAM,CAAC1C,OAAO2C,gBAAgB,EAAEjB,YAAaiB,CAAAA,gBAAgB,CAAG,EAAA;gBAC1E3C,MAAO2C,CAAAA,gBAAgB,GAAGjB,YAAAA,CAAaiB,gBAAgB,CAAA;AACzD,aAAA;;YAEA,IAAI,CAAC3C,MAAO4C,CAAAA,YAAY,EAAE;;AAExB5C,gBAAAA,MAAAA,CAAO6C,oBAAoB,CAACzB,eAAAA,CAAgB0B,gBAAgB,EAAE1B,gBAAgB2B,iBAAiB,CAAA,CAAA;AACjG,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,cAMC,GANDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAM9B,UAAU,IAAI,CAACrB,UAAU,CAACK,YAAY,CAACiB,QAAQ,CAAA;QACrD,IAAK,IAAII,IAAI,CAAGC,EAAAA,CAAAA,GAAIN,QAAQO,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;;AAE9CL,YAAAA,kBAAAA,CAAAA;AAAAA,YAAAA,CAAAA,kBAAAA,GAAAA,OAAO,CAACK,CAAAA,CAAE,CAAClB,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAlBa,mBAAoB+B,oBAAoB,EAAA,CAAA;AAC1C,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,oBAUC,GAVDA,SAAAA,qBAAqBC,UAAsB,EAAA;QACzC,IAAIA,UAAAA,KAAe5C,iBAAWG,CAAAA,cAAc,EAAE;YAC5C,IAAI,IAAI,CAACb,UAAU,CAACwB,cAAc,CAAC+B,KAAK,KAAKzD,cAAe0D,CAAAA,OAAO,EAAE;AACnE,gBAAA,OAAOC,wBAAiBC,KAAK,CAAA;aACxB,MAAA;AACL,gBAAA,OAAOD,wBAAiBE,IAAI,CAAA;AAC9B,aAAA;SACK,MAAA;AACL,YAAA,OAAOF,wBAAiBE,IAAI,CAAA;AAC9B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,UAAqB,GAArBA,SAAAA,UAAoB,GAAA,EAAA,CAAA;AAjJT7D,IAAAA,aAAAA,CAAAA,eAAAA,EAAAA;;YAIP8D,GAAAA,EAAAA,gBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,IAA8C,+BAAA,GAAA,IAAI,CAAC7D,UAAU,CAACwB,cAAc,EAApEC,eAAkBF,GAAoB,+BAAtCE,CAAAA,gBAAAA,CAAAA;AACR,gBAAA,IAAIF,eAAiB,EAAA;AACnB,oBAAA,OAAOA,gBAAgBuC,iBAAiB,EAAA,CAAA;iBACnC,MAAA;AACL,oBAAA,MAAM,IAAIC,KAAM,CAAA,8BAAA,CAAA,CAAA;AAClB,iBAAA;AACF,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAmBC,KAAa,EAAA;gBAC9B,IAA8C,+BAAA,GAAA,IAAI,CAAChE,UAAU,CAACwB,cAAc,EAApEC,eAAkBF,GAAoB,+BAAtCE,CAAAA,gBAAAA,CAAAA;AACR,gBAAA,IAAIF,eAAiB,EAAA;AACnBA,oBAAAA,eAAAA,CAAgB0C,iBAAiB,CAACD,KAAAA,CAAAA,CAAAA;iBAC7B,MAAA;AACL,oBAAA,MAAM,IAAID,KAAM,CAAA,8BAAA,CAAA,CAAA;AAClB,iBAAA;AACF,aAAA;;;AApBWhE,IAAAA,OAAAA,eAAAA,CAAAA;AAkJZ,CAAA;;ACxJD;;AAEC,IACM,IAAA,MAAMmE,GAAN,SAAMA,MAAAA,GAAAA;iDAC+B,IAAA,CAC1CjC,WAAoB,IAAIkC,cAAAA,EAAAA,CAAAA;iDACkB,IAAA,CAC1ChC,WAAuB,IAAIiC,iBAAAA,EAAAA,CAAAA;+CACa,IAAA,CACxCC,SAAiB,IAAIzB,aAAAA,EAAAA,CAAAA;uDAC2B,IAAA,CAChD0B,gBAAwB,IAAI1B,aAAAA,EAAAA,CAAAA;AAC7B;;ACfD;;IAGO,IAAK2B,eAAAA,iBAAAA,SAAAA,eAAAA,EAAAA;wBACO,eAAA,CAAA,eAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAA,CAAA;oBAEJ,eAAA,CAAA,eAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;sBAEE,eAAA,CAAA,eAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;AALLA,IAAAA,OAAAA,eAAAA,CAAAA;AAOX,CAAA,CAAA,EAAA;;ACNM,IAAA,OAAMC,GAAN,SAAMA,OAAAA,CAOC,IAAiC,EAAA;SAA1BtE,IAAAA,GAAAA,IAAAA,CAAAA;gDALnBuE,aAAiCF,GAAAA,eAAAA,CAAgBG,WAAW,CAAA;AAM7D,CAAA;;ACPD;;IAGO,IAAMC,QAAN,iBAAA,SAAA,OAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,GAAAA;;AACX,QAAA,KAAA,GAAA,OAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,IAAA,IAAA,6CACA3C,KAAAA,CAAAA,IAAAA,GAAe,IAAIkC,MAAAA,EAAAA,qCACa,KAAA,CAChC9B,QAAiB,GAAA,IAAIwC,WACrB,EAAA,8CACA9B,KAAAA,CAAAA,gBAAAA,GAA2B,IAAIF,aAAAA,EAAAA,CAAAA;;;AANpB+B,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBH,OAU7B;;AClBD;;IAGO,IAAKK,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;gBACD,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;kBAEE,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;kBAEA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;mBAEC,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;oBAEC,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;aAEP,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;aAEA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA,CAAA;AAbIA,IAAAA,OAAAA,aAAAA,CAAAA;AAeX,CAAA,CAAA,EAAA;;ACbD;;IAGO,IAAMC,YAAN,iBAAA,SAAA,OAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;kHAC4C,KAAA,CACvDC,QAAmB,GAAA,IAAIb,MACvB,EAAA,wEACAc,aAAwB,GAAA,IAAId,MAC5B,EAAA,2DACAe,KAAAA,CAAAA,cAAAA,GAAgCJ,cAAclB,IAAI,+BACxB,KAAA,CAC1BuB,IAAsBL,GAAAA,aAAAA,CAAclB,IAAI,gCACb,KAAA,CAC3BwB,EAAoBN,GAAAA,aAAAA,CAAclB,IAAI,CAAA;;;AAV3BmB,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAYX;;;;;AAKC,MACDM,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAaC,MAAqB,EAAA;AAChC,QAAA,OAAO,CAAC,IAAI,CAACH,IAAI,GAAGG,MAAK,MAAO,CAAA,CAAA;AAClC,KAAA,CAAA;AAEA;;;;AAIC,MACDC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAWD,MAAqB,EAAA;AAC9B,QAAA,OAAO,CAAC,IAAI,CAACF,EAAE,GAAGE,MAAK,MAAO,CAAA,CAAA;AAChC,KAAA,CAAA;AAEA;;;;AAIC,MACDE,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAiBF,MAAqB,EAAA;AACpC,QAAA,OAAO,CAAC,IAAI,CAACJ,cAAc,GAAGI,MAAK,MAAO,CAAA,CAAA;AAC5C,KAAA,CAAA;AAtCWP,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBN,OAuCjC;;AC/CM,IAAA,gBAAKgB,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;;;AAAAA,IAAAA,OAAAA,gBAAAA,CAAAA;AAOX,CAAA,CAAA,EAAA;;ACPM,IAAA,eAAKC,iBAAAA,SAAAA,eAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,eAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA;;ACQD;;IAGO,IAAMC,cAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,cAAAA,CAgBT,UAAqC,EAC7BC,OAAe,EAAA;aADf3F,UAAAA,GAAAA,UAAAA,CAAAA;aACA2F,OAAAA,GAAAA,OAAAA,CAAAA;8BAfVrE,WAAuB,EAAE,CAAA;8BAEzBsE,eAA+B,EAAE,CAAA;AAEzBC,QAAAA,IAAAA,CAAAA,MAAAA,GAAoB,EAAE,CAAA;AACtBC,QAAAA,IAAAA,CAAAA,QAAAA,GAAsB,EAAE,CAAA;AACxBC,QAAAA,IAAAA,CAAAA,eAAAA,GAA6B,EAAE,CAAA;AAC/BC,QAAAA,IAAAA,CAAAA,eAAAA,GAAqC,EAAE,CAAA;AACvCC,QAAAA,IAAAA,CAAAA,UAAAA,GAAyC,IAAIC,oBAAAA,EAAAA,CAAAA;AASnD,QAAA,IAA0F,KAAA,GAAA,IAAI,EAArEC,cAAiE,GAAA,KAAA,CAAlFJ,eAAiCH,EAAcQ,WAAmC,GAAA,KAAA,CAAjDR,YAA2BtE,EAAUD,UAAY,KAAtBC,CAAAA,QAAAA,CAAAA;AACpE,QAAA,IAAK,IAAII,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;YAC1B,OAAQA,CAAAA;AACN,gBAAA,KAAK7B,qBAAqBe,MAAM,CAAA;AAChC,gBAAA,KAAKf,qBAAqBiB,UAAU,CAAA;AACpC,gBAAA,KAAKjB,qBAAqBmB,WAAW;AACnCK,oBAAAA,OAAAA,CAAQgF,IAAI,CAAEF,cAAc,CAACzE,CAAE,CAAA,GAAG,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC/C,oBAAA,MAAA;AACF,gBAAA,KAAK7B,qBAAqByG,UAAU,CAAA;AACpC,gBAAA,KAAKzG,qBAAqB0G,cAAc,CAAA;AACxC,gBAAA,KAAK1G,qBAAqB2G,eAAe;AACvCJ,oBAAAA,WAAAA,CAAYC,IAAI,CAAEF,cAAc,CAACzE,CAAE,CAAA,GAAG,IAAIoD,YAAapD,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACvD,oBAAA,MAAA;AAGJ,aAAA;AACF,SAAA;QACA,IAAI,CAACsE,eAAe,CAACS,IAAI,CAAClC,gBAAgBG,WAAW,EAAE,CAAGyB,EAAAA,cAAAA,CAAevE,MAAM,CAAA,CAAA;;AApCtE8D,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAuCX;;;;AAIC,MACDpF,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAoCJ,IAA0B,EAAA;AAC5D,QAAA,OAAU,IAAI,CAAC6F,eAAe,CAAC7F,IAAK,CAAA,CAAA;AACtC,KAAA,CAAA;AAEA;;;AAGC,MACDwG,MAAAA,CAAAA,+BAEC,GAFDA,SAAAA,gCAAgCC,QAA0E,EAAA;AACxG,QAAA,IAAI,CAACV,UAAU,CAACI,IAAI,CAAC;YAAEO,EAAID,EAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AAEA;;;AAGC,MACDE,MAAAA,CAAAA,kCAEC,GAFDA,SAAAA,mCAAmCF,QAA0E,EAAA;AAC3G,QAAA,IAAI,CAACV,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM4C,EAAE,KAAKD,QAAAA,GAAY3C,KAAM+C,CAAAA,SAAS,GAAG,IAAQ,GAAA,KAAA,CAAA;;AAC/F,KAAA,CAAA;AAEA;;MAGA3F,MAAAA,CAAAA,SAwCC,GAxCDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAA8E,KAAA,GAAA,IAAI,EAAlE4F,KAA8D,GAAA,KAAA,CAAtEnB,MAAeC,EAAUmB,OAA6C,GAAA,KAAA,CAAvDnB,QAAmBE,EAAiBkB,iBAAmB,KAApClB,CAAAA,eAAAA,CAAAA;QAC1C,IAAuE,MAAA,GAAA,IAAI,EAAlDG,iBAA8C,MAA/DJ,CAAAA,eAAAA,EAAiCH,WAAcQ,GAAgB,MAA9BR,CAAAA,YAAAA,CAAAA;;AAEzCoB,QAAAA,KAAAA,CAAMpF,MAAM,GAAGqF,OAAQrF,CAAAA,MAAM,GAAG,CAAA,CAAA;QAChC,IAAK,IAAIF,IAAI,CAAGC,EAAAA,CAAAA,GAAIyE,YAAYxE,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAClD,IAAMyF,UAAAA,GAAaf,WAAW,CAAC1E,CAAE,CAAA,CAAA;AACjCyF,YAAAA,UAAAA,CAAWjC,IAAI,GAAGiC,UAAWhC,CAAAA,EAAE,GAAG,CAAA,CAAA;AACpC,SAAA;;QAEA,IAA8C,+BAAA,GAAA,IAAI,CAACnF,UAAU,CAACwB,cAAc,EAApEC,eAAkBF,GAAoB,+BAAtCE,CAAAA,gBAAAA,CAAAA;QACR,IAAgB2F,iBAAmB7F,eAA3B8F,CAAAA,MAAAA,CAAAA;QACR,IAAK,IAAI3F,KAAI,CAAGC,EAAAA,EAAAA,GAAIyF,eAAexF,MAAM,EAAEF,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;AACrD,YAAA,IAAI,CAAC4F,YAAY,CAACF,cAAc,CAAC1F,EAAE,CAAA,CAAA,CAAA;AACrC,SAAA;AACAH,QAAAA,eAAAA,CAAgBgG,WAAW,EAAA,CAAA;QAC3BhG,eAAgBiG,CAAAA,KAAK,CAACC,YAAY,CAACtB,cAAAA,CAAAA,CAAAA;QACnC,IAAK,IAAIzE,KAAI,CAAGC,EAAAA,EAAAA,GAAIwE,eAAevE,MAAM,EAAEF,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;YACrD,IAAMgG,KAAAA,GAAQvB,cAAc,CAACzE,EAAE,CAAA,CAAA;AAC/B,YAAA,IAAI,CAACgG,KAAO,EAAA,SAAA;YACZ,IAAMC,QAAAA,GAAWD,MAAMjD,aAAa,CAAA;AACpC,YAAA,IAAIyC,cAAc,CAACxF,EAAAA,CAAE,KAAK6C,eAAAA,CAAgBqD,QAAQ,EAAE;gBAClD,IAAID,QAAAA,KAAapD,eAAgBqD,CAAAA,QAAQ,EAAE;AACzCX,oBAAAA,OAAAA,CAAQZ,IAAI,CAACqB,KAAAA,CAAAA,CAAAA;AACf,iBAAA;aACK,MAAA;gBACL,IAAIC,QAAAA,KAAapD,eAAgBqD,CAAAA,QAAQ,EAAE;AACzCZ,oBAAAA,KAAAA,CAAMX,IAAI,CAACqB,KAAAA,CAAAA,CAAAA;AACb,iBAAA;AACF,aAAA;YACAR,cAAc,CAACxF,GAAE,GAAGiG,QAAAA,CAAAA;AACtB,SAAA;;AAEA,QAAA,IAAIX,MAAMpF,MAAM,GAAG,KAAKqF,OAAQrF,CAAAA,MAAM,GAAG,CAAG,EAAA;AAC1C,YAAA,IAAMiG,SAAY,GAAA,IAAI,CAAC5B,UAAU,CAAC6B,YAAY,EAAA,CAAA;YAC9C,IAAK,IAAIpG,KAAI,CAAGC,EAAAA,EAAAA,GAAIkG,UAAUjG,MAAM,EAAEF,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;gBAChD,IAAMiF,QAAAA,GAAWkB,SAAS,CAACnG,EAAE,CAAA,CAAA;AAC7B,gBAAA,CAACiF,SAASI,SAAS,IAAIJ,QAASC,CAAAA,EAAE,CAACI,KAAOC,EAAAA,OAAAA,CAAAA,CAAAA;AAC5C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGArD,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,IAAI,CAACqC,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM+C,SAAS,GAAG,IAAA,CAAA;;AAC9D,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQO,YAqDP,GArDD,SAAQA,YAAAA,CAAaS,KAAoB,EAAA;AACvC,QAAA,IAAML,QAAsB,IAAI,CAAC3B,eAAe,CAACgC,KAAAA,CAAML,KAAK,CAAC,CAAA;AAC7D,QAAA,OAAQK,MAAMC,aAAa;AACzB,YAAA,KAAKvC,gBAAgBwC,cAAc;AACjC,gBAAA,OAAQF,MAAM7H,IAAI;AAChB,oBAAA,KAAKsF,iBAAiB0C,WAAW;wBAC/BR,KAAMxC,CAAAA,IAAI,IAAIL,aAAAA,CAAcsD,MAAM,CAAA;wBAClCT,KAAMzC,CAAAA,cAAc,IAAIJ,aAAAA,CAAcsD,MAAM,CAAA;AAC5C,wBAAA,MAAA;AACF,oBAAA,KAAK3C,iBAAiB4C,SAAS;wBAC7BV,KAAMvC,CAAAA,EAAE,IAAIN,aAAAA,CAAcsD,MAAM,CAAA;AAChCT,wBAAAA,KAAAA,CAAMzC,cAAc,IAAI,CAACJ,aAAAA,CAAcsD,MAAM,CAAA;AAC7C,wBAAA,MAAA;AACF,oBAAA,KAAK3C,iBAAiB6C,YAAY;wBAChCX,KAAMxC,CAAAA,IAAI,IAAIL,aAAAA,CAAcyD,OAAO,CAAA;wBACnCZ,KAAMzC,CAAAA,cAAc,IAAIJ,aAAAA,CAAcyD,OAAO,CAAA;AAC7C,wBAAA,MAAA;AACF,oBAAA,KAAK9C,iBAAiB+C,UAAU;wBAC9Bb,KAAMvC,CAAAA,EAAE,IAAIN,aAAAA,CAAcyD,OAAO,CAAA;AACjCZ,wBAAAA,KAAAA,CAAMzC,cAAc,IAAI,CAACJ,aAAAA,CAAcyD,OAAO,CAAA;AAC9C,wBAAA,MAAA;AAGJ,iBAAA;AACA,gBAAA,MAAA;AACF,YAAA,KAAK7C,gBAAgB+C,MAAM;AACzB,gBAAA,IAA4B,KAAA,GAAA,IAAI,EAAfC,SAAW,KAApB9C,CAAAA,OAAAA,CAAAA;;AAER,gBAAA,IAAM+C,SAAsBD,MAAOpI,CAAAA,YAAY,CAACsI,eAAe,CAACC,OAAO,CAAA;;AAEvE,gBAAA,IAAMC,MAA4BJ,GAAAA,MAAAA,CAAOI,MAAM,CAACC,UAAU,CAAA;AAC1D,gBAAA,IAAQC,WAA8BF,GAAAA,MAAAA,CAA9BE,WAAaC,EAAAA,YAAAA,GAAiBH,MAAjBG,CAAAA,YAAAA,CAAAA;AACrB,gBAAA,IAAMC,UAAUF,WAAehB,IAAAA,MAAM1F,CAAC,GAAG,CAAA,CAAK,GAAA,GAAA,CAAA;AAC9C,gBAAA,IAAM6G,UAAUF,YAAgBjB,IAAAA,MAAMzF,CAAC,GAAG,CAAA,CAAK,GAAA,GAAA,CAAA;;AAE/C,gBAAA,OAAQyF,MAAM7H,IAAI;AAChB,oBAAA,KAAKsF,iBAAiB0C,WAAW;wBAC/BQ,MAAOS,CAAAA,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,aAAerB,EAAAA,KAAAA,CAAMsB,EAAE,EAAEJ,OAASC,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAChF,wBAAA,MAAA;AACF,oBAAA,KAAK1D,iBAAiB2C,MAAM;wBAC1BO,MAAOS,CAAAA,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,aAAerB,EAAAA,KAAAA,CAAMsB,EAAE,EAAEJ,OAASC,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAChF,wBAAA,MAAA;AACF,oBAAA,KAAK1D,iBAAiB4C,SAAS;wBAC7BM,MAAOS,CAAAA,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,WAAarB,EAAAA,KAAAA,CAAMsB,EAAE,EAAEJ,OAASC,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;wBAC9ER,MAAOS,CAAAA,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,cAAgBrB,EAAAA,KAAAA,CAAMsB,EAAE,EAAEJ,OAASC,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AACjF,wBAAA,MAAA;AAGJ,iBAAA;AACA,gBAAA,MAAA;AAGJ,SAAA;AACF,KAAA,CAAA;IAEA,MAAQE,CAAAA,mBA2BP,GA3BD,SAAQA,mBAAoBlJ,CAAAA,IAAY,EAAEoJ,SAAiB,EAAEL,OAAe,EAAEC,OAAe,EAAA;AAC3F,QAAA,IAAMK,aAAkC,GAAA;YACtCD,SAAAA,EAAAA,SAAAA;YACAL,OAAAA,EAAAA,OAAAA;YACAC,OAAAA,EAAAA,OAAAA;AACF,SAAA,CAAA;QACA,OAAQhJ,IAAAA;YACN,KAAK,aAAA;AACHqJ,gBAAAA,aAAAA,CAAclE,MAAM,GAAG,CAAA,CAAA;AACvBkE,gBAAAA,aAAAA,CAAcC,OAAO,GAAG,CAAA,CAAA;AACxB,gBAAA,MAAA;YACF,KAAK,aAAA;gBACHD,aAAclE,CAAAA,MAAM,GAAG,CAAC,CAAA,CAAA;AACxBkE,gBAAAA,aAAAA,CAAcC,OAAO,GAAG,CAAA,CAAA;AACxB,gBAAA,MAAA;YACF,KAAK,WAAA;AACHD,gBAAAA,aAAAA,CAAclE,MAAM,GAAG,CAAA,CAAA;AACvBkE,gBAAAA,aAAAA,CAAcC,OAAO,GAAG,CAAA,CAAA;AACxB,gBAAA,MAAA;YACF,KAAK,cAAA;AACHD,gBAAAA,aAAAA,CAAclE,MAAM,GAAG,CAAA,CAAA;AACvBkE,gBAAAA,aAAAA,CAAcC,OAAO,GAAG,CAAA,CAAA;AACxB,gBAAA,MAAA;AAGJ,SAAA;QACA,OAAO,IAAIC,aAAavJ,IAAMqJ,EAAAA,aAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAtMW7D,IAAAA,OAAAA,cAAAA,CAAAA;AAuMZ,CAAA;;ACtND;;IAGO,IAAKgE,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,aAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA;;ACAD;;IAGO,IAAMC,gBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,gBAAAA,CA2CT,UAAqC,EAC7BhE,OAAe,EAAA;aADf3F,UAAAA,GAAAA,UAAAA,CAAAA;aACA2F,OAAAA,GAAAA,OAAAA,CAAAA;AAxCFiE,QAAAA,IAAAA,CAAAA,KAAAA,GAAuBF,cAAc/F,IAAI,CAAA;AACzCkG,QAAAA,IAAAA,CAAAA,MAAAA,GAAyB/J,eAAe6D,IAAI,CAAA;AAI5CsC,QAAAA,IAAAA,CAAAA,UAAAA,GAAyC,IAAIC,oBAAAA,EAAAA,CAAAA;;AAsCnD,QAAA,IAAI,CAAC4D,IAAI,GAAGnE,OAAAA,CAAQoE,iBAAiB,CAAA;AACrC,QAAA,IAAI,CAACC,IAAI,GAAGC,qBAAAA,CAAsBC,IAAI,CAACC,MAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAI,CAACC,IAAI,GAAGC,oBAAAA,CAAqBH,IAAI,CAACC,MAAAA,CAAAA,CAAAA;QACtC,IAAI,CAAChH,cAAc,GAAG,IAAI,CAACA,cAAc,CAAC+G,IAAI,CAAC,IAAI,CAAA,CAAA;;AAlD1CP,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAqDX;;;;AAIC,MACDW,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,gBAAgBC,IAAmB,EAAA;AACjC,QAAA,OAAO,IAAI,CAACvK,UAAU,CAACwK,eAAe,CAACC,sBAAsB,CAACF,IAAAA,CAAAA,CAAAA;AAChE,KAAA,CAAA;AAEA;;MAGAG,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,GAAAA,GAAAA;QACE,IAA+D,KAAA,GAAA,IAAI,EAAzCnJ,kBAAqC,KAAvDE,CAAAA,gBAAAA,EAAmCkE,MAAS8C,GAAW,KAApB9C,CAAAA,OAAAA,CAAAA;AAC3C,QAAA,IAAI,CAACpE,eAAiB,EAAA;AACpB,YAAA,MAAM,IAAIwC,KAAM,CAAA,yBAAA,CAAA,CAAA;AAClB,SAAA;AACAxC,QAAAA,eAAAA,CAAgBoJ,KAAK,EAAA,CAAA;AACrB,QAAA,IAAI,CAACC,SAAS,CAAC9K,cAAAA,CAAe0D,OAAO,CAAA,CAAA;QACrC,IAAI,CAACxD,UAAU,CAACmB,eAAe,EAAA,CAAA;QAC/B,IAAI,CAACsH,MAAOoC,CAAAA,QAAQ,EAAE;AACpBpC,YAAAA,MAAAA,CAAOqC,KAAK,EAAA,CAAA;AACZrC,YAAAA,MAAAA,CAAOsC,MAAM,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,IAiBC,GAjBDA,SAAAA,IAAAA,GAAAA;AACE,QAAA,IAA0E,KAAA,GAAA,IAAI,EAApDzJ,eAAgD,GAAA,KAAA,CAAlEE,gBAAmCkE,EAAS8C,MAAsB,GAAA,KAAA,CAA/B9C,OAAiBmE,EAAMmB,MAAQ,KAAdnB,CAAAA,IAAAA,CAAAA;AAC5D,QAAA,IAAI,CAACvI,eAAiB,EAAA;AACpB,YAAA,MAAM,IAAIwC,KAAM,CAAA,0BAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAI,IAAI,CAAC8F,MAAM,KAAK/J,cAAAA,CAAe0D,OAAO,EAAE;AAC1C,YAAA,MAAM,IAAIO,KAAM,CAAA,yBAAA,CAAA,CAAA;AAClB,SAAA;AACAkH,QAAAA,GAAAA,CAAIC,gBAAgB,GAAG,IAAA,CAAA;AACvBD,QAAAA,GAAAA,CAAIE,eAAe,GAAGF,GAAIG,CAAAA,gBAAgB,GAAG,CAAA,CAAA;AAC7C7J,QAAAA,eAAAA,CAAgByJ,IAAI,EAAA,CAAA;AACpB,QAAA,IAAI,CAACJ,SAAS,CAAC9K,cAAAA,CAAeuL,MAAM,CAAA,CAAA;QACpC,IAAI,CAACrL,UAAU,CAACsL,cAAc,EAAA,CAAA;QAC9B,IAAI,CAAC7C,MAAOoC,CAAAA,QAAQ,EAAE;AACpBpC,YAAAA,MAAAA,CAAOqC,KAAK,EAAA,CAAA;AACZrC,YAAAA,MAAAA,CAAOsC,MAAM,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDQ,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,wBAAwB5E,QAAyC,EAAA;AAC/D,QAAA,IAAI,CAACV,UAAU,CAACI,IAAI,CAAC;YAAEO,EAAID,EAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AAEA;;;AAGC,MACD6E,MAAAA,CAAAA,0BAEC,GAFDA,SAAAA,2BAA2B7E,QAAyC,EAAA;AAClE,QAAA,IAAI,CAACV,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM4C,EAAE,KAAKD,QAAAA,GAAY3C,KAAM+C,CAAAA,SAAS,GAAG,IAAQ,GAAA,KAAA,CAAA;;AAC/F,KAAA,CAAA;AAEA;;AAEC,MACD6D,MAAAA,CAAAA,SAOC,GAPDA,SAAAA,UAAU5G,KAAqB,EAAA;QAC7B,IAAI,CAAC6F,MAAM,GAAG7F,KAAAA,CAAAA;AACd,QAAA,IAAM6D,SAAY,GAAA,IAAI,CAAC5B,UAAU,CAAC6B,YAAY,EAAA,CAAA;QAC9C,IAAK,IAAIpG,IAAI,CAAGC,EAAAA,CAAAA,GAAIkG,UAAUjG,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAChD,IAAMiF,QAAAA,GAAWkB,SAAS,CAACnG,CAAE,CAAA,CAAA;AAC7B,YAAA,CAACiF,QAASI,CAAAA,SAAS,IAAIJ,QAAAA,CAASC,EAAE,CAAC5C,KAAAA,CAAAA,CAAAA;AACrC,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACDyH,OAAAA,WAqBC,GArBDA,SAAAA,WAAYlB,CAAAA,IAAmB,EAAEmB,QAAqB,EAAA;;QACpD,OAAO,IAAIC,OAAQ,CAAA,SAACC,OAASC,EAAAA,MAAAA,EAAAA;AAC3B,YAAA,IAAQ7L,SAAAA,GAAAA,KAAAA,CAAAA,UAAAA,CAAAA;;AAER,YAAA,IAAM8L,mBAAmB,EAAE,CAAA;YAC3B,IAAK,IAAIpK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC/C,gBAAA,IAA8CgK,cAAAA,QAAQ,CAAChK,EAAE,EAA/BqK,kBAAoBL,WAAtCM,CAAAA,gBAAAA,CAAAA;gBACRD,eAAmBD,IAAAA,gBAAAA,CAAiBzF,IAAI,CAAC0F,eAAAA,CAAAA,CAAAA;AAC3C,aAAA;YACAE,SAAUzB,CAAAA,eAAe,CACtB0B,cAAc,CAAC,KAAA,CAAKpC,IAAI,EAAES,IAAMuB,EAAAA,gBAAAA,CAAAA,CAChCK,IAAI,CAAC,SAAC5K,eAAAA,EAAAA;AACL,gBAAA,KAAA,CAAKqI,KAAK,GAAGW,IAAAA,CAAAA;AACb,gBAAA,KAAA,CAAK9I,gBAAgB,GAAGF,eAAAA,CAAAA;gBACxB,KAAKqJ,CAAAA,SAAS,CAAC9K,cAAAA,CAAesM,WAAW,CAAA,CAAA;gBACzC7K,eAAgB8K,CAAAA,sBAAsB,CAAC,KAAA,CAAKlJ,cAAc,CAAA,CAAA;AAC1D5B,gBAAAA,eAAAA,CAAgB+K,gBAAgB,EAAA,CAAA;AAChCL,gBAAAA,SAAAA,CAAUM,cAAc,EAAA,CAAA;AACxBX,gBAAAA,OAAAA,EAAAA,CAAAA;aACCC,EAAAA,MAAAA,CAAAA,CAAAA;AACP,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;MAGAzK,MAAAA,CAAAA,SAKC,GALDA,SAAAA,SAAAA,GAAAA;QACE,IAAyD,KAAA,GAAA,IAAI,EAA/C6J,MAA2C,KAAjDnB,CAAAA,IAAAA,EAAWrI,eAAkBF,GAAoB,KAAtCE,CAAAA,gBAAAA,CAAAA;QACnBwJ,GAAIC,CAAAA,gBAAgB,GAAG3J,eAAAA,CAAgBiL,WAAW,CAAA;QAClDvB,GAAIE,CAAAA,eAAe,GAAG5J,eAAAA,CAAgB0B,gBAAgB,CAAA;QACtDgI,GAAIG,CAAAA,gBAAgB,GAAG7J,eAAAA,CAAgB2B,iBAAiB,CAAA;AAC1D,KAAA,CAAA;AAEA;;MAGAuJ,MAAAA,CAAAA,yBAMC,GANDA,SAAAA,yBAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAAC5C,MAAM,KAAK/J,cAAAA,CAAe0D,OAAO,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC/B,gBAAgB,CAACwI,qBAAqB,CAAA;SAC7C,MAAA;YACL,OAAO,IAAI,CAACD,IAAI,CAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAEA;;MAGA0C,MAAAA,CAAAA,wBAMC,GANDA,SAAAA,wBAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAAC7C,MAAM,KAAK/J,cAAAA,CAAe0D,OAAO,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC/B,gBAAgB,CAAC4I,oBAAoB,CAAA;SAC5C,MAAA;YACL,OAAO,IAAI,CAACD,IAAI,CAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAuC,MAAAA,CAAAA,KAMC,GANDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxBpL,kBAAoB,KAAtCE,CAAAA,gBAAAA,CAAAA;AACR,QAAA,IAAI,CAACF,eAAiB,EAAA;YACpB,OAAOoK,OAAAA,CAAQE,MAAM,CAAC,0BAAA,CAAA,CAAA;AACxB,SAAA;AACA,QAAA,OAAOtK,gBAAgBqL,GAAG,EAAA,CAAA;AAC5B,KAAA,CAAA;IAEA,MAAQzJ,CAAAA,cAYP,GAZD,SAAQA,cAAAA,GAAAA;AACN,QAAA,IAA0E,KAAA,GAAA,IAAI,EAAhE8H,GAA4D,GAAA,KAAA,CAAlEnB,IAAWrI,EAAkBF,eAAqC,GAAA,KAAA,CAAvDE,gBAAmCkE,EAAS8C,SAAW,KAApB9C,CAAAA,OAAAA,CAAAA;AACtDsF,QAAAA,GAAAA,CAAIC,gBAAgB,GAAG,IAAA,CAAA;AACvBD,QAAAA,GAAAA,CAAIE,eAAe,GAAGF,GAAIG,CAAAA,gBAAgB,GAAG,CAAA,CAAA;AAC7C7J,QAAAA,eAAAA,CAAgBsL,mBAAmB,EAAA,CAAA;QACnC,IAAI,CAACpL,gBAAgB,GAAG,IAAA,CAAA;AACxB,QAAA,IAAI,CAACmJ,SAAS,CAAC9K,cAAAA,CAAe6D,IAAI,CAAA,CAAA;QAClC,IAAI,CAAC3D,UAAU,CAACmD,cAAc,EAAA,CAAA;QAC9B,IAAI,CAACsF,MAAOoC,CAAAA,QAAQ,EAAE;AACpBpC,YAAAA,MAAAA,CAAOqC,KAAK,EAAA,CAAA;AACZrC,YAAAA,MAAAA,CAAOsC,MAAM,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAnH,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,IAAI,CAACqC,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM+C,SAAS,GAAG,IAAA,CAAA;;AAC5D,QAAA,IAAI,CAACiD,IAAI,GAAG,IAAI,CAACI,IAAI,GAAG,IAAA,CAAA;AAC1B,KAAA,CAAA;AA1NWT,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAcPY,GAAAA,EAAAA,MAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACX,KAAK,CAAA;AACnB,aAAA;;;YAKIrG,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACsG,MAAM,CAAA;AACpB,aAAA;;;YAKIiD,GAAAA,EAAAA,oBAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACrL,gBAAgB,CAACsL,mBAAmB,CAAA;AAClD,aAAA;;;YAKIC,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACvL,gBAAgB,CAACuL,SAAS,CAAA;AACxC,aAAA;;;AArCWrD,IAAAA,OAAAA,gBAAAA,CAAAA;AA2NZ,CAAA;;AC5ND;;IAGO,IAAMsD,iBAAN,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AA6BX,IAAA,MAAA,CAASC,kBAER,GAFD,SAASA,kBAAAA,CAAwCC,OAA+B,EAAA;QAC9E,OAAO,IAAI,CAAC3C,eAAe,CAAC0C,kBAAkB,CA9BrCD,iBA8BwDG,CAAAA,WAAW,CAACC,GAAG,CAACF,OAAAA,CAAAA,CAAAA,CAAAA;AACnF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASG,UAiBR,GAjBD,SAASA,UAAAA,CACPpN,IAAO,EAAA;AACP,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGqN,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAwC,CAAA,CAAA;;AAExC,QAAA,IAAI,IAAI,CAAC/L,cAAc,CAACC,gBAAgB,EAAE;AACxC,YAAA,MAAM,IAAIsC,KAAM,CAAA,qDAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACyG,eAAe,CAAC0C,kBAAkB,CAxCnCD,iBAwCsDG,CAAAA,WAAW,CAACC,GAAG,CAACnN,IAAQ,CAAA,CAAA,EAAA;AACrF,YAAA,MAAM,IAAI6D,KAAM,CAAA,8BAAA,CAAA,CAAA;AAClB,SAAA;QACA,IAAQ2H,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAe,YAAXgK,QAAQ,CAAChK,EAAE,EAAYxB,IAAAA,CAAAA,EAAM,MAAM,IAAI6D,KAAM,CAAA,4BAAA,CAAA,CAAA;AACnD,SAAA;AACA,QAAA,IAAMoJ,UAAU,UAAIjN,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;YAAK,IAAI;AAAKqN,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAClC7B,QAAAA,QAAAA,CAASrF,IAAI,CAAC8G,OAAAA,CAAAA,CAAAA;QACd,OAAOA,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASK,UAQR,GARD,SAASA,UAAAA,CAAgCtN,IAA4B,EAAA;QACnE,IAAQwL,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3B,IAAW,WAAPyL,CAAAA,OAAAA,EAAmBjN,IAAM,CAAA,EAAA;gBAC3B,OAAOiN,OAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASM,OAmBR,GAnBD,SAASA,OAAQC,CAAAA,WAA0B,EAAEC,OAAuB,EAAA;;AAAvBA,QAAAA,IAAAA,oBAAAA,OAAmB,GAAA,IAAA,CAAA;QAC9D,IAAQnM,cAAmB,GAAA,IAAI,CAAvBA,cAAAA,CAAAA;QACR,IAAIA,cAAAA,CAAeC,gBAAgB,EAAE;AACnC,YAAA,MAAM,IAAIsC,KAAM,CAAA,sCAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC6J,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI7J,KAAM,CAAA,oCAAA,CAAA,CAAA;AAClB,SAAA;QACA,OAAO,IAAI4H,OAAQ,CAAA,SAACC,OAASC,EAAAA,MAAAA,EAAAA;;AAE3BrK,YAAAA,cAAAA,CAAe8I,eAAe,CAACoD,WAAavB,CAAAA,CAAAA,IAAI,CAAC,WAAA;gBAC/C3K,cAAeoJ,CAAAA,SAAS,CAAC9K,cAAAA,CAAe+N,YAAY,CAAA,CAAA;;AAEpDrM,gBAAAA,cAAAA,CAAeiK,WAAW,CAACiC,WAAAA,EAAa,MAAKhC,QAAQ,CAAA,CAAES,IAAI,CAAC,WAAA;AAC1DwB,oBAAAA,OAAAA,IAAWnM,eAAekJ,GAAG,EAAA,CAAA;AAC7BkB,oBAAAA,OAAAA,EAAAA,CAAAA;iBACCC,EAAAA,MAAAA,CAAAA,CAAAA;aACFA,EAAAA,MAAAA,CAAAA,CAAAA;AACL,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEA,MAASiC,CAAAA,MAMR,GAND,SAASA,MAAAA,GAAAA;;QACP,OAAO,IAAInC,OAAQ,CAAA,SAACC,OAASC,EAAAA,MAAAA,EAAAA;AAC3B,YAAA,KAAA,CAAKrK,cAAc,CAACmL,KAAK,EAAA,CAAGR,IAAI,CAAC,WAAA;AAC/BP,gBAAAA,OAAAA,EAAAA,CAAAA;aACCC,EAAAA,MAAAA,CAAAA,CAAAA;AACL,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASJ,WAMR,GAND,SAASA,WAAYhD,CAAAA,MAAc,EAAEsF,QAAmB,EAAA;QACtD,IAAI,CAACC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAACxD,eAAe,GAAGuD,QAAAA,CAAAA;AACvB,QAAA,IAAI,CAACvM,cAAc,GAAG,IAAImI,gBAAAA,CAAiB,IAAI,EAAElB,MAAAA,CAAAA,CAAAA;AACjD,QAAA,IAAI,CAACpI,YAAY,GAAG,IAAIqF,cAAAA,CAAe,IAAI,EAAE+C,MAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAI,CAACwF,aAAa,GAAG,IAAIlO,gBAAgB,IAAI,CAAA,CAAA;AAC/C,KAAA,CAAA;IAEA,MAASmO,CAAAA,OAWR,GAXD,SAASA,OAAAA,GAAAA;QACP,IAAQ1M,cAAmB,GAAA,IAAI,CAAvBA,cAAAA,CAAAA;AACR,QAAA,IAAIA,cAAe+B,CAAAA,KAAK,KAAKzD,cAAAA,CAAe0D,OAAO,EAAE,OAAA;AACrDhC,QAAAA,cAAAA,CAAeJ,SAAS,EAAA,CAAA;QACxB,IAAI,CAACf,YAAY,CAACe,SAAS,EAAA,CAAA;QAC3B,IAAI,CAAC6M,aAAa,CAAC7M,SAAS,EAAA,CAAA;QAC5B,IAAQsK,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3ByL,OAAQgB,CAAAA,OAAO,IAAIhB,OAAAA,CAAQ/L,SAAS,EAAA,CAAA;AACtC,SAAA;AACF,KAAA,CAAA;IAEA,MAASgN,CAAAA,QAYR,GAZD,SAASA,QAAAA,GAAAA;;AACP,QAAA,IAAI,IAAI,CAAC5M,cAAc,CAACC,gBAAgB,EAAE;AACxC,YAAA,IAAI,CAACqM,MAAM,EAAG3B,CAAAA,IAAI,CAAC,WAAA;gBACjB,KAAK3K,CAAAA,cAAc,CAACoC,UAAU,EAAA,CAAA;gBAC9B,KAAKvD,CAAAA,YAAY,CAACuD,UAAU,EAAA,CAAA;gBAC5B,KAAKqK,CAAAA,aAAa,CAACrK,UAAU,EAAA,CAAA;AAC/B,aAAA,CAAA,CAAA;SACK,MAAA;YACL,IAAI,CAACpC,cAAc,CAACoC,UAAU,EAAA,CAAA;YAC9B,IAAI,CAACvD,YAAY,CAACuD,UAAU,EAAA,CAAA;YAC5B,IAAI,CAACqK,aAAa,CAACrK,UAAU,EAAA,CAAA;AAC/B,SAAA;AACF,KAAA,CAAA;IAEA,MAAS6I,CAAAA,yBAER,GAFD,SAASA,yBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI,CAACjL,cAAc,CAACiL,yBAAyB,EAAA,CAAA;AACtD,KAAA,CAAA;IAEA,MAASC,CAAAA,wBAER,GAFD,SAASA,wBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI,CAAClL,cAAc,CAACkL,wBAAwB,EAAA,CAAA;AACrD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2B,0BAER,GAFD,SAASA,0BAAAA,CAA2BnO,IAAgB,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC+N,aAAa,CAAC5K,oBAAoB,CAACnD,IAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AAEA;;MAGAoL,MAAAA,CAAAA,cAMC,GANDA,SAAAA,cAAAA,GAAAA;QACE,IAAQI,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3ByL,OAAQgB,CAAAA,OAAO,IAAIhB,OAAAA,CAAQ7B,cAAc,EAAA,CAAA;AAC3C,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAiB,MAAAA,CAAAA,cAMC,GANDA,SAAAA,cAAAA,GAAAA;QACE,IAAQb,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3ByL,OAAQgB,CAAAA,OAAO,IAAIhB,OAAAA,CAAQZ,cAAc,EAAA,CAAA;AAC3C,SAAA;AACF,KAAA,CAAA;AAEA;;MAGApL,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,eAAAA,GAAAA;QACE,IAAI,CAAC8M,aAAa,CAAC9M,eAAe,EAAA,CAAA;QAClC,IAAQuK,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3ByL,OAAQgB,CAAAA,OAAO,IAAIhB,OAAAA,CAAQhM,eAAe,EAAA,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAgC,MAAAA,CAAAA,cASC,GATDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAAC8K,aAAa,CAAC9K,cAAc,EAAA,CAAA;QACjC,IAAQuI,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;QACR,IAAK,IAAIhK,IAAI,CAAGC,EAAAA,CAAAA,GAAI+J,SAAS9J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAC/C,IAAMyL,OAAAA,GAAUzB,QAAQ,CAAChK,CAAE,CAAA,CAAA;YAC3ByL,OAAQgB,CAAAA,OAAO,IAAIhB,OAAAA,CAAQhK,cAAc,EAAA,CAAA;AACzCgK,YAAAA,OAAAA,CAAQvJ,UAAU,EAAA,CAAA;AACpB,SAAA;AACA8H,QAAAA,QAAAA,CAAS9J,MAAM,GAAG,CAAA,CAAA;AACpB,KAAA,CAAA;AAxLWqL,IAAAA,aAAAA,CAAAA,iBAAAA,EAAAA;;YAcEvB,GAAAA,EAAAA,UAAAA;AAAb,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACsC,SAAS,CAAA;AACvB,aAAA;;;YAEaM,GAAAA,EAAAA,QAAAA;AAAb,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACV,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAoB5J,KAAa,EAAA;AAC/B,gBAAA,IAAI,IAAI,CAACxC,cAAc,CAACC,gBAAgB,EAAE;AACxC,oBAAA,MAAM,IAAIsC,KAAM,CAAA,oDAAA,CAAA,CAAA;AAClB,iBAAA;gBACA,IAAI,CAAC6J,OAAO,GAAG5J,KAAAA,CAAAA;AACjB,aAAA;;;AA3BWiJ,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BsB,gBAyLtC,CAAA,CAAA;AAxLC,iBADWtB,iBAEJG,CAAAA,WAAAA,GAAkE,IAAIoB,GAAAA,EAAAA,CAAAA;AAyL/E;;IAGO,SAASC,iBAAAA,CAAuCvO,IAAmB,EAAA;AACxE,IAAA,OAAO,SAACiN,OAAAA,EAAAA;AACNF,QAAAA,iBAAAA,CAAkBG,WAAW,CAACzK,GAAG,CAACwK,OAASjN,EAAAA,IAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AACF,CAAA;AAoGA;AACA,SAASwO,WAAAA,CAAYC,WAAgB,EAAEC,SAAgB,EAAA;IACrDA,SAAUC,CAAAA,OAAO,CAAC,SAACC,QAAAA,EAAAA;AACjBC,QAAAA,MAAAA,CAAOC,mBAAmB,CAACF,QAAAA,CAASG,SAAS,CAAEJ,CAAAA,OAAO,CAAC,SAACK,IAAAA,EAAAA;AACtDH,YAAAA,MAAAA,CAAOI,cAAc,CACnBR,WAAYM,CAAAA,SAAS,EACrBC,IACAH,EAAAA,MAAAA,CAAOK,wBAAwB,CAACN,SAASG,SAAS,EAAEC,IAASH,CAAAA,IAAAA,MAAAA,CAAOM,MAAM,CAAC,IAAA,CAAA,CAAA,CAAA;AAE/E,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA;AAEAX,WAAAA,CAAYH,gBAAW,EAAA;AAACtB,IAAAA,iBAAAA;AAAkB,CAAA,CAAA;;AC3T1C;;IAGO,IAAeqC,SAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,SAAAA,CAuBlB,UAAuC,EAC7BC,KAAoB,EAAA;AAC9B,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGhC,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAEavN,QAAAA,IAAAA,0BAAAA,CAAAA;aAJjBA,UAAAA,GAAAA,UAAAA,CAAAA;aACAuP,KAAAA,GAAAA,KAAAA,CAAAA;aArBFC,QAAoB,GAAA,IAAA,CAAA;QAwB5B,IAAI,CAACxD,gBAAgB,GAAMhM,CAAAA,6BAAAA,UAAWwK,CAAAA,eAAe,EAACiF,qBAAqB,CAAhDzP,KAAAA,CAAAA,0BAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;AAAiDuP,YAAAA,KAAAA;AAAUhC,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACtF,QAAA,IAAI,CAACmC,SAAS,EAAA,CAAA;;AA5BIJ,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AA+BpB;;AAEC,MACDI,MAAAA,CAAAA,SAAoB,GAApBA,SAAAA,SAAmB,GAAA,EAAA,CAAA;AAEnB;;AAEC,MACDC,MAAAA,CAAAA,UAAqB,GAArBA,SAAAA,UAAoB,GAAA,EAAA,CAAA;AAEpB;;AAEC,MACDvO,MAAAA,CAAAA,SAAoB,GAApBA,SAAAA,SAAmB,GAAA,EAAA,CAAA;AAEnB;;AAEC,MACDmL,MAAAA,CAAAA,cAAyB,GAAzBA,SAAAA,cAAwB,GAAA,EAAA,CAAA;AAExB;;AAEC,MACDpL,MAAAA,CAAAA,eAA0B,GAA1BA,SAAAA,eAAyB,GAAA,EAAA,CAAA;AAEzB;;AAEC,MACDmK,MAAAA,CAAAA,cAAyB,GAAzBA,SAAAA,cAAwB,GAAA,EAAA,CAAA;AAExB;;AAEC,MACDnI,MAAAA,CAAAA,cAAyB,GAAzBA,SAAAA,cAAwB,GAAA,EAAA,CAAA;AAExB;;AAEC,MACDS,MAAAA,CAAAA,UAAqB,GAArBA,SAAAA,UAAoB,GAAA,EAAA,CAAA;AArEA0L,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YAQhBnB,GAAAA,EAAAA,SAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACqB,QAAQ,CAAA;AACtB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAYxL,KAAc,EAAA;AACxB,gBAAA,IAAI,IAAI,CAACmK,OAAO,KAAKnK,KAAO,EAAA;oBAC1B,IAAI,CAACwL,QAAQ,GAAGxL,KAAAA,CAAAA;AAChBA,oBAAAA,KAAAA,GAAQ,IAAI,CAAC0L,SAAS,EAAK,GAAA,IAAI,CAACC,UAAU,EAAA,CAAA;AAC5C,iBAAA;AACF,aAAA;;;AAjBoBL,IAAAA,OAAAA,SAAAA,CAAAA;AAsErB,CAAA;;AC7EM,IAAA,aAAKM,iBAAAA,SAAAA,aAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,aAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA;;ACLM,IAAA,sBAAKC,iBAAAA,SAAAA,sBAAAA,EAAAA;;;;;;;AAAAA,IAAAA,OAAAA,sBAAAA,CAAAA;AAOX,CAAA,CAAA,EAAA;;ACGD;;IAGO,IAAeC,kBAAf,iBAAA,SAAA,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;AAMVC,QAAAA,KAAAA,GAAAA,SAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,iBAAAA,GAAyB,EAAE,EAC3BC,KAAAA,CAAAA,QAAAA,GAAgB,EAAE,EAClBnK,KAAAA,CAAAA,MAAAA,GAAc,EAAE,EAChBoK,KAAAA,CAAAA,QAAAA,GAAgB,EAAE,EAAA,KAAA,CAClBnK,WAAgB,EAAE,EAAA,KAAA,CAClBE,kBAAmD,EAAC,EAAA,KAAA,CACtDC,aAAyC,IAAIC,oBAAAA,EAAAA,CAAAA;;;AAZjC4J,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAcpB;;;AAGC,MACDI,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,mBAAmBvJ,QAAqF,EAAA;AACtG,QAAA,IAAI,CAACV,UAAU,CAACI,IAAI,CAAC;YAAEO,EAAID,EAAAA,QAAAA;AAAS,SAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AAEA;;;AAGC,MACDwJ,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,sBAAsBxJ,QAAqF,EAAA;AACzG,QAAA,IAAI,CAACV,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM4C,EAAE,KAAKD,QAAAA,GAAY3C,KAAM+C,CAAAA,SAAS,GAAG,IAAQ,GAAA,KAAA,CAAA;;AAC/F,KAAA,CAAA;IAEA,MAAS3F,CAAAA,SAuER,GAvED,SAASA,SAAAA,GAAAA;QACP,IAA8C,+BAAA,GAAA,IAAI,CAACpB,UAAU,CAACwB,cAAc,EAApEC,eAAkBF,GAAoB,+BAAtCE,CAAAA,gBAAAA,CAAAA;QACR,IAAe2O,gBAAkB7O,eAAzBiG,CAAAA,KAAAA,CAAAA;AACR,QAAA,IAQI,KAAA,GAAA,IAAI,EAPYuE,eAOhB,GAAA,KAAA,CAPFC,gBACA+D,EAAmBM,gBAMjB,GAAA,KAAA,CANFN,iBACA/J,EAAiBkB,cAKf,GAAA,KAAA,CALFlB,eACAgK,EAAUM,UAIR,GAAA,KAAA,CAJFN,QACAnK,EAAQmB,KAGN,GAAA,KAAA,CAHFnB,MACAoK,EAAUM,OAER,GAAA,KAAA,CAFFN,QACAnK,EAAUmB,UACR,KADFnB,CAAAA,QAAAA,CAAAA;AAEF,QAAA,IAAI,CAACsK,aAAAA,IAAiB,CAACC,gBAAAA,CAAiBzO,MAAM,EAAE;AAC9C,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACmK,eAAgByE,CAAAA,cAAc,CAACjP,eAAAA,EAAiB6O,eAAeC,gBAAmB,CAAA,EAAA;AACrF,YAAA,OAAA;AACF,SAAA;AACArJ,QAAAA,KAAAA,CAAMpF,MAAM,GAAG2O,OAAAA,CAAQ3O,MAAM,GAAGqF,OAAAA,CAAQrF,MAAM,GAAG,CAAA,CAAA;AACjDmK,QAAAA,eAAAA,CAAgB0E,gBAAgB,CAAClP,eAAAA,EAAiB6O,eAAeC,gBAAkB,EAAA,IAAI,CAACK,gBAAgB,CAAA,CAAA;QACxG,IAAK,IAAIhP,IAAI,CAAGC,EAAAA,CAAAA,GAAI0O,iBAAiBzO,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YACvD,IAAMiP,eAAAA,GAAkBN,gBAAgB,CAAC3O,CAAE,CAAA,CAAA;AAC3C,YAAA,OAAQiP,gBAAgBpN,KAAK;AAC3B,gBAAA,KAAKsM,uBAAuBe,SAAS;oBACnC,IAAMC,gBAAAA,GAAmBF,gBAAgBG,OAAO,CAAA;oBAChD,IAAK,IAAIC,IAAI,CAAGpP,EAAAA,EAAAA,GAAIkP,iBAAiBjP,MAAM,EAAEmP,CAAIpP,GAAAA,EAAAA,EAAGoP,CAAK,EAAA,CAAA;wBACvD,IAAMD,OAAAA,GAAUD,gBAAgB,CAACE,CAAE,CAAA,CAAA;wBACnC,IAAMC,OAAAA,GAAUF,QAAQzH,EAAE,CAAA;AAC1B,wBAAA,IAAInC,cAAc,CAAC8J,OAAAA,CAAQ,KAAKzM,eAAAA,CAAgBqD,QAAQ,EAAE;AACxDX,4BAAAA,OAAAA,CAAQZ,IAAI,CAACyK,OAAAA,CAAAA,CAAAA;AACbR,4BAAAA,UAAAA,CAAWW,MAAM,CAACX,UAAWY,CAAAA,OAAO,CAACJ,OAAU,CAAA,EAAA,CAAA,CAAA,CAAA;AACjD,yBAAA;AACA5J,wBAAAA,cAAc,CAAC8J,OAAAA,CAAQ,GAAGzM,eAAAA,CAAgBG,WAAW,CAAA;AACvD,qBAAA;AACA,oBAAA,MAAA;AACF,gBAAA,KAAKmL,uBAAuBsB,QAAQ;oBAClC,IAAQL,WAAYH,eAAZG,CAAAA,OAAAA,CAAAA;oBACR,IAAK,IAAIC,KAAI,CAAGpP,EAAAA,EAAAA,GAAImP,SAAQlP,MAAM,EAAEmP,EAAIpP,GAAAA,EAAAA,EAAGoP,EAAK,EAAA,CAAA;wBAC9C,IAAMK,aAAAA,GAAgBN,QAAO,CAACC,EAAE,CAAA,CAAA;wBAChC,IAAMC,QAAAA,GAAUI,cAAc/H,EAAE,CAAA;AAChC,wBAAA,IAAI+H,aAAc7N,CAAAA,KAAK,KAAKgB,eAAAA,CAAgBqD,QAAQ,EAAE;AACpD,4BAAA,IAAIV,cAAc,CAAC8J,QAAAA,CAAQ,KAAKzM,eAAAA,CAAgBqD,QAAQ,EAAE;AACxD2I,gCAAAA,OAAAA,CAAQlK,IAAI,CAAC+K,aAAAA,CAAAA,CAAAA;6BACR,MAAA;AACLpK,gCAAAA,KAAAA,CAAMX,IAAI,CAAC+K,aAAAA,CAAAA,CAAAA;AACXlK,gCAAAA,cAAc,CAAC8J,QAAAA,CAAQ,GAAGzM,eAAAA,CAAgBqD,QAAQ,CAAA;AAClD0I,gCAAAA,UAAAA,CAAWjK,IAAI,CAAC+K,aAAAA,CAAAA,CAAAA;AAClB,6BAAA;yBACK,MAAA;AACL,4BAAA,IAAIlK,cAAc,CAAC8J,QAAAA,CAAQ,KAAKzM,eAAAA,CAAgBqD,QAAQ,EAAE;AACxDX,gCAAAA,OAAAA,CAAQZ,IAAI,CAAC+K,aAAAA,CAAAA,CAAAA;AACbd,gCAAAA,UAAAA,CAAWW,MAAM,CAACX,UAAWY,CAAAA,OAAO,CAACE,aAAgB,CAAA,EAAA,CAAA,CAAA,CAAA;AACvD,6BAAA;AACAlK,4BAAAA,cAAc,CAAC8J,QAAAA,CAAQ,GAAGI,aAAAA,CAAc7N,KAAK,CAAA;AAC/C,yBAAA;AACF,qBAAA;AACA,oBAAA,MAAA;AAGJ,aAAA;AACF,SAAA;QACA,IAAK,IAAI7B,KAAI2O,gBAAiBzO,CAAAA,MAAM,GAAG,CAAGF,EAAAA,EAAAA,IAAK,GAAGA,EAAK,EAAA,CAAA;YACrD2O,gBAAgB,CAAC3O,EAAE,CAAA,CAAC6B,KAAK,KAAKsM,sBAAuBe,CAAAA,SAAS,IAAIP,gBAAAA,CAAiBY,MAAM,CAACvP,EAAG,EAAA,CAAA,CAAA,CAAA;AAC/F,SAAA;QACA,IAAIsF,KAAAA,CAAMpF,MAAM,GAAG,CAAK2O,IAAAA,OAAAA,CAAQ3O,MAAM,GAAG,CAAKqF,IAAAA,OAAAA,CAAQrF,MAAM,GAAG,CAAG,EAAA;AAChE,YAAA,IAAMiG,SAAY,GAAA,IAAI,CAAC5B,UAAU,CAAC6B,YAAY,EAAA,CAAA;YAC9C,IAAK,IAAIpG,KAAI,CAAGC,EAAAA,EAAAA,GAAIkG,UAAUjG,MAAM,EAAEF,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;gBAChD,IAAMiF,QAAAA,GAAWkB,SAAS,CAACnG,EAAE,CAAA,CAAA;AAC7B,gBAAA,CAACiF,SAASI,SAAS,IAAIJ,SAASC,EAAE,CAACI,OAAOuJ,OAAStJ,EAAAA,OAAAA,CAAAA,CAAAA;AACrD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAASqE,CAAAA,cAER,GAFD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAI,CAACzF,MAAM,CAACjE,MAAM,GAAG,IAAI,CAACqO,QAAQ,CAACrO,MAAM,GAAG,IAAI,CAACkE,QAAQ,CAAClE,MAAM,GAAG,CAAA,CAAA;AACrE,KAAA,CAAA;IAEA,MAASuB,CAAAA,cAIR,GAJD,SAASA,cAAAA,GAAAA;;AAEP,QAAA,IAAI,CAAC4M,iBAAiB,CAACnO,MAAM,GAAG,IAAI,CAACoO,QAAQ,CAACpO,MAAM,GAAG,IAAI,CAACiE,MAAM,CAACjE,MAAM,GAAG,IAAI,CAACqO,QAAQ,CAACrO,MAAM,GAAG,IAAI,CAACkE,QAAQ,CAAClE,MAAM,GAAI,CAAA,CAAA;AAC3H,QAAA,IAAI,CAACqE,UAAU,CAACa,aAAa,CAAC,SAAC9C,KAAAA,EAAAA;AAAWA,YAAAA,OAAAA,KAAAA,CAAM+C,SAAS,GAAG,IAAA,CAAA;;AAC9D,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUsK,mBAOT,GAPD,SAAUA,mBAAAA,CAAoBV,eAAkB,EAAA;AAC9C,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxB5E,kBAAoB,KAAtCC,CAAAA,gBAAAA,CAAAA;QACR,IAAI,IAAI,CAAChM,UAAU,CAACwB,cAAc,CAACC,gBAAgB,IAAI,CAACsK,eAAgBuF,CAAAA,iCAAiC,EAAE;YACzG,MAAM,IAAIvN,MAAM6L,aAAa,CAAC,IAAI,CAACL,KAAK,CAAC,GAAG,4DAAA,CAAA,CAAA;AAC9C,SAAA;AACA,QAAA,IAAI,CAACQ,iBAAiB,CAAC1J,IAAI,CAACsK,eAAAA,CAAAA,CAAAA;AAC5B5E,QAAAA,eAAAA,CAAgBwF,oBAAoB,CAACZ,eAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUa,sBAMT,GAND,SAAUA,sBAAAA,CAAuBb,eAAkB,EAAA;AACjD,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxB5E,kBAAoB,KAAtCC,CAAAA,gBAAAA,CAAAA;QACR,IAAI,IAAI,CAAChM,UAAU,CAACwB,cAAc,CAACC,gBAAgB,IAAI,CAACsK,eAAgBuF,CAAAA,iCAAiC,EAAE;YACzG,MAAM,IAAIvN,MAAM6L,aAAa,CAAC,IAAI,CAACL,KAAK,CAAC,GAAG,4DAAA,CAAA,CAAA;AAC9C,SAAA;AACAxD,QAAAA,eAAAA,CAAgB0F,oBAAoB,CAACd,eAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;IAEA,MAAUe,CAAAA,0BAST,GATD,SAAUA,0BAAAA,GAAAA;AACR,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxB3F,kBAAoB,KAAtCC,CAAAA,gBAAAA,CAAAA;QACR,IAAI,IAAI,CAAChM,UAAU,CAACwB,cAAc,CAACC,gBAAgB,IAAI,CAACsK,eAAgBuF,CAAAA,iCAAiC,EAAE;YACzG,MAAM,IAAIvN,MAAM6L,aAAa,CAAC,IAAI,CAACL,KAAK,CAAC,GAAG,4DAAA,CAAA,CAAA;AAC9C,SAAA;AACA,QAAA,IAAgD,MAAA,GAAA,IAAI,EAAzBc,mBAAqB,MAAxCN,CAAAA,iBAAAA,CAAAA;QACR,IAAK,IAAIrO,IAAI,CAAGC,EAAAA,CAAAA,GAAI0O,iBAAiBzO,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AACvDqK,YAAAA,eAAAA,CAAgB0F,oBAAoB,CAACpB,gBAAgB,CAAC3O,CAAE,CAAA,CAAA,CAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AA3IoBoO,IAAAA,OAAAA,kBAAAA,CAAAA;EAGZR,SA2IT,EAAA;AA9IqBQ,kBAAAA,CAIH6B,KAAQ,GAAA,CAAA;;ACb3B;;AAEC,IACM,IAAA,SAAeC,GAAf,SAAeA,SAAAA,GAAAA;kDAGuB,IAAA,CAC3C5P,OAAe,IAAIkC,MAAAA,EAAAA,CAAAA;gDACsB,IAAA,CACzCX,KAAyBgB,GAAAA,eAAAA,CAAgBG,WAAW,CAAA;AACrD;;ACdD;;;IAIO,IAAKmN,aAAAA,iBAAAA,SAAAA,aAAAA,EAAAA;0BACS,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;gCAEM,aAAA,CAAA,aAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA,CAAA;AAHfA,IAAAA,OAAAA,aAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA;;ACLD;;;AAGC,IACM,IAAA,WAAMC,GAAN,SAAMA,WAAAA,GAAAA;0CACwB,IAAA,CACnCC,QAAiB,IAAI5N,cAAAA,EAAAA,CAAAA;wCACY,IAAA,CACjC6N,SAAkB,IAAI7N,cAAAA,EAAAA,CAAAA;AAOvB;;ACnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjI,OAAO,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AA2QD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;AC1UA;;IAGO,IAAK8N,WAAAA,iBAAAA,SAAAA,WAAAA,EAAAA;iBACA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;sBAEK,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;oBAEF,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;6CAEyB,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AAP5BA,IAAAA,OAAAA,WAAAA,CAAAA;AASX,CAAA,CAAA,EAAA;;ACTD;;AAEC,IACM,IAAA,iBAAeC,GAAf,SAAeA,iBAAAA,GAAAA;uDAC4B,IAAA,CAChD3O,KAAgCsM,GAAAA,sBAAAA,CAAuBlM,IAAI,CAAA;kFACgB,IAAA,CAC3EmN,UAAe,EAAE,CAAA;AAClB,CAAA;;ACPD;;IAGO,IAAMqB,cAAN,iBAAA,SAAA,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,CAIC,aAA4B,EAAA;;AACtC,QAAA,KAAA,GAAA,iBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,EAAA,KAAA,CADiBC,aAAAA,GAAAA,aAAAA,CAAAA;;;AAJRD,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBD,iBAOnC,CAAA;;ACTD;;IAGO,IAAMG,cAAN,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;AAGX,QAAA,KAAA,GAAA,SAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,IAAA,IAAA;;;MAIAC,KAAAA,CAAAA,OAAAA,GAAqB,EAAE;;;AAItB,MAAA,KAAA,CACDC,eAA2B,GAAA,KAAA,CAAA;;;AAZhBF,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBT,SAanC;;ACVMY,uBAAA,iBAAA,SAAA,mBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,mBAAAA,CAAAA,CAAAA;aAAAA,eAmBCvG,CAAAA,SAA4B,EAAEmG,aAAmD,EAAA;QAAnDA,IAAAA,aAAAA,KAAAA,KAAAA,CAAAA,EAAAA,aAA6BH,GAAAA,WAAAA,CAAYQ,UAAU,CAAA;;gBAC3F,mBAAMxG,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,SAAAA,EAAW2D,aAAc8C,CAAAA,aAAa,EAAEN,aAAAA,CAAAA,IAAAA,IAAAA,CAAAA;QAC9C,KAAKf,CAAAA,mBAAmB,CAAC,IAAIc,cAAeC,CAAAA,aAAAA,CAAAA,CAAAA,CAAAA;;;AArBnCI,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IAwBX,MAAmB9B,CAAAA,gBAIlB,GAJD,SAAmBA,gBAAAA,GAAAA;AACjB,QAAA,IAAMiC,QAAQ,IAAIN,cAAAA,EAAAA,CAAAA;QAClBM,KAAMtJ,CAAAA,EAAE,GAAGyG,kBAAAA,CAAmB6B,KAAK,EAAA,CAAA;QACnC,OAAOgB,KAAAA,CAAAA;AACT,KAAA,CAAA;AA5BWH,IAAAA,aAAAA,CAAAA,eAAAA,EAAAA;;YAIPJ,GAAAA,EAAAA,eAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACrC,iBAAiB,CAAC,CAAA,CAAE,CAACqC,aAAa,CAAA;AAChD,aAAA;;;YAKIQ,GAAAA,EAAAA,eAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC5C,QAAQ,CAAA;AACtB,aAAA;;;AAbWwC,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB1C,kBA6BpC,EAAA;;AA9BgC4C,IAAAA,iBAAAA,CAAAA,aAAAA,CAAAA,aAAAA,CAAAA;;;ACM1BG,iBAAA,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,CAcC5G,SAA4B,EAAA;;AACtC,QAAA,KAAA,GAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,SAAW2D,EAAAA,aAAAA,CAAckD,OAAO,CAAA,IAAA,IAAA,EAAA,KAAA,CAdhCC,QAAgB,GAAA,IAAIC,UACpBC,EAAAA,EAAAA,KAAAA,CAAAA,UAAAA,GAAoB,IAAIC,YAAAA,EAAAA,EAAAA,KAAAA,CACxBC,SAAqB,GAAA,IAAIC,cACzBC,EAAAA,EAAAA,KAAAA,CAAAA,UAAAA,GAAsB,IAAIlP,cAAAA,EAAAA,EAAAA,KAAAA,CAC1BmP,UAAsB,GAAA,IAAInP,cAC1BoP,EAAAA,EAAAA,KAAAA,CAAAA,UAAAA,GAAsB,IAAIpP,cAAAA,EAAAA,EAAAA,KAAAA,CAC1BqP,UAAsB,GAAA,IAAIrP,cAC1BsP,EAAAA,EAAAA,KAAAA,CAAAA,UAAAA,GAAsB,IAAItP,cAAAA,EAAAA,EAAAA,KAAAA,CAC1BuP,aAAsB,IAAIvP,cAAAA,EAAAA,CAAAA;;;AATvB0O,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAkBX;;;;;AAKC,MACDc,OAAAA,OAMC,GANDA,SAAAA,OAAQC,CAAAA,GAAQ,EAAE1T,IAAmB,EAAA;AACnC,QAAA,IAAM2T,SAAS,EAAE,CAAA;QACjB,IAAI3T,IAAAA,GAAO2R,aAAcqB,CAAAA,KAAK,EAAE;YAC9B,IAAI,CAACY,aAAa,CAACF,GAAKC,EAAAA,MAAAA,CAAAA,CAAAA;AAC1B,SAAA;QACA,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;;;MAOAE,MAAAA,CAAAA,aAWC,GAXDA,SAAAA,cAAc1R,CAAS,EAAEC,CAAS,EAAEpC,IAAmB,EAAA;AACrD,QAAA,IAAkC,KAAA,GAAA,IAAI,EAAlB+L,YAAc,KAA1BjM,CAAAA,UAAAA,CAAAA;AACR,QAAA,IAAIiM,UAAUzK,cAAc,CAAC+I,IAAI,KAAKb,aAAAA,CAAcsK,EAAE,EAAE;AACtD,YAAA,MAAM,IAAIjQ,KAAM,CAAA,kDAAA,CAAA,CAAA;AAClB,SAAA;QACA,IAA4BkI,wCAAAA,GAAAA,SAAU5L,CAAAA,YAAY,CAACC,gBAAgB,CAAWT,oBAAAA,CAAqBe,MAAM,CAAA,EAAjGJ,MAASL,GAAW8L,wCAApBzL,CAAAA,OAAAA,CAAAA;AACR,QAAA,IAAI,CAACL,MAAQ,EAAA;AACX,YAAA,MAAM,IAAI4D,KAAM,CAAA,sBAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAM6P,GAAMzT,GAAAA,MAAAA,CAAO8T,gBAAgB,CAAC,IAAI,CAACd,SAAS,CAACxQ,GAAG,CAACN,CAAAA,EAAGC,CAAI,CAAA,EAAA,IAAI,CAACyQ,QAAQ,CAAA,CAAA;AAC3E,QAAA,OAAO,IAAI,CAACY,OAAO,CAACC,GAAK1T,EAAAA,IAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ4T,aA4BP,GA5BD,SAAQA,aAAcF,CAAAA,GAAQ,EAAEC,MAAqB,EAAA;AACnD,QAAA,IAAMK,eAAe,IAAI,CAAClU,UAAU,CAACwN,UAAU,CAACgF,uBAAAA,CAAAA,CAAAA;AAChD,QAAA,IAAI,CAAC0B,YAAAA,IAAgB,CAACA,YAAAA,CAAa/F,OAAO,EAAE;AAC1C,YAAA,MAAM,IAAIpK,KAAM,CAAA,yEAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAqG,QAAA,IAAI,EAAjGkP,KAAYN,GAAiF,MAA7FM,UAAmBI,EAAYrB,MAA8D,GAAA,KAAA,CAA1EqB,YAAoBC,QAAYa,GAA0C,MAAtDb,UAAsBC,EAAYa,kBAAoB,KAAhCb,CAAAA,UAAAA,CAAAA;QACrE,IAAQX,gBAAkBsB,YAAlBtB,CAAAA,aAAAA,CAAAA;QACR,IAAK,IAAIlR,IAAI,CAAGC,EAAAA,CAAAA,GAAIiR,cAAchR,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YACpD,IAAM2S,YAAAA,GAAezB,aAAa,CAAClR,CAAE,CAAA,CAAA;YACrCsQ,MAAOrP,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAG2R,eAAe,CAACD,YAAAA,CAAarS,IAAI,CAACqC,MAAM,CAAA,CAAA;YAC5DsO,KAAMX,CAAAA,MAAM,CAACuC,QAAQ,CAACvC,MAAAA,CAAAA,CAAAA;YACtBW,KAAM6B,CAAAA,QAAQ,GAAG,CAACrQ,cAAQsQ,CAAAA,GAAG,CAACzC,MAAQqC,EAAAA,YAAAA,CAAarS,IAAI,CAACC,QAAQ,CAAA,CAAA;YAChE,IAAMuS,QAAAA,GAAWZ,GAAIc,CAAAA,cAAc,CAAC/B,KAAAA,CAAAA,CAAAA;AACpC,YAAA,IAAI6B,YAAY,CAAG,EAAA;gBACjBZ,GAAIe,CAAAA,QAAQ,CAACH,QAAUL,EAAAA,QAAAA,CAAAA,CAAAA;AACvBhQ,gBAAAA,cAAAA,CAAQyQ,eAAe,CAACT,QAAAA,EAAUE,aAAarS,IAAI,CAACsC,aAAa,EAAE8P,eAAAA,CAAAA,CAAAA;;AAEnE,gBAAA,IAAI,IAAI,CAACS,wBAAwB,CAACT,iBAAiBC,YAAe,CAAA,EAAA;AAChE,oBAAA,IAAMS,YAAY,IAAIhD,WAAAA,EAAAA,CAAAA;oBACtBgD,SAAU/C,CAAAA,KAAK,CAACwC,QAAQ,CAACJ,QAAAA,CAAAA,CAAAA;oBACzBW,SAAU9C,CAAAA,MAAM,CAACuC,QAAQ,CAACvC,MAAAA,CAAAA,CAAAA;AAC1B8C,oBAAAA,SAAAA,CAAUN,QAAQ,GAAGA,QAAAA,CAAAA;AACrBM,oBAAAA,SAAAA,CAAU1D,aAAa,GAAGiD,YAAAA,CAAAA;oBAC1BS,SAAUC,CAAAA,aAAa,GAAGlD,aAAAA,CAAcqB,KAAK,CAAA;AAC7CW,oBAAAA,MAAAA,CAAOxN,IAAI,CAACyO,SAAAA,CAAAA,CAAAA;AACd,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQD,wBA0BP,GA1BD,SAAQA,wBAAyBG,CAAAA,OAAgB,EAAErC,KAAsB,EAAA;AACvE,QAAA,IAA8E,KAAA,GAAA,IAAI,EAA9DsC,QAA0D,GAAA,KAAA,CAAtEzB,UAAsBC,EAAYyB,YAAoC,GAAA,KAAA,CAAhDzB,UAA0BC,EAAYyB,QAAU,KAAtBzB,CAAAA,UAAAA,CAAAA;QACxD,IAAQpB,UAAYK,KAAZL,CAAAA,OAAAA,CAAAA;QACR,IAAM1Q,MAAAA,GAAS0Q,QAAQ1Q,MAAM,CAAA;AAC7B,QAAA,IAAIwT,QAAW9C,GAAAA,OAAO,CAAC1Q,MAAAA,GAAS,CAAE,CAAA,CAAA;AAClC,QAAA,IAAIyT,IAAO,GAAA,CAAA,CAAA;AACX,QAAA,IAAK,IAAI3T,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIE,QAAQF,CAAK,EAAA,CAAA;YAC/B,IAAM4T,QAAAA,GAAWhD,OAAO,CAAC5Q,CAAE,CAAA,CAAA;YAC3ByC,cAAQoR,CAAAA,QAAQ,CAACD,QAAAA,EAAUF,QAAUH,EAAAA,QAAAA,CAAAA,CAAAA;YACrC9Q,cAAQoR,CAAAA,QAAQ,CAACP,OAAAA,EAASI,QAAUF,EAAAA,YAAAA,CAAAA,CAAAA;YACpC/Q,cAAQgR,CAAAA,KAAK,CAACF,QAAAA,EAAUC,YAAcC,EAAAA,KAAAA,CAAAA,CAAAA;YACtC,IAAM7S,CAAAA,GAAI6S,MAAM7S,CAAC,CAAA;AACjB,YAAA,IAAI+S,SAAS,CAAG,EAAA;AACd,gBAAA,IAAI/S,IAAI,CAAG,EAAA;oBACT+S,IAAO,GAAA,CAAA,CAAA;iBACF,MAAA,IAAI/S,IAAI,CAAG,EAAA;AAChB+S,oBAAAA,IAAAA,GAAO,CAAC,CAAA,CAAA;AACV,iBAAA;aACK,MAAA;gBACL,IAAK/S,IAAI,CAAK+S,IAAAA,IAAAA,GAAO,KAAO/S,CAAI,GAAA,CAAA,IAAK+S,OAAO,CAAI,EAAA;oBAC9C,OAAO,KAAA,CAAA;AACT,iBAAA;AACF,aAAA;YACAD,QAAWE,GAAAA,QAAAA,CAAAA;AACb,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA5GWzC,IAAAA,OAAAA,SAAAA,CAAAA;EAAkBvD,SA6G9B,EAAA;;AA9GgCwD,IAAAA,iBAAAA,CAAAA,aAAAA,CAAAA,OAAAA,CAAAA;;;ACbjC;;IAGO,IAAM0C,QAAN,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,QAAAA,CAAAA;EAAiB5D,SAAY;;ACA1C;;IAGO,IAAM6D,eAAN,iBAAA,SAAA,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,CAMT,QAAwB,EACjBtT,QAAoB,EAAA;;gBAE3B,iBAHOF,CAAAA,IAAAA,CAAAA,IAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,QAAAA,GAAAA,gBACAE,QAAAA,GAAAA,QAAAA,CAAAA;;;AAPEsT,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBvD,iBAWpC,CAAA;;ACRMwD,wBAAA,iBAAA,SAAA,mBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,mBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,CAoBCzJ,SAA4B,EAAA;;AACtC,QAAA,KAAA,GAAA,mBAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,SAAW2D,EAAAA,aAAAA,CAAc+F,cAAc,CAAA,IAAA,IAAA,EAAA,KAAA,CApBvCC,WAAuB,EAAE,CAAA;;;AADtBF,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAwBX;;;AAGC,MACDG,OAAAA,SAWC,GAXDA,SAAAA,SAAU5T,CAAAA,QAAiB,EAAEE,QAAoB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAACqN,QAAQ,EAAE;AAClB,YAAA,MAAM,IAAIzL,KAAM,CAAA,sDAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAA8B,KAAA,GAAA,IAAI,EAAhB+R,UAAY,KAAtBF,CAAAA,QAAAA,CAAAA;QACR,IAAMG,aAAAA,GAAgB,IAAIN,eAAAA,CAAgBxT,QAAUE,EAAAA,QAAAA,CAAAA,CAAAA;QACpD,IAAM6T,QAAAA,GAAW,IAAI,CAACtF,gBAAgB,EAAA,CAAA;QACtCqF,aAAcjF,CAAAA,OAAO,CAAC,CAAA,CAAE,GAAGkF,QAAAA,CAAAA;QAC3B,IAAI,CAAC3E,mBAAmB,CAAC0E,aAAAA,CAAAA,CAAAA;AACzBD,QAAAA,OAAAA,CAAQzP,IAAI,CAAC2P,QAAAA,CAAAA,CAAAA;QACb,OAAOA,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;AAGC,MACDC,MAAAA,CAAAA,YAaC,GAbDA,SAAAA,aAAaC,MAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC1G,QAAQ,EAAE;AAClB,YAAA,MAAM,IAAIzL,KAAM,CAAA,yDAAA,CAAA,CAAA;AAClB,SAAA;QACA,IAAmE,KAAA,GAAA,IAAI,EAA5CsM,mBAAwC,KAA3DN,CAAAA,iBAAAA,EAAqC6F,OAAUE,GAAY,KAAtBF,CAAAA,QAAAA,CAAAA;QAC7C,IAAK,IAAIlU,IAAI,CAAGC,EAAAA,CAAAA,GAAI0O,iBAAiBzO,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YACvD,IAAMqU,aAAAA,GAAgB1F,gBAAgB,CAAC3O,CAAE,CAAA,CAAA;AACzC,YAAA,IAAIqU,aAAcjF,CAAAA,OAAO,CAAC,CAAA,CAAE,KAAKoF,MAAQ,EAAA;gBACvC,IAAI,CAAC1E,sBAAsB,CAACuE,aAAAA,CAAAA,CAAAA;AAC5B,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACAD,QAAAA,OAAAA,CAAQ7E,MAAM,CAAC6E,OAAQ5E,CAAAA,OAAO,CAACgF,MAAS,CAAA,EAAA,CAAA,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,YAKC,GALDA,SAAAA,YAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAC3G,QAAQ,EAAE;AAClB,YAAA,MAAM,IAAIzL,KAAM,CAAA,uDAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAI,CAAC2N,0BAA0B,EAAA,CAAA;AACjC,KAAA,CAAA;IAEA,MAAmBhB,CAAAA,gBAIlB,GAJD,SAAmBA,gBAAAA,GAAAA;AACjB,QAAA,IAAMwF,SAAS,IAAIV,QAAAA,EAAAA,CAAAA;QACnBU,MAAO7M,CAAAA,EAAE,GAAGyG,kBAAAA,CAAmB6B,KAAK,EAAA,CAAA;QACpC,OAAOuE,MAAAA,CAAAA;AACT,KAAA,CAAA;AA1EWR,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAMPU,GAAAA,EAAAA,iBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACR,QAAQ,CAAA;AACtB,aAAA;;;YAKIS,GAAAA,EAAAA,gBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrG,QAAQ,CAAA;AACtB,aAAA;;;AAfW0F,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyB5F,kBA2ErC,EAAA;;AA5EgC6F,IAAAA,iBAAAA,CAAAA,aAAAA,CAAAA,cAAAA,CAAAA;;;ACLjC;;IAGO,IAAMW,cAAN,iBAAA,SAAA,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,CAIC,KAA8B,EAAA;;AACxC,QAAA,KAAA,GAAA,iBAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,EAAA,KAAA,CADiBC,KAAAA,GAAAA,KAAAA,CAAAA;;;AAJRD,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBpE,iBAOnC,CAAA;;ACXD;;IAGO,IAAMsE,cAAN,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB5E,SAKnC;;ACDM6E,uBAAA,iBAAA,SAAA,mBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,mBAAAA,CAAAA,CAAAA;aAAAA,eAoBCxK,CAAAA,SAA4B,EAAEyK,cAAkC,EAAA;;gBAC1E,mBAAMzK,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,SAAAA,EAAW2D,aAAc+G,CAAAA,aAAa,EAAED,cAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AAC9C,QAAA,KAAA,CAAKE,eAAe,GAAGF,cAAAA,CAAAA;AACvB,QAAA,IAAMG,WAAcH,GAAAA,cAAAA,GAAiBA,cAAe9U,CAAAA,MAAM,GAAG,CAAA,CAAA;AAC7D,QAAA,IAAIiV,cAAc,CAAG,EAAA;YACnB,IAAK,IAAInV,IAAI,CAAGC,EAAAA,CAAAA,GAAI+U,eAAe9U,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AACrD,gBAAA,KAAA,CAAK2P,mBAAmB,CAAC,IAAIiF,cAAeI,CAAAA,cAAc,CAAChV,CAAE,CAAA,CAAA,CAAA,CAAA;AAC/D,aAAA;SACK,MAAA;AACLoV,YAAAA,OAAAA,CAAQC,IAAI,CAAC,yBAAA,CAAA,CAAA;AACf,SAAA;;;AA9BSN,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IAiCX,MAAmB/F,CAAAA,gBAIlB,GAJD,SAAmBA,gBAAAA,GAAAA;AACjB,QAAA,IAAM6F,QAAQ,IAAIC,cAAAA,EAAAA,CAAAA;QAClBD,KAAMlN,CAAAA,EAAE,GAAGyG,kBAAAA,CAAmB6B,KAAK,EAAA,CAAA;QACnC,OAAO4E,KAAAA,CAAAA;AACT,KAAA,CAAA;AArCWE,IAAAA,aAAAA,CAAAA,eAAAA,EAAAA;;YAKPC,GAAAA,EAAAA,gBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACE,eAAe,CAAA;AAC7B,aAAA;;;YAKII,GAAAA,EAAAA,eAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChH,QAAQ,CAAA;AACtB,aAAA;;;AAdWyG,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB3G,kBAsCpC,EAAA;;AAvCgC6G,IAAAA,iBAAAA,CAAAA,aAAAA,CAAAA,aAAAA,CAAAA;;;ACRjC;;AAEC,IACM,IAAA,gBAAMM,GAAN,SAAMA,gBAAAA,CAQT,IAAmB,EACZC,WAA8B,EACrC,aAA4B,EAAA;SAFrBhI,IAAAA,GAAAA,IAAAA,CAAAA;SACAgI,WAAAA,GAAAA,WAAAA,CAAAA;SACAC,aAAAA,GAAAA,aAAAA,CAAAA;AAEV;;ACbMC,+BAAA,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,uBAAAA,GAAAA,EAAAA;AAAAA,IAAAA,uBAAAA,CACJC,MAUN,GAVD,SAAOA,MAAO5O,CAAAA,QAAc,EAAE6O,YAA0B,EAAA;QACtD,OAAO,IAAIC,mBAAa,CAAA,SAAC3L,OAASC,EAAAA,MAAAA,EAAAA;YAChC,IAAMsL,aAAAA,GAAgBG,aAAaE,WAAW,EAAA,CAAA;AAC9CF,YAAAA,YAAAA,CAAaG,SAAS,EAAA,CAAA;AACtB,YAAA,IAAMC,MAAM,IAAIC,KAAAA,EAAAA,CAAAA;AAChBD,YAAAA,GAAAA,CAAIE,MAAM,GAAG,WAAA;gBACXhM,OAAQ,CAAA,IAAIqL,gBAAiB,CAAA,EAAA,EAAIS,GAAKP,EAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AACxC,aAAA,CAAA;YACAO,GAAIG,CAAAA,GAAG,GAAGC,GAAIC,CAAAA,eAAe,CAAC,IAAI5N,MAAAA,CAAO6N,IAAI,CAAC;AAACV,gBAAAA,YAAAA,CAAaW,cAAc,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA,CAAA,CAAA;AACnF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAXWb,IAAAA,OAAAA,uBAAAA,CAAAA;AAYZ,CAAA,GAAA;;;;;AChBD,SAAS,QAAQ,GAAG;AACpB,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AACxD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrH,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C;;ACPOc,8BAAA,iBAAA,SAAA,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,sBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;AACXC,IAAAA,MAAAA,CAAAA,IAYC,GAZDA,SAAAA,IAAKC,CAAAA,IAAc,EAAEC,eAAgC,EAAA;QACnD,OAAO,IAAId,mBAAa,CAAA,SAAC3L,OAASC,EAAAA,MAAAA,EAAAA;AAChCwM,YAAAA,eACE;AACCC,aAAAA,QAAQ,CAAcF,IAAAA,CAAKG,GAAG,EAAE,QAAKH,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA;gBAAMlY,IAAM,EAAA,aAAA;AACjDiM,aAAAA,CAAAA,CAAAA,CAAAA,IAAI,CAAC,SAACqM,IAAAA,EAAAA;AACLnB,gBAAAA,aAAAA,CAAyBmB,MAAMH,eAAgB5P,CAAAA,MAAM,CAAE0D,CAAAA,IAAI,CAAC,SAACsM,cAAAA,EAAAA;oBAC3D7M,OAAQ6M,CAAAA,cAAAA,CAAAA,CAAAA;AACV,iBAAA,CAAA,CAAA;AACF,aAAA,CAAA,CACCC,KAAK,CAAC7M,MAAAA,CAAAA,CAAAA;AACX,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAbWqM,IAAAA,OAAAA,sBAAAA,CAAAA;EAA+BS,aAc3C,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|