@itwin/core-common 5.1.1 → 5.1.3-experimental.1
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/CHANGELOG.md +13 -1
- package/lib/cjs/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/AnalysisStyle.js.map +1 -1
- package/lib/cjs/Atmosphere.js.map +1 -1
- package/lib/cjs/AuthorizationClient.js.map +1 -1
- package/lib/cjs/BackgroundMapProvider.js.map +1 -1
- package/lib/cjs/BackgroundMapSettings.js.map +1 -1
- package/lib/cjs/Base64EncodedString.js.map +1 -1
- package/lib/cjs/BlobReader.js.map +1 -1
- package/lib/cjs/BriefcaseTypes.js.map +1 -1
- package/lib/cjs/Camera.js.map +1 -1
- package/lib/cjs/CatalogIModel.js.map +1 -1
- package/lib/cjs/CesiumIonAssets.js.map +1 -1
- package/lib/cjs/ChangedElements.js.map +1 -1
- package/lib/cjs/ChangedEntities.js.map +1 -1
- package/lib/cjs/ChangesetProps.js.map +1 -1
- package/lib/cjs/ClipStyle.js.map +1 -1
- package/lib/cjs/Code.js.map +1 -1
- package/lib/cjs/ColorByName.js.map +1 -1
- package/lib/cjs/ColorDef.js.map +1 -1
- package/lib/cjs/CommonLoggerCategory.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/ContextRealityModel.js.map +1 -1
- package/lib/cjs/ContourDisplay.js.map +1 -1
- package/lib/cjs/DisplayStyleSettings.js.map +1 -1
- package/lib/cjs/ECSchemaProps.js.map +1 -1
- package/lib/cjs/ECSqlReader.js.map +1 -1
- package/lib/cjs/ECSqlTypes.js.map +1 -1
- package/lib/cjs/ElementMesh.js.map +1 -1
- package/lib/cjs/ElementProps.js.map +1 -1
- package/lib/cjs/EmphasizeElementsProps.js.map +1 -1
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/EntityReference.js.map +1 -1
- package/lib/cjs/Environment.js.map +1 -1
- package/lib/cjs/FeatureIndex.js.map +1 -1
- package/lib/cjs/FeatureSymbology.js.map +1 -1
- package/lib/cjs/FeatureTable.js.map +1 -1
- package/lib/cjs/Fonts.js.map +1 -1
- package/lib/cjs/Frustum.js.map +1 -1
- package/lib/cjs/GenericInstanceFilter.js.map +1 -1
- package/lib/cjs/GeoCoordinateServices.js.map +1 -1
- package/lib/cjs/GeometryContainment.js.map +1 -1
- package/lib/cjs/GeometryParams.js.map +1 -1
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/Gradient.js.map +1 -1
- package/lib/cjs/GraphicParams.js.map +1 -1
- package/lib/cjs/GroundPlane.js.map +1 -1
- package/lib/cjs/HSLColor.js.map +1 -1
- package/lib/cjs/HSVColor.js.map +1 -1
- package/lib/cjs/HiddenLine.js.map +1 -1
- package/lib/cjs/Hilite.js.map +1 -1
- package/lib/cjs/IModel.js +1 -1
- package/lib/cjs/IModel.js.map +1 -1
- package/lib/cjs/IModelError.js.map +1 -1
- package/lib/cjs/IModelVersion.js.map +1 -1
- package/lib/cjs/ITwinCoreErrors.js.map +1 -1
- package/lib/cjs/Image.js.map +1 -1
- package/lib/cjs/IpcAppProps.js.map +1 -1
- package/lib/cjs/LightSettings.js.map +1 -1
- package/lib/cjs/LinePixels.js.map +1 -1
- package/lib/cjs/Localization.js.map +1 -1
- package/lib/cjs/MapImagerySettings.js.map +1 -1
- package/lib/cjs/MapLayerSettings.js.map +1 -1
- package/lib/cjs/MassProperties.js.map +1 -1
- package/lib/cjs/MaterialProps.js.map +1 -1
- package/lib/cjs/ModelClipGroup.js.map +1 -1
- package/lib/cjs/ModelGeometryChanges.js.map +1 -1
- package/lib/cjs/ModelProps.js.map +1 -1
- package/lib/cjs/NativeAppProps.js.map +1 -1
- package/lib/cjs/OctEncodedNormal.js.map +1 -1
- package/lib/cjs/PlanProjectionSettings.js.map +1 -1
- package/lib/cjs/PlanarClipMask.js.map +1 -1
- package/lib/cjs/QPoint.js.map +1 -1
- package/lib/cjs/RealityDataAccessProps.js.map +1 -1
- package/lib/cjs/RealityModelDisplaySettings.js.map +1 -1
- package/lib/cjs/RenderMaterial.js.map +1 -1
- package/lib/cjs/RenderPolyline.js.map +1 -1
- package/lib/cjs/RenderSchedule.js.map +1 -1
- package/lib/cjs/RenderTexture.js.map +1 -1
- package/lib/cjs/RgbColor.js.map +1 -1
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/RpcManager.js.map +1 -1
- package/lib/cjs/SessionProps.js.map +1 -1
- package/lib/cjs/SkyBox.js.map +1 -1
- package/lib/cjs/SolarCalculate.js.map +1 -1
- package/lib/cjs/SolarShadows.js.map +1 -1
- package/lib/cjs/SpatialClassification.js.map +1 -1
- package/lib/cjs/SubCategoryAppearance.js.map +1 -1
- package/lib/cjs/SubCategoryOverride.js.map +1 -1
- package/lib/cjs/TerrainSettings.js.map +1 -1
- package/lib/cjs/TextureMapping.js.map +1 -1
- package/lib/cjs/TextureProps.js.map +1 -1
- package/lib/cjs/ThematicDisplay.js.map +1 -1
- package/lib/cjs/Thumbnail.js.map +1 -1
- package/lib/cjs/TileProps.js.map +1 -1
- package/lib/cjs/Tween.js.map +1 -1
- package/lib/cjs/TxnAction.js.map +1 -1
- package/lib/cjs/ViewDetails.js.map +1 -1
- package/lib/cjs/ViewFlags.js.map +1 -1
- package/lib/cjs/ViewProps.js.map +1 -1
- package/lib/cjs/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/cjs/annotation/TextAnnotation.js.map +1 -1
- package/lib/cjs/annotation/TextBlock.js.map +1 -1
- package/lib/cjs/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/cjs/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/cjs/annotation/TextStyle.js.map +1 -1
- package/lib/cjs/core-common.js.map +1 -1
- package/lib/cjs/domains/FunctionalElementProps.js.map +1 -1
- package/lib/cjs/domains/GenericElementProps.js.map +1 -1
- package/lib/cjs/geometry/AdditionalTransform.js.map +1 -1
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/cjs/geometry/BoundingSphere.js.map +1 -1
- package/lib/cjs/geometry/Cartographic.js.map +1 -1
- package/lib/cjs/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/cjs/geometry/FrustumPlanes.js.map +1 -1
- package/lib/cjs/geometry/GeodeticDatum.js.map +1 -1
- package/lib/cjs/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/cjs/geometry/GeometryStream.js.map +1 -1
- package/lib/cjs/geometry/ImageGraphic.js.map +1 -1
- package/lib/cjs/geometry/LineStyle.js.map +1 -1
- package/lib/cjs/geometry/Placement.js.map +1 -1
- package/lib/cjs/geometry/Projection.js.map +1 -1
- package/lib/cjs/geometry/TextString.js.map +1 -1
- package/lib/cjs/internal/BackendTypes.js.map +1 -1
- package/lib/cjs/internal/PackedFeatureTable.js.map +1 -1
- package/lib/cjs/internal/RenderMaterialParams.js.map +1 -1
- package/lib/cjs/internal/RenderMesh.js.map +1 -1
- package/lib/cjs/internal/RenderTextureParams.js.map +1 -1
- package/lib/cjs/internal/Snapping.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/ipc/IpcSession.js.map +1 -1
- package/lib/cjs/ipc/IpcSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocket.js.map +1 -1
- package/lib/cjs/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/cjs/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/cjs/rpc/TestRpcManager.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/cjs/rpc/core/RpcConstants.js.map +1 -1
- package/lib/cjs/rpc/core/RpcControl.js.map +1 -1
- package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/core/RpcOperation.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/cjs/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/core/RpcPush.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequest.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/cjs/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/cjs/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/cjs/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/OpenAPI.js.map +1 -1
- package/lib/cjs/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/cjs/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/cjs/tile/B3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/CompositeTileIO.js.map +1 -1
- package/lib/cjs/tile/ElementGraphics.js.map +1 -1
- package/lib/cjs/tile/GltfTileIO.js.map +1 -1
- package/lib/cjs/tile/I3dmTileIO.js.map +1 -1
- package/lib/cjs/tile/IModelTileIO.js.map +1 -1
- package/lib/cjs/tile/PntsTileIO.js.map +1 -1
- package/lib/cjs/tile/TileIO.js.map +1 -1
- package/lib/cjs/tile/TileMetadata.js.map +1 -1
- package/lib/cjs/tile/Tileset3dSchema.js.map +1 -1
- package/lib/esm/AmbientOcclusion.js.map +1 -1
- package/lib/esm/AnalysisStyle.js.map +1 -1
- package/lib/esm/Atmosphere.js.map +1 -1
- package/lib/esm/AuthorizationClient.js.map +1 -1
- package/lib/esm/BackgroundMapProvider.js.map +1 -1
- package/lib/esm/BackgroundMapSettings.js.map +1 -1
- package/lib/esm/Base64EncodedString.js.map +1 -1
- package/lib/esm/BlobReader.js.map +1 -1
- package/lib/esm/BriefcaseTypes.js.map +1 -1
- package/lib/esm/Camera.js.map +1 -1
- package/lib/esm/CatalogIModel.js.map +1 -1
- package/lib/esm/CesiumIonAssets.js.map +1 -1
- package/lib/esm/ChangedElements.js.map +1 -1
- package/lib/esm/ChangedEntities.js.map +1 -1
- package/lib/esm/ChangesetProps.js.map +1 -1
- package/lib/esm/ClipStyle.js.map +1 -1
- package/lib/esm/Code.js.map +1 -1
- package/lib/esm/ColorByName.js.map +1 -1
- package/lib/esm/ColorDef.js.map +1 -1
- package/lib/esm/CommonLoggerCategory.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/ContextRealityModel.js.map +1 -1
- package/lib/esm/ContourDisplay.js.map +1 -1
- package/lib/esm/DisplayStyleSettings.js.map +1 -1
- package/lib/esm/ECSchemaProps.js.map +1 -1
- package/lib/esm/ECSqlReader.js.map +1 -1
- package/lib/esm/ECSqlTypes.js.map +1 -1
- package/lib/esm/ElementMesh.js.map +1 -1
- package/lib/esm/ElementProps.js.map +1 -1
- package/lib/esm/EmphasizeElementsProps.js.map +1 -1
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/EntityReference.js.map +1 -1
- package/lib/esm/Environment.js.map +1 -1
- package/lib/esm/FeatureIndex.js.map +1 -1
- package/lib/esm/FeatureSymbology.js.map +1 -1
- package/lib/esm/FeatureTable.js.map +1 -1
- package/lib/esm/Fonts.js.map +1 -1
- package/lib/esm/Frustum.js.map +1 -1
- package/lib/esm/GenericInstanceFilter.js.map +1 -1
- package/lib/esm/GeoCoordinateServices.js.map +1 -1
- package/lib/esm/GeometryContainment.js.map +1 -1
- package/lib/esm/GeometryParams.js.map +1 -1
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/Gradient.js.map +1 -1
- package/lib/esm/GraphicParams.js.map +1 -1
- package/lib/esm/GroundPlane.js.map +1 -1
- package/lib/esm/HSLColor.js.map +1 -1
- package/lib/esm/HSVColor.js.map +1 -1
- package/lib/esm/HiddenLine.js.map +1 -1
- package/lib/esm/Hilite.js.map +1 -1
- package/lib/esm/IModel.js +1 -1
- package/lib/esm/IModel.js.map +1 -1
- package/lib/esm/IModelError.js.map +1 -1
- package/lib/esm/IModelVersion.js.map +1 -1
- package/lib/esm/ITwinCoreErrors.js.map +1 -1
- package/lib/esm/Image.js.map +1 -1
- package/lib/esm/IpcAppProps.js.map +1 -1
- package/lib/esm/LightSettings.js.map +1 -1
- package/lib/esm/LinePixels.js.map +1 -1
- package/lib/esm/Localization.js.map +1 -1
- package/lib/esm/MapImagerySettings.js.map +1 -1
- package/lib/esm/MapLayerSettings.js.map +1 -1
- package/lib/esm/MassProperties.js.map +1 -1
- package/lib/esm/MaterialProps.js.map +1 -1
- package/lib/esm/ModelClipGroup.js.map +1 -1
- package/lib/esm/ModelGeometryChanges.js.map +1 -1
- package/lib/esm/ModelProps.js.map +1 -1
- package/lib/esm/NativeAppProps.js.map +1 -1
- package/lib/esm/OctEncodedNormal.js.map +1 -1
- package/lib/esm/PlanProjectionSettings.js.map +1 -1
- package/lib/esm/PlanarClipMask.js.map +1 -1
- package/lib/esm/QPoint.js.map +1 -1
- package/lib/esm/RealityDataAccessProps.js.map +1 -1
- package/lib/esm/RealityModelDisplaySettings.js.map +1 -1
- package/lib/esm/RenderMaterial.js.map +1 -1
- package/lib/esm/RenderPolyline.js.map +1 -1
- package/lib/esm/RenderSchedule.js.map +1 -1
- package/lib/esm/RenderTexture.js.map +1 -1
- package/lib/esm/RgbColor.js.map +1 -1
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/RpcManager.js.map +1 -1
- package/lib/esm/SessionProps.js.map +1 -1
- package/lib/esm/SkyBox.js.map +1 -1
- package/lib/esm/SolarCalculate.js.map +1 -1
- package/lib/esm/SolarShadows.js.map +1 -1
- package/lib/esm/SpatialClassification.js.map +1 -1
- package/lib/esm/SubCategoryAppearance.js.map +1 -1
- package/lib/esm/SubCategoryOverride.js.map +1 -1
- package/lib/esm/TerrainSettings.js.map +1 -1
- package/lib/esm/TextureMapping.js.map +1 -1
- package/lib/esm/TextureProps.js.map +1 -1
- package/lib/esm/ThematicDisplay.js.map +1 -1
- package/lib/esm/Thumbnail.js.map +1 -1
- package/lib/esm/TileProps.js.map +1 -1
- package/lib/esm/Tween.js.map +1 -1
- package/lib/esm/TxnAction.js.map +1 -1
- package/lib/esm/ViewDetails.js.map +1 -1
- package/lib/esm/ViewFlags.js.map +1 -1
- package/lib/esm/ViewProps.js.map +1 -1
- package/lib/esm/WhiteOnWhiteReversalSettings.js.map +1 -1
- package/lib/esm/annotation/TextAnnotation.js.map +1 -1
- package/lib/esm/annotation/TextBlock.js.map +1 -1
- package/lib/esm/annotation/TextBlockGeometryProps.js.map +1 -1
- package/lib/esm/annotation/TextBlockLayoutResult.js.map +1 -1
- package/lib/esm/annotation/TextStyle.js.map +1 -1
- package/lib/esm/core-common.js.map +1 -1
- package/lib/esm/domains/FunctionalElementProps.js.map +1 -1
- package/lib/esm/domains/GenericElementProps.js.map +1 -1
- package/lib/esm/geometry/AdditionalTransform.js.map +1 -1
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/geometry/BoundingSphere.js.map +1 -1
- package/lib/esm/geometry/Cartographic.js.map +1 -1
- package/lib/esm/geometry/CoordinateReferenceSystem.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/geometry/ElementGeometryFB.js.map +1 -1
- package/lib/esm/geometry/FrustumPlanes.js.map +1 -1
- package/lib/esm/geometry/GeodeticDatum.js.map +1 -1
- package/lib/esm/geometry/GeodeticEllipsoid.js.map +1 -1
- package/lib/esm/geometry/GeometryStream.js.map +1 -1
- package/lib/esm/geometry/ImageGraphic.js.map +1 -1
- package/lib/esm/geometry/LineStyle.js.map +1 -1
- package/lib/esm/geometry/Placement.js.map +1 -1
- package/lib/esm/geometry/Projection.js.map +1 -1
- package/lib/esm/geometry/TextString.js.map +1 -1
- package/lib/esm/internal/BackendTypes.js.map +1 -1
- package/lib/esm/internal/PackedFeatureTable.js.map +1 -1
- package/lib/esm/internal/RenderMaterialParams.js.map +1 -1
- package/lib/esm/internal/RenderMesh.js.map +1 -1
- package/lib/esm/internal/RenderTextureParams.js.map +1 -1
- package/lib/esm/internal/Snapping.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/ipc/IpcSession.js.map +1 -1
- package/lib/esm/ipc/IpcSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocket.js.map +1 -1
- package/lib/esm/ipc/IpcWebSocketTransport.js.map +1 -1
- package/lib/esm/rpc/DevToolsRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelReadRpcInterface.js.map +1 -1
- package/lib/esm/rpc/IModelTileRpcInterface.js.map +1 -1
- package/lib/esm/rpc/SnapshotIModelRpcInterface.js.map +1 -1
- package/lib/esm/rpc/TestRpcManager.js.map +1 -1
- package/lib/esm/rpc/core/RpcConfiguration.js.map +1 -1
- package/lib/esm/rpc/core/RpcConstants.js.map +1 -1
- package/lib/esm/rpc/core/RpcControl.js.map +1 -1
- package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/core/RpcOperation.js.map +1 -1
- package/lib/esm/rpc/core/RpcPendingQueue.js.map +1 -1
- package/lib/esm/rpc/core/RpcProtocol.js.map +1 -1
- package/lib/esm/rpc/core/RpcPush.js.map +1 -1
- package/lib/esm/rpc/core/RpcRegistry.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequest.js.map +1 -1
- package/lib/esm/rpc/core/RpcRequestContext.js.map +1 -1
- package/lib/esm/rpc/core/RpcRoutingToken.js.map +1 -1
- package/lib/esm/rpc/core/RpcSessionInvocation.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcManager.js.map +1 -1
- package/lib/esm/rpc/web/BentleyCloudRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/OpenAPI.js.map +1 -1
- package/lib/esm/rpc/web/RpcMultipart.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcLogging.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcRequest.js.map +1 -1
- package/lib/esm/rpc/web/multipart/RpcMultipartParser.js.map +1 -1
- package/lib/esm/tile/B3dmTileIO.js.map +1 -1
- package/lib/esm/tile/CompositeTileIO.js.map +1 -1
- package/lib/esm/tile/ElementGraphics.js.map +1 -1
- package/lib/esm/tile/GltfTileIO.js.map +1 -1
- package/lib/esm/tile/I3dmTileIO.js.map +1 -1
- package/lib/esm/tile/IModelTileIO.js.map +1 -1
- package/lib/esm/tile/PntsTileIO.js.map +1 -1
- package/lib/esm/tile/TileIO.js.map +1 -1
- package/lib/esm/tile/TileMetadata.js.map +1 -1
- package/lib/esm/tile/Tileset3dSchema.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementGeometry.js","sourceRoot":"","sources":["../../../src/geometry/ElementGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Geometry\r\n */\r\nimport { flatbuffers } from \"flatbuffers\";\r\nimport { BentleyStatus, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Angle, AngleSweep, Arc3d, BentleyGeometryFlatBuffer, CurveCollection, FrameBuilder, GeometryQuery, LineSegment3d, LineString3d, Loop, Matrix3d, Plane3dByOriginAndUnitNormal, Point2d, Point3d, Point3dArray, PointString3d, Polyface, PolyfaceQuery, Range2d, Range3d, SolidPrimitive, Transform, Vector3d, YawPitchRollAngles } from \"@itwin/core-geometry\";\r\nimport { EGFBAccessors } from \"./ElementGeometryFB\";\r\nimport { Base64EncodedString } from \"../Base64EncodedString\";\r\nimport { TextString, TextStringGlyphData, TextStringProps } from \"./TextString\";\r\nimport { ColorDef } from \"../ColorDef\";\r\nimport { BackgroundFill, FillDisplay, GeometryClass, GeometryParams } from \"../GeometryParams\";\r\nimport { Gradient } from \"../Gradient\";\r\nimport { ThematicGradientSettings, ThematicGradientSettingsProps } from \"../ThematicDisplay\";\r\nimport { AreaPattern } from \"./AreaPattern\";\r\nimport { BRepEntity } from \"./GeometryStream\";\r\nimport { ImageGraphic, ImageGraphicCorners, ImageGraphicProps } from \"./ImageGraphic\";\r\nimport { LineStyle } from \"./LineStyle\";\r\nimport { ElementAlignedBox3d, Placement2d, Placement3d } from \"./Placement\";\r\nimport { isPlacement2dProps, PlacementProps } from \"../ElementProps\";\r\nimport { TextBlockGeometryProps } from \"../annotation/TextBlockGeometryProps\";\r\n\r\n/** Specifies the type of an entry in a geometry stream.\r\n * @see [[ElementGeometryDataEntry.opcode]].\r\n * @public\r\n * @extensions\r\n */\r\nexport enum ElementGeometryOpcode {\r\n /** Local range of the next geometric primitive in the geometry stream. */\r\n SubGraphicRange = 2,\r\n /** A reference to a [GeometryPart]($backend). */\r\n PartReference = 3,\r\n /** Sets symbology for subsequent geometry to override [SubCategory]($backend) appearance */\r\n BasicSymbology = 4,\r\n /** A line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */\r\n PointPrimitive = 5,\r\n /** A 2d line, line string, shape, or point string (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */\r\n PointPrimitive2d = 6,\r\n /** Arc or ellipse (automatic simplification of a [CurvePrimitive]($core-geometry) or [CurveCollection]($core-geometry)) */\r\n ArcPrimitive = 7,\r\n /** [CurveCollection]($core-geometry) */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n CurveCollection = 8,\r\n /** [Polyface]($core-geometry) */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n Polyface = 9,\r\n /** [CurvePrimitive]($core-geometry) */\r\n CurvePrimitive = 10,\r\n /** [SolidPrimitive]($core-geometry) */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n SolidPrimitive = 11,\r\n /** [BSplineSurface3d]($core-geometry) */\r\n BsplineSurface = 12,\r\n /** Opaque and [[Gradient]] fills. */\r\n Fill = 19,\r\n /** Hatch, cross-hatch, or [[AreaPattern]]. */\r\n Pattern = 20,\r\n /** [[RenderMaterial]] */\r\n Material = 21,\r\n /** [[TextString]] */\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n TextString = 22,\r\n /** Specifies line style overrides as a [[LineStyle.Modifier]] */\r\n LineStyleModifiers = 23,\r\n /** Boundary representation solid, sheet, or wire body as a [[BRepEntity.DataProps]] */\r\n BRep = 25,\r\n /** Small single-tile raster image as an [[ImageGraphic]] */\r\n Image = 28,\r\n}\r\n\r\n/** Describes an entry in a geometry stream as an op-code plus the binary flatbuffer representation of the associated data.\r\n * @see [[FlatBufferGeometryStream]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface ElementGeometryDataEntry {\r\n /** The type of this entry. */\r\n opcode: ElementGeometryOpcode;\r\n /** Zero-based flatbuffer-encoded data. */\r\n data: Uint8Array;\r\n}\r\n\r\n/** Information provided to [[ElementGeometryFunction]].\r\n * @beta\r\n */\r\nexport interface ElementGeometryInfo {\r\n /** ID for the [Category]($core-backend), undefined for geometry parts */\r\n categoryId?: Id64String;\r\n /** A row-major storage 4x3 transform to world coordinate, undefined for geometry parts */\r\n sourceToWorld?: Float64Array;\r\n /** The element aligned bounding box for the geometry stream stored as 6 values for low/high */\r\n bbox?: Float64Array;\r\n /** If true, geometry displays oriented to face the camera */\r\n viewIndependent?: boolean;\r\n /** If true, geometry stream contained breps that were omitted or replaced as requested */\r\n brepsPresent?: boolean;\r\n /** The geometry stream data */\r\n entryArray: ElementGeometryDataEntry[];\r\n}\r\n\r\n/** A callback function that receives geometry stream data.\r\n * @see [IModelDb.elementGeometryRequest]($core-backend)\r\n * @beta\r\n */\r\nexport type ElementGeometryFunction = (info: ElementGeometryInfo) => void;\r\n\r\n/** Parameters for [IModelDb.elementGeometryRequest]($core-backend)\r\n * @beta\r\n */\r\nexport interface ElementGeometryRequest {\r\n /** The source element for the geometry stream */\r\n elementId: Id64String;\r\n /** A function to call for the geometry stream data */\r\n onGeometry: ElementGeometryFunction;\r\n /** Whether to omit BRep data */\r\n skipBReps?: boolean;\r\n /** When not omitting BReps, whether to return a mesh or curve representation instead of the brep data */\r\n replaceBReps?: boolean;\r\n /** Option for replaceBReps, max distance from a face to the original geometry, see [StrokeOptions]($core-geometry) */\r\n chordTol?: number;\r\n /** Option for replaceBReps, max angle difference in radians for approximated face, see [StrokeOptions]($core-geometry) */\r\n angleTol?: number;\r\n /** Option for replaceBReps, max length of any edge in generated faces, see [StrokeOptions]($core-geometry) */\r\n maxEdgeLength?: number;\r\n /** Option for replaceBReps, ignore faces with bounding boxes smaller than this size when facetting */\r\n minBRepFeatureSize?: number;\r\n}\r\n\r\n/** Parameters for building the geometry stream of a [GeometricElement]($backend) using [[ElementGeometry.Builder]].\r\n * You can assign an object of this type to [[GeometricElementProps.elementGeometryBuilderParams]] when inserting or updating a geometric element.\r\n * @note The geometry stream is always in local coordinates - that is, relative to the element's [[Placement]].\r\n * @public\r\n */\r\nexport interface ElementGeometryBuilderParams {\r\n /** The geometry stream data. Calling update element with a zero length array will clear the geometry stream and invalidate the placement. */\r\n entryArray: ElementGeometryDataEntry[];\r\n /** If true, create geometry that always displays oriented to face the camera */\r\n viewIndependent?: boolean;\r\n}\r\n\r\n/** Parameters for building the geometry stream of a [GeometryPart]($backend) using [[ElementGeometry.Builder]].\r\n * You can assign an object of this type to [[GeometryPartProps.elementGeometryBuilderParams]] when inserting or updating a part.\r\n * @public\r\n */\r\nexport interface ElementGeometryBuilderParamsForPart {\r\n /** The geometry stream data */\r\n entryArray: ElementGeometryDataEntry[];\r\n /** If true, create geometry part with 2d geometry */\r\n is2dPart?: boolean;\r\n}\r\n\r\n/** Request parameters for [IModelDb.updateElementGeometryCache]($core-backend)\r\n * @beta\r\n */\r\nexport interface ElementGeometryCacheRequestProps {\r\n /** Geometric element to populate geometry cache for. Clear cache for all elements when undefined. */\r\n id?: Id64String;\r\n}\r\n\r\n/** Response parameters for [IModelDb.updateElementGeometryCache]($core-backend)\r\n * @beta\r\n */\r\nexport interface ElementGeometryCacheResponseProps {\r\n /** Cache creation status */\r\n status: BentleyStatus;\r\n /** Count of displayable entries in element's geometry stream */\r\n numGeom?: number;\r\n /** Count of part references in element's geometry stream */\r\n numPart?: number;\r\n /** Count of solid/volumetric geometry in element's geometry stream */\r\n numSolid?: number;\r\n /** Count of surface/region geometry in element's geometry stream */\r\n numSurface?: number;\r\n /** Count of curve/path geometry in element's geometry stream */\r\n numCurve?: number;\r\n /** Count of text/image/non-geometric displayable entries in element's geometry stream */\r\n numOther?: number;\r\n}\r\n\r\n/** Request parameters for [IModelDb.elementGeometryCacheOperation]($core-backend)\r\n * @beta\r\n */\r\nexport interface ElementGeometryCacheOperationRequestProps {\r\n /** Target element id, tool element ids can be supplied by parameters... */\r\n id: Id64String;\r\n /** Requested operation */\r\n op: number;\r\n /** Parameters for operation */\r\n params?: any;\r\n /** Callback for result when element's geometry stream is requested in flatbuffer or graphic formats */\r\n onGeometry?: ElementGeometryFunction;\r\n}\r\n\r\n/** Values for [[BRepGeometryCreate.operation]]\r\n * @alpha\r\n */\r\nexport enum BRepGeometryOperation {\r\n /** Unite target (first entry) with one or more tool entities. */\r\n Unite = 0,\r\n /** Subtract one or more tool entities from target entity (first entry) */\r\n Subtract = 1,\r\n /** Intersect target (first entry) with one or more tool entities */\r\n Intersect = 2,\r\n /** Sew the given set of surfaces together by joining those that share edges in common */\r\n Sew = 3,\r\n /** Create a cut in the target (first entry) using a planar region (second entry) and optional depth */\r\n Cut = 4,\r\n /** Create a pad or pocket in the target (first entry) using a planar region (second entry) */\r\n Emboss = 5,\r\n /** Create a solid from a surface by offsetting using the specified forward and backward distances */\r\n Thicken = 6,\r\n /** Create a shelled solid by offsetting all faces by the supplied distance */\r\n Hollow = 7,\r\n /** Create a solid or surface by sweeping a planar profile (first entry) along a path (second entry) */\r\n Sweep = 8,\r\n /** Create a solid or surface by lofting through a set of paths or regions */\r\n Loft = 9,\r\n /** Create a solid or sheet with all non-smooth/non-laminar edges rounded */\r\n Round = 10,\r\n /** Offset all faces of a solid or sheet target by the supplied distance. */\r\n Offset = 11,\r\n}\r\n\r\n/** Parameters for [[BRepGeometryOperation.Cut]]\r\n * @alpha\r\n */\r\nexport interface BRepCutProps {\r\n /** Optional cut depth; through solid if not specified */\r\n distance?: number;\r\n /** Optional cut direction; in direction of profile normal if not specified */\r\n bothDirections?: boolean;\r\n}\r\n\r\n/** Parameters for [[BRepGeometryOperation.Thicken]]\r\n * @alpha\r\n */\r\nexport interface BRepThickenProps {\r\n /** Offset to apply in surface normal direction; at least one of frontDistance or backDistance must be specified */\r\n frontDistance?: number;\r\n /** Offset to apply in reverse surface normal direction */\r\n backDistance?: number;\r\n}\r\n\r\n/** Parameters for [[BRepGeometryOperation.Hollow]]\r\n * @alpha\r\n */\r\nexport interface BRepHollowProps {\r\n /** Offset to apply to all faces; positive value shells outwards, negative value shells inwards */\r\n distance: number;\r\n}\r\n\r\n/** Parameters for [[BRepGeometryOperation.Round]]\r\n * @alpha\r\n */\r\nexport interface BRepRoundProps {\r\n /** Radius to apply to all non-laminar/non-smooth edges */\r\n radius: number;\r\n}\r\n\r\n/** Parameters for [[BRepGeometryOperation.Offset]]\r\n * @alpha\r\n */\r\nexport interface BRepOffsetProps {\r\n /** Offset to apply to all faces; positive value offsets outwards, negative value offsets inwards */\r\n distance: number;\r\n}\r\n\r\n/** Parameters for [IModelDb.createBRepGeometry]($core-backend)\r\n * @alpha\r\n */\r\nexport interface BRepGeometryCreate {\r\n /** The operation to perform on the input geometry */\r\n operation: BRepGeometryOperation;\r\n /** The input target and tool geometry (curves, surfaces, and solids) to perform the given operation on */\r\n entryArray: ElementGeometryDataEntry[];\r\n /** A function to call for the result geometry */\r\n onResult: BRepGeometryFunction;\r\n /** Whether disjoint results should be returned as multiple entries or a single disjoint body */\r\n separateDisjoint?: boolean;\r\n /** Options and parameters for this operation */\r\n parameters?: BRepCutProps | BRepThickenProps | BRepHollowProps | BRepRoundProps | BRepOffsetProps;\r\n}\r\n\r\n/** Information provided to [[BRepGeometryFunction]].\r\n * @alpha\r\n */\r\nexport interface BRepGeometryInfo {\r\n /** The result geometry if the operation was successful */\r\n entryArray: ElementGeometryDataEntry[];\r\n}\r\n\r\n/** A callback function that receives brep operation result geometry.\r\n * @see [IModelDb.createBRepGeometry]($core-backend)\r\n * @alpha\r\n */\r\nexport type BRepGeometryFunction = (info: BRepGeometryInfo) => void;\r\n\r\n/** Provides utility functions for working with [[ElementGeometryDataEntry]].\r\n * @beta\r\n */\r\nexport namespace ElementGeometry {\r\n /** [[ElementGeometry.Builder]] is a helper class for populating a [[ElementGeometryDataEntry]] array needed to create a [[GeometricElement]] or [[GeometryPart]]. */\r\n export class Builder {\r\n private _localToWorld?: Transform;\r\n private _worldToLocal?: Transform;\r\n /** GeometryStream entries */\r\n public readonly entries: ElementGeometryDataEntry[] = [];\r\n\r\n /** Current placement transform, converts local coordinate (placement relative) input to world */\r\n public get localToWorld() { return this._localToWorld; }\r\n\r\n /** Current inverse placement transform, converts world coordinate input to local (placement relative) */\r\n public get worldToLocal() { return this._worldToLocal; }\r\n\r\n /** Supply optional local to world transform. Used to transform world coordinate input relative to element placement.\r\n * For a [[GeometricElement]]'s placement to be meaningful, world coordinate geometry should never be appended to an element with an identity placement.\r\n * Can be called with undefined or identity transform to start appending geometry supplied in local coordinates again.\r\n */\r\n public setLocalToWorld(localToWorld?: Transform) {\r\n this._localToWorld = (undefined === localToWorld || localToWorld.isIdentity ? undefined : localToWorld.clone());\r\n this._worldToLocal = (undefined === this._localToWorld ? undefined : this._localToWorld.inverse());\r\n }\r\n\r\n /** Supply local to world transform from a Point3d and optional YawPitchRollAngles.\r\n * @see [[Placement3d]]\r\n */\r\n public setLocalToWorld3d(origin: Point3d, angles: YawPitchRollAngles = YawPitchRollAngles.createDegrees(0.0, 0.0, 0.0)) {\r\n this.setLocalToWorld(Transform.createOriginAndMatrix(origin, angles.toMatrix3d()));\r\n }\r\n\r\n /** Supply local to world transform from a Point2d and optional Angle.\r\n * @see [[Placement2d]]\r\n */\r\n public setLocalToWorld2d(origin: Point2d, angle: Angle = Angle.createDegrees(0.0)) {\r\n this.setLocalToWorld(Transform.createOriginAndMatrix(Point3d.createFrom(origin), Matrix3d.createRotationAroundVector(Vector3d.unitZ(), angle)));\r\n }\r\n\r\n /** Supply local to world transform from a PlacementProps2d or PlacementProps3d.\r\n * @see [[PlacementProps]]\r\n */\r\n public setLocalToWorldFromPlacement(props: PlacementProps) {\r\n const placement = isPlacement2dProps(props) ? Placement2d.fromJSON(props) : Placement3d.fromJSON(props);\r\n this.setLocalToWorld(placement.transform);\r\n }\r\n\r\n /** Compute angles suitable for passing to [[setLocalToWorld3d]] from an array of 3d points. */\r\n public static placementAnglesFromPoints(pts: Point3d[], defaultUp?: Vector3d, result?: YawPitchRollAngles): YawPitchRollAngles {\r\n const angles = result ? result : new YawPitchRollAngles();\r\n const zVec = defaultUp ? defaultUp.clone() : Vector3d.unitZ();\r\n const matrix = Matrix3d.createRigidHeadsUp(zVec);\r\n\r\n YawPitchRollAngles.createFromMatrix3d(matrix, angles);\r\n\r\n if (pts.length < 2 || pts[0].isAlmostEqual(pts[1]))\r\n return angles;\r\n\r\n // Check if points have a well defined normal to use instead of defaultUp...\r\n const frameTransform = FrameBuilder.createFrameToDistantPoints(pts);\r\n if (undefined !== frameTransform) {\r\n const plane = Plane3dByOriginAndUnitNormal.create(pts[0], frameTransform.matrix.getColumn(2));\r\n if (undefined !== plane && Point3dArray.isCloseToPlane(pts, plane))\r\n zVec.setFrom(plane.getNormalRef());\r\n }\r\n\r\n const xVec = Vector3d.createStartEnd(pts[0], pts[1]);\r\n if (xVec.isParallelTo(zVec, true))\r\n return angles;\r\n\r\n const yVec = xVec.unitCrossProduct(zVec);\r\n if (undefined === yVec)\r\n return angles;\r\n\r\n Matrix3d.createColumns(xVec, yVec, zVec, matrix);\r\n if (undefined === Matrix3d.createRigidFromMatrix3d(matrix, undefined, matrix))\r\n return angles;\r\n\r\n YawPitchRollAngles.createFromMatrix3d(matrix, angles);\r\n return angles;\r\n }\r\n\r\n /** Compute angle suitable for passing to [[setLocalToWorld2d]] from an array of xy plane points. */\r\n public static placementAngleFromPoints(pts: Point3d[], result?: Angle): Angle {\r\n const angles = ElementGeometry.Builder.placementAnglesFromPoints(pts);\r\n if (undefined === result)\r\n return angles.yaw;\r\n result.setFrom(angles.yaw);\r\n return result;\r\n }\r\n\r\n /** Store local ranges for all subsequent geometry appended. Can improve performance of range testing for elements with a GeometryStream\r\n * containing more than one [[GeometryQuery]] differentiable by range. Not useful for a single [[GeometryQuery]] as its range and that of the [[GeometricElement]] are the same.\r\n * Ignored when defining a [[GeometryPart]] and not needed when only appending [[GeometryPart]] instances to a [[GeometricElement]] as these store their own range.\r\n */\r\n public appendGeometryRanges(): boolean {\r\n const entry = fromSubGraphicRange(Range3d.create()); // Computed on backend, just need opcode...\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Change [[GeometryParams]] for subsequent geometry.\r\n * It is not valid to change the sub-category when defining a [[GeometryPart]]. A [[GeometryPart]] inherits the symbology of their instance for anything not explicitly overridden.\r\n */\r\n public appendGeometryParamsChange(geomParams: GeometryParams): boolean {\r\n return appendGeometryParams(geomParams, this.entries, this._worldToLocal);\r\n }\r\n\r\n /** Append a [[GeometryQuery]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */\r\n public appendGeometryQuery(geometry: GeometryQuery): boolean {\r\n const entry = ElementGeometry.fromGeometryQuery(geometry, this._worldToLocal);\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Append a [[TextString]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */\r\n public appendTextString(text: TextString): boolean {\r\n const entry = ElementGeometry.fromTextString(text.toJSON(), this._worldToLocal);\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Append a series of entries representing a [[TextBlock]] to the [[ElementGeometryDataEntry]] array.\r\n * @beta\r\n */\r\n public appendTextBlock(block: TextBlockGeometryProps, geomParams?: GeometryParams): boolean {\r\n for (const entry of block.entries) {\r\n let result: boolean;\r\n if (entry.text) {\r\n result = this.appendTextString(new TextString(entry.text));\r\n } else if (entry.color) {\r\n const params = geomParams?.clone() ?? new GeometryParams(Id64.invalid);\r\n if (entry.color !== \"subcategory\") {\r\n params.lineColor = ColorDef.fromJSON(entry.color);\r\n }\r\n\r\n result = this.appendGeometryParamsChange(params);\r\n } else {\r\n result = this.appendGeometryQuery(LineSegment3d.fromJSON(entry.separator));\r\n }\r\n\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n /** Append a [[ImageGraphic]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array */\r\n public appendImageGraphic(image: ImageGraphic): boolean {\r\n const entry = ElementGeometry.fromImageGraphic(image.toJSON(), this._worldToLocal);\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Append a [[BRepEntity.DataProps]] supplied in either local or world coordinates to the [[ElementGeometryDataEntry]] array.\r\n * Provided for compatibility with GeometryStreamBuilder only.\r\n * Backend code should use IModelDb.createBRepGeometry to create a brep [[ElementGeometryDataEntry]] directly.\r\n */\r\n public appendBRepData(brep: BRepEntity.DataProps): boolean {\r\n const entry = ElementGeometry.fromBRep(brep, this._worldToLocal);\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Append a [[GeometryPart]] instance with relative transform to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement]].\r\n * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.\r\n */\r\n public appendGeometryPart(partId: Id64String, partTransform?: Transform): boolean {\r\n const entry = ElementGeometry.fromGeometryPart(partId, partTransform, this._worldToLocal);\r\n if (undefined === entry)\r\n return false;\r\n this.entries.push(entry);\r\n return true;\r\n }\r\n\r\n /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement3d]].\r\n * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.\r\n */\r\n public appendGeometryPart3d(partId: Id64String, instanceOrigin?: Point3d, instanceRotation?: YawPitchRollAngles, instanceScale?: number): boolean {\r\n const partTransform = Transform.createOriginAndMatrix(instanceOrigin, instanceRotation ? instanceRotation.toMatrix3d() : Matrix3d.createIdentity());\r\n if (undefined !== instanceScale)\r\n partTransform.matrix.scaleColumnsInPlace(instanceScale, instanceScale, instanceScale);\r\n return this.appendGeometryPart(partId, partTransform);\r\n }\r\n\r\n /** Append a [[GeometryPart]] instance with relative position, orientation, and scale to the [[ElementGeometryDataEntry]] array for creating a [[GeometricElement2d]].\r\n * Not valid when defining a [[GeometryPart]] as nesting of parts is not supported.\r\n */\r\n public appendGeometryPart2d(partId: Id64String, instanceOrigin?: Point2d, instanceRotation?: Angle, instanceScale?: number): boolean {\r\n return this.appendGeometryPart3d(partId, instanceOrigin ? Point3d.createFrom(instanceOrigin) : undefined, instanceRotation ? new YawPitchRollAngles(instanceRotation) : undefined, instanceScale);\r\n }\r\n }\r\n\r\n /** Current state information for [[ElementGeometry.Iterator]] */\r\n export interface IteratorData {\r\n /** A [[GeometryParams]] representing the appearance of the current geometric entry */\r\n readonly geomParams: GeometryParams;\r\n /** Placement transform, used for converting placement relative, local coordinate entries to world */\r\n readonly localToWorld?: Transform;\r\n /** Optional stored local range for the current geometric entry */\r\n readonly localRange?: Range3d;\r\n /** The current displayable opcode */\r\n readonly value: ElementGeometryDataEntry;\r\n }\r\n\r\n export class IteratorEntry implements IteratorData {\r\n public readonly geomParams: GeometryParams;\r\n public readonly localToWorld?: Transform;\r\n public localRange?: Range3d;\r\n private _value?: ElementGeometryDataEntry;\r\n private readonly _applyLocalToWorld: boolean;\r\n\r\n public constructor(geomParams: GeometryParams, localToWorld: Transform, applyLocalToWorld?: boolean) {\r\n this.geomParams = geomParams;\r\n this.localToWorld = localToWorld;\r\n this._applyLocalToWorld = applyLocalToWorld ? !localToWorld.isIdentity : false;\r\n }\r\n\r\n public get value() { return this._value!; }\r\n public set value(value: ElementGeometryDataEntry) { this._value = value; }\r\n\r\n public get outputTransform(): Transform | undefined {\r\n return this._applyLocalToWorld ? this.localToWorld : undefined;\r\n }\r\n\r\n /** Return the [[GeometryQuery]] representation for the current entry */\r\n public toGeometryQuery(): GeometryQuery | undefined {\r\n return toGeometryQuery(this.value, this.outputTransform);\r\n }\r\n\r\n /** Return the [[BRepEntity.DataProps]] representation for the current entry for checking brep type and face attachments. */\r\n public toBRepData(wantBRepData: boolean = false): BRepEntity.DataProps | undefined {\r\n return toBRep(this.value, wantBRepData, this.outputTransform);\r\n }\r\n\r\n /** Return the [[TextString]] representation for the current entry */\r\n public toTextString(): TextString | undefined {\r\n const props = toTextString(this.value, this.outputTransform);\r\n return (undefined !== props ? new TextString(props) : undefined);\r\n }\r\n\r\n /** Return the [[ImageGraphic]] representation for the current entry */\r\n public toImageGraphic(): ImageGraphic | undefined {\r\n const props = toImageGraphic(this.value, this.outputTransform);\r\n return (undefined !== props ? ImageGraphic.fromJSON(props) : undefined);\r\n }\r\n\r\n /** Return the GeometryPart information for the current entry */\r\n public toGeometryPart(partToLocal?: Transform, partToWorld?: Transform): Id64String | undefined {\r\n if (undefined === partToLocal && undefined !== partToWorld)\r\n partToLocal = Transform.createIdentity();\r\n\r\n const partId = toGeometryPart(this.value, partToLocal);\r\n if (undefined === partId || undefined === partToLocal || undefined === partToWorld)\r\n return partId;\r\n\r\n if (undefined !== this.localToWorld)\r\n this.localToWorld.multiplyTransformTransform(partToLocal, partToWorld);\r\n\r\n return partId;\r\n }\r\n }\r\n\r\n /** [[ElementGeometry.Iterator]] is a helper class for iterating a [[ElementGeometryDataEntry]] array.\r\n * Each [[ElementGeometryDataEntry]] returned by the iterator represents exactly one displayable entry.\r\n */\r\n export class Iterator implements IterableIterator<IteratorEntry> {\r\n /** GeometryStream entries */\r\n public readonly entryArray: ElementGeometryDataEntry[];\r\n /** The geometric element's placement or geometry part's local range (placement.bbox) */\r\n public readonly placement: Placement3d;\r\n /** If true, geometry displays oriented to face the camera */\r\n public readonly viewIndependent?: boolean;\r\n /** If true, geometry stream contained breps that were omitted or replaced as requested */\r\n public readonly brepsPresent?: boolean;\r\n /** Current entry position */\r\n private _index = 0;\r\n /** Allocated on first call to next() and reused thereafter */\r\n private _entry?: IteratorEntry;\r\n /** Used to initialize this._entry */\r\n private readonly _appearance: GeometryParams;\r\n private readonly _localToWorld: Transform;\r\n /** Whether deserialized entry data is returned in world or local coordinates */\r\n private _applyLocalToWorld = false;\r\n\r\n /** Construct a new Iterator given a [[ElementGeometryInfo]] from either a [[GeometricElement3d]], [[GeometricElement2d]], or [[GeometryPart]].\r\n * Supply the optional [[GeometryParams]] and localToWorld transform to iterate a [[GeometryPart]] in the context of a [[GeometricElement]] reference.\r\n */\r\n public constructor(info: ElementGeometryInfo, categoryOrGeometryParams?: Id64String | GeometryParams, localToWorld?: Transform) {\r\n this.entryArray = info.entryArray;\r\n this.viewIndependent = info.viewIndependent;\r\n this.brepsPresent = info.brepsPresent;\r\n\r\n if (undefined !== info.categoryId)\r\n categoryOrGeometryParams = info.categoryId;\r\n\r\n if (undefined !== categoryOrGeometryParams)\r\n this._appearance = typeof categoryOrGeometryParams === \"string\" ? new GeometryParams(categoryOrGeometryParams) : categoryOrGeometryParams;\r\n else\r\n this._appearance = new GeometryParams(Id64.invalid);\r\n\r\n if (undefined !== info.sourceToWorld)\r\n localToWorld = ElementGeometry.toTransform(info.sourceToWorld);\r\n\r\n if (undefined !== localToWorld)\r\n this._localToWorld = localToWorld;\r\n else\r\n this._localToWorld = Transform.createIdentity();\r\n\r\n const orgAng = YawPitchRollAngles.tryFromTransform(this._localToWorld);\r\n if (undefined === orgAng.angles)\r\n orgAng.angles = YawPitchRollAngles.createDegrees(0, 0, 0);\r\n\r\n let bbox = (undefined !== info.bbox ? ElementGeometry.toElementAlignedBox3d(info.bbox) : undefined);\r\n if (undefined === bbox)\r\n bbox = Range3d.createNull();\r\n\r\n this.placement = new Placement3d(orgAng.origin, orgAng.angles, bbox);\r\n }\r\n\r\n /** Call to return deserialized entry data in world coordinates */\r\n public requestWorldCoordinates(): void {\r\n this._applyLocalToWorld = !this._localToWorld.isIdentity;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private get entry() {\r\n if (undefined === this._entry)\r\n this._entry = new IteratorEntry(this._appearance, this._localToWorld, this._applyLocalToWorld);\r\n\r\n return this._entry;\r\n }\r\n\r\n /** Advance to next displayable opcode (geometric entry or geometry part) while updating the current [[GeometryParams]] from appearance related opcodes. */\r\n public next(): IteratorResult<IteratorEntry> {\r\n while (this._index < this.entryArray.length) {\r\n const value = this.entryArray[this._index++];\r\n if (ElementGeometry.isAppearanceEntry(value)) {\r\n const localToWorld = (this._applyLocalToWorld ? this._localToWorld : undefined);\r\n ElementGeometry.updateGeometryParams(value, this.entry.geomParams, localToWorld);\r\n } else if (ElementGeometryOpcode.SubGraphicRange === value.opcode) {\r\n // NOTE: localRange remains valid until the next sub-range entry is encountered...\r\n this.entry.localRange = ElementGeometry.toSubGraphicRange(value);\r\n } else if (ElementGeometryOpcode.PartReference === value.opcode) {\r\n this.entry.value = value;\r\n return { value: this.entry, done: false };\r\n } else if (ElementGeometry.isGeometricEntry(value)) {\r\n this.entry.value = value;\r\n return { value: this.entry, done: false };\r\n }\r\n }\r\n\r\n return { value: this.entry, done: true };\r\n }\r\n\r\n public [Symbol.iterator](): IterableIterator<IteratorEntry> {\r\n return this;\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry can be represented as a [[GeometryQuery]] */\r\n export function isGeometryQueryEntry(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PointPrimitive:\r\n case ElementGeometryOpcode.PointPrimitive2d:\r\n case ElementGeometryOpcode.ArcPrimitive:\r\n case ElementGeometryOpcode.CurveCollection:\r\n case ElementGeometryOpcode.Polyface:\r\n case ElementGeometryOpcode.CurvePrimitive:\r\n case ElementGeometryOpcode.SolidPrimitive:\r\n case ElementGeometryOpcode.BsplineSurface:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry is displayable geometry [[GeometryQuery]], [[BRepEntity.DataProps]], [[TextString]], or [[ImageGraphic]] */\r\n export function isGeometricEntry(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.BRep:\r\n case ElementGeometryOpcode.TextString:\r\n case ElementGeometryOpcode.Image:\r\n return true;\r\n\r\n default:\r\n return isGeometryQueryEntry(entry);\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry is geometric or a part reference */\r\n export function isDisplayableEntry(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PartReference:\r\n return true;\r\n\r\n default:\r\n return isGeometricEntry(entry);\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry represents appearance information */\r\n export function isAppearanceEntry(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.BasicSymbology:\r\n case ElementGeometryOpcode.Fill:\r\n case ElementGeometryOpcode.Pattern:\r\n case ElementGeometryOpcode.Material:\r\n case ElementGeometryOpcode.LineStyleModifiers:\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry represents a single open curve or path */\r\n export function isCurve(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PointPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);\r\n return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.PointPrimitive2d: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);\r\n return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.ArcPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);\r\n return (EGFBAccessors.BoundaryType.Open === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.CurvePrimitive: {\r\n // should never be a point string or closed bcurve...\r\n return true;\r\n }\r\n\r\n case ElementGeometryOpcode.CurveCollection: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n return (\"curveCollection\" === geom.geometryCategory && !(geom as CurveCollection).isAnyRegionType);\r\n }\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry represents a loop, planar region, open polyface, or sheet body */\r\n export function isSurface(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PointPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.PointPrimitive2d: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.ArcPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary());\r\n }\r\n\r\n case ElementGeometryOpcode.CurvePrimitive: {\r\n // should never be a closed bcurve...\r\n return false;\r\n }\r\n\r\n case ElementGeometryOpcode.CurveCollection: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n return (\"curveCollection\" === geom.geometryCategory && (geom as CurveCollection).isAnyRegionType);\r\n }\r\n\r\n case ElementGeometryOpcode.SolidPrimitive: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n return (\"solid\" === geom.geometryCategory && !(geom as SolidPrimitive).isClosedVolume);\r\n }\r\n\r\n case ElementGeometryOpcode.Polyface: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n if (\"polyface\" !== geom.geometryCategory)\r\n return false;\r\n const polyface = (geom as Polyface);\r\n switch (polyface.expectedClosure) {\r\n case 0:\r\n return !PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);\r\n case 1:\r\n return true;\r\n case 2:\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n case ElementGeometryOpcode.BsplineSurface: {\r\n // never treated as a solid even if closed/periodic in u/v...\r\n return true;\r\n }\r\n\r\n case ElementGeometryOpcode.BRep: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);\r\n return (EGFBAccessors.BRepType.Sheet === ppfb.brepType());\r\n }\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return whether the supplied entry represents a capped solid, closed polyface, or solid body */\r\n export function isSolid(entry: ElementGeometryDataEntry): boolean {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.SolidPrimitive: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n return (\"solid\" === geom.geometryCategory && (geom as SolidPrimitive).isClosedVolume);\r\n }\r\n\r\n case ElementGeometryOpcode.Polyface: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return false;\r\n if (\"polyface\" !== geom.geometryCategory)\r\n return false;\r\n const polyface = (geom as Polyface);\r\n switch (polyface.expectedClosure) {\r\n case 0:\r\n return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface);\r\n case 2:\r\n return true;\r\n case 1:\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n case ElementGeometryOpcode.BRep: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);\r\n return (EGFBAccessors.BRepType.Solid === ppfb.brepType());\r\n }\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return the body type that would be used to represent the supplied entry */\r\n export function getBRepEntityType(entry: ElementGeometryDataEntry): BRepEntity.Type | undefined {\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PointPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);\r\n if (EGFBAccessors.BoundaryType.None === ppfb.boundary())\r\n return undefined;\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);\r\n }\r\n\r\n case ElementGeometryOpcode.PointPrimitive2d: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);\r\n if (EGFBAccessors.BoundaryType.None === ppfb.boundary())\r\n return undefined;\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);\r\n }\r\n\r\n case ElementGeometryOpcode.ArcPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);\r\n }\r\n\r\n case ElementGeometryOpcode.CurvePrimitive: {\r\n // should never be a point string or closed bcurve...\r\n return BRepEntity.Type.Wire;\r\n }\r\n\r\n case ElementGeometryOpcode.CurveCollection: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return undefined;\r\n if (\"curveCollection\" !== geom.geometryCategory)\r\n return undefined;\r\n const curves = geom as CurveCollection;\r\n return (curves.isAnyRegionType ? BRepEntity.Type.Sheet : BRepEntity.Type.Wire);\r\n }\r\n\r\n case ElementGeometryOpcode.SolidPrimitive: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return undefined;\r\n if (\"solid\" !== geom.geometryCategory)\r\n return undefined;\r\n const solid = geom as SolidPrimitive;\r\n return (solid.isClosedVolume ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet);\r\n }\r\n\r\n case ElementGeometryOpcode.BsplineSurface: {\r\n // always a surface...\r\n return BRepEntity.Type.Sheet;\r\n }\r\n\r\n case ElementGeometryOpcode.Polyface: {\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return undefined;\r\n if (\"polyface\" !== geom.geometryCategory)\r\n return undefined;\r\n const polyface = (geom as Polyface);\r\n switch (polyface.expectedClosure) {\r\n case 0:\r\n return PolyfaceQuery.isPolyfaceClosedByEdgePairing(polyface) ? BRepEntity.Type.Solid : BRepEntity.Type.Sheet;\r\n case 1:\r\n return BRepEntity.Type.Sheet;\r\n case 2:\r\n return BRepEntity.Type.Solid;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n case ElementGeometryOpcode.BRep: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);\r\n switch (ppfb.brepType()) {\r\n case EGFBAccessors.BRepType.Wire:\r\n return BRepEntity.Type.Wire; // always be persisted as a curve type...\r\n case EGFBAccessors.BRepType.Sheet:\r\n return BRepEntity.Type.Sheet;\r\n case EGFBAccessors.BRepType.Solid:\r\n return BRepEntity.Type.Solid;\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n /** Return entry as a [[GeometryQuery]] */\r\n export function toGeometryQuery(entry: ElementGeometryDataEntry, localToWorld?: Transform): GeometryQuery | undefined {\r\n if (!isGeometryQueryEntry(entry))\r\n return undefined;\r\n\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.PointPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);\r\n\r\n const pts: Point3d[] = [];\r\n for (let i = 0; i < ppfb.coordsLength(); i++)\r\n pts.push(Point3d.create(ppfb.coords(i)!.x(), ppfb.coords(i)!.y(), ppfb.coords(i)!.z()));\r\n\r\n if (0 === pts.length)\r\n return undefined;\r\n\r\n if (undefined !== localToWorld)\r\n localToWorld.multiplyPoint3dArrayInPlace(pts);\r\n\r\n switch (ppfb.boundary()) {\r\n case EGFBAccessors.BoundaryType.Open:\r\n return LineString3d.createPoints(pts);\r\n case EGFBAccessors.BoundaryType.Closed:\r\n return Loop.createPolygon(pts);\r\n default:\r\n return PointString3d.createPoints(pts);\r\n }\r\n }\r\n\r\n case ElementGeometryOpcode.PointPrimitive2d: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive2d.getRootAsPointPrimitive2d(buffer);\r\n\r\n const pts: Point3d[] = [];\r\n for (let i = 0; i < ppfb.coordsLength(); i++)\r\n pts.push(Point3d.create(ppfb.coords(i)!.x(), ppfb.coords(i)!.y()));\r\n\r\n if (0 === pts.length)\r\n return undefined;\r\n\r\n if (undefined !== localToWorld)\r\n localToWorld.multiplyPoint3dArrayInPlace(pts);\r\n\r\n switch (ppfb.boundary()) {\r\n case EGFBAccessors.BoundaryType.Open:\r\n return LineString3d.createPoints(pts);\r\n case EGFBAccessors.BoundaryType.Closed:\r\n return Loop.createPolygon(pts);\r\n default:\r\n return PointString3d.createPoints(pts);\r\n }\r\n }\r\n\r\n case ElementGeometryOpcode.ArcPrimitive: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.ArcPrimitive.getRootAsArcPrimitive(buffer);\r\n\r\n const center = Point3d.create(ppfb.center()!.x(), ppfb.center()!.y(), ppfb.center()!.z());\r\n const vector0 = Vector3d.create(ppfb.vector0()!.x(), ppfb.vector0()!.y(), ppfb.vector0()!.z());\r\n const vector90 = Vector3d.create(ppfb.vector90()!.x(), ppfb.vector90()!.y(), ppfb.vector90()!.z());\r\n const arc = Arc3d.create(center, vector0, vector90, AngleSweep.createStartSweepRadians(ppfb.start(), ppfb.sweep()));\r\n\r\n if (undefined !== localToWorld && !arc.tryTransformInPlace(localToWorld))\r\n return undefined;\r\n\r\n return (EGFBAccessors.BoundaryType.Closed === ppfb.boundary() ? Loop.create(arc) : arc);\r\n }\r\n\r\n case ElementGeometryOpcode.CurvePrimitive:\r\n case ElementGeometryOpcode.CurveCollection:\r\n case ElementGeometryOpcode.SolidPrimitive:\r\n case ElementGeometryOpcode.BsplineSurface:\r\n case ElementGeometryOpcode.Polyface:\r\n const geom = BentleyGeometryFlatBuffer.bytesToGeometry(entry.data, true);\r\n if (undefined === geom || Array.isArray(geom))\r\n return undefined; // Should always be a single entry not an array...\r\n if (undefined !== localToWorld && !geom.tryTransformInPlace(localToWorld))\r\n return undefined;\r\n return geom;\r\n\r\n default:\r\n return undefined; // Not a GeometryQuery, need to be handled explicitly...\r\n }\r\n }\r\n\r\n /** Create entry from a [[GeometryQuery]] */\r\n export function fromGeometryQuery(geom: GeometryQuery, worldToLocal?: Transform): ElementGeometryDataEntry | undefined {\r\n let opcode;\r\n switch (geom.geometryCategory) {\r\n case \"bsurf\":\r\n opcode = ElementGeometryOpcode.BsplineSurface;\r\n break;\r\n case \"curveCollection\":\r\n opcode = ElementGeometryOpcode.CurveCollection;\r\n break;\r\n case \"curvePrimitive\":\r\n case \"pointCollection\":\r\n opcode = ElementGeometryOpcode.CurvePrimitive;\r\n break;\r\n case \"polyface\":\r\n opcode = ElementGeometryOpcode.Polyface;\r\n break;\r\n case \"solid\":\r\n opcode = ElementGeometryOpcode.SolidPrimitive;\r\n break;\r\n default:\r\n return undefined;\r\n }\r\n\r\n if (undefined !== worldToLocal) {\r\n const localGeom = geom.cloneTransformed(worldToLocal);\r\n if (undefined === localGeom)\r\n return undefined;\r\n geom = localGeom;\r\n }\r\n\r\n const data = BentleyGeometryFlatBuffer.geometryToBytes(geom, true);\r\n if (undefined === data)\r\n return undefined;\r\n\r\n return { opcode, data };\r\n }\r\n\r\n /** Return entry as a [[TextString]] */\r\n export function toTextString(entry: ElementGeometryDataEntry, localToWorld?: Transform): TextStringProps | undefined {\r\n if (ElementGeometryOpcode.TextString !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.TextString.getRootAsTextString(buffer);\r\n\r\n const style = ppfb.style();\r\n if (null === style)\r\n return undefined;\r\n\r\n const text = ppfb.text();\r\n const props: TextStringProps = { text: (null !== text ? text : \"\"), font: style.fontId(), height: style.height() };\r\n\r\n props.widthFactor = style.widthFactor();\r\n props.bold = style.isBold();\r\n props.italic = style.isItalic();\r\n props.underline = style.isUnderlined();\r\n\r\n const transform = ppfb.transform();\r\n if (null !== transform) {\r\n props.origin = Point3d.create(transform.form3d03(), transform.form3d13(), transform.form3d23());\r\n props.rotation = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(transform.form3d00(), transform.form3d01(), transform.form3d02(), transform.form3d10(), transform.form3d11(), transform.form3d12(), transform.form3d20(), transform.form3d21(), transform.form3d22()));\r\n }\r\n\r\n if (undefined === localToWorld)\r\n return props;\r\n\r\n const textString = new TextString(props);\r\n if (!textString.transformInPlace(localToWorld))\r\n return undefined;\r\n\r\n return textString.toJSON();\r\n }\r\n\r\n /** Returns only the [[TextStringGlyphData]] embedded in the [[TextString]] flatbuffer. This data is only internal to the native display libaries. */\r\n export function toTextStringGlyphData(entry: ElementGeometryDataEntry): TextStringGlyphData | undefined {\r\n if (ElementGeometryOpcode.TextString !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.TextString.getRootAsTextString(buffer);\r\n\r\n const glyphOriginToPoint2d = (origin: EGFBAccessors.TextStringGlyphOrigin | null): Point2d => {\r\n if (!origin)\r\n throw new Error(\"Value cannot be null.\");\r\n return new Point2d(origin.x(), origin.y());\r\n };\r\n const textStringRangeToRange2d = (r: EGFBAccessors.TextStringRange | null) => r ? new Range2d(r.lowx(), r.lowy(), r.highx(), r.highy()) : null;\r\n const range = textStringRangeToRange2d(ppfb.range());\r\n const glyphIds = Array.from({ length: ppfb.glyphIdsLength() }, (_, i) => ppfb.glyphIds(i) ?? 0);\r\n const glyphOrigins = Array.from({ length: ppfb.glyphOriginsLength() }, (_, i) => glyphOriginToPoint2d(ppfb.glyphOrigins(i)));\r\n if (!range || range.isNull || glyphIds.length === 0 || glyphOrigins.length === 0)\r\n return undefined;\r\n return { glyphIds, glyphOrigins, range };\r\n }\r\n\r\n /** Create entry from a [[TextString]] */\r\n export function fromTextString(text: TextStringProps, worldToLocal?: Transform, glyphs?: TextStringGlyphData): ElementGeometryDataEntry | undefined {\r\n if (undefined !== worldToLocal) {\r\n const localText = new TextString(text);\r\n if (!localText.transformInPlace(worldToLocal))\r\n return undefined;\r\n text = localText.toJSON();\r\n }\r\n\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.TextString;\r\n\r\n const textOffset = fbb.createString(text.text);\r\n const styleOffset = EGFBAccessors.TextStringStyle.createTextStringStyle(fbb, 1, 0, text.font, undefined === text.bold ? false : text.bold, undefined === text.italic ? false : text.italic, undefined === text.underline ? false : text.underline, text.height, undefined === text.widthFactor ? 1.0 : text.widthFactor);\r\n const fbbGlyphs = (() => {\r\n if (!glyphs || glyphs.range.isNull)\r\n return undefined;\r\n const glyphIdsOffset = builder.createGlyphIdsVector(fbb, glyphs.glyphIds);\r\n builder.startGlyphOriginsVector(fbb, glyphs.glyphOrigins.length);\r\n for (const origin of [...glyphs.glyphOrigins].reverse()) {\r\n EGFBAccessors.TextStringGlyphOrigin.createTextStringGlyphOrigin(fbb, origin.x, origin.y);\r\n }\r\n const glyphOriginsOffset = fbb.endVector();\r\n return { glyphIdsOffset, glyphOriginsOffset, range: glyphs.range };\r\n })();\r\n\r\n builder.startTextString(fbb);\r\n\r\n builder.addMajorVersion(fbb, 1);\r\n builder.addMinorVersion(fbb, 0);\r\n\r\n builder.addText(fbb, textOffset);\r\n builder.addStyle(fbb, styleOffset);\r\n\r\n if (undefined !== text.origin || undefined !== text.rotation) {\r\n const origin = Point3d.fromJSON(text.origin);\r\n const angles = YawPitchRollAngles.fromJSON(text.rotation);\r\n const matrix = angles.toMatrix3d();\r\n const coffs = matrix.coffs;\r\n const transformOffset = EGFBAccessors.TextStringTransform.createTextStringTransform(fbb, coffs[0], coffs[1], coffs[2], origin.x, coffs[3], coffs[4], coffs[5], origin.y, coffs[6], coffs[7], coffs[8], origin.z);\r\n builder.addTransform(fbb, transformOffset);\r\n }\r\n\r\n if (fbbGlyphs) {\r\n builder.addRange(fbb, EGFBAccessors.TextStringRange.createTextStringRange(fbb, fbbGlyphs.range.low.x, fbbGlyphs.range.low.y, fbbGlyphs.range.high.x, fbbGlyphs.range.high.y));\r\n builder.addGlyphIds(fbb, fbbGlyphs.glyphIdsOffset);\r\n builder.addGlyphOrigins(fbb, fbbGlyphs.glyphOriginsOffset);\r\n }\r\n\r\n const mLoc = builder.endTextString(fbb);\r\n fbb.finish(mLoc);\r\n const data = fbb.asUint8Array();\r\n\r\n return { opcode: ElementGeometryOpcode.TextString, data };\r\n }\r\n\r\n /** Return entry as a [[ImageGraphic]] */\r\n export function toImageGraphic(entry: ElementGeometryDataEntry, localToWorld?: Transform): ImageGraphicProps | undefined {\r\n if (ElementGeometryOpcode.Image !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.Image.getRootAsImage(buffer);\r\n\r\n const textureLong = ppfb.textureId();\r\n const textureId = Id64.fromUint32Pair(textureLong.low, textureLong.high);\r\n const hasBorder = (1 === ppfb.drawBorder());\r\n\r\n const corners = new ImageGraphicCorners(Point3d.createZero(), Point3d.createZero(), Point3d.createZero(), Point3d.createZero());\r\n const corner0 = ppfb.tileCorner0();\r\n const corner1 = ppfb.tileCorner1();\r\n const corner2 = ppfb.tileCorner2();\r\n const corner3 = ppfb.tileCorner3();\r\n\r\n if (null !== corner0)\r\n corners[0].setFrom(Point3d.create(corner0.x(), corner0.y(), corner0.z()));\r\n if (null !== corner1)\r\n corners[1].setFrom(Point3d.create(corner1.x(), corner1.y(), corner1.z()));\r\n if (null !== corner2)\r\n corners[2].setFrom(Point3d.create(corner2.x(), corner2.y(), corner2.z()));\r\n if (null !== corner3)\r\n corners[3].setFrom(Point3d.create(corner3.x(), corner3.y(), corner3.z()));\r\n\r\n if (undefined !== localToWorld) {\r\n localToWorld.multiplyXYAndZInPlace(corners[0]);\r\n localToWorld.multiplyXYAndZInPlace(corners[1]);\r\n localToWorld.multiplyXYAndZInPlace(corners[2]);\r\n localToWorld.multiplyXYAndZInPlace(corners[3]);\r\n }\r\n\r\n return { corners: corners.toJSON(), textureId, hasBorder };\r\n }\r\n\r\n /** Create entry from a [[ImageGraphic]] */\r\n export function fromImageGraphic(image: ImageGraphicProps, worldToLocal?: Transform): ElementGeometryDataEntry | undefined {\r\n if (undefined !== worldToLocal) {\r\n const localImage = ImageGraphic.fromJSON(image).cloneTransformed(worldToLocal);\r\n image = localImage.toJSON();\r\n }\r\n\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.Image;\r\n builder.startImage(fbb);\r\n\r\n const textudeIdPair = Id64.getUint32Pair(image.textureId);\r\n builder.addTextureId(fbb, flatbuffers.Long.create(textudeIdPair.lower, textudeIdPair.upper));\r\n builder.addDrawBorder(fbb, image.hasBorder ? 1 : 0);\r\n\r\n const corners = ImageGraphicCorners.fromJSON(image.corners);\r\n const cornerOffset0 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[0].x, corners[0].y, corners[0].z);\r\n builder.addTileCorner0(fbb, cornerOffset0);\r\n const cornerOffset1 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[1].x, corners[1].y, corners[1].z);\r\n builder.addTileCorner1(fbb, cornerOffset1);\r\n const cornerOffset2 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[2].x, corners[2].y, corners[2].z);\r\n builder.addTileCorner2(fbb, cornerOffset2);\r\n const cornerOffset3 = EGFBAccessors.DPoint3d.createDPoint3d(fbb, corners[3].x, corners[3].y, corners[3].z);\r\n builder.addTileCorner3(fbb, cornerOffset3);\r\n\r\n const mLoc = builder.endImage(fbb);\r\n fbb.finish(mLoc);\r\n const data = fbb.asUint8Array();\r\n\r\n return { opcode: ElementGeometryOpcode.Image, data };\r\n }\r\n\r\n /** Return entry as a [[BRepEntity.DataProps]] for checking brep type and face attachments. */\r\n export function toBRep(entry: ElementGeometryDataEntry, wantBRepData: boolean = false, localToWorld?: Transform): BRepEntity.DataProps | undefined {\r\n if (ElementGeometryOpcode.BRep !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);\r\n\r\n const toBRepType = (typeFb: EGFBAccessors.BRepType) => {\r\n switch (typeFb) {\r\n case EGFBAccessors.BRepType.Wire:\r\n return BRepEntity.Type.Wire;\r\n case EGFBAccessors.BRepType.Sheet:\r\n return BRepEntity.Type.Sheet;\r\n default:\r\n return BRepEntity.Type.Solid;\r\n }\r\n };\r\n\r\n const type = toBRepType(ppfb.brepType());\r\n\r\n let transform;\r\n const entityTransform = ppfb.entityTransform();\r\n if (null !== entityTransform)\r\n transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());\r\n\r\n if (undefined !== localToWorld) {\r\n if (undefined !== transform)\r\n localToWorld.multiplyTransformTransform(transform, transform);\r\n else\r\n transform = localToWorld;\r\n }\r\n\r\n const faceSymbLen = ppfb.symbologyLength();\r\n let faceSymbology;\r\n if (0 !== faceSymbLen) {\r\n const faceSymbPropsArray: BRepEntity.FaceSymbologyProps[] = [];\r\n for (let index = 0; index < faceSymbLen; ++index) {\r\n const faceSymbFb = ppfb.symbology(index);\r\n const faceSymbProps: BRepEntity.FaceSymbologyProps = {};\r\n if (null !== faceSymbFb) {\r\n if (1 === faceSymbFb.useColor())\r\n faceSymbProps.color = faceSymbFb.color();\r\n if (1 === faceSymbFb.useMaterial())\r\n faceSymbProps.materialId = Id64.fromUint32Pair(faceSymbFb.materialId().low, faceSymbFb.materialId().high);\r\n faceSymbProps.transparency = faceSymbFb.transparency();\r\n }\r\n faceSymbPropsArray.push(faceSymbProps);\r\n }\r\n faceSymbology = faceSymbPropsArray;\r\n }\r\n\r\n let data;\r\n const entityData = ppfb.entityDataArray();\r\n if (wantBRepData && null !== entityData)\r\n data = Base64EncodedString.fromUint8Array(entityData);\r\n\r\n return { data, type, transform: transform?.toJSON(), faceSymbology };\r\n }\r\n\r\n /** Create entry from a [[BRepEntity.DataProps]]. Provided for compatibility with GeometryStreamBuilder only. */\r\n export function fromBRep(brep: BRepEntity.DataProps, worldToLocal?: Transform): ElementGeometryDataEntry | undefined {\r\n if (undefined !== worldToLocal) {\r\n const entityTrans = Transform.fromJSON(brep.transform);\r\n const localTrans = worldToLocal.multiplyTransformTransform(entityTrans);\r\n brep = {\r\n data: brep.data,\r\n type: brep.type,\r\n transform: localTrans.isIdentity ? undefined : localTrans.toJSON(),\r\n faceSymbology: brep.faceSymbology,\r\n };\r\n }\r\n\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.BRepData;\r\n let dataOffset;\r\n let faceSymbOffset;\r\n\r\n if (undefined !== brep.data) {\r\n const entityData = Base64EncodedString.toUint8Array(brep.data);\r\n if (entityData.length === 0)\r\n return undefined;\r\n\r\n dataOffset = builder.createEntityDataVector(fbb, entityData);\r\n }\r\n\r\n if (undefined !== brep.faceSymbology) {\r\n builder.startSymbologyVector(fbb, brep.faceSymbology.length);\r\n for (let i = brep.faceSymbology.length - 1; i >= 0; i--) {\r\n const symb = brep.faceSymbology[i];\r\n const materialIdPair = Id64.getUint32Pair(symb.materialId ? symb.materialId : Id64.invalid);\r\n const matLong = flatbuffers.Long.create(materialIdPair.lower, materialIdPair.upper);\r\n EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, symb.color ? 1 : 0, symb.materialId ? 1 : 0, symb.color ? symb.color : 0, matLong, symb.transparency ? symb.transparency : 0, 0, 0);\r\n }\r\n faceSymbOffset = fbb.endVector();\r\n }\r\n\r\n builder.startBRepData(fbb);\r\n\r\n const toEGFBBRepType = (type: BRepEntity.Type) => {\r\n switch (type) {\r\n case BRepEntity.Type.Wire:\r\n return EGFBAccessors.BRepType.Wire;\r\n case BRepEntity.Type.Sheet:\r\n return EGFBAccessors.BRepType.Sheet;\r\n default:\r\n return EGFBAccessors.BRepType.Solid;\r\n }\r\n };\r\n\r\n if (undefined !== brep.type)\r\n builder.addBrepType(fbb, toEGFBBRepType(brep.type));\r\n\r\n if (undefined !== brep.transform) {\r\n const transform = Transform.fromJSON(brep.transform);\r\n const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);\r\n builder.addEntityTransform(fbb, transformOffset);\r\n }\r\n\r\n if (undefined !== dataOffset)\r\n builder.addEntityData(fbb, dataOffset);\r\n\r\n if (undefined !== faceSymbOffset)\r\n builder.addSymbology(fbb, faceSymbOffset);\r\n\r\n const mLoc = builder.endBRepData(fbb);\r\n fbb.finish(mLoc);\r\n const data = fbb.asUint8Array();\r\n\r\n return { opcode: ElementGeometryOpcode.BRep, data };\r\n }\r\n\r\n /** Apply transform directly to ElementGeometryDataEntry for a BRep */\r\n export function transformBRep(entry: ElementGeometryDataEntry, inputTransform: Transform): boolean {\r\n if (ElementGeometryOpcode.BRep !== entry.opcode)\r\n return false;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BRepData.getRootAsBRepData(buffer);\r\n\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.BRepData;\r\n\r\n const entityData = ppfb.entityDataArray();\r\n const dataOffset = (null !== entityData ? builder.createEntityDataVector(fbb, entityData) : undefined);\r\n\r\n let faceSymbOffset;\r\n const faceSymbLen = ppfb.symbologyLength();\r\n if (0 !== faceSymbLen) {\r\n builder.startSymbologyVector(fbb, faceSymbLen);\r\n for (let i = faceSymbLen - 1; i >= 0; i--) {\r\n const faceSymbFb = ppfb.symbology(i);\r\n if (null === faceSymbFb)\r\n continue;\r\n EGFBAccessors.FaceSymbology.createFaceSymbology(fbb, faceSymbFb.useColor(), faceSymbFb.useMaterial(), faceSymbFb.color(), faceSymbFb.materialId(), faceSymbFb.transparency(), 0, 0);\r\n }\r\n faceSymbOffset = fbb.endVector();\r\n }\r\n\r\n builder.startBRepData(fbb);\r\n builder.addBrepType(fbb, ppfb.brepType());\r\n\r\n let transform;\r\n const entityTransform = ppfb.entityTransform();\r\n if (null !== entityTransform)\r\n transform = Transform.createRowValues(entityTransform.x00(), entityTransform.x01(), entityTransform.x02(), entityTransform.tx(), entityTransform.x10(), entityTransform.x11(), entityTransform.x12(), entityTransform.ty(), entityTransform.x20(), entityTransform.x21(), entityTransform.x22(), entityTransform.tz());\r\n\r\n if (undefined !== transform)\r\n inputTransform.multiplyTransformTransform(transform, transform);\r\n else\r\n transform = inputTransform;\r\n\r\n const transformOffset = EGFBAccessors.Transform.createTransform(fbb, transform.matrix.coffs[0], transform.matrix.coffs[1], transform.matrix.coffs[2], transform.origin.x, transform.matrix.coffs[3], transform.matrix.coffs[4], transform.matrix.coffs[5], transform.origin.y, transform.matrix.coffs[6], transform.matrix.coffs[7], transform.matrix.coffs[8], transform.origin.z);\r\n builder.addEntityTransform(fbb, transformOffset);\r\n\r\n if (undefined !== dataOffset)\r\n builder.addEntityData(fbb, dataOffset);\r\n\r\n if (undefined !== faceSymbOffset)\r\n builder.addSymbology(fbb, faceSymbOffset);\r\n\r\n const mLoc = builder.endBRepData(fbb);\r\n fbb.finish(mLoc);\r\n entry.data = fbb.asUint8Array();\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n enum StyleMod {\r\n Scale = 0x01,\r\n DashScale = 0x02,\r\n GapScale = 0x04,\r\n StartWidth = 0x08,\r\n EndWidth = 0x10,\r\n DistPhase = 0x20,\r\n FractPhase = 0x40,\r\n CenterPhase = 0x80,\r\n Normal = 0x0100,\r\n Rotation = 0x0200,\r\n PhysicalWidth = 0x02000,\r\n SegMode = 0x40000000,\r\n NoSegMode = 0x80000000,\r\n }\r\n\r\n /** Update the supplied [[GeometryParams]] from an entry with appearance information */\r\n export function updateGeometryParams(entry: ElementGeometryDataEntry, geomParams: GeometryParams, localToWorld?: Transform): boolean {\r\n if (!isAppearanceEntry(entry))\r\n return false;\r\n\r\n let changed = false;\r\n\r\n switch (entry.opcode) {\r\n case ElementGeometryOpcode.BasicSymbology: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.BasicSymbology.getRootAsBasicSymbology(buffer);\r\n\r\n const subcatLong = ppfb.subCategoryId();\r\n let subcatId = Id64.fromUint32Pair(subcatLong.low, subcatLong.high);\r\n\r\n if (Id64.isInvalid(subcatId))\r\n subcatId = geomParams.subCategoryId; // Preserve current sub-category if not explicitly stored...\r\n\r\n if (Id64.isValid(subcatId)) {\r\n geomParams.setSubCategoryId(subcatId); // Reset to sub-category appearance...\r\n changed = true;\r\n }\r\n\r\n if (ppfb.useColor()) {\r\n const lineColor = ColorDef.fromTbgr(ppfb.color());\r\n if (undefined === geomParams.lineColor || !lineColor.equals(geomParams.lineColor)) {\r\n geomParams.lineColor = lineColor;\r\n changed = true;\r\n }\r\n }\r\n\r\n if (ppfb.useWeight()) {\r\n const weight = ppfb.weight();\r\n if (undefined === geomParams.weight || weight !== geomParams.weight) {\r\n geomParams.weight = weight;\r\n changed = true;\r\n }\r\n }\r\n\r\n if (ppfb.useStyle()) {\r\n const styleLong = ppfb.lineStyleId();\r\n const styleId = Id64.fromUint32Pair(styleLong.low, styleLong.high);\r\n if (undefined === geomParams.styleInfo || styleId !== geomParams.styleInfo.styleId) {\r\n geomParams.styleInfo = new LineStyle.Info(styleId);\r\n changed = true;\r\n }\r\n }\r\n\r\n const transparency = ppfb.transparency();\r\n if (transparency !== (undefined !== geomParams.elmTransparency ? geomParams.elmTransparency : 0)) {\r\n geomParams.elmTransparency = transparency;\r\n changed = true;\r\n }\r\n\r\n const displayPriority = ppfb.displayPriority();\r\n if (displayPriority !== (undefined !== geomParams.elmPriority ? geomParams.elmPriority : 0)) {\r\n geomParams.elmPriority = displayPriority;\r\n changed = true;\r\n }\r\n\r\n const geometryClass = ppfb.geomClass();\r\n if (geometryClass !== (undefined !== geomParams.geometryClass ? geomParams.geometryClass : GeometryClass.Primary)) {\r\n geomParams.geometryClass = geometryClass;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n case ElementGeometryOpcode.LineStyleModifiers: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.LineStyleModifiers.getRootAsLineStyleModifiers(buffer);\r\n const props: LineStyle.ModifierProps = {};\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.Scale))\r\n props.scale = ppfb.scale();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.GapScale))\r\n props.gapScale = ppfb.gapScale();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.DashScale))\r\n props.dashScale = ppfb.dashScale();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.StartWidth))\r\n props.startWidth = ppfb.startWidth();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.EndWidth))\r\n props.endWidth = ppfb.endWidth();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.DistPhase))\r\n props.distPhase = ppfb.distPhase();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.FractPhase))\r\n props.fractPhase = ppfb.fractPhase();\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.CenterPhase))\r\n props.centerPhase = true;\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.SegMode))\r\n props.segmentMode = true;\r\n else if (0 !== (ppfb.modifiers() & StyleMod.NoSegMode))\r\n props.segmentMode = false;\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.PhysicalWidth))\r\n props.physicalWidth = true;\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.Normal)) {\r\n const normal = ppfb.normal();\r\n if (null !== normal)\r\n props.normal = Vector3d.create(normal.x(), normal.y(), normal.z());\r\n }\r\n\r\n if (0 !== (ppfb.modifiers() & StyleMod.Rotation))\r\n props.rotation = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());\r\n\r\n const styleMod = new LineStyle.Modifier(props);\r\n if (undefined !== localToWorld)\r\n styleMod.applyTransform(localToWorld);\r\n\r\n if (undefined === geomParams.styleInfo) {\r\n geomParams.styleInfo = new LineStyle.Info(Id64.invalid, styleMod);\r\n changed = true;\r\n } else if (undefined === geomParams.styleInfo.styleMod || !styleMod.equals(geomParams.styleInfo.styleMod)) {\r\n geomParams.styleInfo.styleMod = styleMod;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n case ElementGeometryOpcode.Fill: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.AreaFill.getRootAsAreaFill(buffer);\r\n\r\n const toFillDisplay = (fill: EGFBAccessors.FillDisplay) => {\r\n switch (fill) {\r\n case EGFBAccessors.FillDisplay.ByView:\r\n return FillDisplay.ByView;\r\n case EGFBAccessors.FillDisplay.Always:\r\n return FillDisplay.Always;\r\n case EGFBAccessors.FillDisplay.Blanking:\r\n return FillDisplay.Blanking;\r\n default:\r\n return FillDisplay.Never;\r\n }\r\n };\r\n\r\n const fillDisplay = toFillDisplay(ppfb.fill());\r\n if (fillDisplay !== (undefined !== geomParams.fillDisplay ? geomParams.fillDisplay : FillDisplay.Never)) {\r\n geomParams.fillDisplay = fillDisplay;\r\n changed = true;\r\n }\r\n\r\n if (FillDisplay.Never === fillDisplay)\r\n return changed;\r\n\r\n const transparency = ppfb.transparency();\r\n if (transparency !== (undefined !== geomParams.fillTransparency ? geomParams.fillTransparency : 0)) {\r\n geomParams.fillTransparency = transparency;\r\n changed = true;\r\n }\r\n\r\n if (EGFBAccessors.GradientMode.None !== ppfb.mode()) {\r\n const toGradientMode = (mode: EGFBAccessors.GradientMode) => {\r\n switch (mode) {\r\n case EGFBAccessors.GradientMode.Linear:\r\n return Gradient.Mode.Linear;\r\n case EGFBAccessors.GradientMode.Curved:\r\n return Gradient.Mode.Curved;\r\n case EGFBAccessors.GradientMode.Cylindrical:\r\n return Gradient.Mode.Cylindrical;\r\n case EGFBAccessors.GradientMode.Spherical:\r\n return Gradient.Mode.Spherical;\r\n case EGFBAccessors.GradientMode.Hemispherical:\r\n return Gradient.Mode.Hemispherical;\r\n case EGFBAccessors.GradientMode.Thematic:\r\n return Gradient.Mode.Thematic;\r\n default:\r\n return Gradient.Mode.None;\r\n }\r\n };\r\n\r\n const keys: Gradient.KeyColorProps[] = [];\r\n const colors = ppfb.colorsArray();\r\n const values = ppfb.valuesArray();\r\n if (null !== colors && null !== values && colors.length === values.length) {\r\n for (let iKey = 0; iKey < colors.length; ++iKey)\r\n keys.push({ value: values[iKey], color: colors[iKey] });\r\n }\r\n\r\n const props: Gradient.SymbProps = { mode: toGradientMode(ppfb.mode()), keys };\r\n\r\n const flags = ppfb.flags();\r\n const angle = ppfb.angle();\r\n const tint = ppfb.tint();\r\n const shift = ppfb.shift();\r\n\r\n props.flags = (0 !== flags ? flags : undefined);\r\n props.angle = (0 !== angle ? { radians: angle } : undefined);\r\n props.tint = (0 !== tint ? tint : undefined);\r\n props.shift = (0 !== shift ? shift : undefined);\r\n\r\n if (Gradient.Mode.Thematic === props.mode) {\r\n const thematic = ppfb.thematicSettings();\r\n\r\n if (null !== thematic) {\r\n const tprops: ThematicGradientSettingsProps = {};\r\n\r\n const mode = thematic.mode();\r\n const stepCount = thematic.stepCount();\r\n const marginColor = thematic.marginColor();\r\n const colorScheme = thematic.colorScheme();\r\n\r\n tprops.mode = (0 !== mode ? mode : undefined);\r\n tprops.stepCount = (0 !== stepCount ? stepCount : undefined);\r\n tprops.marginColor = (0 !== marginColor ? marginColor : undefined);\r\n tprops.colorScheme = (0 !== colorScheme ? colorScheme : undefined);\r\n\r\n props.thematicSettings = tprops;\r\n }\r\n }\r\n\r\n const gradient = Gradient.Symb.fromJSON(props);\r\n if (undefined === geomParams.gradient || !gradient.equals(geomParams.gradient)) {\r\n geomParams.gradient = gradient;\r\n changed = true;\r\n }\r\n } else if (0 !== ppfb.backgroundFill()) {\r\n const backgroundFill = (2 === ppfb.backgroundFill() ? BackgroundFill.Outline : BackgroundFill.Solid);\r\n if (backgroundFill !== geomParams.backgroundFill) {\r\n geomParams.backgroundFill = backgroundFill;\r\n changed = true;\r\n }\r\n } else if (ppfb.useColor()) {\r\n const fillColor = ColorDef.fromTbgr(ppfb.color());\r\n if (undefined === geomParams.fillColor || !fillColor.equals(geomParams.fillColor)) {\r\n geomParams.fillColor = fillColor;\r\n changed = true;\r\n }\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n case ElementGeometryOpcode.Pattern: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.AreaPattern.getRootAsAreaPattern(buffer);\r\n const props: AreaPattern.ParamsProps = {};\r\n\r\n const origin = ppfb.origin();\r\n if (null !== origin) {\r\n const point = Point3d.create(origin.x(), origin.y(), origin.z());\r\n if (!point.isAlmostZero)\r\n props.origin = point;\r\n }\r\n\r\n const rotation = ppfb.rotation();\r\n if (null !== rotation) {\r\n const angles = YawPitchRollAngles.createFromMatrix3d(Matrix3d.createRowValues(\r\n rotation.x00(), rotation.x01(), rotation.x02(),\r\n rotation.x10(), rotation.x11(), rotation.x12(),\r\n rotation.x20(), rotation.x21(), rotation.x22()),\r\n );\r\n if (undefined !== angles && !angles.isIdentity())\r\n props.rotation = angles;\r\n }\r\n\r\n const space1 = ppfb.space1();\r\n const space2 = ppfb.space2();\r\n const angle1 = ppfb.angle1();\r\n const angle2 = ppfb.angle2();\r\n const scale = ppfb.scale();\r\n\r\n props.space1 = (0 !== space1 ? space1 : undefined);\r\n props.space2 = (0 !== space2 ? space2 : undefined);\r\n props.angle1 = (0 !== angle1 ? { radians: angle1 } : undefined);\r\n props.angle2 = (0 !== angle2 ? { radians: angle2 } : undefined);\r\n props.scale = (0 !== scale ? scale : undefined);\r\n\r\n if (ppfb.useColor())\r\n props.color = ppfb.color();\r\n\r\n if (ppfb.useWeight())\r\n props.weight = ppfb.weight();\r\n\r\n props.invisibleBoundary = (1 === ppfb.invisibleBoundary() ? true : undefined);\r\n props.snappable = (1 === ppfb.snappable() ? true : undefined);\r\n\r\n const symbolId = Id64.fromUint32Pair(ppfb.symbolId().low, ppfb.symbolId().high);\r\n props.symbolId = (Id64.isValid(symbolId) ? symbolId : undefined);\r\n\r\n const nDefLines = ppfb.defLineLength();\r\n if (0 !== nDefLines) {\r\n const defLines: AreaPattern.HatchDefLineProps[] = [];\r\n\r\n for (let iLine = 0; iLine < nDefLines; ++iLine) {\r\n const defLine = ppfb.defLine(iLine);\r\n if (!defLine)\r\n continue;\r\n\r\n const line: AreaPattern.HatchDefLineProps = {};\r\n\r\n const angle = defLine.angle();\r\n line.angle = (0 !== angle ? { radians: defLine.angle() } : undefined);\r\n\r\n const through = defLine.through();\r\n if (through) {\r\n const thr = Point2d.create(through.x(), through.y());\r\n if (!thr.isAlmostZero)\r\n line.through = thr;\r\n }\r\n\r\n const offset = defLine.offset();\r\n if (offset) {\r\n const off = Point2d.create(offset.x(), offset.y());\r\n if (!off.isAlmostZero)\r\n line.offset = off;\r\n }\r\n\r\n const dashArray = defLine.dashesArray();\r\n if (0 !== defLine.dashesLength() && null !== dashArray) {\r\n const dashes: number[] = [];\r\n for (const value of dashArray) {\r\n dashes.push(value);\r\n }\r\n line.dashes = dashes;\r\n }\r\n\r\n defLines.push(line);\r\n }\r\n\r\n props.defLines = defLines;\r\n }\r\n\r\n const pattern = AreaPattern.Params.fromJSON(props);\r\n if (undefined !== localToWorld)\r\n pattern.applyTransform(localToWorld);\r\n\r\n if (undefined === geomParams.pattern || !pattern.equals(geomParams.pattern)) {\r\n geomParams.pattern = pattern;\r\n changed = true;\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n case ElementGeometryOpcode.Material: {\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.Material.getRootAsMaterial(buffer);\r\n\r\n if (ppfb.useMaterial()) {\r\n const matLong = ppfb.materialId();\r\n const materialId = Id64.fromUint32Pair(matLong.low, matLong.high);\r\n if (undefined === geomParams.materialId || materialId !== geomParams.materialId) {\r\n geomParams.materialId = materialId;\r\n changed = true;\r\n }\r\n }\r\n\r\n return changed;\r\n }\r\n\r\n default:\r\n return changed;\r\n }\r\n }\r\n\r\n /** Append entries to represent a [[GeometryParams]] */\r\n export function appendGeometryParams(geomParams: GeometryParams, entries: ElementGeometryDataEntry[], worldToLocal?: Transform): boolean {\r\n const fbbBas = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.BasicSymbology;\r\n builder.startBasicSymbology(fbbBas);\r\n\r\n const subcatIdPair = Id64.getUint32Pair(geomParams.subCategoryId);\r\n builder.addSubCategoryId(fbbBas, flatbuffers.Long.create(subcatIdPair.lower, subcatIdPair.upper));\r\n\r\n if (undefined !== geomParams.lineColor) {\r\n builder.addColor(fbbBas, geomParams.lineColor.tbgr);\r\n builder.addUseColor(fbbBas, 1);\r\n }\r\n\r\n if (undefined !== geomParams.weight) {\r\n builder.addWeight(fbbBas, geomParams.weight);\r\n builder.addUseWeight(fbbBas, 1);\r\n }\r\n\r\n if (undefined !== geomParams.styleInfo) {\r\n const styleIdPair = Id64.getUint32Pair(geomParams.styleInfo.styleId);\r\n builder.addLineStyleId(fbbBas, flatbuffers.Long.create(styleIdPair.lower, styleIdPair.upper));\r\n builder.addUseStyle(fbbBas, 1);\r\n }\r\n\r\n if (undefined !== geomParams.elmTransparency && 0 !== geomParams.elmTransparency) {\r\n builder.addTransparency(fbbBas, geomParams.elmTransparency);\r\n }\r\n\r\n if (undefined !== geomParams.elmPriority && 0 !== geomParams.elmPriority) {\r\n builder.addDisplayPriority(fbbBas, geomParams.elmPriority);\r\n }\r\n\r\n if (undefined !== geomParams.geometryClass && GeometryClass.Primary !== geomParams.geometryClass) {\r\n builder.addGeomClass(fbbBas, geomParams.geometryClass);\r\n }\r\n\r\n const mLoc = builder.endBasicSymbology(fbbBas);\r\n fbbBas.finish(mLoc);\r\n const data = fbbBas.asUint8Array();\r\n\r\n entries.push({ opcode: ElementGeometryOpcode.BasicSymbology, data });\r\n\r\n if (undefined !== geomParams.styleInfo && undefined !== geomParams.styleInfo.styleMod) {\r\n const fbbLS = new flatbuffers.Builder();\r\n const builderLS = EGFBAccessors.LineStyleModifiers;\r\n builderLS.startLineStyleModifiers(fbbLS);\r\n\r\n let lsMods = geomParams.styleInfo.styleMod;\r\n if (undefined !== worldToLocal) {\r\n lsMods = new LineStyle.Modifier(lsMods);\r\n if (!lsMods.applyTransform(worldToLocal))\r\n return false;\r\n }\r\n\r\n let modifiers = 0;\r\n\r\n if (undefined !== lsMods.scale) {\r\n builderLS.addScale(fbbLS, lsMods.scale);\r\n modifiers |= StyleMod.Scale;\r\n }\r\n\r\n if (undefined !== lsMods.dashScale) {\r\n builderLS.addDashScale(fbbLS, lsMods.dashScale);\r\n modifiers |= StyleMod.DashScale;\r\n }\r\n\r\n if (undefined !== lsMods.gapScale) {\r\n builderLS.addGapScale(fbbLS, lsMods.gapScale);\r\n modifiers |= StyleMod.GapScale;\r\n }\r\n\r\n if (undefined !== lsMods.startWidth) {\r\n builderLS.addStartWidth(fbbLS, lsMods.startWidth);\r\n modifiers |= StyleMod.StartWidth;\r\n }\r\n\r\n if (undefined !== lsMods.endWidth) {\r\n builderLS.addEndWidth(fbbLS, lsMods.endWidth);\r\n modifiers |= StyleMod.EndWidth;\r\n }\r\n\r\n if (undefined !== lsMods.distPhase) {\r\n builderLS.addDistPhase(fbbLS, lsMods.distPhase);\r\n modifiers |= StyleMod.DistPhase;\r\n }\r\n\r\n if (undefined !== lsMods.fractPhase) {\r\n builderLS.addFractPhase(fbbLS, lsMods.fractPhase);\r\n modifiers |= StyleMod.FractPhase;\r\n }\r\n\r\n if (lsMods.centerPhase) {\r\n modifiers |= StyleMod.CenterPhase;\r\n }\r\n\r\n if (undefined !== lsMods.segmentMode) {\r\n modifiers |= (lsMods.segmentMode ? StyleMod.SegMode : StyleMod.NoSegMode);\r\n }\r\n\r\n if (lsMods.physicalWidth) {\r\n modifiers |= StyleMod.PhysicalWidth;\r\n }\r\n\r\n if (undefined !== lsMods.normal) {\r\n const normalOffset = EGFBAccessors.DVec3d.createDVec3d(fbbLS, lsMods.normal.x, lsMods.normal.y, lsMods.normal.z);\r\n builderLS.addNormal(fbbLS, normalOffset);\r\n modifiers |= StyleMod.Normal;\r\n }\r\n\r\n if (undefined !== lsMods.rotation) {\r\n builderLS.addYaw(fbbLS, lsMods.rotation.yaw.degrees);\r\n builderLS.addPitch(fbbLS, lsMods.rotation.pitch.degrees);\r\n builderLS.addRoll(fbbLS, lsMods.rotation.roll.degrees);\r\n modifiers |= StyleMod.Rotation;\r\n }\r\n\r\n builderLS.addModifiers(fbbLS, modifiers);\r\n\r\n const mLocLS = builderLS.endLineStyleModifiers(fbbLS);\r\n fbbLS.finish(mLocLS);\r\n const dataLS = fbbLS.asUint8Array();\r\n\r\n if (0 !== modifiers)\r\n entries.push({ opcode: ElementGeometryOpcode.LineStyleModifiers, data: dataLS });\r\n }\r\n\r\n if (undefined !== geomParams.fillDisplay && FillDisplay.Never !== geomParams.fillDisplay) {\r\n const fbbFill = new flatbuffers.Builder();\r\n const builderFill = EGFBAccessors.AreaFill;\r\n\r\n let keyValuesOff;\r\n let keyColorsOff;\r\n let thematicOffset;\r\n\r\n if (undefined !== geomParams.gradient) {\r\n const keyColors: number[] = [];\r\n const keyValues: number[] = [];\r\n\r\n for (const key of geomParams.gradient.keys) {\r\n keyColors.push(key.color.tbgr);\r\n keyValues.push(key.value);\r\n }\r\n\r\n keyValuesOff = builderFill.createValuesVector(fbbFill, keyValues);\r\n keyColorsOff = builderFill.createColorsVector(fbbFill, keyColors);\r\n\r\n if (Gradient.Mode.Thematic === geomParams.gradient.mode && undefined !== geomParams.gradient.thematicSettings) {\r\n const thematic = geomParams.gradient.thematicSettings;\r\n const builderThematic = EGFBAccessors.ThematicSettings;\r\n builderThematic.startThematicSettings(fbbFill);\r\n\r\n builderThematic.addMode(fbbFill, thematic.mode);\r\n builderThematic.addStepCount(fbbFill, thematic.stepCount);\r\n builderThematic.addMarginColor(fbbFill, thematic.marginColor.tbgr);\r\n builderThematic.addColorScheme(fbbFill, thematic.colorScheme);\r\n\r\n const rangeOffset = EGFBAccessors.DRange1d.createDRange1d(fbbFill, ThematicGradientSettings.contentRange, ThematicGradientSettings.contentMax);\r\n builderThematic.addRange(fbbFill, rangeOffset);\r\n\r\n thematicOffset = builderThematic.endThematicSettings(fbbFill);\r\n }\r\n }\r\n\r\n builderFill.startAreaFill(fbbFill);\r\n\r\n const toEGFBFillDisplay = (fill: FillDisplay) => {\r\n switch (fill) {\r\n case FillDisplay.ByView:\r\n return EGFBAccessors.FillDisplay.ByView;\r\n case FillDisplay.Always:\r\n return EGFBAccessors.FillDisplay.Always;\r\n case FillDisplay.Blanking:\r\n return EGFBAccessors.FillDisplay.Blanking;\r\n default:\r\n return EGFBAccessors.FillDisplay.None;\r\n }\r\n };\r\n\r\n builderFill.addFill(fbbFill, toEGFBFillDisplay(geomParams.fillDisplay));\r\n\r\n if (undefined !== geomParams.fillTransparency)\r\n builderFill.addTransparency(fbbFill, geomParams.fillTransparency);\r\n\r\n if (undefined !== geomParams.gradient) {\r\n const toEGFBGradientMode = (mode: Gradient.Mode) => {\r\n switch (mode) {\r\n case Gradient.Mode.Linear:\r\n return EGFBAccessors.GradientMode.Linear;\r\n case Gradient.Mode.Curved:\r\n return EGFBAccessors.GradientMode.Curved;\r\n case Gradient.Mode.Cylindrical:\r\n return EGFBAccessors.GradientMode.Cylindrical;\r\n case Gradient.Mode.Spherical:\r\n return EGFBAccessors.GradientMode.Spherical;\r\n case Gradient.Mode.Hemispherical:\r\n return EGFBAccessors.GradientMode.Hemispherical;\r\n case Gradient.Mode.Thematic:\r\n return EGFBAccessors.GradientMode.Thematic;\r\n default:\r\n return EGFBAccessors.GradientMode.None;\r\n }\r\n };\r\n\r\n builderFill.addMode(fbbFill, toEGFBGradientMode(geomParams.gradient.mode));\r\n\r\n builderFill.addFlags(fbbFill, geomParams.gradient.flags);\r\n builderFill.addShift(fbbFill, geomParams.gradient.shift);\r\n\r\n if (undefined !== geomParams.gradient.tint)\r\n builderFill.addTint(fbbFill, geomParams.gradient.tint);\r\n\r\n if (undefined !== geomParams.gradient.angle)\r\n builderFill.addAngle(fbbFill, geomParams.gradient.angle.radians);\r\n\r\n if (undefined !== keyValuesOff)\r\n builderFill.addValues(fbbFill, keyValuesOff);\r\n\r\n if (undefined !== keyColorsOff)\r\n builderFill.addColors(fbbFill, keyColorsOff);\r\n\r\n if (undefined !== thematicOffset)\r\n builderFill.addThematicSettings(fbbFill, thematicOffset);\r\n } else if (undefined !== geomParams.backgroundFill && BackgroundFill.None !== geomParams.backgroundFill) {\r\n builderFill.addBackgroundFill(fbbFill, BackgroundFill.Outline === geomParams.backgroundFill ? 2 : 1);\r\n } else if (undefined !== geomParams.fillColor) {\r\n builderFill.addColor(fbbFill, geomParams.fillColor.tbgr);\r\n builderFill.addUseColor(fbbFill, 1);\r\n }\r\n\r\n const mLocFill = builderFill.endAreaFill(fbbFill);\r\n fbbFill.finish(mLocFill);\r\n const dataFill = fbbFill.asUint8Array();\r\n\r\n entries.push({ opcode: ElementGeometryOpcode.Fill, data: dataFill });\r\n }\r\n\r\n if (undefined !== geomParams.pattern) {\r\n const fbbPat = new flatbuffers.Builder();\r\n const builderPat = EGFBAccessors.AreaPattern;\r\n\r\n let pattern = geomParams.pattern;\r\n if (undefined !== worldToLocal) {\r\n pattern = pattern.clone();\r\n if (!pattern.applyTransform(worldToLocal))\r\n return false;\r\n }\r\n\r\n let defLineVecOffset;\r\n\r\n if (undefined !== pattern.defLines) {\r\n const defLines = pattern.defLines;\r\n const builderDefLines = EGFBAccessors.DwgHatchDefLine;\r\n const defLineOffsets: number[] = [];\r\n\r\n for (const line of defLines) {\r\n let dashOffset;\r\n\r\n if (undefined !== line.dashes)\r\n dashOffset = builderDefLines.createDashesVector(fbbPat, line.dashes);\r\n\r\n builderDefLines.startDwgHatchDefLine(fbbPat);\r\n\r\n if (undefined !== line.angle)\r\n builderDefLines.addAngle(fbbPat, line.angle.radians);\r\n\r\n // NOTE: Backend requires through and offset to be present...\r\n const throughOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.through ? line.through.x : 0, undefined !== line.through ? line.through.y : 0);\r\n builderDefLines.addThrough(fbbPat, throughOffset);\r\n\r\n const offsetOffset = EGFBAccessors.DPoint2d.createDPoint2d(fbbPat, undefined !== line.offset ? line.offset.x : 0, undefined !== line.offset ? line.offset.y : 0);\r\n builderDefLines.addOffset(fbbPat, offsetOffset);\r\n\r\n if (undefined !== dashOffset)\r\n builderDefLines.addDashes(fbbPat, dashOffset);\r\n\r\n defLineOffsets.push(builderDefLines.endDwgHatchDefLine(fbbPat));\r\n }\r\n\r\n if (0 !== defLineOffsets.length)\r\n defLineVecOffset = builderPat.createDefLineVector(fbbPat, defLineOffsets);\r\n }\r\n\r\n builderPat.startAreaPattern(fbbPat);\r\n\r\n if (undefined !== pattern.origin) {\r\n const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbbPat, pattern.origin.x, pattern.origin.y, pattern.origin.z);\r\n builderPat.addOrigin(fbbPat, originOffset);\r\n }\r\n\r\n if (undefined !== pattern.rotation) {\r\n const matrix = pattern.rotation.toMatrix3d();\r\n const coffs = matrix.coffs;\r\n const rotationOffset = EGFBAccessors.RotMatrix.createRotMatrix(fbbPat, coffs[0], coffs[1], coffs[2], coffs[3], coffs[4], coffs[5], coffs[6], coffs[7], coffs[8]);\r\n builderPat.addRotation(fbbPat, rotationOffset);\r\n }\r\n\r\n if (undefined !== pattern.space1)\r\n builderPat.addSpace1(fbbPat, pattern.space1);\r\n\r\n if (undefined !== pattern.space2)\r\n builderPat.addSpace2(fbbPat, pattern.space2);\r\n\r\n if (undefined !== pattern.angle1)\r\n builderPat.addAngle1(fbbPat, pattern.angle1.radians);\r\n\r\n if (undefined !== pattern.angle2)\r\n builderPat.addAngle2(fbbPat, pattern.angle2.radians);\r\n\r\n if (undefined !== pattern.scale)\r\n builderPat.addScale(fbbPat, pattern.scale);\r\n\r\n if (undefined !== pattern.color) {\r\n builderPat.addColor(fbbPat, pattern.color.tbgr);\r\n builderPat.addUseColor(fbbPat, 1);\r\n }\r\n\r\n if (undefined !== pattern.weight) {\r\n builderPat.addWeight(fbbPat, pattern.weight);\r\n builderPat.addUseWeight(fbbPat, 1);\r\n }\r\n\r\n if (undefined !== pattern.invisibleBoundary && pattern.invisibleBoundary)\r\n builderPat.addInvisibleBoundary(fbbPat, 1);\r\n\r\n if (undefined !== pattern.snappable && pattern.snappable)\r\n builderPat.addSnappable(fbbPat, 1);\r\n\r\n if (undefined !== pattern.symbolId) {\r\n const symbolIdPair = Id64.getUint32Pair(pattern.symbolId);\r\n builderPat.addSymbolId(fbbPat, flatbuffers.Long.create(symbolIdPair.lower, symbolIdPair.upper));\r\n }\r\n\r\n if (undefined !== defLineVecOffset)\r\n builderPat.addDefLine(fbbPat, defLineVecOffset);\r\n\r\n const mLocPat = builderPat.endAreaPattern(fbbPat);\r\n fbbPat.finish(mLocPat);\r\n const dataPat = fbbPat.asUint8Array();\r\n\r\n entries.push({ opcode: ElementGeometryOpcode.Pattern, data: dataPat });\r\n }\r\n\r\n if (undefined !== geomParams.materialId) {\r\n const fbbMat = new flatbuffers.Builder();\r\n const builderMat = EGFBAccessors.Material;\r\n builderMat.startMaterial(fbbMat);\r\n\r\n const matIdPair = Id64.getUint32Pair(geomParams.materialId);\r\n builderMat.addMaterialId(fbbMat, flatbuffers.Long.create(matIdPair.lower, matIdPair.upper));\r\n builderMat.addUseMaterial(fbbMat, 1);\r\n\r\n const mLocMat = builderMat.endMaterial(fbbMat);\r\n fbbMat.finish(mLocMat);\r\n const dataMat = fbbMat.asUint8Array();\r\n\r\n entries.push({ opcode: ElementGeometryOpcode.Material, data: dataMat });\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Return entry as [[GeometryPart]] id and instance transform */\r\n export function toGeometryPart(entry: ElementGeometryDataEntry, partToElement?: Transform): Id64String | undefined {\r\n if (ElementGeometryOpcode.PartReference !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.GeometryPart.getRootAsGeometryPart(buffer);\r\n\r\n const partLong = ppfb.geomPartId();\r\n const partId = Id64.fromUint32Pair(partLong.low, partLong.high);\r\n\r\n if (undefined !== partToElement) {\r\n let origin;\r\n const originfb = ppfb.origin();\r\n if (null !== originfb)\r\n origin = Point3d.create(originfb.x(), originfb.y(), originfb.z());\r\n else\r\n origin = Point3d.createZero();\r\n\r\n const angles = YawPitchRollAngles.createDegrees(ppfb.yaw(), ppfb.pitch(), ppfb.roll());\r\n const matrix = angles.toMatrix3d();\r\n if (1.0 !== ppfb.scale())\r\n matrix.scaleColumnsInPlace(ppfb.scale(), ppfb.scale(), ppfb.scale());\r\n\r\n Transform.createOriginAndMatrix(origin, matrix, partToElement);\r\n }\r\n\r\n return partId;\r\n }\r\n\r\n /** Create entry from a [[GeometryPart]] id and instance transform */\r\n export function fromGeometryPart(partId: Id64String, partTransform?: Transform, worldToLocal?: Transform): ElementGeometryDataEntry | undefined {\r\n let partToElement = partTransform;\r\n if (undefined !== worldToLocal)\r\n partToElement = worldToLocal.multiplyTransformTransform(undefined !== partTransform ? partTransform : Transform.createIdentity());\r\n\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.GeometryPart;\r\n builder.startGeometryPart(fbb);\r\n\r\n const idPair = Id64.getUint32Pair(partId);\r\n builder.addGeomPartId(fbb, flatbuffers.Long.create(idPair.lower, idPair.upper));\r\n\r\n if (undefined !== partToElement && !partToElement.isIdentity) {\r\n const result = partToElement.matrix.factorRigidWithSignedScale();\r\n if (undefined === result)\r\n return undefined;\r\n\r\n const originOffset = EGFBAccessors.DPoint3d.createDPoint3d(fbb, partToElement.origin.x, partToElement.origin.y, partToElement.origin.z);\r\n builder.addOrigin(fbb, originOffset);\r\n\r\n const angles = YawPitchRollAngles.createFromMatrix3d(result.rigidAxes);\r\n if (undefined !== angles) {\r\n builder.addYaw(fbb, angles.yaw.degrees);\r\n builder.addPitch(fbb, angles.pitch.degrees);\r\n builder.addRoll(fbb, angles.roll.degrees);\r\n }\r\n\r\n if (result.scale > 0.0)\r\n builder.addScale(fbb, result.scale);\r\n }\r\n\r\n const mLoc = builder.endGeometryPart(fbb);\r\n fbb.finish(mLoc);\r\n const data = fbb.asUint8Array();\r\n\r\n return { opcode: ElementGeometryOpcode.PartReference, data };\r\n }\r\n\r\n /** Return entry as a [[ElementAlignedBox3d]] representing the local range of a geometric entry */\r\n export function toSubGraphicRange(entry: ElementGeometryDataEntry): ElementAlignedBox3d | undefined {\r\n if (ElementGeometryOpcode.SubGraphicRange !== entry.opcode)\r\n return undefined;\r\n\r\n const buffer = new flatbuffers.ByteBuffer(entry.data);\r\n const ppfb = EGFBAccessors.PointPrimitive.getRootAsPointPrimitive(buffer);\r\n\r\n if (2 !== ppfb.coordsLength())\r\n return undefined;\r\n\r\n const low = Point3d.create(ppfb.coords(0)!.x(), ppfb.coords(0)!.y(), ppfb.coords(0)!.z());\r\n const high = Point3d.create(ppfb.coords(1)!.x(), ppfb.coords(1)!.y(), ppfb.coords(1)!.z());\r\n\r\n return Range3d.create(low, high);\r\n }\r\n\r\n /** Create entry from a [[ElementAlignedBox3d]] to compute and store local ranges for subsequent geometric entries */\r\n export function fromSubGraphicRange(bbox: ElementAlignedBox3d): ElementGeometryDataEntry | undefined {\r\n const fbb = new flatbuffers.Builder();\r\n const builder = EGFBAccessors.PointPrimitive;\r\n\r\n builder.startCoordsVector(fbb, 2);\r\n fbb.addFloat64(bbox.high.z);\r\n fbb.addFloat64(bbox.high.y);\r\n fbb.addFloat64(bbox.high.x);\r\n fbb.addFloat64(bbox.low.z);\r\n fbb.addFloat64(bbox.low.y);\r\n fbb.addFloat64(bbox.low.x);\r\n const offset = fbb.endVector();\r\n\r\n builder.startPointPrimitive(fbb);\r\n builder.addCoords(fbb, offset);\r\n\r\n const mLoc = builder.endPointPrimitive(fbb);\r\n fbb.finish(mLoc);\r\n const data = fbb.asUint8Array();\r\n\r\n return { opcode: ElementGeometryOpcode.SubGraphicRange, data };\r\n }\r\n\r\n /** Create [[Transform]] from row-major storage 4x3 Float64Array */\r\n export function toTransform(sourceToWorld: Float64Array): Transform | undefined {\r\n if (12 !== sourceToWorld.length)\r\n return undefined;\r\n return Transform.createRowValues(\r\n sourceToWorld[0], sourceToWorld[1], sourceToWorld[2], sourceToWorld[3],\r\n sourceToWorld[4], sourceToWorld[5], sourceToWorld[6], sourceToWorld[7],\r\n sourceToWorld[8], sourceToWorld[9], sourceToWorld[10], sourceToWorld[11],\r\n );\r\n }\r\n\r\n /** Create [[ElementAlignedBox3d]] from lowX, lowY, lowZ, highX, highY, highZ Float64Array */\r\n export function toElementAlignedBox3d(bbox: Float64Array): ElementAlignedBox3d | undefined {\r\n if (6 !== bbox.length)\r\n return undefined;\r\n return Range3d.fromFloat64Array(bbox);\r\n }\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"ElementGeometry.js","sourceRoot":"","sources":["../../../src/geometry/ElementGeometry.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAiB,IAAI,EAAc,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAmB,YAAY,EAAiB,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAY,aAAa,EAAE,OAAO,EAAE,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACvW,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAwC,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAiC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAqB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAuB,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAkB,MAAM,iBAAiB,CAAC;AAGrE;;;;GAIG;AACH,MAAM,CAAN,IAAY,qBAyCX;AAzCD,WAAY,qBAAqB;IAC/B,0EAA0E;IAC1E,uFAAmB,CAAA;IACnB,iDAAiD;IACjD,mFAAiB,CAAA;IACjB,4FAA4F;IAC5F,qFAAkB,CAAA;IAClB,wJAAwJ;IACxJ,qFAAkB,CAAA;IAClB,2JAA2J;IAC3J,yFAAoB,CAAA;IACpB,2HAA2H;IAC3H,iFAAgB,CAAA;IAChB,wCAAwC;IACxC,wDAAwD;IACxD,uFAAmB,CAAA;IACnB,iCAAiC;IACjC,wDAAwD;IACxD,yEAAY,CAAA;IACZ,uCAAuC;IACvC,sFAAmB,CAAA;IACnB,uCAAuC;IACvC,wDAAwD;IACxD,sFAAmB,CAAA;IACnB,yCAAyC;IACzC,sFAAmB,CAAA;IACnB,qCAAqC;IACrC,kEAAS,CAAA;IACT,8CAA8C;IAC9C,wEAAY,CAAA;IACZ,yBAAyB;IACzB,0EAAa,CAAA;IACb,qBAAqB;IACrB,wDAAwD;IACxD,8EAAe,CAAA;IACf,iEAAiE;IACjE,8FAAuB,CAAA;IACvB,uFAAuF;IACvF,kEAAS,CAAA;IACT,4DAA4D;IAC5D,oEAAU,CAAA;AACZ,CAAC,EAzCW,qBAAqB,KAArB,qBAAqB,QAyChC;AA6HD;;GAEG;AACH,MAAM,CAAN,IAAY,qBAyBX;AAzBD,WAAY,qBAAqB;IAC/B,iEAAiE;IACjE,mEAAS,CAAA;IACT,0EAA0E;IAC1E,yEAAY,CAAA;IACZ,oEAAoE;IACpE,2EAAa,CAAA;IACb,yFAAyF;IACzF,+DAAO,CAAA;IACP,uGAAuG;IACvG,+DAAO,CAAA;IACP,8FAA8F;IAC9F,qEAAU,CAAA;IACV,qGAAqG;IACrG,uEAAW,CAAA;IACX,8EAA8E;IAC9E,qEAAU,CAAA;IACV,uGAAuG;IACvG,mEAAS,CAAA;IACT,6EAA6E;IAC7E,iEAAQ,CAAA;IACR,4EAA4E;IAC5E,oEAAU,CAAA;IACV,4EAA4E;IAC5E,sEAAW,CAAA;AACb,CAAC,EAzBW,qBAAqB,KAArB,qBAAqB,QAyBhC;AA4ED;;GAEG;AACH,MAAM,KAAW,eAAe,CAu/D/B;AAv/DD,WAAiB,eAAe;IAC9B,qKAAqK;IACrK,MAAa,OAAO;QACV,aAAa,CAAa;QAC1B,aAAa,CAAa;QAClC,6BAA6B;QACb,OAAO,GAA+B,EAAE,CAAC;QAEzD,iGAAiG;QACjG,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAExD,yGAAyG;QACzG,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAExD;;;WAGG;QACI,eAAe,CAAC,YAAwB;YAC7C,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,KAAK,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;YAChH,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrG,CAAC;QAED;;WAEG;QACI,iBAAiB,CAAC,MAAe,EAAE,SAA6B,kBAAkB,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YACpH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QAED;;WAEG;QACI,iBAAiB,CAAC,MAAe,EAAE,QAAe,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC;YAC/E,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAClJ,CAAC;QAED;;WAEG;QACI,4BAA4B,CAAC,KAAqB;YACvD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,+FAA+F;QACxF,MAAM,CAAC,yBAAyB,CAAC,GAAc,EAAE,SAAoB,EAAE,MAA2B;YACvG,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEjD,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEtD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChD,OAAO,MAAM,CAAC;YAEhB,4EAA4E;YAC5E,MAAM,cAAc,GAAG,YAAY,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;YACpE,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,IAAI,SAAS,KAAK,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;oBAChE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC/B,OAAO,MAAM,CAAC;YAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,SAAS,KAAK,IAAI;gBACpB,OAAO,MAAM,CAAC;YAEhB,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,SAAS,KAAK,QAAQ,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;gBAC3E,OAAO,MAAM,CAAC;YAEhB,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,oGAAoG;QAC7F,MAAM,CAAC,wBAAwB,CAAC,GAAc,EAAE,MAAc;YACnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,SAAS,KAAK,MAAM;gBACtB,OAAO,MAAM,CAAC,GAAG,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED;;;WAGG;QACI,oBAAoB;YACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,2CAA2C;YAChG,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACI,0BAA0B,CAAC,UAA0B;YAC1D,OAAO,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5E,CAAC;QAED,yHAAyH;QAClH,mBAAmB,CAAC,QAAuB;YAChD,MAAM,KAAK,GAAG,eAAe,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9E,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sHAAsH;QAC/G,gBAAgB,CAAC,IAAgB;YACtC,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChF,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACI,eAAe,CAAC,KAA6B,EAAE,UAA2B;YAC/E,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,MAAe,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,CAAC;qBAAM,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACvB,MAAM,MAAM,GAAG,UAAU,EAAE,KAAK,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvE,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;wBAClC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACpD,CAAC;oBAED,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7E,CAAC;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,wHAAwH;QACjH,kBAAkB,CAAC,KAAmB;YAC3C,MAAM,KAAK,GAAG,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACnF,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;WAGG;QACI,cAAc,CAAC,IAA0B;YAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACjE,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACI,kBAAkB,CAAC,MAAkB,EAAE,aAAyB;YACrE,MAAM,KAAK,GAAG,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1F,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO,KAAK,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACI,oBAAoB,CAAC,MAAkB,EAAE,cAAwB,EAAE,gBAAqC,EAAE,aAAsB;YACrI,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;YACpJ,IAAI,SAAS,KAAK,aAAa;gBAC7B,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;QAED;;WAEG;QACI,oBAAoB,CAAC,MAAkB,EAAE,cAAwB,EAAE,gBAAwB,EAAE,aAAsB;YACxH,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpM,CAAC;KACF;IAtMY,uBAAO,UAsMnB,CAAA;IAcD,MAAa,aAAa;QACR,UAAU,CAAiB;QAC3B,YAAY,CAAa;QAClC,UAAU,CAAW;QACpB,MAAM,CAA4B;QACzB,kBAAkB,CAAU;QAE7C,YAAmB,UAA0B,EAAE,YAAuB,EAAE,iBAA2B;YACjG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,CAAC;QAED,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC;QAC3C,IAAW,KAAK,CAAC,KAA+B,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QAE1E,IAAW,eAAe;YACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,CAAC;QAED,wEAAwE;QACjE,eAAe;YACpB,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3D,CAAC;QAED,4HAA4H;QACrH,UAAU,CAAC,eAAwB,KAAK;YAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC;QAED,qEAAqE;QAC9D,YAAY;YACjB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7D,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnE,CAAC;QAED,uEAAuE;QAChE,cAAc;YACnB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAC/D,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC1E,CAAC;QAED,gEAAgE;QACzD,cAAc,CAAC,WAAuB,EAAE,WAAuB;YACpE,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW;gBACxD,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,WAAW;gBAChF,OAAO,MAAM,CAAC;YAEhB,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;gBACjC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAEzE,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;IAxDY,6BAAa,gBAwDzB,CAAA;IAED;;OAEG;IACH,MAAa,QAAQ;QACnB,6BAA6B;QACb,UAAU,CAA6B;QACvD,wFAAwF;QACxE,SAAS,CAAc;QACvC,6DAA6D;QAC7C,eAAe,CAAW;QAC1C,0FAA0F;QAC1E,YAAY,CAAW;QACvC,6BAA6B;QACrB,MAAM,GAAG,CAAC,CAAC;QACnB,8DAA8D;QACtD,MAAM,CAAiB;QAC/B,qCAAqC;QACpB,WAAW,CAAiB;QAC5B,aAAa,CAAY;QAC1C,gFAAgF;QACxE,kBAAkB,GAAG,KAAK,CAAC;QAEnC;;UAEE;QACF,YAAmB,IAAyB,EAAE,wBAAsD,EAAE,YAAwB;YAC5H,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEtC,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;gBAC/B,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC;YAE7C,IAAI,SAAS,KAAK,wBAAwB;gBACxC,IAAI,CAAC,WAAW,GAAG,OAAO,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;;gBAE1I,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEtD,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;gBAClC,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEjE,IAAI,SAAS,KAAK,YAAY;gBAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;;gBAElC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;YAElD,MAAM,MAAM,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvE,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM;gBAC7B,MAAM,CAAC,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAE5D,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpG,IAAI,SAAS,KAAK,IAAI;gBACpB,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAE9B,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;QAED,kEAAkE;QAC3D,uBAAuB;YAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAC3D,CAAC;QAED,gEAAgE;QAChE,IAAY,KAAK;YACf,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;gBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEjG,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,2JAA2J;QACpJ,IAAI;YACT,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,IAAI,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7C,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAChF,eAAe,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,qBAAqB,CAAC,eAAe,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;oBAClE,kFAAkF;oBAClF,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACnE,CAAC;qBAAM,IAAI,qBAAqB,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBACzB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC5C,CAAC;qBAAM,IAAI,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBACzB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,CAAC;QAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;KACF;IA5FY,wBAAQ,WA4FpB,CAAA;IAED,kFAAkF;IAClF,SAAgB,oBAAoB,CAAC,KAA+B;QAClE,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;YAC5C,KAAK,qBAAqB,CAAC,YAAY,CAAC;YACxC,KAAK,qBAAqB,CAAC,eAAe,CAAC;YAC3C,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,cAAc;gBACvC,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAfe,oCAAoB,uBAenC,CAAA;IAED,iJAAiJ;IACjJ,SAAgB,gBAAgB,CAAC,KAA+B;QAC9D,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,IAAI,CAAC;YAChC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,KAAK;gBAC9B,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAVe,gCAAgB,mBAU/B,CAAA;IAED,yEAAyE;IACzE,SAAgB,kBAAkB,CAAC,KAA+B;QAChE,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,aAAa;gBACtC,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IARe,kCAAkB,qBAQjC,CAAA;IAED,0EAA0E;IAC1E,SAAgB,iBAAiB,CAAC,KAA+B;QAC/D,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,IAAI,CAAC;YAChC,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,kBAAkB;gBAC3C,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAZe,iCAAiB,oBAYhC,CAAA;IAED,+EAA+E;IAC/E,SAAgB,OAAO,CAAC,KAA+B;QACrD,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAC1E,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,KAAK,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAC9E,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,KAAK,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACtE,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,qDAAqD;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAE,IAAwB,CAAC,eAAe,CAAC,CAAC;YACrG,CAAC;YAED;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAnCe,uBAAO,UAmCtB,CAAA;IAED,uGAAuG;IACvG,SAAgB,SAAS,CAAC,KAA+B;QACvD,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAC1E,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAC9E,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACtE,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,qCAAqC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YAED,KAAK,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,gBAAgB,IAAK,IAAwB,CAAC,eAAe,CAAC,CAAC;YACpG,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAE,IAAuB,CAAC,cAAc,CAAC,CAAC;YACzF,CAAC;YAED,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;oBACtC,OAAO,KAAK,CAAC;gBACf,MAAM,QAAQ,GAAI,IAAiB,CAAC;gBACpC,QAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;oBACjC,KAAK,CAAC;wBACJ,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;oBAChE,KAAK,CAAC;wBACJ,OAAO,IAAI,CAAC;oBACd,KAAK,CAAC,CAAC;oBACP;wBACE,OAAO,KAAK,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,6DAA6D;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC9D,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAvEe,yBAAS,YAuExB,CAAA;IAED,kGAAkG;IAClG,SAAgB,OAAO,CAAC,KAA+B;QACrD,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,IAAK,IAAuB,CAAC,cAAc,CAAC,CAAC;YACxF,CAAC;YAED,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;oBACtC,OAAO,KAAK,CAAC;gBACf,MAAM,QAAQ,GAAI,IAAiB,CAAC;gBACpC,QAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;oBACjC,KAAK,CAAC;wBACJ,OAAO,aAAa,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;oBAC/D,KAAK,CAAC;wBACJ,OAAO,IAAI,CAAC;oBACd,KAAK,CAAC,CAAC;oBACP;wBACE,OAAO,KAAK,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC9D,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IApCe,uBAAO,UAoCtB,CAAA;IAED,8EAA8E;IAC9E,SAAgB,iBAAiB,CAAC,KAA+B;QAC/D,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAC1E,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;oBACrD,OAAO,SAAS,CAAC;gBACnB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChH,CAAC;YAED,KAAK,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAC9E,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;oBACrD,OAAO,SAAS,CAAC;gBACnB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChH,CAAC;YAED,KAAK,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBACtE,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChH,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,qDAAqD;gBACrD,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,CAAC;YAED,KAAK,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,SAAS,CAAC;gBACnB,IAAI,iBAAiB,KAAK,IAAI,CAAC,gBAAgB;oBAC7C,OAAO,SAAS,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAuB,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,SAAS,CAAC;gBACnB,IAAI,OAAO,KAAK,IAAI,CAAC,gBAAgB;oBACnC,OAAO,SAAS,CAAC;gBACnB,MAAM,KAAK,GAAG,IAAsB,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChF,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,sBAAsB;gBACtB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,CAAC;YAED,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,SAAS,CAAC;gBACnB,IAAI,UAAU,KAAK,IAAI,CAAC,gBAAgB;oBACtC,OAAO,SAAS,CAAC;gBACnB,MAAM,QAAQ,GAAI,IAAiB,CAAC;gBACpC,QAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;oBACjC,KAAK,CAAC;wBACJ,OAAO,aAAa,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/G,KAAK,CAAC;wBACJ,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/B,KAAK,CAAC;wBACJ,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/B;wBACE,OAAO,SAAS,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC9D,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACxB,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI;wBAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yCAAyC;oBACxE,KAAK,aAAa,CAAC,QAAQ,CAAC,KAAK;wBAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/B,KAAK,aAAa,CAAC,QAAQ,CAAC,KAAK;wBAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/B;wBACE,OAAO,SAAS,CAAC;gBACrB,CAAC;YACH,CAAC;YAED;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IA3Fe,iCAAiB,oBA2FhC,CAAA;IAED,0CAA0C;IAC1C,SAAgB,eAAe,CAAC,KAA+B,EAAE,YAAwB;QACvF,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC9B,OAAO,SAAS,CAAC;QAEnB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAE1E,MAAM,GAAG,GAAc,EAAE,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;oBAC1C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE1F,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM;oBAClB,OAAO,SAAS,CAAC;gBAEnB,IAAI,SAAS,KAAK,YAAY;oBAC5B,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAEhD,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACxB,KAAK,aAAa,CAAC,YAAY,CAAC,IAAI;wBAClC,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACxC,KAAK,aAAa,CAAC,YAAY,CAAC,MAAM;wBACpC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACjC;wBACE,OAAO,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,KAAK,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAE9E,MAAM,GAAG,GAAc,EAAE,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;oBAC1C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAErE,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM;oBAClB,OAAO,SAAS,CAAC;gBAEnB,IAAI,SAAS,KAAK,YAAY;oBAC5B,YAAY,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;gBAEhD,QAAQ,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACxB,KAAK,aAAa,CAAC,YAAY,CAAC,IAAI;wBAClC,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBACxC,KAAK,aAAa,CAAC,YAAY,CAAC,MAAM;wBACpC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACjC;wBACE,OAAO,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,KAAK,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAEtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1F,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnG,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAEpH,IAAI,SAAS,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,YAAY,CAAC;oBACtE,OAAO,SAAS,CAAC;gBAEnB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1F,CAAC;YAED,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,eAAe,CAAC;YAC3C,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,cAAc,CAAC;YAC1C,KAAK,qBAAqB,CAAC,QAAQ;gBACjC,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC3C,OAAO,SAAS,CAAC,CAAC,kDAAkD;gBACtE,IAAI,SAAS,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;oBACvE,OAAO,SAAS,CAAC;gBACnB,OAAO,IAAI,CAAC;YAEd;gBACE,OAAO,SAAS,CAAC,CAAC,wDAAwD;QAC9E,CAAC;IACH,CAAC;IAnFe,+BAAe,kBAmF9B,CAAA;IAED,4CAA4C;IAC5C,SAAgB,iBAAiB,CAAC,IAAmB,EAAE,YAAwB;QAC7E,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9B,KAAK,OAAO;gBACV,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBAC9C,MAAM;YACR,KAAK,iBAAiB;gBACpB,MAAM,GAAG,qBAAqB,CAAC,eAAe,CAAC;gBAC/C,MAAM;YACR,KAAK,gBAAgB,CAAC;YACtB,KAAK,iBAAiB;gBACpB,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBAC9C,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC;gBACxC,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC;gBAC9C,MAAM;YACR;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,SAAS;gBACzB,OAAO,SAAS,CAAC;YACnB,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,yBAAyB,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,SAAS,CAAC;QAEnB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAnCe,iCAAiB,oBAmChC,CAAA;IAED,uCAAuC;IACvC,SAAgB,YAAY,CAAC,KAA+B,EAAE,YAAwB;QACpF,IAAI,qBAAqB,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM;YACnD,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,KAAK;YAChB,OAAO,SAAS,CAAC;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAEnH,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChG,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzR,CAAC;QAED,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,KAAK,CAAC;QAEf,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAC5C,OAAO,SAAS,CAAC;QAEnB,OAAO,UAAU,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAjCe,4BAAY,eAiC3B,CAAA;IAED,qJAAqJ;IACrJ,SAAgB,qBAAqB,CAAC,KAA+B;QACnE,IAAI,qBAAqB,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM;YACnD,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,oBAAoB,GAAG,CAAC,MAAkD,EAAW,EAAE;YAC3F,IAAI,CAAC,MAAM;gBACT,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,MAAM,wBAAwB,GAAG,CAAC,CAAuC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/I,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7H,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAC9E,OAAO,SAAS,CAAC;QACnB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAC3C,CAAC;IAnBe,qCAAqB,wBAmBpC,CAAA;IAED,yCAAyC;IACzC,SAAgB,cAAc,CAAC,IAAqB,EAAE,YAAwB,EAAE,MAA4B;QAC1G,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC;gBAC3C,OAAO,SAAS,CAAC;YACnB,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC;QAEzC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzT,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;gBAChC,OAAO,SAAS,CAAC;YACnB,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1E,OAAO,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,aAAa,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,kBAAkB,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YAC3C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAEnC,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,MAAM,eAAe,GAAG,aAAa,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACjN,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,eAAe,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9K,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YACnD,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IArDe,8BAAc,iBAqD7B,CAAA;IAED,yCAAyC;IACzC,SAAgB,cAAc,CAAC,KAA+B,EAAE,YAAwB;QACtF,IAAI,qBAAqB,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM;YAC9C,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAChI,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,OAAO;YAClB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,KAAK,OAAO;YAClB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,KAAK,OAAO;YAClB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,KAAK,OAAO;YAClB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5E,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,YAAY,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC7D,CAAC;IAlCe,8BAAc,iBAkC7B,CAAA;IAED,2CAA2C;IAC3C,SAAgB,gBAAgB,CAAC,KAAwB,EAAE,YAAwB;QACjF,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/E,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAExB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;IA7Be,gCAAgB,mBA6B/B,CAAA;IAED,8FAA8F;IAC9F,SAAgB,MAAM,CAAC,KAA+B,EAAE,eAAwB,KAAK,EAAE,YAAwB;QAC7G,IAAI,qBAAqB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;YAC7C,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,CAAC,MAA8B,EAAE,EAAE;YACpD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,aAAa,CAAC,QAAQ,CAAC,IAAI;oBAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,KAAK,aAAa,CAAC,QAAQ,CAAC,KAAK;oBAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B;oBACE,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzC,IAAI,SAAS,CAAC;QACd,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,IAAI,KAAK,eAAe;YAC1B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzT,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,SAAS,KAAK,SAAS;gBACzB,YAAY,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;gBAE9D,SAAS,GAAG,YAAY,CAAC;QAC7B,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,aAAa,CAAC;QAClB,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAoC,EAAE,CAAC;YAC/D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,aAAa,GAAkC,EAAE,CAAC;gBACxD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE;wBAC7B,aAAa,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;oBAC3C,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE;wBAChC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC5G,aAAa,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;gBACzD,CAAC;gBACD,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACzC,CAAC;YACD,aAAa,GAAG,kBAAkB,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,YAAY,IAAI,IAAI,KAAK,UAAU;YACrC,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAExD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC;IACvE,CAAC;IAzDe,sBAAM,SAyDrB,CAAA;IAED,gHAAgH;IAChH,SAAgB,QAAQ,CAAC,IAA0B,EAAE,YAAwB;QAC3E,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,YAAY,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;YACxE,IAAI,GAAG;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE;gBAClE,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;QACvC,IAAI,UAAU,CAAC;QACf,IAAI,cAAc,CAAC;QAEnB,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBACzB,OAAO,SAAS,CAAC;YAEnB,UAAU,GAAG,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7D,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;gBACpF,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3L,CAAC;YACD,cAAc,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAE3B,MAAM,cAAc,GAAG,CAAC,IAAqB,EAAE,EAAE;YAC/C,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI;oBACvB,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACrC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK;oBACxB,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACtC;oBACE,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI;YACzB,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpX,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IArEe,wBAAQ,WAqEvB,CAAA;IAED,sEAAsE;IACtE,SAAgB,aAAa,CAAC,KAA+B,EAAE,cAAyB;QACtF,IAAI,qBAAqB,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;YAC7C,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE9D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEvG,IAAI,cAAc,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,oBAAoB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,IAAI,KAAK,UAAU;oBACrB,SAAS;gBACX,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtL,CAAC;YACD,cAAc,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE1C,IAAI,SAAS,CAAC;QACd,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,IAAI,KAAK,eAAe;YAC1B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzT,IAAI,SAAS,KAAK,SAAS;YACzB,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;YAEhE,SAAS,GAAG,cAAc,CAAC;QAE7B,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpX,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAEjD,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IArDe,6BAAa,gBAqD5B,CAAA;IAED,gBAAgB;IAChB,IAAK,QAcJ;IAdD,WAAK,QAAQ;QACX,yCAAY,CAAA;QACZ,iDAAgB,CAAA;QAChB,+CAAe,CAAA;QACf,mDAAiB,CAAA;QACjB,gDAAe,CAAA;QACf,kDAAgB,CAAA;QAChB,oDAAiB,CAAA;QACjB,uDAAkB,CAAA;QAClB,6CAAe,CAAA;QACf,iDAAiB,CAAA;QACjB,4DAAuB,CAAA;QACvB,sDAAoB,CAAA;QACpB,0DAAsB,CAAA;IACxB,CAAC,EAdI,QAAQ,KAAR,QAAQ,QAcZ;IAED,uFAAuF;IACvF,SAAgB,oBAAoB,CAAC,KAA+B,EAAE,UAA0B,EAAE,YAAwB;QACxH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC3B,OAAO,KAAK,CAAC;QAEf,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;oBAC1B,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,4DAA4D;gBAEnG,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,sCAAsC;oBAC7E,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACpB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAClD,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAClF,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;wBACjC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC7B,IAAI,SAAS,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;wBACpE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;wBAC3B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACpB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;oBACnE,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,OAAO,KAAK,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;wBACnF,UAAU,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACnD,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,YAAY,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjG,UAAU,CAAC,eAAe,GAAG,YAAY,CAAC;oBAC1C,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC/C,IAAI,eAAe,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5F,UAAU,CAAC,WAAW,GAAG,eAAe,CAAC;oBACzC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvC,IAAI,aAAa,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClH,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;oBACzC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,KAAK,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;gBAClF,MAAM,KAAK,GAA4B,EAAE,CAAC;gBAE1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;oBAC3C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC9C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;oBAC/C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAErC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;oBAChD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC9C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAEnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;oBAC/C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAErC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;oBAChD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC;oBACjD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;gBAE3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAC7C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;qBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;oBACpD,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC;oBACnD,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;gBAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC7B,IAAI,IAAI,KAAK,MAAM;wBACjB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvE,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC9C,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAE3F,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,SAAS,KAAK,YAAY;oBAC5B,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAExC,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;oBACvC,UAAU,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAClE,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;qBAAM,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1G,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAE9D,MAAM,aAAa,GAAG,CAAC,IAA+B,EAAE,EAAE;oBACxD,QAAQ,IAAI,EAAE,CAAC;wBACb,KAAK,aAAa,CAAC,WAAW,CAAC,MAAM;4BACnC,OAAO,WAAW,CAAC,MAAM,CAAC;wBAC5B,KAAK,aAAa,CAAC,WAAW,CAAC,MAAM;4BACnC,OAAO,WAAW,CAAC,MAAM,CAAC;wBAC5B,KAAK,aAAa,CAAC,WAAW,CAAC,QAAQ;4BACrC,OAAO,WAAW,CAAC,QAAQ,CAAC;wBAC9B;4BACE,OAAO,WAAW,CAAC,KAAK,CAAC;oBAC7B,CAAC;gBACH,CAAC,CAAC;gBAEF,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,IAAI,WAAW,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxG,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;oBACrC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW;oBACnC,OAAO,OAAO,CAAC;gBAEjB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,YAAY,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnG,UAAU,CAAC,gBAAgB,GAAG,YAAY,CAAC;oBAC3C,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpD,MAAM,cAAc,GAAG,CAAC,IAAgC,EAAE,EAAE;wBAC1D,QAAQ,IAAI,EAAE,CAAC;4BACb,KAAK,aAAa,CAAC,YAAY,CAAC,MAAM;gCACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;4BAC9B,KAAK,aAAa,CAAC,YAAY,CAAC,MAAM;gCACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;4BAC9B,KAAK,aAAa,CAAC,YAAY,CAAC,WAAW;gCACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;4BACnC,KAAK,aAAa,CAAC,YAAY,CAAC,SAAS;gCACvC,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;4BACjC,KAAK,aAAa,CAAC,YAAY,CAAC,aAAa;gCAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;4BACrC,KAAK,aAAa,CAAC,YAAY,CAAC,QAAQ;gCACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAChC;gCACE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC9B,CAAC;oBACH,CAAC,CAAC;oBAEF,MAAM,IAAI,GAA6B,EAAE,CAAC;oBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;wBAC1E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI;4BAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAED,MAAM,KAAK,GAAuB,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;oBAE9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAE3B,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAChD,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC7D,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC7C,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAEhD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAEzC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACtB,MAAM,MAAM,GAAkC,EAAE,CAAC;4BAEjD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;4BAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;4BACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;4BAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;4BAE3C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BAC9C,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BAC7D,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BACnE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BAEnE,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;wBAClC,CAAC;oBACH,CAAC;oBAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC/C,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC/E,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;wBAC/B,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBACvC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBACrG,IAAI,cAAc,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;wBACjD,UAAU,CAAC,cAAc,GAAG,cAAc,CAAC;wBAC3C,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;oBAClD,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAClF,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;wBACjC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,KAAK,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,KAAK,GAA4B,EAAE,CAAC;gBAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,CAAC,YAAY;wBACrB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBACzB,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAC3E,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,EAC9C,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,EAC9C,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAChD,CAAC;oBACF,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;wBAC9C,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;gBAC5B,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAE3B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACnD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACnD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAChE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAChE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEhD,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAE7B,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAE/B,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9E,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChF,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEjE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpB,MAAM,QAAQ,GAAoC,EAAE,CAAC;oBAErD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;wBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACpC,IAAI,CAAC,OAAO;4BACV,SAAS;wBAEX,MAAM,IAAI,GAAkC,EAAE,CAAC;wBAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;wBAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;wBAEtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;wBAClC,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;4BACrD,IAAI,CAAC,GAAG,CAAC,YAAY;gCACnB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;wBACvB,CAAC;wBAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;wBAChC,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;4BACnD,IAAI,CAAC,GAAG,CAAC,YAAY;gCACnB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;wBACtB,CAAC;wBAED,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;wBACxC,IAAI,CAAC,KAAK,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;4BACvD,MAAM,MAAM,GAAa,EAAE,CAAC;4BAC5B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gCAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACrB,CAAC;4BACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACvB,CAAC;wBAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;oBAED,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC5B,CAAC;gBAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACnD,IAAI,SAAS,KAAK,YAAY;oBAC5B,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAEvC,IAAI,SAAS,KAAK,UAAU,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5E,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;oBAC7B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACtD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAE9D,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClE,IAAI,SAAS,KAAK,UAAU,CAAC,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC;wBAChF,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;wBACnC,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC;YAED;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;IA5We,oCAAoB,uBA4WnC,CAAA;IAED,uDAAuD;IACvD,SAAgB,oBAAoB,CAAC,UAA0B,EAAE,OAAmC,EAAE,YAAwB;QAC5H,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC;QAC7C,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAClE,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAElG,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrE,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9F,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,eAAe,IAAI,CAAC,KAAK,UAAU,CAAC,eAAe,EAAE,CAAC;YACjF,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,WAAW,IAAI,CAAC,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YACzE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,CAAC,aAAa,EAAE,CAAC;YACjG,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAEnC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC;YACnD,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC3C,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC;oBACtC,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,SAAS,GAAG,CAAC,CAAC;YAElB,IAAI,SAAS,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC/B,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxC,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC;YAC9B,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChD,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;YAClC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC9C,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClD,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;YACnC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC9C,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;gBAChD,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;YAClC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;gBAClD,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;YACnC,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC;YACpC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrC,SAAS,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzB,SAAS,IAAI,QAAQ,CAAC,aAAa,CAAC;YACtC,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBACzC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC;YAC/B,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzD,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvD,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACjC,CAAC;YAED,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACtD,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAEpC,IAAI,CAAC,KAAK,SAAS;gBACjB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;YACzF,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC;YAE3C,IAAI,YAAY,CAAC;YACjB,IAAI,YAAY,CAAC;YACjB,IAAI,cAAc,CAAC;YAEnB,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAa,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;gBAE/B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC3C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;gBAED,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAClE,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAElE,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;oBAC9G,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACtD,MAAM,eAAe,GAAG,aAAa,CAAC,gBAAgB,CAAC;oBACvD,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;oBAE/C,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAChD,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;oBAC1D,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBACnE,eAAe,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;oBAE9D,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,wBAAwB,CAAC,YAAY,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;oBAC/I,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;oBAE/C,cAAc,GAAG,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEnC,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAE,EAAE;gBAC9C,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,WAAW,CAAC,MAAM;wBACrB,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;oBAC1C,KAAK,WAAW,CAAC,MAAM;wBACrB,OAAO,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;oBAC1C,KAAK,WAAW,CAAC,QAAQ;wBACvB,OAAO,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;oBAC5C;wBACE,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC1C,CAAC;YACH,CAAC,CAAC;YAEF,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YAExE,IAAI,SAAS,KAAK,UAAU,CAAC,gBAAgB;gBAC3C,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAEpE,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAE,EAAE;oBACjD,QAAQ,IAAI,EAAE,CAAC;wBACb,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM;4BACvB,OAAO,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;wBAC3C,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM;4BACvB,OAAO,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;wBAC3C,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW;4BAC5B,OAAO,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC;wBAChD,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS;4BAC1B,OAAO,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC;wBAC9C,KAAK,QAAQ,CAAC,IAAI,CAAC,aAAa;4BAC9B,OAAO,aAAa,CAAC,YAAY,CAAC,aAAa,CAAC;wBAClD,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ;4BACzB,OAAO,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC;wBAC7C;4BACE,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC3C,CAAC;gBACH,CAAC,CAAC;gBAEF,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE3E,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzD,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAEzD,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI;oBACxC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEzD,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK;oBACzC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAEnE,IAAI,SAAS,KAAK,YAAY;oBAC5B,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAE/C,IAAI,SAAS,KAAK,YAAY;oBAC5B,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;gBAE/C,IAAI,SAAS,KAAK,cAAc;oBAC9B,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,SAAS,KAAK,UAAU,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;gBACxG,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,KAAK,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvG,CAAC;iBAAM,IAAI,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;gBAC9C,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACzD,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAExC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC;YAE7C,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;YACjC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC;oBACvC,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,gBAAgB,CAAC;YAErB,IAAI,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAClC,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;gBACtD,MAAM,cAAc,GAAa,EAAE,CAAC;gBAEpC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,UAAU,CAAC;oBAEf,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM;wBAC3B,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvE,eAAe,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBAE7C,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK;wBAC1B,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAEvD,6DAA6D;oBAC7D,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtK,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBAElD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjK,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;oBAEhD,IAAI,SAAS,KAAK,UAAU;wBAC1B,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAEhD,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClE,CAAC;gBAED,IAAI,CAAC,KAAK,cAAc,CAAC,MAAM;oBAC7B,gBAAgB,GAAG,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC9E,CAAC;YAED,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEpC,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzH,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjK,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM;gBAC9B,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM;gBAC9B,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAE/C,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM;gBAC9B,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM;gBAC9B,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEvD,IAAI,SAAS,KAAK,OAAO,CAAC,KAAK;gBAC7B,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAE7C,IAAI,SAAS,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7C,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,SAAS,KAAK,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB;gBACtE,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE7C,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;gBACtD,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAErC,IAAI,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1D,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClG,CAAC;YAED,IAAI,SAAS,KAAK,gBAAgB;gBAChC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAEtC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,SAAS,KAAK,UAAU,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC;YAC1C,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5D,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5F,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAErC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAEtC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAvWe,oCAAoB,uBAuWnC,CAAA;IAED,iEAAiE;IACjE,SAAgB,cAAc,CAAC,KAA+B,EAAE,aAAyB;QACvF,IAAI,qBAAqB,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM;YACtD,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,IAAI,KAAK,QAAQ;gBACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAElE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAEhC,MAAM,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,EAAE;gBACtB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEvE,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IA3Be,8BAAc,iBA2B7B,CAAA;IAED,qEAAqE;IACrE,SAAgB,gBAAgB,CAAC,MAAkB,EAAE,aAAyB,EAAE,YAAwB;QACtG,IAAI,aAAa,GAAG,aAAa,CAAC;QAClC,IAAI,SAAS,KAAK,YAAY;YAC5B,aAAa,GAAG,YAAY,CAAC,0BAA0B,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QAEpI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC;QAC3C,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,IAAI,SAAS,KAAK,aAAa,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;YACjE,IAAI,SAAS,KAAK,MAAM;gBACtB,OAAO,SAAS,CAAC;YAEnB,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxI,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAErC,MAAM,MAAM,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvE,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG;gBACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IApCe,gCAAgB,mBAoC/B,CAAA;IAED,kGAAkG;IAClG,SAAgB,iBAAiB,CAAC,KAA+B;QAC/D,IAAI,qBAAqB,CAAC,eAAe,KAAK,KAAK,CAAC,MAAM;YACxD,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAE1E,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;YAC3B,OAAO,SAAS,CAAC;QAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAE3F,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAde,iCAAiB,oBAchC,CAAA;IAED,qHAAqH;IACrH,SAAgB,mBAAmB,CAAC,IAAyB;QAC3D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC;QAE7C,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAE/B,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IArBe,mCAAmB,sBAqBlC,CAAA;IAED,mEAAmE;IACnE,SAAgB,WAAW,CAAC,aAA2B;QACrD,IAAI,EAAE,KAAK,aAAa,CAAC,MAAM;YAC7B,OAAO,SAAS,CAAC;QACnB,OAAO,SAAS,CAAC,eAAe,CAC9B,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACtE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EACtE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CACzE,CAAC;IACJ,CAAC;IARe,2BAAW,cAQ1B,CAAA;IAED,6FAA6F;IAC7F,SAAgB,qBAAqB,CAAC,IAAkB;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;YACnB,OAAO,SAAS,CAAC;QACnB,OAAO,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAJe,qCAAqB,wBAIpC,CAAA;AACH,CAAC,EAv/DgB,eAAe,KAAf,eAAe,QAu/D/B"}
|