@itwin/core-geometry 5.1.2 → 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 +6 -1
- package/lib/cjs/Constant.js.map +1 -1
- package/lib/cjs/Geometry.js.map +1 -1
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -1
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -1
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -1
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/cjs/bspline/KnotVector.js.map +1 -1
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -1
- package/lib/cjs/clipping/ClipPlane.js.map +1 -1
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -1
- package/lib/cjs/clipping/ClipUtils.js.map +1 -1
- package/lib/cjs/clipping/ClipVector.js.map +1 -1
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/cjs/core-geometry.js.map +1 -1
- package/lib/cjs/curve/Arc3d.js.map +1 -1
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -1
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/cjs/curve/CurveCollection.js.map +1 -1
- package/lib/cjs/curve/CurveCurve.js.map +1 -1
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -1
- package/lib/cjs/curve/CurveFactory.js.map +1 -1
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -1
- package/lib/cjs/curve/CurveOps.js.map +1 -1
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -1
- package/lib/cjs/curve/CurveProcessor.js.map +1 -1
- package/lib/cjs/curve/CurveTypes.js.map +1 -1
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/cjs/curve/GeometryQuery.js.map +1 -1
- package/lib/cjs/curve/LineSegment3d.js.map +1 -1
- package/lib/cjs/curve/LineString3d.js.map +1 -1
- package/lib/cjs/curve/Loop.js.map +1 -1
- package/lib/cjs/curve/OffsetOptions.js.map +1 -1
- package/lib/cjs/curve/ParityRegion.js.map +1 -1
- package/lib/cjs/curve/Path.js.map +1 -1
- package/lib/cjs/curve/PointString3d.js.map +1 -1
- package/lib/cjs/curve/ProxyCurve.js.map +1 -1
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -1
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -1
- package/lib/cjs/curve/RegionOps.js.map +1 -1
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/cjs/curve/StrokeOptions.js.map +1 -1
- package/lib/cjs/curve/UnionRegion.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/cjs/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/cjs/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/cjs/geometry3d/Angle.js.map +1 -1
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -1
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -1
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3d.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -1
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -1
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -1
- package/lib/cjs/geometry3d/Range.js.map +1 -1
- package/lib/cjs/geometry3d/Ray2d.js.map +1 -1
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -1
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -1
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/cjs/geometry3d/Transform.js.map +1 -1
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -1
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/cjs/geometry4d/Map4d.js.map +1 -1
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -1
- package/lib/cjs/geometry4d/MomentData.js.map +1 -1
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/cjs/geometry4d/Point4d.js.map +1 -1
- package/lib/cjs/numerics/BandedSystem.js.map +1 -1
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -1
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -1
- package/lib/cjs/numerics/Complex.js.map +1 -1
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/cjs/numerics/Newton.js.map +1 -1
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -1
- package/lib/cjs/numerics/PolarData.js.map +1 -1
- package/lib/cjs/numerics/Polynomials.js.map +1 -1
- package/lib/cjs/numerics/Quadrature.js.map +1 -1
- package/lib/cjs/numerics/Range1dArray.js.map +1 -1
- package/lib/cjs/numerics/SmallSystem.js.map +1 -1
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/cjs/numerics/UnionFind.js.map +1 -1
- package/lib/cjs/numerics/UsageSums.js.map +1 -1
- package/lib/cjs/polyface/AuxData.js.map +1 -1
- package/lib/cjs/polyface/BoxTopology.js.map +1 -1
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -1
- package/lib/cjs/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -1
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/cjs/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/cjs/polyface/Polyface.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -1
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/cjs/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -1
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -1
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/cjs/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -1
- package/lib/cjs/serialization/BGFBReader.js.map +1 -1
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -1
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/cjs/serialization/DeepCompare.js.map +1 -1
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -1
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/cjs/serialization/SerializationHelpers.js.map +1 -1
- package/lib/cjs/solid/Box.js.map +1 -1
- package/lib/cjs/solid/Cone.js.map +1 -1
- package/lib/cjs/solid/LinearSweep.js.map +1 -1
- package/lib/cjs/solid/RotationalSweep.js.map +1 -1
- package/lib/cjs/solid/RuledSweep.js.map +1 -1
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -1
- package/lib/cjs/solid/Sphere.js.map +1 -1
- package/lib/cjs/solid/SweepContour.js.map +1 -1
- package/lib/cjs/solid/TorusPipe.js.map +1 -1
- package/lib/cjs/topology/ChainMerge.js.map +1 -1
- package/lib/cjs/topology/Graph.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/cjs/topology/MaskManager.js.map +1 -1
- package/lib/cjs/topology/Merging.js.map +1 -1
- package/lib/cjs/topology/RegularizeFace.js.map +1 -1
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -1
- package/lib/cjs/topology/SpaceTriangulation.js.map +1 -1
- package/lib/cjs/topology/Triangulation.js.map +1 -1
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -1
- package/lib/esm/Constant.js.map +1 -1
- package/lib/esm/Geometry.js.map +1 -1
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -1
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve.js.map +1 -1
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -1
- package/lib/esm/bspline/BSplineSurface.js.map +1 -1
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -1
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -1
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -1
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -1
- package/lib/esm/bspline/KnotVector.js.map +1 -1
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -1
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -1
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -1
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -1
- package/lib/esm/clipping/ClipPlane.js.map +1 -1
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -1
- package/lib/esm/clipping/ClipUtils.js.map +1 -1
- package/lib/esm/clipping/ClipVector.js.map +1 -1
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -1
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -1
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -1
- package/lib/esm/core-geometry.js.map +1 -1
- package/lib/esm/curve/Arc3d.js.map +1 -1
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -1
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -1
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -1
- package/lib/esm/curve/CurveCollection.js.map +1 -1
- package/lib/esm/curve/CurveCurve.js.map +1 -1
- package/lib/esm/curve/CurveExtendMode.js.map +1 -1
- package/lib/esm/curve/CurveFactory.js.map +1 -1
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -1
- package/lib/esm/curve/CurveOps.js.map +1 -1
- package/lib/esm/curve/CurvePrimitive.js.map +1 -1
- package/lib/esm/curve/CurveProcessor.js.map +1 -1
- package/lib/esm/curve/CurveTypes.js.map +1 -1
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -1
- package/lib/esm/curve/GeometryQuery.js.map +1 -1
- package/lib/esm/curve/LineSegment3d.js.map +1 -1
- package/lib/esm/curve/LineString3d.js.map +1 -1
- package/lib/esm/curve/Loop.js.map +1 -1
- package/lib/esm/curve/OffsetOptions.js.map +1 -1
- package/lib/esm/curve/ParityRegion.js.map +1 -1
- package/lib/esm/curve/Path.js.map +1 -1
- package/lib/esm/curve/PointString3d.js.map +1 -1
- package/lib/esm/curve/ProxyCurve.js.map +1 -1
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -1
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -1
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -1
- package/lib/esm/curve/Query/InOutTests.js.map +1 -1
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -1
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -1
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -1
- package/lib/esm/curve/RegionOps.js.map +1 -1
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -1
- package/lib/esm/curve/StrokeOptions.js.map +1 -1
- package/lib/esm/curve/UnionRegion.js.map +1 -1
- package/lib/esm/curve/internalContexts/AnnounceTangentStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/AppendPlaneIntersectionStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/ChainCollectorContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -1
- package/lib/esm/curve/internalContexts/ClosestPointStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveCloseApproachXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXY.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveCurveIntersectXYZ.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveLengthContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/CurveOffsetXYHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/EllipticalArcApproximationContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -1
- package/lib/esm/curve/internalContexts/NewtonRtoRStrokeHandler.js.map +1 -1
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransferWithSplitArcs.js.map +1 -1
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -1
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -1
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -1
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -1
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -1
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -1
- package/lib/esm/geometry3d/Angle.js.map +1 -1
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -1
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -1
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -1
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -1
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -1
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -1
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -1
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -1
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -1
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -1
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -1
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -1
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -1
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -1
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -1
- package/lib/esm/geometry3d/Plane3d.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -1
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -1
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -1
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -1
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -1
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -1
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -1
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -1
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -1
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -1
- package/lib/esm/geometry3d/Range.js.map +1 -1
- package/lib/esm/geometry3d/Ray2d.js.map +1 -1
- package/lib/esm/geometry3d/Ray3d.js.map +1 -1
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -1
- package/lib/esm/geometry3d/Segment1d.js.map +1 -1
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -1
- package/lib/esm/geometry3d/Transform.js.map +1 -1
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -1
- package/lib/esm/geometry3d/XYZProps.js.map +1 -1
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -1
- package/lib/esm/geometry4d/Map4d.js.map +1 -1
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -1
- package/lib/esm/geometry4d/MomentData.js.map +1 -1
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -1
- package/lib/esm/geometry4d/Point4d.js.map +1 -1
- package/lib/esm/numerics/BandedSystem.js.map +1 -1
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -1
- package/lib/esm/numerics/ClusterableArray.js.map +1 -1
- package/lib/esm/numerics/Complex.js.map +1 -1
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -1
- package/lib/esm/numerics/Newton.js.map +1 -1
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -1
- package/lib/esm/numerics/PolarData.js.map +1 -1
- package/lib/esm/numerics/Polynomials.js.map +1 -1
- package/lib/esm/numerics/Quadrature.js.map +1 -1
- package/lib/esm/numerics/Range1dArray.js.map +1 -1
- package/lib/esm/numerics/SmallSystem.js.map +1 -1
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -1
- package/lib/esm/numerics/UnionFind.js.map +1 -1
- package/lib/esm/numerics/UsageSums.js.map +1 -1
- package/lib/esm/polyface/AuxData.js.map +1 -1
- package/lib/esm/polyface/BoxTopology.js.map +1 -1
- package/lib/esm/polyface/FacetFaceData.js.map +1 -1
- package/lib/esm/polyface/FacetLocationDetail.js.map +1 -1
- package/lib/esm/polyface/FacetOrientation.js.map +1 -1
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -1
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -1
- package/lib/esm/polyface/IndexedPolyfaceWalker.js.map +1 -1
- package/lib/esm/polyface/Polyface.js.map +1 -1
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -1
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -1
- package/lib/esm/polyface/PolyfaceData.js.map +1 -1
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -1
- package/lib/esm/polyface/RangeLengthData.js.map +1 -1
- package/lib/esm/polyface/RangeTree/LineString3dRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/MinimumValueTester.js.map +1 -1
- package/lib/esm/polyface/RangeTree/Point3dArrayRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/PolyfaceRangeTreeContext.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeNode.js.map +1 -1
- package/lib/esm/polyface/RangeTree/RangeTreeSearchHandlers.js.map +1 -1
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -1
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -1
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -1
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -1
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -1
- package/lib/esm/polyface/multiclip/OffsetMeshContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -1
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -1
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -1
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -1
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -1
- package/lib/esm/serialization/BGFBReader.js.map +1 -1
- package/lib/esm/serialization/BGFBWriter.js.map +1 -1
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -1
- package/lib/esm/serialization/DeepCompare.js.map +1 -1
- package/lib/esm/serialization/GeometrySamples.js.map +1 -1
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -1
- package/lib/esm/serialization/SerializationHelpers.js.map +1 -1
- package/lib/esm/solid/Box.js.map +1 -1
- package/lib/esm/solid/Cone.js.map +1 -1
- package/lib/esm/solid/LinearSweep.js.map +1 -1
- package/lib/esm/solid/RotationalSweep.js.map +1 -1
- package/lib/esm/solid/RuledSweep.js.map +1 -1
- package/lib/esm/solid/SolidPrimitive.js.map +1 -1
- package/lib/esm/solid/Sphere.js.map +1 -1
- package/lib/esm/solid/SweepContour.js.map +1 -1
- package/lib/esm/solid/TorusPipe.js.map +1 -1
- package/lib/esm/topology/ChainMerge.js.map +1 -1
- package/lib/esm/topology/Graph.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphFromIndexedLoopsContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -1
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -1
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -1
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -1
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -1
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -1
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -1
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -1
- package/lib/esm/topology/MaskManager.js.map +1 -1
- package/lib/esm/topology/Merging.js.map +1 -1
- package/lib/esm/topology/RegularizeFace.js.map +1 -1
- package/lib/esm/topology/SignedDataSummary.js.map +1 -1
- package/lib/esm/topology/SpaceTriangulation.js.map +1 -1
- package/lib/esm/topology/Triangulation.js.map +1 -1
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolylineOps.js","sourceRoot":"","sources":["../../../src/geometry3d/PolylineOps.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { CurveExtendMode, CurveExtendOptions, VariantCurveExtendParameter } from \"../curve/CurveExtendMode\";\nimport { CurveLocationDetailPair } from \"../curve/CurveLocationDetail\";\nimport { LineSegment3d } from \"../curve/LineSegment3d\";\nimport { LineString3d } from \"../curve/LineString3d\";\nimport { Geometry } from \"../Geometry\";\nimport { GrowableXYZArray } from \"./GrowableXYZArray\";\nimport { IndexedXYZCollection } from \"./IndexedXYZCollection\";\nimport { Plane3dByOriginAndUnitNormal } from \"./Plane3dByOriginAndUnitNormal\";\nimport { Point3dArrayCarrier } from \"./Point3dArrayCarrier\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { PolylineCompressionContext } from \"./PolylineCompressionByEdgeOffset\";\nimport { Range1d } from \"./Range\";\n\n// cspell:word Puecker\n/**\n * PolylineOps is a collection of static methods operating on polylines.\n * @public\n */\nexport class PolylineOps {\n /**\n * Return a Range1d with the shortest and longest edge lengths of the polyline.\n * @param points points to examine.\n */\n public static edgeLengthRange(points: Point3d[]): Range1d {\n const range = Range1d.createNull();\n for (let i = 1; i < points.length; i++) {\n range.extendX(points[i - 1].distance(points[i]));\n }\n return range;\n }\n /**\n * Return a simplified subset of given points.\n * * Points are removed by the Douglas-Puecker algorithm, viz https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm\n * * This is a global search, with multiple passes over the data.\n * @param source\n * @param chordTolerance\n */\n public static compressByChordError(source: Point3d[], chordTolerance: number): Point3d[] {\n return PolylineCompressionContext.compressPoint3dArrayByChordError(source, chordTolerance);\n }\n /**\n * Return a simplified subset of given points, omitting a point if very close to its predecessor.\n * * This is a local search, with a single pass over the data.\n * * First and last points are always retained.\n * @param source input points\n * @param maxEdgeLength length of largest edge to be compressed out\n * @see [[GrowableXYZArray.cloneCompressed]]\n */\n public static compressShortEdges(source: Point3d[] | IndexedXYZCollection, maxEdgeLength: number): Point3d[] {\n const dest = GrowableXYZArray.create(source);\n PolylineCompressionContext.compressInPlaceByShortEdgeLength(dest, maxEdgeLength);\n return dest.getPoint3dArray();\n }\n /**\n * Return a simplified subset of given points, omitting the middle of three successive points if the triangle they form is small.\n * * This is a local search, with a single pass over the data.\n * @param source input points\n * @param maxTriangleArea area of largest triangle to compress\n */\n public static compressSmallTriangles(source: Point3d[], maxTriangleArea: number): Point3d[] {\n const dest = GrowableXYZArray.create(source);\n PolylineCompressionContext.compressInPlaceBySmallTriangleArea(dest, maxTriangleArea);\n return dest.getPoint3dArray();\n }\n\n /**\n * Return a simplified subset of given points, omitting points if close to the edge between neighboring points before and after\n * * This is a local search, with a single pass over the data for each pass.\n * @param source input points\n * @param maxDistance omit points if this close to edge between points before and after\n * @param numPass max number of times to run the filter. numPass=2 is observed to behave well.\n *\n */\n public static compressByPerpendicularDistance(source: Point3d[], maxDistance: number, numPass: number = 2): Point3d[] {\n const dest = GrowableXYZArray.create(source);\n let num0 = dest.length;\n for (let pass = 0; pass < numPass; pass++) {\n PolylineCompressionContext.compressInPlaceByPerpendicularDistance(dest, maxDistance);\n const num1 = dest.length;\n if (num1 === num0)\n break;\n num0 = num1;\n }\n return dest.getPoint3dArray();\n }\n private static squaredDistanceToInterpolatedPoint(pointQ: Point3d, point0: Point3d, fraction: number, point1: Point3d): number {\n const g = 1.0 - fraction;\n const dx = pointQ.x - (g * point0.x + fraction * point1.x);\n const dy = pointQ.y - (g * point0.y + fraction * point1.y);\n const dz = pointQ.z - (g * point0.z + fraction * point1.z);\n return dx * dx + dy * dy + dz * dz;\n }\n /**\n * test if either\n * * points[indexA] matches pointQ\n * * line from points[indexA] to points[indexB] overlaps points[indexA] to pointQ\n * @param points\n * @param pointQ\n * @param tolerance\n */\n private static isDanglerConfiguration(points: Point3d[], indexA: number, indexB: number, pointQ: Point3d, squaredDistanceTolerance: number): boolean {\n if (indexA < 0 || indexA >= points.length)\n return false;\n const pointA = points[indexA];\n // simple point match ...\n const d2Q = pointA.distanceSquared(pointQ);\n if (d2Q <= squaredDistanceTolerance)\n return true;\n if (indexB < 0 || indexB >= points.length)\n return false;\n const pointB = points[indexB];\n // The expensive test .. does newPoint double back to an interior or extrapolation of the final dest segment?\n //\n // or pointQ\n const dot = pointA.dotVectorsToTargets(pointB, pointQ);\n // simple case -- pointB..pointA..pointQ continues forward\n if (dot <= 0.0)\n return false;\n const d2B = pointA.distanceSquared(pointB);\n let distanceSquared;\n if (d2Q >= d2B) {\n // pointB----------------------------------->>>>>>> pointA\n // pointQ<<<<---------------------------------------------------------\n const fraction = dot / d2Q; // safe to divide because of earlier d2Q test.\n distanceSquared = this.squaredDistanceToInterpolatedPoint(pointB, pointA, fraction, pointQ);\n } else {\n // pointB----------------------------------->>>>>>> pointA\n // pointQ<<<<----------------------\n const fraction = dot / d2B;\n distanceSquared = this.squaredDistanceToInterpolatedPoint(pointQ, pointA, fraction, pointB);\n }\n return distanceSquared < squaredDistanceTolerance;\n }\n /**\n * Return a simplified subset of given points, omitting points on \"danglers\" that depart and return on a single path.\n * @param source input points\n * @param closed if true, an edge returning to point 0 is implied even if final point does not match.\n * @param tolerance tolerance for near-zero distance.\n */\n public static compressDanglers(source: Point3d[], closed: boolean = false, tolerance: number = Geometry.smallMetricDistance): Point3d[] {\n let n = source.length;\n const squaredDistanceTolerance = tolerance * tolerance;\n if (closed)\n while (n > 1 && source[n - 1].distanceSquared(source[0]) <= squaredDistanceTolerance)\n n--;\n const dest = [];\n dest.push(source[0].clone());\n for (let i = 1; i < n; i++) {\n const newPoint = source[i];\n while (this.isDanglerConfiguration(dest, dest.length - 1, dest.length - 2, newPoint, squaredDistanceTolerance))\n dest.pop();\n dest.push(newPoint.clone());\n }\n if (closed) {\n // No purge moving backwards. Last point\n let leftIndex = 0;\n let rightIndex = dest.length - 1;\n while (rightIndex > leftIndex + 2) {\n if (this.isDanglerConfiguration(dest, leftIndex, leftIndex + 1, dest[rightIndex], squaredDistanceTolerance)) {\n leftIndex++;\n } else if (this.isDanglerConfiguration(dest, rightIndex, rightIndex - 1, dest[leftIndex], squaredDistanceTolerance)) {\n rightIndex--;\n } else {\n break;\n }\n }\n if (rightIndex + 1 < dest.length)\n dest.length = rightIndex + 1;\n if (leftIndex > 0) {\n dest.splice(0, leftIndex);\n }\n }\n return dest;\n }\n /**\n * Add closure points to a polyline or array of polylines\n * @param data points.\n */\n public static addClosurePoint(data: Point3d[] | Point3d[][]) {\n if (data.length === 0)\n return;\n const q0 = data[0];\n if (Array.isArray(q0)) {\n for (const child of data) {\n if (Array.isArray(child))\n this.addClosurePoint(child);\n }\n return;\n }\n const q1 = data[data.length - 1];\n if (q0 instanceof Point3d && q1 instanceof Point3d && !q0.isAlmostEqual(q1)) {\n (data as Point3d[]).push(q0.clone());\n }\n }\n /**\n * Remove closure points of a polyline or array of polylines\n * @param data points.\n */\n public static removeClosurePoint(data: Point3d[] | Point3d[][]) {\n if (data.length === 0)\n return;\n const q0 = data[0];\n if (Array.isArray(q0)) {\n for (const child of data) {\n if (Array.isArray(child))\n this.removeClosurePoint(child);\n }\n return;\n }\n const q1 = data[data.length - 1];\n if (q0 instanceof Point3d && q1 instanceof Point3d && q0.isAlmostEqual(q1)) {\n (data as Point3d[]).pop();\n }\n }\n /**\n * Create an array of planes.\n * * First plane has origin at first centerline point, with unit normal directed at the next point.\n * * Intermediate planes have origin at intermediate points, with unit normals computed from the average of unit vectors\n * along the incoming and outgoing segments.\n * * Last plane has origin at last centerline point, with unit normal directed from previous point.\n * * All sets of adjacent coincident points are reduced to a single point.\n * * Hence the output array may have fewer points than the centerline.\n * * If there are one or fewer distinct input points, the return is undefined.\n * @param centerline points to reside in output planes.\n * @param wrapIfPhysicallyClosed if true and the first and last centerline points are the same, then the first and last\n * output planes are averaged and equated (cloned). Default false.\n */\n public static createBisectorPlanesForDistinctPoints(\n centerline: IndexedXYZCollection | Point3d[], wrapIfPhysicallyClosed: boolean = false,\n ): Plane3dByOriginAndUnitNormal[] | undefined {\n const packedPoints = PolylineOps.compressShortEdges(centerline, 2.0 * Geometry.smallMetricDistance); // double the tolerance to ensure normalized vectors exist.\n if (packedPoints.length < 2)\n return undefined;\n const bisectorPlanes: Plane3dByOriginAndUnitNormal[] = [];\n const point0 = packedPoints[0];\n const point1 = packedPoints[1];\n const unit01 = Vector3d.createNormalizedStartEnd(point0, point1)!;\n const perpendicular0 = Plane3dByOriginAndUnitNormal.create(point0, unit01)!;\n const perpendicular1 = Plane3dByOriginAndUnitNormal.createXYPlane();\n // FIRST point gets simple perpendicular\n bisectorPlanes.push(perpendicular0.clone());\n // Each intermediate point gets average of adjacent perpendiculars\n for (let i = 1; i + 1 < packedPoints.length; i++) {\n Vector3d.createNormalizedStartEnd(packedPoints[i], packedPoints[i + 1], unit01);\n // remark: the prior pack should ensure the normalization is ok. But if it fails, we ignore this point...\n if (undefined !== Plane3dByOriginAndUnitNormal.create(packedPoints[i], unit01, perpendicular1)) {\n const newBisectorNormal = perpendicular0.getNormalRef().interpolate(0.5, perpendicular1.getNormalRef());\n const newBisectorPlane = Plane3dByOriginAndUnitNormal.create(packedPoints[i], newBisectorNormal);\n if (undefined !== newBisectorPlane)\n bisectorPlanes.push(newBisectorPlane);\n perpendicular0.setFrom(perpendicular1);\n }\n }\n // LAST point gets simple perpendicular inherited from last pass\n bisectorPlanes.push(Plane3dByOriginAndUnitNormal.create(packedPoints[packedPoints.length - 1], perpendicular0.getNormalRef())!);\n // reset end planes to their average plane, but leave them alone if the closure point is a cusp\n const lastIndex = bisectorPlanes.length - 1;\n if (lastIndex > 0 && wrapIfPhysicallyClosed) {\n const firstPlane = bisectorPlanes[0];\n const lastPlane = bisectorPlanes[lastIndex];\n if (Geometry.isSamePoint3d(firstPlane.getOriginRef(), lastPlane.getOriginRef())) {\n const newBisectorNormal = firstPlane.getNormalRef().plus(lastPlane.getNormalRef()); // could be zero vector at a cusp\n const newBisectorPlane = Plane3dByOriginAndUnitNormal.create(firstPlane.getOriginRef(), newBisectorNormal);\n if (undefined !== newBisectorPlane) {\n bisectorPlanes[0] = newBisectorPlane;\n bisectorPlanes[lastIndex] = Plane3dByOriginAndUnitNormal.create(lastPlane.getOriginRef(), newBisectorNormal)!;\n }\n }\n }\n return bisectorPlanes.length > 1 ? bisectorPlanes : undefined;\n }\n\n private static _workSegmentA?: LineSegment3d;\n private static _workSegmentB?: LineSegment3d;\n private static _workLocalDetailPair?: CurveLocationDetailPair;\n /**\n * Find smallest distance between polylines.\n * * For polylines with many points, it is more efficient to use [[LineString3dRangeTreeContext.searchForClosestApproach]].\n * @param pointsA first polyline\n * @param extendA how to extend polylineA forward/backward\n * @param pointsB second polyline\n * @param extendB how to extend polylineB forward/backward\n * @param dMax largest approach distance to consider\n * @param result optional pre-allocated object to populate and return\n * @returns pair of details, one for each polyline, with field values:\n * * `a` is the closest approach distance\n * * `point` is the point of closest approach\n * * `fraction` is the global polyline fraction\n * * `childDetail.a` is the segment index\n * * `childDetail.fraction` is the local segment fraction\n */\n public static closestApproach(\n pointsA: Point3d[] | IndexedXYZCollection,\n extendA: VariantCurveExtendParameter,\n pointsB: Point3d[] | IndexedXYZCollection,\n extendB: VariantCurveExtendParameter,\n dMax: number = Number.MAX_VALUE,\n result?: CurveLocationDetailPair,\n ): CurveLocationDetailPair | undefined {\n if (Array.isArray(pointsA))\n pointsA = new Point3dArrayCarrier(pointsA);\n if (Array.isArray(pointsB))\n pointsB = new Point3dArrayCarrier(pointsB);\n let dMin = dMax;\n let foundMin = false;\n const numSegmentA = pointsA.length - 1;\n const numSegmentB = pointsB.length - 1;\n const extendSegA = [CurveExtendMode.None, CurveExtendMode.None];\n const extendSegB = [CurveExtendMode.None, CurveExtendMode.None];\n // lambda to set extension for first and last segment of a polyline\n const convertExtend = (extendOut: CurveExtendMode[], extendIn: VariantCurveExtendParameter, segmentIndex: number, numSegments: number) => {\n extendOut[0] = extendOut[1] = CurveExtendMode.None;\n if (segmentIndex === 0)\n extendOut[0] = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extendIn, 0);\n else if (segmentIndex === numSegments - 1)\n extendOut[1] = CurveExtendOptions.resolveVariantCurveExtendParameterToCurveExtendMode(extendIn, 1);\n };\n // lambda to extract LineSegment3d from polyline\n const fillSegment = (points: IndexedXYZCollection, index: number, segment: LineSegment3d | undefined): LineSegment3d => {\n if (segment === undefined)\n return LineSegment3d.createCapture(points.getPoint3dAtUncheckedPointIndex(index), points.getPoint3dAtUncheckedPointIndex(index + 1));\n points.getPoint3dAtUncheckedPointIndex(index, segment.point0Ref);\n points.getPoint3dAtUncheckedPointIndex(index + 1, segment.point1Ref);\n return segment;\n };\n // just test the segments\n for (let indexA = 0; indexA < numSegmentA; indexA++) {\n this._workSegmentA = fillSegment(pointsA, indexA, this._workSegmentA);\n convertExtend(extendSegA, extendA, indexA, numSegmentA);\n for (let indexB = 0; indexB < numSegmentB; indexB++) {\n this._workSegmentB = fillSegment(pointsB, indexB, this._workSegmentB);\n convertExtend(extendSegB, extendB, indexB, numSegmentB);\n if (undefined !== (this._workLocalDetailPair = LineSegment3d.closestApproach(this._workSegmentA, extendSegA, this._workSegmentB, extendSegB, this._workLocalDetailPair))) {\n const d = this._workLocalDetailPair.detailA.a;\n if (d < dMin) {\n const childDetailA = result?.detailA.childDetail; // save and reuse\n const childDetailB = result?.detailB.childDetail;\n result = this._workLocalDetailPair.clone(result); // overwrite previous result\n LineString3d.convertLocalToGlobalDetail(result.detailA, indexA, numSegmentA, undefined, childDetailA);\n LineString3d.convertLocalToGlobalDetail(result.detailB, indexB, numSegmentB, undefined, childDetailB);\n if (result.detailA.childDetail && result.detailB.childDetail)\n result.detailA.childDetail.curve = result.detailB.childDetail.curve = undefined; // no CurvePrimitives survive in output\n dMin = d;\n foundMin = true;\n }\n }\n }\n }\n return foundMin ? result : undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PolylineOps.js","sourceRoot":"","sources":["../../../src/geometry3d/PolylineOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Range.js","sourceRoot":"","sources":["../../../src/geometry3d/Range.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { AxisIndex, BeJSONFunctions, Geometry } from \"../Geometry\";\nimport { MultiLineStringDataVariant } from \"../geometry3d/IndexedXYZCollection\";\nimport { GrowableXYZArray } from \"./GrowableXYZArray\";\nimport { Matrix3d } from \"./Matrix3d\";\nimport { Point2d, Vector2d } from \"./Point2dVector2d\";\nimport { Point3d, Vector3d } from \"./Point3dVector3d\";\nimport { PointStreamRangeCollector, VariantPointDataStream } from \"./PointStreaming\";\nimport { Transform } from \"./Transform\";\nimport { LowAndHighXY, LowAndHighXYZ, Range1dProps, Range2dProps, Range3dProps, XAndY, XYAndZ } from \"./XYZProps\";\n\n// allow _EXTREME_POSITIVE and _EXTREME_NEGATIVE\n/* eslint-disable @typescript-eslint/naming-convention */\n/**\n * Base class for Range1d, Range2d, Range3d.\n * @public\n */\nexport abstract class RangeBase {\n /** Number considered impossibly large possibly for a coordinate in a range. */\n protected static readonly _EXTREME_POSITIVE: number = 1.0e200;\n /** Number considered to be impossibly negative for a coordinate in a range. */\n protected static readonly _EXTREME_NEGATIVE: number = -1.0e200;\n /** Return 0 if high<= low, otherwise `1/(high-low)` for use in fractionalizing */\n protected static npcScaleFactor(low: number, high: number): number {\n return (high <= low) ? 0.0 : 1.0 / (high - low);\n }\n /** Return true if x is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */\n public static isExtremeValue(x: number): boolean {\n return Math.abs(x) >= RangeBase._EXTREME_POSITIVE;\n }\n /** Return true if any x or y or z is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */\n public static isExtremePoint3d(xyz: Point3d) {\n return RangeBase.isExtremeValue(xyz.x) || RangeBase.isExtremeValue(xyz.y) || RangeBase.isExtremeValue(xyz.z);\n }\n /** Return true if either of x,y is outside the range `[_EXTREME_NEGATIVE, _EXTREME_POSITIVE]' */\n public static isExtremePoint2d(xy: Point2d) {\n return RangeBase.isExtremeValue(xy.x) || RangeBase.isExtremeValue(xy.y);\n }\n /**\n * Return the min absolute distance from any point of `[lowA,highA]' to any point of `[lowB,highB]'.\n * * Both low,high pairs have order expectations: The condition `high < low` means null interval.\n * * If there is interval overlap, the distance is zero.\n * @param lowA low of interval A\n * @param highA high of interval A\n * @param lowB low of interval B\n * @param highB high of interval B\n */\n public static rangeToRangeAbsoluteDistance(lowA: number, highA: number, lowB: number, highB: number): number {\n if (highA < lowA)\n return RangeBase._EXTREME_POSITIVE;\n if (highB < lowB)\n return RangeBase._EXTREME_POSITIVE;\n if (highB < lowA)\n return lowA - highB;\n if (highB <= highA)\n return 0.0;\n if (lowB <= highA)\n return 0.0;\n return lowB - highA;\n }\n /**\n * Given a coordinate and pair of range limits, return the smallest distance to the range.\n * * This is zero for any point inside the range\n * * This is _EXTREME_POSITIVE if the range limits are inverted\n * * Otherwise (i.e. x is outside a finite range) the distance to the near endpoint.\n */\n public static coordinateToRangeAbsoluteDistance(x: number, low: number, high: number): number {\n if (high < low)\n return RangeBase._EXTREME_POSITIVE;\n if (x < low)\n return low - x;\n if (x > high)\n return x - high;\n return 0.0;\n }\n /**\n * If a > 0, return (extrapolationFactor * a); otherwise return defaultValue\n * @param q\n * @param factor multiplier for positive q values.\n */\n public static multiplyIfPositive(q: number, factor: number, defaultValue: number = 0.0): number {\n return q > 0 ? factor * q : defaultValue;\n }\n}\n\n/**\n * Axis aligned range in 3D.\n * * member `low` contains minimum coordinate of range box\n * * member `high` contains maximum coordinate of range box\n * * The range is considered null (empty) if any low member is larger than its high counterpart.\n * @public\n */\nexport class Range3d extends RangeBase implements LowAndHighXYZ, BeJSONFunctions {\n // low and high are always non-null objects\n // any direction of low.q > high.q is considered a null range.\n // private ctor and setXYZXYZ_direct set the low and high explicitly (without further tests of low.q.<= high.q)\n /** Low point coordinates */\n public low: Point3d;\n /** High point coordinates */\n public high: Point3d;\n /** Set this transform to values that indicate it has no geometric contents. */\n public setNull() {\n this.low.x = RangeBase._EXTREME_POSITIVE;\n this.low.y = RangeBase._EXTREME_POSITIVE;\n this.low.z = RangeBase._EXTREME_POSITIVE;\n this.high.x = RangeBase._EXTREME_NEGATIVE;\n this.high.y = RangeBase._EXTREME_NEGATIVE;\n this.high.z = RangeBase._EXTREME_NEGATIVE;\n }\n\n /** Freeze this instance (and its members) so it is read-only */\n public freeze(): Readonly<this> {\n this.low.freeze();\n this.high.freeze();\n return Object.freeze(this);\n }\n /** Flatten the low and high coordinates of any json object with low.x .. high.z into an array of 6 doubles */\n public static toFloat64Array(val: LowAndHighXYZ): Float64Array {\n return Float64Array.of(val.low.x, val.low.y, val.low.z, val.high.x, val.high.y, val.high.z);\n }\n /** Flatten the low and high coordinates of this into an array of 6 doubles */\n public toFloat64Array(): Float64Array {\n return Range3d.toFloat64Array(this);\n }\n /**\n * Construct a Range3d from an array of double-precision values\n * @param f64 the array, which should contain exactly 6 values in this order: lowX, lowY, lowZ, highX, highY, highZ\n * @return a new Range3d object\n */\n public static fromFloat64Array<T extends Range3d>(f64: Float64Array): T {\n if (f64.length !== 6)\n throw new Error(\"invalid array\");\n return new this(f64[0], f64[1], f64[2], f64[3], f64[4], f64[5]) as T;\n }\n /**\n * Construct a Range3d from an un-typed array. This mostly useful when interpreting ECSQL query results of\n * the 'blob' type, where you know that that result is a Range3d.\n * @param buffer untyped array\n * @return a new Range3d object\n */\n public static fromArrayBuffer<T extends Range3d>(buffer: ArrayBuffer): T {\n return this.fromFloat64Array(new Float64Array(buffer));\n }\n // explicit ctor - no enforcement of value relationships\n public constructor(\n lowX: number = RangeBase._EXTREME_POSITIVE, lowY: number = RangeBase._EXTREME_POSITIVE, lowZ: number = RangeBase._EXTREME_POSITIVE,\n highX: number = RangeBase._EXTREME_NEGATIVE, highY: number = RangeBase._EXTREME_NEGATIVE, highZ: number = RangeBase._EXTREME_NEGATIVE,\n ) {\n super();\n this.low = Point3d.create(lowX, lowY, lowZ);\n this.high = Point3d.create(highX, highY, highZ);\n }\n /** Returns true if this and other have equal low and high parts, or both are null ranges. */\n public isAlmostEqual(other: Readonly<Range3d>, tol?: number): boolean {\n return (this.low.isAlmostEqual(other.low, tol) && this.high.isAlmostEqual(other.high, tol))\n || (this.isNull && other.isNull);\n }\n /** Copy low and high values from other. */\n public setFrom(other: Range3d) {\n this.low.setFrom(other.low);\n this.high.setFrom(other.high);\n }\n /** Return a new Range3d copied from a range or derived type */\n public static createFrom<T extends Range3d>(other: Range3d, result?: T): T {\n if (result) {\n result.setFrom(other);\n return result;\n }\n return this.createXYZXYZOrCorrectToNull<T>(\n other.low.x, other.low.y, other.low.z,\n other.high.x, other.high.y, other.high.z,\n result,\n );\n }\n /**\n * Set this range (in place) from json such as\n * * key-value pairs: `{low:[1,2,3], high:[4,5,6]}`\n * * array of points: `[[1,2,3],[9,3,4],[-2,1,3] ...]`\n * * Lowest level points can be `[1,2,3]` or `{x:1,y:2,z:3}`\n */\n public setFromJSON(json?: Range3dProps) {\n if (!json)\n return;\n this.setNull();\n if (Array.isArray(json)) {\n const point = Point3d.create();\n for (const value of json) {\n point.setFromJSON(value);\n this.extendPoint(point);\n }\n return;\n }\n const low = Point3d.fromJSON(json.low);\n const high = Point3d.fromJSON(json.high);\n if (!RangeBase.isExtremePoint3d(low) && !RangeBase.isExtremePoint3d(high)) {\n this.extendPoint(low);\n this.extendPoint(high);\n }\n }\n /**\n * Return a JSON object `{low: ... , high: ...}`\n * with points formatted by `Point3d.toJSON()`\n */\n public toJSON(): Range3dProps {\n return { low: this.low.toJSON(), high: this.high.toJSON() };\n }\n /** Use `setFromJSON` to parse `json` into a new Range3d instance. */\n public static fromJSON<T extends Range3d>(json?: Range3dProps): T {\n const result = new this() as T;\n result.setFromJSON(json);\n return result;\n }\n // internal use only -- directly set all coordinates, test only if directed.\n private setDirect(xA: number, yA: number, zA: number, xB: number, yB: number, zB: number, correctToNull: boolean) {\n this.low.x = xA;\n this.low.y = yA;\n this.low.z = zA;\n\n this.high.x = xB;\n this.high.y = yB;\n this.high.z = zB;\n if (correctToNull) {\n if (\n this.low.x > this.high.x\n || this.low.y > this.high.y\n || this.low.z > this.high.z\n )\n this.setNull();\n }\n }\n /** Return a copy */\n public clone(result?: this): this {\n result = result ? result : new (this.constructor as any)() as this;\n result.setDirect(this.low.x, this.low.y, this.low.z, this.high.x, this.high.y, this.high.z, false);\n return result;\n }\n /**\n * Return a copy, translated by adding `shift` components in all directions.\n * * The translate of a null range is also a null range.\n */\n public cloneTranslated(shift: XYAndZ, result?: this): this {\n result = result ? result : new (this.constructor as any)() as this;\n if (!this.isNull)\n result.setDirect(\n this.low.x + shift.x, this.low.y + shift.y, this.low.z + shift.z,\n this.high.x + shift.x, this.high.y + shift.y, this.high.z + shift.z,\n false,\n );\n return result;\n }\n\n /** Return a range initialized to have no content. */\n public static createNull<T extends Range3d>(result?: T): T {\n result = result ? result : new this() as T;\n result.setNull();\n return result;\n }\n /** Extend (modify in place) so that the range is large enough to include the supplied points. */\n public extend(...point: Point3d[]) {\n let p;\n for (p of point)\n this.extendPoint(p);\n }\n /** Return a range large enough to include the supplied points. If no points are given, the range is a null range */\n public static create(...point: Point3d[]) {\n const result = Range3d.createNull();\n let p;\n for (p of point)\n result.extendPoint(p);\n return result;\n }\n /** Create a range from freely structured MultiLineStringDataVariant. */\n public static createFromVariantData(data: MultiLineStringDataVariant): Range3d {\n const collector = new PointStreamRangeCollector();\n VariantPointDataStream.streamXYZ(data, collector);\n return collector.claimResult();\n }\n /** Create a Range3d enclosing the transformed points. */\n public static createTransformed<T extends Range3d>(transform: Transform, ...point: Point3d[]): T {\n const result = this.createNull<T>();\n let p;\n for (p of point)\n result.extendTransformedXYZ(transform, p.x, p.y, p.z);\n return result;\n }\n /** Create a Range3d enclosing the transformed points. */\n public static createTransformedArray<T extends Range3d>(\n transform: Transform, points: Point3d[] | GrowableXYZArray,\n ): T {\n const result = this.createNull<T>();\n result.extendArray(points, transform);\n return result;\n }\n /** Create a Range3d enclosing the points after inverse transform. */\n public static createInverseTransformedArray<T extends Range3d>(\n transform: Transform, points: Point3d[] | GrowableXYZArray,\n ): T {\n const result = this.createNull<T>();\n result.extendInverseTransformedArray(points, transform);\n return result;\n }\n /** Set the range to be a single point supplied as x,y,z values */\n public setXYZ(x: number, y: number, z: number) {\n this.low.x = this.high.x = x;\n this.low.y = this.high.y = y;\n this.low.z = this.high.z = z;\n }\n /** Create a single point range */\n public static createXYZ<T extends Range3d>(x: number, y: number, z: number, result?: T): T {\n result = result ? result : new this() as T;\n result.setDirect(x, y, z, x, y, z, false);\n return result;\n }\n /** Create a box with 2 pairs of xyz candidates. Theses are compared and shuffled as needed for the box. */\n public static createXYZXYZ<T extends Range3d>(\n xA: number, yA: number, zA: number, xB: number, yB: number, zB: number, result?: T,\n ): T {\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB), Math.min(yA, yB), Math.min(zA, zB),\n Math.max(xA, xB), Math.max(yA, yB), Math.max(zA, zB),\n false,\n );\n return result;\n }\n\n /** Create a box with 2 pairs of xyz candidates. If any direction has order flip, create null. */\n public static createXYZXYZOrCorrectToNull<T extends Range3d>(\n xA: number, yA: number, zA: number, xB: number, yB: number, zB: number, result?: T,\n ): T {\n result = result ? result : new this() as T;\n if (xA > xB || yA > yB || zA > zB)\n return this.createNull(result);\n result.setDirect(\n Math.min(xA, xB), Math.min(yA, yB), Math.min(zA, zB),\n Math.max(xA, xB), Math.max(yA, yB), Math.max(zA, zB),\n true,\n );\n return result;\n }\n /** Creates a 3d range from a 2d range's low and high members, setting the corresponding z values to the value given. */\n public static createRange2d<T extends Range3d>(range: Range2d, z: number = 0, result?: T): T {\n const retVal = result ? result : new this() as T;\n retVal.setNull();\n retVal.extendXYZ(range.low.x, range.low.y, z);\n retVal.extendXYZ(range.high.x, range.high.y, z);\n return retVal;\n }\n /** Create a range around an array of points. */\n public static createArray<T extends Range3d>(points: Point3d[], result?: T): T {\n result = result ? result : new this() as T;\n result.setNull();\n let point;\n for (point of points)\n result.extendPoint(point);\n return result;\n }\n /** Extend a range around an array of points (optionally transformed) */\n public extendArray(points: Point3d[] | GrowableXYZArray, transform?: Transform) {\n if (Array.isArray(points))\n if (transform)\n for (const point of points)\n this.extendTransformedXYZ(transform, point.x, point.y, point.z);\n else\n for (const point of points)\n this.extendXYZ(point.x, point.y, point.z);\n else // growable array -- this should be implemented without point extraction !!!\n if (transform)\n for (let i = 0; i < points.length; i++)\n this.extendTransformedXYZ(\n transform,\n points.getXAtUncheckedPointIndex(i),\n points.getYAtUncheckedPointIndex(i),\n points.getZAtUncheckedPointIndex(i),\n );\n else\n for (let i = 0; i < points.length; i++)\n this.extendXYZ(\n points.getXAtUncheckedPointIndex(i),\n points.getYAtUncheckedPointIndex(i),\n points.getZAtUncheckedPointIndex(i),\n );\n }\n /** Extend a range around an array of points (optionally transformed) */\n public extendInverseTransformedArray(points: Point3d[] | GrowableXYZArray, transform: Transform) {\n if (Array.isArray(points))\n for (const point of points)\n this.extendInverseTransformedXYZ(transform, point.x, point.y, point.z);\n else // growable array -- this should be implemented without point extraction !!!\n for (let i = 0; i < points.length; i++)\n this.extendInverseTransformedXYZ(\n transform,\n points.getXAtUncheckedPointIndex(i),\n points.getYAtUncheckedPointIndex(i),\n points.getZAtUncheckedPointIndex(i),\n );\n }\n /** Multiply the point x,y,z by transform and use the coordinate to extend this range. */\n public extendTransformedXYZ(transform: Transform, x: number, y: number, z: number) {\n const origin = transform.origin;\n const coffs = transform.matrix.coffs;\n this.extendXYZ(\n origin.x + coffs[0] * x + coffs[1] * y + coffs[2] * z,\n origin.y + coffs[3] * x + coffs[4] * y + coffs[5] * z,\n origin.z + coffs[6] * x + coffs[7] * y + coffs[8] * z,\n );\n }\n /** Multiply the point x,y,z,w by transform and use the coordinate to extend this range. */\n public extendTransformedXYZW(transform: Transform, x: number, y: number, z: number, w: number) {\n const origin = transform.origin;\n const coffs = transform.matrix.coffs;\n this.extendXYZW(\n origin.x * w + coffs[0] * x + coffs[1] * y + coffs[2] * z,\n origin.y * w + coffs[3] * x + coffs[4] * y + coffs[5] * z,\n origin.z * w + coffs[6] * x + coffs[7] * y + coffs[8] * z,\n w,\n );\n }\n\n /** Multiply the point x,y,z by the inverse of the transform and use the coordinate to extend this range. */\n public extendInverseTransformedXYZ(transform: Transform, x: number, y: number, z: number): boolean {\n const origin = transform.origin;\n if (!transform.matrix.computeCachedInverse(true))\n return false;\n const coffs = transform.matrix.inverseCoffs!;\n const xx = x - origin.x;\n const yy = y - origin.y;\n const zz = z - origin.z;\n this.extendXYZ(\n coffs[0] * xx + coffs[1] * yy + coffs[2] * zz,\n coffs[3] * xx + coffs[4] * yy + coffs[5] * zz,\n coffs[6] * xx + coffs[7] * yy + coffs[8] * zz,\n );\n return true;\n }\n /** Extend the range by the two transforms applied to xyz */\n public extendTransformTransformedXYZ(\n transformA: Transform, transformB: Transform, x: number, y: number, z: number,\n ): void {\n const origin = transformB.origin;\n const coffs = transformB.matrix.coffs;\n this.extendTransformedXYZ(\n transformA,\n origin.x + coffs[0] * x + coffs[1] * y + coffs[2] * z,\n origin.y + coffs[3] * x + coffs[4] * y + coffs[5] * z,\n origin.z + coffs[6] * x + coffs[7] * y + coffs[8] * z,\n );\n }\n /** Test if the box has high<low for any of x,y,z, condition. Note that a range around a single point is NOT null. */\n public get isNull(): boolean {\n return this.high.x < this.low.x\n || this.high.y < this.low.y\n || this.high.z < this.low.z;\n }\n /** Test if data has high<low for any of x,y,z, condition. Note that a range around a single point is NOT null. */\n public static isNull(data: LowAndHighXYZ): boolean {\n return data.high.x < data.low.x\n || data.high.y < data.low.y\n || data.high.z < data.low.z;\n }\n /** Test of the range contains a single point. */\n public get isSinglePoint(): boolean {\n return this.high.x === this.low.x\n && this.high.y === this.low.y\n && this.high.z === this.low.z;\n }\n /** Return the midpoint of the diagonal. No test for null range. */\n public get center(): Point3d {\n return this.low.interpolate(.5, this.high);\n }\n /** Return the low x coordinate */\n public get xLow(): number {\n return this.low.x;\n }\n /** Return the low y coordinate */\n public get yLow(): number {\n return this.low.y;\n }\n /** Return the low z coordinate */\n public get zLow(): number {\n return this.low.z;\n }\n /** Return the high x coordinate */\n public get xHigh(): number {\n return this.high.x;\n }\n /** Return the high y coordinate */\n public get yHigh(): number {\n return this.high.y;\n }\n /** Return the high z coordinate */\n public get zHigh(): number {\n return this.high.z;\n }\n /** Return the length of the box in the x direction */\n public xLength(): number {\n const a = this.high.x - this.low.x; return a > 0.0 ? a : 0.0;\n }\n /** Return the length of the box in the y direction */\n public yLength(): number {\n const a = this.high.y - this.low.y; return a > 0.0 ? a : 0.0;\n }\n /** Return the length of the box in the z direction */\n public zLength(): number {\n const a = this.high.z - this.low.z; return a > 0.0 ? a : 0.0;\n }\n /** Return the largest of the x,y, z lengths of the range. */\n public maxLength(): number {\n return Math.max(this.xLength(), this.yLength(), this.zLength());\n }\n /**\n * Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very\n * large negative coordinates.\n */\n public diagonal(result?: Vector3d): Vector3d {\n return this.low.vectorTo(this.high, result);\n }\n /**\n * Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very\n * large negative coordinates.\n */\n public diagonalFractionToPoint(fraction: number, result?: Point3d): Point3d {\n return this.low.interpolate(fraction, this.high, result);\n }\n /** Return a point given by fractional positions on the XYZ axes. This is done with no check for isNull !!! */\n public fractionToPoint(fractionX: number, fractionY: number, fractionZ: number = 0, result?: Point3d): Point3d {\n return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);\n }\n /**\n * Return a point given by fractional positions on the XYZ axes.\n * Returns undefined if the range is null.\n */\n public localXYZToWorld(\n fractionX: number, fractionY: number, fractionZ: number, result?: Point3d,\n ): Point3d | undefined {\n if (this.isNull) return undefined;\n return this.low.interpolateXYZ(fractionX, fractionY, fractionZ, this.high, result);\n }\n /**\n * Return a point given by fractional positions on the XYZ axes.\n * * Returns undefined if the range is null.\n */\n public localToWorld(xyz: XYAndZ, result?: Point3d): Point3d | undefined {\n return this.localXYZToWorld(xyz.x, xyz.y, xyz.z, result);\n }\n /**\n * Replace fractional coordinates by world coordinates.\n * @returns false if null range.\n */\n public localToWorldArrayInPlace(points: Point3d[]): boolean {\n if (this.isNull) return false;\n for (const p of points)\n this.low.interpolateXYZ(p.x, p.y, p.z, this.high, p);\n return false;\n }\n /**\n * Return fractional coordinates of point within the range.\n * * returns undefined if the range is null.\n * * returns undefined if any direction (x,y,z) has zero length\n */\n public worldToLocal(point: Point3d, result?: Point3d): Point3d | undefined {\n const ax = RangeBase.npcScaleFactor(this.low.x, this.high.x);\n const ay = RangeBase.npcScaleFactor(this.low.y, this.high.y);\n const az = RangeBase.npcScaleFactor(this.low.z, this.high.z);\n if (ax === 0.0 || ay === 0.0 || az === 0.0)\n return undefined;\n return Point3d.create(\n (point.x - this.low.x) * ax,\n (point.y - this.low.y) * ay,\n (point.z - this.low.z) * az,\n result,\n );\n }\n /**\n * Return fractional coordinates of point within the range.\n * * returns undefined if the range is null.\n * * returns undefined if any direction (x,y,z) has zero length\n */\n public worldToLocalArrayInPlace(point: Point3d[]): boolean {\n const ax = RangeBase.npcScaleFactor(this.low.x, this.high.x);\n const ay = RangeBase.npcScaleFactor(this.low.y, this.high.y);\n const az = RangeBase.npcScaleFactor(this.low.z, this.high.z);\n if (ax === 0.0 || ay === 0.0 || az === 0.0)\n return false;\n for (const p of point)\n Point3d.create((p.x - this.low.x) * ax, (p.y - this.low.y) * ay, (p.z - this.low.z) * az, p);\n return true;\n }\n /**\n * Return an array with the 8 corners on order wth \"x varies fastest, then y, then z\"\n * * points preallocated in `result` are reused if result.length >= 8.\n * * in reuse case, result.length is trimmed to 8\n */\n public corners(result?: Point3d[]): Point3d[] {\n if (result !== undefined && result.length >= 8) {\n result[0].set(this.low.x, this.low.y, this.low.z);\n result[1].set(this.high.x, this.low.y, this.low.z);\n result[2].set(this.low.x, this.high.y, this.low.z);\n result[3].set(this.high.x, this.high.y, this.low.z);\n result[4].set(this.low.x, this.low.y, this.high.z);\n result[5].set(this.high.x, this.low.y, this.high.z);\n result[6].set(this.low.x, this.high.y, this.high.z);\n result[7].set(this.high.x, this.high.y, this.high.z);\n result.length = 8;\n return result;\n }\n return [\n Point3d.create(this.low.x, this.low.y, this.low.z),\n Point3d.create(this.high.x, this.low.y, this.low.z),\n Point3d.create(this.low.x, this.high.y, this.low.z),\n Point3d.create(this.high.x, this.high.y, this.low.z),\n Point3d.create(this.low.x, this.low.y, this.high.z),\n Point3d.create(this.high.x, this.low.y, this.high.z),\n Point3d.create(this.low.x, this.high.y, this.high.z),\n Point3d.create(this.high.x, this.high.y, this.high.z),\n ];\n }\n /**\n * Return an array with indices of the corners of a face\n * * face 0 has negative x normal\n * * face 1 has positive x normal\n * * face 2 has negative y normal\n * * face 3 has positive y normal\n * * face 4 has negative z normal\n * * face 5 has positive z normal\n * * Any other value returns face 5\n * * faces are CCW as viewed from outside.\n */\n public static faceCornerIndices(index: number): number[] {\n if (index === 0)\n return [0, 4, 6, 2];\n if (index === 1)\n return [1, 3, 7, 5];\n if (index === 2)\n return [0, 1, 5, 4];\n if (index === 3)\n return [3, 2, 6, 7];\n if (index === 4)\n return [0, 2, 3, 1];\n return [4, 5, 7, 6];\n }\n /**\n * Return a rectangle that is the cross section as viewed from above (z direction) and at zFraction\n * @param zFraction plane altitude within the 0..1 z fraction range\n * @param upwardNormal true for CCW as viewed from above\n * @param addClosure true to add closure edge back to the start\n * @returns rectangle points\n */\n public rectangleXY(\n zFraction: number = 0.0, upwardNormal: boolean = true, addClosure: boolean = true,\n ): Point3d[] | undefined {\n if (this.isNull)\n return undefined;\n const points: Point3d[] = [\n this.fractionToPoint(0, 0, zFraction),\n this.fractionToPoint(1, 0, zFraction),\n this.fractionToPoint(1, 1, zFraction),\n this.fractionToPoint(0, 1, zFraction),\n ];\n if (addClosure)\n points.push(points[0].clone());\n\n if (!upwardNormal)\n points.reverse();\n return points;\n }\n /** Return the largest absolute value among any coordinates in the box corners. */\n public maxAbs(): number {\n if (this.isNull)\n return 0.0;\n return Math.max(this.low.maxAbs(), this.high.maxAbs());\n }\n /** Returns true if the x direction size is nearly zero */\n public get isAlmostZeroX(): boolean {\n return Geometry.isSmallMetricDistance(this.xLength());\n }\n /** Returns true if the y direction size is nearly zero */\n public get isAlmostZeroY(): boolean {\n return Geometry.isSmallMetricDistance(this.yLength());\n }\n /** Returns true if the z direction size is nearly zero */\n public get isAlmostZeroZ(): boolean {\n return Geometry.isSmallMetricDistance(this.zLength());\n }\n /** Test if a point given as x,y,z is within the range. */\n public containsXYZ(x: number, y: number, z: number): boolean {\n return x >= this.low.x\n && y >= this.low.y\n && z >= this.low.z\n && x <= this.high.x\n && y <= this.high.y\n && z <= this.high.z;\n }\n /** Test if a point given as x,y is within the range (ignoring z of range). */\n public containsXY(x: number, y: number): boolean {\n return x >= this.low.x\n && y >= this.low.y\n && x <= this.high.x\n && y <= this.high.y;\n }\n /** Test if a point is within the range. */\n public containsPoint(point: Point3d): boolean {\n return this.containsXYZ(point.x, point.y, point.z);\n }\n /** Test if the x,y coordinates of a point are within the range. */\n public containsPointXY(point: Point3d): boolean {\n return point.x >= this.low.x\n && point.y >= this.low.y\n && point.x <= this.high.x\n && point.y <= this.high.y;\n }\n /** Test of other range is within this range */\n public containsRange(other: Range3d): boolean {\n return other.low.x >= this.low.x\n && other.low.y >= this.low.y\n && other.low.z >= this.low.z\n && other.high.x <= this.high.x\n && other.high.y <= this.high.y\n && other.high.z <= this.high.z;\n }\n /**\n * Test if there is any intersection with the other range.\n * @param other the other range.\n * @param margin optional signed distance by which to expand/shrink `other` in all directions.\n */\n public intersectsRange(other: Range3d, margin?: number): boolean {\n if (margin) {\n return !(\n this.low.x > other.high.x + margin\n || this.low.y > other.high.y + margin\n || this.low.z > other.high.z + margin\n || other.low.x > this.high.x + margin\n || other.low.y > this.high.y + margin\n || other.low.z > this.high.z + margin\n );\n }\n return !(\n this.low.x > other.high.x\n || this.low.y > other.high.y\n || this.low.z > other.high.z\n || other.low.x > this.high.x\n || other.low.y > this.high.y\n || other.low.z > this.high.z\n );\n }\n /**\n * Test if there is any intersection with the other range, ignoring z.\n * @param other the other range.\n * @param margin optional signed distance by which to expand/shrink `other` in all xy-directions.\n */\n public intersectsRangeXY(other: Range3d, margin?: number): boolean {\n if (margin) {\n return !(\n this.low.x > other.high.x + margin\n || this.low.y > other.high.y + margin\n || other.low.x > this.high.x + margin\n || other.low.y > this.high.y + margin\n );\n }\n return !(\n this.low.x > other.high.x\n || this.low.y > other.high.y\n || other.low.x > this.high.x\n || other.low.y > this.high.y\n );\n }\n /** Return 0 if the point is within the range, otherwise the distance to the closest face or corner */\n public distanceToPoint(point: XYAndZ): number {\n if (this.isNull)\n return RangeBase._EXTREME_POSITIVE;\n return Math.min(\n Geometry.hypotenuseXYZ(\n RangeBase.coordinateToRangeAbsoluteDistance(point.x, this.low.x, this.high.x),\n RangeBase.coordinateToRangeAbsoluteDistance(point.y, this.low.y, this.high.y),\n RangeBase.coordinateToRangeAbsoluteDistance(point.z, this.low.z, this.high.z),\n ),\n RangeBase._EXTREME_POSITIVE,\n );\n }\n /** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */\n public distanceToRange(other: Range3d): number {\n return Math.min(\n Geometry.hypotenuseXYZ(\n RangeBase.rangeToRangeAbsoluteDistance(this.low.x, this.high.x, other.low.x, other.high.x),\n RangeBase.rangeToRangeAbsoluteDistance(this.low.y, this.high.y, other.low.y, other.high.y),\n RangeBase.rangeToRangeAbsoluteDistance(this.low.z, this.high.z, other.low.z, other.high.z),\n ),\n RangeBase._EXTREME_POSITIVE,\n );\n }\n /** Expand this range to include the given point. */\n public extendXYZ(x: number, y: number, z: number): void {\n if (x < this.low.x)\n this.low.x = x;\n if (x > this.high.x)\n this.high.x = x;\n\n if (y < this.low.y)\n this.low.y = y;\n if (y > this.high.y)\n this.high.y = y;\n\n if (z < this.low.z)\n this.low.z = z;\n if (z > this.high.z)\n this.high.z = z;\n }\n /** Expand this range by a point interpolated between given points. */\n public extendInterpolated(xyz0: Point3d, fraction: number, xyz1: Point3d): void {\n if (fraction < 0.5) {\n this.extendXYZ(\n xyz0.x + fraction * (xyz1.x - xyz0.x),\n xyz0.y + fraction * (xyz1.y - xyz0.y),\n xyz0.z + fraction * (xyz1.z - xyz0.z));\n } else {\n // use reversed formulas for best accuracy at fraction=1.0\n const g = 1.0 - fraction;\n this.extendXYZ(\n xyz1.x + g * (xyz0.x - xyz1.x),\n xyz1.y + g * (xyz0.y - xyz1.y),\n xyz1.z + g * (xyz0.z - xyz1.z));\n }\n }\n /** Expand this range to include the x-coordinate. */\n public extendXOnly(x: number): void {\n if (x < this.low.x)\n this.low.x = x;\n if (x > this.high.x)\n this.high.x = x;\n }\n /** Expand this range to include the y-coordinate. */\n public extendYOnly(y: number): void {\n if (y < this.low.y)\n this.low.y = y;\n if (y > this.high.y)\n this.high.y = y;\n }\n /** Expand this range to include the z-coordinate. */\n public extendZOnly(z: number): void {\n if (z < this.low.z)\n this.low.z = z;\n if (z > this.high.z)\n this.high.z = z;\n }\n /** Expand this range to include the specified coordinate `a`. */\n public extendSingleAxis(a: number, axisIndex: AxisIndex): void {\n if (axisIndex === AxisIndex.X)\n this.extendXOnly(a);\n if (axisIndex === AxisIndex.Y)\n this.extendYOnly(a);\n if (axisIndex === AxisIndex.Z)\n this.extendZOnly(a);\n }\n /** Expand this range by distances a (weighted and possibly signed) in all directions */\n public extendXYZW(x: number, y: number, z: number, w: number): void {\n if (!Geometry.isSmallMetricDistance(w))\n this.extendXYZ(x / w, y / w, z / w);\n }\n /** Expand this range to include an optionally transformed point. */\n public extendPoint(point: Point3d, transform?: Transform): void {\n if (transform) {\n this.extendTransformedXYZ(transform, point.x, point.y, point.z);\n } else {\n this.extendXYZ(point.x, point.y, point.z);\n }\n }\n /** Expand this range to include a transformed point. */\n public extendTransformedPoint(transform: Transform, point: Point3d): void {\n this.extendTransformedXYZ(transform, point.x, point.y, point.z);\n }\n /** Expand this range to include a range. */\n public extendRange(other: LowAndHighXYZ): void {\n if (!Range3d.isNull(other)) {\n this.extendXYZ(other.low.x, other.low.y, other.low.z);\n this.extendXYZ(other.high.x, other.high.y, other.high.z);\n }\n }\n /**\n * In each direction look at the difference between this range limit and that of interiorRange.\n * * If this range is larger, expand it by extrapolationFactor.\n */\n public extendWhenLarger(other: LowAndHighXYZ, extrapolationFactor: number): void {\n if (!Range3d.isNull(other) && !Range3d.isNull(this)) {\n this.high.x += RangeBase.multiplyIfPositive(this.high.x - other.high.x, extrapolationFactor);\n this.high.y += RangeBase.multiplyIfPositive(this.high.y - other.high.y, extrapolationFactor);\n this.high.z += RangeBase.multiplyIfPositive(this.high.z - other.high.z, extrapolationFactor);\n this.low.x -= RangeBase.multiplyIfPositive(other.low.x - this.low.x, extrapolationFactor);\n this.low.y -= RangeBase.multiplyIfPositive(other.low.y - this.low.y, extrapolationFactor);\n this.low.z -= RangeBase.multiplyIfPositive(other.low.z - this.low.z, extrapolationFactor);\n }\n }\n /** Return the intersection of ranges. */\n public intersect(other: Range3d, result?: Range3d): Range3d {\n if (!this.intersectsRange(other))\n return Range3d.createNull(result);\n return Range3d.createXYZXYZOrCorrectToNull(\n Math.max(this.low.x, other.low.x), Math.max(this.low.y, other.low.y), Math.max(this.low.z, other.low.z),\n Math.min(this.high.x, other.high.x), Math.min(this.high.y, other.high.y), Math.min(this.high.z, other.high.z),\n result,\n );\n }\n /** Return the union of ranges. */\n public union(other: Range3d, result?: Range3d): Range3d {\n if (this.isNull)\n return other.clone(result);\n if (other.isNull)\n return this.clone(result as this);\n // we trust null ranges have EXTREME values, so a null in either input leads to expected results.\n return Range3d.createXYZXYZOrCorrectToNull(\n Math.min(this.low.x, other.low.x), Math.min(this.low.y, other.low.y), Math.min(this.low.z, other.low.z),\n Math.max(this.high.x, other.high.x), Math.max(this.high.y, other.high.y), Math.max(this.high.z, other.high.z),\n result,\n );\n }\n /**\n * Move low and high points by scaleFactor around the center point.\n * @param scaleFactor scale factor applied to low, high distance from center.\n */\n public scaleAboutCenterInPlace(scaleFactor: number) {\n if (!this.isNull) {\n scaleFactor = Math.abs(scaleFactor);\n // do the scalar stuff to avoid making a temporary object ....\n const xMid = 0.5 * (this.low.x + this.high.x);\n const yMid = 0.5 * (this.low.y + this.high.y);\n const zMid = 0.5 * (this.low.z + this.high.z);\n this.high.x = Geometry.interpolate(xMid, scaleFactor, this.high.x);\n this.high.y = Geometry.interpolate(yMid, scaleFactor, this.high.y);\n this.high.z = Geometry.interpolate(zMid, scaleFactor, this.high.z);\n this.low.x = Geometry.interpolate(xMid, scaleFactor, this.low.x);\n this.low.y = Geometry.interpolate(yMid, scaleFactor, this.low.y);\n this.low.z = Geometry.interpolate(zMid, scaleFactor, this.low.z);\n }\n }\n /**\n * Move all limits by a fixed amount.\n * * positive delta expands the range size\n * * negative delta reduces the range size\n * * if any dimension reduces below zero size, the whole range becomes null\n * @param delta shift to apply.\n */\n public expandInPlace(delta: number): void {\n this.setDirect(\n this.low.x - delta, this.low.y - delta, this.low.z - delta,\n this.high.x + delta, this.high.y + delta, this.high.z + delta,\n true,\n );\n }\n /** Create a local to world transform from this range. */\n public getLocalToWorldTransform(result?: Transform): Transform {\n return Transform.createOriginAndMatrix(\n Point3d.create(this.low.x, this.low.y, this.low.z),\n Matrix3d.createRowValues(\n this.high.x - this.low.x, 0, 0,\n 0, this.high.y - this.low.y, 0,\n 0, 0, this.high.z - this.low.z,\n ),\n result,\n );\n }\n /**\n * Creates an NPC to world transformation to go from 000...111 to the globally aligned cube with diagonally\n * opposite corners that are the\n * min and max of this range. The diagonal component for any degenerate direction is 1.\n */\n public getNpcToWorldRangeTransform(result?: Transform): Transform {\n const transform = this.getLocalToWorldTransform(result);\n const matrix = transform.matrix;\n if (matrix.coffs[0] === 0)\n matrix.coffs[0] = 1;\n if (matrix.coffs[4] === 0)\n matrix.coffs[4] = 1;\n if (matrix.coffs[8] === 0)\n matrix.coffs[8] = 1;\n return transform;\n }\n /**\n * Ensure that the length of each dimension of this Range3d is at least a minimum size. If not, expand\n * to minimum about the center.\n * @param min The minimum length for each dimension.\n */\n public ensureMinLengths(min: number = .001): void {\n let size = (min - this.xLength()) / 2.0;\n if (size > 0) {\n this.low.x -= size;\n this.high.x += size;\n }\n size = (min - this.yLength()) / 2.0;\n if (size > 0) {\n this.low.y -= size;\n this.high.y += size;\n }\n size = (min - this.zLength()) / 2.0;\n if (size > 0) {\n this.low.z -= size;\n this.high.z += size;\n }\n }\n}\n\n/**\n * Range on a 1d axis\n * * `low` and `high` members are always non-null objects\n * * having `low > high` indicates an empty range.\n * * the range contains x values for which `low <= x <= high`\n * @public\n */\nexport class Range1d extends RangeBase {\n /** Low point coordinates. DO NOT MODIFY FROM OUTSIDE THIS CLASS */\n public low: number;\n /** High point coordinates. DO NOT MODIFY FROM OUTSIDE THIS CLASS */\n public high: number;\n /** Reset the low and high to null range state. */\n public setNull() {\n this.low = RangeBase._EXTREME_POSITIVE;\n this.high = RangeBase._EXTREME_NEGATIVE;\n }\n // internal use only -- directly set all coordinates, test only if directed.\n private setDirect(low: number, high: number, correctToNull: boolean = false) {\n this.low = low;\n this.high = high;\n if (correctToNull && low > high)\n this.setNull();\n }\n // explicit ctor - no enforcement of value relationships\n private constructor(low: number = RangeBase._EXTREME_POSITIVE, high: number = RangeBase._EXTREME_NEGATIVE) {\n super();\n this.low = low; this.high = high; // duplicates set_direct, but compiler is not convinced they are set.\n this.setDirect(low, high);\n }\n /** Returns true if this and other have equal low and high parts, or both are null ranges. */\n public isAlmostEqual(other: Readonly<Range1d>): boolean {\n return (Geometry.isSameCoordinate(this.low, other.low) && Geometry.isSameCoordinate(this.high, other.high))\n || (this.isNull && other.isNull);\n }\n /** Copy contents from other Range1d. */\n public setFrom(other: Range1d) {\n this.low = other.low;\n this.high = other.high;\n }\n /**\n * Convert from a JSON object of one of these forms:\n * * Any array of numbers: `[value,value, value]`\n * * An object with low and high as properties: `{low:lowValue, high: highValue}`\n */\n public setFromJSON(json: Range1dProps): void {\n this.setNull();\n if (Array.isArray(json)) {\n let value;\n for (value of json) {\n if (Number.isFinite(value))\n this.extendX(value);\n }\n } else if (\n json.low !== undefined && Number.isFinite(json.low) && json.high !== undefined && Number.isFinite(json.high)\n ) {\n this.extendX(json.low);\n this.extendX(json.high);\n }\n }\n /** Use `setFromJSON` to parse `json` into a new Range1d instance. */\n public static fromJSON<T extends Range1d>(json?: Range1dProps): T {\n const result = new this() as T;\n if (json)\n result.setFromJSON(json);\n return result;\n }\n /**\n * Convert to a JSON object of form\n * ```\n * [lowValue,highValue]\n * ```\n */\n public toJSON(): Range1dProps {\n if (this.isNull)\n return new Array<number>();\n else\n return [this.low, this.high];\n }\n /**\n * Return a new Range1d with contents of this.\n * @param result optional result.\n */\n public clone(result?: this): this {\n result = result ? result : new (this.constructor as any)() as this;\n result.setDirect(this.low, this.high);\n return result;\n }\n /**\n * Return a new Range1d with contents of this.\n * @param result optional result.\n */\n public static createFrom<T extends Range1d>(other: T, result?: T) {\n result = result ? result : new this() as T;\n result.setDirect(other.low, other.high);\n return result;\n }\n /**\n * Create a range with no content.\n * @param result optional result.\n */\n public static createNull<T extends Range1d>(result?: T): T {\n result = result ? result : new this() as T;\n result.setNull();\n return result;\n }\n /**\n * Create a range with `delta` added to low and high\n * * If `this` is a null range, return a null range.\n */\n public cloneTranslated(delta: number, result?: Range1d): Range1d {\n result = result ? result : this.clone();\n if (!result.isNull) {\n result.low += delta;\n result.high += delta;\n }\n return result;\n }\n /**\n * Set this range to be a single value.\n * @param x value to use as both low and high.\n */\n public setX(x: number) {\n this.low = this.high = x;\n }\n /** Create a single point box */\n public static createX<T extends Range1d>(x: number, result?: T): T {\n result = result ? result : new this() as T;\n result.setDirect(x, x);\n return result;\n }\n /**\n * Set this range to (min(x0,x1), max(x0,x1))\n * @param x0 first value\n * @param x1 second value\n */\n public setXXUnordered(x0: number, x1: number) {\n if (x0 <= x1) {\n this.low = x0; this.high = x1;\n } else {\n this.low = x1; this.high = x0;\n }\n }\n /** Check if low is 0 and high is 1 */\n public get isExact01(): boolean {\n return this.low === 0.0 && this.high === 1.0;\n }\n /**\n * Create a box from two values. Values are reversed if needed\n * @param xA first value\n * @param xB second value\n */\n public static createXX<T extends Range1d>(xA: number, xB: number, result?: T): T {\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB),\n Math.max(xA, xB),\n );\n return result;\n }\n /**\n * Create a box from two values, but null range if the values are reversed\n * @param xA first value\n * @param xB second value\n */\n public static createXXOrCorrectToNull<T extends Range1d>(xA: number, xB: number, result?: T): T {\n if (xB < xA)\n return Range1d.createNull(result);\n\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB),\n Math.max(xA, xB),\n );\n return result;\n }\n /**\n * Create a range containing all the values in an array.\n * @param values array of points to be contained in the range.\n * @param result optional result.\n */\n public static createArray<T extends Range1d>(values: Float64Array | number[], result?: T): T {\n result = result ? result : new this() as T;\n let x;\n for (x of values)\n result.extendX(x);\n return result;\n }\n /** Extend to include an array of values */\n public extendArray(values: Float64Array | number[]) {\n let x;\n for (x of values)\n this.extendX(x);\n }\n /**\n * Extend to include `values` at indices `beginIndex <= i < endIndex]`\n * @param values array of values\n * @param beginIndex first index to include\n * @param numValue number of values to access\n */\n public extendArraySubset(values: Float64Array | number[], beginIndex: number, numValue: number) {\n const endIndex = beginIndex + numValue;\n for (let i = beginIndex; i < endIndex; i++)\n this.extendX(values[i]);\n }\n /** Test if the box has high<low Note that a range around a single point is NOT null. */\n public get isNull(): boolean {\n return this.high < this.low;\n }\n /** Test of the range contains a single point. */\n public get isSinglePoint(): boolean {\n return this.high === this.low;\n }\n /** Return the length of the range in the x direction */\n public length(): number {\n const a = this.high - this.low;\n return a > 0.0 ? a : 0.0;\n }\n /** Return a point given by fractional positions within the range. This is done with no check for isNull !!! */\n public fractionToPoint(fraction: number): number {\n return Geometry.interpolate(this.low, fraction, this.high);\n }\n /** Return the largest absolute value among the box limits. */\n public maxAbs(): number {\n if (this.isNull)\n return 0.0;\n return Math.max(Math.abs(this.low), Math.abs(this.high));\n }\n /** Test if the x direction size is nearly zero */\n public get isAlmostZeroLength(): boolean {\n return Geometry.isSmallMetricDistance(this.length());\n }\n /** Test if a number is within the range. */\n public containsX(x: number): boolean {\n return x >= this.low && x <= this.high;\n }\n /**\n * Test if a number is in within the open range.\n * * This method differs from `containsX` by returning false if x equals either range extreme.\n */\n public containsXOpen(x: number): boolean {\n return x > this.low && x < this.high;\n }\n\n /** Test of other range is within this range */\n public containsRange(other: Range1d): boolean {\n return other.low >= this.low\n && other.high <= this.high;\n }\n /** Test if there is any intersection with other range */\n public intersectsRange(other: Range1d): boolean {\n return !(this.low > other.high || other.low > this.high);\n }\n /**\n * Intersect this range with a range defined by parameters x0 and x1\n * * For x1 > x0, that range is null, and the intersection is null.\n * * For x0 <= x1, the input is a non-null range.\n * * The intersection range replaces the contents of this.\n */\n public intersectRangeXXInPlace(x0: number, x1: number) {\n if (x1 < x0 || x1 < this.low || x0 > this.high) {\n this.setNull();\n } else {\n if (x1 < this.high)\n this.high = x1;\n if (x0 > this.low)\n this.low = x0;\n }\n }\n /** Returns 0 if the ranges have any overlap, otherwise the shortest absolute distance from one to the other. */\n public distanceToRange(other: Range1d): number {\n return RangeBase.rangeToRangeAbsoluteDistance(this.low, this.high, other.low, other.high);\n }\n /** Return 0 if the point is within the range, otherwise the (unsigned) distance to the closest face or corner */\n public distanceToX(x: number): number {\n if (this.isNull)\n return RangeBase._EXTREME_POSITIVE;\n return RangeBase.coordinateToRangeAbsoluteDistance(x, this.low, this.high);\n }\n /** Expand this range by a single coordinate */\n public extendX(x: number): void {\n if (x < this.low) this.low = x;\n if (x > this.high) this.high = x;\n }\n /** Expand this range to include a range. */\n public extendRange(other: Range1d): void {\n if (!other.isNull) {\n this.extendX(other.low);\n this.extendX(other.high);\n }\n }\n /** Extend only the low limit to x. Return true if the low limit is changed. */\n public extendLow(x: number): boolean {\n if (this.isNull || x < this.low) {\n this.low = x;\n return true;\n }\n return false;\n }\n /** Extend only the high limit to x. Return true if the high limit is changed. */\n public extendHigh(x: number): boolean {\n if (this.isNull || x > this.high) {\n this.high = x;\n return true;\n }\n return false;\n }\n /** Return the intersection of ranges. */\n public intersect(other: Range1d, result?: Range1d): Range1d {\n if (!this.intersectsRange(other))\n return Range1d.createNull(result);\n\n return Range1d.createXXOrCorrectToNull(\n Math.max(this.low, other.low),\n Math.min(this.high, other.high),\n result,\n );\n }\n /** Return the union of ranges. */\n public union(other: Range1d, result?: Range1d): Range1d {\n // we trust null ranges have EXTREME values, so a null in either input leads to expected results.\n return Range1d.createXX\n (\n Math.min(this.low, other.low),\n Math.max(this.high, other.high),\n result);\n }\n /**\n * Move low and high points by scaleFactor around the center point.\n * @param scaleFactor scale factor applied to low, high distance from center.\n */\n public scaleAboutCenterInPlace(scaleFactor: number) {\n if (!this.isNull) {\n scaleFactor = Math.abs(scaleFactor);\n // do the scalar stuff to avoid making a temporary object ....\n const xMid = 0.5 * (this.low + this.high);\n this.high = Geometry.interpolate(xMid, scaleFactor, this.high);\n this.low = Geometry.interpolate(xMid, scaleFactor, this.low);\n }\n }\n /**\n * Move all limits by a fixed amount.\n * * positive delta expands the range size\n * * negative delta reduces the range size\n * * if any dimension reduces below zero size, the whole range becomes null\n * @param delta shift to apply.\n */\n public expandInPlace(delta: number): void {\n this.setDirect(\n this.low - delta,\n this.high + delta, true);\n }\n /**\n * Clip this range to a linear half space condition\n * * if `limitA > limitB` the limit space is empty\n * * make this range null\n * * return false;\n * * otherwise (i.e `limitA <= limitB`)\n * * solve `a + u * f = limitA' and `a + u * f = limitA`\n * * if unable to solve (i.e. u near zero), `a` alone determines whether to (a) leave this interval unchanged or\n * (b) reduce to nothing.\n * * the `f` values are an interval in the space of this `Range1d`\n * * restrict the range to that interval (i.e intersect existing (low,high) with the fraction interval.\n * * return true if the range is non-null after the clip.\n * @param a constant of linear map\n * @param u coefficient of linear map\n * @param limitA crossing value, assumed in range relation with limitB\n * @param limitB crossing value, assumed in range relation with limitB\n * @param limitIsHigh true if the limit is an upper limit on mapped values.\n */\n public clipLinearMapToInterval(a: number, u: number, limitA: number, limitB: number): boolean {\n // f = (limit - a) / u\n if (limitB < limitA || this.high < this.low)\n return false;\n const fractionA = Geometry.conditionalDivideFraction(limitA - a, u);\n const fractionB = Geometry.conditionalDivideFraction(limitB - a, u);\n // single point case\n if (fractionA === undefined || fractionB === undefined) {\n if (limitA <= a && a <= limitB)\n return true;\n this.setNull();\n return false;\n }\n if (fractionA < fractionB) {\n if (fractionA > this.low)\n this.low = fractionA;\n if (fractionB < this.high)\n this.high = fractionB;\n } else {\n if (fractionA < this.high)\n this.high = fractionA;\n if (fractionB > this.low)\n this.low = fractionB;\n }\n if (this.high < this.low) {\n this.setNull();\n return false;\n }\n return true;\n }\n}\n\n/**\n * Range box in xy plane\n * @public\n */\nexport class Range2d extends RangeBase implements LowAndHighXY {\n // low and high are always non-null objects\n // any direction of low.q > high.q is considered a null range.\n /** Low point coordinates. DO NOT MODIFY FROM OUTSIDE THIS CLASS */\n public low: Point2d;\n /** High point coordinates. DO NOT MODIFY FROM OUTSIDE THIS CLASS */\n public high: Point2d;\n /** Reset the low and high to null range state. */\n public setNull() {\n this.low.x = RangeBase._EXTREME_POSITIVE;\n this.low.y = RangeBase._EXTREME_POSITIVE;\n this.high.x = RangeBase._EXTREME_NEGATIVE;\n this.high.y = RangeBase._EXTREME_NEGATIVE;\n }\n /** Flatten the low and high coordinates of any json object with low.x .. high.y into an array of 4 doubles */\n public static toFloat64Array(val: LowAndHighXY): Float64Array {\n return Float64Array.of(val.low.x, val.low.y, val.high.x, val.high.y);\n }\n /** Flatten the low and high coordinates of this instance into an array of 4 doubles */\n public toFloat64Array(): Float64Array {\n return Range2d.toFloat64Array(this);\n }\n /**\n * Construct a Range2d from an array of double-precision values\n * @param f64 the array, which should contain exactly 4 values in this order: lowX, lowY, highX, highY\n * @return a new Range2d object\n */\n public static fromFloat64Array<T extends Range2d>(f64: Float64Array): T {\n if (f64.length !== 4)\n throw new Error(\"invalid array\");\n return new this(f64[0], f64[1], f64[2], f64[3]) as T;\n }\n /**\n * Construct a Range2d from an un-typed array. This mostly useful when interpreting ECSQL query results of\n * the 'blob' type, where you know that that result is a Range3d.\n * @param buffer untyped array\n * @return a new Range2d object\n */\n public static fromArrayBuffer<T extends Range2d>(buffer: ArrayBuffer): T {\n return this.fromFloat64Array(new Float64Array(buffer));\n }\n // explicit constructor - no enforcement of value relationships\n public constructor(\n lowX = Range2d._EXTREME_POSITIVE, lowY = Range2d._EXTREME_POSITIVE,\n highX = Range2d._EXTREME_NEGATIVE, highY = Range2d._EXTREME_NEGATIVE,\n ) {\n super();\n this.low = Point2d.create(lowX, lowY);\n this.high = Point2d.create(highX, highY);\n }\n /** Returns true if this and other have equal low and high parts, or both are null ranges. */\n public isAlmostEqual(other: Range2d): boolean {\n return (this.low.isAlmostEqual(other.low) && this.high.isAlmostEqual(other.high))\n || (this.isNull && other.isNull);\n }\n /** Copy all content from any `other` that has low and high xy data. */\n public setFrom(other: LowAndHighXY) {\n this.low.set(other.low.x, other.low.y);\n this.high.set(other.high.x, other.high.y);\n }\n /** Create a new Range2d from any `other` that has low and high xy data. */\n public static createFrom<T extends Range2d>(other: LowAndHighXY, result?: T): T {\n if (result) { result.setFrom(other); return result; }\n return this.createXYXYOrCorrectToNull(other.low.x, other.low.y, other.high.x, other.high.y, result) as T;\n }\n /** Treat any array of numbers as numbers to be inserted !!! */\n public setFromJSON(json: Range2dProps): void {\n this.setNull();\n if (Array.isArray(json)) {\n const point = Point2d.create();\n for (const value of json) {\n point.setFromJSON(value);\n this.extendPoint(point);\n }\n return;\n }\n const low = Point2d.fromJSON(json.low);\n const high = Point2d.fromJSON(json.high);\n if (!RangeBase.isExtremePoint2d(low) && !RangeBase.isExtremePoint2d(high)) {\n this.extendPoint(low);\n this.extendPoint(high);\n }\n }\n /** Freeze this instance (and its members) so it is read-only */\n public freeze(): Readonly<this> {\n this.low.freeze();\n this.high.freeze();\n return Object.freeze(this);\n }\n /** Return json array with two points as produced by `Point2d.toJSON` */\n public toJSON(): Range2dProps {\n return this.isNull ? [] : [this.low.toJSON(), this.high.toJSON()];\n }\n /** Use `setFromJSON` to parse `json` into a new Range2d instance. */\n public static fromJSON<T extends Range2d>(json?: Range2dProps): T {\n const result = new this() as T;\n if (json)\n result.setFromJSON(json);\n return result;\n }\n // internal use only -- directly set all coordinates, without tests.\n private setDirect(xA: number, yA: number, xB: number, yB: number, correctToNull: boolean) {\n this.low.x = xA;\n this.low.y = yA;\n this.high.x = xB;\n this.high.y = yB;\n if (correctToNull) {\n if (this.low.x > this.high.x || this.low.y > this.high.y)\n this.setNull();\n }\n }\n /** Return a clone of this range (or copy to optional result) */\n public clone(result?: this): this {\n result = result ? result : new (this.constructor as any)() as this;\n result.setDirect(this.low.x, this.low.y, this.high.x, this.high.y, false);\n return result;\n }\n\n /**\n * Return a copy, translated by adding `shift` components in all directions.\n * @note The translation of a null range is also a null range.\n */\n public cloneTranslated(shift: XAndY, result?: this): this {\n result = result ? result : new (this.constructor as any)() as this;\n if (!this.isNull)\n result.setDirect(\n this.low.x + shift.x, this.low.y + shift.y,\n this.high.x + shift.x, this.high.y + shift.y,\n false,\n );\n return result;\n }\n\n /** Create a range with no content. */\n public static createNull<T extends Range2d>(result?: T): T {\n result = result ? result : new this() as T;\n result.setNull();\n return result;\n }\n /** Set low and hight to a single xy value. */\n public setXY(x: number, y: number) {\n this.low.x = this.high.x = x;\n this.low.y = this.high.y = y;\n }\n /** Create a single point box */\n public static createXY<T extends Range2d>(x: number, y: number, result?: T): T {\n result = result ? result : new this() as T;\n result.setDirect(x, y, x, y, false);\n return result;\n }\n /** Create a box with 2 pairs of xy candidates. Theses are compared and shuffled as needed for the box. */\n public static createXYXY<T extends Range2d>(xA: number, yA: number, xB: number, yB: number, result?: T): T {\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB), Math.min(yA, yB),\n Math.max(xA, xB), Math.max(yA, yB), false);\n return result;\n }\n /** Create a box with 3 pairs of xy candidates. Theses are compared and shuffled as needed for the box. */\n public static createXYXYXY<T extends Range2d>(\n xA: number, yA: number, xB: number, yB: number, xC: number, yC: number, result?: T,\n ): T {\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB, xC), Math.min(yA, yB, yC),\n Math.max(xA, xB, xC), Math.max(yA, yB, yC),\n false,\n );\n return result;\n }\n /** Create a box with 2 pairs of xy candidates. If any direction has order flip, create null. */\n public static createXYXYOrCorrectToNull<T extends Range2d>(\n xA: number, yA: number, xB: number, yB: number, result?: T,\n ): T {\n if (xA > xB || yA > yB)\n return this.createNull(result);\n result = result ? result : new this() as T;\n result.setDirect(\n Math.min(xA, xB), Math.min(yA, yB),\n Math.max(xA, xB), Math.max(yA, yB),\n true,\n );\n return result;\n }\n /** Create a range around an array of points. */\n public static createArray<T extends Range2d>(points: Point2d[], result?: T): T {\n result = result ? result : new this() as T;\n let point;\n for (point of points)\n result.extendPoint(point);\n return result;\n }\n /** Test if the box has high<low for any of x,y, condition. Note that a range around a single point is NOT null. */\n public get isNull(): boolean {\n return this.high.x < this.low.x\n || this.high.y < this.low.y;\n }\n /**\n * Test if the box has high strictly less than low for any of x,y, condition. Note that a range around a\n * single point is NOT null.\n */\n public static isNull(range: LowAndHighXY): boolean {\n return range.high.x < range.low.x\n || range.high.y < range.low.y;\n }\n /** Test of the range contains a single point. */\n public get isSinglePoint(): boolean {\n return this.high.x === this.low.x\n && this.high.y === this.low.y;\n }\n /** Return the midpoint of the diagonal. No test for null range. */\n public get center(): Point2d {\n return this.low.interpolate(.5, this.high);\n }\n /** Return the low x coordinate */\n public get xLow(): number {\n return this.low.x;\n }\n /** Return the low y coordinate */\n public get yLow(): number {\n return this.low.y;\n }\n /** Return the high x coordinate */\n public get xHigh(): number {\n return this.high.x;\n }\n /** Return the high y coordinate */\n public get yHigh(): number {\n return this.high.y;\n }\n /** Length of the box in the x direction */\n public xLength(): number {\n const a = this.high.x - this.low.x;\n return a > 0.0 ? a : 0.0;\n }\n /** Length of the box in the y direction */\n public yLength(): number {\n const a = this.high.y - this.low.y;\n return a > 0.0 ? a : 0.0;\n }\n /**\n * Return the diagonal vector. There is no check for isNull -- if the range isNull(), the vector will have very\n * large negative coordinates.\n */\n public diagonal(result?: Vector2d): Vector2d {\n return this.low.vectorTo(this.high, result);\n }\n /**\n * Return the point at the specified fraction along the diagonal vector. There is no check for isNull -- if the\n * range isNull(), the vector will have very large negative coordinates.\n */\n public diagonalFractionToPoint(fraction: number, result?: Point2d): Point2d {\n return this.low.interpolate(fraction, this.high, result);\n }\n /** Return a point given by fractional positions on the XY axes. This is done with no check for isNull !!! */\n public fractionToPoint(fractionX: number, fractionY: number, result?: Point2d): Point2d {\n return this.low.interpolateXY(fractionX, fractionY, this.high, result);\n }\n /**\n * Return an array with the 4 corners.\n * * if asLoop is false, 4 corners are \"x varies fastest, then y\"\n * * if asLoop is true, 5 corners are in CCW order WITH CLOSURE\n */\n public corners3d(asLoop: boolean = false, z: number = 0): Point3d[] {\n if (asLoop)\n return [\n Point3d.create(this.low.x, this.low.y, z),\n Point3d.create(this.high.x, this.low.y, z),\n Point3d.create(this.high.x, this.high.y, z),\n Point3d.create(this.low.x, this.high.y, z),\n Point3d.create(this.low.x, this.low.y, z),\n ];\n return [\n Point3d.create(this.low.x, this.low.y, z),\n Point3d.create(this.high.x, this.low.y, z),\n Point3d.create(this.low.x, this.high.y, z),\n Point3d.create(this.high.x, this.high.y, z),\n ];\n }\n /** Largest absolute value among any coordinates in the box corners. */\n public maxAbs(): number {\n if (this.isNull)\n return 0.0;\n return Math.max(this.low.maxAbs(), this.high.maxAbs());\n }\n /** Test if the x direction size is nearly zero */\n public get isAlmostZeroX(): boolean {\n return Geometry.isSmallMetricDistance(this.xLength());\n }\n /** Test if the y direction size is nearly zero */\n public get isAlmostZeroY(): boolean {\n return Geometry.isSmallMetricDistance(this.yLength());\n }\n /** Test if a point given as x,y is within the range */\n public containsXY(x: number, y: number): boolean {\n return x >= this.low.x\n && y >= this.low.y\n && x <= this.high.x\n && y <= this.high.y;\n }\n /** Test if a point is within the range. */\n public containsPoint(point: XAndY): boolean {\n return this.containsXY(point.x, point.y);\n }\n /** Test of other range is within this range */\n public containsRange(other: LowAndHighXY): boolean {\n return other.low.x >= this.low.x\n && other.low.y >= this.low.y\n && other.high.x <= this.high.x\n && other.high.y <= this.high.y;\n }\n /** Test if there is any intersection with other range */\n public intersectsRange(other: LowAndHighXY): boolean {\n return !(\n this.low.x > other.high.x\n || this.low.y > other.high.y\n || other.low.x > this.high.x\n || other.low.y > this.high.y\n );\n }\n /** Return 0 if the point is within the range, otherwise the distance to the closest face or corner */\n public distanceToPoint(point: XAndY): number {\n if (this.isNull)\n return Range2d._EXTREME_POSITIVE;\n return Math.min(\n Geometry.hypotenuseXY(\n RangeBase.coordinateToRangeAbsoluteDistance(point.x, this.low.x, this.high.x),\n RangeBase.coordinateToRangeAbsoluteDistance(point.y, this.low.y, this.high.y),\n ),\n Range2d._EXTREME_POSITIVE,\n );\n }\n /** Return 0 if the point is within the range, otherwise the distance to the closest face or corner */\n public distanceToRange(other: LowAndHighXY): number {\n return Math.min(\n Geometry.hypotenuseXY(\n RangeBase.rangeToRangeAbsoluteDistance(this.low.x, this.high.x, other.low.x, other.high.x),\n RangeBase.rangeToRangeAbsoluteDistance(this.low.y, this.high.y, other.low.y, other.high.y),\n ),\n Range2d._EXTREME_POSITIVE,\n );\n }\n /** Expand this range to include a point given by x,y */\n public extendXY(x: number, y: number): void {\n if (x < this.low.x)\n this.low.x = x;\n if (x > this.high.x)\n this.high.x = x;\n if (y < this.low.y)\n this.low.y = y;\n if (y > this.high.y)\n this.high.y = y;\n }\n /** Expand this range to include a point given by x,y */\n public extendTransformedXY(transform: Transform, x: number, y: number): void {\n const x1 = transform.multiplyComponentXYZ(0, x, y, 0);\n const y1 = transform.multiplyComponentXYZ(1, x, y, 0);\n this.extendXY(x1, y1);\n }\n /** Expand this range to include a point. */\n public extendPoint(point: XAndY): void {\n this.extendXY(point.x, point.y);\n }\n /** Expand this range to include a range. */\n public extendRange(other: LowAndHighXY): void {\n if (!Range2d.isNull(other)) {\n this.extendXY(other.low.x, other.low.y);\n this.extendXY(other.high.x, other.high.y);\n }\n }\n /** Return the intersection of ranges. */\n public intersect(other: LowAndHighXY, result?: Range2d): Range2d {\n if (!this.intersectsRange(other))\n return Range2d.createNull(result);\n return Range2d.createXYXY(\n Math.max(this.low.x, other.low.x), Math.max(this.low.y, other.low.y),\n Math.min(this.high.x, other.high.x), Math.min(this.high.y, other.high.y),\n result,\n );\n }\n /** Return the union of ranges. */\n public union(other: LowAndHighXY, result?: Range2d): Range2d {\n if (this.isNull)\n return Range2d.createFrom(other, result);\n if (Range2d.isNull(other))\n return this.clone(result as this);\n // we trust null ranges have EXTREME values, so a null in either input leads to expected results.\n return Range2d.createXYXY(\n Math.min(this.low.x, other.low.x), Math.min(this.low.y, other.low.y),\n Math.max(this.high.x, other.high.x), Math.max(this.high.y, other.high.y),\n result,\n );\n }\n /**\n * Move low and high points by scaleFactor around the center point.\n * @param scaleFactor scale factor applied to low, high distance from center.\n */\n public scaleAboutCenterInPlace(scaleFactor: number) {\n if (!this.isNull) {\n scaleFactor = Math.abs(scaleFactor);\n // do the scalar stuff to avoid making a temporary object ....\n const xMid = 0.5 * (this.low.x + this.high.x);\n const yMid = 0.5 * (this.low.y + this.high.y);\n this.high.x = Geometry.interpolate(xMid, scaleFactor, this.high.x);\n this.high.y = Geometry.interpolate(yMid, scaleFactor, this.high.y);\n this.low.x = Geometry.interpolate(xMid, scaleFactor, this.low.x);\n this.low.y = Geometry.interpolate(yMid, scaleFactor, this.low.y);\n }\n }\n /**\n * Move all limits by a fixed amount.\n * * positive delta expands the range size\n * * negative delta reduces the range size\n * * if any dimension reduces below zero size, the whole range becomes null\n * @param delta shift to apply.\n */\n public expandInPlace(delta: number): void {\n this.setDirect(\n this.low.x - delta, this.low.y - delta,\n this.high.x + delta, this.high.y + delta,\n true,\n );\n }\n /**\n * Return fractional coordinates of point within the range.\n * * returns undefined if the range is null.\n * * returns undefined if any direction (x,y) has zero length\n */\n public worldToLocal(point: Point2d, result?: Point2d): Point2d | undefined {\n const ax = RangeBase.npcScaleFactor(this.low.x, this.high.x);\n const ay = RangeBase.npcScaleFactor(this.low.y, this.high.y);\n if (ax === 0.0 || ay === 0.0)\n return undefined;\n return Point2d.create((point.x - this.low.x) * ax, (point.y - this.low.y) * ay, result);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Range.js","sourceRoot":"","sources":["../../../src/geometry3d/Range.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,0CAAmE;AAGnE,yCAAsC;AACtC,uDAAsD;AACtD,uDAAsD;AACtD,qDAAqF;AACrF,2CAAwC;AAGxC,gDAAgD;AAChD,yDAAyD;AACzD;;;GAGG;AACH,MAAsB,SAAS;IAC7B,+EAA+E;IACrE,MAAM,CAAU,iBAAiB,GAAW,OAAO,CAAC;IAC9D,+EAA+E;IACrE,MAAM,CAAU,iBAAiB,GAAW,CAAC,OAAO,CAAC;IAC/D,kFAAkF;IACxE,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,IAAY;QACvD,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,qFAAqF;IAC9E,MAAM,CAAC,cAAc,CAAC,CAAS;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,iBAAiB,CAAC;IACpD,CAAC;IACD,mGAAmG;IAC5F,MAAM,CAAC,gBAAgB,CAAC,GAAY;QACzC,OAAO,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/G,CAAC;IACD,iGAAiG;IAC1F,MAAM,CAAC,gBAAgB,CAAC,EAAW;QACxC,OAAO,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD;;;;;;;;OAQG;IACI,MAAM,CAAC,4BAA4B,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa;QACjG,IAAI,KAAK,GAAG,IAAI;YACd,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI;YACd,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI;YACd,OAAO,IAAI,GAAG,KAAK,CAAC;QACtB,IAAI,KAAK,IAAI,KAAK;YAChB,OAAO,GAAG,CAAC;QACb,IAAI,IAAI,IAAI,KAAK;YACf,OAAO,GAAG,CAAC;QACb,OAAO,IAAI,GAAG,KAAK,CAAC;IACtB,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,iCAAiC,CAAC,CAAS,EAAE,GAAW,EAAE,IAAY;QAClF,IAAI,IAAI,GAAG,GAAG;YACZ,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG;YACT,OAAO,GAAG,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI;YACV,OAAO,CAAC,GAAG,IAAI,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,CAAS,EAAE,MAAc,EAAE,eAAuB,GAAG;QACpF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3C,CAAC;;AAjEH,8BAkEC;AAED;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,SAAS;IACpC,2CAA2C;IAC3C,8DAA8D;IAC9D,+GAA+G;IAC/G,4BAA4B;IACrB,GAAG,CAAU;IACpB,6BAA6B;IACtB,IAAI,CAAU;IACrB,+EAA+E;IACxE,OAAO;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IAED,gEAAgE;IACzD,MAAM;QACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,8GAA8G;IACvG,MAAM,CAAC,cAAc,CAAC,GAAkB;QAC7C,OAAO,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,8EAA8E;IACvE,cAAc;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,gBAAgB,CAAoB,GAAiB;QACjE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAM,CAAC;IACvE,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,eAAe,CAAoB,MAAmB;QAClE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,wDAAwD;IACxD,YACE,OAAe,SAAS,CAAC,iBAAiB,EAAE,OAAe,SAAS,CAAC,iBAAiB,EAAE,OAAe,SAAS,CAAC,iBAAiB,EAClI,QAAgB,SAAS,CAAC,iBAAiB,EAAE,QAAgB,SAAS,CAAC,iBAAiB,EAAE,QAAgB,SAAS,CAAC,iBAAiB;QAErI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,yBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,yBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IACD,6FAA6F;IACtF,aAAa,CAAC,KAAwB,EAAE,GAAY;QACzD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;eACtF,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,2CAA2C;IACpC,OAAO,CAAC,KAAc;QAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,+DAA+D;IACxD,MAAM,CAAC,UAAU,CAAoB,KAAc,EAAE,MAAU;QACpE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,2BAA2B,CACrC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EACrC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EACxC,MAAM,CACP,CAAC;IACJ,CAAC;IACD;;;;;OAKG;IACI,WAAW,CAAC,IAAmB;QACpC,IAAI,CAAC,IAAI;YACP,OAAO;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,yBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,yBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD;;;OAGG;IACI,MAAM;QACX,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAC9D,CAAC;IACD,qEAAqE;IAC9D,MAAM,CAAC,QAAQ,CAAoB,IAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAO,CAAC;QAC/B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,4EAA4E;IACpE,SAAS,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,aAAsB;QAC9G,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,aAAa,EAAE,CAAC;YAClB,IACE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;mBACrB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;mBACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IACD,oBAAoB;IACb,KAAK,CAAC,MAAa;QACxB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,WAAmB,EAAU,CAAC;QACnE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,eAAe,CAAC,KAAa,EAAE,MAAa;QACjD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,WAAmB,EAAU,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAChE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EACnE,KAAK,CACN,CAAC;QACJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qDAAqD;IAC9C,MAAM,CAAC,UAAU,CAAoB,MAAU;QACpD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,iGAAiG;IAC1F,MAAM,CAAC,GAAG,KAAgB;QAC/B,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,KAAK;YACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,oHAAoH;IAC7G,MAAM,CAAC,MAAM,CAAC,GAAG,KAAgB;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,KAAK;YACb,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,wEAAwE;IACjE,MAAM,CAAC,qBAAqB,CAAC,IAAgC;QAClE,MAAM,SAAS,GAAG,IAAI,0CAAyB,EAAE,CAAC;QAClD,uCAAsB,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IACD,yDAAyD;IAClD,MAAM,CAAC,iBAAiB,CAAoB,SAAoB,EAAE,GAAG,KAAgB;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAK,CAAC;QACpC,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,KAAK;YACb,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,yDAAyD;IAClD,MAAM,CAAC,sBAAsB,CAClC,SAAoB,EAAE,MAAoC;QAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAK,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,qEAAqE;IAC9D,MAAM,CAAC,6BAA6B,CACzC,SAAoB,EAAE,MAAoC;QAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAK,CAAC;QACpC,MAAM,CAAC,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,kEAAkE;IAC3D,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,kCAAkC;IAC3B,MAAM,CAAC,SAAS,CAAoB,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,MAAU;QACpF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2GAA2G;IACpG,MAAM,CAAC,YAAY,CACxB,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAU;QAElF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACpD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACpD,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iGAAiG;IAC1F,MAAM,CAAC,2BAA2B,CACvC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAU;QAElF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;YAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACpD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EACpD,IAAI,CACL,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,wHAAwH;IACjH,MAAM,CAAC,aAAa,CAAoB,KAAc,EAAE,IAAY,CAAC,EAAE,MAAU;QACtF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QACjD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,gDAAgD;IACzC,MAAM,CAAC,WAAW,CAAoB,MAAiB,EAAE,MAAU;QACxE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,IAAI,MAAM;YAClB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,wEAAwE;IACjE,WAAW,CAAC,MAAoC,EAAE,SAAqB;QAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,IAAI,SAAS;gBACX,KAAK,MAAM,KAAK,IAAI,MAAM;oBACxB,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;;gBAElE,KAAK,MAAM,KAAK,IAAI,MAAM;oBACxB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aAC1C,4EAA4E;SAChF,IAAI,SAAS;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACpC,IAAI,CAAC,oBAAoB,CACvB,SAAS,EACT,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CACpC,CAAC;;YAEJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACpC,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CACpC,CAAC;IACV,CAAC;IACD,wEAAwE;IACjE,6BAA6B,CAAC,MAAoC,EAAE,SAAoB;QAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,MAAM;gBACxB,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACrE,4EAA4E;YAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;gBACpC,IAAI,CAAC,2BAA2B,CAC9B,SAAS,EACT,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CACpC,CAAC;IACR,CAAC;IACD,yFAAyF;IAClF,oBAAoB,CAAC,SAAoB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC/E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,SAAS,CACZ,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACrD,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACrD,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,2FAA2F;IACpF,qBAAqB,CAAC,SAAoB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC3F,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACzD,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACzD,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACzD,CAAC,CACF,CAAC;IACJ,CAAC;IAED,4GAA4G;IACrG,2BAA2B,CAAC,SAAoB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QACtF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,YAAa,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,CACZ,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9C,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,4DAA4D;IACrD,6BAA6B,CAClC,UAAqB,EAAE,UAAqB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAE7E,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,IAAI,CAAC,oBAAoB,CACvB,UAAU,EACV,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACrD,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EACrD,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,qHAAqH;IACrH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;eAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;eACxB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,mHAAmH;IAC5G,MAAM,CAAC,MAAM,CAAC,IAAmB;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;eAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;eACxB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,iDAAiD;IACjD,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;eAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;eAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,oEAAoE;IACpE,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,kCAAkC;IAClC,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,kCAAkC;IAClC,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,kCAAkC;IAClC,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,mCAAmC;IACnC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,mCAAmC;IACnC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,mCAAmC;IACnC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,uDAAuD;IAChD,OAAO;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IACD,uDAAuD;IAChD,OAAO;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IACD,uDAAuD;IAChD,OAAO;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IACD,8DAA8D;IACvD,SAAS;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IACD;;;OAGG;IACI,QAAQ,CAAC,MAAiB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD;;;OAGG;IACI,uBAAuB,CAAC,QAAgB,EAAE,MAAgB;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,8GAA8G;IACvG,eAAe,CAAC,SAAiB,EAAE,SAAiB,EAAE,YAAoB,CAAC,EAAE,MAAgB;QAClG,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IACD;;;OAGG;IACI,eAAe,CACpB,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,MAAgB;QAEzE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IACD;;;OAGG;IACI,YAAY,CAAC,GAAW,EAAE,MAAgB;QAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD;;;OAGG;IACI,wBAAwB,CAAC,MAAiB;QAC/C,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IACD;;;;OAIG;IACI,YAAY,CAAC,KAAc,EAAE,MAAgB;QAClD,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YACxC,OAAO,SAAS,CAAC;QACnB,OAAO,yBAAO,CAAC,MAAM,CACnB,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC3B,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC3B,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC3B,MAAM,CACP,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,wBAAwB,CAAC,KAAgB;QAC9C,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YACxC,OAAO,KAAK,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,KAAK;YACnB,yBAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;;OAIG;IACI,OAAO,CAAC,MAAkB;QAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO;YACL,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC;IACD;;;;;;;;;;OAUG;IACI,MAAM,CAAC,iBAAiB,CAAC,KAAa;QAC3C,IAAI,KAAK,KAAK,CAAC;YACb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YACb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YACb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YACb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC;YACb,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACD;;;;;;OAMG;IACI,WAAW,CAChB,YAAoB,GAAG,EAAE,eAAwB,IAAI,EAAE,aAAsB,IAAI;QAEjF,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,SAAS,CAAC;QACnB,MAAM,MAAM,GAAc;YACxB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;SACtC,CAAC;QACF,IAAI,UAAU;YACZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,YAAY;YACf,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,kFAAkF;IAC3E,MAAM;QACX,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,GAAG,CAAC;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,0DAA0D;IAC1D,IAAW,aAAa;QACtB,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,0DAA0D;IAC1D,IAAW,aAAa;QACtB,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,0DAA0D;IAC1D,IAAW,aAAa;QACtB,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,0DAA0D;IACnD,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAChD,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACjB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACf,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACf,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAChB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAChB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,8EAA8E;IACvE,UAAU,CAAC,CAAS,EAAE,CAAS;QACpC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACjB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACf,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAChB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,2CAA2C;IACpC,aAAa,CAAC,KAAc;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,mEAAmE;IAC5D,eAAe,CAAC,KAAc;QACnC,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACvB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACrB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eACtB,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,+CAA+C;IACxC,aAAa,CAAC,KAAc;QACjC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACzB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD;;;;OAIG;IACI,eAAe,CAAC,KAAc,EAAE,MAAe;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CACtC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACtB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACzB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAC7B,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,iBAAiB,CAAC,KAAc,EAAE,MAAe;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM;mBAClC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CACtC,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACtB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAC7B,CAAC;IACJ,CAAC;IACD,sGAAsG;IAC/F,eAAe,CAAC,KAAa;QAClC,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,OAAO,IAAI,CAAC,GAAG,CACb,mBAAQ,CAAC,aAAa,CACpB,SAAS,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7E,SAAS,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7E,SAAS,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9E,EACD,SAAS,CAAC,iBAAiB,CAC5B,CAAC;IACJ,CAAC;IACD,gHAAgH;IACzG,eAAe,CAAC,KAAc;QACnC,OAAO,IAAI,CAAC,GAAG,CACb,mBAAQ,CAAC,aAAa,CACpB,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1F,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1F,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3F,EACD,SAAS,CAAC,iBAAiB,CAC5B,CAAC;IACJ,CAAC;IACD,oDAAoD;IAC7C,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAElB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,sEAAsE;IAC/D,kBAAkB,CAAC,IAAa,EAAE,QAAgB,EAAE,IAAa;QACtE,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,MAAM,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAC9B,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,qDAAqD;IAC9C,WAAW,CAAC,CAAS;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,qDAAqD;IAC9C,WAAW,CAAC,CAAS;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,qDAAqD;IAC9C,WAAW,CAAC,CAAS;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,iEAAiE;IAC1D,gBAAgB,CAAC,CAAS,EAAE,SAAoB;QACrD,IAAI,SAAS,KAAK,oBAAS,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,SAAS,KAAK,oBAAS,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,SAAS,KAAK,oBAAS,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,wFAAwF;IACjF,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC1D,IAAI,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,oEAAoE;IAC7D,WAAW,CAAC,KAAc,EAAE,SAAqB;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,wDAAwD;IACjD,sBAAsB,CAAC,SAAoB,EAAE,KAAc;QAChE,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,4CAA4C;IACrC,WAAW,CAAC,KAAoB;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD;;;OAGG;IACI,gBAAgB,CAAC,KAAoB,EAAE,mBAA2B;QACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC7F,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC7F,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC7F,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC1F,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC1F,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,yCAAyC;IAClC,SAAS,CAAC,KAAc,EAAE,MAAgB;QAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,2BAA2B,CACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7G,MAAM,CACP,CAAC;IACJ,CAAC;IACD,kCAAkC;IAC3B,KAAK,CAAC,KAAc,EAAE,MAAgB;QAC3C,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM;YACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC;QACpC,iGAAiG;QACjG,OAAO,OAAO,CAAC,2BAA2B,CACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACvG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7G,MAAM,CACP,CAAC;IACJ,CAAC;IACD;;;OAGG;IACI,uBAAuB,CAAC,WAAmB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpC,8DAA8D;YAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD;;;;;;OAMG;IACI,aAAa,CAAC,KAAa;QAChC,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAC1D,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAC7D,IAAI,CACL,CAAC;IACJ,CAAC;IACD,yDAAyD;IAClD,wBAAwB,CAAC,MAAkB;QAChD,OAAO,qBAAS,CAAC,qBAAqB,CACpC,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAClD,mBAAQ,CAAC,eAAe,CACtB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAC9B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAC/B,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,2BAA2B,CAAC,MAAkB;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;OAIG;IACI,gBAAgB,CAAC,MAAc,IAAI;QACxC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC;QACxC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;CACF;AAz4BD,0BAy4BC;AAED;;;;;;GAMG;AACH,MAAa,OAAQ,SAAQ,SAAS;IACpC,mEAAmE;IAC5D,GAAG,CAAS;IACnB,oEAAoE;IAC7D,IAAI,CAAS;IACpB,kDAAkD;IAC3C,OAAO;QACZ,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,iBAAiB,CAAC;IAC1C,CAAC;IACD,4EAA4E;IACpE,SAAS,CAAC,GAAW,EAAE,IAAY,EAAE,gBAAyB,KAAK;QACzE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,aAAa,IAAI,GAAG,GAAG,IAAI;YAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,wDAAwD;IACxD,YAAoB,MAAc,SAAS,CAAC,iBAAiB,EAAE,OAAe,SAAS,CAAC,iBAAiB;QACvG,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,qEAAqE;QACvG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,6FAA6F;IACtF,aAAa,CAAC,KAAwB;QAC3C,OAAO,CAAC,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,mBAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;eACtG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,wCAAwC;IACjC,OAAO,CAAC,KAAc;QAC3B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IACD;;;;OAIG;IACI,WAAW,CAAC,IAAkB;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC;YACV,KAAK,KAAK,IAAI,IAAI,EAAE,CAAC;gBACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,IACL,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5G,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,qEAAqE;IAC9D,MAAM,CAAC,QAAQ,CAAoB,IAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAO,CAAC;QAC/B,IAAI,IAAI;YACN,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;;OAKG;IACI,MAAM;QACX,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,IAAI,KAAK,EAAU,CAAC;;YAE3B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD;;;OAGG;IACI,KAAK,CAAC,MAAa;QACxB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,WAAmB,EAAU,CAAC;QACnE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAoB,KAAQ,EAAE,MAAU;QAC9D,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAoB,MAAU;QACpD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,eAAe,CAAC,KAAa,EAAE,MAAgB;QACpD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC;YACpB,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;OAGG;IACI,IAAI,CAAC,CAAS;QACnB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,gCAAgC;IACzB,MAAM,CAAC,OAAO,CAAoB,CAAS,EAAE,MAAU;QAC5D,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;OAIG;IACI,cAAc,CAAC,EAAU,EAAE,EAAU;QAC1C,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IACD,sCAAsC;IACtC,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;IAC/C,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAoB,EAAU,EAAE,EAAU,EAAE,MAAU;QAC1E,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAChB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CACjB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,uBAAuB,CAAoB,EAAU,EAAE,EAAU,EAAE,MAAU;QACzF,IAAI,EAAE,GAAG,EAAE;YACT,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAChB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CACjB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAoB,MAA+B,EAAE,MAAU;QACtF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,MAAM;YACd,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2CAA2C;IACpC,WAAW,CAAC,MAA+B;QAChD,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,MAAM;YACd,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD;;;;;OAKG;IACI,iBAAiB,CAAC,MAA+B,EAAE,UAAkB,EAAE,QAAgB;QAC5F,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,wFAAwF;IACxF,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9B,CAAC;IACD,iDAAiD;IACjD,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC;IAChC,CAAC;IACD,wDAAwD;IACjD,MAAM;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QAC/B,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B,CAAC;IACD,+GAA+G;IACxG,eAAe,CAAC,QAAgB;QACrC,OAAO,mBAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,8DAA8D;IACvD,MAAM;QACX,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,GAAG,CAAC;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,kDAAkD;IAClD,IAAW,kBAAkB;QAC3B,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,4CAA4C;IACrC,SAAS,CAAC,CAAS;QACxB,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;IACzC,CAAC;IACD;;;OAGG;IACI,aAAa,CAAC,CAAS;QAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,+CAA+C;IACxC,aAAa,CAAC,KAAc;QACjC,OAAO,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;eACvB,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAC/B,CAAC;IACD,yDAAyD;IAClD,eAAe,CAAC,KAAc;QACnC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD;;;;;OAKG;IACI,uBAAuB,CAAC,EAAU,EAAE,EAAU;QACnD,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;gBAChB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACjB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG;gBACf,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IACD,gHAAgH;IACzG,eAAe,CAAC,KAAc;QACnC,OAAO,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,iHAAiH;IAC1G,WAAW,CAAC,CAAS;QAC1B,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,SAAS,CAAC,iBAAiB,CAAC;QACrC,OAAO,SAAS,CAAC,iCAAiC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,+CAA+C;IACxC,OAAO,CAAC,CAAS;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,4CAA4C;IACrC,WAAW,CAAC,KAAc;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,gFAAgF;IACzE,SAAS,CAAC,CAAS;QACxB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kFAAkF;IAC3E,UAAU,CAAC,CAAS;QACzB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yCAAyC;IAClC,SAAS,CAAC,KAAc,EAAE,MAAgB;QAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,OAAO,OAAO,CAAC,uBAAuB,CACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAC/B,MAAM,CACP,CAAC;IACJ,CAAC;IACD,kCAAkC;IAC3B,KAAK,CAAC,KAAc,EAAE,MAAgB;QAC3C,iGAAiG;QACjG,OAAO,OAAO,CAAC,QAAQ,CAEnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAC/B,MAAM,CAAC,CAAC;IACd,CAAC;IACD;;;OAGG;IACI,uBAAuB,CAAC,WAAmB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpC,8DAA8D;YAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD;;;;;;OAMG;IACI,aAAa,CAAC,KAAa;QAChC,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,GAAG,GAAG,KAAK,EAChB,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD;;;;;;;;;;;;;;;;;OAiBG;IACI,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc,EAAE,MAAc;QACjF,sBAAsB;QACtB,IAAI,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;YACzC,OAAO,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,mBAAQ,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,mBAAQ,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,oBAAoB;QACpB,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACvD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;gBAC5B,OAAO,IAAI,CAAC;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG;gBACtB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACvB,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI;gBACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI;gBACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;YACxB,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG;gBACtB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzYD,0BAyYC;AAED;;;GAGG;AACH,MAAa,OAAQ,SAAQ,SAAS;IACpC,2CAA2C;IAC3C,8DAA8D;IAC9D,mEAAmE;IAC5D,GAAG,CAAU;IACpB,oEAAoE;IAC7D,IAAI,CAAU;IACrB,kDAAkD;IAC3C,OAAO;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;IAC5C,CAAC;IACD,8GAA8G;IACvG,MAAM,CAAC,cAAc,CAAC,GAAiB;QAC5C,OAAO,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,uFAAuF;IAChF,cAAc;QACnB,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD;;;;OAIG;IACI,MAAM,CAAC,gBAAgB,CAAoB,GAAiB;QACjE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAM,CAAC;IACvD,CAAC;IACD;;;;;OAKG;IACI,MAAM,CAAC,eAAe,CAAoB,MAAmB;QAClE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,+DAA+D;IAC/D,YACE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAClE,KAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,KAAK,GAAG,OAAO,CAAC,iBAAiB;QAEpE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,yBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,yBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,6FAA6F;IACtF,aAAa,CAAC,KAAc;QACjC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;eAC5E,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,uEAAuE;IAChE,OAAO,CAAC,KAAmB;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,2EAA2E;IACpE,MAAM,CAAC,UAAU,CAAoB,KAAmB,EAAE,MAAU;QACzE,IAAI,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,MAAM,CAAC;QAAC,CAAC;QACrD,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAM,CAAC;IAC3G,CAAC;IACD,+DAA+D;IACxD,WAAW,CAAC,IAAkB;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,yBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,yBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,gEAAgE;IACzD,MAAM;QACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,wEAAwE;IACjE,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,qEAAqE;IAC9D,MAAM,CAAC,QAAQ,CAAoB,IAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,IAAI,EAAO,CAAC;QAC/B,IAAI,IAAI;YACN,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,oEAAoE;IAC5D,SAAS,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,aAAsB;QACtF,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IACD,gEAAgE;IACzD,KAAK,CAAC,MAAa;QACxB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,WAAmB,EAAU,CAAC;QACnE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,KAAY,EAAE,MAAa;QAChD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAK,IAAI,CAAC,WAAmB,EAAU,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM;YACd,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAC5C,KAAK,CACN,CAAC;QACJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sCAAsC;IAC/B,MAAM,CAAC,UAAU,CAAoB,MAAU;QACpD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,8CAA8C;IACvC,KAAK,CAAC,CAAS,EAAE,CAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,gCAAgC;IACzB,MAAM,CAAC,QAAQ,CAAoB,CAAS,EAAE,CAAS,EAAE,MAAU;QACxE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0GAA0G;IACnG,MAAM,CAAC,UAAU,CAAoB,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAU;QACpG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0GAA0G;IACnG,MAAM,CAAC,YAAY,CACxB,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAU;QAElF,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAC1C,KAAK,CACN,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,gGAAgG;IACzF,MAAM,CAAC,yBAAyB,CACrC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,MAAU;QAE1D,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,MAAM,CAAC,SAAS,CACd,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CACL,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,gDAAgD;IACzC,MAAM,CAAC,WAAW,CAAoB,MAAiB,EAAE,MAAU;QACxE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAO,CAAC;QAC3C,IAAI,KAAK,CAAC;QACV,KAAK,KAAK,IAAI,MAAM;YAClB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,mHAAmH;IACnH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;eAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,MAAM,CAAC,KAAmB;QACtC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;eAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,iDAAiD;IACjD,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;eAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,oEAAoE;IACpE,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,kCAAkC;IAClC,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,kCAAkC;IAClC,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,mCAAmC;IACnC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,mCAAmC;IACnC,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,2CAA2C;IACpC,OAAO;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B,CAAC;IACD,2CAA2C;IACpC,OAAO;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B,CAAC;IACD;;;OAGG;IACI,QAAQ,CAAC,MAAiB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD;;;OAGG;IACI,uBAAuB,CAAC,QAAgB,EAAE,MAAgB;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IACD,6GAA6G;IACtG,eAAe,CAAC,SAAiB,EAAE,SAAiB,EAAE,MAAgB;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IACD;;;;OAIG;IACI,SAAS,CAAC,SAAkB,KAAK,EAAE,IAAY,CAAC;QACrD,IAAI,MAAM;YACR,OAAO;gBACL,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzC,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3C,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;aAC1C,CAAC;QACJ,OAAO;YACL,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACzC,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1C,yBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;SAC5C,CAAC;IACJ,CAAC;IACD,uEAAuE;IAChE,MAAM;QACX,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,GAAG,CAAC;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,kDAAkD;IAClD,IAAW,aAAa;QACtB,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,kDAAkD;IAClD,IAAW,aAAa;QACtB,OAAO,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,uDAAuD;IAChD,UAAU,CAAC,CAAS,EAAE,CAAS;QACpC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACjB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACf,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAChB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,2CAA2C;IACpC,aAAa,CAAC,KAAY;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,+CAA+C;IACxC,aAAa,CAAC,KAAmB;QACtC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;eACzB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;eAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,yDAAyD;IAClD,eAAe,CAAC,KAAmB;QACxC,OAAO,CAAC,CACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACtB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;eACzB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAC7B,CAAC;IACJ,CAAC;IACD,sGAAsG;IAC/F,eAAe,CAAC,KAAY;QACjC,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,OAAO,CAAC,iBAAiB,CAAC;QACnC,OAAO,IAAI,CAAC,GAAG,CACb,mBAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7E,SAAS,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9E,EACD,OAAO,CAAC,iBAAiB,CAC1B,CAAC;IACJ,CAAC;IACD,sGAAsG;IAC/F,eAAe,CAAC,KAAmB;QACxC,OAAO,IAAI,CAAC,GAAG,CACb,mBAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1F,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3F,EACD,OAAO,CAAC,iBAAiB,CAC1B,CAAC;IACJ,CAAC;IACD,wDAAwD;IACjD,QAAQ,CAAC,CAAS,EAAE,CAAS;QAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,wDAAwD;IACjD,mBAAmB,CAAC,SAAoB,EAAE,CAAS,EAAE,CAAS;QACnE,MAAM,EAAE,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,4CAA4C;IACrC,WAAW,CAAC,KAAY;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,4CAA4C;IACrC,WAAW,CAAC,KAAmB;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,yCAAyC;IAClC,SAAS,CAAC,KAAmB,EAAE,MAAgB;QACpD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,UAAU,CACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACxE,MAAM,CACP,CAAC;IACJ,CAAC;IACD,kCAAkC;IAC3B,KAAK,CAAC,KAAmB,EAAE,MAAgB;QAChD,IAAI,IAAI,CAAC,MAAM;YACb,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAc,CAAC,CAAC;QACpC,iGAAiG;QACjG,OAAO,OAAO,CAAC,UAAU,CACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EACxE,MAAM,CACP,CAAC;IACJ,CAAC;IACD;;;OAGG;IACI,uBAAuB,CAAC,WAAmB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpC,8DAA8D;YAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD;;;;;;OAMG;IACI,aAAa,CAAC,KAAa;QAChC,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EACtC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,EACxC,IAAI,CACL,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACI,YAAY,CAAC,KAAc,EAAE,MAAgB;QAClD,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YAC1B,OAAO,SAAS,CAAC;QACnB,OAAO,yBAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;CACF;AAnbD,0BAmbC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ray2d.js","sourceRoot":"","sources":["../../../src/geometry3d/Ray2d.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module CartesianGeometry\n */\n\nimport { Geometry } from \"../Geometry\";\nimport { Point2d, Vector2d } from \"../geometry3d/Point2dVector2d\";\n\n/**\n * Ray with xy origin and direction\n * @public\n */\nexport class Ray2d {\n private _origin: Point2d;\n private _direction: Vector2d;\n\n private constructor(origin: Point2d, direction: Vector2d) {\n this._origin = origin;\n this._direction = direction;\n }\n /** Copy coordinates from origin and direction. */\n public set(origin: Point2d, direction: Vector2d): void {\n this._origin.setFrom(origin);\n this._direction.setFrom(direction);\n }\n /**\n * Create from `origin` and `target` points.\n * @param origin ray origin, cloned\n * @param target end of ray direction vector. The direction vector is `target - origin`.\n * @param result optional pre-allocated object to return\n */\n public static createOriginAndTarget(origin: Point2d, target: Point2d, result?: Ray2d): Ray2d {\n if (result) {\n result._origin.setFrom(origin);\n result._direction.set(target.x - origin.x, target.y - origin.y);\n return result;\n }\n return new Ray2d(origin.clone(), origin.vectorTo(target));\n }\n /**\n * Create by copying coordinates from `origin` and `direction`.\n * @param origin ray origin\n * @param direction ray direction\n * @param result optional pre-allocated object to return\n */\n public static createOriginAndDirection(origin: Point2d, direction: Vector2d, result?: Ray2d): Ray2d {\n if (result) {\n result.set(origin, direction);\n return result;\n }\n return new Ray2d(origin.clone(), direction.clone());\n }\n /** Create from captured `origin` and `direction`. */\n public static createOriginAndDirectionCapture(origin: Point2d, direction: Vector2d, result?: Ray2d): Ray2d {\n if (result) {\n result._origin = origin;\n result._direction = direction;\n return result;\n }\n return new Ray2d(origin, direction);\n }\n /** Get the reference to the ray origin. */\n public get origin() { return this._origin; }\n /** Get the reference to the ray direction. */\n public get direction() { return this._direction; }\n /**\n * Return a parallel ray to the left of this ray.\n * @param leftFraction distance between rays, as a fraction of the magnitude of this ray's direction vector\n */\n public parallelRay(leftFraction: number, result?: Ray2d): Ray2d {\n if (result) {\n this._origin.addForwardLeft(0.0, leftFraction, this._direction, result._origin);\n result._direction.setFrom(this._direction);\n return result;\n }\n return new Ray2d(this._origin.addForwardLeft(0.0, leftFraction, this._direction), this._direction.clone());\n }\n /** Return a ray with cloned origin and with direction rotated 90 degrees counterclockwise */\n public ccwPerpendicularRay(result?: Ray2d): Ray2d {\n if (result) {\n result._origin.setFrom(this._origin);\n this._direction.rotate90CCWXY(result._direction);\n return result;\n }\n return new Ray2d(this._origin.clone(), this._direction.rotate90CCWXY());\n }\n /** Return a ray with cloned origin and with direction rotated 90 degrees clockwise */\n public cwPerpendicularRay(result?: Ray2d): Ray2d {\n if (result) {\n result._origin.setFrom(this._origin);\n this._direction.rotate90CWXY(result._direction);\n return result;\n }\n return new Ray2d(this._origin.clone(), this._direction.rotate90CWXY());\n }\n /**\n * Normalize the direction vector in place.\n * @param defaultX value to set `this.direction.x` if normalization fails. Default value 1.\n * @param defaultY value to set `this.direction.y` if normalization fails. Default value 0.\n * @returns whether normalization succeeded (i.e., direction is nonzero)\n */\n public normalizeDirectionInPlace(defaultX: number = 1, defaultY: number = 0): boolean {\n if (this._direction.normalize(this._direction))\n return true;\n this._direction.x = defaultX;\n this._direction.y = defaultY;\n return false;\n }\n /**\n * Intersect this ray with the unbounded line defined by the given points.\n * @param linePointA start of the line\n * @param linePointB end of the line\n * @returns object with named values:\n * * `hasIntersection`: whether the intersection exists.\n * * `fraction`: ray parameter of intersection, or 0.0 if `!hasIntersection`. If the instance is normalized, this is the signed distance along the ray to the intersection point.\n * * `cross`: the 2D cross product `this.direction x (linePointB - linePointA)`, useful for determining orientation of the line and ray.\n */\n public intersectUnboundedLine(linePointA: Point2d, linePointB: Point2d): { hasIntersection: boolean, fraction: number, cross: number } {\n const lineDirection = linePointA.vectorTo(linePointB);\n const vector0 = linePointA.vectorTo(this._origin);\n const h0 = vector0.crossProduct(lineDirection);\n const dHds = this._direction.crossProduct(lineDirection);\n // h = h0 + s * dh\n const ff = Geometry.conditionalDivideFraction(-h0, dHds);\n const hasIntersection = ff !== undefined;\n return { hasIntersection, fraction: hasIntersection ? ff : 0.0, cross: dHds };\n }\n /** Return the ray fraction where the given point projects onto the ray. */\n public projectionFraction(point: Point2d): number {\n return this._origin.vectorTo(point).fractionOfProjectionToVector(this._direction);\n }\n /** Return the ray fraction where the given point projects onto the perpendicular ray. */\n public perpendicularProjectionFraction(point: Point2d): number {\n const uv = this._direction.crossProduct(this._origin.vectorTo(point));\n const uu = this._direction.magnitudeSquared();\n // Want zero returned if failure case, not undefined\n return Geometry.safeDivideFraction(uv, uu, 0.0);\n }\n /** Compute and return origin plus scaled direction. */\n public fractionToPoint(f: number, result?: Point2d): Point2d {\n return this._origin.plusScaled(this._direction, f, result);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Ray2d.js","sourceRoot":"","sources":["../../../src/geometry3d/Ray2d.ts"],"names":[],"mappings":"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"}
|