{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/react/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/create-react-class/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/object-assign/index.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/count.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/cumsum.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/fsum.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/groupSort.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/nice.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/bin.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/maxIndex.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/minIndex.js","../node_modules/d3-array/src/mode.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/rank.js","../node_modules/d3-array/src/least.js","../node_modules/d3-array/src/leastIndex.js","../node_modules/d3-array/src/greatest.js","../node_modules/d3-array/src/greatestIndex.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/every.js","../node_modules/d3-array/src/some.js","../node_modules/d3-array/src/filter.js","../node_modules/d3-array/src/map.js","../node_modules/d3-array/src/reduce.js","../node_modules/d3-array/src/reverse.js","../node_modules/d3-array/src/difference.js","../node_modules/d3-array/src/disjoint.js","../node_modules/d3-array/src/intersection.js","../node_modules/d3-array/src/superset.js","../node_modules/d3-array/src/subset.js","../node_modules/d3-array/src/union.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/blur.js","../node_modules/d3-contour/src/density.js","../node_modules/robust-predicates/esm/util.js","../node_modules/robust-predicates/esm/orient2d.js","../node_modules/robust-predicates/esm/orient3d.js","../node_modules/robust-predicates/esm/incircle.js","../node_modules/robust-predicates/esm/insphere.js","../node_modules/delaunator/index.js","../node_modules/d3-delaunay/src/path.js","../node_modules/d3-delaunay/src/polygon.js","../node_modules/d3-delaunay/src/voronoi.js","../node_modules/d3-delaunay/src/delaunay.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/center.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/int.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-random/src/pareto.js","../node_modules/d3-random/src/bernoulli.js","../node_modules/d3-random/src/geometric.js","../node_modules/d3-random/src/gamma.js","../node_modules/d3-random/src/beta.js","../node_modules/d3-random/src/binomial.js","../node_modules/d3-random/src/weibull.js","../node_modules/d3-random/src/cauchy.js","../node_modules/d3-random/src/logistic.js","../node_modules/d3-random/src/poisson.js","../node_modules/d3-random/src/lcg.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/radial.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time/src/ticks.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/pointers.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/link/index.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/react-dom/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/websocket/lib/browser.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/version.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/create-react-class/factory.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/immutability-helper/index.js","../node_modules/process/browser.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/v1.js","../node_modules/uuid/dist/esm-browser/parse.js","../node_modules/uuid/dist/esm-browser/v35.js","../node_modules/uuid/dist/esm-browser/md5.js","../node_modules/uuid/dist/esm-browser/v3.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/uuid/dist/esm-browser/sha1.js","../node_modules/uuid/dist/esm-browser/v5.js","../node_modules/uuid/dist/esm-browser/nil.js","../node_modules/uuid/dist/esm-browser/version.js"],"names":["module","exports","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","prototype","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","React","factory","Error","ReactNoopUpdateQueue","Component","updater","isValidElement","_defineProperty","obj","value","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","_inherits","subClass","superClass","create","constructor","_typeof","Symbol","iterator","_possibleConstructorReturn","call","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","result","Super","NewTarget","this","Reflect","construct","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","val","undefined","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","n","join","test3","split","letter","err","shouldUseNative","from","to","s","ascending","a","b","NaN","bisector","f","delta","compare1","compare2","left","x","lo","hi","mid","d","center","right","_arrayLikeToArray","arr","len","arr2","Array","_unsupportedIterableToArray","minLen","toString","slice","name","test","_createForOfIteratorHelper","allowArrayLike","it","isArray","F","done","e","_e","normalCompletion","didErr","step","next","_e2","numbers","number","values","valueof","index","ascendingBisect","bisectRight","bisectLeft","bisectCenter","count","_toConsumableArray","iter","array","empty","arrayify","reducer","reduce","cross","pop","lengths","j","fill","product","some","cumsum","sum","Float64Array","v","descending","variance","mean","deviation","Math","sqrt","extent","min","max","Adder","_partials","_n","y","abs","fsum","adder","add","fcumsum","_slicedToArray","_arr","_d","_s","_i","property","receiver","get","base","desc","Parent","args","Class","Function","bind","_cache","Map","fn","indexOf","has","set","Wrapper","InternMap","entries","keyof","_intern","_key","intern_get","intern_set","intern_delete","InternSet","Set","delete","valueOf","identity","group","nest","groups","flatten","flatMap","g","flatGroup","flatRollup","rollups","rollup","unique","indexes","regroup","permute","sort","Uint32Array","c","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","constant","e10","e5","e2","ticks","start","stop","reverse","tickIncrement","isFinite","r0","round","r1","power","floor","log","LN10","error","pow","tickStep","step0","step1","nice","prestep","ceil","thresholdSturges","LN2","bin","domain","threshold","sturges","histogram","data","xz","x0","x1","tz","tn","m","shift","bins","bisect","_","thresholds","quickselect","k","z","exp","sd","newLeft","newRight","t","swap","quantile","i0","value0","subarray","quantileSorted","value1","thresholdFreedmanDiaconis","thresholdScott","maxIndex","median","arrays","merge","minIndex","mode","modeValue","counts","modeCount","pairs","previous","pairof","pair","first","range","rank","V","R","r","compareIndex","least","defined","minValue","element","leastIndex","greatest","maxValue","greatestIndex","scan","shuffler","random","i1","transpose","matrix","row","zip","every","mapper","difference","others","other","disjoint","is","intersection","out","superset","io","intern","ivalue","subset","union","epsilon","translateX","translateY","scale","offset","bandwidth","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","transform","context","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","insert","transition","getAttribute","parentNode","remove","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Dispatch","parseTypenames","typenames","types","trim","type","callback","concat","on","typename","T","that","none","selector","querySelector","querySelectorAll","matches","childMatcher","node","find","childFirst","firstElementChild","children","update","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","__on","removeEventListener","listener","options","onAdd","event","contextListener","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","_groups","root","Selection","parents","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","match","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","exitGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","size","getAttributeNS","classed","html","creator","before","deep","selection_iterator","nonpassive","passive","nonpassivecapture","capture","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","h","Hsl","hslConvert","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","displayable","formatHsl","linear","hue","gamma","nogamma","exponential","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","numberArray","genericArray","nb","na","Date","setTime","reA","reB","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","one","zero","date","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","top","clientTop","pageX","pageY","frame","timeout","interval","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","id","timing","schedules","__transition","tween","schedule","state","duration","ease","init","svgNode","active","degrees","PI","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolateNumber","interpolateRgb","interpolateString","interpolate","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","cubicIn","cubicOut","cubicInOut","inherit","id0","id1","styleNull","listener0","styleMaybeRemove","easeVarying","Promise","resolve","reject","cancel","interrupt","defaultTiming","easeCubicInOut","BrushEvent","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","X","handles","input","output","xy","Y","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","hasAttribute","viewBox","width","height","defaultTouchable","navigator","maxTouchPoints","__brush","brushSelection","dim","brushX","brush","brushY","touchending","touchable","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","emitter","clean","emit","Emitter","touches","w0","w1","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","W","N","E","S","dx","dy","shifting","shiftKey","points","identifier","pointer","point0","beforestart","pts","move","moved","ended","keydowned","keyupped","dragDisable","changedTouches","cur","dragEnable","keyCode","selection0","selection1","clear","starting","keyModifiers","cos","sin","pi","halfPi","tau","compareValue","chord","chordTranspose","chordDirected","directed","padAngle","sortGroups","sortSubgroups","sortChords","groupSums","groupIndex","chords","subgroupIndex","startAngle","endAngle","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","da","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","sourceRadius","targetRadius","buffer","ap","argv","sr","sa0","sa1","tr","ta0","ta1","hr","tr2","ta2","ribbonArrow","radians","Xn","Zn","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","lch","hcl","A","B","C","D","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","ring","hole","ringContains","xi","yi","pj","xj","yj","segmentContains","collinear","cases","smooth","smoothLinear","contours","ts","contour","polygons","holes","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","isorings","area","polygon","coordinates","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","weight","density","values0","Float32Array","values1","pow2k","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","splitter","resulterrbound","elen","flen","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","vec","C1","C2","u","orient2d","ax","ay","bx","by","cx","cy","detleft","detright","det","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_j","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2dadapt","EPSILON","EDGE_STACK","Delaunator","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","i2","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","d0","triangles","halfedges","ex","ey","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","_legalize","pseudoAngle","ar","b0","al","p0","pr","pl","p1","inCircle","hbl","_link","br","getX","defaultGetX","getY","defaultGetY","px","py","fx","fy","bp","cp","ids","dists","temp","tempDist","tmp","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","ab","sign","inedges","ti","tj","_renderSegment","h0","h1","_project","_clip","cell","cellPolygon","renderCell","c0","_regioncode","c1","_clipSegment","_step","ci","neighbors","cj","ai","li","aj","lj","_cell","_clipInfinite","_clipFinite","P","sx0","sy0","sx1","sy1","_edgecode","_edge","vx0","vy0","vxn","vyn","vx","vy","flatIterable","pointX","pointY","jitter","Delaunay","_delaunator","_hullIndex","bounds","hypot","hullIndex","dc","dt","renderHull","trianglePolygon","renderTriangle","flatArray","DragEvent","subject","defaultContainer","defaultSubject","mousedownx","mousedowny","mousemoving","container","gestures","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","nodrag","mouse","touch","clickDistance","EOL","EOF","objectConverter","columns","JSON","stringify","inferColumns","rows","columnSet","column","pad","formatDate","year","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","DELIMITER","charCodeAt","parseRows","I","eof","eol","token","replace","preformatBody","formatValue","formatRow","convert","customConverter","formatBody","formatRows","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","fixtz","getHours","quadIn","quadOut","quadInOut","polyIn","custom","exponent","polyOut","polyInOut","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b1","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","responseBlob","response","ok","status","statusText","blob","fetch","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","dsvFormat","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","strength","force","sx","sy","tree","xm","ym","bottom","_root","leaf","_x","_y","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","yz","visit","quads","Quad","d2","retainer","removeAll","visitAfter","radii","iterations","ri","ri2","prepare","quad","rj","jiggle","_nodes","_random","nodeById","nodeId","links","strengths","distances","bias","link","distance","alpha","initializeStrength","initializeDistance","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","lcg","initializeNodes","angle","initializeForce","randomSource","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","formatDecimalParts","toExponential","coefficient","re","formatSpecifier","specifier","FormatSpecifier","align","symbol","comma","precision","prefixExponent","locale","formatPrefix","toFixed","toLocaleString","toPrecision","formatRounded","toUpperCase","prefixes","grouping","thousands","Number","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","defaultLocale","formatLocale","epsilon2","quarterPi","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","phi0","lambda1","phi1","lambda2","deltaSum","ranges","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","feature","merged","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","circle","lines","rejoin","Intersection","entry","segments","compareIntersection","startInside","clip","segment","pointEqual","current","isSubject","longitude","winding","sinPhi1","cosPhi1","point1","absDelta","phiArc","pointVisible","clipLine","sink","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","clipRejoin","pointLine","ringSegments","validSegment","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","cr","smallRadius","notHemisphere","visible","intersect","two","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","polar","q1","code","v00","point2","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","x__","y__","v__","x_","y_","v_","activeStream","bufferStream","clipStream","polygonInside","cleanInside","lengthSum","cache","cacheStream","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ao","bo","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","x00","y00","cy0","cy1","kx0","ky0","kx1","ky1","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","PathString","_string","_circle","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","methods","transformer","TransformStream","fit","fitBounds","clipExtent","geoStream","fitExtent","fitSize","fitWidth","fitHeight","cosMinDistance","project","delta2","resampleLineTo","depth","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","resample","resampleNone","transformRadians","scaleTranslateRotate","scaleTranslate","cosAlpha","sinAlpha","fi","projectionMutator","projectAt","projectResample","projectTransform","projectRotateTransform","preclip","clipAntimeridian","postclip","recenter","reset","transformRotate","clipAngle","clipCircle","reflectX","reflectY","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","multiplex","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanXReduce","maxYReduce","separation","nodeSize","cluster","previousNode","eachAfter","meanX","leafLeft","leafRight","hierarchy","mapChildren","objectChildren","childs","Node","eachBefore","computeHeight","copyData","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","node_iterator","circles","shuffle","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","r2","r21","r3","a2","a3","b2","b3","c3","d1","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","enclose","optional","required","constantZero","radiusLeaf","packChildren","translateChild","partition","treemapDice","positionNode","roundNode","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeKey","nodeByKey","nextLeft","nextRight","moveSubtree","wm","wp","change","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","executeShifts","midpoint","vip","vop","vom","sip","sop","sim","som","apportion","squarifyRatio","ratio","nodeValue","sumValue","newRatio","minRatio","beta","dice","treemapSlice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","zoomRho","rho","rho2","rho4","zoom","ux0","uy0","ux1","uy1","coshr0","SQRT2","_2","colorHsl","hslLong","colorLab","colorHcl","hclLong","cubehelixGamma","colorCubehelix","cubehelixLong","piecewise","interpolator","samples","lexicographicOrder","computeUpperHullIndexes","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomInt","randomInt","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","irwinHall","randomBates","sourceRandomExponential","randomExponential","log1p","sourceRandomPareto","randomPareto","RangeError","sourceRandomBernoulli","randomBernoulli","sourceRandomGeometric","randomGeometric","sourceRandomGamma","randomGamma","multiplier","sourceRandomBeta","G","randomBeta","sourceRandomBinomial","geometric","randomBinomial","acc","nn","pp","sourceRandomWeibull","randomWeibull","outerFunc","sourceRandomCauchy","randomCauchy","sourceRandomLogistic","randomLogistic","sourceRandomPoisson","binomial","randomPoisson","mul","inc","eps","seed","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","sequence","rangeRound","pointish","unit","normalize","bimap","polymap","clamp","untransform","interpolateValue","clamper","interpolateRound","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","maxIter","transformLog","transformExp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","transformSymlog","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","unsquare","radial","squared","invertExtent","quantiles","quantize","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","field","millisecond","second","getMilliseconds","minute","getSeconds","getMinutes","hour","day","setHours","setDate","getDate","getTimezoneOffset","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","setMonth","getMonth","getFullYear","months","setFullYear","years","utcMinute","setUTCSeconds","utcMinutes","utcHour","setUTCMinutes","utcHours","utcDay","setUTCHours","setUTCDate","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","utcMonths","utcYear","setUTCFullYear","utcYears","ticker","week","tickIntervals","tickInterval","utcWeek","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","L","utcDate","UTC","newDate","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pads","charAt","newParse","Z","timeMonday","timeDay","U","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","timeYear","timeSunday","dISO","timeThursday","dow","UTCdISO","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","utcTime","utcSecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","pi_1_3","pi_2_3","magma","inferno","plasma","nextId","Local","events","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","cx0","cx1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a10","da0","da1","rp","rc0","rc1","oc","kc","lc","Linear","areaStart","areaEnd","curve","curveLinear","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","pie","arcs","pa","curveRadialLinear","curveRadial","Radial","_curve","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","curveHorizontal","curveVertical","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","draw","tan30","tan30_2","kr","sqrt3","diamond","star","triangle","wye","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bump","bumpX","bumpY","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","_t0","Step","_t","stepBefore","stepAfter","series","stackValue","stackSeries","orderNone","offsetNone","stack","oz","sz","yn","s2","si","sij0","s3","peaks","peak","vi","vj","appearance","tops","bottoms","isoSpecifier","formatIso","toISOString","parseIso","total","_restart","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","touchstarting","touchfirst","constrain","wheelDelta","scaleExtent","interpolateZoom","touchDelay","tapDistance","wheeled","dblclicked","__zooming","Gesture","taps","wheel","wheelidled","k1","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","console","_isNativeReflectConstruct","sham","Proxy","_globalThis","globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","protocols","prop","Fragment","StrictMode","Profiler","Suspense","for","encodeURIComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","isReactComponent","setState","forceUpdate","isPureReactComponent","ref","__self","__source","J","defaultProps","$$typeof","_owner","escape","O","K","_status","_result","default","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","toArray","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","render","lazy","_payload","memo","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version","ba","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","qa","ma","la","xlinkHref","ra","ta","ua","wa","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","displayName","Qa","tag","_render","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","eb","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","ob","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","ub","menuitem","col","embed","img","keygen","meta","param","track","wbr","vb","wb","srcElement","correspondingUseElement","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","flags","$b","memoizedState","dehydrated","ac","sibling","bc","ec","fc","gc","hc","ic","jc","mc","nc","pc","qc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","getModifierState","zd","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","Xd","Yd","deltaX","wheelDeltaX","wheelDeltaY","deltaZ","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","datetime","email","password","search","tel","url","me","oe","pe","qe","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","Ne","HTMLIFrameElement","contentWindow","href","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","contextType","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","elementType","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","tagName","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","gi","ii","ji","ki","mi","baseLanes","ni","oi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","getDerivedStateFromError","pendingContext","Bi","Di","Ei","retryLane","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onClick","onclick","createTextNode","Hi","Ii","Ji","Ki","Li","Mi","message","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","display","bj","onCommitFiberUnmount","componentWillUnmount","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","mj","nj","oj","qj","uj","wj","ck","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","uk","hk","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","naiveFallback","__global__","jsx","jsxs","_assign","emptyObject","_invariant","condition","argIndex","framesToPop","MIXINS_KEY","ReactComponent","injectedMixins","ReactClassInterface","mixins","statics","propTypes","getDefaultProps","getInitialState","updateComponent","ReactClassStaticInterface","RESERVED_SPEC_KEYS","mixSpecIntoComponent","createMergedResultFunction","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassMixin","spec","proto","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","bindAutoBindMethod","component","method","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","newState","ReactClassComponent","autoBindKey","bindAutoBindMethods","initialState","methodName","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","prev","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","stringifiable","isProduction","process","invariant","getAllKeys","commands","defaultCommands","isEquals","newContext","directive","$spec","_this","$apply","nextObject","objectWasNextObject","nextValueForKey","nextObjectValue","$push","invariantPushAndUnshift","$unshift","$splice","originalObject","invariantSplice","invariantSplices","$set","_nextObject","invariantSet","$toggle","targets","invariantSpecArray","nextObjectCopy","$unset","_spec","$add","invariantMapOrSet","_a","$remove","$merge","specValue","original","defaultContext","command","typeOfTarget","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","title","browser","env","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","getRandomValues","rnds8","Uint8Array","rng","crypto","msCrypto","validate","uuid","REGEX","byteToHex","substr","_nodeId","_clockseq","_lastMSecs","_lastNSecs","buf","clockseq","seedBytes","msecs","nsecs","tl","tmh","hashfunc","generateUUID","str","unescape","bytes","stringToBytes","DNS","URL","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","num","cnt","md5ff","md5gg","md5hh","md5ii","md5","v35","msg","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","v4","rnds","ROTL","sha1","v5","_i2","_t2"],"mappings":";0IAGEA,EAAOC,QAAUC,EAAQ,K,gBCH3BF,EAAOC,QAAU,EAAQ,K,6BCAzB,6CAEA,SAASE,EAAQC,EAAQC,GACvB,IAAIC,EAAOC,OAAOD,KAAKF,GAEvB,GAAIG,OAAOC,sBAAuB,CAChC,IAAIC,EAAUF,OAAOC,sBAAsBJ,GACvCC,IAAgBI,EAAUA,EAAQC,QAAO,SAAUC,GACrD,OAAOJ,OAAOK,yBAAyBR,EAAQO,GAAKE,eAEtDP,EAAKQ,KAAKC,MAAMT,EAAMG,GAGxB,OAAOH,EAGM,SAASU,EAAeC,GACrC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAE/CA,EAAI,EACNf,EAAQI,OAAOc,IAAS,GAAMC,SAAQ,SAAUC,GAC9C,YAAeN,EAAQM,EAAKF,EAAOE,OAE5BhB,OAAOiB,0BAChBjB,OAAOkB,iBAAiBR,EAAQV,OAAOiB,0BAA0BH,IAEjElB,EAAQI,OAAOc,IAASC,SAAQ,SAAUC,GACxChB,OAAOmB,eAAeT,EAAQM,EAAKhB,OAAOK,yBAAyBS,EAAQE,OAKjF,OAAON,I,6BC9BPjB,EAAOC,QAAUC,EAAQ,K,6BCHZ,SAASyB,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,qCAFxB,mC,6BCAA,SAASC,EAAkBd,EAAQe,GACjC,IAAK,IAAId,EAAI,EAAGA,EAAIc,EAAMZ,OAAQF,IAAK,CACrC,IAAIe,EAAaD,EAAMd,GACvBe,EAAWpB,WAAaoB,EAAWpB,aAAc,EACjDoB,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjD5B,OAAOmB,eAAeT,EAAQgB,EAAWV,IAAKU,IAInC,SAASG,EAAaP,EAAaQ,EAAYC,GAG5D,OAFID,GAAYN,EAAkBF,EAAYU,UAAWF,GACrDC,GAAaP,EAAkBF,EAAaS,GACzCT,EAbT,mC,6BCAe,SAASW,EAAgBC,GAItC,OAHAD,EAAkBjC,OAAOmC,eAAiBnC,OAAOoC,eAAiB,SAAyBF,GACzF,OAAOA,EAAEG,WAAarC,OAAOoC,eAAeF,IAEvCD,EAAgBC,GAJzB,mC,6BCUA,IAAII,EAAQ3C,EAAQ,GAChB4C,EAAU5C,EAAQ,IAEtB,GAAqB,qBAAV2C,EACT,MAAME,MACJ,qJAMJ,IAAIC,GAAuB,IAAIH,EAAMI,WAAYC,QAEjDlD,EAAOC,QAAU6C,EACfD,EAAMI,UACNJ,EAAMM,eACNH,I,6BC1Ba,SAASI,EAAgBC,EAAK9B,EAAK+B,GAYhD,OAXI/B,KAAO8B,EACT9C,OAAOmB,eAAe2B,EAAK9B,EAAK,CAC9B+B,MAAOA,EACPzC,YAAY,EACZqB,cAAc,EACdC,UAAU,IAGZkB,EAAI9B,GAAO+B,EAGND,EAZT,mC,6BCAe,SAASE,EAAuBC,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EALT,mC,6BCAe,SAASE,EAAgBjB,EAAGkB,GAMzC,OALAD,EAAkBnD,OAAOmC,gBAAkB,SAAyBD,EAAGkB,GAErE,OADAlB,EAAEG,UAAYe,EACPlB,GAGFiB,EAAgBjB,EAAGkB,GAN5B,mC,6BCAA,8CACe,SAASC,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIhC,UAAU,sDAGtB+B,EAAStB,UAAYhC,OAAOwD,OAAOD,GAAcA,EAAWvB,UAAW,CACrEyB,YAAa,CACXV,MAAOO,EACP1B,UAAU,EACVD,cAAc,KAGd4B,GAAY,YAAeD,EAAUC,K,kFCb5B,SAASG,EAAQZ,GAa9B,OATEY,EADoB,oBAAXC,QAAoD,kBAApBA,OAAOC,SACtC,SAAiBd,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,oBAAXa,QAAyBb,EAAIW,cAAgBE,QAAUb,IAAQa,OAAO3B,UAAY,gBAAkBc,GAItHY,EAAQZ,G,WCXF,SAASe,EAA2BZ,EAAMa,GACvD,OAAIA,GAA2B,WAAlBJ,EAAQI,IAAsC,oBAATA,EAI3C,OAAAC,EAAA,GAAsBd,GAHpBa,ECDI,SAASE,EAAaC,GACnC,IAAIC,EAA4B,OAAAC,EAAA,KAChC,OAAO,WACL,IACIC,EADAC,EAAQ,OAAAjC,EAAA,GAAe6B,GAG3B,GAAIC,EAA2B,CAC7B,IAAII,EAAY,OAAAlC,EAAA,GAAemC,MAAMd,YACrCW,EAASI,QAAQC,UAAUJ,EAAOzD,UAAW0D,QAE7CF,EAASC,EAAM7D,MAAM+D,KAAM3D,WAG7B,OAAO,EAA0B2D,KAAMH,M,6BCR3C,IAAInE,EAAwBD,OAAOC,sBAC/ByE,EAAiB1E,OAAOgC,UAAU0C,eAClCC,EAAmB3E,OAAOgC,UAAU4C,qBAExC,SAASC,EAASC,GACjB,GAAY,OAARA,QAAwBC,IAARD,EACnB,MAAM,IAAIvD,UAAU,yDAGrB,OAAOvB,OAAO8E,GA+CfrF,EAAOC,QA5CP,WACC,IACC,IAAKM,OAAOgF,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzCjF,OAAOmF,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,GACHzE,EAAI,EAAGA,EAAI,GAAIA,IACvByE,EAAM,IAAMF,OAAOG,aAAa1E,IAAMA,EAKvC,GAAwB,eAHXX,OAAOmF,oBAAoBC,GAAOE,KAAI,SAAUC,GAC5D,OAAOH,EAAMG,MAEHC,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,GAIZ,MAHA,uBAAuBC,MAAM,IAAI3E,SAAQ,SAAU4E,GAClDF,EAAME,GAAUA,KAGf,yBADE3F,OAAOD,KAAKC,OAAOgF,OAAO,GAAIS,IAAQD,KAAK,IAM9C,MAAOI,GAER,OAAO,GAIQC,GAAoB7F,OAAOgF,OAAS,SAAUtE,EAAQI,GAKtE,IAJA,IAAIgF,EAEA5F,EADA6F,EAAKlB,EAASnE,GAGTsF,EAAI,EAAGA,EAAIpF,UAAUC,OAAQmF,IAAK,CAG1C,IAAK,IAAIhF,KAFT8E,EAAO9F,OAAOY,UAAUoF,IAGnBtB,EAAeZ,KAAKgC,EAAM9E,KAC7B+E,EAAG/E,GAAO8E,EAAK9E,IAIjB,GAAIf,EAAuB,CAC1BC,EAAUD,EAAsB6F,GAChC,IAAK,IAAInF,EAAI,EAAGA,EAAIT,EAAQW,OAAQF,IAC/BgE,EAAiBb,KAAKgC,EAAM5F,EAAQS,MACvCoF,EAAG7F,EAAQS,IAAMmF,EAAK5F,EAAQS,MAMlC,OAAOoF,I,6BCxFO,SAASE,EAAUC,EAAGC,GACnC,OAAY,MAALD,GAAkB,MAALC,EAAYC,IAAMF,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIC,ICC/D,SAASC,EAASC,GAC/B,IAAIC,EAAQD,EACRE,EAAWF,EACXG,EAAWH,EAQf,SAASI,EAAKR,EAAGS,GAA0B,IAAvBC,EAAuB,uDAAlB,EAAGC,EAAe,uDAAVX,EAAErF,OACjC,GAAI+F,EAAKC,EAAI,CACX,GAAuB,IAAnBL,EAASG,EAAGA,GAAU,OAAOE,EACjC,EAAG,CACD,IAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAASP,EAAEY,GAAMH,GAAK,EAAGC,EAAKE,EAAM,EACnCD,EAAKC,QACHF,EAAKC,GAEhB,OAAOD,EAoBT,OAnCiB,IAAbN,EAAEzF,SACJ0F,EAAQ,SAACQ,EAAGJ,GAAJ,OAAUL,EAAES,GAAKJ,GACzBH,EAAWP,EACXQ,EAAW,SAACM,EAAGJ,GAAJ,OAAUV,EAAUK,EAAES,GAAIJ,KAgChC,CAACD,OAAMM,OALd,SAAgBd,EAAGS,GAA0B,IAAvBC,EAAuB,uDAAlB,EAAGC,EAAe,uDAAVX,EAAErF,OAC7BF,EAAI+F,EAAKR,EAAGS,EAAGC,EAAIC,EAAK,GAC9B,OAAOlG,EAAIiG,GAAML,EAAML,EAAEvF,EAAI,GAAIgG,IAAMJ,EAAML,EAAEvF,GAAIgG,GAAKhG,EAAI,EAAIA,GAG5CsG,MAjBtB,SAAef,EAAGS,GAA0B,IAAvBC,EAAuB,uDAAlB,EAAGC,EAAe,uDAAVX,EAAErF,OAClC,GAAI+F,EAAKC,EAAI,CACX,GAAuB,IAAnBL,EAASG,EAAGA,GAAU,OAAOE,EACjC,EAAG,CACD,IAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAASP,EAAEY,GAAMH,IAAM,EAAGC,EAAKE,EAAM,EACpCD,EAAKC,QACHF,EAAKC,GAEhB,OAAOD,I,0txBClCI,SAASM,EAAkBC,EAAKC,IAClC,MAAPA,GAAeA,EAAMD,EAAItG,UAAQuG,EAAMD,EAAItG,QAE/C,IAAK,IAAIF,EAAI,EAAG0G,EAAO,IAAIC,MAAMF,GAAMzG,EAAIyG,EAAKzG,IAC9C0G,EAAK1G,GAAKwG,EAAIxG,GAGhB,OAAO0G,ECNM,SAASE,EAA4BrF,EAAGsF,GACrD,GAAKtF,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,EAAiBA,EAAGsF,GACtD,IAAIjC,EAAIvF,OAAOgC,UAAUyF,SAAS3D,KAAK5B,GAAGwF,MAAM,GAAI,GAEpD,MADU,WAANnC,GAAkBrD,EAAEuB,cAAa8B,EAAIrD,EAAEuB,YAAYkE,MAC7C,QAANpC,GAAqB,QAANA,EAAoB+B,MAAMxB,KAAK5D,GACxC,cAANqD,GAAqB,2CAA2CqC,KAAKrC,GAAW,EAAiBrD,EAAGsF,QAAxG,GCNa,SAASK,EAA2B3F,EAAG4F,GACpD,IAAIC,EAEJ,GAAsB,qBAAXpE,QAAgD,MAAtBzB,EAAEyB,OAAOC,UAAmB,CAC/D,GAAI0D,MAAMU,QAAQ9F,KAAO6F,EAAK,EAA2B7F,KAAO4F,GAAkB5F,GAAyB,kBAAbA,EAAErB,OAAqB,CAC/GkH,IAAI7F,EAAI6F,GACZ,IAAIpH,EAAI,EAEJsH,EAAI,aAER,MAAO,CACLjC,EAAGiC,EACH1C,EAAG,WACD,OAAI5E,GAAKuB,EAAErB,OAAe,CACxBqH,MAAM,GAED,CACLA,MAAM,EACNnF,MAAOb,EAAEvB,OAGbwH,EAAG,SAAWC,GACZ,MAAMA,GAER9B,EAAG2B,GAIP,MAAM,IAAI1G,UAAU,yIAGtB,IAEIqE,EAFAyC,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLtC,EAAG,WACD+B,EAAK7F,EAAEyB,OAAOC,aAEhB2B,EAAG,WACD,IAAIgD,EAAOR,EAAGS,OAEd,OADAH,EAAmBE,EAAKL,KACjBK,GAETJ,EAAG,SAAWM,GACZH,GAAS,EACT1C,EAAM6C,GAERnC,EAAG,WACD,IACO+B,GAAoC,MAAhBN,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAIO,EAAQ,MAAM1C,K,eChDT8C,GAJF,SAASC,EAAOhC,GAC7B,OAAa,OAANA,EAAaP,KAAOO,EAGtB,SAAU+B,EAAQE,EAAQC,GAA1B,2FACW9D,IAAZ8D,EADC,qBAEeD,GAFf,8DAGY,OADN7F,EAFN,WAGqBA,GAASA,IAAUA,GAHxC,gBAIC,OAJD,SAIOA,EAJP,qHAAAuD,IAAA,6CAQCwC,GAAS,EARV,IASeF,GATf,8DASM7F,EATN,UAUgD,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAAqB7F,GAASA,IAAUA,GAV5E,iBAWC,OAXD,UAWOA,EAXP,wHAAAuD,IAAA,uFCAP,IAAMyC,EAAkB1C,EAASJ,GACpB+C,EAAcD,EAAgB9B,MAC9BgC,EAAaF,EAAgBrC,KAC7BwC,EAAe7C,EAASsC,GAAQ3B,OAC9BgC,ICRA,SAASG,EAAMP,EAAQC,GACpC,IAAIM,EAAQ,EACZ,QAAgBpE,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,QACX,MAATA,IAAkBA,GAASA,IAAUA,KACrCoG,GAHmB,mCAMpB,CACL,IADK,EACDL,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAAqB7F,GAASA,IAAUA,KACzEoG,GAJD,+BAQP,OAAOA,ECZM,SAASC,EAAmBjC,GACzC,OCJa,SAA4BA,GACzC,GAAIG,MAAMU,QAAQb,GAAM,OAAO,EAAiBA,GDGzC,CAAkBA,IELZ,SAA0BkC,GACvC,GAAsB,qBAAX1F,QAA0BA,OAAOC,YAAY5D,OAAOqJ,GAAO,OAAO/B,MAAMxB,KAAKuD,GFIvD,CAAgBlC,IAAQ,EAA2BA,IGLvE,WACb,MAAM,IAAI5F,UAAU,wIHIwE,GIL9F,SAASV,EAAOyI,GACd,OAAsB,EAAfA,EAAMzI,OAGf,SAAS0I,EAAM1I,GACb,QAASA,EAAS,GAGpB,SAAS2I,EAASZ,GAChB,MAAyB,kBAAXA,GAAuB,WAAYA,EAASA,EAAStB,MAAMxB,KAAK8C,GAGhF,SAASa,EAAQC,GACf,OAAO,SAAAd,GAAM,OAAIc,EAAM,WAAN,IAAUd,KAGd,SAASe,IAAiB,2BAARf,EAAQ,yBAARA,EAAQ,gBACvC,IAAMc,EAA8C,oBAA9Bd,EAAOA,EAAO/H,OAAS,IAAqB4I,EAAQb,EAAOgB,OAE3EC,GADNjB,EAASA,EAAOtD,IAAIkE,IACGlE,IAAIzE,GACrBiJ,EAAIlB,EAAO/H,OAAS,EACpBiI,EAAQ,IAAIxB,MAAMwC,EAAI,GAAGC,KAAK,GAC9BC,EAAU,GAChB,GAAIF,EAAI,GAAKD,EAAQI,KAAKV,GAAQ,OAAOS,EACzC,OAAa,CACXA,EAAQzJ,KAAKuI,EAAMxD,KAAI,SAACwE,EAAGnJ,GAAJ,OAAUiI,EAAOjI,GAAGmJ,OAE3C,IADA,IAAInJ,EAAImJ,IACChB,EAAMnI,KAAOkJ,EAAQlJ,IAAI,CAChC,GAAU,IAANA,EAAS,OAAO+I,EAASM,EAAQ1E,IAAIoE,GAAUM,EACnDlB,EAAMnI,KAAO,IC7BJ,SAASuJ,EAAOtB,EAAQC,GACrC,IAAIsB,EAAM,EAAGrB,EAAQ,EACrB,OAAOsB,aAAatE,KAAK8C,OAAoB7D,IAAZ8D,EAC7B,SAAAwB,GAAC,OAAKF,IAAQE,GAAK,GACnB,SAAAA,GAAC,OAAKF,IAAQtB,EAAQwB,EAAGvB,IAASF,IAAW,ICJpC,SAAS0B,EAAWpE,EAAGC,GACpC,OAAY,MAALD,GAAkB,MAALC,EAAYC,IAC5BD,EAAID,GAAK,EACTC,EAAID,EAAI,EACRC,GAAKD,EAAI,EACTE,ICLS,SAASmE,EAAS3B,EAAQC,GACvC,IACItC,EADA4C,EAAQ,EAERqB,EAAO,EACPL,EAAM,EACV,QAAgBpF,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,QACX,MAATA,IAAkBA,GAASA,IAAUA,IAGvCoH,IAFA5D,EAAQxD,EAAQyH,IAEAzH,GADhByH,GAAQjE,IAAU4C,MAJG,mCAQpB,CACL,IADK,EACDL,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAAqB7F,GAASA,IAAUA,IAG3EoH,IAFA5D,EAAQxD,EAAQyH,IAEAzH,GADhByH,GAAQjE,IAAU4C,MALjB,+BAUP,GAAIA,EAAQ,EAAG,OAAOgB,GAAOhB,EAAQ,GCrBxB,SAASsB,EAAU7B,EAAQC,GACxC,IAAMwB,EAAIE,EAAS3B,EAAQC,GAC3B,OAAOwB,EAAIK,KAAKC,KAAKN,GAAKA,ECJb,SAASO,EAAOhC,EAAQC,GACrC,IAAIgC,EACAC,EACJ,QAAgB/F,IAAZ8D,EAAuB,WACLD,GADK,IACzB,2BAA4B,KAAjB7F,EAAiB,QACb,MAATA,SACUgC,IAAR8F,EACE9H,GAASA,IAAO8H,EAAMC,EAAM/H,IAE5B8H,EAAM9H,IAAO8H,EAAM9H,GACnB+H,EAAM/H,IAAO+H,EAAM/H,MAPJ,mCAWpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,WACvB7D,IAAR8F,EACE9H,GAASA,IAAO8H,EAAMC,EAAM/H,IAE5B8H,EAAM9H,IAAO8H,EAAM9H,GACnB+H,EAAM/H,IAAO+H,EAAM/H,MARxB,+BAaP,MAAO,CAAC8H,EAAKC,G,kBC1BFC,EAAb,WACE,aAAc,oBACZxG,KAAKyG,UAAY,IAAIZ,aAAa,IAClC7F,KAAK0G,GAAK,EAHd,uCAKE,SAAItE,GAGF,IAFA,IAAMvD,EAAImB,KAAKyG,UACXrK,EAAI,EACCmJ,EAAI,EAAGA,EAAIvF,KAAK0G,IAAMnB,EAAI,GAAIA,IAAK,CAC1C,IAAMoB,EAAI9H,EAAE0G,GACVjD,EAAKF,EAAIuE,EACTtE,EAAK8D,KAAKS,IAAIxE,GAAK+D,KAAKS,IAAID,GAAKvE,GAAKE,EAAKqE,GAAKA,GAAKrE,EAAKF,GACxDC,IAAIxD,EAAEzC,KAAOiG,GACjBD,EAAIE,EAIN,OAFAzD,EAAEzC,GAAKgG,EACPpC,KAAK0G,GAAKtK,EAAI,EACP4D,OAjBX,qBAmBE,WACE,IACiBoC,EAAGuE,EAAGtE,EADjBxD,EAAImB,KAAKyG,UACXzF,EAAIhB,KAAK0G,GAAcpE,EAAK,EAChC,GAAItB,EAAI,EAAG,CAET,IADAsB,EAAKzD,IAAImC,GACFA,EAAI,IACToB,EAAIE,IAGJD,GAFAsE,EAAI9H,IAAImC,MACRsB,EAAKF,EAAIuE,GACMvE,OAGbpB,EAAI,IAAOqB,EAAK,GAAKxD,EAAEmC,EAAI,GAAK,GAAOqB,EAAK,GAAKxD,EAAEmC,EAAI,GAAK,KAC9D2F,EAAS,EAALtE,KACJD,EAAIE,EAAKqE,GACIrE,IAAIA,EAAKF,GAG1B,OAAOE,MArCX,KAyCO,SAASuE,EAAKxC,EAAQC,GAC3B,IAAMwC,EAAQ,IAAIN,EAClB,QAAgBhG,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,SACpBA,GAASA,IACXsI,EAAMC,IAAIvI,IAHW,mCAMpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,SACpBA,GAAS8F,EAAQ9F,IAAS+F,EAAOF,KACnCyC,EAAMC,IAAIvI,IAJT,+BAQP,OAAQsI,EAGH,SAASE,EAAQ3C,EAAQC,GAC9B,IAAMwC,EAAQ,IAAIN,EACdjC,GAAS,EACb,OAAOsB,aAAatE,KAAK8C,OAAoB7D,IAAZ8D,EAC3B,SAAAwB,GAAC,OAAIgB,EAAMC,KAAKjB,GAAK,IACrB,SAAAA,GAAC,OAAIgB,EAAMC,KAAKzC,EAAQwB,IAAKvB,EAAOF,IAAW,KC9DxC,SAAS4C,EAAerE,EAAKxG,GAC1C,OCLa,SAAyBwG,GACtC,GAAIG,MAAMU,QAAQb,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BA,EAAKxG,GACjD,GAAsB,qBAAXgD,QAA4BA,OAAOC,YAAY5D,OAAOmH,GAAjE,CACA,IAAIsE,EAAO,GACPR,GAAK,EACLS,GAAK,EACLtD,OAAKrD,EAET,IACE,IAAK,IAAiC4G,EAA7BC,EAAKzE,EAAIxD,OAAOC,cAAmBqH,GAAMU,EAAKC,EAAGpD,QAAQN,QAChEuD,EAAKlL,KAAKoL,EAAG5I,QAETpC,GAAK8K,EAAK5K,SAAWF,GAH8CsK,GAAK,IAK9E,MAAOrF,GACP8F,GAAK,EACLtD,EAAKxC,EACL,QACA,IACOqF,GAAsB,MAAhBW,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAIF,EAAI,MAAMtD,GAIlB,OAAOqD,GFnBuB,CAAqBtE,EAAKxG,IAAM,EAA2BwG,EAAKxG,IGLjF,WACb,MAAM,IAAIY,UAAU,6IHIgF,G,kBIJvF,SAAS,EAAKb,EAAQmL,EAAUC,GAiB7C,OAfE,EADqB,qBAAZtH,SAA2BA,QAAQuH,IACrCvH,QAAQuH,IAER,SAAcrL,EAAQmL,EAAUC,GACrC,IAAIE,ECLK,SAAwBnM,EAAQgM,GAC7C,MAAQ7L,OAAOgC,UAAU0C,eAAeZ,KAAKjE,EAAQgM,IAEpC,QADfhM,EAAS,OAAAuC,EAAA,GAAevC,MAI1B,OAAOA,EDDQ,CAAca,EAAQmL,GACjC,GAAKG,EAAL,CACA,IAAIC,EAAOjM,OAAOK,yBAAyB2L,EAAMH,GAEjD,OAAII,EAAKF,IACAE,EAAKF,IAAIjI,KAAKgI,GAGhBG,EAAKlJ,QAIT,EAAKrC,EAAQmL,EAAUC,GAAYpL,G,wCEhB7B,SAAS,EAAWwL,EAAQC,EAAMC,GAc/C,OAZE,EADE,OAAAjI,EAAA,KACWK,QAAQC,UAER,SAAoByH,EAAQC,EAAMC,GAC7C,IAAIlG,EAAI,CAAC,MACTA,EAAE3F,KAAKC,MAAM0F,EAAGiG,GAChB,IACI9K,EAAW,IADGgL,SAASC,KAAK9L,MAAM0L,EAAQhG,IAG9C,OADIkG,GAAO,OAAAjK,EAAA,GAAed,EAAU+K,EAAMpK,WACnCX,GAIJ,EAAWb,MAAM,KAAMI,WCZjB,SAAS,EAAiBwL,GACvC,IAAIG,EAAwB,oBAARC,IAAqB,IAAIA,SAAQzH,EA8BrD,OA5BA,EAAmB,SAA0BqH,GAC3C,GAAc,OAAVA,ICRkCK,EDQEL,GCPsB,IAAzDC,SAAS5E,SAAS3D,KAAK2I,GAAIC,QAAQ,kBDOQ,OAAON,ECR5C,IAA2BK,EDUtC,GAAqB,oBAAVL,EACT,MAAM,IAAI7K,UAAU,sDAGtB,GAAsB,qBAAXgL,EAAwB,CACjC,GAAIA,EAAOI,IAAIP,GAAQ,OAAOG,EAAOR,IAAIK,GAEzCG,EAAOK,IAAIR,EAAOS,GAGpB,SAASA,IACP,OAAO,EAAUT,EAAOxL,UAAW,OAAAwB,EAAA,GAAemC,MAAMd,aAW1D,OARAoJ,EAAQ7K,UAAYhC,OAAOwD,OAAO4I,EAAMpK,UAAW,CACjDyB,YAAa,CACXV,MAAO8J,EACPvM,YAAY,EACZsB,UAAU,EACVD,cAAc,KAGX,OAAAQ,EAAA,GAAe0K,EAAST,IAG1B,EAAiBA,GEnCnB,IAAMU,EAAb,kDACE,WAAYC,GAAsB,MAAb/L,EAAa,uDAAPgM,EAGzB,GAHgC,oBAChC,eACAhN,OAAOkB,iBAAPlB,OAAA,IAAAA,CAAA,GAA8B,CAACiN,QAAS,CAAClK,MAAO,IAAIyJ,KAAQU,KAAM,CAACnK,MAAO/B,KAC3D,MAAX+L,EAAJ,WAAgDA,GAAhD,IAAqB,+CAAY/L,EAAZ,KAAiB+B,EAAjB,KAAoC,EAAK6J,IAAI5L,EAAK+B,IAAvE,+BAHgC,SADpC,uCAME,SAAI/B,GACF,wDAAiBmM,EAAW5I,KAAMvD,MAPtC,iBASE,SAAIA,GACF,wDAAiBmM,EAAW5I,KAAMvD,MAVtC,iBAYE,SAAIA,EAAK+B,GACP,wDAAiBqK,EAAW7I,KAAMvD,GAAM+B,KAb5C,oBAeE,SAAO/B,GACL,2DAAoBqM,EAAc9I,KAAMvD,QAhB5C,KAA+BwL,MAoBlBc,EAAb,kDACE,WAAY1E,GAAqB,MAAb5H,EAAa,uDAAPgM,EAGxB,GAH+B,oBAC/B,eACAhN,OAAOkB,iBAAPlB,OAAA,IAAAA,CAAA,GAA8B,CAACiN,QAAS,CAAClK,MAAO,IAAIyJ,KAAQU,KAAM,CAACnK,MAAO/B,KAC5D,MAAV4H,EAAJ,WAAwCA,GAAxC,IAAoB,gCAAW7F,EAAX,QAA4B,EAAKuI,IAAIvI,IAAzD,+BAH+B,SADnC,uCAME,SAAIA,GACF,wDAAiBoK,EAAW5I,KAAMxB,MAPtC,iBASE,SAAIA,GACF,wDAAiBqK,EAAW7I,KAAMxB,MAVtC,oBAYE,SAAOA,GACL,2DAAoBsK,EAAc9I,KAAMxB,QAb5C,KAA+BwK,MAiB/B,SAASJ,EAAT,EAAqCpK,GAAO,IAAvBkK,EAAuB,EAAvBA,QACbjM,GAAMkM,EAD8B,EAAdA,MACXnK,GACjB,OAAOkK,EAAQN,IAAI3L,GAAOiM,EAAQlB,IAAI/K,GAAO+B,EAG/C,SAASqK,EAAT,EAAqCrK,GAAO,IAAvBkK,EAAuB,EAAvBA,QACbjM,GAAMkM,EAD8B,EAAdA,MACXnK,GACjB,OAAIkK,EAAQN,IAAI3L,GAAaiM,EAAQlB,IAAI/K,IACzCiM,EAAQL,IAAI5L,EAAK+B,GACVA,GAGT,SAASsK,EAAT,EAAwCtK,GAAO,IAAvBkK,EAAuB,EAAvBA,QAChBjM,GAAMkM,EADiC,EAAdA,MACdnK,GAKjB,OAJIkK,EAAQN,IAAI3L,KACd+B,EAAQkK,EAAQlB,IAAI/K,GACpBiM,EAAQO,OAAOxM,IAEV+B,EAGT,SAASiK,EAAMjK,GACb,OAAiB,OAAVA,GAAmC,kBAAVA,EAAqBA,EAAM0K,UAAY1K,EC3D1D,SAAS2K,EAAS/G,GAC/B,OAAOA,ECEM,SAASgH,EAAM/E,GAAiB,2BAAN7I,EAAM,iCAANA,EAAM,kBAC7C,OAAO6N,GAAKhF,EAAQ8E,EAAUA,EAAU3N,GAGnC,SAAS8N,EAAOjF,GAAiB,2BAAN7I,EAAM,iCAANA,EAAM,kBACtC,OAAO6N,GAAKhF,EAAQtB,MAAMxB,KAAM4H,EAAU3N,GAG5C,SAAS+N,GAAQD,EAAQ9N,GACvB,IAAK,IAAIY,EAAI,EAAG4E,EAAIxF,EAAKc,OAAQF,EAAI4E,IAAK5E,EACxCkN,EAASA,EAAOE,SAAQ,SAAAC,GAAC,OAAIA,EAAEpE,MAAMtE,KAAI,yBAAEtE,EAAF,KAAO+B,EAAP,uBAAsBiL,GAAtB,CAAyBhN,EAAK+B,UAEzE,OAAO8K,EAGF,SAASI,GAAUrF,GAAiB,2BAAN7I,EAAM,iCAANA,EAAM,kBACzC,OAAO+N,GAAQD,EAAM,WAAN,GAAOjF,GAAP,OAAkB7I,IAAOA,GAGnC,SAASmO,GAAWtF,EAAQc,GAAiB,2BAAN3J,EAAM,iCAANA,EAAM,kBAClD,OAAO+N,GAAQK,GAAO,WAAP,GAAQvF,EAAQc,GAAhB,OAA2B3J,IAAOA,GAG5C,SAASqO,GAAOxF,EAAQc,GAAiB,2BAAN3J,EAAM,iCAANA,EAAM,kBAC9C,OAAO6N,GAAKhF,EAAQ8E,EAAUhE,EAAQ3J,GAGjC,SAASoO,GAAQvF,EAAQc,GAAiB,2BAAN3J,EAAM,iCAANA,EAAM,kBAC/C,OAAO6N,GAAKhF,EAAQtB,MAAMxB,KAAM4D,EAAQ3J,GAGnC,SAAS+I,GAAMF,GAAiB,2BAAN7I,EAAM,iCAANA,EAAM,kBACrC,OAAO6N,GAAKhF,EAAQ8E,EAAUW,GAAQtO,GAGjC,SAASuO,GAAQ1F,GAAiB,2BAAN7I,EAAM,iCAANA,EAAM,kBACvC,OAAO6N,GAAKhF,EAAQtB,MAAMxB,KAAMuI,GAAQtO,GAG1C,SAASsO,GAAOzF,GACd,GAAsB,IAAlBA,EAAO/H,OAAc,MAAM,IAAI2B,MAAM,iBACzC,OAAOoG,EAAO,GAGhB,SAASgF,GAAKhF,EAAQtD,EAAKoE,EAAQ3J,GACjC,OAAQ,SAASwO,EAAQ3F,EAAQjI,GAC/B,GAAIA,GAAKZ,EAAKc,OAAQ,OAAO6I,EAAOd,GACpC,IAFkC,EAE5BiF,EAAS,IAAIf,EACbE,EAAQjN,EAAKY,KACfmI,GAAS,EAJqB,IAKdF,GALc,IAKlC,2BAA4B,KAAjB7F,EAAiB,QACpB/B,EAAMgM,EAAMjK,IAAS+F,EAAOF,GAC5B+E,EAAQE,EAAO9B,IAAI/K,GACrB2M,EAAOA,EAAMpN,KAAKwC,GACjB8K,EAAOjB,IAAI5L,EAAK,CAAC+B,KATU,wCAWN8K,GAXM,IAWlC,2BAAoC,oBAAxB7M,EAAwB,KAAnB4H,EAAmB,KAClCiF,EAAOjB,IAAI5L,EAAKuN,EAAQ3F,EAAQjI,KAZA,8BAclC,OAAO2E,EAAIuI,GAdL,CAeLjF,EAAQ,GC/DE,SAAS4F,GAAQ1N,EAAQf,GACtC,OAAOuH,MAAMxB,KAAK/F,GAAM,SAAAiB,GAAG,OAAIF,EAAOE,MCEzB,SAASyN,GAAK7F,GAAc,2BAAHX,EAAG,iCAAHA,EAAG,kBACzC,GAAuC,oBAA5BW,EAAOjF,OAAOC,UAA0B,MAAM,IAAIrC,UAAU,0BACvEqH,EAAStB,MAAMxB,KAAK8C,GACpB,MAAUX,EAAV,SAAK3B,EAAL,KACA,GAAKA,GAAkB,IAAbA,EAAEzF,QAAiBoH,EAAEpH,OAAS,EAAG,CACzC,IAAMiI,EAAQ4F,YAAY5I,KAAK8C,GAAQ,SAAC7B,EAAGpG,GAAJ,OAAUA,KAajD,OAZIsH,EAAEpH,OAAS,GACboH,EAAIA,EAAE3C,KAAI,SAAAgB,GAAC,OAAIsC,EAAOtD,IAAIgB,MAC1BwC,EAAM2F,MAAK,SAAC9N,EAAGmJ,GAAM,UACH7B,GADG,IACnB,2BAAmB,KAAR3B,EAAQ,QACXqI,EAAIC,GAAiBtI,EAAE3F,GAAI2F,EAAEwD,IACnC,GAAI6E,EAAG,OAAOA,GAHG,oCAOrBrI,EAAIsC,EAAOtD,IAAIgB,GACfwC,EAAM2F,MAAK,SAAC9N,EAAGmJ,GAAJ,OAAU8E,GAAiBtI,EAAE3F,GAAI2F,EAAEwD,QAEzC0E,GAAQ5F,EAAQE,GAEzB,OAAOF,EAAO6F,KAAKI,GAAevI,IAG7B,SAASuI,KAAoC,IAArBC,EAAqB,uDAAX7I,EACvC,GAAI6I,IAAY7I,EAAW,OAAO2I,GAClC,GAAuB,oBAAZE,EAAwB,MAAM,IAAIvN,UAAU,6BACvD,OAAO,SAAC2E,EAAGC,GACT,IAAMQ,EAAImI,EAAQ5I,EAAGC,GACrB,OAAIQ,GAAW,IAANA,EAAgBA,GACC,IAAlBmI,EAAQ3I,EAAGA,KAA+B,IAAlB2I,EAAQ5I,EAAGA,KAIxC,SAAS0I,GAAiB1I,EAAGC,GAClC,OAAa,MAALD,KAAeA,GAAKA,KAAY,MAALC,KAAeA,GAAKA,MAAQD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,GCjC3E,SAAS4I,GAAUnG,EAAQc,EAAQ1I,GAChD,OAA0B,IAAlB0I,EAAO7I,OACX4N,GAAKL,GAAOxF,EAAQc,EAAQ1I,IAAO,2BAAEgO,EAAF,KAAMC,EAAN,cAAYC,EAAZ,YAAwBjJ,EAAUgJ,EAAlC,OAA6ChJ,EAAU+I,EAAIE,MAC9FT,GAAKd,EAAM/E,EAAQ5H,IAAO,2BAAEgO,EAAF,KAAMC,EAAN,cAAYC,EAAZ,KAAgBC,EAAhB,YAAwBzF,EAAOuF,EAAIE,IAAOlJ,EAAU+I,EAAIE,OACnF5J,KAAI,gCCRT,IAAIgE,GAAQhC,MAAMtF,UAEP0F,GAAQ4B,GAAM5B,MACR4B,GAAMhE,ICHR,SAAS8J,GAASzI,GAC/B,OAAO,kBAAMA,GCDf,IAAI0I,GAAM3E,KAAKC,KAAK,IAChB2E,GAAK5E,KAAKC,KAAK,IACf4E,GAAK7E,KAAKC,KAAK,GAEJ,SAAS6E,GAAMC,EAAOC,EAAMvG,GACzC,IAAIwG,EAEApK,EACAiK,EACAjH,EAHA5H,GAAK,EAMT,GAD8BwI,GAASA,GAAzBsG,GAASA,MAAvBC,GAAQA,IACcvG,EAAQ,EAAG,MAAO,CAACsG,GAEzC,IADIE,EAAUD,EAAOD,KAAOlK,EAAIkK,EAAOA,EAAQC,EAAMA,EAAOnK,GACT,KAA9CgD,EAAOqH,GAAcH,EAAOC,EAAMvG,MAAkB0G,SAAStH,GAAO,MAAO,GAEhF,GAAIA,EAAO,EAAG,CACZ,IAAIuH,EAAKpF,KAAKqF,MAAMN,EAAQlH,GAAOyH,EAAKtF,KAAKqF,MAAML,EAAOnH,GAI1D,IAHIuH,EAAKvH,EAAOkH,KAASK,EACrBE,EAAKzH,EAAOmH,KAAQM,EACxBR,EAAQ,IAAIlI,MAAM/B,EAAIyK,EAAKF,EAAK,KACvBnP,EAAI4E,GAAGiK,EAAM7O,IAAMmP,EAAKnP,GAAK4H,MACjC,CACLA,GAAQA,EACR,IAAIuH,EAAKpF,KAAKqF,MAAMN,EAAQlH,GAAOyH,EAAKtF,KAAKqF,MAAML,EAAOnH,GAI1D,IAHIuH,EAAKvH,EAAOkH,KAASK,EACrBE,EAAKzH,EAAOmH,KAAQM,EACxBR,EAAQ,IAAIlI,MAAM/B,EAAIyK,EAAKF,EAAK,KACvBnP,EAAI4E,GAAGiK,EAAM7O,IAAMmP,EAAKnP,GAAK4H,EAKxC,OAFIoH,GAASH,EAAMG,UAEZH,EAGF,SAASI,GAAcH,EAAOC,EAAMvG,GACzC,IAAIZ,GAAQmH,EAAOD,GAAS/E,KAAKI,IAAI,EAAG3B,GACpC8G,EAAQvF,KAAKwF,MAAMxF,KAAKyF,IAAI5H,GAAQmC,KAAK0F,MACzCC,EAAQ9H,EAAOmC,KAAK4F,IAAI,GAAIL,GAChC,OAAOA,GAAS,GACTI,GAAShB,GAAM,GAAKgB,GAASf,GAAK,EAAIe,GAASd,GAAK,EAAI,GAAK7E,KAAK4F,IAAI,GAAIL,IAC1EvF,KAAK4F,IAAI,IAAKL,IAAUI,GAAShB,GAAM,GAAKgB,GAASf,GAAK,EAAIe,GAASd,GAAK,EAAI,GAGlF,SAASgB,GAASd,EAAOC,EAAMvG,GACpC,IAAIqH,EAAQ9F,KAAKS,IAAIuE,EAAOD,GAAS/E,KAAKI,IAAI,EAAG3B,GAC7CsH,EAAQ/F,KAAK4F,IAAI,GAAI5F,KAAKwF,MAAMxF,KAAKyF,IAAIK,GAAS9F,KAAK0F,OACvDC,EAAQG,EAAQC,EAIpB,OAHIJ,GAAShB,GAAKoB,GAAS,GAClBJ,GAASf,GAAImB,GAAS,EACtBJ,GAASd,KAAIkB,GAAS,GACxBf,EAAOD,GAASgB,EAAQA,EClDlB,SAASC,GAAKjB,EAAOC,EAAMvG,GAExC,IADA,IAAIwH,IACS,CACX,IAAMpI,EAAOqH,GAAcH,EAAOC,EAAMvG,GACxC,GAAIZ,IAASoI,GAAoB,IAATpI,IAAesH,SAAStH,GAC9C,MAAO,CAACkH,EAAOC,GACNnH,EAAO,GAChBkH,EAAQ/E,KAAKwF,MAAMT,EAAQlH,GAAQA,EACnCmH,EAAOhF,KAAKkG,KAAKlB,EAAOnH,GAAQA,GACvBA,EAAO,IAChBkH,EAAQ/E,KAAKkG,KAAKnB,EAAQlH,GAAQA,EAClCmH,EAAOhF,KAAKwF,MAAMR,EAAOnH,GAAQA,GAEnCoI,EAAUpI,GCbC,SAASsI,GAAiBjI,GACvC,OAAO8B,KAAKkG,KAAKlG,KAAKyF,IAAIhH,EAAMP,IAAW8B,KAAKoG,KAAO,ECM1C,SAASC,KACtB,IAAIhO,EAAQ2K,EACRsD,EAASpG,EACTqG,EAAYC,GAEhB,SAASC,EAAUC,GACZ9J,MAAMU,QAAQoJ,KAAOA,EAAO9J,MAAMxB,KAAKsL,IAE5C,IAAIzQ,EAEAgG,EADApB,EAAI6L,EAAKvQ,OAET+H,EAAS,IAAItB,MAAM/B,GAEvB,IAAK5E,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBiI,EAAOjI,GAAKoC,EAAMqO,EAAKzQ,GAAIA,EAAGyQ,GAGhC,IAAIC,EAAKL,EAAOpI,GACZ0I,EAAKD,EAAG,GACRE,EAAKF,EAAG,GACRG,EAAKP,EAAUrI,EAAQ0I,EAAIC,GAI/B,IAAKjK,MAAMU,QAAQwJ,GAAK,CACtB,IAAM1G,EAAMyG,EAAIE,GAAMD,EACtB,GAAIR,IAAWpG,EAAf,SAAkC8F,GAAKY,EAAIC,EAAIE,GAA/C,GAAwBH,EAAxB,KAA4BC,EAA5B,KAUA,IATAC,EAAKhC,GAAM8B,EAAIC,EAAIE,IASZD,EAAG3Q,OAAS,IAAM0Q,EACvB,GAAIzG,GAAOyG,GAAMP,IAAWpG,EAAQ,CAClC,IAAMrC,EAAOqH,GAAc0B,EAAIC,EAAIE,GAC/B5B,SAAStH,KACPA,EAAO,EACTgJ,GAAM7G,KAAKwF,MAAMqB,EAAKhJ,GAAQ,GAAKA,EAC1BA,EAAO,IAChBgJ,GAAM7G,KAAKkG,KAAKW,GAAMhJ,GAAQ,IAAMA,SAIxCiJ,EAAG5H,MAOT,IADA,IAAI8H,EAAIF,EAAG3Q,OACJ2Q,EAAG,IAAMF,GAAIE,EAAGG,UAAWD,EAClC,KAAOF,EAAGE,EAAI,GAAKH,GAAIC,EAAG5H,QAAS8H,EAEnC,IACIX,EADAa,EAAO,IAAItK,MAAMoK,EAAI,GAIzB,IAAK/Q,EAAI,EAAGA,GAAK+Q,IAAK/Q,GACpBoQ,EAAMa,EAAKjR,GAAK,IACZ2Q,GAAK3Q,EAAI,EAAI6Q,EAAG7Q,EAAI,GAAK2Q,EAC7BP,EAAIQ,GAAK5Q,EAAI+Q,EAAIF,EAAG7Q,GAAK4Q,EAI3B,IAAK5Q,EAAI,EAAGA,EAAI4E,IAAK5E,EAEV,OADTgG,EAAIiC,EAAOjI,KACM2Q,GAAM3K,GAAKA,GAAK4K,GAC/BK,EAAKC,EAAOL,EAAI7K,EAAG,EAAG+K,IAAInR,KAAK6Q,EAAKzQ,IAIxC,OAAOiR,EAeT,OAZAT,EAAUpO,MAAQ,SAAS+O,GACzB,OAAOlR,UAAUC,QAAUkC,EAAqB,oBAAN+O,EAAmBA,EAAI1C,GAAS0C,GAAIX,GAAapO,GAG7FoO,EAAUH,OAAS,SAASc,GAC1B,OAAOlR,UAAUC,QAAUmQ,EAAsB,oBAANc,EAAmBA,EAAI1C,GAAS,CAAC0C,EAAE,GAAIA,EAAE,KAAMX,GAAaH,GAGzGG,EAAUY,WAAa,SAASD,GAC9B,OAAOlR,UAAUC,QAAUoQ,EAAyB,oBAANa,EAAmBA,EAAIxK,MAAMU,QAAQ8J,GAAK1C,GAAS1H,GAAM5D,KAAKgO,IAAM1C,GAAS0C,GAAIX,GAAaF,GAGvIE,ECnGM,SAASrG,GAAIlC,EAAQC,GAClC,IAAIiC,EACJ,QAAgB/F,IAAZ8D,EAAuB,WACLD,GADK,IACzB,2BAA4B,KAAjB7F,EAAiB,QACb,MAATA,IACI+H,EAAM/H,QAAkBgC,IAAR+F,GAAqB/H,GAASA,KACpD+H,EAAM/H,IAJe,mCAOpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAC7BkC,EAAM/H,QAAkBgC,IAAR+F,GAAqB/H,GAASA,KACpD+H,EAAM/H,IALL,+BASP,OAAO+H,EClBM,SAASD,GAAIjC,EAAQC,GAClC,IAAIgC,EACJ,QAAgB9F,IAAZ8D,EAAuB,WACLD,GADK,IACzB,2BAA4B,KAAjB7F,EAAiB,QACb,MAATA,IACI8H,EAAM9H,QAAkBgC,IAAR8F,GAAqB9H,GAASA,KACpD8H,EAAM9H,IAJe,mCAOpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAC7BiC,EAAM9H,QAAkBgC,IAAR8F,GAAqB9H,GAASA,KACpD8H,EAAM9H,IALL,+BASP,OAAO8H,ECdM,SAASmH,GAAY1I,EAAO2I,GAAgD,IAA7CvL,EAA6C,uDAAtC,EAAGO,EAAmC,uDAA3BqC,EAAMzI,OAAS,EAAGiO,EAAS,uCAGzF,IAFAA,OAAsB/J,IAAZ+J,EAAwBF,GAAmBC,GAAeC,GAE7D7H,EAAQP,GAAM,CACnB,GAAIO,EAAQP,EAAO,IAAK,CACtB,IAAMnB,EAAI0B,EAAQP,EAAO,EACnBgL,EAAIO,EAAIvL,EAAO,EACfwL,EAAIxH,KAAKyF,IAAI5K,GACbS,EAAI,GAAM0E,KAAKyH,IAAI,EAAID,EAAI,GAC3BE,EAAK,GAAM1H,KAAKC,KAAKuH,EAAIlM,GAAKT,EAAIS,GAAKT,IAAMmM,EAAInM,EAAI,EAAI,GAAK,EAAI,GAClE8M,EAAU3H,KAAKI,IAAIpE,EAAMgE,KAAKwF,MAAM+B,EAAIP,EAAI1L,EAAIT,EAAI6M,IACpDE,EAAW5H,KAAKG,IAAI5D,EAAOyD,KAAKwF,MAAM+B,GAAK1M,EAAImM,GAAK1L,EAAIT,EAAI6M,IAClEJ,GAAY1I,EAAO2I,EAAGI,EAASC,EAAUxD,GAG3C,IAAMyD,EAAIjJ,EAAM2I,GACZtR,EAAI+F,EACJoD,EAAI7C,EAKR,IAHAuL,GAAKlJ,EAAO5C,EAAMuL,GACdnD,EAAQxF,EAAMrC,GAAQsL,GAAK,GAAGC,GAAKlJ,EAAO5C,EAAMO,GAE7CtG,EAAImJ,GAAG,CAEZ,IADA0I,GAAKlJ,EAAO3I,EAAGmJ,KAAMnJ,IAAKmJ,EACnBgF,EAAQxF,EAAM3I,GAAI4R,GAAK,KAAK5R,EACnC,KAAOmO,EAAQxF,EAAMQ,GAAIyI,GAAK,KAAKzI,EAGL,IAA5BgF,EAAQxF,EAAM5C,GAAO6L,GAAUC,GAAKlJ,EAAO5C,EAAMoD,GAC3C0I,GAAKlJ,IAARQ,EAAkB7C,GAErB6C,GAAKmI,IAAGvL,EAAOoD,EAAI,GACnBmI,GAAKnI,IAAG7C,EAAQ6C,EAAI,GAE1B,OAAOR,EAGT,SAASkJ,GAAKlJ,EAAO3I,EAAGmJ,GACtB,IAAMyI,EAAIjJ,EAAM3I,GAChB2I,EAAM3I,GAAK2I,EAAMQ,GACjBR,EAAMQ,GAAKyI,ECvCE,SAASE,GAAS7J,EAAQxF,EAAGyF,GAE1C,GAAMtD,GADNqD,EAASwB,aAAatE,KAAK4C,EAAQE,EAAQC,KAC1BhI,OAAjB,CACA,IAAKuC,GAAKA,IAAM,GAAKmC,EAAI,EAAG,OAAOsF,GAAIjC,GACvC,GAAIxF,GAAK,EAAG,OAAO0H,GAAIlC,GACvB,IAAIrD,EACA5E,GAAK4E,EAAI,GAAKnC,EACdsP,EAAKhI,KAAKwF,MAAMvP,GAChBgS,EAAS7H,GAAIkH,GAAYpJ,EAAQ8J,GAAIE,SAAS,EAAGF,EAAK,IAE1D,OAAOC,GADM9H,GAAIjC,EAAOgK,SAASF,EAAK,IACZC,IAAWhS,EAAI+R,IAGpC,SAASG,GAAejK,EAAQxF,GAAqB,IAAlByF,EAAkB,uDAARF,EAClD,GAAMpD,EAAIqD,EAAO/H,OAAjB,CACA,IAAKuC,GAAKA,IAAM,GAAKmC,EAAI,EAAG,OAAQsD,EAAQD,EAAO,GAAI,EAAGA,GAC1D,GAAIxF,GAAK,EAAG,OAAQyF,EAAQD,EAAOrD,EAAI,GAAIA,EAAI,EAAGqD,GAClD,IAAIrD,EACA5E,GAAK4E,EAAI,GAAKnC,EACdsP,EAAKhI,KAAKwF,MAAMvP,GAChBgS,GAAU9J,EAAQD,EAAO8J,GAAKA,EAAI9J,GAClCkK,GAAUjK,EAAQD,EAAO8J,EAAK,GAAIA,EAAK,EAAG9J,GAC9C,OAAO+J,GAAUG,EAASH,IAAWhS,EAAI+R,ICxB5B,SAASK,GAA0BnK,EAAQiC,EAAKC,GAC7D,OAAOJ,KAAKkG,MAAM9F,EAAMD,IAAQ,GAAK4H,GAAS7J,EAAQ,KAAQ6J,GAAS7J,EAAQ,MAAS8B,KAAK4F,IAAInH,EAAMP,IAAU,EAAI,KCDxG,SAASoK,GAAepK,EAAQiC,EAAKC,GAClD,OAAOJ,KAAKkG,MAAM9F,EAAMD,IAAQ,IAAMJ,EAAU7B,GAAU8B,KAAK4F,IAAInH,EAAMP,IAAU,EAAI,KCJ1E,SAASqK,GAASrK,EAAQC,GACvC,IAAIiC,EACAmI,GAAY,EACZnK,GAAS,EACb,QAAgB/D,IAAZ8D,EAAuB,WACLD,GADK,IACzB,2BAA4B,KAAjB7F,EAAiB,UACxB+F,EACW,MAAT/F,IACI+H,EAAM/H,QAAkBgC,IAAR+F,GAAqB/H,GAASA,KACpD+H,EAAM/H,EAAOkQ,EAAWnK,IALH,mCAQpB,WACaF,GADb,IACL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAC7BkC,EAAM/H,QAAkBgC,IAAR+F,GAAqB/H,GAASA,KACpD+H,EAAM/H,EAAOkQ,EAAWnK,IAJvB,+BAQP,OAAOmK,ECpBM,SAASzI,GAAK5B,EAAQC,GACnC,IAAIM,EAAQ,EACRgB,EAAM,EACV,QAAgBpF,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,QACX,MAATA,IAAkBA,GAASA,IAAUA,MACrCoG,EAAOgB,GAAOpH,IAHK,mCAMpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAAqB7F,GAASA,IAAUA,MACzEoG,EAAOgB,GAAOpH,IAJf,+BAQP,GAAIoG,EAAO,OAAOgB,EAAMhB,ECfX,SAAS+J,GAAOtK,EAAQC,GACrC,OAAO4J,GAAS7J,EAAQ,GAAKC,G,gBCHrBiF,IAAV,SAAUA,GAAQqF,GAAlB,+EACsBA,GADtB,wDAEI,OADS7J,EADb,QAEI,gBAAOA,EAAP,QAFJ,oHAAAhD,IAAA,0EAMe,SAAS8M,GAAMD,GAC5B,OAAO7L,MAAMxB,KAAKgI,GAAQqF,ICPb,SAASE,GAASzK,EAAQC,GACvC,IAAIgC,EACAwI,GAAY,EACZvK,GAAS,EACb,QAAgB/D,IAAZ8D,EAAuB,WACLD,GADK,IACzB,2BAA4B,KAAjB7F,EAAiB,UACxB+F,EACW,MAAT/F,IACI8H,EAAM9H,QAAkBgC,IAAR8F,GAAqB9H,GAASA,KACpD8H,EAAM9H,EAAOsQ,EAAWvK,IALH,mCAQpB,WACaF,GADb,IACL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,MAC7BiC,EAAM9H,QAAkBgC,IAAR8F,GAAqB9H,GAASA,KACpD8H,EAAM9H,EAAOsQ,EAAWvK,IAJvB,+BAQP,OAAOuK,EClBM,SAASC,GAAK1K,EAAQC,GACnC,IAeI0K,EAfEC,EAAS,IAAI1G,EACnB,QAAgB/H,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,QACX,MAATA,GAAiBA,GAASA,GAC5ByQ,EAAO5G,IAAI7J,GAAQyQ,EAAOzH,IAAIhJ,IAAU,GAAK,IAHxB,mCAMpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,QACyB,OAA5CA,EAAQ8F,EAAQ9F,IAAS+F,EAAOF,KAAoB7F,GAASA,GAChEyQ,EAAO5G,IAAI7J,GAAQyQ,EAAOzH,IAAIhJ,IAAU,GAAK,IAJ5C,+BASP,IAjB4C,EAiBxC0Q,EAAY,EAjB4B,IAkBfD,GAlBe,IAkB5C,2BAAqC,oBAAzBzQ,EAAyB,KAAlBoG,EAAkB,KAC/BA,EAAQsK,IACVA,EAAYtK,EACZoK,EAAYxQ,IArB4B,8BAwB5C,OAAOwQ,EC1BM,SAASG,GAAM9K,GAAuB,IAE/C+K,EAF+C,EAAfC,EAAe,uDAANC,GACvCH,EAAQ,GAEVI,GAAQ,EAHuC,IAI/BlL,GAJ+B,IAInD,2BAA4B,KAAjB7F,EAAiB,QACtB+Q,GAAOJ,EAAMnT,KAAKqT,EAAOD,EAAU5Q,IACvC4Q,EAAW5Q,EACX+Q,GAAQ,GAPyC,8BASnD,OAAOJ,EAGF,SAASG,GAAK3N,EAAGC,GACtB,MAAO,CAACD,EAAGC,GCbE,SAAS4N,GAAMtE,EAAOC,EAAMnH,GACzCkH,GAASA,EAAOC,GAAQA,EAAMnH,GAAQhD,EAAI3E,UAAUC,QAAU,GAAK6O,EAAOD,EAAOA,EAAQ,EAAG,GAAKlK,EAAI,EAAI,GAAKgD,EAM9G,IAJA,IAAI5H,GAAK,EACL4E,EAAoD,EAAhDmF,KAAKI,IAAI,EAAGJ,KAAKkG,MAAMlB,EAAOD,GAASlH,IAC3CwL,EAAQ,IAAIzM,MAAM/B,KAEb5E,EAAI4E,GACXwO,EAAMpT,GAAK8O,EAAQ9O,EAAI4H,EAGzB,OAAOwL,ECRM,SAASC,GAAKpL,GAA6B,IAArBC,EAAqB,uDAAX5C,EAC7C,GAAuC,oBAA5B2C,EAAOjF,OAAOC,UAA0B,MAAM,IAAIrC,UAAU,0BACvE,IAAI0S,EAAI3M,MAAMxB,KAAK8C,GACbsL,EAAI,IAAI9J,aAAa6J,EAAEpT,QACN,IAAnBgI,EAAQhI,SAAcoT,EAAIA,EAAE3O,IAAIuD,GAAUA,EAAU5C,GACxD,IACIgM,EAAGkC,EADDC,EAAe,SAACzT,EAAGmJ,GAAJ,OAAUjB,EAAQoL,EAAEtT,GAAIsT,EAAEnK,KAc/C,OAZA4E,YACG5I,KAAKmO,GAAG,SAACnC,EAAGnR,GAAJ,OAAUA,KAClB8N,KAAK5F,IAAY5C,EAAY,SAACtF,EAAGmJ,GAAJ,OAAU8E,GAAiBqF,EAAEtT,GAAIsT,EAAEnK,KAAM+E,GAAeuF,IACrFrT,SAAQ,SAAC+I,EAAGnJ,GACX,IAAMgO,EAAIyF,EAAatK,OAAS/E,IAANkN,EAAkBnI,EAAImI,GAC5CtD,GAAK,SACG5J,IAANkN,GAAmBtD,EAAI,KAAGsD,EAAInI,EAAGqK,EAAIxT,GACzCuT,EAAEpK,GAAKqK,GAEPD,EAAEpK,GAAK1D,OAGN8N,ECpBM,SAASG,GAAMzL,GAA6B,IACrDiC,EADgCiE,EAAqB,uDAAX7I,EAE1CqO,GAAU,EACd,GAAuB,IAAnBxF,EAAQjO,OAAc,CACxB,IAAI0T,EADoB,MAEF3L,GAFE,IAExB,2BAA8B,KAAnB4L,EAAmB,QACtBzR,EAAQ+L,EAAQ0F,IAClBF,EACErO,EAAUlD,EAAOwR,GAAY,EACD,IAA5BtO,EAAUlD,EAAOA,MACrB8H,EAAM2J,EACND,EAAWxR,EACXuR,GAAU,IATU,mCAYnB,WACe1L,GADf,IACL,2BAA4B,KAAjB7F,EAAiB,SACtBuR,EACExF,EAAQ/L,EAAO8H,GAAO,EACI,IAA1BiE,EAAQ/L,EAAOA,MACnB8H,EAAM9H,EACNuR,GAAU,IANT,+BAUP,OAAOzJ,ECxBM,SAAS4J,GAAW7L,GAA6B,IAE1D2L,EAFqCzF,EAAqB,uDAAX7I,EACnD,GAAuB,IAAnB6I,EAAQjO,OAAc,OAAOwS,GAASzK,EAAQkG,GAElD,IAH8D,EAG1DjE,GAAO,EACP/B,GAAS,EAJiD,IAK1CF,GAL0C,IAK9D,2BAA4B,KAAjB7F,EAAiB,UACxB+F,GACE+B,EAAM,EACsB,IAA1BiE,EAAQ/L,EAAOA,GACf+L,EAAQ/L,EAAOwR,GAAY,KAC/BA,EAAWxR,EACX8H,EAAM/B,IAXoD,8BAc9D,OAAO+B,ECfM,SAAS6J,GAAS9L,GAA6B,IACxDkC,EADmCgE,EAAqB,uDAAX7I,EAE7CqO,GAAU,EACd,GAAuB,IAAnBxF,EAAQjO,OAAc,CACxB,IAAI8T,EADoB,MAEF/L,GAFE,IAExB,2BAA8B,KAAnB4L,EAAmB,QACtBzR,EAAQ+L,EAAQ0F,IAClBF,EACErO,EAAUlD,EAAO4R,GAAY,EACD,IAA5B1O,EAAUlD,EAAOA,MACrB+H,EAAM0J,EACNG,EAAW5R,EACXuR,GAAU,IATU,mCAYnB,WACe1L,GADf,IACL,2BAA4B,KAAjB7F,EAAiB,SACtBuR,EACExF,EAAQ/L,EAAO+H,GAAO,EACI,IAA1BgE,EAAQ/L,EAAOA,MACnB+H,EAAM/H,EACNuR,GAAU,IANT,+BAUP,OAAOxJ,ECxBM,SAAS8J,GAAchM,GAA6B,IAE7D+L,EAFwC7F,EAAqB,uDAAX7I,EACtD,GAAuB,IAAnB6I,EAAQjO,OAAc,OAAOoS,GAASrK,EAAQkG,GAElD,IAHiE,EAG7DhE,GAAO,EACPhC,GAAS,EAJoD,IAK7CF,GAL6C,IAKjE,2BAA4B,KAAjB7F,EAAiB,UACxB+F,GACEgC,EAAM,EACsB,IAA1BgE,EAAQ/L,EAAOA,GACf+L,EAAQ/L,EAAO4R,GAAY,KAC/BA,EAAW5R,EACX+H,EAAMhC,IAXuD,8BAcjE,OAAOgC,ECfM,SAAS+J,GAAKjM,EAAQkG,GACnC,IAAMhG,EAAQ2L,GAAW7L,EAAQkG,GACjC,OAAOhG,EAAQ,OAAI/D,EAAY+D,ECJlBgM,UAASpK,KAAKqK,QAEtB,SAASD,GAASC,GACvB,OAAO,SAAiBzL,GAEtB,IAFwD,IAA3BoJ,EAA2B,uDAAtB,EAAGsC,EAAmB,uDAAd1L,EAAMzI,OAC5C6Q,EAAIsD,GAAMtC,GAAMA,GACbhB,GAAG,CACR,IAAM/Q,EAAIoU,IAAWrD,IAAM,EAAGa,EAAIjJ,EAAMoI,EAAIgB,GAC5CpJ,EAAMoI,EAAIgB,GAAMpJ,EAAM3I,EAAI+R,GAC1BpJ,EAAM3I,EAAI+R,GAAMH,EAElB,OAAOjJ,GCVI,SAASa,GAAIvB,EAAQC,GAClC,IAAIsB,EAAM,EACV,QAAgBpF,IAAZ8D,EAAuB,WACPD,GADO,IACzB,2BAA0B,KAAjB7F,EAAiB,SACpBA,GAASA,KACXoH,GAAOpH,IAHc,mCAMpB,CACL,IADK,EACD+F,GAAS,EADR,IAEaF,GAFb,IAEL,2BAA0B,KAAjB7F,EAAiB,SACpBA,GAAS8F,EAAQ9F,IAAS+F,EAAOF,MACnCuB,GAAOpH,IAJN,+BAQP,OAAOoH,ECdM,SAAS8K,GAAUC,GAChC,KAAM3P,EAAI2P,EAAOrU,QAAS,MAAO,GACjC,IAAK,IAAIF,GAAK,EAAG+Q,EAAI7G,GAAIqK,EAAQrU,IAASoU,EAAY,IAAI3N,MAAMoK,KAAM/Q,EAAI+Q,GACxE,IAAK,IAAYnM,EAARuE,GAAK,EAAMqL,EAAMF,EAAUtU,GAAK,IAAI2G,MAAM/B,KAAMuE,EAAIvE,GAC3D4P,EAAIrL,GAAKoL,EAAOpL,GAAGnJ,GAGvB,OAAOsU,EAGT,SAASpU,GAAOkG,GACd,OAAOA,EAAElG,OCXI,SAASuU,KACtB,OAAOH,GAAUrU,WCHJ,SAASyU,GAAMzM,EAAQhB,GACpC,GAAoB,oBAATA,EAAqB,MAAM,IAAIrG,UAAU,0BACpD,IAF0C,EAEtCuH,GAAS,EAF6B,IAGtBF,GAHsB,IAG1C,2BAA4B,CAC1B,IAAKhB,EADqB,UACPkB,EAAOF,GACxB,OAAO,GAL+B,8BAQ1C,OAAO,ECRM,SAASqB,GAAKrB,EAAQhB,GACnC,GAAoB,oBAATA,EAAqB,MAAM,IAAIrG,UAAU,0BACpD,IAFyC,EAErCuH,GAAS,EAF4B,IAGrBF,GAHqB,IAGzC,2BAA4B,CAC1B,GAAIhB,EADsB,UACRkB,EAAOF,GACvB,OAAO,GAL8B,8BAQzC,OAAO,ECRM,SAASzI,GAAOyI,EAAQhB,GACrC,GAAoB,oBAATA,EAAqB,MAAM,IAAIrG,UAAU,0BACpD,IAF2C,EAErC+H,EAAQ,GACVR,GAAS,EAH8B,IAIvBF,GAJuB,IAI3C,2BAA4B,KAAjB7F,EAAiB,QACtB6E,EAAK7E,IAAS+F,EAAOF,IACvBU,EAAM/I,KAAKwC,IAN4B,8BAS3C,OAAOuG,ECTM,SAAShE,GAAIsD,EAAQ0M,GAClC,GAAuC,oBAA5B1M,EAAOjF,OAAOC,UAA0B,MAAM,IAAIrC,UAAU,0BACvE,GAAsB,oBAAX+T,EAAuB,MAAM,IAAI/T,UAAU,4BACtD,OAAO+F,MAAMxB,KAAK8C,GAAQ,SAAC7F,EAAO+F,GAAR,OAAkBwM,EAAOvS,EAAO+F,EAAOF,MCHpD,SAASc,GAAOd,EAAQa,EAAS1G,GAC9C,GAAuB,oBAAZ0G,EAAwB,MAAM,IAAIlI,UAAU,6BACvD,IACI2G,EAAMM,EADJ5E,EAAWgF,EAAOjF,OAAOC,YACfkF,GAAS,EACzB,GAAIlI,UAAUC,OAAS,EAAG,OACP+C,EAAS4E,OAC1B,GADEN,EADsB,EACtBA,KAAMnF,EADgB,EAChBA,MACJmF,EAAM,SACRY,EAEJ,KAASZ,GAAD,EAAsBtE,EAAS4E,QAA9BN,KAAaM,EAAf,EAAQzF,OAAkCmF,GAAM,OACrDnF,EAAQ0G,EAAQ1G,EAAOyF,IAAQM,EAAOF,GAExC,OAAO7F,ECZM,SAAS4M,GAAQ/G,GAC9B,GAAuC,oBAA5BA,EAAOjF,OAAOC,UAA0B,MAAM,IAAIrC,UAAU,0BACvE,OAAO+F,MAAMxB,KAAK8C,GAAQ+G,UCAb,SAAS4F,GAAW3M,GACjCA,EAAS,IAAI0E,EAAU1E,GAD6B,2BAAR4M,EAAQ,iCAARA,EAAQ,kBAEpD,cAAoBA,EAApB,eAA4B,CAAvB,IAAuB,EAAjBC,EAAK,KAAY,IACNA,GADM,IAC1B,2BAA2B,KAAhB1S,EAAgB,QACzB6F,EAAO4E,OAAOzK,IAFU,+BAK5B,OAAO6F,ECPM,SAAS8M,GAAS9M,EAAQ6M,GACvC,IAD8C,EACxC7R,EAAW6R,EAAM9R,OAAOC,YAAagJ,EAAM,IAAIU,EADP,IAE9B1E,GAF8B,IAE9C,2BAAwB,KAAbyB,EAAa,QACtB,GAAIuC,EAAID,IAAItC,GAAI,OAAO,EAEvB,IADA,IAAItH,OAAK,EAAEmF,OAAI,EACNnF,GAAT,EAAwBa,EAAS4E,QAAxBzF,MAAOmF,EAAhB,EAAgBA,KAAhB,GAA0C,OACxC,GAAIA,EAAM,MACV,GAAIlI,OAAO2V,GAAGtL,EAAGtH,GAAQ,OAAO,EAChC6J,EAAItB,IAAIvI,KARkC,8BAW9C,OAAO,ECXM,SAAS6S,GAAahN,GAAmB,2BAAR4M,EAAQ,iCAARA,EAAQ,kBACtD5M,EAAS,IAAI0E,EAAU1E,GACvB4M,EAASA,EAAOlQ,IAAIsH,IAFkC,UAG7BhE,GAH6B,IAGtDiN,EAAK,IAAK,EAAL,qBAA4B,OAAjB9S,EAAiB,YACXyS,GADW,IAC/B,2BAA4B,KAAjBC,EAAiB,QAC1B,IAAKA,EAAM9I,IAAI5J,GAAQ,CACrB6F,EAAO4E,OAAOzK,GACd,SAAS8S,IAJkB,gCAHqB,8BAWtD,OAAOjN,EAGT,SAASgE,GAAIhE,GACX,OAAOA,aAAkB0E,EAAY1E,EAAS,IAAI0E,EAAU1E,GCjB/C,SAASkN,GAASlN,EAAQ6M,GACvC,IAD8C,EACxC7R,EAAWgF,EAAOjF,OAAOC,YAAagJ,EAAM,IAAIW,IADR,IAE9BkI,GAF8B,IAE9C,2BAAuB,KACfM,EAAKC,GADU,SAErB,IAAIpJ,EAAID,IAAIoJ,GAEZ,IADA,IAAIhT,OAAK,EAAEmF,OAAI,EACNnF,GAAT,EAAwBa,EAAS4E,QAAxBzF,MAAOmF,EAAhB,EAAgBA,KAAhB,GAA0C,OACxC,GAAIA,EAAM,OAAO,EACjB,IAAM+N,EAASD,GAAOjT,GAEtB,GADA6J,EAAItB,IAAI2K,GACJjW,OAAO2V,GAAGI,EAAIE,GAAS,QAVe,8BAa9C,OAAO,EAGT,SAASD,GAAOjT,GACd,OAAiB,OAAVA,GAAmC,kBAAVA,EAAqBA,EAAM0K,UAAY1K,ECf1D,SAASmT,GAAOtN,EAAQ6M,GACrC,OAAOK,GAASL,EAAO7M,GCDV,SAASuN,KAAiB,IACvC,IAAMvJ,EAAM,IAAIU,EADuB,mBAARkI,EAAQ,yBAARA,EAAQ,gBAEvC,cAAoBA,EAApB,eAA4B,CAAvB,IAAuB,EAAjBC,EAAK,KAAY,IACVA,GADU,IAC1B,2BAAuB,KAAZvT,EAAY,QACrB0K,EAAItB,IAAIpJ,IAFgB,+BAK5B,OAAO0K,ECTM,gBAASjG,GACtB,OAAOA,GCKLyP,GAAU,KAEd,SAASC,GAAW1P,GAClB,MAAO,aAAeA,EAAI,MAG5B,SAAS2P,GAAWpL,GAClB,MAAO,eAAiBA,EAAI,IAG9B,SAASvC,GAAO4N,GACd,OAAO,SAAAxP,GAAC,OAAKwP,EAAMxP,IAGrB,SAASC,GAAOuP,EAAOC,GAGrB,OAFAA,EAAS9L,KAAKI,IAAI,EAAGyL,EAAME,YAAuB,EAATD,GAAc,EACnDD,EAAMxG,UAASyG,EAAS9L,KAAKqF,MAAMyG,IAChC,SAAAzP,GAAC,OAAKwP,EAAMxP,GAAKyP,GAG1B,SAASE,KACP,OAAQnS,KAAKoS,OAGf,SAASC,GAAKC,EAAQN,GACpB,IAAIO,EAAgB,GAChBC,EAAa,KACbC,EAAa,KACbC,EAAgB,EAChBC,EAAgB,EAChBC,EAAc,EACdX,EAA2B,qBAAXY,QAA0BA,OAAOC,iBAAmB,EAAI,EAAI,GAC5EpF,EApCI,IAoCA4E,GAjCC,IAiCiBA,GAAmB,EAAI,EAC7ClQ,EAlCK,IAkCDkQ,GApCE,IAoCiBA,EAAmB,IAAM,IAChDS,EAtCI,IAsCQT,GApCL,IAoCuBA,EAAoBR,GAAaC,GAEnE,SAASM,EAAKW,GACZ,IAAI3O,EAAuB,MAAdmO,EAAsBR,EAAM/G,MAAQ+G,EAAM/G,MAAMhP,MAAM+V,EAAOO,GAAiBP,EAAMvF,SAAY+F,EACzGS,EAAuB,MAAdR,EAAsBT,EAAMS,WAAaT,EAAMS,WAAWxW,MAAM+V,EAAOO,GAAiBpJ,GAAYsJ,EAC7GS,EAAU/M,KAAKI,IAAImM,EAAe,GAAKE,EACvCpD,EAAQwC,EAAMxC,QACd2D,GAAU3D,EAAM,GAAKyC,EACrBmB,GAAU5D,EAAMA,EAAMlT,OAAS,GAAK2V,EACpCoB,GAAYrB,EAAME,UAAYzP,GAAS2B,IAAQ4N,EAAMsB,OAAQrB,GAC7DsB,EAAYP,EAAQO,UAAYP,EAAQO,YAAcP,EACtDQ,EAAOD,EAAUE,UAAU,WAAW5G,KAAK,CAAC,OAC5C6G,EAAOH,EAAUE,UAAU,SAAS5G,KAAKxI,EAAQ2N,GAAO2B,QACxDC,EAAWF,EAAKG,OAChBC,EAAYJ,EAAKK,QAAQC,OAAO,KAAKC,KAAK,QAAS,QACnDC,EAAOR,EAAKS,OAAO,QACnBC,EAAOV,EAAKS,OAAO,QAEvBX,EAAOA,EAAK3E,MAAM2E,EAAKO,QAAQM,OAAO,OAAQ,SACzCJ,KAAK,QAAS,UACdA,KAAK,SAAU,iBAEpBP,EAAOA,EAAK7E,MAAMiF,GAElBI,EAAOA,EAAKrF,MAAMiF,EAAUE,OAAO,QAC9BC,KAAK,SAAU,gBACfA,KAAK7R,EAAI,IAAKsL,EAAIgF,IAEvB0B,EAAOA,EAAKvF,MAAMiF,EAAUE,OAAO,QAC9BC,KAAK,OAAQ,gBACbA,KAAK7R,EAAGsL,EAAIwF,GACZe,KAAK,KArEJ,IAqEU3B,EAAiB,MAnExB,IAmEgCA,EAAoB,SAAW,WAEpEU,IAAYO,IACdC,EAAOA,EAAKc,WAAWtB,GACvBU,EAAOA,EAAKY,WAAWtB,GACvBkB,EAAOA,EAAKI,WAAWtB,GACvBoB,EAAOA,EAAKE,WAAWtB,GAEvBY,EAAWA,EAASU,WAAWtB,GAC1BiB,KAAK,UAAWpC,IAChBoC,KAAK,aAAa,SAASzR,GAAK,OAAO8I,SAAS9I,EAAI6Q,EAAS7Q,IAAMuQ,EAAUvQ,EAAIyP,GAAUjS,KAAKuU,aAAa,gBAElHT,EACKG,KAAK,UAAWpC,IAChBoC,KAAK,aAAa,SAASzR,GAAK,IAAI3D,EAAImB,KAAKwU,WAAWpC,OAAQ,OAAOW,GAAWlU,GAAKyM,SAASzM,EAAIA,EAAE2D,IAAM3D,EAAIwU,EAAS7Q,IAAMyP,OAGtI2B,EAASa,SAETjB,EACKS,KAAK,IAtFH,IAsFQ3B,GAxFP,IAwF0BA,EACvBK,EAAgB,IAAMjF,EAAIiF,EAAgB,IAAMQ,EAAS,IAAMlB,EAAS,IAAMmB,EAAS,IAAM1F,EAAIiF,EAAgB,IAAMV,EAAS,IAAMkB,EAAS,IAAMC,EACrJT,EAAgB,IAAMQ,EAAS,IAAMzF,EAAIiF,EAAgB,IAAMV,EAAS,IAAMmB,EAAS,IAAM1F,EAAIiF,EAAgB,IAAMQ,EAAS,IAAMlB,EAAS,IAAMmB,GAEhKM,EACKO,KAAK,UAAW,GAChBA,KAAK,aAAa,SAASzR,GAAK,OAAOuQ,EAAUM,EAAS7Q,GAAKyP,MAEpEiC,EACKD,KAAK7R,EAAI,IAAKsL,EAAIgF,GAEvB0B,EACKH,KAAK7R,EAAGsL,EAAIwF,GACZkB,KAAKnB,GAEVM,EAAU3X,OAAOuW,IACZ8B,KAAK,OAAQ,QACbA,KAAK,YAAa,IAClBA,KAAK,cAAe,cACpBA,KAAK,cA3GF,IA2GiB3B,EAAmB,QAzGrC,IAyG+CA,EAAkB,MAAQ,UAEhFiB,EACKmB,MAAK,WAAa1U,KAAKoS,OAASiB,KA2CvC,OAxCAhB,EAAKL,MAAQ,SAASzE,GACpB,OAAOlR,UAAUC,QAAU0V,EAAQzE,EAAG8E,GAAQL,GAGhDK,EAAKpH,MAAQ,WACX,OAAOsH,EAAgBxP,MAAMxB,KAAKlF,WAAYgW,GAGhDA,EAAKE,cAAgB,SAAShF,GAC5B,OAAOlR,UAAUC,QAAUiW,EAAqB,MAALhF,EAAY,GAAKxK,MAAMxB,KAAKgM,GAAI8E,GAAQE,EAAcpP,SAGnGkP,EAAKG,WAAa,SAASjF,GACzB,OAAOlR,UAAUC,QAAUkW,EAAkB,MAALjF,EAAY,KAAOxK,MAAMxB,KAAKgM,GAAI8E,GAAQG,GAAcA,EAAWrP,SAG7GkP,EAAKI,WAAa,SAASlF,GACzB,OAAOlR,UAAUC,QAAUmW,EAAalF,EAAG8E,GAAQI,GAGrDJ,EAAKsC,SAAW,SAASpH,GACvB,OAAOlR,UAAUC,QAAUoW,EAAgBC,GAAiBpF,EAAG8E,GAAQK,GAGzEL,EAAKK,cAAgB,SAASnF,GAC5B,OAAOlR,UAAUC,QAAUoW,GAAiBnF,EAAG8E,GAAQK,GAGzDL,EAAKM,cAAgB,SAASpF,GAC5B,OAAOlR,UAAUC,QAAUqW,GAAiBpF,EAAG8E,GAAQM,GAGzDN,EAAKO,YAAc,SAASrF,GAC1B,OAAOlR,UAAUC,QAAUsW,GAAerF,EAAG8E,GAAQO,GAGvDP,EAAKJ,OAAS,SAAS1E,GACrB,OAAOlR,UAAUC,QAAU2V,GAAU1E,EAAG8E,GAAQJ,GAG3CI,EAGF,SAASuC,GAAQ5C,GACtB,OAAOK,GA9JC,EA8JSL,GAGZ,SAAS6C,GAAU7C,GACxB,OAAOK,GAjKG,EAiKSL,GAGd,SAAS8C,GAAW9C,GACzB,OAAOK,GApKI,EAoKSL,GAGf,SAAS+C,GAAS/C,GACvB,OAAOK,GAvKE,EAuKSL,GC5KpB,IAAIgD,GAAO,CAACxW,MAAO,cAEnB,SAASyW,KACP,IAAK,IAAyCjH,EAArC5R,EAAI,EAAG4E,EAAI3E,UAAUC,OAAQiR,EAAI,GAAOnR,EAAI4E,IAAK5E,EAAG,CAC3D,KAAM4R,EAAI3R,UAAUD,GAAK,KAAQ4R,KAAKT,GAAM,QAAQlK,KAAK2K,GAAI,MAAM,IAAI/P,MAAM,iBAAmB+P,GAChGT,EAAES,GAAK,GAET,OAAO,IAAIkH,GAAS3H,GAGtB,SAAS2H,GAAS3H,GAChBvN,KAAKuN,EAAIA,EAGX,SAAS4H,GAAeC,EAAWC,GACjC,OAAOD,EAAUE,OAAOnU,MAAM,SAASJ,KAAI,SAASiN,GAClD,IAAI5K,EAAO,GAAIhH,EAAI4R,EAAE7F,QAAQ,KAE7B,GADI/L,GAAK,IAAGgH,EAAO4K,EAAE7K,MAAM/G,EAAI,GAAI4R,EAAIA,EAAE7K,MAAM,EAAG/G,IAC9C4R,IAAMqH,EAAMlV,eAAe6N,GAAI,MAAM,IAAI/P,MAAM,iBAAmB+P,GACtE,MAAO,CAACuH,KAAMvH,EAAG5K,KAAMA,MA6C3B,SAASoE,GAAI+N,EAAMnS,GACjB,IAAK,IAA4BgH,EAAxBhO,EAAI,EAAG4E,EAAIuU,EAAKjZ,OAAWF,EAAI4E,IAAK5E,EAC3C,IAAKgO,EAAImL,EAAKnZ,IAAIgH,OAASA,EACzB,OAAOgH,EAAE5L,MAKf,SAAS6J,GAAIkN,EAAMnS,EAAMoS,GACvB,IAAK,IAAIpZ,EAAI,EAAG4E,EAAIuU,EAAKjZ,OAAQF,EAAI4E,IAAK5E,EACxC,GAAImZ,EAAKnZ,GAAGgH,OAASA,EAAM,CACzBmS,EAAKnZ,GAAK4Y,GAAMO,EAAOA,EAAKpS,MAAM,EAAG/G,GAAGqZ,OAAOF,EAAKpS,MAAM/G,EAAI,IAC9D,MAIJ,OADgB,MAAZoZ,GAAkBD,EAAKvZ,KAAK,CAACoH,KAAMA,EAAM5E,MAAOgX,IAC7CD,EAzDTL,GAASzX,UAAYwX,GAASxX,UAAY,CACxCyB,YAAagW,GACbQ,GAAI,SAASC,EAAUH,GACrB,IAEIxH,EAFAT,EAAIvN,KAAKuN,EACTqI,EAAIT,GAAeQ,EAAW,GAAIpI,GAElCnR,GAAK,EACL4E,EAAI4U,EAAEtZ,OAGV,KAAID,UAAUC,OAAS,GAAvB,CAOA,GAAgB,MAAZkZ,GAAwC,oBAAbA,EAAyB,MAAM,IAAIvX,MAAM,qBAAuBuX,GAC/F,OAASpZ,EAAI4E,GACX,GAAIgN,GAAK2H,EAAWC,EAAExZ,IAAImZ,KAAMhI,EAAES,GAAK3F,GAAIkF,EAAES,GAAI2H,EAASvS,KAAMoS,QAC3D,GAAgB,MAAZA,EAAkB,IAAKxH,KAAKT,EAAGA,EAAES,GAAK3F,GAAIkF,EAAES,GAAI2H,EAASvS,KAAM,MAG1E,OAAOpD,KAZL,OAAS5D,EAAI4E,GAAG,IAAKgN,GAAK2H,EAAWC,EAAExZ,IAAImZ,QAAUvH,EAAIxG,GAAI+F,EAAES,GAAI2H,EAASvS,OAAQ,OAAO4K,GAc/FsF,KAAM,WACJ,IAAIA,EAAO,GAAI/F,EAAIvN,KAAKuN,EACxB,IAAK,IAAIS,KAAKT,EAAG+F,EAAKtF,GAAKT,EAAES,GAAG7K,QAChC,OAAO,IAAI+R,GAAS5B,IAEtB/T,KAAM,SAASgW,EAAMM,GACnB,IAAK7U,EAAI3E,UAAUC,OAAS,GAAK,EAAG,IAAK,IAAgC0E,EAAGgN,EAA/BpG,EAAO,IAAI7E,MAAM/B,GAAI5E,EAAI,EAASA,EAAI4E,IAAK5E,EAAGwL,EAAKxL,GAAKC,UAAUD,EAAI,GACnH,IAAK4D,KAAKuN,EAAEpN,eAAeoV,GAAO,MAAM,IAAItX,MAAM,iBAAmBsX,GACrE,IAAuBnZ,EAAI,EAAG4E,GAAzBgN,EAAIhO,KAAKuN,EAAEgI,IAAoBjZ,OAAQF,EAAI4E,IAAK5E,EAAG4R,EAAE5R,GAAGoC,MAAMvC,MAAM4Z,EAAMjO,IAEjF3L,MAAO,SAASsZ,EAAMM,EAAMjO,GAC1B,IAAK5H,KAAKuN,EAAEpN,eAAeoV,GAAO,MAAM,IAAItX,MAAM,iBAAmBsX,GACrE,IAAK,IAAIvH,EAAIhO,KAAKuN,EAAEgI,GAAOnZ,EAAI,EAAG4E,EAAIgN,EAAE1R,OAAQF,EAAI4E,IAAK5E,EAAG4R,EAAE5R,GAAGoC,MAAMvC,MAAM4Z,EAAMjO,KAuBxEqN,U,QCnFf,SAASa,MAEM,gBAASC,GACtB,OAAmB,MAAZA,EAAmBD,GAAO,WAC/B,OAAO9V,KAAKgW,cAAcD,KCEf,SAAShR,GAAM3C,GAC5B,OAAY,MAALA,EAAY,GAAKW,MAAMU,QAAQrB,GAAKA,EAAIW,MAAMxB,KAAKa,GCP5D,SAAS4C,KACP,MAAO,GAGM,gBAAS+Q,GACtB,OAAmB,MAAZA,EAAmB/Q,GAAQ,WAChC,OAAOhF,KAAKiW,iBAAiBF,KCIlB,ICVA,YAASA,GACtB,OAAO,WACL,OAAO/V,KAAKkW,QAAQH,KAIjB,SAASI,GAAaJ,GAC3B,OAAO,SAASK,GACd,OAAOA,EAAKF,QAAQH,ICNxB,IAAIM,GAAOtT,MAAMtF,UAAU4Y,KAQ3B,SAASC,KACP,OAAOtW,KAAKuW,kBAGC,ICZX3a,GAASmH,MAAMtF,UAAU7B,OAE7B,SAAS4a,KACP,OAAOzT,MAAMxB,KAAKvB,KAAKwW,UASV,ICdA,YAASC,GACtB,OAAO,IAAI1T,MAAM0T,EAAOna,SCMnB,SAASoa,GAAUC,EAAQC,GAChC5W,KAAK6W,cAAgBF,EAAOE,cAC5B7W,KAAK8W,aAAeH,EAAOG,aAC3B9W,KAAK+W,MAAQ,KACb/W,KAAKgX,QAAUL,EACf3W,KAAKiX,SAAWL,EAGlBF,GAAUjZ,UAAY,CACpByB,YAAawX,GACbQ,YAAa,SAASC,GAAS,OAAOnX,KAAKgX,QAAQI,aAAaD,EAAOnX,KAAK+W,QAC5EK,aAAc,SAASD,EAAOlT,GAAQ,OAAOjE,KAAKgX,QAAQI,aAAaD,EAAOlT,IAC9E+R,cAAe,SAASD,GAAY,OAAO/V,KAAKgX,QAAQhB,cAAcD,IACtEE,iBAAkB,SAASF,GAAY,OAAO/V,KAAKgX,QAAQf,iBAAiBF,KCpB/D,gBAAS3T,GACtB,OAAO,WACL,OAAOA,ICEX,SAASiV,GAAUV,EAAQvN,EAAO2K,EAAO0C,EAAQ5C,EAAMhH,GASrD,IARA,IACIuJ,EADAha,EAAI,EAEJkb,EAAclO,EAAM9M,OACpBib,EAAa1K,EAAKvQ,OAKfF,EAAImb,IAAcnb,GACnBga,EAAOhN,EAAMhN,KACfga,EAAKa,SAAWpK,EAAKzQ,GACrBqa,EAAOra,GAAKga,GAEZrC,EAAM3X,GAAK,IAAIsa,GAAUC,EAAQ9J,EAAKzQ,IAK1C,KAAOA,EAAIkb,IAAelb,GACpBga,EAAOhN,EAAMhN,MACfyX,EAAKzX,GAAKga,GAKhB,SAASoB,GAAQb,EAAQvN,EAAO2K,EAAO0C,EAAQ5C,EAAMhH,EAAMpQ,GACzD,IAAIL,EACAga,EAKAqB,EAJAC,EAAiB,IAAIzP,IACrBqP,EAAclO,EAAM9M,OACpBib,EAAa1K,EAAKvQ,OAClBqb,EAAY,IAAI5U,MAAMuU,GAK1B,IAAKlb,EAAI,EAAGA,EAAIkb,IAAelb,GACzBga,EAAOhN,EAAMhN,MACfub,EAAUvb,GAAKqb,EAAWhb,EAAI8C,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,GAAS,GAChEsO,EAAetP,IAAIqP,GACrB5D,EAAKzX,GAAKga,EAEVsB,EAAerP,IAAIoP,EAAUrB,IAQnC,IAAKha,EAAI,EAAGA,EAAImb,IAAcnb,EAC5Bqb,EAAWhb,EAAI8C,KAAKoX,EAAQ9J,EAAKzQ,GAAIA,EAAGyQ,GAAQ,IAC5CuJ,EAAOsB,EAAelQ,IAAIiQ,KAC5BhB,EAAOra,GAAKga,EACZA,EAAKa,SAAWpK,EAAKzQ,GACrBsb,EAAezO,OAAOwO,IAEtB1D,EAAM3X,GAAK,IAAIsa,GAAUC,EAAQ9J,EAAKzQ,IAK1C,IAAKA,EAAI,EAAGA,EAAIkb,IAAelb,GACxBga,EAAOhN,EAAMhN,KAAQsb,EAAelQ,IAAImQ,EAAUvb,MAAQga,IAC7DvC,EAAKzX,GAAKga,GAKhB,SAASQ,GAAMR,GACb,OAAOA,EAAKa,SAgDd,SAASW,GAAU/K,GACjB,MAAuB,kBAATA,GAAqB,WAAYA,EAC3CA,EACA9J,MAAMxB,KAAKsL,GCzGjB,SAASnL,GAAUC,EAAGC,GACpB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAID,GAAKC,EAAI,EAAIC,ICtBhC,ICAJgW,GAAQ,+BAEJ,IACbC,IAAK,6BACLD,MAAOA,GACPE,MAAO,+BACPC,IAAK,uCACLC,MAAO,iCCLM,YAAS7U,GACtB,IAAI8U,EAAS9U,GAAQ,GAAIhH,EAAI8b,EAAO/P,QAAQ,KAE5C,OADI/L,GAAK,GAAqC,WAA/B8b,EAAS9U,EAAKD,MAAM,EAAG/G,MAAiBgH,EAAOA,EAAKD,MAAM/G,EAAI,IACtE+b,GAAWhY,eAAe+X,GAAU,CAACE,MAAOD,GAAWD,GAASG,MAAOjV,GAAQA,GCHxF,SAASkV,GAAWlV,GAClB,OAAO,WACLpD,KAAKuY,gBAAgBnV,IAIzB,SAASoV,GAAaC,GACpB,OAAO,WACLzY,KAAK0Y,kBAAkBD,EAASL,MAAOK,EAASJ,QAIpD,SAASM,GAAavV,EAAM5E,GAC1B,OAAO,WACLwB,KAAK4Y,aAAaxV,EAAM5E,IAI5B,SAASqa,GAAeJ,EAAUja,GAChC,OAAO,WACLwB,KAAK8Y,eAAeL,EAASL,MAAOK,EAASJ,MAAO7Z,IAIxD,SAASua,GAAa3V,EAAM5E,GAC1B,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WACjB,MAALyJ,EAAW9F,KAAKuY,gBAAgBnV,GAC/BpD,KAAK4Y,aAAaxV,EAAM0C,IAIjC,SAASkT,GAAeP,EAAUja,GAChC,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WACjB,MAALyJ,EAAW9F,KAAK0Y,kBAAkBD,EAASL,MAAOK,EAASJ,OAC1DrY,KAAK8Y,eAAeL,EAASL,MAAOK,EAASJ,MAAOvS,IAI9C,IC1CA,YAASsQ,GACtB,OAAQA,EAAKS,eAAiBT,EAAKS,cAAcoC,aACzC7C,EAAK8C,UAAY9C,GAClBA,EAAK6C,aCDd,SAASE,GAAY/V,GACnB,OAAO,WACLpD,KAAKoZ,MAAMC,eAAejW,IAI9B,SAASkW,GAAclW,EAAM5E,EAAO+a,GAClC,OAAO,WACLvZ,KAAKoZ,MAAMI,YAAYpW,EAAM5E,EAAO+a,IAIxC,SAASE,GAAcrW,EAAM5E,EAAO+a,GAClC,OAAO,WACL,IAAIzT,EAAItH,EAAMvC,MAAM+D,KAAM3D,WACjB,MAALyJ,EAAW9F,KAAKoZ,MAAMC,eAAejW,GACpCpD,KAAKoZ,MAAMI,YAAYpW,EAAM0C,EAAGyT,IAalC,SAASG,GAAWtD,EAAMhT,GAC/B,OAAOgT,EAAKgD,MAAMO,iBAAiBvW,IAC5B6V,GAAY7C,GAAMwD,iBAAiBxD,EAAM,MAAMuD,iBAAiBvW,GCjCzE,SAASyW,GAAezW,GACtB,OAAO,kBACEpD,KAAKoD,IAIhB,SAAS0W,GAAiB1W,EAAM5E,GAC9B,OAAO,WACLwB,KAAKoD,GAAQ5E,GAIjB,SAASub,GAAiB3W,EAAM5E,GAC9B,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WACjB,MAALyJ,SAAkB9F,KAAKoD,GACtBpD,KAAKoD,GAAQ0C,GChBtB,SAASkU,GAAWC,GAClB,OAAOA,EAAO3E,OAAOnU,MAAM,SAG7B,SAAS+Y,GAAU9D,GACjB,OAAOA,EAAK8D,WAAa,IAAIC,GAAU/D,GAGzC,SAAS+D,GAAU/D,GACjBpW,KAAKoa,MAAQhE,EACbpW,KAAKqa,OAASL,GAAW5D,EAAK7B,aAAa,UAAY,IAuBzD,SAAS+F,GAAWlE,EAAMmE,GAExB,IADA,IAAIC,EAAON,GAAU9D,GAAOha,GAAK,EAAG4E,EAAIuZ,EAAMje,SACrCF,EAAI4E,GAAGwZ,EAAKzT,IAAIwT,EAAMne,IAGjC,SAASqe,GAAcrE,EAAMmE,GAE3B,IADA,IAAIC,EAAON,GAAU9D,GAAOha,GAAK,EAAG4E,EAAIuZ,EAAMje,SACrCF,EAAI4E,GAAGwZ,EAAK/F,OAAO8F,EAAMne,IAGpC,SAASse,GAAYH,GACnB,OAAO,WACLD,GAAWta,KAAMua,IAIrB,SAASI,GAAaJ,GACpB,OAAO,WACLE,GAAcza,KAAMua,IAIxB,SAASK,GAAgBL,EAAO/b,GAC9B,OAAO,YACJA,EAAMvC,MAAM+D,KAAM3D,WAAaie,GAAaG,IAAeza,KAAMua,IA5CtEJ,GAAU1c,UAAY,CACpBsJ,IAAK,SAAS3D,GACJpD,KAAKqa,OAAOlS,QAAQ/E,GACpB,IACNpD,KAAKqa,OAAOre,KAAKoH,GACjBpD,KAAKoa,MAAMxB,aAAa,QAAS5Y,KAAKqa,OAAOpZ,KAAK,QAGtDwT,OAAQ,SAASrR,GACf,IAAIhH,EAAI4D,KAAKqa,OAAOlS,QAAQ/E,GACxBhH,GAAK,IACP4D,KAAKqa,OAAOQ,OAAOze,EAAG,GACtB4D,KAAKoa,MAAMxB,aAAa,QAAS5Y,KAAKqa,OAAOpZ,KAAK,QAGtD6Z,SAAU,SAAS1X,GACjB,OAAOpD,KAAKqa,OAAOlS,QAAQ/E,IAAS,IC7BxC,SAAS2X,KACP/a,KAAKgb,YAAc,GAGrB,SAASC,GAAazc,GACpB,OAAO,WACLwB,KAAKgb,YAAcxc,GAIvB,SAAS0c,GAAa1c,GACpB,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WAC1B2D,KAAKgb,YAAmB,MAALlV,EAAY,GAAKA,GCbxC,SAASqV,KACPnb,KAAKob,UAAY,GAGnB,SAASC,GAAa7c,GACpB,OAAO,WACLwB,KAAKob,UAAY5c,GAIrB,SAAS8c,GAAa9c,GACpB,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WAC1B2D,KAAKob,UAAiB,MAALtV,EAAY,GAAKA,GCbtC,SAASyV,KACHvb,KAAKwb,aAAaxb,KAAKwU,WAAW0C,YAAYlX,MCDpD,SAASyb,KACHzb,KAAK0b,iBAAiB1b,KAAKwU,WAAW4C,aAAapX,KAAMA,KAAKwU,WAAWmH,YCE/E,SAASC,GAAexY,GACtB,OAAO,WACL,IAAI8V,EAAWlZ,KAAK6W,cAChBgF,EAAM7b,KAAK8W,aACf,OAAO+E,IAAQhE,IAASqB,EAAS4C,gBAAgBhF,eAAiBe,GAC5DqB,EAAS6C,cAAc3Y,GACvB8V,EAAS8C,gBAAgBH,EAAKzY,IAIxC,SAAS6Y,GAAaxD,GACpB,OAAO,WACL,OAAOzY,KAAK6W,cAAcmF,gBAAgBvD,EAASL,MAAOK,EAASJ,QAIxD,gBAASjV,GACtB,IAAIqV,EAAWyD,GAAU9Y,GACzB,OAAQqV,EAASJ,MACX4D,GACAL,IAAgBnD,ICpBxB,SAAS0D,KACP,OAAO,KCJT,SAAS1H,KACP,IAAIkC,EAAS3W,KAAKwU,WACdmC,GAAQA,EAAOyF,YAAYpc,MCFjC,SAASqc,KACP,IAAIC,EAAQtc,KAAKuc,WAAU,GAAQ5F,EAAS3W,KAAKwU,WACjD,OAAOmC,EAASA,EAAOS,aAAakF,EAAOtc,KAAKwb,aAAec,EAGjE,SAASE,KACP,IAAIF,EAAQtc,KAAKuc,WAAU,GAAO5F,EAAS3W,KAAKwU,WAChD,OAAOmC,EAASA,EAAOS,aAAakF,EAAOtc,KAAKwb,aAAec,ECDjE,SAASnH,GAAeC,GACtB,OAAOA,EAAUE,OAAOnU,MAAM,SAASJ,KAAI,SAASiN,GAClD,IAAI5K,EAAO,GAAIhH,EAAI4R,EAAE7F,QAAQ,KAE7B,OADI/L,GAAK,IAAGgH,EAAO4K,EAAE7K,MAAM/G,EAAI,GAAI4R,EAAIA,EAAE7K,MAAM,EAAG/G,IAC3C,CAACmZ,KAAMvH,EAAG5K,KAAMA,MAI3B,SAASqZ,GAAS9G,GAChB,OAAO,WACL,IAAID,EAAK1V,KAAK0c,KACd,GAAKhH,EAAL,CACA,IAAK,IAAkC/X,EAA9B4H,EAAI,EAAGnJ,GAAK,EAAG+Q,EAAIuI,EAAGpZ,OAAWiJ,EAAI4H,IAAK5H,EAC7C5H,EAAI+X,EAAGnQ,GAAMoQ,EAASJ,MAAQ5X,EAAE4X,OAASI,EAASJ,MAAS5X,EAAEyF,OAASuS,EAASvS,KAGjFsS,IAAKtZ,GAAKuB,EAFVqC,KAAK2c,oBAAoBhf,EAAE4X,KAAM5X,EAAEif,SAAUjf,EAAEkf,WAK7CzgB,EAAGsZ,EAAGpZ,OAASF,SACT4D,KAAK0c,OAIrB,SAASI,GAAMnH,EAAUnX,EAAOqe,GAC9B,OAAO,WACL,IAAoBlf,EAAhB+X,EAAK1V,KAAK0c,KAASE,EAhC3B,SAAyBA,GACvB,OAAO,SAASG,GACdH,EAASrd,KAAKS,KAAM+c,EAAO/c,KAAKiX,WA8BE+F,CAAgBxe,GAClD,GAAIkX,EAAI,IAAK,IAAInQ,EAAI,EAAG4H,EAAIuI,EAAGpZ,OAAQiJ,EAAI4H,IAAK5H,EAC9C,IAAK5H,EAAI+X,EAAGnQ,IAAIgQ,OAASI,EAASJ,MAAQ5X,EAAEyF,OAASuS,EAASvS,KAI5D,OAHApD,KAAK2c,oBAAoBhf,EAAE4X,KAAM5X,EAAEif,SAAUjf,EAAEkf,SAC/C7c,KAAKid,iBAAiBtf,EAAE4X,KAAM5X,EAAEif,SAAWA,EAAUjf,EAAEkf,QAAUA,QACjElf,EAAEa,MAAQA,GAIdwB,KAAKid,iBAAiBtH,EAASJ,KAAMqH,EAAUC,GAC/Clf,EAAI,CAAC4X,KAAMI,EAASJ,KAAMnS,KAAMuS,EAASvS,KAAM5E,MAAOA,EAAOoe,SAAUA,EAAUC,QAASA,GACrFnH,EACAA,EAAG1Z,KAAK2B,GADJqC,KAAK0c,KAAO,CAAC/e,ICzC1B,SAASuf,GAAc9G,EAAMb,EAAM4H,GACjC,IAAItK,EAASoG,GAAY7C,GACrB2G,EAAQlK,EAAOuK,YAEE,oBAAVL,EACTA,EAAQ,IAAIA,EAAMxH,EAAM4H,IAExBJ,EAAQlK,EAAOqG,SAASmE,YAAY,SAChCF,GAAQJ,EAAMO,UAAU/H,EAAM4H,EAAOI,QAASJ,EAAOK,YAAaT,EAAMU,OAASN,EAAOM,QACvFV,EAAMO,UAAU/H,GAAM,GAAO,IAGpCa,EAAK8G,cAAcH,GAGrB,SAASW,GAAiBnI,EAAM4H,GAC9B,OAAO,WACL,OAAOD,GAAcld,KAAMuV,EAAM4H,IAIrC,SAASQ,GAAiBpI,EAAM4H,GAC9B,OAAO,WACL,OAAOD,GAAcld,KAAMuV,EAAM4H,EAAOlhB,MAAM+D,KAAM3D,aAIzC,I,gBC7BA,iGACJiN,EAAStJ,KAAK4d,QAASrY,EAAI,EAAG4H,EAAI7D,EAAOhN,OADrC,YAC6CiJ,EAAI4H,GADjD,iBAEF/D,EAAQE,EAAO/D,GAAInJ,EAAI,EAAG4E,EAAIoI,EAAM9M,OAFlC,YAEgDF,EAAI4E,GAFpD,sBAGLoV,EAAOhN,EAAMhN,IAHR,gBAGY,OAHZ,SAGkBga,EAHlB,SAEyDha,EAFzD,yBACsDmJ,EADtD,6DCmCR,IAAIsY,GAAO,CAAC,MAEZ,SAASC,GAAUxU,EAAQyU,GAChC/d,KAAK4d,QAAUtU,EACftJ,KAAKge,SAAWD,EAGlB,SAASxK,KACP,OAAO,IAAIuK,GAAU,CAAC,CAAC5E,SAAS4C,kBAAmB+B,IAOrDC,GAAUrgB,UAAY8V,GAAU9V,UAAV,cACpByB,YAAa4e,GACb3J,OCjDa,SAASA,GACA,oBAAXA,IAAuBA,EAAS4B,GAAS5B,IAEpD,IAAK,IAAI7K,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,IAAIlb,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAC3F,IAAK,IAAiF6Q,EAAM8H,EAAnF9U,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAQ6hB,EAAWF,EAAU1Y,GAAK,IAAIxC,MAAM/B,GAAmB5E,EAAI,EAAGA,EAAI4E,IAAK5E,GAC9Gga,EAAOhN,EAAMhN,MAAQ8hB,EAAU/J,EAAO5U,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,MAClE,aAAcgN,IAAM8H,EAAQjH,SAAWb,EAAKa,UAChDkH,EAAS/hB,GAAK8hB,GAKpB,OAAO,IAAIJ,GAAUG,EAAWje,KAAKge,WDsCrCvK,U5B3Ca,SAASU,GACYA,EAAZ,oBAAXA,EAPb,SAAkBA,GAChB,OAAO,WACL,OAAOpP,GAAMoP,EAAOlY,MAAM+D,KAAM3D,aAKS+hB,CAASjK,GACtCkK,GAAYlK,GAE1B,IAAK,IAAI7K,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,GAAIF,EAAU,GAAIxY,EAAI,EAAGA,EAAI4H,IAAK5H,EAC/F,IAAK,IAAyC6Q,EAArChN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAcF,EAAI,EAAGA,EAAI4E,IAAK5E,GAC9Dga,EAAOhN,EAAMhN,MACf6hB,EAAUjiB,KAAKmY,EAAO5U,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,IACnD2U,EAAQ/hB,KAAKoa,IAKnB,OAAO,IAAI0H,GAAUG,EAAWF,I4B+BhCO,Y1BxCa,SAASC,GACtB,OAAOve,KAAKmU,OAAgB,MAAToK,EAAgBjI,GAXrC,SAAmBiI,GACjB,OAAO,WACL,OAAOlI,GAAK9W,KAAKS,KAAKwW,SAAU+H,IAU5BC,CAA2B,oBAAVD,EAAuBA,EAAQpI,GAAaoI,M0BuCnEE,ezBzCa,SAASF,GACtB,OAAOve,KAAKyT,UAAmB,MAAT8K,EAAgB/H,GAPxC,SAAwB+H,GACtB,OAAO,WACL,OAAO3iB,GAAO2D,KAAKS,KAAKwW,SAAU+H,IAM9BG,CAAgC,oBAAVH,EAAuBA,EAAQpI,GAAaoI,MyBwCxE3iB,OErDa,SAAS2iB,GACD,oBAAVA,IAAsBA,EAAQI,GAAQJ,IAEjD,IAAK,IAAIjV,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,IAAIlb,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAC3F,IAAK,IAAuE6Q,EAAnEhN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAQ6hB,EAAWF,EAAU1Y,GAAK,GAAUnJ,EAAI,EAAGA,EAAI4E,IAAK5E,GAC3Fga,EAAOhN,EAAMhN,KAAOmiB,EAAMhf,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,IAC1D+U,EAASniB,KAAKoa,GAKpB,OAAO,IAAI0H,GAAUG,EAAWje,KAAKge,WF2CrCnR,KrBqBa,SAASrO,EAAO/B,GAC7B,IAAKJ,UAAUC,OAAQ,OAAOyG,MAAMxB,KAAKvB,KAAM4W,IAE/C,IAAI7O,EAAOtL,EAAM+a,GAAUH,GACvB0G,EAAU/d,KAAKge,SACf1U,EAAStJ,KAAK4d,QAEG,oBAAVpf,IAAsBA,EAAQqM,GAASrM,IAElD,IAAK,IAAI2O,EAAI7D,EAAOhN,OAAQma,EAAS,IAAI1T,MAAMoK,GAAI4G,EAAQ,IAAIhR,MAAMoK,GAAI0G,EAAO,IAAI9Q,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAAG,CAC/G,IAAIoR,EAASoH,EAAQxY,GACjB6D,EAAQE,EAAO/D,GACf+R,EAAclO,EAAM9M,OACpBuQ,EAAO+K,GAAUpZ,EAAMe,KAAKoX,EAAQA,GAAUA,EAAOM,SAAU1R,EAAGwY,IAClExG,EAAa1K,EAAKvQ,OAClBsiB,EAAa7K,EAAMxO,GAAK,IAAIxC,MAAMwU,GAClCsH,EAAcpI,EAAOlR,GAAK,IAAIxC,MAAMwU,GACpCuH,EAAYjL,EAAKtO,GAAK,IAAIxC,MAAMuU,GAEpCvP,EAAK4O,EAAQvN,EAAOwV,EAAYC,EAAaC,EAAWjS,EAAMpQ,GAK9D,IAAK,IAAoB2S,EAAUnL,EAA1BkK,EAAK,EAAGsC,EAAK,EAAmBtC,EAAKoJ,IAAcpJ,EAC1D,GAAIiB,EAAWwP,EAAWzQ,GAAK,CAE7B,IADIA,GAAMsC,IAAIA,EAAKtC,EAAK,KACflK,EAAO4a,EAAYpO,OAAUA,EAAK8G,IAC3CnI,EAAS2H,MAAQ9S,GAAQ,MAQ/B,OAHAwS,EAAS,IAAIqH,GAAUrH,EAAQsH,IACxBgB,OAAShL,EAChB0C,EAAOuI,MAAQnL,EACR4C,GqBxDP1C,MvBvDa,WACb,OAAO,IAAI+J,GAAU9d,KAAK+e,QAAU/e,KAAK4d,QAAQ7c,IAAIke,IAASjf,KAAKge,WuBuDnEnK,KGxDa,WACb,OAAO,IAAIiK,GAAU9d,KAAKgf,OAAShf,KAAK4d,QAAQ7c,IAAIke,IAASjf,KAAKge,WHwDlE/c,KI5Da,SAASie,EAASC,EAAUC,GACzC,IAAIrL,EAAQ/T,KAAK+T,QAAS0C,EAASzW,KAAM6T,EAAO7T,KAAK6T,OAYrD,MAXuB,oBAAZqL,GACTnL,EAAQmL,EAAQnL,MACLA,EAAQA,EAAMR,aAEzBQ,EAAQA,EAAMC,OAAOkL,EAAU,IAEjB,MAAZC,IACF1I,EAAS0I,EAAS1I,MACNA,EAASA,EAAOlD,aAEhB,MAAV6L,EAAgBvL,EAAKY,SAAe2K,EAAOvL,GACxCE,GAAS0C,EAAS1C,EAAMlF,MAAM4H,GAAQ9C,QAAU8C,GJgDvD5H,MK3Da,SAASmE,GAGtB,IAFA,IAAIO,EAAYP,EAAQO,UAAYP,EAAQO,YAAcP,EAEjDqM,EAAUrf,KAAK4d,QAAS0B,EAAU/L,EAAUqK,QAAS2B,EAAKF,EAAQ/iB,OAAQkjB,EAAKF,EAAQhjB,OAAQ6Q,EAAIhH,KAAKG,IAAIiZ,EAAIC,GAAKC,EAAS,IAAI1c,MAAMwc,GAAKha,EAAI,EAAGA,EAAI4H,IAAK5H,EACpK,IAAK,IAAmG6Q,EAA/FsJ,EAASL,EAAQ9Z,GAAIoa,EAASL,EAAQ/Z,GAAIvE,EAAI0e,EAAOpjB,OAAQuS,EAAQ4Q,EAAOla,GAAK,IAAIxC,MAAM/B,GAAU5E,EAAI,EAAGA,EAAI4E,IAAK5E,GACxHga,EAAOsJ,EAAOtjB,IAAMujB,EAAOvjB,MAC7ByS,EAAMzS,GAAKga,GAKjB,KAAO7Q,EAAIga,IAAMha,EACfka,EAAOla,GAAK8Z,EAAQ9Z,GAGtB,OAAO,IAAIuY,GAAU2B,EAAQzf,KAAKge,WL6ClCzK,UAhBF,WACE,OAAOvT,MAgBP2T,MM/Da,WAEb,IAAK,IAAIrK,EAAStJ,KAAK4d,QAASrY,GAAK,EAAG4H,EAAI7D,EAAOhN,SAAUiJ,EAAI4H,GAC/D,IAAK,IAA8DiJ,EAA1DhN,EAAQE,EAAO/D,GAAInJ,EAAIgN,EAAM9M,OAAS,EAAG2H,EAAOmF,EAAMhN,KAAYA,GAAK,IAC1Ega,EAAOhN,EAAMhN,MACX6H,GAA6C,EAArCmS,EAAKwJ,wBAAwB3b,IAAWA,EAAKuQ,WAAW4C,aAAahB,EAAMnS,GACvFA,EAAOmS,GAKb,OAAOpW,MNqDPkK,KpB9Da,SAASK,GAGtB,SAASsV,EAAYle,EAAGC,GACtB,OAAOD,GAAKC,EAAI2I,EAAQ5I,EAAEsV,SAAUrV,EAAEqV,WAAatV,GAAKC,EAHrD2I,IAASA,EAAU7I,IAMxB,IAAK,IAAI4H,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQwjB,EAAa,IAAI/c,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAAG,CAC/F,IAAK,IAAmF6Q,EAA/EhN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAQyjB,EAAYD,EAAWva,GAAK,IAAIxC,MAAM/B,GAAU5E,EAAI,EAAGA,EAAI4E,IAAK5E,GACxGga,EAAOhN,EAAMhN,MACf2jB,EAAU3jB,GAAKga,GAGnB2J,EAAU7V,KAAK2V,GAGjB,OAAO,IAAI/B,GAAUgC,EAAY9f,KAAKge,UAAUrK,SoB+ChDpU,KnBjEa,WACb,IAAIiW,EAAWnZ,UAAU,GAGzB,OAFAA,UAAU,GAAK2D,KACfwV,EAASvZ,MAAM,KAAMI,WACd2D,MmB8DPggB,MOlEa,WACb,OAAOjd,MAAMxB,KAAKvB,OPkElBoW,KQnEa,WAEb,IAAK,IAAI9M,EAAStJ,KAAK4d,QAASrY,EAAI,EAAG4H,EAAI7D,EAAOhN,OAAQiJ,EAAI4H,IAAK5H,EACjE,IAAK,IAAI6D,EAAQE,EAAO/D,GAAInJ,EAAI,EAAG4E,EAAIoI,EAAM9M,OAAQF,EAAI4E,IAAK5E,EAAG,CAC/D,IAAIga,EAAOhN,EAAMhN,GACjB,GAAIga,EAAM,OAAOA,EAIrB,OAAO,MR2DP6J,KSpEa,WACb,IADwB,EACpBA,EAAO,EADa,IAELjgB,MAFK,IAExB,sCAA2BigB,GAFH,8BAGxB,OAAOA,GTkEPjb,MUrEa,WACb,OAAQhF,KAAKoW,QVqEb1B,KWtEa,SAASc,GAEtB,IAAK,IAAIlM,EAAStJ,KAAK4d,QAASrY,EAAI,EAAG4H,EAAI7D,EAAOhN,OAAQiJ,EAAI4H,IAAK5H,EACjE,IAAK,IAAgD6Q,EAA5ChN,EAAQE,EAAO/D,GAAInJ,EAAI,EAAG4E,EAAIoI,EAAM9M,OAAcF,EAAI4E,IAAK5E,GAC9Dga,EAAOhN,EAAMhN,KAAIoZ,EAASjW,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,GAI/D,OAAOpJ,MX+DPiU,KhB7Ba,SAAS7Q,EAAM5E,GAC5B,IAAIia,EAAWyD,GAAU9Y,GAEzB,GAAI/G,UAAUC,OAAS,EAAG,CACxB,IAAI8Z,EAAOpW,KAAKoW,OAChB,OAAOqC,EAASJ,MACVjC,EAAK8J,eAAezH,EAASL,MAAOK,EAASJ,OAC7CjC,EAAK7B,aAAakE,GAG1B,OAAOzY,KAAK0U,MAAe,MAATlW,EACXia,EAASJ,MAAQG,GAAeF,GAAgC,oBAAV9Z,EACtDia,EAASJ,MAAQW,GAAiBD,GAClCN,EAASJ,MAAQQ,GAAiBF,IAAgBF,EAAUja,KgBiBnE4a,MdlDa,SAAShW,EAAM5E,EAAO+a,GACnC,OAAOld,UAAUC,OAAS,EACpB0D,KAAK0U,MAAe,MAATlW,EACL2a,GAA+B,oBAAV3a,EACrBib,GACAH,IAAelW,EAAM5E,EAAmB,MAAZ+a,EAAmB,GAAKA,IAC1DG,GAAW1Z,KAAKoW,OAAQhT,Ic6C9BkE,SbrDa,SAASlE,EAAM5E,GAC5B,OAAOnC,UAAUC,OAAS,EACpB0D,KAAK0U,MAAe,MAATlW,EACPqb,GAAkC,oBAAVrb,EACxBub,GACAD,IAAkB1W,EAAM5E,IAC5BwB,KAAKoW,OAAOhT,IagDlB+c,QZba,SAAS/c,EAAM5E,GAC5B,IAAI+b,EAAQP,GAAW5W,EAAO,IAE9B,GAAI/G,UAAUC,OAAS,EAAG,CAExB,IADA,IAAIke,EAAON,GAAUla,KAAKoW,QAASha,GAAK,EAAG4E,EAAIuZ,EAAMje,SAC5CF,EAAI4E,GAAG,IAAKwZ,EAAKM,SAASP,EAAMne,IAAK,OAAO,EACrD,OAAO,EAGT,OAAO4D,KAAK0U,MAAuB,oBAAVlW,EACnBoc,GAAkBpc,EAClBkc,GACAC,IAAcJ,EAAO/b,KYE3B4V,KX1Da,SAAS5V,GACtB,OAAOnC,UAAUC,OACX0D,KAAK0U,KAAc,MAATlW,EACNuc,IAA+B,oBAAVvc,EACrB0c,GACAD,IAAczc,IAClBwB,KAAKoW,OAAO4E,aWqDlBoF,KV3Da,SAAS5hB,GACtB,OAAOnC,UAAUC,OACX0D,KAAK0U,KAAc,MAATlW,EACN2c,IAA+B,oBAAV3c,EACrB8c,GACAD,IAAc7c,IAClBwB,KAAKoW,OAAOgF,WUsDlBG,MTzEa,WACb,OAAOvb,KAAK0U,KAAK6G,KSyEjBE,MR1Ea,WACb,OAAOzb,KAAK0U,KAAK+G,KQ0EjBzH,OY7Ea,SAAS5Q,GACtB,IAAInE,EAAyB,oBAATmE,EAAsBA,EAAOid,GAAQjd,GACzD,OAAOpD,KAAKmU,QAAO,WACjB,OAAOnU,KAAKkX,YAAYjY,EAAOhD,MAAM+D,KAAM3D,gBZ2E7CgY,ONzEa,SAASjR,EAAMkd,GAC5B,IAAIrhB,EAAyB,oBAATmE,EAAsBA,EAAOid,GAAQjd,GACrD+Q,EAAmB,MAAVmM,EAAiBnE,GAAiC,oBAAXmE,EAAwBA,EAASvK,GAASuK,GAC9F,OAAOtgB,KAAKmU,QAAO,WACjB,OAAOnU,KAAKoX,aAAanY,EAAOhD,MAAM+D,KAAM3D,WAAY8X,EAAOlY,MAAM+D,KAAM3D,YAAc,UMsE3FoY,OL5Ea,WACb,OAAOzU,KAAK0U,KAAKD,KK4EjB6H,MJxEa,SAASiE,GACtB,OAAOvgB,KAAKmU,OAAOoM,EAAO/D,GAAsBH,KIwEhDzF,ManFa,SAASpY,GACtB,OAAOnC,UAAUC,OACX0D,KAAKsH,SAAS,WAAY9I,GAC1BwB,KAAKoW,OAAOa,UbiFlBvB,GHpCa,SAASC,EAAUnX,EAAOqe,GACvC,IAA+CzgB,EAAyB4R,EAApEoH,EAAYD,GAAeQ,EAAW,IAAQ3U,EAAIoU,EAAU9Y,OAEhE,KAAID,UAAUC,OAAS,GAAvB,CAaA,IADAoZ,EAAKlX,EAAQse,GAAQL,GAChBrgB,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG4D,KAAK0U,KAAKgB,EAAGN,EAAUhZ,GAAIoC,EAAOqe,IAC1D,OAAO7c,KAbL,IAAI0V,EAAK1V,KAAKoW,OAAOsG,KACrB,GAAIhH,EAAI,IAAK,IAA0B/X,EAAtB4H,EAAI,EAAG4H,EAAIuI,EAAGpZ,OAAWiJ,EAAI4H,IAAK5H,EACjD,IAAKnJ,EAAI,EAAGuB,EAAI+X,EAAGnQ,GAAInJ,EAAI4E,IAAK5E,EAC9B,IAAK4R,EAAIoH,EAAUhZ,IAAImZ,OAAS5X,EAAE4X,MAAQvH,EAAE5K,OAASzF,EAAEyF,KACrD,OAAOzF,EAAEa,OG6BjByW,SFxDa,SAASM,EAAM4H,GAC5B,OAAOnd,KAAK0U,MAAwB,oBAAXyI,EACnBQ,GACAD,IAAkBnI,EAAM4H,MEsD7B/d,OAAOC,SAAWmhB,IAGNjN,UcvFA,YAASwC,GACtB,MAA2B,kBAAbA,EACR,IAAI+H,GAAU,CAAC,CAAC5E,SAASlD,cAAcD,KAAa,CAACmD,SAAS4C,kBAC9D,IAAIgC,GAAU,CAAC,CAAC/H,IAAY8H,KCHvB4C,GAAa,CAACC,SAAS,GACvBC,GAAoB,CAACC,SAAS,EAAMF,SAAS,GAEnD,SAASG,GAAc9D,GAC5BA,EAAM+D,2BAGO,gBAAS/D,GACtBA,EAAMgE,iBACNhE,EAAM+D,4BCRO,YAASE,GACtB,IAAInD,EAAOmD,EAAK9H,SAAS4C,gBACrBvI,EAAYY,GAAO6M,GAAMtL,GAAG,iBAAkBuL,GAASN,IACvD,kBAAmB9C,EACrBtK,EAAUmC,GAAG,mBAAoBuL,GAASN,KAE1C9C,EAAKqD,WAAarD,EAAKzE,MAAM+H,cAC7BtD,EAAKzE,MAAM+H,cAAgB,SAIxB,SAASC,GAAQJ,EAAMK,GAC5B,IAAIxD,EAAOmD,EAAK9H,SAAS4C,gBACrBvI,EAAYY,GAAO6M,GAAMtL,GAAG,iBAAkB,MAC9C2L,IACF9N,EAAUmC,GAAG,aAAcuL,GAASN,IACpCW,YAAW,WAAa/N,EAAUmC,GAAG,aAAc,QAAU,IAE3D,kBAAmBmI,EACrBtK,EAAUmC,GAAG,mBAAoB,OAEjCmI,EAAKzE,MAAM+H,cAAgBtD,EAAKqD,kBACzBrD,EAAKqD,YCzBD,gBAAShiB,EAAalB,EAASP,GAC5CyB,EAAYzB,UAAYO,EAAQP,UAAYA,EAC5CA,EAAUyB,YAAcA,GAGnB,SAASqiB,GAAO5K,EAAQ6K,GAC7B,IAAI/jB,EAAYhC,OAAOwD,OAAO0X,EAAOlZ,WACrC,IAAK,IAAIhB,KAAO+kB,EAAY/jB,EAAUhB,GAAO+kB,EAAW/kB,GACxD,OAAOgB,ECNF,SAASgkB,MAET,IAAIC,GAAS,GACTC,GAAW,EAAID,GAEtBE,GAAM,sBACNC,GAAM,gDACNC,GAAM,iDACNC,GAAQ,qBACRC,GAAe,IAAIC,OAAO,UAAY,CAACL,GAAKA,GAAKA,IAAO,QACxDM,GAAe,IAAID,OAAO,UAAY,CAACH,GAAKA,GAAKA,IAAO,QACxDK,GAAgB,IAAIF,OAAO,WAAa,CAACL,GAAKA,GAAKA,GAAKC,IAAO,QAC/DO,GAAgB,IAAIH,OAAO,WAAa,CAACH,GAAKA,GAAKA,GAAKD,IAAO,QAC/DQ,GAAe,IAAIJ,OAAO,UAAY,CAACJ,GAAKC,GAAKA,IAAO,QACxDQ,GAAgB,IAAIL,OAAO,WAAa,CAACJ,GAAKC,GAAKA,GAAKD,IAAO,QAE/DU,GAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAiBf,SAASC,KACP,OAAO5rB,KAAK6rB,MAAMC,YAOpB,SAASC,KACP,OAAO/rB,KAAK6rB,MAAMG,YAGL,SAASC,GAAMhZ,GAC5B,IAAI9F,EAAG+e,EAEP,OADAjZ,GAAUA,EAAS,IAAIqC,OAAO6W,eACtBhf,EAAI4U,GAAMqK,KAAKnZ,KAAYiZ,EAAI/e,EAAE,GAAG7Q,OAAQ6Q,EAAIkf,SAASlf,EAAE,GAAI,IAAW,IAAN+e,EAAUI,GAAKnf,GAC/E,IAAN+e,EAAU,IAAIK,GAAKpf,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAAN+e,EAAUM,GAAKrf,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAAN+e,EAAUM,GAAMrf,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAI6U,GAAaoK,KAAKnZ,IAAW,IAAIsZ,GAAIpf,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAI+U,GAAakK,KAAKnZ,IAAW,IAAIsZ,GAAW,IAAPpf,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIgV,GAAciK,KAAKnZ,IAAWuZ,GAAKrf,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAIiV,GAAcgK,KAAKnZ,IAAWuZ,GAAY,IAAPrf,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIkV,GAAa+J,KAAKnZ,IAAWwZ,GAAKtf,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAImV,GAAc8J,KAAKnZ,IAAWwZ,GAAKtf,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEoV,GAAMpiB,eAAe8S,GAAUqZ,GAAK/J,GAAMtP,IAC/B,gBAAXA,EAA2B,IAAIsZ,GAAI1qB,IAAKA,IAAKA,IAAK,GAClD,KAGR,SAASyqB,GAAKtrB,GACZ,OAAO,IAAIurB,GAAIvrB,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,GAG1D,SAASwrB,GAAK5c,EAAGnG,EAAG7H,EAAGD,GAErB,OADIA,GAAK,IAAGiO,EAAInG,EAAI7H,EAAIC,KACjB,IAAI0qB,GAAI3c,EAAGnG,EAAG7H,EAAGD,GAGnB,SAAS+qB,GAAW/uB,GAEzB,OADMA,aAAa8jB,KAAQ9jB,EAAIsuB,GAAMtuB,IAChCA,EAEE,IAAI4uB,IADX5uB,EAAIA,EAAEkuB,OACWjc,EAAGjS,EAAE8L,EAAG9L,EAAEiE,EAAGjE,EAAEgvB,SAFjB,IAAIJ,GAKd,SAASV,GAAIjc,EAAGnG,EAAG7H,EAAG+qB,GAC3B,OAA4B,IAArBtwB,UAAUC,OAAeowB,GAAW9c,GAAK,IAAI2c,GAAI3c,EAAGnG,EAAG7H,EAAc,MAAX+qB,EAAkB,EAAIA,GAGlF,SAASJ,GAAI3c,EAAGnG,EAAG7H,EAAG+qB,GAC3B3sB,KAAK4P,GAAKA,EACV5P,KAAKyJ,GAAKA,EACVzJ,KAAK4B,GAAKA,EACV5B,KAAK2sB,SAAWA,EA2BlB,SAASC,KACP,MAAO,IAAMC,GAAI7sB,KAAK4P,GAAKid,GAAI7sB,KAAKyJ,GAAKojB,GAAI7sB,KAAK4B,GAGpD,SAASkrB,KACP,IAAInrB,EAAI3B,KAAK2sB,QACb,OAAc,KADQhrB,EAAIorB,MAAMprB,GAAK,EAAIwE,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAG3E,KAC/C,OAAS,SACrBwE,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAMxL,KAAK4P,IAAM,IAAM,KACtDzJ,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAMxL,KAAKyJ,IAAM,IAAM,KACtDtD,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAMxL,KAAK4B,IAAM,KACzC,IAAND,EAAU,IAAM,KAAOA,EAAI,KAGpC,SAASkrB,GAAIruB,GAEX,QADAA,EAAQ2H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAMhN,IAAU,KACvC,GAAK,IAAM,IAAMA,EAAM0E,SAAS,IAGlD,SAASupB,GAAKO,EAAGvrB,EAAGyqB,EAAGvqB,GAIrB,OAHIA,GAAK,EAAGqrB,EAAIvrB,EAAIyqB,EAAIrqB,IACfqqB,GAAK,GAAKA,GAAK,EAAGc,EAAIvrB,EAAII,IAC1BJ,GAAK,IAAGurB,EAAInrB,KACd,IAAIorB,GAAID,EAAGvrB,EAAGyqB,EAAGvqB,GAGnB,SAASurB,GAAWvvB,GACzB,GAAIA,aAAasvB,GAAK,OAAO,IAAIA,GAAItvB,EAAEqvB,EAAGrvB,EAAE8D,EAAG9D,EAAEuuB,EAAGvuB,EAAEgvB,SAEtD,GADMhvB,aAAa8jB,KAAQ9jB,EAAIsuB,GAAMtuB,KAChCA,EAAG,OAAO,IAAIsvB,GACnB,GAAItvB,aAAasvB,GAAK,OAAOtvB,EAE7B,IAAIiS,GADJjS,EAAIA,EAAEkuB,OACIjc,EAAI,IACVnG,EAAI9L,EAAE8L,EAAI,IACV7H,EAAIjE,EAAEiE,EAAI,IACV0E,EAAMH,KAAKG,IAAIsJ,EAAGnG,EAAG7H,GACrB2E,EAAMJ,KAAKI,IAAIqJ,EAAGnG,EAAG7H,GACrBorB,EAAInrB,IACJJ,EAAI8E,EAAMD,EACV4lB,GAAK3lB,EAAMD,GAAO,EAUtB,OATI7E,GACaurB,EAAXpd,IAAMrJ,GAAUkD,EAAI7H,GAAKH,EAAc,GAATgI,EAAI7H,GAC7B6H,IAAMlD,GAAU3E,EAAIgO,GAAKnO,EAAI,GAC5BmO,EAAInG,GAAKhI,EAAI,EACvBA,GAAKyqB,EAAI,GAAM3lB,EAAMD,EAAM,EAAIC,EAAMD,EACrC0mB,GAAK,IAELvrB,EAAIyqB,EAAI,GAAKA,EAAI,EAAI,EAAIc,EAEpB,IAAIC,GAAID,EAAGvrB,EAAGyqB,EAAGvuB,EAAEgvB,SAGrB,SAASQ,GAAIH,EAAGvrB,EAAGyqB,EAAGS,GAC3B,OAA4B,IAArBtwB,UAAUC,OAAe4wB,GAAWF,GAAK,IAAIC,GAAID,EAAGvrB,EAAGyqB,EAAc,MAAXS,EAAkB,EAAIA,GAGzF,SAASM,GAAID,EAAGvrB,EAAGyqB,EAAGS,GACpB3sB,KAAKgtB,GAAKA,EACVhtB,KAAKyB,GAAKA,EACVzB,KAAKksB,GAAKA,EACVlsB,KAAK2sB,SAAWA,EAyClB,SAASS,GAAQJ,EAAGxN,EAAI6N,GACtB,OAGY,KAHJL,EAAI,GAAKxN,GAAM6N,EAAK7N,GAAMwN,EAAI,GAChCA,EAAI,IAAMK,EACVL,EAAI,IAAMxN,GAAM6N,EAAK7N,IAAO,IAAMwN,GAAK,GACvCxN,GCjXD,SAAS8N,GAAMC,EAAIC,EAAIC,EAAIC,EAAIC,GACpC,IAAIC,EAAKL,EAAKA,EAAIM,EAAKD,EAAKL,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAIK,EAAKC,GAAML,GAC9B,EAAI,EAAII,EAAK,EAAIC,GAAMJ,GACvB,EAAI,EAAIF,EAAK,EAAIK,EAAK,EAAIC,GAAMH,EACjCG,EAAKF,GAAM,EDoKnBG,GAAOrM,GAAOwK,GAAO,CACnB3Y,KAAM,SAASya,GACb,OAAOtyB,OAAOgF,OAAO,IAAIT,KAAKd,YAAac,KAAM+tB,IAEnDC,YAAa,WACX,OAAOhuB,KAAK6rB,MAAMmC,eAEpBnB,IAAKjB,GACLE,UAAWF,GACXqC,UASF,WACE,OAAOf,GAAWltB,MAAMiuB,aATxBjC,UAAWD,GACX7oB,SAAU6oB,KA6DZ+B,GAAOvB,GAAKV,GAAKtK,GAAOE,GAAO,CAC7BE,SAAU,SAASjU,GAEjB,OADAA,EAAS,MAALA,EAAYiU,GAAWxb,KAAK4F,IAAI4V,GAAUjU,GACvC,IAAI6e,GAAIvsB,KAAK4P,EAAIlC,EAAG1N,KAAKyJ,EAAIiE,EAAG1N,KAAK4B,EAAI8L,EAAG1N,KAAK2sB,UAE1DjL,OAAQ,SAAShU,GAEf,OADAA,EAAS,MAALA,EAAYgU,GAASvb,KAAK4F,IAAI2V,GAAQhU,GACnC,IAAI6e,GAAIvsB,KAAK4P,EAAIlC,EAAG1N,KAAKyJ,EAAIiE,EAAG1N,KAAK4B,EAAI8L,EAAG1N,KAAK2sB,UAE1Dd,IAAK,WACH,OAAO7rB,MAETguB,YAAa,WACX,OAAS,IAAOhuB,KAAK4P,GAAK5P,KAAK4P,EAAI,QAC1B,IAAO5P,KAAKyJ,GAAKzJ,KAAKyJ,EAAI,QAC1B,IAAOzJ,KAAK4B,GAAK5B,KAAK4B,EAAI,OAC3B,GAAK5B,KAAK2sB,SAAW3sB,KAAK2sB,SAAW,GAE/CE,IAAKD,GACLd,UAAWc,GACXZ,UAAWc,GACX5pB,SAAU4pB,MAiEZgB,GAAOb,GAAKE,GAAK5L,GAAOE,GAAO,CAC7BE,SAAU,SAASjU,GAEjB,OADAA,EAAS,MAALA,EAAYiU,GAAWxb,KAAK4F,IAAI4V,GAAUjU,GACvC,IAAIuf,GAAIjtB,KAAKgtB,EAAGhtB,KAAKyB,EAAGzB,KAAKksB,EAAIxe,EAAG1N,KAAK2sB,UAElDjL,OAAQ,SAAShU,GAEf,OADAA,EAAS,MAALA,EAAYgU,GAASvb,KAAK4F,IAAI2V,GAAQhU,GACnC,IAAIuf,GAAIjtB,KAAKgtB,EAAGhtB,KAAKyB,EAAGzB,KAAKksB,EAAIxe,EAAG1N,KAAK2sB,UAElDd,IAAK,WACH,IAAImB,EAAIhtB,KAAKgtB,EAAI,IAAqB,KAAdhtB,KAAKgtB,EAAI,GAC7BvrB,EAAIsrB,MAAMC,IAAMD,MAAM/sB,KAAKyB,GAAK,EAAIzB,KAAKyB,EACzCyqB,EAAIlsB,KAAKksB,EACTmB,EAAKnB,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAKzqB,EACjC+d,EAAK,EAAI0M,EAAImB,EACjB,OAAO,IAAId,GACTa,GAAQJ,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAKxN,EAAI6N,GAC1CD,GAAQJ,EAAGxN,EAAI6N,GACfD,GAAQJ,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAKxN,EAAI6N,GACzCrtB,KAAK2sB,UAGTqB,YAAa,WACX,OAAQ,GAAKhuB,KAAKyB,GAAKzB,KAAKyB,GAAK,GAAKsrB,MAAM/sB,KAAKyB,KACzC,GAAKzB,KAAKksB,GAAKlsB,KAAKksB,GAAK,GACzB,GAAKlsB,KAAK2sB,SAAW3sB,KAAK2sB,SAAW,GAE/CsB,UAAW,WACT,IAAItsB,EAAI3B,KAAK2sB,QACb,OAAc,KADQhrB,EAAIorB,MAAMprB,GAAK,EAAIwE,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAG3E,KAC/C,OAAS,UACpB3B,KAAKgtB,GAAK,GAAK,KACA,KAAfhtB,KAAKyB,GAAK,GAAW,MACN,KAAfzB,KAAKksB,GAAK,GAAW,KACf,IAANvqB,EAAU,IAAM,KAAOA,EAAI,SChWvB,gBAAS0C,GACtB,IAAIrD,EAAIqD,EAAO/H,OAAS,EACxB,OAAO,SAAS0R,GACd,IAAI5R,EAAI4R,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAGhN,EAAI,GAAKmF,KAAKwF,MAAMqC,EAAIhN,GAChEysB,EAAKppB,EAAOjI,GACZsxB,EAAKrpB,EAAOjI,EAAI,GAChBoxB,EAAKpxB,EAAI,EAAIiI,EAAOjI,EAAI,GAAK,EAAIqxB,EAAKC,EACtCC,EAAKvxB,EAAI4E,EAAI,EAAIqD,EAAOjI,EAAI,GAAK,EAAIsxB,EAAKD,EAC9C,OAAOH,IAAOtf,EAAI5R,EAAI4E,GAAKA,EAAGwsB,EAAIC,EAAIC,EAAIC,KCd/B,YAAStpB,GACtB,IAAIrD,EAAIqD,EAAO/H,OACf,OAAO,SAAS0R,GACd,IAAI5R,EAAI+J,KAAKwF,QAAQqC,GAAK,GAAK,IAAMA,EAAIA,GAAKhN,GAC1CwsB,EAAKnpB,GAAQjI,EAAI4E,EAAI,GAAKA,GAC1BysB,EAAKppB,EAAOjI,EAAI4E,GAChB0sB,EAAKrpB,GAAQjI,EAAI,GAAK4E,GACtB2sB,EAAKtpB,GAAQjI,EAAI,GAAK4E,GAC1B,OAAOssB,IAAOtf,EAAI5R,EAAI4E,GAAKA,EAAGwsB,EAAIC,EAAIC,EAAIC,KCV/B,YAAAvrB,GAAC,OAAI,kBAAMA,ICE1B,SAAS8rB,GAAOvsB,EAAGa,GACjB,OAAO,SAASwL,GACd,OAAOrM,EAAIqM,EAAIxL,GAUZ,SAAS2rB,GAAIxsB,EAAGC,GACrB,IAAIY,EAAIZ,EAAID,EACZ,OAAOa,EAAI0rB,GAAOvsB,EAAGa,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAM2D,KAAKqF,MAAMhJ,EAAI,KAAOA,GAAKqI,GAASkiB,MAAMprB,GAAKC,EAAID,GAGnG,SAASysB,GAAMznB,GACpB,OAAoB,KAAZA,GAAKA,GAAW0nB,GAAU,SAAS1sB,EAAGC,GAC5C,OAAOA,EAAID,EAbf,SAAqBA,EAAGC,EAAG+E,GACzB,OAAOhF,EAAIwE,KAAK4F,IAAIpK,EAAGgF,GAAI/E,EAAIuE,KAAK4F,IAAInK,EAAG+E,GAAKhF,EAAGgF,EAAI,EAAIA,EAAG,SAASqH,GACrE,OAAO7H,KAAK4F,IAAIpK,EAAIqM,EAAIpM,EAAG+E,IAWZ2nB,CAAY3sB,EAAGC,EAAG+E,GAAKkE,GAASkiB,MAAMprB,GAAKC,EAAID,IAInD,SAAS0sB,GAAQ1sB,EAAGC,GACjC,IAAIY,EAAIZ,EAAID,EACZ,OAAOa,EAAI0rB,GAAOvsB,EAAGa,GAAKqI,GAASkiB,MAAMprB,GAAKC,EAAID,GCtBrC,gBAAU4sB,EAAS5nB,GAChC,IAAIslB,EAAQmC,GAAMznB,GAElB,SAASklB,EAAI3gB,EAAOsjB,GAClB,IAAI5e,EAAIqc,GAAO/gB,EAAQujB,GAASvjB,IAAQ0E,GAAI4e,EAAMC,GAASD,IAAM5e,GAC7DnG,EAAIwiB,EAAM/gB,EAAMzB,EAAG+kB,EAAI/kB,GACvB7H,EAAIqqB,EAAM/gB,EAAMtJ,EAAG4sB,EAAI5sB,GACvB+qB,EAAU0B,GAAQnjB,EAAMyhB,QAAS6B,EAAI7B,SACzC,OAAO,SAAS3e,GAKd,OAJA9C,EAAM0E,EAAIA,EAAE5B,GACZ9C,EAAMzB,EAAIA,EAAEuE,GACZ9C,EAAMtJ,EAAIA,EAAEoM,GACZ9C,EAAMyhB,QAAUA,EAAQ3e,GACjB9C,EAAQ,IAMnB,OAFA2gB,EAAIuC,MAAQG,EAEL1C,EAnBM,CAoBZ,GAEH,SAAS6C,GAAUC,GACjB,OAAO,SAASC,GACd,IAIIxyB,EAAG6vB,EAJHjrB,EAAI4tB,EAAOtyB,OACXsT,EAAI,IAAI7M,MAAM/B,GACdyI,EAAI,IAAI1G,MAAM/B,GACdY,EAAI,IAAImB,MAAM/B,GAElB,IAAK5E,EAAI,EAAGA,EAAI4E,IAAK5E,EACnB6vB,EAAQwC,GAASG,EAAOxyB,IACxBwT,EAAExT,GAAK6vB,EAAMrc,GAAK,EAClBnG,EAAErN,GAAK6vB,EAAMxiB,GAAK,EAClB7H,EAAExF,GAAK6vB,EAAMrqB,GAAK,EAMpB,OAJAgO,EAAI+e,EAAO/e,GACXnG,EAAIklB,EAAOllB,GACX7H,EAAI+sB,EAAO/sB,GACXqqB,EAAMU,QAAU,EACT,SAAS3e,GAId,OAHAie,EAAMrc,EAAIA,EAAE5B,GACZie,EAAMxiB,EAAIA,EAAEuE,GACZie,EAAMrqB,EAAIA,EAAEoM,GACLie,EAAQ,KAKd,IAAI4C,GAAWH,GAAUpB,IACrBwB,GAAiBJ,GAAUK,ICtDvB,YAASptB,EAAGC,GACpBA,IAAGA,EAAI,IACZ,IAEIxF,EAFA4E,EAAIW,EAAIwE,KAAKG,IAAI1E,EAAEtF,OAAQqF,EAAErF,QAAU,EACvC8N,EAAIxI,EAAEuB,QAEV,OAAO,SAAS6K,GACd,IAAK5R,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGgO,EAAEhO,GAAKuF,EAAEvF,IAAM,EAAI4R,GAAKpM,EAAExF,GAAK4R,EACvD,OAAO5D,IAIJ,SAAS4kB,GAAc5sB,GAC5B,OAAO6sB,YAAYC,OAAO9sB,MAAQA,aAAa+sB,UCTlC,gBAASxtB,EAAGC,GACzB,OAAQotB,GAAcptB,GAAKwtB,GAAcC,IAAc1tB,EAAGC,IAGrD,SAASytB,GAAa1tB,EAAGC,GAC9B,IAIIxF,EAJAkzB,EAAK1tB,EAAIA,EAAEtF,OAAS,EACpBizB,EAAK5tB,EAAIwE,KAAKG,IAAIgpB,EAAI3tB,EAAErF,QAAU,EAClC8F,EAAI,IAAIW,MAAMwsB,GACdnlB,EAAI,IAAIrH,MAAMusB,GAGlB,IAAKlzB,EAAI,EAAGA,EAAImzB,IAAMnzB,EAAGgG,EAAEhG,GAAKoC,GAAMmD,EAAEvF,GAAIwF,EAAExF,IAC9C,KAAOA,EAAIkzB,IAAMlzB,EAAGgO,EAAEhO,GAAKwF,EAAExF,GAE7B,OAAO,SAAS4R,GACd,IAAK5R,EAAI,EAAGA,EAAImzB,IAAMnzB,EAAGgO,EAAEhO,GAAKgG,EAAEhG,GAAG4R,GACrC,OAAO5D,GCnBI,gBAASzI,EAAGC,GACzB,IAAIY,EAAI,IAAIgtB,KACZ,OAAO7tB,GAAKA,EAAGC,GAAKA,EAAG,SAASoM,GAC9B,OAAOxL,EAAEitB,QAAQ9tB,GAAK,EAAIqM,GAAKpM,EAAIoM,GAAIxL,ICH5B,YAASb,EAAGC,GACzB,OAAOD,GAAKA,EAAGC,GAAKA,EAAG,SAASoM,GAC9B,OAAOrM,GAAK,EAAIqM,GAAKpM,EAAIoM,ICAd,YAASrM,EAAGC,GACzB,IAEI8L,EAFAtR,EAAI,GACJgO,EAAI,GAMR,IAAKsD,KAHK,OAAN/L,GAA2B,kBAANA,IAAgBA,EAAI,IACnC,OAANC,GAA2B,kBAANA,IAAgBA,EAAI,IAEnCA,EACJ8L,KAAK/L,EACPvF,EAAEsR,GAAKlP,GAAMmD,EAAE+L,GAAI9L,EAAE8L,IAErBtD,EAAEsD,GAAK9L,EAAE8L,GAIb,OAAO,SAASM,GACd,IAAKN,KAAKtR,EAAGgO,EAAEsD,GAAKtR,EAAEsR,GAAGM,GACzB,OAAO5D,IClBPslB,GAAM,8CACNC,GAAM,IAAI1N,OAAOyN,GAAInzB,OAAQ,KAclB,ICbXqzB,GACAC,GDYW,YAASluB,EAAGC,GACzB,IACIkuB,EACAC,EACAC,EAHAC,EAAKP,GAAIQ,UAAYP,GAAIO,UAAY,EAIrC9zB,GAAK,EACLqF,EAAI,GACJ0uB,EAAI,GAMR,IAHAxuB,GAAQ,GAAIC,GAAQ,IAGZkuB,EAAKJ,GAAItD,KAAKzqB,MACdouB,EAAKJ,GAAIvD,KAAKxqB,MACfouB,EAAKD,EAAGxrB,OAAS0rB,IACpBD,EAAKpuB,EAAEuB,MAAM8sB,EAAID,GACbvuB,EAAErF,GAAIqF,EAAErF,IAAM4zB,EACbvuB,IAAIrF,GAAK4zB,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxBtuB,EAAErF,GAAIqF,EAAErF,IAAM2zB,EACbtuB,IAAIrF,GAAK2zB,GAEdtuB,IAAIrF,GAAK,KACT+zB,EAAEn0B,KAAK,CAACI,EAAGA,EAAGgG,EAAGgC,GAAO0rB,EAAIC,MAE9BE,EAAKN,GAAIO,UAYX,OARID,EAAKruB,EAAEtF,SACT0zB,EAAKpuB,EAAEuB,MAAM8sB,GACTxuB,EAAErF,GAAIqF,EAAErF,IAAM4zB,EACbvuB,IAAIrF,GAAK4zB,GAKTvuB,EAAEnF,OAAS,EAAK6zB,EAAE,GA7C3B,SAAavuB,GACX,OAAO,SAASoM,GACd,OAAOpM,EAAEoM,GAAK,IA4CVoiB,CAAID,EAAE,GAAG/tB,GApDjB,SAAcR,GACZ,OAAO,WACL,OAAOA,GAmDHyuB,CAAKzuB,IACJA,EAAIuuB,EAAE7zB,OAAQ,SAAS0R,GACtB,IAAK,IAAWrQ,EAAPvB,EAAI,EAAMA,EAAIwF,IAAKxF,EAAGqF,GAAG9D,EAAIwyB,EAAE/zB,IAAIA,GAAKuB,EAAEyE,EAAE4L,GACrD,OAAOvM,EAAER,KAAK,OEnDT,YAASU,EAAGC,GACzB,IAAkBwI,EAAd4D,SAAWpM,EACf,OAAY,MAALA,GAAmB,YAANoM,EAAkBnD,GAASjJ,IAClC,WAANoM,EAAiB5J,GACZ,WAAN4J,GAAmB5D,EAAI6hB,GAAMrqB,KAAOA,EAAIwI,EAAGyhB,IAAO5R,GAClDrY,aAAaqqB,GAAQJ,GACrBjqB,aAAa4tB,KAAOc,GACpBtB,GAAcptB,GAAKwtB,GACnBrsB,MAAMU,QAAQ7B,GAAKytB,GACE,oBAAdztB,EAAEsH,SAAgD,oBAAftH,EAAEsB,UAA2B6pB,MAAMnrB,GAAKtG,GAClF8I,IAAQzC,EAAGC,ICpBJ,YAASmb,GAEtB,IADA,IAAIwT,EACGA,EAAcxT,EAAMwT,aAAaxT,EAAQwT,EAChD,OAAOxT,GCDM,YAASA,EAAO3G,GAG7B,GAFA2G,EAAQwT,GAAYxT,QACPvc,IAAT4V,IAAoBA,EAAO2G,EAAMyT,eACjCpa,EAAM,CACR,IAAI0B,EAAM1B,EAAKqa,iBAAmBra,EAClC,GAAI0B,EAAI4Y,eAAgB,CACtB,IAAIC,EAAQ7Y,EAAI4Y,iBAGhB,OAFAC,EAAMvuB,EAAI2a,EAAM6T,QAASD,EAAMhqB,EAAIoW,EAAM8T,QAElC,EADPF,EAAQA,EAAMG,gBAAgB1a,EAAK2a,eAAeC,YACpC5uB,EAAGuuB,EAAMhqB,GAEzB,GAAIyP,EAAK6a,sBAAuB,CAC9B,IAAIC,EAAO9a,EAAK6a,wBAChB,MAAO,CAAClU,EAAM6T,QAAUM,EAAK/uB,KAAOiU,EAAK+a,WAAYpU,EAAM8T,QAAUK,EAAKE,IAAMhb,EAAKib,YAGzF,MAAO,CAACtU,EAAMuU,MAAOvU,EAAMwU,QHlBzBC,GAAQ,EACRC,GAAU,EACVC,GAAW,EAIXC,GAAY,EACZC,GAAW,EACXC,GAAY,EACZC,GAA+B,kBAAhBC,aAA4BA,YAAYC,IAAMD,YAAcvC,KAC3EyC,GAA6B,kBAAXpf,QAAuBA,OAAOqf,sBAAwBrf,OAAOqf,sBAAsBnqB,KAAK8K,QAAU,SAAS9Q,GAAKuf,WAAWvf,EAAG,KAE7I,SAASiwB,KACd,OAAOJ,KAAaK,GAASE,IAAWP,GAAWE,GAAME,MAAQH,IAGnE,SAASM,KACPP,GAAW,EAGN,SAASQ,KACdpyB,KAAKqyB,MACLryB,KAAKsyB,MACLtyB,KAAK+W,MAAQ,KA0BR,SAASwb,GAAM/c,EAAUgd,EAAOC,GACrC,IAAIzkB,EAAI,IAAIokB,GAEZ,OADApkB,EAAE0kB,QAAQld,EAAUgd,EAAOC,GACpBzkB,EAGF,SAAS2kB,KACdX,OACER,GAEF,IADA,IAAkB5tB,EAAdoK,EAAI4hB,GACD5hB,IACApK,EAAIguB,GAAW5jB,EAAEskB,QAAU,GAAGtkB,EAAEqkB,MAAM9yB,UAAKiB,EAAWoD,GAC3DoK,EAAIA,EAAE+I,QAENya,GAGJ,SAASoB,KACPhB,IAAYD,GAAYG,GAAME,OAASH,GACvCL,GAAQC,GAAU,EAClB,IACEkB,KADF,QAGEnB,GAAQ,EAWZ,WACE,IAAIqB,EAAmBjF,EAAfL,EAAKqC,GAAc6C,EAAOK,IAClC,KAAOvF,GACDA,EAAG8E,OACDI,EAAOlF,EAAG+E,QAAOG,EAAOlF,EAAG+E,OAC/BO,EAAKtF,EAAIA,EAAKA,EAAGxW,QAEjB6W,EAAKL,EAAGxW,MAAOwW,EAAGxW,MAAQ,KAC1BwW,EAAKsF,EAAKA,EAAG9b,MAAQ6W,EAAKgC,GAAWhC,GAGzCiC,GAAWgD,EACXE,GAAMN,GAtBJO,GACApB,GAAW,GAIf,SAASqB,KACP,IAAIjB,EAAMF,GAAME,MAAOQ,EAAQR,EAAML,GACjCa,EA7EU,MA6ESX,IAAaW,EAAOb,GAAYK,GAkBzD,SAASe,GAAMN,GACTjB,KACAC,KAASA,GAAUyB,aAAazB,KACxBgB,EAAOb,GACP,IACNa,EAAOK,MAAUrB,GAAUnQ,WAAWsR,GAAMH,EAAOX,GAAME,MAAQH,KACjEH,KAAUA,GAAWyB,cAAczB,OAElCA,KAAUC,GAAYG,GAAME,MAAON,GAAW0B,YAAYH,GAvGnD,MAwGZzB,GAAQ,EAAGS,GAASW,MAjFxBR,GAAM30B,UAAY80B,GAAM90B,UAAY,CAClCyB,YAAakzB,GACbM,QAAS,SAASld,EAAUgd,EAAOC,GACjC,GAAwB,oBAAbjd,EAAyB,MAAM,IAAIxY,UAAU,8BACxDy1B,GAAgB,MAARA,EAAeT,MAASS,IAAkB,MAATD,EAAgB,GAAKA,GACzDxyB,KAAK+W,OAAS8Y,KAAa7vB,OAC1B6vB,GAAUA,GAAS9Y,MAAQ/W,KAC1B4vB,GAAW5vB,KAChB6vB,GAAW7vB,MAEbA,KAAKqyB,MAAQ7c,EACbxV,KAAKsyB,MAAQG,EACbM,MAEF5nB,KAAM,WACAnL,KAAKqyB,QACPryB,KAAKqyB,MAAQ,KACbryB,KAAKsyB,MAAQQ,IACbC,QI1CS,gBAASvd,EAAUgd,EAAOC,GACvC,IAAIzkB,EAAI,IAAIokB,GAMZ,OALAI,EAAiB,MAATA,EAAgB,GAAKA,EAC7BxkB,EAAE0kB,SAAQ,SAAAW,GACRrlB,EAAE7C,OACFqK,EAAS6d,EAAUb,KAClBA,EAAOC,GACHzkB,GCNLslB,GAAUre,GAAS,QAAS,MAAO,SAAU,aAC7Cse,GAAa,GAUF,YAASnd,EAAMhT,EAAMowB,EAAIjvB,EAAO6E,EAAOqqB,GACpD,IAAIC,EAAYtd,EAAKud,aACrB,GAAKD,GACA,GAAIF,KAAME,EAAW,YADVtd,EAAKud,aAAe,IAmCtC,SAAgBvd,EAAMod,EAAI90B,GACxB,IACIk1B,EADAF,EAAYtd,EAAKud,aAQrB,SAASE,EAASR,GAChB30B,EAAKo1B,MAtDc,EAuDnBp1B,EAAK6zB,MAAMG,QAAQxnB,EAAOxM,EAAK8zB,MAAO9zB,EAAK+zB,MAGvC/zB,EAAK8zB,OAASa,GAASnoB,EAAMmoB,EAAU30B,EAAK8zB,OAGlD,SAAStnB,EAAMmoB,GACb,IAAIj3B,EAAGmJ,EAAGvE,EAAGrD,EAGb,GAjEmB,IAiEfe,EAAKo1B,MAAqB,OAAO3oB,IAErC,IAAK/O,KAAKs3B,EAER,IADA/1B,EAAI+1B,EAAUt3B,IACRgH,OAAS1E,EAAK0E,KAApB,CAKA,GAxEe,IAwEXzF,EAAEm2B,MAAmB,OAAOrC,GAAQvmB,GAvEzB,IA0EXvN,EAAEm2B,OACJn2B,EAAEm2B,MAzES,EA0EXn2B,EAAE40B,MAAMpnB,OACRxN,EAAE+X,GAAGnW,KAAK,YAAa6W,EAAMA,EAAKa,SAAUtZ,EAAE4G,MAAO5G,EAAEyL,cAChDsqB,EAAUt3B,KAITA,EAAIo3B,IACZ71B,EAAEm2B,MAjFS,EAkFXn2B,EAAE40B,MAAMpnB,OACRxN,EAAE+X,GAAGnW,KAAK,SAAU6W,EAAMA,EAAKa,SAAUtZ,EAAE4G,MAAO5G,EAAEyL,cAC7CsqB,EAAUt3B,IAoBrB,GAZAq1B,IAAQ,WA/FS,IAgGX/yB,EAAKo1B,QACPp1B,EAAKo1B,MAhGQ,EAiGbp1B,EAAK6zB,MAAMG,QAAQhf,EAAMhV,EAAK8zB,MAAO9zB,EAAK+zB,MAC1C/e,EAAK2f,OAMT30B,EAAKo1B,MA1Ga,EA2GlBp1B,EAAKgX,GAAGnW,KAAK,QAAS6W,EAAMA,EAAKa,SAAUvY,EAAK6F,MAAO7F,EAAK0K,OA3G1C,IA4Gd1K,EAAKo1B,MAAT,CAKA,IAJAp1B,EAAKo1B,MA5GY,EA+GjBF,EAAQ,IAAI7wB,MAAM/B,EAAItC,EAAKk1B,MAAMt3B,QAC5BF,EAAI,EAAGmJ,GAAK,EAAGnJ,EAAI4E,IAAK5E,GACvBuB,EAAIe,EAAKk1B,MAAMx3B,GAAGoC,MAAMe,KAAK6W,EAAMA,EAAKa,SAAUvY,EAAK6F,MAAO7F,EAAK0K,UACrEwqB,IAAQruB,GAAK5H,GAGjBi2B,EAAMt3B,OAASiJ,EAAI,GAGrB,SAASmO,EAAK2f,GAKZ,IAJA,IAAIrlB,EAAIqlB,EAAU30B,EAAKq1B,SAAWr1B,EAAKs1B,KAAKz0B,KAAK,KAAM8zB,EAAU30B,EAAKq1B,WAAar1B,EAAK6zB,MAAMG,QAAQvnB,GAAOzM,EAAKo1B,MAvHlG,EAuHkH,GAC9H13B,GAAK,EACL4E,EAAI4yB,EAAMt3B,SAELF,EAAI4E,GACX4yB,EAAMx3B,GAAGmD,KAAK6W,EAAMpI,GA5HN,IAgIZtP,EAAKo1B,QACPp1B,EAAKgX,GAAGnW,KAAK,MAAO6W,EAAMA,EAAKa,SAAUvY,EAAK6F,MAAO7F,EAAK0K,OAC1D+B,KAIJ,SAASA,IAIP,IAAK,IAAI/O,KAHTsC,EAAKo1B,MAtIU,EAuIfp1B,EAAK6zB,MAAMpnB,cACJuoB,EAAUF,GACHE,EAAW,cAClBtd,EAAKud,aA7FdD,EAAUF,GAAM90B,EAChBA,EAAK6zB,MAAQA,GAAMsB,EAAU,EAAGn1B,EAAK+zB,MAxCrCxzB,CAAOmX,EAAMod,EAAI,CACfpwB,KAAMA,EACNmB,MAAOA,EACP6E,MAAOA,EACPsM,GAAI4d,GACJM,MAAOL,GACPd,KAAMgB,EAAOhB,KACbD,MAAOiB,EAAOjB,MACduB,SAAUN,EAAOM,SACjBC,KAAMP,EAAOO,KACbzB,MAAO,KACPuB,MAvBiB,KA2Bd,SAASG,GAAK7d,EAAMod,GACzB,IAAIK,EAAWrsB,GAAI4O,EAAMod,GACzB,GAAIK,EAASC,MA7BM,EA6BW,MAAM,IAAI71B,MAAM,+BAC9C,OAAO41B,EAGF,SAASxrB,GAAI+N,EAAMod,GACxB,IAAIK,EAAWrsB,GAAI4O,EAAMod,GACzB,GAAIK,EAASC,MAhCM,EAgCW,MAAM,IAAI71B,MAAM,6BAC9C,OAAO41B,EAGF,SAASrsB,GAAI4O,EAAMod,GACxB,IAAIK,EAAWzd,EAAKud,aACpB,IAAKE,KAAcA,EAAWA,EAASL,IAAM,MAAM,IAAIv1B,MAAM,wBAC7D,OAAO41B,EC9CM,ICAXK,GDAW,YAAS9d,EAAMhT,GAC5B,IACIywB,EACAM,EAEA/3B,EAJAs3B,EAAYtd,EAAKud,aAGjB3uB,GAAQ,EAGZ,GAAK0uB,EAAL,CAIA,IAAKt3B,KAFLgH,EAAe,MAARA,EAAe,KAAOA,EAAO,GAE1BswB,GACHG,EAAWH,EAAUt3B,IAAIgH,OAASA,GACvC+wB,EAASN,EAASC,MDPA,GCOoBD,EAASC,MDJ/B,ECKhBD,EAASC,MDJM,ECKfD,EAAStB,MAAMpnB,OACf0oB,EAASne,GAAGnW,KAAK40B,EAAS,YAAc,SAAU/d,EAAMA,EAAKa,SAAU4c,EAAStvB,MAAOsvB,EAASzqB,cACzFsqB,EAAUt3B,IAL8B4I,GAAQ,EAQrDA,UAAcoR,EAAKud,eEtBrBS,GAAU,IAAMjuB,KAAKkuB,GAEdlrB,GAAW,CACpB2I,WAAY,EACZC,WAAY,EACZuiB,OAAQ,EACRC,MAAO,EACPC,OAAQ,EACRC,OAAQ,GAGK,YAAS9yB,EAAGC,EAAGwI,EAAG5H,EAAGoB,EAAG7B,GACrC,IAAIyyB,EAAQC,EAAQF,EAKpB,OAJIC,EAASruB,KAAKC,KAAKzE,EAAIA,EAAIC,EAAIA,MAAID,GAAK6yB,EAAQ5yB,GAAK4yB,IACrDD,EAAQ5yB,EAAIyI,EAAIxI,EAAIY,KAAG4H,GAAKzI,EAAI4yB,EAAO/xB,GAAKZ,EAAI2yB,IAChDE,EAAStuB,KAAKC,KAAKgE,EAAIA,EAAI5H,EAAIA,MAAI4H,GAAKqqB,EAAQjyB,GAAKiyB,EAAQF,GAASE,GACtE9yB,EAAIa,EAAIZ,EAAIwI,IAAGzI,GAAKA,EAAGC,GAAKA,EAAG2yB,GAASA,EAAOC,GAAUA,GACtD,CACL1iB,WAAYlO,EACZmO,WAAYhQ,EACZuyB,OAAQnuB,KAAKuuB,MAAM9yB,EAAGD,GAAKyyB,GAC3BG,MAAOpuB,KAAKwuB,KAAKJ,GAASH,GAC1BI,OAAQA,EACRC,OAAQA,ICpBZ,SAASG,GAAqBC,EAAOC,EAASC,EAASC,GAErD,SAAS3vB,EAAI5D,GACX,OAAOA,EAAEnF,OAASmF,EAAE4D,MAAQ,IAAM,GAsCpC,OAAO,SAAS1D,EAAGC,GACjB,IAAIH,EAAI,GACJ0uB,EAAI,GAOR,OANAxuB,EAAIkzB,EAAMlzB,GAAIC,EAAIizB,EAAMjzB,GAtC1B,SAAmBqzB,EAAIC,EAAIC,EAAIC,EAAI3zB,EAAG0uB,GACpC,GAAI8E,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIh5B,EAAIqF,EAAEzF,KAAK,aAAc,KAAM84B,EAAS,KAAMC,GAClD5E,EAAEn0B,KAAK,CAACI,EAAGA,EAAI,EAAGgG,EAAGgC,GAAO6wB,EAAIE,IAAM,CAAC/4B,EAAGA,EAAI,EAAGgG,EAAGgC,GAAO8wB,EAAIE,UACtDD,GAAMC,IACf3zB,EAAEzF,KAAK,aAAem5B,EAAKL,EAAUM,EAAKL,GAkC5CM,CAAU1zB,EAAEmQ,WAAYnQ,EAAEoQ,WAAYnQ,EAAEkQ,WAAYlQ,EAAEmQ,WAAYtQ,EAAG0uB,GA9BvE,SAAgBxuB,EAAGC,EAAGH,EAAG0uB,GACnBxuB,IAAMC,GACJD,EAAIC,EAAI,IAAKA,GAAK,IAAcA,EAAID,EAAI,MAAKA,GAAK,KACtDwuB,EAAEn0B,KAAK,CAACI,EAAGqF,EAAEzF,KAAKqJ,EAAI5D,GAAK,UAAW,KAAMuzB,GAAY,EAAG5yB,EAAGgC,GAAOzC,EAAGC,MAC/DA,GACTH,EAAEzF,KAAKqJ,EAAI5D,GAAK,UAAYG,EAAIozB,GA0BlCV,CAAO3yB,EAAE2yB,OAAQ1yB,EAAE0yB,OAAQ7yB,EAAG0uB,GAtBhC,SAAexuB,EAAGC,EAAGH,EAAG0uB,GAClBxuB,IAAMC,EACRuuB,EAAEn0B,KAAK,CAACI,EAAGqF,EAAEzF,KAAKqJ,EAAI5D,GAAK,SAAU,KAAMuzB,GAAY,EAAG5yB,EAAGgC,GAAOzC,EAAGC,KAC9DA,GACTH,EAAEzF,KAAKqJ,EAAI5D,GAAK,SAAWG,EAAIozB,GAmBjCT,CAAM5yB,EAAE4yB,MAAO3yB,EAAE2yB,MAAO9yB,EAAG0uB,GAf7B,SAAe8E,EAAIC,EAAIC,EAAIC,EAAI3zB,EAAG0uB,GAChC,GAAI8E,IAAOE,GAAMD,IAAOE,EAAI,CAC1B,IAAIh5B,EAAIqF,EAAEzF,KAAKqJ,EAAI5D,GAAK,SAAU,KAAM,IAAK,KAAM,KACnD0uB,EAAEn0B,KAAK,CAACI,EAAGA,EAAI,EAAGgG,EAAGgC,GAAO6wB,EAAIE,IAAM,CAAC/4B,EAAGA,EAAI,EAAGgG,EAAGgC,GAAO8wB,EAAIE,UAC/C,IAAPD,GAAmB,IAAPC,GACrB3zB,EAAEzF,KAAKqJ,EAAI5D,GAAK,SAAW0zB,EAAK,IAAMC,EAAK,KAW7CpjB,CAAMrQ,EAAE6yB,OAAQ7yB,EAAE8yB,OAAQ7yB,EAAE4yB,OAAQ5yB,EAAE6yB,OAAQhzB,EAAG0uB,GACjDxuB,EAAIC,EAAI,KACD,SAASoM,GAEd,IADA,IAA0BrQ,EAAtBvB,GAAK,EAAG4E,EAAImvB,EAAE7zB,SACTF,EAAI4E,GAAGS,GAAG9D,EAAIwyB,EAAE/zB,IAAIA,GAAKuB,EAAEyE,EAAE4L,GACtC,OAAOvM,EAAER,KAAK,MAKb,IAAIq0B,GAA0BV,IFxD9B,SAAkBp2B,GACvB,IAAM2O,EAAI,IAA0B,oBAAdooB,UAA2BA,UAAYC,iBAAiBh3B,EAAQ,IACtF,OAAO2O,EAAEsoB,WAAatsB,GAAWusB,GAAUvoB,EAAExL,EAAGwL,EAAEvL,EAAGuL,EAAE/C,EAAG+C,EAAE3K,EAAG2K,EAAEvJ,EAAGuJ,EAAEpL,KEsDJ,OAAQ,MAAO,QACxE4zB,GAA0Bf,IFpD9B,SAAkBp2B,GACvB,OAAa,MAATA,EAAsB2K,IACrB+qB,KAASA,GAAUhb,SAAS8C,gBAAgB,6BAA8B,MAC/EkY,GAAQtb,aAAa,YAAapa,IAC5BA,EAAQ01B,GAAQnhB,UAAU6iB,QAAQC,gBACxCr3B,EAAQA,EAAMmS,OACP+kB,GAAUl3B,EAAMmD,EAAGnD,EAAMoD,EAAGpD,EAAM4L,EAAG5L,EAAMgE,EAAGhE,EAAMoF,EAAGpF,EAAMuD,IAFLoH,MEgDG,KAAM,IAAK,KC5D/E,SAAS2sB,GAAYtC,EAAIpwB,GACvB,IAAI2yB,EAAQC,EACZ,OAAO,WACL,IAAInC,EAAWxrB,GAAIrI,KAAMwzB,GACrBI,EAAQC,EAASD,MAKrB,GAAIA,IAAUmC,EAEZ,IAAK,IAAI35B,EAAI,EAAG4E,GADhBg1B,EAASD,EAASnC,GACSt3B,OAAQF,EAAI4E,IAAK5E,EAC1C,GAAI45B,EAAO55B,GAAGgH,OAASA,EAAM,EAC3B4yB,EAASA,EAAO7yB,SACT0X,OAAOze,EAAG,GACjB,MAKNy3B,EAASD,MAAQoC,GAIrB,SAASC,GAAczC,EAAIpwB,EAAM5E,GAC/B,IAAIu3B,EAAQC,EACZ,GAAqB,oBAAVx3B,EAAsB,MAAM,IAAIP,MAC3C,OAAO,WACL,IAAI41B,EAAWxrB,GAAIrI,KAAMwzB,GACrBI,EAAQC,EAASD,MAKrB,GAAIA,IAAUmC,EAAQ,CACpBC,GAAUD,EAASnC,GAAOzwB,QAC1B,IAAK,IAAI6K,EAAI,CAAC5K,KAAMA,EAAM5E,MAAOA,GAAQpC,EAAI,EAAG4E,EAAIg1B,EAAO15B,OAAQF,EAAI4E,IAAK5E,EAC1E,GAAI45B,EAAO55B,GAAGgH,OAASA,EAAM,CAC3B4yB,EAAO55B,GAAK4R,EACZ,MAGA5R,IAAM4E,GAAGg1B,EAAOh6B,KAAKgS,GAG3B6lB,EAASD,MAAQoC,GAsBd,SAASE,GAAW5hB,EAAYlR,EAAM5E,GAC3C,IAAIg1B,EAAKlf,EAAW6hB,IAOpB,OALA7hB,EAAWI,MAAK,WACd,IAAImf,EAAWxrB,GAAIrI,KAAMwzB,IACxBK,EAASr1B,QAAUq1B,EAASr1B,MAAQ,KAAK4E,GAAQ5E,EAAMvC,MAAM+D,KAAM3D,cAG/D,SAAS+Z,GACd,OAAO5O,GAAI4O,EAAMod,GAAIh1B,MAAM4E,IC3EhB,gBAASzB,EAAGC,GACzB,IAAIwI,EACJ,OAAqB,kBAANxI,EAAiBw0B,GAC1Bx0B,aAAaqqB,GAAQoK,IACpBjsB,EAAI6hB,GAAMrqB,KAAOA,EAAIwI,EAAGisB,IACzBC,IAAmB30B,EAAGC,ICH9B,SAAS0W,GAAWlV,GAClB,OAAO,WACLpD,KAAKuY,gBAAgBnV,IAIzB,SAASoV,GAAaC,GACpB,OAAO,WACLzY,KAAK0Y,kBAAkBD,EAASL,MAAOK,EAASJ,QAIpD,SAASM,GAAavV,EAAMmzB,EAAahoB,GACvC,IAAIioB,EAEAC,EADAC,EAAUnoB,EAAS,GAEvB,OAAO,WACL,IAAIooB,EAAU32B,KAAKuU,aAAanR,GAChC,OAAOuzB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeF,EAAYC,EAAWG,EAASpoB,IAIzD,SAASsK,GAAeJ,EAAU8d,EAAahoB,GAC7C,IAAIioB,EAEAC,EADAC,EAAUnoB,EAAS,GAEvB,OAAO,WACL,IAAIooB,EAAU32B,KAAKkgB,eAAezH,EAASL,MAAOK,EAASJ,OAC3D,OAAOse,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeF,EAAYC,EAAWG,EAASpoB,IAIzD,SAASwK,GAAa3V,EAAMmzB,EAAa/3B,GACvC,IAAIg4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBnoB,EAAS/P,EAAMwB,MAC5B,GAAc,MAAVuO,EAGJ,OAFAooB,EAAU32B,KAAKuU,aAAanR,OAC5BszB,EAAUnoB,EAAS,IACU,KACvBooB,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeF,EAAYC,EAAWG,EAASpoB,IAL1CvO,KAAKuY,gBAAgBnV,IASzD,SAAS4V,GAAeP,EAAU8d,EAAa/3B,GAC7C,IAAIg4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAA+BD,EAAtBnoB,EAAS/P,EAAMwB,MAC5B,GAAc,MAAVuO,EAGJ,OAFAooB,EAAU32B,KAAKkgB,eAAezH,EAASL,MAAOK,EAASJ,WACvDqe,EAAUnoB,EAAS,IACU,KACvBooB,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeF,EAAYC,EAAWG,EAASpoB,IAL1CvO,KAAK0Y,kBAAkBD,EAASL,MAAOK,EAASJ,QC5DpF,SAASwe,GAAgBzzB,EAAMhH,GAC7B,OAAO,SAAS4R,GACdhO,KAAK4Y,aAAaxV,EAAMhH,EAAEmD,KAAKS,KAAMgO,KAIzC,SAAS8oB,GAAkBre,EAAUrc,GACnC,OAAO,SAAS4R,GACdhO,KAAK8Y,eAAeL,EAASL,MAAOK,EAASJ,MAAOjc,EAAEmD,KAAKS,KAAMgO,KAIrE,SAAS+oB,GAAYte,EAAUja,GAC7B,IAAIq0B,EAAI1kB,EACR,SAASylB,IACP,IAAIx3B,EAAIoC,EAAMvC,MAAM+D,KAAM3D,WAE1B,OADID,IAAM+R,IAAI0kB,GAAM1kB,EAAK/R,IAAM06B,GAAkBre,EAAUrc,IACpDy2B,EAGT,OADAe,EAAMoD,OAASx4B,EACRo1B,EAGT,SAASqD,GAAU7zB,EAAM5E,GACvB,IAAIq0B,EAAI1kB,EACR,SAASylB,IACP,IAAIx3B,EAAIoC,EAAMvC,MAAM+D,KAAM3D,WAE1B,OADID,IAAM+R,IAAI0kB,GAAM1kB,EAAK/R,IAAMy6B,GAAgBzzB,EAAMhH,IAC9Cy2B,EAGT,OADAe,EAAMoD,OAASx4B,EACRo1B,EC/BT,SAASsD,GAAc1D,EAAIh1B,GACzB,OAAO,WACLy1B,GAAKj0B,KAAMwzB,GAAIhB,OAASh0B,EAAMvC,MAAM+D,KAAM3D,YAI9C,SAAS86B,GAAc3D,EAAIh1B,GACzB,OAAOA,GAASA,EAAO,WACrBy1B,GAAKj0B,KAAMwzB,GAAIhB,MAAQh0B,GCR3B,SAAS44B,GAAiB5D,EAAIh1B,GAC5B,OAAO,WACL6J,GAAIrI,KAAMwzB,GAAIO,UAAYv1B,EAAMvC,MAAM+D,KAAM3D,YAIhD,SAASg7B,GAAiB7D,EAAIh1B,GAC5B,OAAOA,GAASA,EAAO,WACrB6J,GAAIrI,KAAMwzB,GAAIO,SAAWv1B,GCR7B,SAAS84B,GAAa9D,EAAIh1B,GACxB,GAAqB,oBAAVA,EAAsB,MAAM,IAAIP,MAC3C,OAAO,WACLoK,GAAIrI,KAAMwzB,GAAIQ,KAAOx1B,GCKzB,SAAS+4B,GAAW/D,EAAIpwB,EAAMwZ,GAC5B,IAAI4a,EAAKC,EAAKC,EAThB,SAAet0B,GACb,OAAQA,EAAO,IAAIkS,OAAOnU,MAAM,SAAS2P,OAAM,SAAS9C,GACtD,IAAI5R,EAAI4R,EAAE7F,QAAQ,KAElB,OADI/L,GAAK,IAAG4R,EAAIA,EAAE7K,MAAM,EAAG/G,KACnB4R,GAAW,UAANA,KAKK9C,CAAM9H,GAAQ6wB,GAAO5rB,GACzC,OAAO,WACL,IAAIwrB,EAAW6D,EAAI13B,KAAMwzB,GACrB9d,EAAKme,EAASne,GAKdA,IAAO8hB,IAAMC,GAAOD,EAAM9hB,GAAIpC,QAAQoC,GAAGtS,EAAMwZ,GAEnDiX,EAASne,GAAK+hB,GCbH,ICNX3Z,GAAYvK,GAAU9V,UAAUyB,YCiBpC,SAASia,GAAY/V,GACnB,OAAO,WACLpD,KAAKoZ,MAAMC,eAAejW,ICrB9B,SAASu0B,GAAiBv0B,EAAMhH,EAAGmd,GACjC,OAAO,SAASvL,GACdhO,KAAKoZ,MAAMI,YAAYpW,EAAMhH,EAAEmD,KAAKS,KAAMgO,GAAIuL,IAIlD,SAASqe,GAAWx0B,EAAM5E,EAAO+a,GAC/B,IAAIvL,EAAGG,EACP,SAASylB,IACP,IAAIx3B,EAAIoC,EAAMvC,MAAM+D,KAAM3D,WAE1B,OADID,IAAM+R,IAAIH,GAAKG,EAAK/R,IAAMu7B,GAAiBv0B,EAAMhH,EAAGmd,IACjDvL,EAGT,OADA4lB,EAAMoD,OAASx4B,EACRo1B,ECdT,SAASiE,GAAgBz7B,GACvB,OAAO,SAAS4R,GACdhO,KAAKgb,YAAc5e,EAAEmD,KAAKS,KAAMgO,IAIpC,SAAS8pB,GAAUt5B,GACjB,IAAIq0B,EAAI1kB,EACR,SAASylB,IACP,IAAIx3B,EAAIoC,EAAMvC,MAAM+D,KAAM3D,WAE1B,OADID,IAAM+R,IAAI0kB,GAAM1kB,EAAK/R,IAAMy7B,GAAgBz7B,IACxCy2B,EAGT,OADAe,EAAMoD,OAASx4B,EACRo1B,EAGM,ICKXJ,GAAK,EAEF,SAASuE,GAAWzuB,EAAQyU,EAAS3a,EAAMowB,GAChDxzB,KAAK4d,QAAUtU,EACftJ,KAAKge,SAAWD,EAChB/d,KAAKg4B,MAAQ50B,EACbpD,KAAKm2B,IAAM3C,EAGE,SAASlf,GAAWlR,GACjC,OAAOmQ,KAAYe,WAAWlR,GAGzB,SAAS60B,KACd,QAASzE,GAGX,IAAI0E,GAAsB3kB,GAAU9V,UCvC7B,SAAS06B,GAAQnqB,GACtB,OAAOA,EAAIA,EAAIA,EAGV,SAASoqB,GAASpqB,GACvB,QAASA,EAAIA,EAAIA,EAAI,EAGhB,SAASqqB,GAAWrqB,GACzB,QAASA,GAAK,IAAM,EAAIA,EAAIA,EAAIA,GAAKA,GAAK,GAAKA,EAAIA,EAAI,GAAK,EDgC9D+pB,GAAWt6B,UAAY6W,GAAW7W,UAAX,cACrByB,YAAa64B,GACb5jB,OEvCa,SAASA,GACtB,IAAI/Q,EAAOpD,KAAKg4B,MACZxE,EAAKxzB,KAAKm2B,IAEQ,oBAAXhiB,IAAuBA,EAAS4B,GAAS5B,IAEpD,IAAK,IAAI7K,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,IAAIlb,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAC3F,IAAK,IAAiF6Q,EAAM8H,EAAnF9U,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAQ6hB,EAAWF,EAAU1Y,GAAK,IAAIxC,MAAM/B,GAAmB5E,EAAI,EAAGA,EAAI4E,IAAK5E,GAC9Gga,EAAOhN,EAAMhN,MAAQ8hB,EAAU/J,EAAO5U,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,MAClE,aAAcgN,IAAM8H,EAAQjH,SAAWb,EAAKa,UAChDkH,EAAS/hB,GAAK8hB,EACd2V,GAAS1V,EAAS/hB,GAAIgH,EAAMowB,EAAIp3B,EAAG+hB,EAAU3W,GAAI4O,EAAMod,KAK7D,OAAO,IAAIuE,GAAW9Z,EAAWje,KAAKge,SAAU5a,EAAMowB,IFwBtD/f,UGxCa,SAASU,GACtB,IAAI/Q,EAAOpD,KAAKg4B,MACZxE,EAAKxzB,KAAKm2B,IAEQ,oBAAXhiB,IAAuBA,EAASkK,GAAYlK,IAEvD,IAAK,IAAI7K,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,GAAIF,EAAU,GAAIxY,EAAI,EAAGA,EAAI4H,IAAK5H,EAC/F,IAAK,IAAyC6Q,EAArChN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAcF,EAAI,EAAGA,EAAI4E,IAAK5E,EAClE,GAAIga,EAAOhN,EAAMhN,GAAI,CACnB,IAAK,IAA2D+a,EAAvDX,EAAWrC,EAAO5U,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,GAAekvB,EAAU9wB,GAAI4O,EAAMod,GAAK9lB,EAAI,EAAGwe,EAAI1V,EAASla,OAAQoR,EAAIwe,IAAKxe,GAC/HyJ,EAAQX,EAAS9I,KACnBmmB,GAAS1c,EAAO/T,EAAMowB,EAAI9lB,EAAG8I,EAAU8hB,GAG3Cra,EAAUjiB,KAAKwa,GACfuH,EAAQ/hB,KAAKoa,GAKnB,OAAO,IAAI2hB,GAAW9Z,EAAWF,EAAS3a,EAAMowB,IHqBhDlV,YAAa4Z,GAAoB5Z,YACjCG,eAAgByZ,GAAoBzZ,eACpC7iB,OI5Ca,SAAS2iB,GACD,oBAAVA,IAAsBA,EAAQI,GAAQJ,IAEjD,IAAK,IAAIjV,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQ2hB,EAAY,IAAIlb,MAAMoK,GAAI5H,EAAI,EAAGA,EAAI4H,IAAK5H,EAC3F,IAAK,IAAuE6Q,EAAnEhN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAQ6hB,EAAWF,EAAU1Y,GAAK,GAAUnJ,EAAI,EAAGA,EAAI4E,IAAK5E,GAC3Fga,EAAOhN,EAAMhN,KAAOmiB,EAAMhf,KAAK6W,EAAMA,EAAKa,SAAU7a,EAAGgN,IAC1D+U,EAASniB,KAAKoa,GAKpB,OAAO,IAAI2hB,GAAW9Z,EAAWje,KAAKge,SAAUhe,KAAKg4B,MAAOh4B,KAAKm2B,MJkCjEtnB,MK9Ca,SAASyF,GACtB,GAAIA,EAAW6hB,MAAQn2B,KAAKm2B,IAAK,MAAM,IAAIl4B,MAE3C,IAAK,IAAIohB,EAAUrf,KAAK4d,QAAS0B,EAAUhL,EAAWsJ,QAAS2B,EAAKF,EAAQ/iB,OAAQkjB,EAAKF,EAAQhjB,OAAQ6Q,EAAIhH,KAAKG,IAAIiZ,EAAIC,GAAKC,EAAS,IAAI1c,MAAMwc,GAAKha,EAAI,EAAGA,EAAI4H,IAAK5H,EACrK,IAAK,IAAmG6Q,EAA/FsJ,EAASL,EAAQ9Z,GAAIoa,EAASL,EAAQ/Z,GAAIvE,EAAI0e,EAAOpjB,OAAQuS,EAAQ4Q,EAAOla,GAAK,IAAIxC,MAAM/B,GAAU5E,EAAI,EAAGA,EAAI4E,IAAK5E,GACxHga,EAAOsJ,EAAOtjB,IAAMujB,EAAOvjB,MAC7ByS,EAAMzS,GAAKga,GAKjB,KAAO7Q,EAAIga,IAAMha,EACfka,EAAOla,GAAK8Z,EAAQ9Z,GAGtB,OAAO,IAAIwyB,GAAWtY,EAAQzf,KAAKge,SAAUhe,KAAKg4B,MAAOh4B,KAAKm2B,MLgC9D5iB,UJ7Ca,WACb,OAAO,IAAIuK,GAAU9d,KAAK4d,QAAS5d,KAAKge,WI6CxC1J,WM/Ca,WAKb,IAJA,IAAIlR,EAAOpD,KAAKg4B,MACZO,EAAMv4B,KAAKm2B,IACXqC,EAAMP,KAED3uB,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQiJ,EAAI,EAAGA,EAAI4H,IAAK5H,EACjE,IAAK,IAAyC6Q,EAArChN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAcF,EAAI,EAAGA,EAAI4E,IAAK5E,EAClE,GAAIga,EAAOhN,EAAMhN,GAAI,CACnB,IAAIk8B,EAAU9wB,GAAI4O,EAAMmiB,GACxB1E,GAASzd,EAAMhT,EAAMo1B,EAAKp8B,EAAGgN,EAAO,CAClCqpB,KAAM6F,EAAQ7F,KAAO6F,EAAQ9F,MAAQ8F,EAAQvE,SAC7CvB,MAAO,EACPuB,SAAUuE,EAAQvE,SAClBC,KAAMsE,EAAQtE,OAMtB,OAAO,IAAI+D,GAAWzuB,EAAQtJ,KAAKge,SAAU5a,EAAMo1B,IN6BnDj5B,KAAM24B,GAAoB34B,KAC1BygB,MAAOkY,GAAoBlY,MAC3B5J,KAAM8hB,GAAoB9hB,KAC1B6J,KAAMiY,GAAoBjY,KAC1Bjb,MAAOkzB,GAAoBlzB,MAC3B0P,KAAMwjB,GAAoBxjB,KAC1BgB,GNhCa,SAAStS,EAAMwZ,GAC5B,IAAI4W,EAAKxzB,KAAKm2B,IAEd,OAAO95B,UAAUC,OAAS,EACpBkL,GAAIxH,KAAKoW,OAAQod,GAAI9d,GAAGA,GAAGtS,GAC3BpD,KAAK0U,KAAK6iB,GAAW/D,EAAIpwB,EAAMwZ,KM4BrC3I,KXaa,SAAS7Q,EAAM5E,GAC5B,IAAIia,EAAWyD,GAAU9Y,GAAOhH,EAAiB,cAAbqc,EAA2Bmc,GAAuB2B,GACtF,OAAOv2B,KAAKi3B,UAAU7zB,EAAuB,oBAAV5E,GAC5Bia,EAASJ,MAAQW,GAAiBD,IAAcN,EAAUrc,EAAG85B,GAAWl2B,KAAM,QAAUoD,EAAM5E,IACtF,MAATA,GAAiBia,EAASJ,MAAQG,GAAeF,IAAYG,IAC5DA,EAASJ,MAAQQ,GAAiBF,IAAcF,EAAUrc,EAAGoC,KWjBpEy4B,UVvBa,SAAS7zB,EAAM5E,GAC5B,IAAI/B,EAAM,QAAU2G,EACpB,GAAI/G,UAAUC,OAAS,EAAG,OAAQG,EAAMuD,KAAK4zB,MAAMn3B,KAASA,EAAIu6B,OAChE,GAAa,MAATx4B,EAAe,OAAOwB,KAAK4zB,MAAMn3B,EAAK,MAC1C,GAAqB,oBAAV+B,EAAsB,MAAM,IAAIP,MAC3C,IAAIwa,EAAWyD,GAAU9Y,GACzB,OAAOpD,KAAK4zB,MAAMn3B,GAAMgc,EAASJ,MAAQ0e,GAAcE,IAAWxe,EAAUja,KUkB5E4a,MHQa,SAAShW,EAAM5E,EAAO+a,GACnC,IAAInd,EAAqB,eAAhBgH,GAAQ,IAAsBwxB,GAAuB2B,GAC9D,OAAgB,MAAT/3B,EAAgBwB,KAClB43B,WAAWx0B,EAjElB,SAAmBA,EAAMmzB,GACvB,IAAIC,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAUvd,GAAMpZ,KAAMoD,GACtBszB,GAAW12B,KAAKoZ,MAAMC,eAAejW,GAAOgW,GAAMpZ,KAAMoD,IAC5D,OAAOuzB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,EAC/CA,EAAeF,EAAYC,EAAWG,EAASC,EAAWF,IAwD5C+B,CAAUr1B,EAAMhH,IACjCsZ,GAAG,aAAetS,EAAM+V,GAAY/V,IACpB,oBAAV5E,EAAuBwB,KAC7B43B,WAAWx0B,EArClB,SAAuBA,EAAMmzB,EAAa/3B,GACxC,IAAIg4B,EACAI,EACAH,EACJ,OAAO,WACL,IAAIE,EAAUvd,GAAMpZ,KAAMoD,GACtBmL,EAAS/P,EAAMwB,MACf02B,EAAUnoB,EAAS,GAEvB,OADc,MAAVA,IAAoCvO,KAAKoZ,MAAMC,eAAejW,GAA9CszB,EAAUnoB,EAA2C6K,GAAMpZ,KAAMoD,IAC9EuzB,IAAYD,EAAU,KACvBC,IAAYH,GAAYE,IAAYE,EAAWH,GAC9CG,EAAWF,EAASD,EAAeF,EAAYC,EAAWG,EAASpoB,KA0BtDkL,CAAcrW,EAAMhH,EAAG85B,GAAWl2B,KAAM,SAAWoD,EAAM5E,KAC1EkW,KAvBP,SAA0B8e,EAAIpwB,GAC5B,IAAIo0B,EAAKC,EAAKiB,EAAwDjkB,EAA7ChY,EAAM,SAAW2G,EAAM2Z,EAAQ,OAAStgB,EACjE,OAAO,WACL,IAAIo3B,EAAWxrB,GAAIrI,KAAMwzB,GACrB9d,EAAKme,EAASne,GACdkH,EAAkC,MAAvBiX,EAASr1B,MAAM/B,GAAegY,IAAWA,EAAS0E,GAAY/V,SAAS5C,EAKlFkV,IAAO8hB,GAAOkB,IAAc9b,IAAW6a,GAAOD,EAAM9hB,GAAIpC,QAAQoC,GAAGqH,EAAO2b,EAAY9b,GAE1FiX,EAASne,GAAK+hB,GAWNkB,CAAiB34B,KAAKm2B,IAAK/yB,IACjCpD,KACC43B,WAAWx0B,EApDlB,SAAuBA,EAAMmzB,EAAahoB,GACxC,IAAIioB,EAEAC,EADAC,EAAUnoB,EAAS,GAEvB,OAAO,WACL,IAAIooB,EAAUvd,GAAMpZ,KAAMoD,GAC1B,OAAOuzB,IAAYD,EAAU,KACvBC,IAAYH,EAAWC,EACvBA,EAAeF,EAAYC,EAAWG,EAASpoB,IA4CjC+K,CAAclW,EAAMhH,EAAGoC,GAAQ+a,GAChD7D,GAAG,aAAetS,EAAM,OGjB7Bw0B,WF5Ca,SAASx0B,EAAM5E,EAAO+a,GACnC,IAAI9c,EAAM,UAAY2G,GAAQ,IAC9B,GAAI/G,UAAUC,OAAS,EAAG,OAAQG,EAAMuD,KAAK4zB,MAAMn3B,KAASA,EAAIu6B,OAChE,GAAa,MAATx4B,EAAe,OAAOwB,KAAK4zB,MAAMn3B,EAAK,MAC1C,GAAqB,oBAAV+B,EAAsB,MAAM,IAAIP,MAC3C,OAAO+B,KAAK4zB,MAAMn3B,EAAKm7B,GAAWx0B,EAAM5E,EAAmB,MAAZ+a,EAAmB,GAAKA,KEwCvEnF,KO/Ca,SAAS5V,GACtB,OAAOwB,KAAK4zB,MAAM,OAAyB,oBAAVp1B,EARnC,SAAsBA,GACpB,OAAO,WACL,IAAI+P,EAAS/P,EAAMwB,MACnBA,KAAKgb,YAAwB,MAAVzM,EAAiB,GAAKA,GAMrC2M,CAAagb,GAAWl2B,KAAM,OAAQxB,IAf9C,SAAsBA,GACpB,OAAO,WACLwB,KAAKgb,YAAcxc,GAcfyc,CAAsB,MAATzc,EAAgB,GAAKA,EAAQ,MP6ChDs5B,UD9Ca,SAASt5B,GACtB,IAAI/B,EAAM,OACV,GAAIJ,UAAUC,OAAS,EAAG,OAAQG,EAAMuD,KAAK4zB,MAAMn3B,KAASA,EAAIu6B,OAChE,GAAa,MAATx4B,EAAe,OAAOwB,KAAK4zB,MAAMn3B,EAAK,MAC1C,GAAqB,oBAAV+B,EAAsB,MAAM,IAAIP,MAC3C,OAAO+B,KAAK4zB,MAAMn3B,EAAKq7B,GAAUt5B,KC0CjCiW,OLxDa,WACb,OAAOzU,KAAK0V,GAAG,cATO8d,EASsBxzB,KAAKm2B,IAR1C,WACL,IAAIxf,EAAS3W,KAAKwU,WAClB,IAAK,IAAIpY,KAAK4D,KAAK2zB,aAAc,IAAKv3B,IAAMo3B,EAAI,OAC5C7c,GAAQA,EAAOyF,YAAYpc,SAJnC,IAAwBwzB,GKiEtBI,Mbda,SAASxwB,EAAM5E,GAC5B,IAAIg1B,EAAKxzB,KAAKm2B,IAId,GAFA/yB,GAAQ,GAEJ/G,UAAUC,OAAS,EAAG,CAExB,IADA,IACkC0R,EAD9B4lB,EAAQpsB,GAAIxH,KAAKoW,OAAQod,GAAII,MACxBx3B,EAAI,EAAG4E,EAAI4yB,EAAMt3B,OAAWF,EAAI4E,IAAK5E,EAC5C,IAAK4R,EAAI4lB,EAAMx3B,IAAIgH,OAASA,EAC1B,OAAO4K,EAAExP,MAGb,OAAO,KAGT,OAAOwB,KAAK0U,MAAe,MAATlW,EAAgBs3B,GAAcG,IAAezC,EAAIpwB,EAAM5E,KaAzEg0B,MTpDa,SAASh0B,GACtB,IAAIg1B,EAAKxzB,KAAKm2B,IAEd,OAAO95B,UAAUC,OACX0D,KAAK0U,MAAuB,oBAAVlW,EACd04B,GACAC,IAAe3D,EAAIh1B,IACvBgJ,GAAIxH,KAAKoW,OAAQod,GAAIhB,OS8C3BuB,SRrDa,SAASv1B,GACtB,IAAIg1B,EAAKxzB,KAAKm2B,IAEd,OAAO95B,UAAUC,OACX0D,KAAK0U,MAAuB,oBAAVlW,EACd44B,GACAC,IAAkB7D,EAAIh1B,IAC1BgJ,GAAIxH,KAAKoW,OAAQod,GAAIO,UQ+C3BC,KP3Da,SAASx1B,GACtB,IAAIg1B,EAAKxzB,KAAKm2B,IAEd,OAAO95B,UAAUC,OACX0D,KAAK0U,KAAK4iB,GAAa9D,EAAIh1B,IAC3BgJ,GAAIxH,KAAKoW,OAAQod,GAAIQ,MOuD3B4E,YQ3Da,SAASp6B,GACtB,GAAqB,oBAAVA,EAAsB,MAAM,IAAIP,MAC3C,OAAO+B,KAAK0U,KAVd,SAAqB8e,EAAIh1B,GACvB,OAAO,WACL,IAAIsH,EAAItH,EAAMvC,MAAM+D,KAAM3D,WAC1B,GAAiB,oBAANyJ,EAAkB,MAAM,IAAI7H,MACvCoK,GAAIrI,KAAMwzB,GAAIQ,KAAOluB,GAMN8yB,CAAY54B,KAAKm2B,IAAK33B,KR0DvCgwB,ISpEa,WACb,IAAIgJ,EAAKC,EAAK5hB,EAAO7V,KAAMwzB,EAAK3d,EAAKsgB,IAAKlW,EAAOpK,EAAKoK,OACtD,OAAO,IAAI4Y,SAAQ,SAASC,EAASC,GACnC,IAAIC,EAAS,CAACx6B,MAAOu6B,GACjBvK,EAAM,CAAChwB,MAAO,WAA4B,MAATyhB,GAAY6Y,MAEjDjjB,EAAKnB,MAAK,WACR,IAAImf,EAAWxrB,GAAIrI,KAAMwzB,GACrB9d,EAAKme,EAASne,GAKdA,IAAO8hB,KACTC,GAAOD,EAAM9hB,GAAIpC,QACb/F,EAAEyrB,OAAOh9B,KAAKg9B,GAClBvB,EAAIlqB,EAAE0rB,UAAUj9B,KAAKg9B,GACrBvB,EAAIlqB,EAAEihB,IAAIxyB,KAAKwyB,IAGjBqF,EAASne,GAAK+hB,KAIH,IAATxX,GAAY6Y,ST6CjB15B,OAAOC,SAAW64B,GAAoB94B,OAAOC,WUlEhD,IAAI65B,GAAgB,CAClBzG,KAAM,KACND,MAAO,EACPuB,SAAU,IACVC,KAAMmF,IAGR,SAASb,GAAQliB,EAAMod,GAErB,IADA,IAAIC,IACKA,EAASrd,EAAKud,iBAAmBF,EAASA,EAAOD,KACxD,KAAMpd,EAAOA,EAAK5B,YAChB,MAAM,IAAIvW,MAAJ,qBAAwBu1B,EAAxB,eAGV,OAAOC,ECfTlgB,GAAU9V,UAAUw7B,UCFL,SAAS71B,GACtB,OAAOpD,KAAK0U,MAAK,WACfukB,GAAUj5B,KAAMoD,ODCpBmQ,GAAU9V,UAAU6W,WDiBL,SAASlR,GACtB,IAAIowB,EACAC,EAEArwB,aAAgB20B,IAClBvE,EAAKpwB,EAAK+yB,IAAK/yB,EAAOA,EAAK40B,QAE3BxE,EAAKyE,MAAUxE,EAASyF,IAAezG,KAAOT,KAAO5uB,EAAe,MAARA,EAAe,KAAOA,EAAO,IAG3F,IAAK,IAAIkG,EAAStJ,KAAK4d,QAASzQ,EAAI7D,EAAOhN,OAAQiJ,EAAI,EAAGA,EAAI4H,IAAK5H,EACjE,IAAK,IAAyC6Q,EAArChN,EAAQE,EAAO/D,GAAIvE,EAAIoI,EAAM9M,OAAcF,EAAI,EAAGA,EAAI4E,IAAK5E,GAC9Dga,EAAOhN,EAAMhN,KACfy3B,GAASzd,EAAMhT,EAAMowB,EAAIp3B,EAAGgN,EAAOqqB,GAAU6E,GAAQliB,EAAMod,IAKjE,OAAO,IAAIuE,GAAWzuB,EAAQtJ,KAAKge,SAAU5a,EAAMowB,IGrCrD,IAAI3V,GAAO,CAAC,MAEG,YAASzH,EAAMhT,GAC5B,IACIywB,EACAz3B,EAFAs3B,EAAYtd,EAAKud,aAIrB,GAAID,EAEF,IAAKt3B,KADLgH,EAAe,MAARA,EAAe,KAAOA,EAAO,GAC1BswB,EACR,IAAKG,EAAWH,EAAUt3B,IAAI03B,M/BNb,G+BMkCD,EAASzwB,OAASA,EACnE,OAAO,IAAI20B,GAAW,CAAC,CAAC3hB,IAAQyH,GAAMza,GAAOhH,GAKnD,OAAO,MCnBM,YAAAgG,GAAC,OAAI,kBAAMA,ICAX,SAASg3B,GAAW7jB,EAApB,GAMZ,IALDgb,EAKC,EALDA,YACAp0B,EAIC,EAJDA,OACAoX,EAGC,EAHDA,UACAxE,EAEC,EAFDA,KACAkG,EACC,EADDA,SAEAxZ,OAAOkB,iBAAiBqD,KAAM,CAC5BuV,KAAM,CAAC/W,MAAO+W,EAAMxZ,YAAY,EAAMqB,cAAc,GACpDmzB,YAAa,CAAC/xB,MAAO+xB,EAAax0B,YAAY,EAAMqB,cAAc,GAClEjB,OAAQ,CAACqC,MAAOrC,EAAQJ,YAAY,EAAMqB,cAAc,GACxDmW,UAAW,CAAC/U,MAAO+U,EAAWxX,YAAY,EAAMqB,cAAc,GAC9D2R,KAAM,CAACvQ,MAAOuQ,EAAMhT,YAAY,EAAMqB,cAAc,GACpDmQ,EAAG,CAAC/O,MAAOyW,KCbR,SAAS4L,GAAc9D,GAC5BA,EAAM+D,2BAGO,gBAAS/D,GACtBA,EAAMgE,iBACNhE,EAAM+D,4BCGJuY,GAAY,CAACj2B,KAAM,QACnBk2B,GAAa,CAACl2B,KAAM,SACpBm2B,GAAc,CAACn2B,KAAM,UACrBo2B,GAAc,CAACp2B,KAAM,UAElBwD,GAAiBT,KAAjBS,IAAKL,GAAYJ,KAAZI,IAAKD,GAAOH,KAAPG,IAEjB,SAASmzB,GAAQ71B,GACf,MAAO,EAAEA,EAAE,IAAKA,EAAE,IAGpB,SAAS81B,GAAQ91B,GACf,MAAO,CAAC61B,GAAQ71B,EAAE,IAAK61B,GAAQ71B,EAAE,KAGnC,IAAI+1B,GAAI,CACNv2B,KAAM,IACNw2B,QAAS,CAAC,IAAK,KAAK74B,IAAIwU,IACxBskB,MAAO,SAASz3B,EAAGwB,GAAK,OAAY,MAALxB,EAAY,KAAO,CAAC,EAAEA,EAAE,GAAIwB,EAAE,GAAG,IAAK,EAAExB,EAAE,GAAIwB,EAAE,GAAG,MAClFk2B,OAAQ,SAASC,GAAM,OAAOA,GAAM,CAACA,EAAG,GAAG,GAAIA,EAAG,GAAG,MAGnDC,GAAI,CACN52B,KAAM,IACNw2B,QAAS,CAAC,IAAK,KAAK74B,IAAIwU,IACxBskB,MAAO,SAASlzB,EAAG/C,GAAK,OAAY,MAAL+C,EAAY,KAAO,CAAC,CAAC/C,EAAE,GAAG,IAAK+C,EAAE,IAAK,CAAC/C,EAAE,GAAG,IAAK+C,EAAE,MAClFmzB,OAAQ,SAASC,GAAM,OAAOA,GAAM,CAACA,EAAG,GAAG,GAAIA,EAAG,GAAG,MAGnDE,GAAK,CACP72B,KAAM,KACNw2B,QAAS,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAAM74B,IAAIwU,IAC1DskB,MAAO,SAASE,GAAM,OAAa,MAANA,EAAa,KAAOL,GAAQK,IACzDD,OAAQ,SAASC,GAAM,OAAOA,IAG5BG,GAAU,CACZC,QAAS,YACT5mB,UAAW,OACXvS,EAAG,YACH4C,EAAG,YACHnC,EAAG,YACH24B,EAAG,YACHC,GAAI,cACJC,GAAI,cACJC,GAAI,cACJC,GAAI,eAGFC,GAAQ,CACV72B,EAAG,IACHw2B,EAAG,IACHC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGFE,GAAQ,CACV15B,EAAG,IACHS,EAAG,IACH44B,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGFG,GAAS,CACXR,QAAS,EACT5mB,UAAW,EACXvS,EAAG,KACH4C,EAAG,EACHnC,EAAG,KACH24B,GAAI,EACJC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,IAAK,GAGHI,GAAS,CACXT,QAAS,EACT5mB,UAAW,EACXvS,GAAI,EACJ4C,EAAG,KACHnC,EAAG,EACH24B,EAAG,KACHC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,GAAI,GAGN,SAASjlB,GAAKvH,GACZ,MAAO,CAACuH,KAAMvH,GAIhB,SAAS6sB,GAAc9d,GACrB,OAAQA,EAAM+d,UAAY/d,EAAMge,OAGlC,SAASC,KACP,IAAIljB,EAAM9X,KAAKywB,iBAAmBzwB,KAClC,OAAI8X,EAAImjB,aAAa,WAEZ,CAAC,EADRnjB,EAAMA,EAAIojB,QAAQtF,SACLxzB,EAAG0V,EAAInR,GAAI,CAACmR,EAAI1V,EAAI0V,EAAIqjB,MAAOrjB,EAAInR,EAAImR,EAAIsjB,SAEnD,CAAC,CAAC,EAAG,GAAI,CAACtjB,EAAIqjB,MAAMvF,QAAQp3B,MAAOsZ,EAAIsjB,OAAOxF,QAAQp3B,QAG/D,SAAS68B,KACP,OAAOC,UAAUC,gBAAmB,iBAAkBv7B,KAIxD,SAASqY,GAAMjC,GACb,MAAQA,EAAKolB,SAAS,KAAMplB,EAAOA,EAAK5B,YAAa,OACrD,OAAO4B,EAAKolB,QAGd,SAASx2B,GAAMqB,GACb,OAAOA,EAAO,GAAG,KAAOA,EAAO,GAAG,IAC3BA,EAAO,GAAG,KAAOA,EAAO,GAAG,GAG7B,SAASo1B,GAAerlB,GAC7B,IAAI0d,EAAQ1d,EAAKolB,QACjB,OAAO1H,EAAQA,EAAM4H,IAAI5B,OAAOhG,EAAMvgB,WAAa,KAG9C,SAASooB,KACd,OAAOC,GAAMjC,IAGR,SAASkC,KACd,OAAOD,GAAM5B,IAGA,kBACb,OAAO4B,GAAM3B,KAGf,SAAS2B,GAAMF,GACb,IAMII,EANAz1B,EAAS20B,GACTp/B,EAASi/B,GACTkB,EAAYV,GACZ7/B,GAAO,EACPwgC,EAAY/mB,GAAS,QAAS,QAAS,OACvCgnB,EAAa,EAGjB,SAASL,EAAMxyB,GACb,IAAI+wB,EAAU/wB,EACT9B,SAAS,UAAW40B,GACtBzoB,UAAU,YACV5G,KAAK,CAAC0I,GAAK,aAEd4kB,EAAQpmB,QAAQC,OAAO,QAClBC,KAAK,QAAS,WACdA,KAAK,iBAAkB,OACvBA,KAAK,SAAUimB,GAAQC,SACzBtrB,MAAMsrB,GACJzlB,MAAK,WACJ,IAAIrO,EAASgS,GAAMrY,MAAMqG,OACzB8N,GAAOnU,MACFiU,KAAK,IAAK5N,EAAO,GAAG,IACpB4N,KAAK,IAAK5N,EAAO,GAAG,IACpB4N,KAAK,QAAS5N,EAAO,GAAG,GAAKA,EAAO,GAAG,IACvC4N,KAAK,SAAU5N,EAAO,GAAG,GAAKA,EAAO,GAAG,OAGnD+C,EAAMqK,UAAU,cACb5G,KAAK,CAAC0I,GAAK,eACXxB,QAAQC,OAAO,QACbC,KAAK,QAAS,aACdA,KAAK,SAAUimB,GAAQ3mB,WACvBU,KAAK,OAAQ,QACbA,KAAK,eAAgB,IACrBA,KAAK,SAAU,QACfA,KAAK,kBAAmB,cAE7B,IAAIkoB,EAAS/yB,EAAMqK,UAAU,WAC1B5G,KAAK6uB,EAAI9B,SAAS,SAASp3B,GAAK,OAAOA,EAAE+S,QAE5C4mB,EAAOtoB,OAAOY,SAEd0nB,EAAOpoB,QAAQC,OAAO,QACjBC,KAAK,SAAS,SAASzR,GAAK,MAAO,kBAAoBA,EAAE+S,QACzDtB,KAAK,UAAU,SAASzR,GAAK,OAAO03B,GAAQ13B,EAAE+S,SAEnDnM,EACKsL,KAAK0nB,GACLnoB,KAAK,OAAQ,QACbA,KAAK,iBAAkB,OACvByB,GAAG,kBAAmB2mB,GACxBzgC,OAAOmgC,GACLrmB,GAAG,mBAAoB2mB,GACvB3mB,GAAG,kBAAmB4mB,GACtB5mB,GAAG,mCAAoC6mB,GACvCnjB,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,iBA6C5C,SAASgjB,IACP,IAAIhzB,EAAQ+K,GAAOnU,MACfuT,EAAY8E,GAAMrY,MAAMuT,UAExBA,GACFnK,EAAMqK,UAAU,cACX2F,MAAM,UAAW,MACjBnF,KAAK,IAAKV,EAAU,GAAG,IACvBU,KAAK,IAAKV,EAAU,GAAG,IACvBU,KAAK,QAASV,EAAU,GAAG,GAAKA,EAAU,GAAG,IAC7CU,KAAK,SAAUV,EAAU,GAAG,GAAKA,EAAU,GAAG,IAEnDnK,EAAMqK,UAAU,WACX2F,MAAM,UAAW,MACjBnF,KAAK,KAAK,SAASzR,GAAK,MAAqC,MAA9BA,EAAE+S,KAAK/S,EAAE+S,KAAKjZ,OAAS,GAAaiX,EAAU,GAAG,GAAK0oB,EAAa,EAAI1oB,EAAU,GAAG,GAAK0oB,EAAa,KACrIhoB,KAAK,KAAK,SAASzR,GAAK,MAAqB,MAAdA,EAAE+S,KAAK,GAAahC,EAAU,GAAG,GAAK0oB,EAAa,EAAI1oB,EAAU,GAAG,GAAK0oB,EAAa,KACrHhoB,KAAK,SAAS,SAASzR,GAAK,MAAkB,MAAXA,EAAE+S,MAA2B,MAAX/S,EAAE+S,KAAehC,EAAU,GAAG,GAAKA,EAAU,GAAG,GAAK0oB,EAAaA,KACvHhoB,KAAK,UAAU,SAASzR,GAAK,MAAkB,MAAXA,EAAE+S,MAA2B,MAAX/S,EAAE+S,KAAehC,EAAU,GAAG,GAAKA,EAAU,GAAG,GAAK0oB,EAAaA,MAI7H7yB,EAAMqK,UAAU,sBACX2F,MAAM,UAAW,QACjBnF,KAAK,IAAK,MACVA,KAAK,IAAK,MACVA,KAAK,QAAS,MACdA,KAAK,SAAU,MAIxB,SAASuoB,EAAQ3mB,EAAMjO,EAAM60B,GAC3B,IAAIC,EAAO7mB,EAAK2lB,QAAQgB,QACxB,OAAOE,GAAUD,GAAUC,EAAKD,MAAgB,IAAIE,EAAQ9mB,EAAMjO,EAAM60B,GAA/BC,EAG3C,SAASC,EAAQ9mB,EAAMjO,EAAM60B,GAC3Bz8B,KAAK6V,KAAOA,EACZ7V,KAAK4H,KAAOA,EACZ5H,KAAK8zB,MAAQje,EAAK2lB,QAClBx7B,KAAKm0B,OAAS,EACdn0B,KAAKy8B,MAAQA,EAsCf,SAASJ,EAAQtf,GACf,KAAI+e,GAAgB/e,EAAM6f,UACrBhhC,EAAOK,MAAM+D,KAAM3D,WAAxB,CAEA,IAQsBwgC,EAAIC,EACJC,EAAIC,EACJC,EAAIC,EACJC,EAAIC,EAGtBC,EAEAC,EACAC,EAjBA1nB,EAAO7V,KACPuV,EAAOwH,EAAM5gB,OAAO8a,SAAS1B,KAC7BxG,EAA6D,eAArDvT,GAAQuhB,EAAMygB,QAAUjoB,EAAO,UAAYA,GAAwB8jB,GAAa79B,GAAQuhB,EAAM0gB,OAASjE,GAAcD,GAC7HmE,EAAQhC,IAAQ1B,GAAI,KAAOW,GAAOplB,GAClCooB,EAAQjC,IAAQ/B,GAAI,KAAOiB,GAAOrlB,GAClCue,EAAQzb,GAAMxC,GACdxP,EAASytB,EAAMztB,OACfkN,EAAYugB,EAAMvgB,UAClBqqB,EAAIv3B,EAAO,GAAG,GACdw3B,EAAIx3B,EAAO,GAAG,GACdy3B,EAAIz3B,EAAO,GAAG,GACd03B,EAAI13B,EAAO,GAAG,GACd23B,EAAK,EACLC,EAAK,EAELC,EAAWR,GAASC,GAASniC,GAAQuhB,EAAMohB,SAG3CC,EAASr7B,MAAMxB,KAAKwb,EAAM6f,SAAW,CAAC7f,IAAQ,SAAA/O,GAC5C,IAAM5R,EAAI4R,EAAEqwB,WAIZ,OAHArwB,EAAIswB,GAAQtwB,EAAG6H,IACb0oB,OAASvwB,EAAE7K,QACb6K,EAAEqwB,WAAajiC,EACR4R,KAGbirB,GAAUpjB,GACV,IAAI6mB,EAAOF,EAAQ3mB,EAAMxZ,WAAW,GAAMmiC,cAE1C,GAAa,YAATjpB,EAAoB,CAClBhC,IAAW8pB,GAAS,GACxB,IAAMoB,EAAM,CAACL,EAAO,GAAIA,EAAO,IAAMA,EAAO,IAC5CtK,EAAMvgB,UAAYA,EAAY,CAAC,CAC3BspB,EAAKnB,IAAQ1B,GAAI4D,EAAIt3B,GAAIm4B,EAAI,GAAG,GAAIA,EAAI,GAAG,IAC3C1B,EAAKrB,IAAQ/B,GAAIkE,EAAIv3B,GAAIm4B,EAAI,GAAG,GAAIA,EAAI,GAAG,KAC1C,CACDxB,EAAKvB,IAAQ1B,GAAI8D,EAAIv3B,GAAIk4B,EAAI,GAAG,GAAIA,EAAI,GAAG,IAC3CtB,EAAKzB,IAAQ/B,GAAIoE,EAAIx3B,GAAIk4B,EAAI,GAAG,GAAIA,EAAI,GAAG,MAE3CL,EAAO9hC,OAAS,GAAGoiC,EAAK3hB,QAE5B8f,EAAKtpB,EAAU,GAAG,GAClBwpB,EAAKxpB,EAAU,GAAG,GAClB0pB,EAAK1pB,EAAU,GAAG,GAClB4pB,EAAK5pB,EAAU,GAAG,GAGpBupB,EAAKD,EACLG,EAAKD,EACLG,EAAKD,EACLG,EAAKD,EAEL,IAAI/zB,EAAQ+K,GAAO0B,GACd5B,KAAK,iBAAkB,QAExBkmB,EAAU/wB,EAAMqK,UAAU,YACzBQ,KAAK,SAAUimB,GAAQ3kB,IAE5B,GAAIwH,EAAM6f,QACRF,EAAKiC,MAAQA,EACbjC,EAAKkC,MAAQA,MACR,CACL,IAAI5d,EAAO7M,GAAO4I,EAAMiE,MACnBtL,GAAG,kBAAmBipB,GAAO,GAC7BjpB,GAAG,gBAAiBkpB,GAAO,GAC5BpjC,GAAMwlB,EACLtL,GAAG,gBAAiBmpB,GAAW,GAC/BnpB,GAAG,cAAeopB,GAAU,GAEjCC,GAAYhiB,EAAMiE,MAGpBob,EAAO78B,KAAKsW,GACZ6mB,EAAKxxB,MAAM6R,EAAOhO,EAAK3L,MAEvB,SAASu7B,EAAM5hB,GAAO,UACJA,EAAMiiB,gBAAkB,CAACjiB,IADrB,IACpB,2BAAiD,OAAtCle,EAAsC,YAC/Bu/B,GAD+B,IAC/C,gCAAW57B,EAAX,QACMA,EAAE67B,aAAex/B,EAAEw/B,aAAY77B,EAAEy8B,IAAMX,GAAQz/B,EAAGgX,KAFT,gCAD7B,8BAKpB,GAAIqoB,IAAaZ,IAAUC,GAA2B,IAAlBa,EAAO9hC,OAAc,CACvD,IAAMq0B,EAAQyN,EAAO,GACjBx3B,GAAI+pB,EAAMsO,IAAI,GAAKtO,EAAM,IAAM/pB,GAAI+pB,EAAMsO,IAAI,GAAKtO,EAAM,IAC1D4M,GAAQ,EAERD,GAAQ,EAVQ,UAYAc,GAZA,IAYpB,gCAAWzN,EAAX,QACMA,EAAMsO,MAAKtO,EAAM,GAAKA,EAAMsO,IAAI,GAAItO,EAAM,GAAKA,EAAMsO,IAAI,KAb3C,8BAcpB5B,GAAS,EACTpc,GAAQlE,GACR2hB,EAAK3hB,GAGP,SAAS2hB,EAAK3hB,GACZ,IACI/O,EADE2iB,EAAQyN,EAAO,GAAIG,EAAS5N,EAAM4N,OAMxC,OAHAP,EAAKrN,EAAM,GAAK4N,EAAO,GACvBN,EAAKtN,EAAM,GAAK4N,EAAO,GAEfxvB,GACN,KAAKuqB,GACL,KAAKD,GACCqE,IAAOM,EAAKz3B,GAAIq3B,EAAIf,EAAIv2B,GAAIw3B,EAAIb,EAAIe,IAAMlB,EAAKD,EAAKmB,EAAId,EAAKD,EAAKe,GAClEL,IAAOM,EAAK13B,GAAIs3B,EAAId,EAAIz2B,GAAIy3B,EAAIZ,EAAIc,IAAMjB,EAAKD,EAAKkB,EAAIb,EAAKD,EAAKc,GACtE,MAEF,KAAK1E,GACC6E,EAAO,IACLV,IAAOZ,EAAKv2B,GAAIq3B,EAAGt3B,GAAIw3B,EAAGM,EAAO,GAAG,KAAMlB,EAAK32B,GAAIq3B,EAAGt3B,GAAIw3B,EAAGM,EAAO,GAAG,KAAMV,EAAQ,GACrFC,IAAOX,EAAKz2B,GAAIs3B,EAAGv3B,GAAIy3B,EAAGK,EAAO,GAAG,KAAMhB,EAAK72B,GAAIs3B,EAAGv3B,GAAIy3B,EAAGK,EAAO,GAAG,KAAMT,EAAQ,KAErFD,EAAQ,GAAGM,EAAKz3B,GAAIq3B,EAAIf,EAAIv2B,GAAIw3B,EAAIjB,EAAImB,IAAMlB,EAAKD,EAAKmB,EAAId,EAAKD,GAC5DS,EAAQ,IAAGM,EAAKz3B,GAAIq3B,EAAIX,EAAI32B,GAAIw3B,EAAIb,EAAIe,IAAMlB,EAAKD,EAAIK,EAAKD,EAAKe,GACtEL,EAAQ,GAAGM,EAAK13B,GAAIs3B,EAAId,EAAIz2B,GAAIy3B,EAAIhB,EAAIkB,IAAMjB,EAAKD,EAAKkB,EAAIb,EAAKD,GAC5DQ,EAAQ,IAAGM,EAAK13B,GAAIs3B,EAAIV,EAAI72B,GAAIy3B,EAAIZ,EAAIc,IAAMjB,EAAKD,EAAIK,EAAKD,EAAKc,IAE5E,MAEF,KAAKzE,GACCkE,IAAOZ,EAAKv2B,GAAIq3B,EAAGt3B,GAAIw3B,EAAGjB,EAAKmB,EAAKN,IAASR,EAAK32B,GAAIq3B,EAAGt3B,GAAIw3B,EAAGb,EAAKe,EAAKN,KAC1EC,IAAOX,EAAKz2B,GAAIs3B,EAAGv3B,GAAIy3B,EAAGhB,EAAKkB,EAAKN,IAASP,EAAK72B,GAAIs3B,EAAGv3B,GAAIy3B,EAAGZ,EAAKc,EAAKN,KAK9ET,EAAKJ,IACPY,IAAU,EACV1vB,EAAI6uB,EAAIA,EAAKI,EAAIA,EAAKjvB,EACtBA,EAAI8uB,EAAIA,EAAKI,EAAIA,EAAKlvB,EAClBuH,KAAQklB,IAAON,EAAQlmB,KAAK,SAAUimB,GAAQ3kB,EAAOklB,GAAMllB,MAG7D6nB,EAAKJ,IACPW,IAAU,EACV3vB,EAAI+uB,EAAIA,EAAKI,EAAIA,EAAKnvB,EACtBA,EAAIgvB,EAAIA,EAAKI,EAAIA,EAAKpvB,EAClBuH,KAAQmlB,IAAOP,EAAQlmB,KAAK,SAAUimB,GAAQ3kB,EAAOmlB,GAAMnlB,MAG7Due,EAAMvgB,YAAWA,EAAYugB,EAAMvgB,WACnC+pB,IAAOR,EAAKvpB,EAAU,GAAG,GAAI2pB,EAAK3pB,EAAU,GAAG,IAC/CgqB,IAAOP,EAAKzpB,EAAU,GAAG,GAAI6pB,EAAK7pB,EAAU,GAAG,IAE/CA,EAAU,GAAG,KAAOupB,GACjBvpB,EAAU,GAAG,KAAOypB,GACpBzpB,EAAU,GAAG,KAAO2pB,GACpB3pB,EAAU,GAAG,KAAO6pB,IACzBtJ,EAAMvgB,UAAY,CAAC,CAACupB,EAAIE,GAAK,CAACE,EAAIE,IAClChB,EAAO78B,KAAKsW,GACZ6mB,EAAKd,MAAM7e,EAAOhO,EAAK3L,OAI3B,SAASw7B,EAAM7hB,GAEb,GADA8D,GAAc9D,GACVA,EAAM6f,QAAS,CACjB,GAAI7f,EAAM6f,QAAQtgC,OAAQ,OACtBw/B,GAAa5I,aAAa4I,GAC9BA,EAAcxa,YAAW,WAAawa,EAAc,OAAS,UAE7DoD,GAAWniB,EAAMiE,KAAMqc,GACvBrc,EAAKtL,GAAG,0DAA2D,MAErEtM,EAAM6K,KAAK,iBAAkB,OAC7BkmB,EAAQlmB,KAAK,SAAUimB,GAAQC,SAC3BrG,EAAMvgB,YAAWA,EAAYugB,EAAMvgB,WACnCvO,GAAMuO,KAAYugB,EAAMvgB,UAAY,KAAM6oB,EAAO78B,KAAKsW,IAC1D6mB,EAAKlO,IAAIzR,EAAOhO,EAAK3L,MAGvB,SAASy7B,EAAU9hB,GACjB,OAAQA,EAAMoiB,SACZ,KAAK,GACHjB,EAAWR,GAASC,EACpB,MAEF,KAAK,GACC5uB,IAASwqB,KACPmE,IAAOT,EAAKC,EAAKc,EAAKN,EAAOb,EAAKC,EAAKkB,EAAKN,GAC5CC,IAAOR,EAAKC,EAAKa,EAAKN,EAAOZ,EAAKC,EAAKiB,EAAKN,GAChD5uB,EAAOyqB,GACPkF,EAAK3hB,IAEP,MAEF,KAAK,GACChO,IAASwqB,IAAexqB,IAASyqB,KAC/BkE,EAAQ,EAAGT,EAAKC,EAAKc,EAAaN,EAAQ,IAAGb,EAAKC,EAAKkB,GACvDL,EAAQ,EAAGR,EAAKC,EAAKa,EAAaN,EAAQ,IAAGZ,EAAKC,EAAKiB,GAC3DlvB,EAAOuqB,GACPa,EAAQlmB,KAAK,SAAUimB,GAAQ3mB,WAC/BmrB,EAAK3hB,IAEP,MAEF,QAAS,OAEXkE,GAAQlE,GAGV,SAAS+hB,EAAS/hB,GAChB,OAAQA,EAAMoiB,SACZ,KAAK,GACCjB,IACFZ,EAAQC,EAAQW,GAAW,EAC3BQ,EAAK3hB,IAEP,MAEF,KAAK,GACChO,IAASyqB,KACPkE,EAAQ,EAAGT,EAAKC,EAAaQ,EAAQ,IAAGb,EAAKC,GAC7Ca,EAAQ,EAAGR,EAAKC,EAAaO,EAAQ,IAAGZ,EAAKC,GACjDjuB,EAAOwqB,GACPmF,EAAK3hB,IAEP,MAEF,KAAK,GACChO,IAASuqB,KACPvc,EAAM0gB,QACJC,IAAOT,EAAKC,EAAKc,EAAKN,EAAOb,EAAKC,EAAKkB,EAAKN,GAC5CC,IAAOR,EAAKC,EAAKa,EAAKN,EAAOZ,EAAKC,EAAKiB,EAAKN,GAChD5uB,EAAOyqB,KAEHkE,EAAQ,EAAGT,EAAKC,EAAaQ,EAAQ,IAAGb,EAAKC,GAC7Ca,EAAQ,EAAGR,EAAKC,EAAaO,EAAQ,IAAGZ,EAAKC,GACjDjuB,EAAOwqB,IAETY,EAAQlmB,KAAK,SAAUimB,GAAQ3kB,IAC/BmpB,EAAK3hB,IAEP,MAEF,QAAS,OAEXkE,GAAQlE,IAIZ,SAASuf,EAAWvf,GAClByf,EAAQx8B,KAAM3D,WAAWsiC,MAAM5hB,GAGjC,SAASwf,EAAWxf,GAClByf,EAAQx8B,KAAM3D,WAAWuiC,MAAM7hB,GAGjC,SAASmf,IACP,IAAIpI,EAAQ9zB,KAAKw7B,SAAW,CAACjoB,UAAW,MAGxC,OAFAugB,EAAMztB,OAASqzB,GAAQrzB,EAAOpK,MAAM+D,KAAM3D,YAC1Cy3B,EAAM4H,IAAMA,EACL5H,EA4BT,OAtZA8H,EAAM8C,KAAO,SAASt1B,EAAOmK,EAAWwJ,GAClC3T,EAAMwqB,MACRxqB,EACKsM,GAAG,eAAe,SAASqH,GAASyf,EAAQx8B,KAAM3D,WAAWmiC,cAActzB,MAAM6R,MACjFrH,GAAG,6BAA6B,SAASqH,GAASyf,EAAQx8B,KAAM3D,WAAWmyB,IAAIzR,MAC/E6W,MAAM,SAAS,WACd,IAAI/d,EAAO7V,KACP8zB,EAAQje,EAAK2lB,QACbkB,EAAOF,EAAQ3mB,EAAMxZ,WACrB+iC,EAAatL,EAAMvgB,UACnB8rB,EAAa3D,EAAI7B,MAA2B,oBAAdtmB,EAA2BA,EAAUtX,MAAM+D,KAAM3D,WAAakX,EAAWugB,EAAMztB,QAC7GjK,EAAIm6B,GAAY6I,EAAYC,GAEhC,SAASzL,EAAM5lB,GACb8lB,EAAMvgB,UAAkB,IAANvF,GAA0B,OAAfqxB,EAAsB,KAAOjjC,EAAE4R,GAC5DouB,EAAO78B,KAAKsW,GACZ6mB,EAAKd,QAGP,OAAsB,OAAfwD,GAAsC,OAAfC,EAAsBzL,EAAQA,EAAM,MAGxExqB,EACKsL,MAAK,WACJ,IAAImB,EAAO7V,KACP4H,EAAOvL,UACPy3B,EAAQje,EAAK2lB,QACb6D,EAAa3D,EAAI7B,MAA2B,oBAAdtmB,EAA2BA,EAAUtX,MAAM4Z,EAAMjO,GAAQ2L,EAAWugB,EAAMztB,QACxGq2B,EAAOF,EAAQ3mB,EAAMjO,GAAM42B,cAE/BvF,GAAUpjB,GACVie,EAAMvgB,UAA2B,OAAf8rB,EAAsB,KAAOA,EAC/CjD,EAAO78B,KAAKsW,GACZ6mB,EAAKxxB,MAAM6R,GAAO6e,MAAM7e,GAAOyR,IAAIzR,OAK7C6e,EAAM0D,MAAQ,SAASl2B,EAAO2T,GAC5B6e,EAAM8C,KAAKt1B,EAAO,KAAM2T,IA8C1B4f,EAAQl/B,UAAY,CAClB+gC,YAAa,WAEX,OADsB,MAAhBx+B,KAAKm0B,SAAcn0B,KAAK8zB,MAAM0I,QAAUx8B,KAAMA,KAAKu/B,UAAW,GAC7Dv/B,MAETkL,MAAO,SAAS6R,EAAOhO,GAGrB,OAFI/O,KAAKu/B,UAAUv/B,KAAKu/B,UAAW,EAAOv/B,KAAK08B,KAAK,QAAS3f,EAAOhO,IAC/D/O,KAAK08B,KAAK,QAAS3f,GACjB/c,MAET47B,MAAO,SAAS7e,EAAOhO,GAErB,OADA/O,KAAK08B,KAAK,QAAS3f,EAAOhO,GACnB/O,MAETwuB,IAAK,SAASzR,EAAOhO,GAEnB,OADsB,MAAhB/O,KAAKm0B,gBAAqBn0B,KAAK8zB,MAAM0I,QAASx8B,KAAK08B,KAAK,MAAO3f,EAAOhO,IACrE/O,MAET08B,KAAM,SAASnnB,EAAMwH,EAAOhO,GAC1B,IAAIvM,EAAI2R,GAAOnU,KAAK6V,MAAMe,QAC1BolB,EAAUz8B,KACRgW,EACAvV,KAAK6V,KACL,IAAIujB,GAAW7jB,EAAM,CACnBgb,YAAaxT,EACb5gB,OAAQy/B,EACRroB,UAAWmoB,EAAI5B,OAAO95B,KAAK8zB,MAAMvgB,WACjCxE,OACAkG,SAAU+mB,IAEZx5B,KA0QNo5B,EAAMv1B,OAAS,SAASkH,GACtB,OAAOlR,UAAUC,QAAU+J,EAAsB,oBAANkH,EAAmBA,EAAI1C,GAAS6uB,GAAQnsB,IAAKquB,GAASv1B,GAGnGu1B,EAAMhgC,OAAS,SAAS2R,GACtB,OAAOlR,UAAUC,QAAUV,EAAsB,oBAAN2R,EAAmBA,EAAI1C,KAAW0C,GAAIquB,GAAShgC,GAG5FggC,EAAMG,UAAY,SAASxuB,GACzB,OAAOlR,UAAUC,QAAUy/B,EAAyB,oBAANxuB,EAAmBA,EAAI1C,KAAW0C,GAAIquB,GAASG,GAG/FH,EAAMK,WAAa,SAAS1uB,GAC1B,OAAOlR,UAAUC,QAAU2/B,GAAc1uB,EAAGquB,GAASK,GAGvDL,EAAM4D,aAAe,SAASjyB,GAC5B,OAAOlR,UAAUC,QAAUd,IAAS+R,EAAGquB,GAASpgC,GAGlDogC,EAAMlmB,GAAK,WACT,IAAIlX,EAAQw9B,EAAUtmB,GAAGzZ,MAAM+/B,EAAW3/B,WAC1C,OAAOmC,IAAUw9B,EAAYJ,EAAQp9B,GAGhCo9B,EC3mBF,IAAIh1B,GAAMT,KAAKS,IACX64B,GAAMt5B,KAAKs5B,IACXC,GAAMv5B,KAAKu5B,IACXC,GAAKx5B,KAAKkuB,GACVuL,GAASD,GAAK,EACdE,GAAW,EAALF,GACNp5B,GAAMJ,KAAKI,IACXsL,GAAU,MCLrB,SAASrC,GAAMpT,EAAGmJ,GAChB,OAAOxC,MAAMxB,KAAK,CAACjF,OAAQiJ,EAAInJ,IAAI,SAACmR,EAAGG,GAAJ,OAAUtR,EAAIsR,KAGnD,SAASoyB,GAAav1B,GACpB,OAAO,SAAS5I,EAAGC,GACjB,OAAO2I,EACL5I,EAAEpF,OAAOiC,MAAQmD,EAAExF,OAAOqC,MAC1BoD,EAAErF,OAAOiC,MAAQoD,EAAEzF,OAAOqC,QAKjB,kBACb,OAAOuhC,IAAM,GAAO,IAGf,SAASC,KACd,OAAOD,IAAM,GAAO,GAGf,SAASE,KACd,OAAOF,IAAM,GAAM,GAGrB,SAASA,GAAMG,EAAUxvB,GACvB,IAAIyvB,EAAW,EACXC,EAAa,KACbC,EAAgB,KAChBC,EAAa,KAEjB,SAASP,EAAMpvB,GACb,IAKWqtB,EALPh9B,EAAI2P,EAAOrU,OACXikC,EAAY,IAAIx9B,MAAM/B,GACtBw/B,EAAahxB,GAAM,EAAGxO,GACtBy/B,EAAS,IAAI19B,MAAM/B,EAAIA,GACvBsI,EAAS,IAAIvG,MAAM/B,GACnB0M,EAAI,EAERiD,EAAS9K,aAAatE,KAAK,CAACjF,OAAQ0E,EAAIA,GAAI0P,EACtC,SAACnD,EAAGnR,GAAJ,OAAUuU,EAAOvU,EAAI4E,GAAG5E,EAAI4E,EAAI,IAChC,SAACuM,EAAGnR,GAAJ,OAAUuU,EAAOvU,EAAI4E,EAAI,GAAG5E,EAAI4E,KAGtC,IAAK,IAAI5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG,CAE1B,IADA,IAAIgG,EAAI,EACCmD,EAAI,EAAGA,EAAIvE,IAAKuE,EAAGnD,GAAKuO,EAAOvU,EAAI4E,EAAIuE,GAAK26B,EAAWvvB,EAAOpL,EAAIvE,EAAI5E,GAC/EsR,GAAK6yB,EAAUnkC,GAAKgG,EAEtBsL,EAAInH,GAAI,EAAGs5B,GAAMM,EAAWn/B,GAAK0M,EACjCswB,EAAKtwB,EAAIyyB,EAAWN,GAAM7+B,EAIxB,IAAIoB,EAAI,EACJg+B,GAAYI,EAAWt2B,MAAK,SAACvI,EAAGC,GAAJ,OAAUw+B,EAAWG,EAAU5+B,GAAI4+B,EAAU3+B,OAF/E,UAGkB4+B,GAHlB,yBAGapkC,EAHb,QAIU2Q,EAAK3K,EACX,GAAI89B,EAAU,CACZ,IAAMQ,EAAgBlxB,GAAW,GAAJxO,EAAOA,GAAGpF,QAAO,SAAA2J,GAAC,OAAIA,EAAI,EAAIoL,GAAQpL,EAAIvE,EAAI5E,GAAKuU,EAAOvU,EAAI4E,EAAIuE,MAC3F86B,GAAeK,EAAcx2B,MAAK,SAACvI,EAAGC,GAAJ,OAAUy+B,EAAc1+B,EAAI,GAAKgP,GAAQhP,EAAIX,EAAI5E,GAAKuU,EAAOvU,EAAI4E,EAAIW,GAAIC,EAAI,GAAK+O,GAAQ/O,EAAIZ,EAAI5E,GAAKuU,EAAOvU,EAAI4E,EAAIY,OAFhJ,UAGI8+B,GAHJ,IAGZ,2BAA+B,KAApBn7B,EAAoB,QAC7B,GAAIA,EAAI,GACQk7B,GAAQl7B,EAAIvE,EAAI5E,KAAOqkC,GAAQl7B,EAAIvE,EAAI5E,GAAK,CAACG,OAAQ,KAAMJ,OAAQ,QAC3EA,OAAS,CAACoI,MAAOnI,EAAGukC,WAAYv+B,EAAGw+B,SAAUx+B,GAAKuO,GAAQpL,EAAIvE,EAAI5E,GAAKsR,EAAGlP,MAAOmS,GAAQpL,EAAIvE,EAAI5E,SAEzFqkC,EAAOrkC,EAAI4E,EAAIuE,KAAOk7B,EAAOrkC,EAAI4E,EAAIuE,GAAK,CAAChJ,OAAQ,KAAMJ,OAAQ,QACzEI,OAAS,CAACgI,MAAOnI,EAAGukC,WAAYv+B,EAAGw+B,SAAUx+B,GAAKuO,EAAOvU,EAAI4E,EAAIuE,GAAKmI,EAAGlP,MAAOmS,EAAOvU,EAAI4E,EAAIuE,KAT7F,8BAYZ+D,EAAOlN,GAAK,CAACmI,MAAOnI,EAAGukC,WAAY5zB,EAAI6zB,SAAUx+B,EAAG5D,MAAO+hC,EAAUnkC,QAChE,CACL,IAAMskC,EAAgBlxB,GAAM,EAAGxO,GAAGpF,QAAO,SAAA2J,GAAC,OAAIoL,EAAOvU,EAAI4E,EAAIuE,IAAMoL,EAAOpL,EAAIvE,EAAI5E,MAC9EikC,GAAeK,EAAcx2B,MAAK,SAACvI,EAAGC,GAAJ,OAAUy+B,EAAc1vB,EAAOvU,EAAI4E,EAAIW,GAAIgP,EAAOvU,EAAI4E,EAAIY,OAF3F,UAGW8+B,GAHX,IAGL,2BAA+B,KAApBn7B,EAAoB,QACzBw6B,OAAK,EAST,GARI3jC,EAAImJ,GACNw6B,EAAQU,EAAOrkC,EAAI4E,EAAIuE,KAAOk7B,EAAOrkC,EAAI4E,EAAIuE,GAAK,CAAChJ,OAAQ,KAAMJ,OAAQ,QACnEI,OAAS,CAACgI,MAAOnI,EAAGukC,WAAYv+B,EAAGw+B,SAAUx+B,GAAKuO,EAAOvU,EAAI4E,EAAIuE,GAAKmI,EAAGlP,MAAOmS,EAAOvU,EAAI4E,EAAIuE,MAErGw6B,EAAQU,EAAOl7B,EAAIvE,EAAI5E,KAAOqkC,EAAOl7B,EAAIvE,EAAI5E,GAAK,CAACG,OAAQ,KAAMJ,OAAQ,QACnEA,OAAS,CAACoI,MAAOnI,EAAGukC,WAAYv+B,EAAGw+B,SAAUx+B,GAAKuO,EAAOvU,EAAI4E,EAAIuE,GAAKmI,EAAGlP,MAAOmS,EAAOvU,EAAI4E,EAAIuE,IACjGnJ,IAAMmJ,IAAGw6B,EAAMxjC,OAASwjC,EAAM5jC,SAEhC4jC,EAAMxjC,QAAUwjC,EAAM5jC,QAAU4jC,EAAMxjC,OAAOiC,MAAQuhC,EAAM5jC,OAAOqC,MAAO,CAC3E,IAAMjC,EAASwjC,EAAMxjC,OACrBwjC,EAAMxjC,OAASwjC,EAAM5jC,OACrB4jC,EAAM5jC,OAASI,IAhBd,8BAmBL+M,EAAOlN,GAAK,CAACmI,MAAOnI,EAAGukC,WAAY5zB,EAAI6zB,SAAUx+B,EAAG5D,MAAO+hC,EAAUnkC,IAEvEgG,GAAK47B,GApCP,2BAA4B,IAH9B,8BA8CA,OAFAyC,EAAShlC,OAAO4I,OAAOo8B,IAChBn3B,OAASA,EACTg3B,EAAaG,EAAOv2B,KAAKo2B,GAAcG,EAmBhD,OAhBAV,EAAMI,SAAW,SAAS5yB,GACxB,OAAOlR,UAAUC,QAAU6jC,EAAW55B,GAAI,EAAGgH,GAAIwyB,GAASI,GAG5DJ,EAAMK,WAAa,SAAS7yB,GAC1B,OAAOlR,UAAUC,QAAU8jC,EAAa7yB,EAAGwyB,GAASK,GAGtDL,EAAMM,cAAgB,SAAS9yB,GAC7B,OAAOlR,UAAUC,QAAU+jC,EAAgB9yB,EAAGwyB,GAASM,GAGzDN,EAAMO,WAAa,SAAS/yB,GAC1B,OAAOlR,UAAUC,QAAe,MAALiR,EAAY+yB,EAAa,MAAQA,EAAaR,GAAavyB,IAAIA,EAAIA,EAAGwyB,GAASO,GAAcA,EAAW/yB,GAG9HwyB,ECxHT,IAAMJ,GAAKx5B,KAAKkuB,GACZwL,GAAM,EAAIF,GACV9tB,GAAU,KACVgvB,GAAahB,GAAMhuB,GAEvB,SAASivB,KACP9gC,KAAK+gC,IAAM/gC,KAAKghC,IAChBhhC,KAAKihC,IAAMjhC,KAAKkhC,IAAM,KACtBlhC,KAAKuN,EAAI,GAGX,SAASiG,KACP,OAAO,IAAIstB,GAGbA,GAAKrjC,UAAY+V,GAAK/V,UAAY,CAChCyB,YAAa4hC,GACbK,OAAQ,SAAS/+B,EAAGuE,GAClB3G,KAAKuN,GAAK,KAAOvN,KAAK+gC,IAAM/gC,KAAKihC,KAAO7+B,GAAK,KAAOpC,KAAKghC,IAAMhhC,KAAKkhC,KAAOv6B,IAE7Ey6B,UAAW,WACQ,OAAbphC,KAAKihC,MACPjhC,KAAKihC,IAAMjhC,KAAK+gC,IAAK/gC,KAAKkhC,IAAMlhC,KAAKghC,IACrChhC,KAAKuN,GAAK,MAGd8zB,OAAQ,SAASj/B,EAAGuE,GAClB3G,KAAKuN,GAAK,KAAOvN,KAAKihC,KAAO7+B,GAAK,KAAOpC,KAAKkhC,KAAOv6B,IAEvD26B,iBAAkB,SAASt0B,EAAIu0B,EAAIn/B,EAAGuE,GACpC3G,KAAKuN,GAAK,MAAQP,EAAM,MAAQu0B,EAAM,KAAOvhC,KAAKihC,KAAO7+B,GAAK,KAAOpC,KAAKkhC,KAAOv6B,IAEnF66B,cAAe,SAASx0B,EAAIu0B,EAAIE,EAAIC,EAAIt/B,EAAGuE,GACzC3G,KAAKuN,GAAK,MAAQP,EAAM,MAAQu0B,EAAM,MAAQE,EAAM,MAAQC,EAAM,KAAO1hC,KAAKihC,KAAO7+B,GAAK,KAAOpC,KAAKkhC,KAAOv6B,IAE/Gg7B,MAAO,SAAS30B,EAAIu0B,EAAIE,EAAIC,EAAI9xB,GAC9B5C,GAAMA,EAAIu0B,GAAMA,EAAIE,GAAMA,EAAIC,GAAMA,EAAI9xB,GAAKA,EAC7C,IAAI7C,EAAK/M,KAAKihC,IACVW,EAAK5hC,KAAKkhC,IACVW,EAAMJ,EAAKz0B,EACX80B,EAAMJ,EAAKH,EACXQ,EAAMh1B,EAAKC,EACXg1B,EAAMJ,EAAKL,EACXU,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAIpyB,EAAI,EAAG,MAAM,IAAI3R,MAAM,oBAAsB2R,GAGjD,GAAiB,OAAb5P,KAAKihC,IACPjhC,KAAKuN,GAAK,KAAOvN,KAAKihC,IAAMj0B,GAAM,KAAOhN,KAAKkhC,IAAMK,QAIjD,GAAMU,EAAQpwB,GAKd,GAAM1L,KAAKS,IAAIo7B,EAAMH,EAAMC,EAAMC,GAAOlwB,IAAajC,EAKrD,CACH,IAAIsyB,EAAMT,EAAK10B,EACXo1B,EAAMT,EAAKE,EACXQ,EAAQP,EAAMA,EAAMC,EAAMA,EAC1BO,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMn8B,KAAKC,KAAKg8B,GAChBG,EAAMp8B,KAAKC,KAAK67B,GAChB/V,EAAItc,EAAIzJ,KAAK8kB,KAAK0U,GAAKx5B,KAAKq8B,MAAMJ,EAAQH,EAAQI,IAAU,EAAIC,EAAMC,KAAS,GAC/EE,EAAMvW,EAAIqW,EACVG,EAAMxW,EAAIoW,EAGVn8B,KAAKS,IAAI67B,EAAM,GAAK5wB,KACtB7R,KAAKuN,GAAK,KAAOP,EAAKy1B,EAAMV,GAAO,KAAOR,EAAKkB,EAAMT,IAGvDhiC,KAAKuN,GAAK,IAAMqC,EAAI,IAAMA,EAAI,WAAaoyB,EAAME,EAAMH,EAAMI,GAAQ,KAAOniC,KAAKihC,IAAMj0B,EAAK01B,EAAMb,GAAO,KAAO7hC,KAAKkhC,IAAMK,EAAKmB,EAAMZ,QApBtI9hC,KAAKuN,GAAK,KAAOvN,KAAKihC,IAAMj0B,GAAM,KAAOhN,KAAKkhC,IAAMK,UAuBxDoB,IAAK,SAASvgC,EAAGuE,EAAGiJ,EAAGgzB,EAAIC,EAAIC,GAC7B1gC,GAAKA,EAAGuE,GAAKA,EAAWm8B,IAAQA,EAChC,IAAI9E,GADYpuB,GAAKA,GACRzJ,KAAKs5B,IAAImD,GAClB3E,EAAKruB,EAAIzJ,KAAKu5B,IAAIkD,GAClB71B,EAAK3K,EAAI47B,EACT4D,EAAKj7B,EAAIs3B,EACT8E,EAAK,EAAID,EACTE,EAAKF,EAAMF,EAAKC,EAAKA,EAAKD,EAG9B,GAAIhzB,EAAI,EAAG,MAAM,IAAI3R,MAAM,oBAAsB2R,GAGhC,OAAb5P,KAAKihC,IACPjhC,KAAKuN,GAAK,IAAMR,EAAK,IAAM60B,GAIpBz7B,KAAKS,IAAI5G,KAAKihC,IAAMl0B,GAAM8E,IAAW1L,KAAKS,IAAI5G,KAAKkhC,IAAMU,GAAM/vB,MACtE7R,KAAKuN,GAAK,IAAMR,EAAK,IAAM60B,GAIxBhyB,IAGDozB,EAAK,IAAGA,EAAKA,EAAKnD,GAAMA,IAGxBmD,EAAKnC,GACP7gC,KAAKuN,GAAK,IAAMqC,EAAI,IAAMA,EAAI,QAAUmzB,EAAK,KAAO3gC,EAAI47B,GAAM,KAAOr3B,EAAIs3B,GAAM,IAAMruB,EAAI,IAAMA,EAAI,QAAUmzB,EAAK,KAAO/iC,KAAKihC,IAAMl0B,GAAM,KAAO/M,KAAKkhC,IAAMU,GAIrJoB,EAAKnxB,KACZ7R,KAAKuN,GAAK,IAAMqC,EAAI,IAAMA,EAAI,SAAWozB,GAAMrD,IAAO,IAAMoD,EAAK,KAAO/iC,KAAKihC,IAAM7+B,EAAIwN,EAAIzJ,KAAKs5B,IAAIoD,IAAO,KAAO7iC,KAAKkhC,IAAMv6B,EAAIiJ,EAAIzJ,KAAKu5B,IAAImD,OAGlJ3R,KAAM,SAAS9uB,EAAGuE,EAAGyzB,EAAGpN,GACtBhtB,KAAKuN,GAAK,KAAOvN,KAAK+gC,IAAM/gC,KAAKihC,KAAO7+B,GAAK,KAAOpC,KAAKghC,IAAMhhC,KAAKkhC,KAAOv6B,GAAK,MAAQyzB,EAAK,MAAQpN,EAAK,KAAQoN,EAAK,KAEzHl3B,SAAU,WACR,OAAOlD,KAAKuN,IAIDiG,UCjIJrQ,GAAQJ,MAAMtF,UAAU0F,MCApB,YAASf,GACtB,OAAO,WACL,OAAOA,ICGX,SAAS6gC,GAAczgC,GACrB,OAAOA,EAAEjG,OAGX,SAAS2mC,GAAc1gC,GACrB,OAAOA,EAAErG,OAGX,SAASgnC,GAAc3gC,GACrB,OAAOA,EAAE4gC,OAGX,SAASC,GAAkB7gC,GACzB,OAAOA,EAAEm+B,WAGX,SAAS2C,GAAgB9gC,GACvB,OAAOA,EAAEo+B,SAGX,SAAS2C,KACP,OAAO,EAGT,SAASC,KACP,OAAO,GAGT,SAASC,GAAOC,GACd,IAAInnC,EAAS0mC,GACT9mC,EAAS+mC,GACTS,EAAeR,GACfS,EAAeT,GACfxC,EAAa0C,GACbzC,EAAW0C,GACXnD,EAAWoD,GACXvwB,EAAU,KAEd,SAASywB,IACP,IAAII,EACApiC,EAAIlF,EAAON,MAAM+D,KAAM3D,WACvB2R,EAAI7R,EAAOF,MAAM+D,KAAM3D,WACvBynC,EAAK3D,EAASlkC,MAAM+D,KAAM3D,WAAa,EACvC0nC,EAAO5gC,GAAM5D,KAAKlD,WAClB2nC,GAAML,EAAa1nC,MAAM+D,MAAO+jC,EAAK,GAAKtiC,EAAGsiC,IAC7CE,EAAMtD,EAAW1kC,MAAM+D,KAAM+jC,GAAQnE,GACrCsE,EAAMtD,EAAS3kC,MAAM+D,KAAM+jC,GAAQnE,GACnCuE,GAAMP,EAAa3nC,MAAM+D,MAAO+jC,EAAK,GAAK/1B,EAAG+1B,IAC7CK,EAAMzD,EAAW1kC,MAAM+D,KAAM+jC,GAAQnE,GACrCyE,EAAMzD,EAAS3kC,MAAM+D,KAAM+jC,GAAQnE,GAavC,GAXK5sB,IAASA,EAAU6wB,EAASrwB,MAE7BswB,EAAKjyB,KACHjL,GAAIs9B,EAAMD,GAAY,EAALH,EAASjyB,GAASqyB,EAAMD,GAAOA,GAAOH,EAAII,GAAOJ,IAAOG,GAAOH,EAAII,GAAOJ,GAC1FG,EAAMC,GAAOD,EAAMC,GAAO,EAC3Bt9B,GAAIy9B,EAAMD,GAAY,EAALN,EAASjyB,GAASwyB,EAAMD,GAAOA,GAAON,EAAIO,GAAOP,IAAOM,GAAON,EAAIO,GAAOP,GAC1FM,EAAMC,GAAOD,EAAMC,GAAO,GAGjCrxB,EAAQmuB,OAAO6C,EAAKvE,GAAIwE,GAAMD,EAAKtE,GAAIuE,IACvCjxB,EAAQ2vB,IAAI,EAAG,EAAGqB,EAAIC,EAAKC,GACvBD,IAAQG,GAAOF,IAAQG,EACzB,GAAIX,EAAY,CACd,IAAIY,GAAMZ,EAAWznC,MAAM+D,KAAM3D,WAAYkoC,EAAMJ,EAAKG,EAAIE,GAAOJ,EAAMC,GAAO,EAChFrxB,EAAQsuB,iBAAiB,EAAG,EAAGiD,EAAM9E,GAAI2E,GAAMG,EAAM7E,GAAI0E,IACzDpxB,EAAQquB,OAAO8C,EAAK1E,GAAI+E,GAAML,EAAKzE,GAAI8E,IACvCxxB,EAAQquB,OAAOkD,EAAM9E,GAAI4E,GAAME,EAAM7E,GAAI2E,SAEzCrxB,EAAQsuB,iBAAiB,EAAG,EAAG6C,EAAK1E,GAAI2E,GAAMD,EAAKzE,GAAI0E,IACvDpxB,EAAQ2vB,IAAI,EAAG,EAAGwB,EAAIC,EAAKC,GAM/B,GAHArxB,EAAQsuB,iBAAiB,EAAG,EAAG0C,EAAKvE,GAAIwE,GAAMD,EAAKtE,GAAIuE,IACvDjxB,EAAQouB,YAEJyC,EAAQ,OAAO7wB,EAAU,KAAM6wB,EAAS,IAAM,KA2CpD,OAxCIH,IAAYD,EAAOC,WAAa,SAASn2B,GAC3C,OAAOlR,UAAUC,QAAUonC,EAA0B,oBAANn2B,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAUC,IAGhGD,EAAOL,OAAS,SAAS71B,GACvB,OAAOlR,UAAUC,QAAUqnC,EAAeC,EAA4B,oBAANr2B,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAUE,GAGjHF,EAAOE,aAAe,SAASp2B,GAC7B,OAAOlR,UAAUC,QAAUqnC,EAA4B,oBAANp2B,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAUE,GAGlGF,EAAOG,aAAe,SAASr2B,GAC7B,OAAOlR,UAAUC,QAAUsnC,EAA4B,oBAANr2B,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAUG,GAGlGH,EAAO9C,WAAa,SAASpzB,GAC3B,OAAOlR,UAAUC,QAAUqkC,EAA0B,oBAANpzB,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAU9C,GAGhG8C,EAAO7C,SAAW,SAASrzB,GACzB,OAAOlR,UAAUC,QAAUskC,EAAwB,oBAANrzB,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAU7C,GAG9F6C,EAAOtD,SAAW,SAAS5yB,GACzB,OAAOlR,UAAUC,QAAU6jC,EAAwB,oBAAN5yB,EAAmBA,EAAI1C,IAAU0C,GAAIk2B,GAAUtD,GAG9FsD,EAAOlnC,OAAS,SAASgR,GACvB,OAAOlR,UAAUC,QAAUC,EAASgR,EAAGk2B,GAAUlnC,GAGnDknC,EAAOtnC,OAAS,SAASoR,GACvB,OAAOlR,UAAUC,QAAUH,EAASoR,EAAGk2B,GAAUtnC,GAGnDsnC,EAAOzwB,QAAU,SAASzF,GACxB,OAAOlR,UAAUC,QAAW0W,EAAe,MAALzF,EAAY,KAAOA,EAAIk2B,GAAUzwB,GAGlEywB,EAGM,kBACb,OAAOA,MAGF,SAASgB,KACd,OAAOhB,GAAOD,ICpIT,IAAMkB,GAAUv+B,KAAKkuB,GAAK,IACpBD,GAAU,IAAMjuB,KAAKkuB,GCK9BsQ,GAAK,OAELC,GAAK,OACL/R,GAAK,EAAI,GACTtF,GAAK,EAAI,GACTK,GAAK,EAAIL,GAAKA,GAGlB,SAASsX,GAAWlnC,GAClB,GAAIA,aAAamnC,GAAK,OAAO,IAAIA,GAAInnC,EAAEuuB,EAAGvuB,EAAEgE,EAAGhE,EAAEiE,EAAGjE,EAAEgvB,SACtD,GAAIhvB,aAAaonC,GAAK,OAAOC,GAAQrnC,GAC/BA,aAAa4uB,KAAM5uB,EAAI+uB,GAAW/uB,IACxC,IAGuEyE,EAAGuL,EAHtEiC,EAAIq1B,GAAStnC,EAAEiS,GACfnG,EAAIw7B,GAAStnC,EAAE8L,GACf7H,EAAIqjC,GAAStnC,EAAEiE,GACf+E,EAAIu+B,IAAS,SAAYt1B,EAAI,SAAYnG,EAAI,SAAY7H,GAdtD,GAmBP,OAJIgO,IAAMnG,GAAKA,IAAM7H,EAAGQ,EAAIuL,EAAIhH,GAC9BvE,EAAI8iC,IAAS,SAAYt1B,EAAI,SAAYnG,EAAI,SAAY7H,GAAK+iC,IAC9Dh3B,EAAIu3B,IAAS,SAAYt1B,EAAI,SAAYnG,EAAI,SAAY7H,GAAKgjC,KAEzD,IAAIE,GAAI,IAAMn+B,EAAI,GAAI,KAAOvE,EAAIuE,GAAI,KAAOA,EAAIgH,GAAIhQ,EAAEgvB,SAGxD,SAAS9G,GAAKqG,EAAGS,GACtB,OAAO,IAAImY,GAAI5Y,EAAG,EAAG,EAAc,MAAXS,EAAkB,EAAIA,GAGjC,SAASwY,GAAIjZ,EAAGvqB,EAAGC,EAAG+qB,GACnC,OAA4B,IAArBtwB,UAAUC,OAAeuoC,GAAW3Y,GAAK,IAAI4Y,GAAI5Y,EAAGvqB,EAAGC,EAAc,MAAX+qB,EAAkB,EAAIA,GAGlF,SAASmY,GAAI5Y,EAAGvqB,EAAGC,EAAG+qB,GAC3B3sB,KAAKksB,GAAKA,EACVlsB,KAAK2B,GAAKA,EACV3B,KAAK4B,GAAKA,EACV5B,KAAK2sB,SAAWA,EA0BlB,SAASuY,GAAQl3B,GACf,OAAOA,EAxDAuf,oBAwDSpnB,KAAK4F,IAAIiC,EAAG,EAAI,GAAKA,EAAI4f,GAAKiF,GAGhD,SAASuS,GAAQp3B,GACf,OAAOA,EAAIuf,GAAKvf,EAAIA,EAAIA,EAAI4f,IAAM5f,EAAI6kB,IAGxC,SAASwS,GAASjjC,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQ+D,KAAK4F,IAAI3J,EAAG,EAAI,KAAO,MAG5E,SAAS6iC,GAAS7iC,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQ+D,KAAK4F,KAAK3J,EAAI,MAAS,MAAO,KAG3E,SAASkjC,GAAW3nC,GAClB,GAAIA,aAAaonC,GAAK,OAAO,IAAIA,GAAIpnC,EAAEqvB,EAAGrvB,EAAEyM,EAAGzM,EAAEuuB,EAAGvuB,EAAEgvB,SAEtD,GADMhvB,aAAamnC,KAAMnnC,EAAIknC,GAAWlnC,IAC5B,IAARA,EAAEgE,GAAmB,IAARhE,EAAEiE,EAAS,OAAO,IAAImjC,GAAIljC,IAAK,EAAIlE,EAAEuuB,GAAKvuB,EAAEuuB,EAAI,IAAM,EAAIrqB,IAAKlE,EAAEuuB,EAAGvuB,EAAEgvB,SACvF,IAAIK,EAAI7mB,KAAKuuB,MAAM/2B,EAAEiE,EAAGjE,EAAEgE,GAAKyyB,GAC/B,OAAO,IAAI2Q,GAAI/X,EAAI,EAAIA,EAAI,IAAMA,EAAG7mB,KAAKC,KAAKzI,EAAEgE,EAAIhE,EAAEgE,EAAIhE,EAAEiE,EAAIjE,EAAEiE,GAAIjE,EAAEuuB,EAAGvuB,EAAEgvB,SAGxE,SAAS4Y,GAAIrZ,EAAG9hB,EAAG4iB,EAAGL,GAC3B,OAA4B,IAArBtwB,UAAUC,OAAegpC,GAAWpZ,GAAK,IAAI6Y,GAAI/X,EAAG5iB,EAAG8hB,EAAc,MAAXS,EAAkB,EAAIA,GAGlF,SAAS6Y,GAAIxY,EAAG5iB,EAAG8hB,EAAGS,GAC3B,OAA4B,IAArBtwB,UAAUC,OAAegpC,GAAWtY,GAAK,IAAI+X,GAAI/X,EAAG5iB,EAAG8hB,EAAc,MAAXS,EAAkB,EAAIA,GAGlF,SAASoY,GAAI/X,EAAG5iB,EAAG8hB,EAAGS,GAC3B3sB,KAAKgtB,GAAKA,EACVhtB,KAAKoK,GAAKA,EACVpK,KAAKksB,GAAKA,EACVlsB,KAAK2sB,SAAWA,EAGlB,SAASqY,GAAQrnC,GACf,GAAIovB,MAAMpvB,EAAEqvB,GAAI,OAAO,IAAI8X,GAAInnC,EAAEuuB,EAAG,EAAG,EAAGvuB,EAAEgvB,SAC5C,IAAIK,EAAIrvB,EAAEqvB,EAAI0X,GACd,OAAO,IAAII,GAAInnC,EAAEuuB,EAAG/lB,KAAKs5B,IAAIzS,GAAKrvB,EAAEyM,EAAGjE,KAAKu5B,IAAI1S,GAAKrvB,EAAEyM,EAAGzM,EAAEgvB,SAjE9DmB,GAAOgX,GAAKK,GAAK5jB,GAAOE,GAAO,CAC7BE,SAAU,SAASjU,GACjB,OAAO,IAAIo3B,GAAI9kC,KAAKksB,EAzCd,IAyC4B,MAALxe,EAAY,EAAIA,GAAI1N,KAAK2B,EAAG3B,KAAK4B,EAAG5B,KAAK2sB,UAExEjL,OAAQ,SAAShU,GACf,OAAO,IAAIo3B,GAAI9kC,KAAKksB,EA5Cd,IA4C4B,MAALxe,EAAY,EAAIA,GAAI1N,KAAK2B,EAAG3B,KAAK4B,EAAG5B,KAAK2sB,UAExEd,IAAK,WACH,IAAIllB,GAAK3G,KAAKksB,EAAI,IAAM,IACpB9pB,EAAI2qB,MAAM/sB,KAAK2B,GAAKgF,EAAIA,EAAI3G,KAAK2B,EAAI,IACrCgM,EAAIof,MAAM/sB,KAAK4B,GAAK+E,EAAIA,EAAI3G,KAAK4B,EAAI,IAIzC,OAAO,IAAI2qB,GACT8Y,GAAU,WAJZjjC,EAAIuiC,GAAKS,GAAQhjC,IAIW,WAH5BuE,EAjDK,EAiDIy+B,GAAQz+B,IAG2B,UAF5CgH,EAAIi3B,GAAKQ,GAAQz3B,KAGf03B,IAAU,SAAYjjC,EAAI,UAAYuE,EAAI,QAAYgH,GACtD03B,GAAU,SAAYjjC,EAAI,SAAYuE,EAAI,UAAYgH,GACtD3N,KAAK2sB,aAkDXmB,GAAOiX,GAAKS,GAAKjkB,GAAOE,GAAO,CAC7BE,SAAU,SAASjU,GACjB,OAAO,IAAIq3B,GAAI/kC,KAAKgtB,EAAGhtB,KAAKoK,EAAGpK,KAAKksB,EA7G9B,IA6G4C,MAALxe,EAAY,EAAIA,GAAI1N,KAAK2sB,UAExEjL,OAAQ,SAAShU,GACf,OAAO,IAAIq3B,GAAI/kC,KAAKgtB,EAAGhtB,KAAKoK,EAAGpK,KAAKksB,EAhH9B,IAgH4C,MAALxe,EAAY,EAAIA,GAAI1N,KAAK2sB,UAExEd,IAAK,WACH,OAAOmZ,GAAQhlC,MAAM6rB,UCpHzB,IAAI4Z,IAAK,OACLC,GAAI,QACJC,IAAK,OACLC,IAAK,OACL9H,GAAI,QACJ+H,IAAK/H,aACLgI,GAAKhI,aACLiI,IAAQL,kBAEZ,SAASM,GAAiBroC,GACxB,GAAIA,aAAasoC,GAAW,OAAO,IAAIA,GAAUtoC,EAAEqvB,EAAGrvB,EAAE8D,EAAG9D,EAAEuuB,EAAGvuB,EAAEgvB,SAC5DhvB,aAAa4uB,KAAM5uB,EAAI+uB,GAAW/uB,IACxC,IAAIiS,EAAIjS,EAAEiS,EAAI,IACVnG,EAAI9L,EAAE8L,EAAI,IACV7H,EAAIjE,EAAEiE,EAAI,IACVsqB,GAAK6Z,GAAQnkC,EAAIikC,GAAKj2B,EAAIk2B,GAAKr8B,IAAMs8B,GAAQF,GAAKC,IAClDI,EAAKtkC,EAAIsqB,EACTxe,GAAKowB,IAAKr0B,EAAIyiB,GAAKyZ,GAAIO,GAAMN,GAC7BnkC,EAAI0E,KAAKC,KAAKsH,EAAIA,EAAIw4B,EAAKA,IAAOpI,GAAI5R,GAAK,EAAIA,IAC/Cc,EAAIvrB,EAAI0E,KAAKuuB,MAAMhnB,EAAGw4B,GAAM9R,GAAU,IAAMvyB,IAChD,OAAO,IAAIokC,GAAUjZ,EAAI,EAAIA,EAAI,IAAMA,EAAGvrB,EAAGyqB,EAAGvuB,EAAEgvB,SAGrC,SAASwZ,GAAUnZ,EAAGvrB,EAAGyqB,EAAGS,GACzC,OAA4B,IAArBtwB,UAAUC,OAAe0pC,GAAiBhZ,GAAK,IAAIiZ,GAAUjZ,EAAGvrB,EAAGyqB,EAAc,MAAXS,EAAkB,EAAIA,GAG9F,SAASsZ,GAAUjZ,EAAGvrB,EAAGyqB,EAAGS,GACjC3sB,KAAKgtB,GAAKA,EACVhtB,KAAKyB,GAAKA,EACVzB,KAAKksB,GAAKA,EACVlsB,KAAK2sB,SAAWA,EAGlBmB,GAAOmY,GAAWE,GAAW5kB,GAAOE,GAAO,CACzCE,SAAU,SAASjU,GAEjB,OADAA,EAAS,MAALA,EAAYiU,GAAWxb,KAAK4F,IAAI4V,GAAUjU,GACvC,IAAIu4B,GAAUjmC,KAAKgtB,EAAGhtB,KAAKyB,EAAGzB,KAAKksB,EAAIxe,EAAG1N,KAAK2sB,UAExDjL,OAAQ,SAAShU,GAEf,OADAA,EAAS,MAALA,EAAYgU,GAASvb,KAAK4F,IAAI2V,GAAQhU,GACnC,IAAIu4B,GAAUjmC,KAAKgtB,EAAGhtB,KAAKyB,EAAGzB,KAAKksB,EAAIxe,EAAG1N,KAAK2sB,UAExDd,IAAK,WACH,IAAImB,EAAID,MAAM/sB,KAAKgtB,GAAK,GAAKhtB,KAAKgtB,EAAI,KAAO0X,GACzCxY,GAAKlsB,KAAKksB,EACVvqB,EAAIorB,MAAM/sB,KAAKyB,GAAK,EAAIzB,KAAKyB,EAAIyqB,GAAK,EAAIA,GAC1Cka,EAAOjgC,KAAKs5B,IAAIzS,GAChBqZ,EAAOlgC,KAAKu5B,IAAI1S,GACpB,OAAO,IAAIT,GACT,KAAOL,EAAIvqB,GAAK8jC,GAAIW,EAAOV,GAAIW,IAC/B,KAAOna,EAAIvqB,GAAKgkC,GAAIS,EAAOR,GAAIS,IAC/B,KAAOna,EAAIvqB,GAAKm8B,GAAIsI,IACpBpmC,KAAK2sB,aCzDX,IAEWxpB,GAFCJ,MAAMtF,UAEO0F,MCFV,YAASxB,EAAGC,GACzB,OAAOD,EAAIC,GCDE,YAAAQ,GAAC,OAAI,kBAAMA,ICAX,YAASkkC,EAAMC,GAE5B,IADA,IAA6Bn8B,EAAzBhO,GAAK,EAAG4E,EAAIulC,EAAKjqC,SACZF,EAAI4E,GAAG,GAAIoJ,EAAIo8B,GAAaF,EAAMC,EAAKnqC,IAAK,OAAOgO,EAC5D,OAAO,GAGT,SAASo8B,GAAaF,EAAM3V,GAE1B,IADA,IAAIvuB,EAAIuuB,EAAM,GAAIhqB,EAAIgqB,EAAM,GAAI7V,GAAY,EACnC1e,EAAI,EAAG4E,EAAIslC,EAAKhqC,OAAQiJ,EAAIvE,EAAI,EAAG5E,EAAI4E,EAAGuE,EAAInJ,IAAK,CAC1D,IAAIujC,EAAK2G,EAAKlqC,GAAIqqC,EAAK9G,EAAG,GAAI+G,EAAK/G,EAAG,GAAIgH,EAAKL,EAAK/gC,GAAIqhC,EAAKD,EAAG,GAAIE,EAAKF,EAAG,GAC5E,GAAIG,GAAgBnH,EAAIgH,EAAIhW,GAAQ,OAAO,EACrC+V,EAAK//B,IAAQkgC,EAAKlgC,GAASvE,GAAKwkC,EAAKH,IAAO9/B,EAAI+/B,IAAOG,EAAKH,GAAMD,IAAM3rB,GAAYA,GAE5F,OAAOA,EAGT,SAASgsB,GAAgBnlC,EAAGC,EAAGwI,GAC7B,IAAIhO,EAOUyC,EAAGsxB,EAAGvgB,EAPb,OAGT,SAAmBjO,EAAGC,EAAGwI,GACvB,OAAQxI,EAAE,GAAKD,EAAE,KAAOyI,EAAE,GAAKzI,EAAE,OAASyI,EAAE,GAAKzI,EAAE,KAAOC,EAAE,GAAKD,EAAE,IAJrDolC,CAAUplC,EAAGC,EAAGwI,KAOhBvL,EAP6B8C,EAAEvF,IAAMuF,EAAE,KAAOC,EAAE,KAO7CuuB,EAPmD/lB,EAAEhO,GAOlDwT,EAPsDhO,EAAExF,GAQrEyC,GAAKsxB,GAAKA,GAAKvgB,GAAKA,GAAKugB,GAAKA,GAAKtxB,GCzB7B,oBCQXmoC,GAAQ,CACV,GACA,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OACpB,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,GAAK,IAAO,CAAC,CAAC,EAAK,IAAM,CAAC,IAAK,KAC9C,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,EAAK,OACpB,CAAC,CAAC,CAAC,EAAK,IAAM,CAAC,GAAK,KACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,KAAO,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,OAC9C,CAAC,CAAC,CAAC,IAAK,GAAM,CAAC,EAAK,MACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,EAAK,KAAM,CAAC,IAAK,KACpB,CAAC,CAAC,CAAC,GAAK,GAAM,CAAC,EAAK,OACpB,IAGa,cACb,IAAIhJ,EAAK,EACLC,EAAK,EACLvxB,EAAYJ,GACZ26B,EAASC,EAEb,SAASC,EAAS9iC,GAChB,IAAI4I,EAAKP,EAAUrI,GAGnB,GAAKtB,MAAMU,QAAQwJ,GAIjBA,EAAKA,EAAG9J,QAAQ+G,KAAKxI,QAJC,CACtB,IAAMkC,EAAIyC,EAAOhC,GAAS+iC,EAAKp7B,GAASpI,EAAE,GAAIA,EAAE,GAAIqJ,GACpDA,EAAKhC,GAAM9E,KAAKwF,MAAM/H,EAAE,GAAKwjC,GAAMA,EAAIjhC,KAAKwF,MAAM/H,EAAE,GAAKwjC,EAAK,GAAKA,EAAIn6B,GAKzE,OAAOA,EAAGlM,KAAI,SAAAvC,GAAK,OAAI6oC,EAAQhjC,EAAQ7F,MAKzC,SAAS6oC,EAAQhjC,EAAQ7F,GACvB,IAAI8oC,EAAW,GACXC,EAAQ,GAiBZ,OASF,SAAkBljC,EAAQ7F,EAAOgX,GAC/B,IAEIpT,EAAGuE,EAAGksB,EAAItF,EAAIK,EAAIC,EAFlB2Z,EAAkB,IAAIzkC,MACtB0kC,EAAgB,IAAI1kC,MAIxBX,EAAIuE,GAAK,EACT4mB,EAAKlpB,EAAO,IAAM7F,EAClBwoC,GAAMzZ,GAAM,GAAG/wB,QAAQkrC,GACvB,OAAStlC,EAAI47B,EAAK,GAChBnL,EAAKtF,EAAIA,EAAKlpB,EAAOjC,EAAI,IAAM5D,EAC/BwoC,GAAMnU,EAAKtF,GAAM,GAAG/wB,QAAQkrC,GAE9BV,GAAMzZ,GAAM,GAAG/wB,QAAQkrC,GAGvB,OAAS/gC,EAAIs3B,EAAK,GAAG,CAKnB,IAJA77B,GAAK,EACLmrB,EAAKlpB,EAAOsC,EAAIq3B,EAAKA,IAAOx/B,EAC5BovB,EAAKvpB,EAAOsC,EAAIq3B,IAAOx/B,EACvBwoC,GAAMzZ,GAAM,EAAIK,GAAM,GAAGpxB,QAAQkrC,KACxBtlC,EAAI47B,EAAK,GAChBnL,EAAKtF,EAAIA,EAAKlpB,EAAOsC,EAAIq3B,EAAKA,EAAK57B,EAAI,IAAM5D,EAC7CqvB,EAAKD,EAAIA,EAAKvpB,EAAOsC,EAAIq3B,EAAK57B,EAAI,IAAM5D,EACxCwoC,GAAMnU,EAAKtF,GAAM,EAAIK,GAAM,EAAIC,GAAM,GAAGrxB,QAAQkrC,GAElDV,GAAMzZ,EAAKK,GAAM,GAAGpxB,QAAQkrC,GAI9BtlC,GAAK,EACLwrB,EAAKvpB,EAAOsC,EAAIq3B,IAAOx/B,EACvBwoC,GAAMpZ,GAAM,GAAGpxB,QAAQkrC,GACvB,OAAStlC,EAAI47B,EAAK,GAChBnQ,EAAKD,EAAIA,EAAKvpB,EAAOsC,EAAIq3B,EAAK57B,EAAI,IAAM5D,EACxCwoC,GAAMpZ,GAAM,EAAIC,GAAM,GAAGrxB,QAAQkrC,GAInC,SAASA,EAAOxzB,GACd,IAIInS,EAAG0H,EAJHyB,EAAQ,CAACgJ,EAAK,GAAG,GAAK9R,EAAG8R,EAAK,GAAG,GAAKvN,GACtC6nB,EAAM,CAACta,EAAK,GAAG,GAAK9R,EAAG8R,EAAK,GAAG,GAAKvN,GACpCghC,EAAapjC,EAAM2G,GACnB08B,EAAWrjC,EAAMiqB,IAEjBzsB,EAAI0lC,EAAcE,KAChBl+B,EAAI+9B,EAAgBI,YACfH,EAAc1lC,EAAEysB,YAChBgZ,EAAgB/9B,EAAEyB,OACrBnJ,IAAM0H,GACR1H,EAAEukC,KAAKtqC,KAAKwyB,GACZhZ,EAASzT,EAAEukC,OAEXkB,EAAgBzlC,EAAEmJ,OAASu8B,EAAch+B,EAAE+kB,KAAO,CAACtjB,MAAOnJ,EAAEmJ,MAAOsjB,IAAK/kB,EAAE+kB,IAAK8X,KAAMvkC,EAAEukC,KAAK7wB,OAAOhM,EAAE68B,gBAGhGmB,EAAc1lC,EAAEysB,KACvBzsB,EAAEukC,KAAKtqC,KAAKwyB,GACZiZ,EAAc1lC,EAAEysB,IAAMoZ,GAAY7lC,IAE3BA,EAAIylC,EAAgBI,KACzBn+B,EAAIg+B,EAAcE,YACbH,EAAgBzlC,EAAEmJ,cAClBu8B,EAAch+B,EAAE+kB,KACnBzsB,IAAM0H,GACR1H,EAAEukC,KAAKtqC,KAAKwyB,GACZhZ,EAASzT,EAAEukC,OAEXkB,EAAgB/9B,EAAEyB,OAASu8B,EAAc1lC,EAAEysB,KAAO,CAACtjB,MAAOzB,EAAEyB,MAAOsjB,IAAKzsB,EAAEysB,IAAK8X,KAAM78B,EAAE68B,KAAK7wB,OAAO1T,EAAEukC,gBAGhGkB,EAAgBzlC,EAAEmJ,OACzBnJ,EAAEukC,KAAKuB,QAAQ38B,GACfs8B,EAAgBzlC,EAAEmJ,MAAQy8B,GAAc5lC,GAG1CylC,EAAgBG,GAAcF,EAAcG,GAAY,CAAC18B,MAAOy8B,EAAYnZ,IAAKoZ,EAAUtB,KAAM,CAACp7B,EAAOsjB,IAvC7GwY,GAAMpZ,GAAM,GAAGpxB,QAAQkrC,GA7DvBI,CAASzjC,EAAQ7F,GAAO,SAAS8nC,GAC/BW,EAAOX,EAAMjiC,EAAQ7F,GCtDZ,SAAS8nC,GAEtB,IADA,IAAIlqC,EAAI,EAAG4E,EAAIslC,EAAKhqC,OAAQyrC,EAAOzB,EAAKtlC,EAAI,GAAG,GAAKslC,EAAK,GAAG,GAAKA,EAAKtlC,EAAI,GAAG,GAAKslC,EAAK,GAAG,KACjFlqC,EAAI4E,GAAG+mC,GAAQzB,EAAKlqC,EAAI,GAAG,GAAKkqC,EAAKlqC,GAAG,GAAKkqC,EAAKlqC,EAAI,GAAG,GAAKkqC,EAAKlqC,GAAG,GAC/E,OAAO2rC,EDoDCA,CAAKzB,GAAQ,EAAGgB,EAAStrC,KAAK,CAACsqC,IAC9BiB,EAAMvrC,KAAKsqC,MAGlBiB,EAAM/qC,SAAQ,SAAS+pC,GACrB,IAAK,IAAgCyB,EAA5B5rC,EAAI,EAAG4E,EAAIsmC,EAAShrC,OAAiBF,EAAI4E,IAAK5E,EACrD,IAAoD,IAAhD0e,IAAUktB,EAAUV,EAASlrC,IAAI,GAAImqC,GAEvC,YADAyB,EAAQhsC,KAAKuqC,MAMZ,CACLhxB,KAAM,eACN/W,MAAOA,EACPypC,YAAaX,GAuFjB,SAAS/iC,EAAMosB,GACb,OAAkB,EAAXA,EAAM,GAASA,EAAM,IAAMqN,EAAK,GAAK,EAG9C,SAASkJ,EAAaZ,EAAMjiC,EAAQ7F,GAClC8nC,EAAK9pC,SAAQ,SAASm0B,GACpB,IAIInD,EAJAprB,EAAIuuB,EAAM,GACVhqB,EAAIgqB,EAAM,GACVuX,EAAS,EAAJ9lC,EACL+lC,EAAS,EAAJxhC,EAEL8mB,EAAKppB,EAAO8jC,EAAKnK,EAAKkK,GACtB9lC,EAAI,GAAKA,EAAI47B,GAAMkK,IAAO9lC,IAC5BorB,EAAKnpB,EAAO8jC,EAAKnK,EAAKkK,EAAK,GAC3BvX,EAAM,GAAKvuB,GAAK5D,EAAQgvB,IAAOC,EAAKD,GAAM,IAExC7mB,EAAI,GAAKA,EAAIs3B,GAAMkK,IAAOxhC,IAC5B6mB,EAAKnpB,GAAQ8jC,EAAK,GAAKnK,EAAKkK,GAC5BvX,EAAM,GAAKhqB,GAAKnI,EAAQgvB,IAAOC,EAAKD,GAAM,OAsBhD,OAjBA2Z,EAASE,QAAUA,EAEnBF,EAASlnB,KAAO,SAAS1S,GACvB,IAAKlR,UAAUC,OAAQ,MAAO,CAAC0hC,EAAIC,GACnC,IAAImK,EAAKjiC,KAAKwF,MAAM4B,EAAE,IAAK86B,EAAKliC,KAAKwF,MAAM4B,EAAE,IAC7C,KAAM66B,GAAM,GAAKC,GAAM,GAAI,MAAM,IAAIpqC,MAAM,gBAC3C,OAAO+/B,EAAKoK,EAAInK,EAAKoK,EAAIlB,GAG3BA,EAAS35B,WAAa,SAASD,GAC7B,OAAOlR,UAAUC,QAAUoQ,EAAyB,oBAANa,EAAmBA,EAAIxK,MAAMU,QAAQ8J,GAAK1C,GAAS1H,GAAM5D,KAAKgO,IAAM1C,GAAS0C,GAAI45B,GAAYz6B,GAG7Iy6B,EAASF,OAAS,SAAS15B,GACzB,OAAOlR,UAAUC,QAAU2qC,EAAS15B,EAAI25B,EAAelyB,GAAMmyB,GAAYF,IAAWC,GAG/EC,GEnMF,SAASmB,GAAM/rC,EAAQJ,EAAQyT,GAIpC,IAHA,IAAI5O,EAAIzE,EAAO4+B,MACXhuB,EAAI5Q,EAAO6+B,OACXhB,EAAe,GAAVxqB,GAAK,GACLrK,EAAI,EAAGA,EAAI4H,IAAK5H,EACvB,IAAK,IAAInJ,EAAI,EAAG4nC,EAAK,EAAG5nC,EAAI4E,EAAI4O,IAAKxT,EAC/BA,EAAI4E,IACNgjC,GAAMznC,EAAOsQ,KAAKzQ,EAAImJ,EAAIvE,IAExB5E,GAAKwT,IACHxT,GAAKg+B,IACP4J,GAAMznC,EAAOsQ,KAAKzQ,EAAIg+B,EAAI70B,EAAIvE,IAEhC7E,EAAO0Q,KAAKzQ,EAAIwT,EAAIrK,EAAIvE,GAAKgjC,EAAK79B,KAAKG,IAAIlK,EAAI,EAAG4E,EAAI,EAAIo5B,EAAIh+B,EAAGg+B,IASlE,SAASmO,GAAMhsC,EAAQJ,EAAQyT,GAIpC,IAHA,IAAI5O,EAAIzE,EAAO4+B,MACXhuB,EAAI5Q,EAAO6+B,OACXhB,EAAe,GAAVxqB,GAAK,GACLxT,EAAI,EAAGA,EAAI4E,IAAK5E,EACvB,IAAK,IAAImJ,EAAI,EAAGy+B,EAAK,EAAGz+B,EAAI4H,EAAIyC,IAAKrK,EAC/BA,EAAI4H,IACN62B,GAAMznC,EAAOsQ,KAAKzQ,EAAImJ,EAAIvE,IAExBuE,GAAKqK,IACHrK,GAAK60B,IACP4J,GAAMznC,EAAOsQ,KAAKzQ,GAAKmJ,EAAI60B,GAAKp5B,IAElC7E,EAAO0Q,KAAKzQ,GAAKmJ,EAAIqK,GAAK5O,GAAKgjC,EAAK79B,KAAKG,IAAIf,EAAI,EAAG4H,EAAI,EAAIitB,EAAI70B,EAAG60B,IChC3E,SAASoO,GAAShmC,GAChB,OAAOA,EAAE,GAGX,SAASimC,GAASjmC,GAChB,OAAOA,EAAE,GAGX,SAASkmC,KACP,OAAO,EAGM,kBACb,IAAItmC,EAAIomC,GACJ7hC,EAAI8hC,GACJE,EAASD,GACT1K,EAAK,IACLC,EAAK,IACLruB,EAAI,GACJlC,EAAI,EACJ/P,EAAQ,EAAJiS,EACJ5O,EAAKg9B,EAAS,EAAJrgC,GAAU+P,EACpBP,EAAK8wB,EAAS,EAAJtgC,GAAU+P,EACpBhB,EAAY7B,GAAS,IAEzB,SAAS+9B,EAAQ/7B,GACf,IAAIg8B,EAAU,IAAIC,aAAa9nC,EAAImM,GAC/B47B,EAAU,IAAID,aAAa9nC,EAAImM,GAC/B67B,EAAQ7iC,KAAK4F,IAAI,GAAI2B,GAEzBb,EAAKrQ,SAAQ,SAASgG,EAAGpG,EAAGyQ,GAC1B,IAAI45B,GAAMrkC,EAAEI,EAAGpG,EAAGyQ,GAAQlP,GAAKqrC,EAC3BtC,GAAM//B,EAAEnE,EAAGpG,EAAGyQ,GAAQlP,GAAKqrC,EAC3BC,GAAMN,EAAOnmC,EAAGpG,EAAGyQ,GACvB,GAAI45B,GAAM,GAAKA,EAAKzlC,GAAK0lC,GAAM,GAAKA,EAAKv5B,EAAG,CAC1C,IAAIJ,EAAK5G,KAAKwF,MAAM86B,GAChB7E,EAAKz7B,KAAKwF,MAAM+6B,GAChBwB,EAAKzB,EAAK15B,EAAK,GACfo7B,EAAKzB,EAAK9E,EAAK,GACnBiH,EAAQ97B,EAAK60B,EAAK5gC,KAAO,EAAIknC,IAAO,EAAIC,GAAMc,EAC9CJ,EAAQ97B,EAAK,EAAI60B,EAAK5gC,IAAMknC,GAAM,EAAIC,GAAMc,EAC5CJ,EAAQ97B,EAAK,GAAK60B,EAAK,GAAK5gC,IAAMknC,EAAKC,EAAKc,EAC5CJ,EAAQ97B,GAAM60B,EAAK,GAAK5gC,KAAO,EAAIknC,GAAMC,EAAKc,MAKlDX,GAAM,CAACnN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAU,CAAC1N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAUn5B,GAAKlC,GACvF66B,GAAM,CAACpN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAU,CAAC5N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAUj5B,GAAKlC,GACvF46B,GAAM,CAACnN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAU,CAAC1N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAUn5B,GAAKlC,GACvF66B,GAAM,CAACpN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAU,CAAC5N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAUj5B,GAAKlC,GACvF46B,GAAM,CAACnN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAU,CAAC1N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAUn5B,GAAKlC,GACvF66B,GAAM,CAACpN,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMk8B,GAAU,CAAC5N,MAAOn6B,EAAGo6B,OAAQjuB,EAAGN,KAAMg8B,GAAUj5B,GAAKlC,GAEvF,IAAIT,EAAKP,EAAUm8B,GAGnB,IAAK9lC,MAAMU,QAAQwJ,GAAK,CACtB,IAAI9B,EAAO5E,GAAIsiC,GACf57B,EAAKjB,GAAS,EAAGb,EAAM8B,IACvBA,EAAKuC,GAAM,EAAGrJ,KAAKwF,MAAMR,EAAO8B,GAAMA,EAAIA,IACvCG,QAGL,OAAO+5B,KACF35B,WAAWP,GACXgT,KAAK,CAACjf,EAAGmM,GAFPg6B,CAGJ0B,GACE9nC,IAAIgS,GAGX,SAASA,EAAUm2B,GAGjB,OAFAA,EAAS1qC,OAAS2H,KAAK4F,IAAI,GAAI,EAAI2B,GACnCw7B,EAASjB,YAAYzrC,QAAQ2sC,GACtBD,EAGT,SAASC,EAAiBlB,GACxBA,EAAYzrC,QAAQ4sC,GAGtB,SAASA,EAAcnB,GACrBA,EAAYzrC,QAAQ6sC,GAItB,SAASA,EAAepB,GACtBA,EAAY,GAAKA,EAAY,GAAK9hC,KAAK4F,IAAI,EAAG2B,GAAK/P,EACnDsqC,EAAY,GAAKA,EAAY,GAAK9hC,KAAK4F,IAAI,EAAG2B,GAAK/P,EAGrD,SAAS2rC,IAIP,OAFAtoC,EAAKg9B,EAAS,GADdrgC,EAAQ,EAAJiS,IACgBlC,EACpBP,EAAK8wB,EAAS,EAAJtgC,GAAU+P,EACbk7B,EAsCT,OAnCAA,EAAQxmC,EAAI,SAASmL,GACnB,OAAOlR,UAAUC,QAAU8F,EAAiB,oBAANmL,EAAmBA,EAAI1C,IAAU0C,GAAIq7B,GAAWxmC,GAGxFwmC,EAAQjiC,EAAI,SAAS4G,GACnB,OAAOlR,UAAUC,QAAUqK,EAAiB,oBAAN4G,EAAmBA,EAAI1C,IAAU0C,GAAIq7B,GAAWjiC,GAGxFiiC,EAAQD,OAAS,SAASp7B,GACxB,OAAOlR,UAAUC,QAAUqsC,EAAsB,oBAANp7B,EAAmBA,EAAI1C,IAAU0C,GAAIq7B,GAAWD,GAG7FC,EAAQ3oB,KAAO,SAAS1S,GACtB,IAAKlR,UAAUC,OAAQ,MAAO,CAAC0hC,EAAIC,GACnC,IAAImK,GAAM76B,EAAE,GAAI86B,GAAM96B,EAAE,GACxB,KAAM66B,GAAM,GAAKC,GAAM,GAAI,MAAM,IAAIpqC,MAAM,gBAC3C,OAAO+/B,EAAKoK,EAAInK,EAAKoK,EAAIiB,KAG3BV,EAAQW,SAAW,SAASh8B,GAC1B,IAAKlR,UAAUC,OAAQ,OAAO,GAAKoR,EACnC,MAAOH,GAAKA,IAAM,GAAI,MAAM,IAAItP,MAAM,qBACtC,OAAOyP,EAAIvH,KAAKwF,MAAMxF,KAAKyF,IAAI2B,GAAKpH,KAAKoG,KAAM+8B,KAGjDV,EAAQp7B,WAAa,SAASD,GAC5B,OAAOlR,UAAUC,QAAUoQ,EAAyB,oBAANa,EAAmBA,EAAIxK,MAAMU,QAAQ8J,GAAK1C,GAAS1H,GAAM5D,KAAKgO,IAAM1C,GAAS0C,GAAIq7B,GAAWl8B,GAG5Ik8B,EAAQ12B,UAAY,SAAS3E,GAC3B,IAAKlR,UAAUC,OAAQ,OAAO6J,KAAKC,KAAKwJ,GAAKA,EAAI,IACjD,MAAOrC,GAAKA,IAAM,GAAI,MAAM,IAAItP,MAAM,qBACtC,OAAO2R,EAAIzJ,KAAKqF,OAAOrF,KAAKC,KAAK,EAAImH,EAAIA,EAAI,GAAK,GAAK,GAAI+7B,KAGtDV,GC1IIY,GAAW,UACXC,GAAiB,sBAGvB,SAAS7jC,GAAI8jC,EAAM9lC,EAAG+lC,EAAM5nC,EAAGirB,GAClC,IAAI4c,EAAGC,EAAMC,EAAIC,EACbC,EAAOpmC,EAAE,GACTqmC,EAAOloC,EAAE,GACTmoC,EAAS,EACTC,EAAS,EACRF,EAAOD,IAAWC,GAAQD,GAC3BJ,EAAII,EACJA,EAAOpmC,IAAIsmC,KAEXN,EAAIK,EACJA,EAAOloC,IAAIooC,IAEf,IAAIC,EAAS,EACb,GAAIF,EAASR,GAAQS,EAASR,EAc1B,IAbKM,EAAOD,IAAWC,GAAQD,GAE3BF,EAAKF,IADLC,EAAOG,EAAOJ,GACGI,GACjBA,EAAOpmC,IAAIsmC,KAGXJ,EAAKF,IADLC,EAAOI,EAAOL,GACGK,GACjBA,EAAOloC,IAAIooC,IAEfP,EAAIC,EACO,IAAPC,IACA9c,EAAEod,KAAYN,GAEXI,EAASR,GAAQS,EAASR,GACxBM,EAAOD,IAAWC,GAAQD,GAG3BF,EAAKF,IAFLC,EAAOD,EAAII,IACXD,EAAQF,EAAOD,KACYI,EAAOD,GAClCC,EAAOpmC,IAAIsmC,KAIXJ,EAAKF,IAFLC,EAAOD,EAAIK,IACXF,EAAQF,EAAOD,KACYK,EAAOF,GAClCE,EAAOloC,IAAIooC,IAEfP,EAAIC,EACO,IAAPC,IACA9c,EAAEod,KAAYN,GAI1B,KAAOI,EAASR,GAGZI,EAAKF,IAFLC,EAAOD,EAAII,IACXD,EAAQF,EAAOD,KACYI,EAAOD,GAClCC,EAAOpmC,IAAIsmC,GACXN,EAAIC,EACO,IAAPC,IACA9c,EAAEod,KAAYN,GAGtB,KAAOK,EAASR,GAGZG,EAAKF,IAFLC,EAAOD,EAAIK,IACXF,EAAQF,EAAOD,KACYK,EAAOF,GAClCE,EAAOloC,IAAIooC,GACXP,EAAIC,EACO,IAAPC,IACA9c,EAAEod,KAAYN,GAMtB,OAHU,IAANF,GAAsB,IAAXQ,IACXpd,EAAEod,KAAYR,GAEXQ,EAuDJ,SAASC,GAASX,EAAM9lC,GAE3B,IADA,IAAIgmC,EAAIhmC,EAAE,GACDxH,EAAI,EAAGA,EAAIstC,EAAMttC,IAAKwtC,GAAKhmC,EAAExH,GACtC,OAAOwtC,EAGJ,SAASU,GAAItpC,GAChB,OAAO,IAAI6E,aAAa7E,GCtI5B,IAIM0kC,GAAI4E,GAAI,GACRC,GAAKD,GAAI,GACTE,GAAKF,GAAI,IACT1E,GAAI0E,GAAI,IACRG,GAAIH,GAAI,GAgKP,SAASI,GAASC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAMC,GAAWL,EAAKI,IAAOH,EAAKE,GAC5BG,GAAYP,EAAKI,IAAOD,EAAKE,GAC7BG,EAAMF,EAAUC,EAEtB,GAAgB,IAAZD,GAA8B,IAAbC,GAAmBD,EAAU,IAAQC,EAAW,EAAI,OAAOC,EAEhF,IAAMC,EAASjlC,KAAKS,IAAIqkC,EAAUC,GAClC,OAAI/kC,KAAKS,IAAIukC,IAhLI,sBAgLmBC,EAAeD,GAtKvD,SAAuBR,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAII,GAC3C,IAAIC,EAASC,EAASC,EAASC,EAC3BzB,EAAO3/B,EAAGqhC,EAAKC,EAAKC,EAAKC,EAAKvkC,EAAIwkC,EAAIzD,EAAIhL,EAAID,EAAI5P,EAAIsF,EAAIiZ,EAExDC,EAAMpB,EAAKI,EACXiB,EAAMnB,EAAKE,EACXkB,EAAMrB,EAAKI,EACXkB,EAAMpB,EAAKE,EAmBjBjB,GAVA5M,GAJAuO,EAAMK,GADNN,GADArhC,EAAIo/B,GAAWuC,IACJ3hC,EAAI2hC,MAIfH,EAAMM,GADNP,GADAvhC,EAAIo/B,GAAW0C,IACJ9hC,EAAI8hC,OALf9O,EAAK2O,EAAMG,GAOYT,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDvkC,EAAK81B,GADLtK,GAJA6Y,EAAMO,GADNR,GADArhC,EAAIo/B,GAAWyC,IACJ7hC,EAAI6hC,MAIfL,EAAMI,GADNL,GADAvhC,EAAIo/B,GAAWwC,IACJ5hC,EAAI4hC,OALfze,EAAK0e,EAAMD,GAOYP,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDlG,GAAE,GAAKvI,GAAM91B,EAAK0iC,IAAUA,EAAQlX,GAKpCkX,GAFA3B,EAAKhL,IAFLyO,EAAKzO,EAAK/1B,IACV0iC,EAAQ8B,EAAKzO,KACa/1B,EAAK0iC,KAC/B1iC,EAAK+gC,EAAK7a,GAEVmY,GAAE,GAAK0C,GAAM/gC,EAAK0iC,IAAUA,EAAQxc,GAEpCwc,GADA+B,EAAKD,EAAKxkC,GACGwkC,EACbnG,GAAE,GAAKmG,GAAMC,EAAK/B,IAAU1iC,EAAK0iC,GACjCrE,GAAE,GAAKoG,EAEP,IAAIX,EAAMd,GAAS,EAAG3E,IAClByG,EAjDa,sBAiDaf,EAC9B,GAAID,GAAOgB,IAAahB,GAAOgB,EAC3B,OAAOhB,EAYX,GARAE,EAAUV,GAAMoB,GADhBhC,EAAQY,EAAKoB,KACmBhC,EAAQgB,GAExCQ,EAAUV,GAAMmB,GADhBjC,EAAQc,EAAKmB,KACmBjC,EAAQgB,GAExCO,EAAUV,GAAMqB,GADhBlC,EAAQa,EAAKqB,KACmBlC,EAAQiB,GAExCQ,EAAUV,GAAMoB,GADhBnC,EAAQe,EAAKoB,KACmBnC,EAAQiB,GAExB,IAAZK,GAA6B,IAAZC,GAA6B,IAAZC,GAA6B,IAAZC,EACnD,OAAOL,EAKX,GAFAgB,EAlEiB,sBAkESf,EAAS3B,GAAiBtjC,KAAKS,IAAIukC,IAC7DA,GAAQY,EAAMP,EAAUU,EAAMb,GAAYY,EAAMV,EAAUS,EAAMV,KACrDa,IAAahB,GAAOgB,EAAU,OAAOhB,EAmBhDpB,GAVA5M,GAJAuO,EAAML,GADNI,GADArhC,EAAIo/B,GAAW6B,IACJjhC,EAAIihC,MAIfO,EAAMM,GADNP,GADAvhC,EAAIo/B,GAAW0C,IACJ9hC,EAAI8hC,OALf9O,EAAKiO,EAAUa,GAOQT,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDvkC,EAAK81B,GADLtK,GAJA6Y,EAAMJ,GADNG,GADArhC,EAAIo/B,GAAW8B,IACJlhC,EAAIkhC,MAIfM,EAAMI,GADNL,GADAvhC,EAAIo/B,GAAWwC,IACJ5hC,EAAI4hC,OALfze,EAAK+d,EAAUU,GAOQP,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDnB,GAAE,GAAKtN,GAAM91B,EAAK0iC,IAAUA,EAAQlX,GAKpCkX,GAFA3B,EAAKhL,IAFLyO,EAAKzO,EAAK/1B,IACV0iC,EAAQ8B,EAAKzO,KACa/1B,EAAK0iC,KAC/B1iC,EAAK+gC,EAAK7a,GAEVkd,GAAE,GAAKrC,GAAM/gC,EAAK0iC,IAAUA,EAAQxc,GAEpCwc,GADA+B,EAAKD,EAAKxkC,GACGwkC,EACbpB,GAAE,GAAKoB,GAAMC,EAAK/B,IAAU1iC,EAAK0iC,GACjCU,GAAE,GAAKqB,EACP,IAAMM,EAAQxmC,GAAI,EAAG8/B,GAAG,EAAG+E,GAAGF,IAmB9BR,GAVA5M,GAJAuO,EAAMK,GADNN,GADArhC,EAAIo/B,GAAWuC,IACJ3hC,EAAI2hC,MAIfH,EAAMJ,GADNG,GADAvhC,EAAIo/B,GAAWgC,IACJphC,EAAIohC,OALfpO,EAAK2O,EAAMP,GAOYC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDvkC,EAAK81B,GADLtK,GAJA6Y,EAAMO,GADNR,GADArhC,EAAIo/B,GAAWyC,IACJ7hC,EAAI6hC,MAIfL,EAAML,GADNI,GADAvhC,EAAIo/B,GAAW+B,IACJnhC,EAAImhC,OALfhe,EAAK0e,EAAMV,GAOYE,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDnB,GAAE,GAAKtN,GAAM91B,EAAK0iC,IAAUA,EAAQlX,GAKpCkX,GAFA3B,EAAKhL,IAFLyO,EAAKzO,EAAK/1B,IACV0iC,EAAQ8B,EAAKzO,KACa/1B,EAAK0iC,KAC/B1iC,EAAK+gC,EAAK7a,GAEVkd,GAAE,GAAKrC,GAAM/gC,EAAK0iC,IAAUA,EAAQxc,GAEpCwc,GADA+B,EAAKD,EAAKxkC,GACGwkC,EACbpB,GAAE,GAAKoB,GAAMC,EAAK/B,IAAU1iC,EAAK0iC,GACjCU,GAAE,GAAKqB,EACP,IAAMO,EAAQzmC,GAAIwmC,EAAO7B,GAAI,EAAGE,GAAGD,IAmBnCT,GAVA5M,GAJAuO,EAAML,GADNI,GADArhC,EAAIo/B,GAAW6B,IACJjhC,EAAIihC,MAIfO,EAAMJ,GADNG,GADAvhC,EAAIo/B,GAAWgC,IACJphC,EAAIohC,OALfpO,EAAKiO,EAAUG,GAOQC,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KASrDvkC,EAAK81B,GADLtK,GAJA6Y,EAAMJ,GADNG,GADArhC,EAAIo/B,GAAW8B,IACJlhC,EAAIkhC,MAIfM,EAAML,GADNI,GADAvhC,EAAIo/B,GAAW+B,IACJnhC,EAAImhC,OALfhe,EAAK+d,EAAUC,GAOQE,EAAME,EAAMD,EAAMC,EAAMF,EAAMG,KAGrDnB,GAAE,GAAKtN,GAAM91B,EAAK0iC,IAAUA,EAAQlX,GAKpCkX,GAFA3B,EAAKhL,IAFLyO,EAAKzO,EAAK/1B,IACV0iC,EAAQ8B,EAAKzO,KACa/1B,EAAK0iC,KAC/B1iC,EAAK+gC,EAAK7a,GAEVkd,GAAE,GAAKrC,GAAM/gC,EAAK0iC,IAAUA,EAAQxc,GAEpCwc,GADA+B,EAAKD,EAAKxkC,GACGwkC,EACbpB,GAAE,GAAKoB,GAAMC,EAAK/B,IAAU1iC,EAAK0iC,GACjCU,GAAE,GAAKqB,EACP,IAAMQ,EAAO1mC,GAAIymC,EAAO7B,GAAI,EAAGC,GAAG7E,IAElC,OAAOA,GAAE0G,EAAO,GAaRC,CAAc5B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAII,GC9KvCd,GAAI,GACJA,GAAI,GACJA,GAAI,GACFA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACLA,GAAI,GACJA,GAAI,GACJA,GAAI,GACNA,GAAI,GAEHA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,IAENA,GAAI,KACHA,GAAI,KCpBJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACLA,GAAI,GACJA,GAAI,GACAA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACNA,GAAI,GACJA,GAAI,GACJA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,GAENA,GAAI,GACHA,GAAI,IACHA,GAAI,IACJA,GAAI,IACLA,GAAI,IACHA,GAAI,IACLA,GAAI,IACJA,GAAI,IAENA,GAAI,MACHA,GAAI,MC/BJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GACJA,GAAI,GAEHA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IAEHA,GAAI,MACJA,GAAI,MACJA,GAAI,MACJA,GAAI,MACJA,GAAI,MACHA,GAAI,MACJA,GAAI,MACHA,GAAI,MACLA,GAAI,MAEPA,GAAI,GACHA,GAAI,GACJA,GAAI,GACJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACHA,GAAI,IACLA,GAAI,IACHA,GAAI,KACHA,GAAI,KACJA,GAAI,KACJA,GAAI,KACLA,GAAI,KAgVJA,GAAI,IACJA,GAAI,IACJA,GAAI,IACLA,GAAI,MCpYhB,IAAMkC,GAAUrmC,KAAK4F,IAAI,GAAI,IACvB0gC,GAAa,IAAItiC,YAAY,KAIduiC,G,WAejB,WAAYC,GAAQ,oBAChB,IAAM3rC,EAAI2rC,EAAOrwC,QAAU,EAC3B,GAAI0E,EAAI,GAA0B,kBAAd2rC,EAAO,GAAiB,MAAM,IAAI1uC,MAAM,uCAE5D+B,KAAK2sC,OAASA,EAGd,IAAMC,EAAezmC,KAAKI,IAAI,EAAIvF,EAAI,EAAG,GACzChB,KAAK6sC,WAAa,IAAI1iC,YAA2B,EAAfyiC,GAClC5sC,KAAK8sC,WAAa,IAAIC,WAA0B,EAAfH,GAGjC5sC,KAAKgtC,UAAY7mC,KAAKkG,KAAKlG,KAAKC,KAAKpF,IACrChB,KAAKitC,UAAY,IAAI9iC,YAAYnJ,GACjChB,KAAKktC,UAAY,IAAI/iC,YAAYnJ,GACjChB,KAAKmtC,SAAW,IAAIhjC,YAAYnJ,GAChChB,KAAKotC,UAAY,IAAIL,WAAW/sC,KAAKgtC,WAAWxnC,MAAM,GAGtDxF,KAAKqtC,KAAO,IAAIljC,YAAYnJ,GAC5BhB,KAAKstC,OAAS,IAAIznC,aAAa7E,GAE/BhB,KAAKyW,S,0CAGT,WAUI,IATA,IAAOk2B,EAA6F3sC,KAA7F2sC,OAAmBY,EAA0EvtC,KAArFitC,UAAgCO,EAAqDxtC,KAAhEktC,UAA+BO,EAAiCztC,KAA3CmtC,SAA8BO,EAAa1tC,KAAxBotC,UACtEpsC,EAAI2rC,EAAOrwC,QAAU,EAGvBqxC,EAAO7a,IACP8a,EAAO9a,IACP+a,GAAQ/a,IACRgb,GAAQhb,IAEH12B,EAAI,EAAGA,EAAI4E,EAAG5E,IAAK,CACxB,IAAMgG,EAAIuqC,EAAO,EAAIvwC,GACfuK,EAAIgmC,EAAO,EAAIvwC,EAAI,GACrBgG,EAAIurC,IAAMA,EAAOvrC,GACjBuE,EAAIinC,IAAMA,EAAOjnC,GACjBvE,EAAIyrC,IAAMA,EAAOzrC,GACjBuE,EAAImnC,IAAMA,EAAOnnC,GACrB3G,KAAKqtC,KAAKjxC,GAAKA,EASnB,IAPA,IAII+R,EAAIsC,EAAIs9B,EAJNhD,GAAM4C,EAAOE,GAAQ,EACrB7C,GAAM4C,EAAOE,GAAQ,EAEvBE,EAAUlb,IAIL12B,EAAI,EAAGA,EAAI4E,EAAG5E,IAAK,CACxB,IAAMoG,EAAIyrC,GAAKlD,EAAIC,EAAI2B,EAAO,EAAIvwC,GAAIuwC,EAAO,EAAIvwC,EAAI,IACjDoG,EAAIwrC,IACJ7/B,EAAK/R,EACL4xC,EAAUxrC,GAGlB,IAAM0rC,EAAMvB,EAAO,EAAIx+B,GACjBggC,EAAMxB,EAAO,EAAIx+B,EAAK,GAE5B6/B,EAAUlb,IAGV,IAAK,IAAI12B,EAAI,EAAGA,EAAI4E,EAAG5E,IACnB,GAAIA,IAAM+R,EAAV,CACA,IAAM3L,EAAIyrC,GAAKC,EAAKC,EAAKxB,EAAO,EAAIvwC,GAAIuwC,EAAO,EAAIvwC,EAAI,IACnDoG,EAAIwrC,GAAWxrC,EAAI,IACnBiO,EAAKrU,EACL4xC,EAAUxrC,GASlB,IANA,IAAI4rC,EAAMzB,EAAO,EAAIl8B,GACjB49B,EAAM1B,EAAO,EAAIl8B,EAAK,GAEtB69B,EAAYxb,IAGP12B,EAAI,EAAGA,EAAI4E,EAAG5E,IACnB,GAAIA,IAAM+R,GAAM/R,IAAMqU,EAAtB,CACA,IAAMb,EAAI2+B,GAAaL,EAAKC,EAAKC,EAAKC,EAAK1B,EAAO,EAAIvwC,GAAIuwC,EAAO,EAAIvwC,EAAI,IACrEwT,EAAI0+B,IACJP,EAAK3xC,EACLkyC,EAAY1+B,GAGpB,IAAI4+B,EAAM7B,EAAO,EAAIoB,GACjBU,EAAM9B,EAAO,EAAIoB,EAAK,GAE1B,GAAIO,IAAcxb,IAAU,CAGxB,IAAK,IAAI12B,EAAI,EAAGA,EAAI4E,EAAG5E,IACnB4D,KAAKstC,OAAOlxC,GAAMuwC,EAAO,EAAIvwC,GAAKuwC,EAAO,IAAQA,EAAO,EAAIvwC,EAAI,GAAKuwC,EAAO,GAEhF+B,GAAU1uC,KAAKqtC,KAAMrtC,KAAKstC,OAAQ,EAAGtsC,EAAI,GAGzC,IAFA,IAAM2tC,EAAO,IAAIxkC,YAAYnJ,GACzBuE,EAAI,EACCnJ,EAAI,EAAGwyC,GAAM9b,IAAU12B,EAAI4E,EAAG5E,IAAK,CACxC,IAAMo3B,EAAKxzB,KAAKqtC,KAAKjxC,GACjB4D,KAAKstC,OAAO9Z,GAAMob,IAClBD,EAAKppC,KAAOiuB,EACZob,EAAK5uC,KAAKstC,OAAO9Z,IAMzB,OAHAxzB,KAAK2uC,KAAOA,EAAKtgC,SAAS,EAAG9I,GAC7BvF,KAAK6uC,UAAY,IAAI1kC,YAAY,QACjCnK,KAAK8uC,UAAY,IAAI3kC,YAAY,IAKrC,GAAIugC,GAASwD,EAAKC,EAAKC,EAAKC,EAAKG,EAAKC,GAAO,EAAG,CAC5C,IAAMryC,EAAIqU,EACJrO,EAAIgsC,EACJznC,EAAI0nC,EACV59B,EAAKs9B,EACLK,EAAMI,EACNH,EAAMI,EACNV,EAAK3xC,EACLoyC,EAAMpsC,EACNqsC,EAAM9nC,EAGV,IAAMlE,EA8Qd,SAAsBkoC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACtC,IAAMhN,EAAK6M,EAAKF,EACV1M,EAAK6M,EAAKF,EACVmE,EAAKhE,EAAKJ,EACVqE,EAAKhE,EAAKJ,EAEV1E,EAAKlI,EAAKA,EAAKC,EAAKA,EACpBgR,EAAKF,EAAKA,EAAKC,EAAKA,EACpBxsC,EAAI,IAAOw7B,EAAKgR,EAAK/Q,EAAK8Q,GAKhC,MAAO,CAAC3sC,EAHEuoC,GAAMqE,EAAK9I,EAAKjI,EAAKgR,GAAMzsC,EAG1BmE,EAFDikC,GAAM5M,EAAKiR,EAAKF,EAAK7I,GAAM1jC,GAzRlB0sC,CAAahB,EAAKC,EAAKC,EAAKC,EAAKG,EAAKC,GACrDzuC,KAAKmvC,IAAM1sC,EAAOL,EAClBpC,KAAKovC,IAAM3sC,EAAOkE,EAElB,IAAK,IAAIvK,EAAI,EAAGA,EAAI4E,EAAG5E,IACnB4D,KAAKstC,OAAOlxC,GAAK6xC,GAAKtB,EAAO,EAAIvwC,GAAIuwC,EAAO,EAAIvwC,EAAI,GAAIqG,EAAOL,EAAGK,EAAOkE,GAI7E+nC,GAAU1uC,KAAKqtC,KAAMrtC,KAAKstC,OAAQ,EAAGtsC,EAAI,GAGzChB,KAAKqvC,WAAalhC,EAClB,IAAImhC,EAAW,EAEf9B,EAASr/B,GAAMo/B,EAASQ,GAAMt9B,EAC9B+8B,EAAS/8B,GAAM88B,EAASp/B,GAAM4/B,EAC9BP,EAASO,GAAMR,EAAS98B,GAAMtC,EAE9Bs/B,EAAQt/B,GAAM,EACds/B,EAAQh9B,GAAM,EACdg9B,EAAQM,GAAM,EAEdL,EAASloC,MAAM,GACfkoC,EAAS1tC,KAAKuvC,SAASrB,EAAKC,IAAQhgC,EACpCu/B,EAAS1tC,KAAKuvC,SAASnB,EAAKC,IAAQ59B,EACpCi9B,EAAS1tC,KAAKuvC,SAASf,EAAKC,IAAQV,EAEpC/tC,KAAKwvC,aAAe,EACpBxvC,KAAKyvC,aAAathC,EAAIsC,EAAIs9B,GAAK,GAAI,GAAI,GAEvC,IAAK,IAAW2B,EAAIC,EAAXjiC,EAAI,EAAWA,EAAI1N,KAAKqtC,KAAK/wC,OAAQoR,IAAK,CAC/C,IAAMtR,EAAI4D,KAAKqtC,KAAK3/B,GACdtL,EAAIuqC,EAAO,EAAIvwC,GACfuK,EAAIgmC,EAAO,EAAIvwC,EAAI,GAGzB,KAAIsR,EAAI,GAAKvH,KAAKS,IAAIxE,EAAIstC,IAAOlD,IAAWrmC,KAAKS,IAAID,EAAIgpC,IAAOnD,MAChEkD,EAAKttC,EACLutC,EAAKhpC,EAGDvK,IAAM+R,GAAM/R,IAAMqU,GAAMrU,IAAM2xC,GAAlC,CAIA,IADA,IAAI7iC,EAAQ,EACH3F,EAAI,EAAG9I,EAAMuD,KAAKuvC,SAASntC,EAAGuE,GAAIpB,EAAIvF,KAAKgtC,aAEjC,KADf9hC,EAAQwiC,GAAUjxC,EAAM8I,GAAKvF,KAAKgtC,aACd9hC,IAAUsiC,EAAStiC,IAFoB3F,KAO/D,IADA,IAAI3B,EADJsH,EAAQqiC,EAASriC,GACFilB,QAAC,EACTA,GAAIqd,EAAS5pC,GAAI8mC,GAAStoC,EAAGuE,EAAGgmC,EAAO,EAAI/oC,GAAI+oC,EAAO,EAAI/oC,EAAI,GAAI+oC,EAAO,EAAIxc,IAAIwc,EAAO,EAAIxc,GAAI,KAAO,GAE1G,IADAvsB,EAAIusB,MACMjlB,EAAO,CACbtH,GAAK,EACL,MAGR,IAAW,IAAPA,EAAJ,CAGA,IAAIoK,GAAIhO,KAAKyvC,aAAa7rC,EAAGxH,EAAGoxC,EAAS5pC,IAAK,GAAI,EAAG6pC,EAAQ7pC,IAG7D6pC,EAAQrxC,GAAK4D,KAAK4vC,UAAU5hC,GAAI,GAChCy/B,EAAQ7pC,GAAKoK,GACbshC,IAIA,IADA,IAAItuC,GAAIwsC,EAAS5pC,GACVusB,GAAIqd,EAASxsC,IAAI0pC,GAAStoC,EAAGuE,EAAGgmC,EAAO,EAAI3rC,IAAI2rC,EAAO,EAAI3rC,GAAI,GAAI2rC,EAAO,EAAIxc,IAAIwc,EAAO,EAAIxc,GAAI,IAAM,GACzGniB,GAAIhO,KAAKyvC,aAAazuC,GAAG5E,EAAG+zB,GAAGsd,EAAQrxC,IAAK,EAAGqxC,EAAQzsC,KACvDysC,EAAQrxC,GAAK4D,KAAK4vC,UAAU5hC,GAAI,GAChCw/B,EAASxsC,IAAKA,GACdsuC,IACAtuC,GAAImvB,GAIR,GAAIvsB,IAAMsH,EACN,KAAwBw/B,GAAStoC,EAAGuE,EAAGgmC,EAAO,GAAvCxc,GAAIod,EAAS3pC,KAAkC+oC,EAAO,EAAIxc,GAAI,GAAIwc,EAAO,EAAI/oC,GAAI+oC,EAAO,EAAI/oC,EAAI,IAAM,GACzGoK,GAAIhO,KAAKyvC,aAAatf,GAAG/zB,EAAGwH,GAAI,EAAG6pC,EAAQ7pC,GAAI6pC,EAAQtd,KACvDnwB,KAAK4vC,UAAU5hC,GAAI,GACnBy/B,EAAQtd,IAAKniB,GACbw/B,EAAS5pC,GAAKA,EACd0rC,IACA1rC,EAAIusB,GAKZnwB,KAAKqvC,WAAa9B,EAASnxC,GAAKwH,EAChC4pC,EAAS5pC,GAAK2pC,EAASvsC,IAAK5E,EAC5BoxC,EAASpxC,GAAK4E,GAGd0sC,EAAS1tC,KAAKuvC,SAASntC,EAAGuE,IAAMvK,EAChCsxC,EAAS1tC,KAAKuvC,SAAS5C,EAAO,EAAI/oC,GAAI+oC,EAAO,EAAI/oC,EAAI,KAAOA,IAGhE5D,KAAK2uC,KAAO,IAAIxkC,YAAYmlC,GAC5B,IAAK,IAAIlzC,GAAI,EAAGwH,GAAI5D,KAAKqvC,WAAYjzC,GAAIkzC,EAAUlzC,KAC/C4D,KAAK2uC,KAAKvyC,IAAKwH,GACfA,GAAI4pC,EAAS5pC,IAIjB5D,KAAK6uC,UAAY7uC,KAAK6sC,WAAWx+B,SAAS,EAAGrO,KAAKwvC,cAClDxvC,KAAK8uC,UAAY9uC,KAAK8sC,WAAWz+B,SAAS,EAAGrO,KAAKwvC,gB,sBAGtD,SAASptC,EAAGuE,GACR,OAAOR,KAAKwF,MAgHpB,SAAqBqyB,EAAIC,GACrB,IAAMp/B,EAAIm/B,GAAM73B,KAAKS,IAAIo3B,GAAM73B,KAAKS,IAAIq3B,IACxC,OAAQA,EAAK,EAAI,EAAIp/B,EAAI,EAAIA,GAAK,EAlHZgxC,CAAYztC,EAAIpC,KAAKmvC,IAAKxoC,EAAI3G,KAAKovC,KAAOpvC,KAAKgtC,WAAahtC,KAAKgtC,Y,uBAGvF,SAAUrrC,GAON,IANA,IAAmBktC,EAA4C7uC,KAAxD6sC,WAAmCiC,EAAqB9uC,KAAjC8sC,WAAuBH,EAAU3sC,KAAV2sC,OAEjDvwC,EAAI,EACJ0zC,EAAK,IAGI,CACT,IAAMluC,EAAIktC,EAAUntC,GAiBdihC,EAAKjhC,EAAIA,EAAI,EAGnB,GAFAmuC,EAAKlN,GAAMjhC,EAAI,GAAK,GAET,IAAPC,EAAJ,CAMA,IAAMmuC,EAAKnuC,EAAIA,EAAI,EACbouC,EAAKpN,GAAMjhC,EAAI,GAAK,EACpBukC,EAAK6J,GAAMnuC,EAAI,GAAK,EAEpBquC,EAAKpB,EAAUiB,GACfI,EAAKrB,EAAUltC,GACfwuC,EAAKtB,EAAUmB,GACfI,EAAKvB,EAAU3I,GAQrB,GANgBmK,GACZ1D,EAAO,EAAIsD,GAAKtD,EAAO,EAAIsD,EAAK,GAChCtD,EAAO,EAAIuD,GAAKvD,EAAO,EAAIuD,EAAK,GAChCvD,EAAO,EAAIwD,GAAKxD,EAAO,EAAIwD,EAAK,GAChCxD,EAAO,EAAIyD,GAAKzD,EAAO,EAAIyD,EAAK,IAEvB,CACTvB,EAAUltC,GAAKyuC,EACfvB,EAAUjtC,GAAKquC,EAEf,IAAMK,EAAMxB,EAAU5I,GAGtB,IAAa,IAAToK,EAAY,CACZ,IAAI1sC,EAAI5D,KAAKqvC,WACb,EAAG,CACC,GAAIrvC,KAAKmtC,SAASvpC,KAAOsiC,EAAI,CACzBlmC,KAAKmtC,SAASvpC,GAAKjC,EACnB,MAEJiC,EAAI5D,KAAKitC,UAAUrpC,SACdA,IAAM5D,KAAKqvC,YAExBrvC,KAAKuwC,MAAM5uC,EAAG2uC,GACdtwC,KAAKuwC,MAAM3uC,EAAGktC,EAAUgB,IACxB9vC,KAAKuwC,MAAMT,EAAI5J,GAEf,IAAMsK,EAAKT,GAAMnuC,EAAI,GAAK,EAGtBxF,EAAIqwC,GAAWnwC,SACfmwC,GAAWrwC,KAAOo0C,OAEnB,CACH,GAAU,IAANp0C,EAAS,MACbuF,EAAI8qC,KAAarwC,QAlDrB,CACI,GAAU,IAANA,EAAS,MACbuF,EAAI8qC,KAAarwC,IAoDzB,OAAO0zC,I,mBAGX,SAAMnuC,EAAGC,GACL5B,KAAK8sC,WAAWnrC,GAAKC,GACV,IAAPA,IAAU5B,KAAK8sC,WAAWlrC,GAAKD,K,0BAIvC,SAAawM,EAAIsC,EAAIs9B,EAAIpsC,EAAGC,EAAGwI,GAC3B,IAAM4D,EAAIhO,KAAKwvC,aAYf,OAVAxvC,KAAK6sC,WAAW7+B,GAAKG,EACrBnO,KAAK6sC,WAAW7+B,EAAI,GAAKyC,EACzBzQ,KAAK6sC,WAAW7+B,EAAI,GAAK+/B,EAEzB/tC,KAAKuwC,MAAMviC,EAAGrM,GACd3B,KAAKuwC,MAAMviC,EAAI,EAAGpM,GAClB5B,KAAKuwC,MAAMviC,EAAI,EAAG5D,GAElBpK,KAAKwvC,cAAgB,EAEdxhC,K,mBAtWX,SAAYowB,GAIR,IAJwD,IAAxCqS,EAAwC,uDAAjCC,GAAaC,EAAoB,uDAAbC,GACrC5vC,EAAIo9B,EAAO9hC,OACXqwC,EAAS,IAAI9mC,aAAiB,EAAJ7E,GAEvB5E,EAAI,EAAGA,EAAI4E,EAAG5E,IAAK,CACxB,IAAMyC,EAAIu/B,EAAOhiC,GACjBuwC,EAAO,EAAIvwC,GAAKq0C,EAAK5xC,GACrB8tC,EAAO,EAAIvwC,EAAI,GAAKu0C,EAAK9xC,GAG7B,OAAO,IAAI6tC,EAAWC,O,KAsW9B,SAASsB,GAAKtD,EAAIC,EAAIC,EAAIC,GACtB,IAAM9M,EAAK2M,EAAKE,EACV5M,EAAK2M,EAAKE,EAChB,OAAO9M,EAAKA,EAAKC,EAAKA,EAG1B,SAASoS,GAAS1F,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI6F,EAAIC,GAC1C,IAAM9S,EAAK2M,EAAKkG,EACV5S,EAAK2M,EAAKkG,EACV/B,EAAKlE,EAAKgG,EACV7B,EAAKlE,EAAKgG,EACVC,EAAKhG,EAAK8F,EACVG,EAAKhG,EAAK8F,EAGVG,EAAKlC,EAAKA,EAAKC,EAAKA,EACpBkC,EAAKH,EAAKA,EAAKC,EAAKA,EAE1B,OAAOhT,GAAMgR,EAAKkC,EAAKD,EAAKD,GACrB/S,GAAM8Q,EAAKmC,EAAKD,EAAKF,IALjB/S,EAAKA,EAAKC,EAAKA,IAMb8Q,EAAKiC,EAAKhC,EAAK+B,GAAM,EAGtC,SAASxC,GAAa5D,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACtC,IAAMhN,EAAK6M,EAAKF,EACV1M,EAAK6M,EAAKF,EACVmE,EAAKhE,EAAKJ,EACVqE,EAAKhE,EAAKJ,EAEV1E,EAAKlI,EAAKA,EAAKC,EAAKA,EACpBgR,EAAKF,EAAKA,EAAKC,EAAKA,EACpBxsC,EAAI,IAAOw7B,EAAKgR,EAAK/Q,EAAK8Q,GAE1B3sC,GAAK4sC,EAAK9I,EAAKjI,EAAKgR,GAAMzsC,EAC1BmE,GAAKq3B,EAAKiR,EAAKF,EAAK7I,GAAM1jC,EAEhC,OAAOJ,EAAIA,EAAIuE,EAAIA,EAmBvB,SAAS+nC,GAAUyC,EAAKC,EAAOjvC,EAAMO,GACjC,GAAIA,EAAQP,GAAQ,GAChB,IAAK,IAAI/F,EAAI+F,EAAO,EAAG/F,GAAKsG,EAAOtG,IAAK,CAIpC,IAHA,IAAMi1C,EAAOF,EAAI/0C,GACXk1C,EAAWF,EAAMC,GACnB9rC,EAAInJ,EAAI,EACLmJ,GAAKpD,GAAQivC,EAAMD,EAAI5rC,IAAM+rC,GAAUH,EAAI5rC,EAAI,GAAK4rC,EAAI5rC,KAC/D4rC,EAAI5rC,EAAI,GAAK8rC,MAEd,CACH,IACIj1C,EAAI+F,EAAO,EACXoD,EAAI7C,EACRuL,GAAKkjC,EAHWhvC,EAAOO,GAAU,EAGftG,GACdg1C,EAAMD,EAAIhvC,IAASivC,EAAMD,EAAIzuC,KAASuL,GAAKkjC,EAAKhvC,EAAMO,GACtD0uC,EAAMD,EAAI/0C,IAAMg1C,EAAMD,EAAIzuC,KAASuL,GAAKkjC,EAAK/0C,EAAGsG,GAChD0uC,EAAMD,EAAIhvC,IAASivC,EAAMD,EAAI/0C,KAAK6R,GAAKkjC,EAAKhvC,EAAM/F,GAItD,IAFA,IAAMi1C,EAAOF,EAAI/0C,GACXk1C,EAAWF,EAAMC,KACV,CACT,GAAGj1C,UAAYg1C,EAAMD,EAAI/0C,IAAMk1C,GAC/B,GAAG/rC,UAAY6rC,EAAMD,EAAI5rC,IAAM+rC,GAC/B,GAAI/rC,EAAInJ,EAAG,MACX6R,GAAKkjC,EAAK/0C,EAAGmJ,GAEjB4rC,EAAIhvC,EAAO,GAAKgvC,EAAI5rC,GACpB4rC,EAAI5rC,GAAK8rC,EAEL3uC,EAAQtG,EAAI,GAAKmJ,EAAIpD,GACrBusC,GAAUyC,EAAKC,EAAOh1C,EAAGsG,GACzBgsC,GAAUyC,EAAKC,EAAOjvC,EAAMoD,EAAI,KAEhCmpC,GAAUyC,EAAKC,EAAOjvC,EAAMoD,EAAI,GAChCmpC,GAAUyC,EAAKC,EAAOh1C,EAAGsG,KAKrC,SAASuL,GAAKrL,EAAKxG,EAAGmJ,GAClB,IAAMgsC,EAAM3uC,EAAIxG,GAChBwG,EAAIxG,GAAKwG,EAAI2C,GACb3C,EAAI2C,GAAKgsC,EAGb,SAASb,GAAY7xC,GACjB,OAAOA,EAAE,GAEb,SAAS+xC,GAAY/xC,GACjB,OAAOA,EAAE,GCheb,IAAMgT,GAAU,KAEKivB,G,WACnB,aAAc,oBACZ9gC,KAAK+gC,IAAM/gC,KAAKghC,IAChBhhC,KAAKihC,IAAMjhC,KAAKkhC,IAAM,KACtBlhC,KAAKuN,EAAI,G,0CAEX,SAAOnL,EAAGuE,GACR3G,KAAKuN,GAAL,WAAcvN,KAAK+gC,IAAM/gC,KAAKihC,KAAO7+B,EAArC,YAA0CpC,KAAKghC,IAAMhhC,KAAKkhC,KAAOv6B,K,uBAEnE,WACmB,OAAb3G,KAAKihC,MACPjhC,KAAKihC,IAAMjhC,KAAK+gC,IAAK/gC,KAAKkhC,IAAMlhC,KAAKghC,IACrChhC,KAAKuN,GAAK,O,oBAGd,SAAOnL,EAAGuE,GACR3G,KAAKuN,GAAL,WAAcvN,KAAKihC,KAAO7+B,EAA1B,YAA+BpC,KAAKkhC,KAAOv6B,K,iBAE7C,SAAIvE,EAAGuE,EAAGiJ,GAER,IAAM7C,GADN3K,GAAKA,IAAWwN,GAAKA,GAEfgyB,EAFEj7B,GAAKA,EAGb,GAAIiJ,EAAI,EAAG,MAAM,IAAI3R,MAAM,mBACV,OAAb+B,KAAKihC,IAAcjhC,KAAKuN,GAAL,WAAcR,EAAd,YAAoB60B,IAClCz7B,KAAKS,IAAI5G,KAAKihC,IAAMl0B,GAAM8E,IAAW1L,KAAKS,IAAI5G,KAAKkhC,IAAMU,GAAM/vB,MAAS7R,KAAKuN,GAAK,IAAMR,EAAK,IAAM60B,GACvGhyB,IACL5P,KAAKuN,GAAL,WAAcqC,EAAd,YAAmBA,EAAnB,kBAA8BxN,EAAIwN,EAAlC,YAAuCjJ,EAAvC,YAA4CiJ,EAA5C,YAAiDA,EAAjD,kBAA4D5P,KAAKihC,IAAMl0B,EAAvE,YAA6E/M,KAAKkhC,IAAMU,M,kBAE1F,SAAKx/B,EAAGuE,EAAGyzB,EAAGpN,GACZhtB,KAAKuN,GAAL,WAAcvN,KAAK+gC,IAAM/gC,KAAKihC,KAAO7+B,EAArC,YAA0CpC,KAAKghC,IAAMhhC,KAAKkhC,KAAOv6B,EAAjE,aAAuEyzB,EAAvE,aAA6EpN,EAA7E,aAAmFoN,EAAnF,O,mBAEF,WACE,OAAOp6B,KAAKuN,GAAK,S,KClCAikC,G,WACnB,aAAc,oBACZxxC,KAAKuN,EAAI,G,0CAEX,SAAOnL,EAAGuE,GACR3G,KAAKuN,EAAEvR,KAAK,CAACoG,EAAGuE,M,uBAElB,WACE3G,KAAKuN,EAAEvR,KAAKgE,KAAKuN,EAAE,GAAGpK,W,oBAExB,SAAOf,EAAGuE,GACR3G,KAAKuN,EAAEvR,KAAK,CAACoG,EAAGuE,M,mBAElB,WACE,OAAO3G,KAAKuN,EAAEjR,OAAS0D,KAAKuN,EAAI,S,KCXfkkC,G,WACnB,WAAYC,GAAuD,6DAAlB,CAAC,EAAG,EAAG,IAAK,KAAM,SAA5CC,EAA4C,KAAtCC,EAAsC,KAAhCC,EAAgC,KAA1BC,EAA0B,KACjE,GADiE,uBAC1DD,GAAQA,KAAUF,GAAQA,QAAaG,GAAQA,KAAUF,GAAQA,IAAQ,MAAM,IAAI3zC,MAAM,kBAChG+B,KAAK0xC,SAAWA,EAChB1xC,KAAK+xC,eAAiB,IAAIlsC,aAAsC,EAAzB6rC,EAAStT,OAAO9hC,QACvD0D,KAAKgyC,QAAU,IAAInsC,aAAsC,EAAzB6rC,EAAStT,OAAO9hC,QAChD0D,KAAK6xC,KAAOA,EAAM7xC,KAAK2xC,KAAOA,EAC9B3xC,KAAK8xC,KAAOA,EAAM9xC,KAAK4xC,KAAOA,EAC9B5xC,KAAKiyC,Q,0CAEP,WAGE,OAFAjyC,KAAK0xC,SAASj7B,SACdzW,KAAKiyC,QACEjyC,O,mBAET,WAKE,IAJA,IAI6CoC,EAAGuE,EAJhD,EAAuD3G,KAAhD0xC,SAAWtT,EAAlB,EAAkBA,OAAQuQ,EAA1B,EAA0BA,KAAME,EAAhC,EAAgCA,UAAYmD,EAAWhyC,KAAXgyC,QAGtCE,EAAgBlyC,KAAKkyC,cAAgBlyC,KAAK+xC,eAAe1jC,SAAS,EAAGwgC,EAAUvyC,OAAS,EAAI,GACzFF,EAAI,EAAGmJ,EAAI,EAAGvE,EAAI6tC,EAAUvyC,OAAcF,EAAI4E,EAAG5E,GAAK,EAAGmJ,GAAK,EAAG,CACxE,IAAMgoB,EAAoB,EAAfshB,EAAUzyC,GACfwxB,EAAwB,EAAnBihB,EAAUzyC,EAAI,GACnByxB,EAAwB,EAAnBghB,EAAUzyC,EAAI,GACnB4Q,EAAKoxB,EAAO7Q,GACZgU,EAAKnD,EAAO7Q,EAAK,GACjBkU,EAAKrD,EAAOxQ,GACZ8T,EAAKtD,EAAOxQ,EAAK,GACjBukB,EAAK/T,EAAOvQ,GACZukB,EAAKhU,EAAOvQ,EAAK,GAEjBmQ,EAAKyD,EAAKz0B,EACVixB,EAAKyD,EAAKH,EACVwN,EAAKoD,EAAKnlC,EACVgiC,EAAKoD,EAAK7Q,EACV8Q,EAA2B,GAArBrU,EAAKgR,EAAK/Q,EAAK8Q,GAE3B,GAAI5oC,KAAKS,IAAIyrC,GAAM,KAAM,CAMvB,IAAI1wC,EAAI,IAIFiO,EAAmB,EAAfi/B,EAAU,GAEpBzsC,GAAK4K,EAAKmlC,GAAM,GADhBxwC,GAAKwE,KAAKmsC,MAAMlU,EAAOxuB,GAAK5C,GAAMgiC,GAAM5Q,EAAOxuB,EAAI,GAAK2xB,GAAMwN,IACtCC,EACxBroC,GAAK46B,EAAK6Q,GAAM,EAAIzwC,EAAIotC,MACnB,CACL,IAAMvsC,EAAI,EAAI6vC,EACRnM,EAAKlI,EAAKA,EAAKC,EAAKA,EACpBgR,EAAKF,EAAKA,EAAKC,EAAKA,EAC1B5sC,EAAI4K,GAAMgiC,EAAK9I,EAAKjI,EAAKgR,GAAMzsC,EAC/BmE,EAAI46B,GAAMvD,EAAKiR,EAAKF,EAAK7I,GAAM1jC,EAEjC0vC,EAAc3sC,GAAKnD,EACnB8vC,EAAc3sC,EAAI,GAAKoB,EAIzB,IACIspC,EACAljC,EACA60B,EAHA5U,EAAI2hB,EAAKA,EAAKryC,OAAS,GACnB8zC,EAAS,EAAJpjB,EACLhgB,EAAKoxB,EAAO,EAAIpR,GAChBuU,EAAKnD,EAAO,EAAIpR,EAAI,GAC5BglB,EAAQxsC,KAAK,GACb,IAAK,IAAIpJ,EAAI,EAAGA,EAAIuyC,EAAKryC,SAAUF,EAEjC6zC,EAAKG,EAAIrjC,EAAKC,EAAI40B,EAAKL,EACvB6O,EAAS,GAFTpjB,EAAI2hB,EAAKvyC,IAEG4Q,EAAKoxB,EAAO,EAAIpR,GAAIuU,EAAKnD,EAAO,EAAIpR,EAAI,GACpDglB,EAAQ/B,EAAK,GAAK+B,EAAQ5B,GAAMxO,EAAKL,EACrCyQ,EAAQ/B,EAAK,GAAK+B,EAAQ5B,EAAK,GAAKpjC,EAAKD,I,oBAG7C,SAAOiG,GACL,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EACtD,EAAuER,KAAhE0xC,SAAW5C,EAAlB,EAAkBA,UAAWyD,EAA7B,EAA6BA,QAAS5D,EAAtC,EAAsCA,KAAOuD,EAA0BlyC,KAA1BkyC,cAAeF,EAAWhyC,KAAXgyC,QAC5D,GAAIrD,EAAKryC,QAAU,EAAG,OAAO,KAC7B,IAAK,IAAIF,EAAI,EAAG4E,EAAI8tC,EAAUxyC,OAAQF,EAAI4E,IAAK5E,EAAG,CAChD,IAAMmJ,EAAIupC,EAAU1yC,GACpB,KAAImJ,EAAInJ,GAAR,CACA,IAAMo2C,EAAyB,EAApBrsC,KAAKwF,MAAMvP,EAAI,GACpBq2C,EAAyB,EAApBtsC,KAAKwF,MAAMpG,EAAI,GACpBkhC,EAAKyL,EAAcM,GACnB9L,EAAKwL,EAAcM,EAAK,GACxB5L,EAAKsL,EAAcO,GACnB5L,EAAKqL,EAAcO,EAAK,GAC9BzyC,KAAK0yC,eAAejM,EAAIC,EAAIE,EAAIC,EAAI7zB,IAGtC,IADA,IAAI2/B,EAAIC,EAAKjE,EAAKA,EAAKryC,OAAS,GACvBF,EAAI,EAAGA,EAAIuyC,EAAKryC,SAAUF,EAAG,CACpCu2C,EAAKC,EAAIA,EAAKjE,EAAKvyC,GACnB,IAAM4R,EAAkC,EAA9B7H,KAAKwF,MAAM4mC,EAAQK,GAAM,GAC7BxwC,EAAI8vC,EAAclkC,GAClBrH,EAAIurC,EAAclkC,EAAI,GACtBlI,EAAS,EAAL6sC,EACJ9zC,EAAImB,KAAK6yC,SAASzwC,EAAGuE,EAAGqrC,EAAQlsC,EAAI,GAAIksC,EAAQlsC,EAAI,IACtDjH,GAAGmB,KAAK0yC,eAAetwC,EAAGuE,EAAG9H,EAAE,GAAIA,EAAE,GAAImU,GAE/C,OAAO6wB,GAAUA,EAAOrlC,U,0BAE1B,SAAawU,GACX,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAEtD,OADAwS,EAAQke,KAAKlxB,KAAK2xC,KAAM3xC,KAAK4xC,KAAM5xC,KAAK6xC,KAAO7xC,KAAK2xC,KAAM3xC,KAAK8xC,KAAO9xC,KAAK4xC,MACpE/N,GAAUA,EAAOrlC,U,wBAE1B,SAAWpC,EAAG4W,GACZ,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAChD49B,EAASp+B,KAAK8yC,MAAM12C,GAC1B,GAAe,OAAXgiC,GAAoBA,EAAO9hC,OAA/B,CACA0W,EAAQmuB,OAAO/C,EAAO,GAAIA,EAAO,IAEjC,IADA,IAAIp9B,EAAIo9B,EAAO9hC,OACR8hC,EAAO,KAAOA,EAAOp9B,EAAE,IAAMo9B,EAAO,KAAOA,EAAOp9B,EAAE,IAAMA,EAAI,GAAGA,GAAK,EAC7E,IAAK,IAAI5E,EAAI,EAAGA,EAAI4E,EAAG5E,GAAK,EACtBgiC,EAAOhiC,KAAOgiC,EAAOhiC,EAAE,IAAMgiC,EAAOhiC,EAAE,KAAOgiC,EAAOhiC,EAAE,IACxD4W,EAAQquB,OAAOjD,EAAOhiC,GAAIgiC,EAAOhiC,EAAI,IAGzC,OADA4W,EAAQouB,YACDyC,GAAUA,EAAOrlC,W,oCAE1B,0FACoB4/B,EAAWp+B,KAAtB0xC,SAAWtT,OACThiC,EAAI,EAAG4E,EAAIo9B,EAAO9hC,OAAS,EAFtC,YAEyCF,EAAI4E,GAF7C,sBAGU+xC,EAAO/yC,KAAKgzC,YAAY52C,IAHlC,gBAI8B,OAAhB22C,EAAKxuC,MAAQnI,EAJ3B,SAIoC22C,EAJpC,SAEkD32C,EAFlD,gE,yBAOA,SAAYA,GACV,IAAM4rC,EAAU,IAAIwJ,GAEpB,OADAxxC,KAAKizC,WAAW72C,EAAG4rC,GACZA,EAAQxpC,U,4BAEjB,SAAeuO,EAAI60B,EAAI50B,EAAIu0B,EAAIvuB,GAC7B,IAAI+qB,EACEmV,EAAKlzC,KAAKmzC,YAAYpmC,EAAI60B,GAC1BwR,EAAKpzC,KAAKmzC,YAAYnmC,EAAIu0B,GACrB,IAAP2R,GAAmB,IAAPE,GACdpgC,EAAQmuB,OAAOp0B,EAAI60B,GACnB5uB,EAAQquB,OAAOr0B,EAAIu0B,KACVxD,EAAI/9B,KAAKqzC,aAAatmC,EAAI60B,EAAI50B,EAAIu0B,EAAI2R,EAAIE,MACnDpgC,EAAQmuB,OAAOpD,EAAE,GAAIA,EAAE,IACvB/qB,EAAQquB,OAAOtD,EAAE,GAAIA,EAAE,O,sBAG3B,SAAS3hC,EAAGgG,EAAGuE,GACb,OAAKvE,GAAKA,KAASA,IAAOuE,GAAKA,KAASA,GACjC3G,KAAK0xC,SAAS4B,MAAMl3C,EAAGgG,EAAGuE,KAAOvK,I,iCAE1C,WAAWA,GAAX,4FACQm3C,EAAKvzC,KAAK8yC,MAAM12C,IADxB,qBAE0B4D,KAAK0xC,SAAS8B,UAAUp3C,IAFlD,4DAEqBmJ,EAFrB,UAGUkuC,EAAKzzC,KAAK8yC,MAAMvtC,IAH1B,iBAK2BmuC,EAAK,EAAGC,EAAKJ,EAAGj3C,OAL3C,aAKmDo3C,EAAKC,GALxD,iBAMeC,EAAK,EAAGC,EAAKJ,EAAGn3C,OAN/B,aAMuCs3C,EAAKC,GAN5C,oBAOYN,EAAGG,IAAOD,EAAGG,IACdL,EAAGG,EAAK,IAAMD,EAAGG,EAAK,IACtBL,GAAIG,EAAK,GAAKC,IAAOF,GAAIG,EAAKC,EAAK,GAAKA,IACxCN,GAAIG,EAAK,GAAKC,IAAOF,GAAIG,EAAKC,EAAK,GAAKA,GAVnD,iBAYU,OAZV,UAYgBtuC,EAZhB,4CAMgDquC,GAAM,EANtD,wBAK4DF,GAAM,EALlE,uN,mBAmBA,SAAMt3C,GACJ,IAAO81C,EAA4DlyC,KAA5DkyC,cAAP,EAAmElyC,KAA7C0xC,SAAWa,EAAjC,EAAiCA,QAASzD,EAA1C,EAA0CA,UAAWD,EAArD,EAAqDA,UAC/C5R,EAAKsV,EAAQn2C,GACnB,IAAY,IAAR6gC,EAAW,OAAO,KACtB,IAAMmB,EAAS,GACXx6B,EAAIq5B,EACR,EAAG,CACD,IAAMjvB,EAAI7H,KAAKwF,MAAM/H,EAAI,GAGzB,GAFAw6B,EAAOpiC,KAAKk2C,EAAkB,EAAJlkC,GAAQkkC,EAAkB,EAAJlkC,EAAQ,IAEpD6gC,EADJjrC,EAAIA,EAAI,IAAM,EAAIA,EAAI,EAAIA,EAAI,KACTxH,EAAG,MACxBwH,EAAIkrC,EAAUlrC,SACPA,IAAMq5B,IAAa,IAAPr5B,GACrB,OAAOw6B,I,mBAET,SAAMhiC,GAEJ,GAAU,IAANA,GAAyC,IAA9B4D,KAAK0xC,SAAS/C,KAAKryC,OAChC,MAAO,CAAC0D,KAAK6xC,KAAM7xC,KAAK4xC,KAAM5xC,KAAK6xC,KAAM7xC,KAAK8xC,KAAM9xC,KAAK2xC,KAAM3xC,KAAK8xC,KAAM9xC,KAAK2xC,KAAM3xC,KAAK4xC,MAE5F,IAAMxT,EAASp+B,KAAK8zC,MAAM13C,GAC1B,GAAe,OAAXgiC,EAAiB,OAAO,KAC5B,IAAgB1uB,EAAK1P,KAAdgyC,QACDlsC,EAAQ,EAAJ1J,EACV,OAAOsT,EAAE5J,IAAM4J,EAAE5J,EAAI,GACf9F,KAAK+zC,cAAc33C,EAAGgiC,EAAQ1uB,EAAE5J,GAAI4J,EAAE5J,EAAI,GAAI4J,EAAE5J,EAAI,GAAI4J,EAAE5J,EAAI,IAC9D9F,KAAKg0C,YAAY53C,EAAGgiC,K,yBAE5B,SAAYhiC,EAAGgiC,GAMb,IALA,IAEIrxB,EAAI60B,EACJsR,EACAjW,EAJEj8B,EAAIo9B,EAAO9hC,OACb23C,EAAI,KACIjnC,EAAKoxB,EAAOp9B,EAAI,GAAIugC,EAAKnD,EAAOp9B,EAAI,GACxCoyC,EAAKpzC,KAAKmzC,YAAYnmC,EAAIu0B,GAC1BrE,EAAK,EACJ33B,EAAI,EAAGA,EAAIvE,EAAGuE,GAAK,EAG1B,GAFAwH,EAAKC,EAAI40B,EAAKL,EAAIv0B,EAAKoxB,EAAO74B,GAAIg8B,EAAKnD,EAAO74B,EAAI,GAClD2tC,EAAKE,EAAIA,EAAKpzC,KAAKmzC,YAAYnmC,EAAIu0B,GACxB,IAAP2R,GAAmB,IAAPE,EACdnW,EAAKC,EAAIA,EAAK,EACV+W,EAAGA,EAAEj4C,KAAKgR,EAAIu0B,GACb0S,EAAI,CAACjnC,EAAIu0B,OACT,CACL,IAAIxD,OAAC,EAAEmW,OAAG,EAAEC,OAAG,EAAEC,OAAG,EAAEC,OAAG,EACzB,GAAW,IAAPnB,EAAU,CACZ,GAAwD,QAAnDnV,EAAI/9B,KAAKqzC,aAAatmC,EAAI60B,EAAI50B,EAAIu0B,EAAI2R,EAAIE,IAAe,SADlD,QAEWrV,EAFX,GAEXmW,EAFW,KAENC,EAFM,KAEDC,EAFC,KAEIC,EAFJ,SAGP,CACL,GAAwD,QAAnDtW,EAAI/9B,KAAKqzC,aAAarmC,EAAIu0B,EAAIx0B,EAAI60B,EAAIwR,EAAIF,IAAe,SADzD,QAEkBnV,EAFlB,GAEJqW,EAFI,KAECC,EAFD,KAEMH,EAFN,KAEWC,EAFX,KAGLlX,EAAKC,EAAIA,EAAKl9B,KAAKs0C,UAAUJ,EAAKC,GAC9BlX,GAAMC,GAAIl9B,KAAKu0C,MAAMn4C,EAAG6gC,EAAIC,EAAI+W,EAAGA,EAAE33C,QACrC23C,EAAGA,EAAEj4C,KAAKk4C,EAAKC,GACdF,EAAI,CAACC,EAAKC,GAEjBlX,EAAKC,EAAIA,EAAKl9B,KAAKs0C,UAAUF,EAAKC,GAC9BpX,GAAMC,GAAIl9B,KAAKu0C,MAAMn4C,EAAG6gC,EAAIC,EAAI+W,EAAGA,EAAE33C,QACrC23C,EAAGA,EAAEj4C,KAAKo4C,EAAKC,GACdJ,EAAI,CAACG,EAAKC,GAGnB,GAAIJ,EACFhX,EAAKC,EAAIA,EAAKl9B,KAAKs0C,UAAUL,EAAE,GAAIA,EAAE,IACjChX,GAAMC,GAAIl9B,KAAKu0C,MAAMn4C,EAAG6gC,EAAIC,EAAI+W,EAAGA,EAAE33C,aACpC,GAAI0D,KAAK8a,SAAS1e,GAAI4D,KAAK2xC,KAAO3xC,KAAK6xC,MAAQ,GAAI7xC,KAAK4xC,KAAO5xC,KAAK8xC,MAAQ,GACjF,MAAO,CAAC9xC,KAAK6xC,KAAM7xC,KAAK4xC,KAAM5xC,KAAK6xC,KAAM7xC,KAAK8xC,KAAM9xC,KAAK2xC,KAAM3xC,KAAK8xC,KAAM9xC,KAAK2xC,KAAM3xC,KAAK4xC,MAE5F,OAAOqC,I,0BAET,SAAalnC,EAAI60B,EAAI50B,EAAIu0B,EAAI2R,EAAIE,GAC/B,OAAa,CACX,GAAW,IAAPF,GAAmB,IAAPE,EAAU,MAAO,CAACrmC,EAAI60B,EAAI50B,EAAIu0B,GAC9C,GAAI2R,EAAKE,EAAI,OAAO,KACpB,IAAIhxC,OAAC,EAAEuE,OAAC,EAAEyD,EAAI8oC,GAAME,EACZ,EAAJhpC,GAAYhI,EAAI2K,GAAMC,EAAKD,IAAO/M,KAAK8xC,KAAOlQ,IAAOL,EAAKK,GAAKj7B,EAAI3G,KAAK8xC,MAC/D,EAAJ1nC,GAAYhI,EAAI2K,GAAMC,EAAKD,IAAO/M,KAAK4xC,KAAOhQ,IAAOL,EAAKK,GAAKj7B,EAAI3G,KAAK4xC,MACpE,EAAJxnC,GAAYzD,EAAIi7B,GAAML,EAAKK,IAAO5hC,KAAK6xC,KAAO9kC,IAAOC,EAAKD,GAAK3K,EAAIpC,KAAK6xC,OAC5ElrC,EAAIi7B,GAAML,EAAKK,IAAO5hC,KAAK2xC,KAAO5kC,IAAOC,EAAKD,GAAK3K,EAAIpC,KAAK2xC,MAC7DuB,GAAInmC,EAAK3K,EAAGw/B,EAAKj7B,EAAGusC,EAAKlzC,KAAKmzC,YAAYpmC,EAAI60B,KAC7C50B,EAAK5K,EAAGm/B,EAAK56B,EAAGysC,EAAKpzC,KAAKmzC,YAAYnmC,EAAIu0B,O,2BAGnD,SAAcnlC,EAAGgiC,EAAQoW,EAAKC,EAAKC,EAAKC,GACtC,IAA4B91C,EAAxBo1C,EAAIlxC,MAAMxB,KAAK68B,GAGnB,IAFIv/B,EAAImB,KAAK6yC,SAASoB,EAAE,GAAIA,EAAE,GAAIO,EAAKC,KAAMR,EAAEpM,QAAQhpC,EAAE,GAAIA,EAAE,KAC3DA,EAAImB,KAAK6yC,SAASoB,EAAEA,EAAE33C,OAAS,GAAI23C,EAAEA,EAAE33C,OAAS,GAAIo4C,EAAKC,KAAMV,EAAEj4C,KAAK6C,EAAE,GAAIA,EAAE,IAC9Eo1C,EAAIj0C,KAAKg0C,YAAY53C,EAAG63C,GAC1B,IAAK,IAAyBf,EAArB3tC,EAAI,EAAGvE,EAAIizC,EAAE33C,OAAY82C,EAAKpzC,KAAKs0C,UAAUL,EAAEjzC,EAAI,GAAIizC,EAAEjzC,EAAI,IAAKuE,EAAIvE,EAAGuE,GAAK,EACrF2tC,EAAKE,EAAIA,EAAKpzC,KAAKs0C,UAAUL,EAAE1uC,GAAI0uC,EAAE1uC,EAAI,IACrC2tC,GAAME,IAAI7tC,EAAIvF,KAAKu0C,MAAMn4C,EAAG82C,EAAIE,EAAIa,EAAG1uC,GAAIvE,EAAIizC,EAAE33C,aAE9C0D,KAAK8a,SAAS1e,GAAI4D,KAAK2xC,KAAO3xC,KAAK6xC,MAAQ,GAAI7xC,KAAK4xC,KAAO5xC,KAAK8xC,MAAQ,KACjFmC,EAAI,CAACj0C,KAAK2xC,KAAM3xC,KAAK4xC,KAAM5xC,KAAK6xC,KAAM7xC,KAAK4xC,KAAM5xC,KAAK6xC,KAAM7xC,KAAK8xC,KAAM9xC,KAAK2xC,KAAM3xC,KAAK8xC,OAEzF,OAAOmC,I,mBAET,SAAM73C,EAAG6gC,EAAIC,EAAI+W,EAAG1uC,GAClB,KAAO03B,IAAOC,GAAI,CAChB,IAAI96B,OAAC,EAAEuE,OAAC,EACR,OAAQs2B,GACN,KAAK,EAAQA,EAAK,EAAQ,SAC1B,KAAK,EAAQA,EAAK,EAAQ76B,EAAIpC,KAAK6xC,KAAMlrC,EAAI3G,KAAK4xC,KAAM,MACxD,KAAK,EAAQ3U,EAAK,EAAQ,SAC1B,KAAK,EAAQA,EAAK,GAAQ76B,EAAIpC,KAAK6xC,KAAMlrC,EAAI3G,KAAK8xC,KAAM,MACxD,KAAK,GAAQ7U,EAAK,EAAQ,SAC1B,KAAK,EAAQA,EAAK,EAAQ76B,EAAIpC,KAAK2xC,KAAMhrC,EAAI3G,KAAK8xC,KAAM,MACxD,KAAK,EAAQ7U,EAAK,EAAQ,SAC1B,KAAK,EAAQA,EAAK,EAAQ76B,EAAIpC,KAAK2xC,KAAMhrC,EAAI3G,KAAK4xC,KAI/CqC,EAAE1uC,KAAOnD,GAAK6xC,EAAE1uC,EAAI,KAAOoB,IAAM3G,KAAK8a,SAAS1e,EAAGgG,EAAGuE,KACxDstC,EAAEp5B,OAAOtV,EAAG,EAAGnD,EAAGuE,GAAIpB,GAAK,GAG/B,GAAI0uC,EAAE33C,OAAS,EACb,IAAK,IAAIF,EAAI,EAAGA,EAAI63C,EAAE33C,OAAQF,GAAI,EAAG,CACnC,IAAMmJ,GAAKnJ,EAAI,GAAK63C,EAAE33C,OAAQoR,GAAKtR,EAAI,GAAK63C,EAAE33C,QAC1C23C,EAAE73C,KAAO63C,EAAE1uC,IAAM0uC,EAAE1uC,KAAO0uC,EAAEvmC,IAC7BumC,EAAE73C,EAAI,KAAO63C,EAAE1uC,EAAI,IAAM0uC,EAAE1uC,EAAI,KAAO0uC,EAAEvmC,EAAI,MAC7CumC,EAAEp5B,OAAOtV,EAAG,GAAInJ,GAAK,GAG3B,OAAOmJ,I,sBAET,SAASwH,EAAI60B,EAAIgT,EAAIC,GACnB,IAAkBzqC,EAAGhI,EAAGuE,EAApBqH,EAAI8kB,IACR,GAAI+hB,EAAK,EAAG,CACV,GAAIjT,GAAM5hC,KAAK4xC,KAAM,OAAO,MACvBxnC,GAAKpK,KAAK4xC,KAAOhQ,GAAMiT,GAAM7mC,IAAGrH,EAAI3G,KAAK4xC,KAAMxvC,EAAI2K,GAAMiB,EAAI5D,GAAKwqC,QAClE,GAAIC,EAAK,EAAG,CACjB,GAAIjT,GAAM5hC,KAAK8xC,KAAM,OAAO,MACvB1nC,GAAKpK,KAAK8xC,KAAOlQ,GAAMiT,GAAM7mC,IAAGrH,EAAI3G,KAAK8xC,KAAM1vC,EAAI2K,GAAMiB,EAAI5D,GAAKwqC,GAEzE,GAAIA,EAAK,EAAG,CACV,GAAI7nC,GAAM/M,KAAK6xC,KAAM,OAAO,MACvBznC,GAAKpK,KAAK6xC,KAAO9kC,GAAM6nC,GAAM5mC,IAAG5L,EAAIpC,KAAK6xC,KAAMlrC,EAAIi7B,GAAM5zB,EAAI5D,GAAKyqC,QAClE,GAAID,EAAK,EAAG,CACjB,GAAI7nC,GAAM/M,KAAK2xC,KAAM,OAAO,MACvBvnC,GAAKpK,KAAK2xC,KAAO5kC,GAAM6nC,GAAM5mC,IAAG5L,EAAIpC,KAAK2xC,KAAMhrC,EAAIi7B,GAAM5zB,EAAI5D,GAAKyqC,GAEzE,MAAO,CAACzyC,EAAGuE,K,uBAEb,SAAUvE,EAAGuE,GACX,OAAQvE,IAAMpC,KAAK2xC,KAAO,EACpBvvC,IAAMpC,KAAK6xC,KAAO,EAAS,IAC1BlrC,IAAM3G,KAAK4xC,KAAO,EACnBjrC,IAAM3G,KAAK8xC,KAAO,EAAS,K,yBAEnC,SAAY1vC,EAAGuE,GACb,OAAQvE,EAAIpC,KAAK2xC,KAAO,EAClBvvC,EAAIpC,KAAK6xC,KAAO,EAAS,IACxBlrC,EAAI3G,KAAK4xC,KAAO,EACjBjrC,EAAI3G,KAAK8xC,KAAO,EAAS,O,iBCpFzBgD,IA3OJjV,GAAM,EAAI15B,KAAKkuB,GAAItoB,GAAM5F,KAAK4F,IAEpC,SAASgpC,GAAOl2C,GACd,OAAOA,EAAE,GAGX,SAASm2C,GAAOn2C,GACd,OAAOA,EAAE,GAiBX,SAASo2C,GAAO7yC,EAAGuE,EAAGiJ,GACpB,MAAO,CAACxN,EAAI+D,KAAKu5B,IAAIt9B,EAAIuE,GAAKiJ,EAAGjJ,EAAIR,KAAKs5B,IAAIr9B,EAAIuE,GAAKiJ,G,IAGpCslC,G,WAMnB,WAAY9W,GAAQ,oBAClBp+B,KAAKm1C,YAAc,IAAIzI,GAAWtO,GAClCp+B,KAAKuyC,QAAU,IAAIxF,WAAW3O,EAAO9hC,OAAS,GAC9C0D,KAAKo1C,WAAa,IAAIrI,WAAW3O,EAAO9hC,OAAS,GACjD0D,KAAKo+B,OAASp+B,KAAKm1C,YAAYxI,OAC/B3sC,KAAKiyC,Q,0CAEP,WAGE,OAFAjyC,KAAKm1C,YAAY1+B,SACjBzW,KAAKiyC,QACEjyC,O,mBAET,WACE,IAAMwC,EAAIxC,KAAKm1C,YAAa/W,EAASp+B,KAAKo+B,OAG1C,GAAI57B,EAAEmsC,MAAQnsC,EAAEmsC,KAAKryC,OAAS,GAvClC,SAAmBkG,GAEjB,IADA,IAAOqsC,EAAqBrsC,EAArBqsC,UAAWlC,EAAUnqC,EAAVmqC,OACTvwC,EAAI,EAAGA,EAAIyyC,EAAUvyC,OAAQF,GAAK,EAAG,CAC5C,IAAMuF,EAAI,EAAIktC,EAAUzyC,GAClBwF,EAAI,EAAIitC,EAAUzyC,EAAI,GACtBgO,EAAI,EAAIykC,EAAUzyC,EAAI,GAG5B,IAFeuwC,EAAOviC,GAAKuiC,EAAOhrC,KAAOgrC,EAAO/qC,EAAI,GAAK+qC,EAAOhrC,EAAI,KACrDgrC,EAAO/qC,GAAK+qC,EAAOhrC,KAAOgrC,EAAOviC,EAAI,GAAKuiC,EAAOhrC,EAAI,IACxD,MAAO,OAAO,EAE5B,OAAO,EA6B8BolC,CAAUvkC,GAAI,CAC/CxC,KAAK+mC,UAAYgG,WAAWxrC,KAAK,CAACjF,OAAQ8hC,EAAO9hC,OAAO,IAAI,SAACiR,EAAEnR,GAAH,OAASA,KAClE8N,MAAK,SAAC9N,EAAGmJ,GAAJ,OAAU64B,EAAO,EAAIhiC,GAAKgiC,EAAO,EAAI74B,IAAM64B,EAAO,EAAIhiC,EAAI,GAAKgiC,EAAO,EAAI74B,EAAI,MAItF,IAHA,IAAM3B,EAAI5D,KAAK+mC,UAAU,GAAIhlC,EAAI/B,KAAK+mC,UAAU/mC,KAAK+mC,UAAUzqC,OAAS,GACtE+4C,EAAS,CAAEjX,EAAO,EAAIx6B,GAAIw6B,EAAO,EAAIx6B,EAAI,GAAIw6B,EAAO,EAAIr8B,GAAIq8B,EAAO,EAAIr8B,EAAI,IAC3E6N,EAAI,KAAOzJ,KAAKmvC,MAAMD,EAAO,GAAKA,EAAO,GAAIA,EAAO,GAAKA,EAAO,IACzDj5C,EAAI,EAAG4E,EAAIo9B,EAAO9hC,OAAS,EAAGF,EAAI4E,IAAK5E,EAAG,CACjD,IAAMyC,EAAIo2C,GAAO7W,EAAO,EAAIhiC,GAAIgiC,EAAO,EAAIhiC,EAAI,GAAIwT,GACnDwuB,EAAO,EAAIhiC,GAAKyC,EAAE,GAClBu/B,EAAO,EAAIhiC,EAAI,GAAKyC,EAAE,GAExBmB,KAAKm1C,YAAc,IAAIzI,GAAWtO,eAE3Bp+B,KAAK+mC,UAYd,IATA,IAAM+H,EAAY9uC,KAAK8uC,UAAY9uC,KAAKm1C,YAAYrG,UAC9CH,EAAO3uC,KAAK2uC,KAAO3uC,KAAKm1C,YAAYxG,KACpCE,EAAY7uC,KAAK6uC,UAAY7uC,KAAKm1C,YAAYtG,UAC9C0D,EAAUvyC,KAAKuyC,QAAQ/sC,MAAM,GAC7B+vC,EAAYv1C,KAAKo1C,WAAW5vC,MAAM,GAK/B5B,EAAI,EAAG5C,EAAI8tC,EAAUxyC,OAAQsH,EAAI5C,IAAK4C,EAAG,CAChD,IAAM/E,EAAIgwC,EAAUjrC,EAAI,IAAM,EAAIA,EAAI,EAAIA,EAAI,IACxB,IAAlBkrC,EAAUlrC,KAA6B,IAAhB2uC,EAAQ1zC,KAAW0zC,EAAQ1zC,GAAK+E,GAE7D,IAAK,IAAIxH,EAAI,EAAG4E,EAAI2tC,EAAKryC,OAAQF,EAAI4E,IAAK5E,EACxCm5C,EAAU5G,EAAKvyC,IAAMA,EAInBuyC,EAAKryC,QAAU,GAAKqyC,EAAKryC,OAAS,IACpC0D,KAAK6uC,UAAY,IAAI9B,WAAW,GAAGvnC,MAAM,GACzCxF,KAAK8uC,UAAY,IAAI/B,WAAW,GAAGvnC,MAAM,GACzCxF,KAAK6uC,UAAU,GAAKF,EAAK,GACzB4D,EAAQ5D,EAAK,IAAM,EACC,IAAhBA,EAAKryC,SACPi2C,EAAQ5D,EAAK,IAAM,EACnB3uC,KAAK6uC,UAAU,GAAKF,EAAK,GACzB3uC,KAAK6uC,UAAU,GAAKF,EAAK,O,qBAI/B,SAAQ0G,GACN,OAAO,IAAI5D,GAAQzxC,KAAMq1C,K,iCAE3B,WAAWj5C,GAAX,8FACSm2C,EAA8DvyC,KAA9DuyC,QAAS5D,EAAqD3uC,KAArD2uC,KAAMyG,EAA+Cp1C,KAA/Co1C,WAAYtG,EAAmC9uC,KAAnC8uC,UAAWD,EAAwB7uC,KAAxB6uC,YAAW9H,EAAa/mC,KAAb+mC,WAD1D,uBAKU7a,EAAI6a,EAAU5+B,QAAQ/L,IACpB,GANZ,gBAMe,OANf,SAMqB2qC,EAAU7a,EAAI,GANnC,YAOQA,EAAI6a,EAAUzqC,OAAS,GAP/B,gBAOkC,OAPlC,SAOwCyqC,EAAU7a,EAAI,GAPtD,6CAYc,KADN+Q,EAAKsV,EAAQn2C,IAXrB,mDAaMwH,EAAIq5B,EAAIgT,GAAM,EAbpB,QAeI,OAfJ,UAeUA,EAAKpB,EAAUjrC,GAfzB,WAiBQirC,EADJjrC,EAAIA,EAAI,IAAM,EAAIA,EAAI,EAAIA,EAAI,KACTxH,EAjBzB,uDAmBe,KADXwH,EAAIkrC,EAAUlrC,IAlBlB,qBAoBY/E,EAAI8vC,GAAMyG,EAAWh5C,GAAK,GAAKuyC,EAAKryC,WAChC2zC,EArBhB,iBAqBoB,OArBpB,UAqB0BpxC,EArB1B,6CAwBW+E,IAAMq5B,EAxBjB,kE,kBA0BA,SAAK76B,EAAGuE,GAAU,IAAPvK,EAAO,uDAAH,EACb,IAAKgG,GAAKA,KAASA,IAAOuE,GAAKA,KAASA,EAAI,OAAQ,EAGpD,IAFA,IACIyD,EADE+D,EAAK/R,GAEHgO,EAAIpK,KAAKszC,MAAMl3C,EAAGgG,EAAGuE,KAAO,GAAKyD,IAAMhO,GAAKgO,IAAM+D,GAAI/R,EAAIgO,EAClE,OAAOA,I,mBAET,SAAMhO,EAAGgG,EAAGuE,GACV,IAAO4rC,EAA2DvyC,KAA3DuyC,QAAS5D,EAAkD3uC,KAAlD2uC,KAAMyG,EAA4Cp1C,KAA5Co1C,WAAYtG,EAAgC9uC,KAAhC8uC,UAAWD,EAAqB7uC,KAArB6uC,UAAWzQ,EAAUp+B,KAAVo+B,OACxD,IAAoB,IAAhBmU,EAAQn2C,KAAcgiC,EAAO9hC,OAAQ,OAAQF,EAAI,IAAMgiC,EAAO9hC,QAAU,GAC5E,IAAI8N,EAAIhO,EACJo5C,EAAKzpC,GAAI3J,EAAIg8B,EAAW,EAAJhiC,GAAQ,GAAK2P,GAAIpF,EAAIy3B,EAAW,EAAJhiC,EAAQ,GAAI,GAC1D6gC,EAAKsV,EAAQn2C,GACfwH,EAAIq5B,EACR,EAAG,CACD,IAAIjvB,EAAI6gC,EAAUjrC,GACZ6xC,EAAK1pC,GAAI3J,EAAIg8B,EAAW,EAAJpwB,GAAQ,GAAKjC,GAAIpF,EAAIy3B,EAAW,EAAJpwB,EAAQ,GAAI,GAGlE,GAFIynC,EAAKD,IAAIA,EAAKC,EAAIrrC,EAAI4D,GAEtB6gC,EADJjrC,EAAIA,EAAI,IAAM,EAAIA,EAAI,EAAIA,EAAI,KACTxH,EAAG,MAExB,IAAW,KADXwH,EAAIkrC,EAAUlrC,IACA,CAEZ,IADAA,EAAI+qC,GAAMyG,EAAWh5C,GAAK,GAAKuyC,EAAKryC,WAC1B0R,GACJjC,GAAI3J,EAAIg8B,EAAW,EAAJx6B,GAAQ,GAAKmI,GAAIpF,EAAIy3B,EAAW,EAAJx6B,EAAQ,GAAI,GAAK4xC,EAAI,OAAO5xC,EAE7E,aAEKA,IAAMq5B,GACf,OAAO7yB,I,oBAET,SAAO4I,GAGL,IAFA,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAC/C49B,EAAgCp+B,KAAhCo+B,OAAQ0Q,EAAwB9uC,KAAxB8uC,UAAWD,EAAa7uC,KAAb6uC,UACjBzyC,EAAI,EAAG4E,EAAI8tC,EAAUxyC,OAAQF,EAAI4E,IAAK5E,EAAG,CAChD,IAAMmJ,EAAIupC,EAAU1yC,GACpB,KAAImJ,EAAInJ,GAAR,CACA,IAAMo2C,EAAoB,EAAf3D,EAAUzyC,GACfq2C,EAAoB,EAAf5D,EAAUtpC,GACrByN,EAAQmuB,OAAO/C,EAAOoU,GAAKpU,EAAOoU,EAAK,IACvCx/B,EAAQquB,OAAOjD,EAAOqU,GAAKrU,EAAOqU,EAAK,KAGzC,OADAzyC,KAAK01C,WAAW1iC,GACT6wB,GAAUA,EAAOrlC,U,0BAE1B,SAAawU,EAASpD,QACVpP,IAANoP,GAAqBoD,GAAqC,oBAAnBA,EAAQmuB,SAAwBvxB,EAAIoD,EAASA,EAAU,MAClGpD,OAASpP,GAALoP,EAAiB,GAAKA,EAG1B,IAFA,IAAMi0B,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAC/C49B,EAAUp+B,KAAVo+B,OACEhiC,EAAI,EAAG4E,EAAIo9B,EAAO9hC,OAAQF,EAAI4E,EAAG5E,GAAK,EAAG,CAChD,IAAMgG,EAAIg8B,EAAOhiC,GAAIuK,EAAIy3B,EAAOhiC,EAAI,GACpC4W,EAAQmuB,OAAO/+B,EAAIwN,EAAGjJ,GACtBqM,EAAQ2vB,IAAIvgC,EAAGuE,EAAGiJ,EAAG,EAAGiwB,IAE1B,OAAOgE,GAAUA,EAAOrlC,U,wBAE1B,SAAWwU,GACT,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAC/CmuC,EAAgB3uC,KAAhB2uC,KAAMvQ,EAAUp+B,KAAVo+B,OACPpR,EAAc,EAAV2hB,EAAK,GAAQ3tC,EAAI2tC,EAAKryC,OAChC0W,EAAQmuB,OAAO/C,EAAOpR,GAAIoR,EAAOpR,EAAI,IACrC,IAAK,IAAI5wB,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG,CAC1B,IAAM4wB,EAAI,EAAI2hB,EAAKvyC,GACnB4W,EAAQquB,OAAOjD,EAAOpR,GAAIoR,EAAOpR,EAAI,IAGvC,OADAha,EAAQouB,YACDyC,GAAUA,EAAOrlC,U,yBAE1B,WACE,IAAMwpC,EAAU,IAAIwJ,GAEpB,OADAxxC,KAAK01C,WAAW1N,GACTA,EAAQxpC,U,4BAEjB,SAAepC,EAAG4W,GAChB,IAAM6wB,EAAoB,MAAX7wB,EAAkBA,EAAU,IAAI8tB,QAAOtgC,EAC/C49B,EAAqBp+B,KAArBo+B,OAAQyQ,EAAa7uC,KAAb6uC,UACThc,EAAyB,EAApBgc,EAAUzyC,GAAK,GACpBmxB,EAAwB,EAAnBshB,EAAUzyC,EAAI,GACnBwxB,EAAwB,EAAnBihB,EAAUzyC,EAAI,GAKzB,OAJA4W,EAAQmuB,OAAO/C,EAAOvL,GAAKuL,EAAOvL,EAAK,IACvC7f,EAAQquB,OAAOjD,EAAO7Q,GAAK6Q,EAAO7Q,EAAK,IACvCva,EAAQquB,OAAOjD,EAAOxQ,GAAKwQ,EAAOxQ,EAAK,IACvC5a,EAAQouB,YACDyC,GAAUA,EAAOrlC,U,wCAE1B,wFACSqwC,EAAa7uC,KAAb6uC,UACEzyC,EAAI,EAAG4E,EAAI6tC,EAAUvyC,OAAS,EAFzC,YAE4CF,EAAI4E,GAFhD,gBAGI,OAHJ,SAGUhB,KAAK21C,gBAAgBv5C,GAH/B,SAEqDA,EAFrD,+D,6BAMA,SAAgBA,GACd,IAAM4rC,EAAU,IAAIwJ,GAEpB,OADAxxC,KAAK41C,eAAex5C,EAAG4rC,GAChBA,EAAQxpC,W,mBA/LjB,SAAY4/B,GAAwC,IAAhC2S,EAAgC,uDAA3BgE,GAAQ/D,EAAmB,uDAAdgE,GAAQn/B,EAAM,uCAClD,OAAO,IAAIq/B,EAAS,WAAY9W,EAC1ByX,GAAUzX,EAAQ2S,EAAIC,EAAIn7B,GAC1BhQ,aAAatE,KAAKuzC,GAAa1W,EAAQ2S,EAAIC,EAAIn7B,S,KAgMzD,SAASggC,GAAUzX,EAAQ2S,EAAIC,EAAIn7B,GAGjC,IAFA,IAAM7U,EAAIo9B,EAAO9hC,OACXyI,EAAQ,IAAIc,aAAiB,EAAJ7E,GACtB5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG,CAC1B,IAAMyC,EAAIu/B,EAAOhiC,GACjB2I,EAAU,EAAJ3I,GAAS20C,EAAGxxC,KAAKsW,EAAMhX,EAAGzC,EAAGgiC,GACnCr5B,EAAU,EAAJ3I,EAAQ,GAAK40C,EAAGzxC,KAAKsW,EAAMhX,EAAGzC,EAAGgiC,GAEzC,OAAOr5B,EAGT,SAAU+vC,GAAa1W,EAAQ2S,EAAIC,EAAIn7B,GAAvC,6EACMzZ,EAAI,EADV,IAEkBgiC,GAFlB,yDAGI,OADSv/B,EAFb,iBAGUkyC,EAAGxxC,KAAKsW,EAAMhX,EAAGzC,EAAGgiC,GAH9B,OAII,OAJJ,UAIU4S,EAAGzxC,KAAKsW,EAAMhX,EAAGzC,EAAGgiC,GAJ9B,UAKMhiC,EALN,sHAAA2F,IAAA,0EChPe,gBAAAK,GAAC,OAAI,kBAAMA,ICAX,SAAS0zC,GAAUvgC,EAAnB,GAQZ,IAPDgb,EAOC,EAPDA,YACAwlB,EAMC,EANDA,QACA55C,EAKC,EALDA,OACAkiC,EAIC,EAJDA,WACAlK,EAGC,EAHDA,OACA/xB,EAEC,EAFDA,EAAGuE,EAEF,EAFEA,EAAGq3B,EAEL,EAFKA,GAAIC,EAET,EAFSA,GACVhpB,EACC,EADDA,SAEAxZ,OAAOkB,iBAAiBqD,KAAM,CAC5BuV,KAAM,CAAC/W,MAAO+W,EAAMxZ,YAAY,EAAMqB,cAAc,GACpDmzB,YAAa,CAAC/xB,MAAO+xB,EAAax0B,YAAY,EAAMqB,cAAc,GAClE24C,QAAS,CAACv3C,MAAOu3C,EAASh6C,YAAY,EAAMqB,cAAc,GAC1DjB,OAAQ,CAACqC,MAAOrC,EAAQJ,YAAY,EAAMqB,cAAc,GACxDihC,WAAY,CAAC7/B,MAAO6/B,EAAYtiC,YAAY,EAAMqB,cAAc,GAChE+2B,OAAQ,CAAC31B,MAAO21B,EAAQp4B,YAAY,EAAMqB,cAAc,GACxDgF,EAAG,CAAC5D,MAAO4D,EAAGrG,YAAY,EAAMqB,cAAc,GAC9CuJ,EAAG,CAACnI,MAAOmI,EAAG5K,YAAY,EAAMqB,cAAc,GAC9C4gC,GAAI,CAACx/B,MAAOw/B,EAAIjiC,YAAY,EAAMqB,cAAc,GAChD6gC,GAAI,CAACz/B,MAAOy/B,EAAIliC,YAAY,EAAMqB,cAAc,GAChDmQ,EAAG,CAAC/O,MAAOyW,KCZf,SAAS4lB,GAAc9d,GACrB,OAAQA,EAAM+d,UAAY/d,EAAMge,OAGlC,SAASib,KACP,OAAOh2C,KAAKwU,WAGd,SAASyhC,GAAel5B,EAAOva,GAC7B,OAAY,MAALA,EAAY,CAACJ,EAAG2a,EAAM3a,EAAGuE,EAAGoW,EAAMpW,GAAKnE,EAGhD,SAAS64B,KACP,OAAOC,UAAUC,gBAAmB,iBAAkBv7B,KDGxD81C,GAAUr4C,UAAUiY,GAAK,WACvB,IAAIlX,EAAQwB,KAAKuN,EAAEmI,GAAGzZ,MAAM+D,KAAKuN,EAAGlR,WACpC,OAAOmC,IAAUwB,KAAKuN,EAAIvN,KAAOxB,GCFpB,kBACb,IAOI03C,EACAC,EACAC,EACAta,EAVAlgC,EAASi/B,GACTwb,EAAYL,GACZD,EAAUE,GACVla,EAAYV,GACZib,EAAW,GACXta,EAAY/mB,GAAS,QAAS,OAAQ,OACtCkf,EAAS,EAKToiB,EAAiB,EAErB,SAASC,EAAKjjC,GACZA,EACKmC,GAAG,iBAAkB+gC,GACvB76C,OAAOmgC,GACLrmB,GAAG,kBAAmBghC,GACtBhhC,GAAG,iBAAkB4mB,EAAY7b,IACjC/K,GAAG,iCAAkC6mB,GACrCnjB,MAAM,eAAgB,QACtBA,MAAM,8BAA+B,iBAG5C,SAASq9B,EAAY15B,EAAOva,GAC1B,IAAIs5B,GAAgBlgC,EAAO2D,KAAKS,KAAM+c,EAAOva,GAA7C,CACA,IAAIm0C,EAAUnY,EAAYx+B,KAAMq2C,EAAU92C,KAAKS,KAAM+c,EAAOva,GAAIua,EAAOva,EAAG,SACrEm0C,IACLxiC,GAAO4I,EAAMiE,MACVtL,GAAG,iBAAkBkhC,EAAYj2B,IACjCjL,GAAG,eAAgBmhC,EAAYl2B,IAClCm2B,GAAO/5B,EAAMiE,MACbH,GAAc9D,GACdq5B,GAAc,EACdF,EAAan5B,EAAM6T,QACnBulB,EAAap5B,EAAM8T,QACnB8lB,EAAQ,QAAS55B,KAGnB,SAAS65B,EAAW75B,GAElB,GADAkE,GAAQlE,IACHq5B,EAAa,CAChB,IAAIpY,EAAKjhB,EAAM6T,QAAUslB,EAAYjY,EAAKlhB,EAAM8T,QAAUslB,EAC1DC,EAAcpY,EAAKA,EAAKC,EAAKA,EAAKsY,EAEpCD,EAASS,MAAM,OAAQh6B,GAGzB,SAAS85B,EAAW95B,GAClB5I,GAAO4I,EAAMiE,MAAMtL,GAAG,8BAA+B,MACrD0L,GAAQrE,EAAMiE,KAAMo1B,GACpBn1B,GAAQlE,GACRu5B,EAASS,MAAM,MAAOh6B,GAGxB,SAAS25B,EAAa35B,EAAOva,GAC3B,GAAK5G,EAAO2D,KAAKS,KAAM+c,EAAOva,GAA9B,CACA,IAEwBpG,EAAGu6C,EAFvB/Z,EAAU7f,EAAMiiB,eAChB50B,EAAIisC,EAAU92C,KAAKS,KAAM+c,EAAOva,GAChCxB,EAAI47B,EAAQtgC,OAEhB,IAAKF,EAAI,EAAGA,EAAI4E,IAAK5E,GACfu6C,EAAUnY,EAAYx+B,KAAMoK,EAAG2S,EAAOva,EAAGo6B,EAAQxgC,GAAGiiC,WAAYzB,EAAQxgC,OAC1EykB,GAAc9D,GACd45B,EAAQ,QAAS55B,EAAO6f,EAAQxgC,MAKtC,SAASkgC,EAAWvf,GAClB,IACwB3gB,EAAGu6C,EADvB/Z,EAAU7f,EAAMiiB,eAChBh+B,EAAI47B,EAAQtgC,OAEhB,IAAKF,EAAI,EAAGA,EAAI4E,IAAK5E,GACfu6C,EAAUL,EAAS1Z,EAAQxgC,GAAGiiC,eAChCpd,GAAQlE,GACR45B,EAAQ,OAAQ55B,EAAO6f,EAAQxgC,KAKrC,SAASmgC,EAAWxf,GAClB,IACwB3gB,EAAGu6C,EADvB/Z,EAAU7f,EAAMiiB,eAChBh+B,EAAI47B,EAAQtgC,OAIhB,IAFIw/B,GAAa5I,aAAa4I,GAC9BA,EAAcxa,YAAW,WAAawa,EAAc,OAAS,KACxD1/B,EAAI,EAAGA,EAAI4E,IAAK5E,GACfu6C,EAAUL,EAAS1Z,EAAQxgC,GAAGiiC,eAChCxd,GAAc9D,GACd45B,EAAQ,MAAO55B,EAAO6f,EAAQxgC,KAKpC,SAASoiC,EAAY3oB,EAAMwgC,EAAWt5B,EAAOva,EAAG67B,EAAY2Y,GAC1D,IAC4ChZ,EAAIC,EAC5Cx8B,EAFAwT,EAAW+mB,EAAU1oB,OACrBzU,EAAIy/B,GAAQ0Y,GAASj6B,EAAOs5B,GAGhC,GAUa,OAVR50C,EAAIs0C,EAAQx2C,KAAKsW,EAAM,IAAIigC,GAAU,cAAe,CACrDvlB,YAAaxT,EACb5gB,OAAQq6C,EACRnY,aACAlK,SACA/xB,EAAGvD,EAAE,GACL8H,EAAG9H,EAAE,GACLm/B,GAAI,EACJC,GAAI,EACJhpB,aACEzS,IAKN,OAHAw7B,EAAKv8B,EAAEW,EAAIvD,EAAE,IAAM,EACnBo/B,EAAKx8B,EAAEkF,EAAI9H,EAAE,IAAM,EAEZ,SAAS83C,EAAQphC,EAAMwH,EAAOi6B,GACnC,IAAYh2C,EAARivC,EAAKpxC,EACT,OAAQ0W,GACN,IAAK,QAAS+gC,EAASjY,GAAcsY,EAAS31C,EAAImzB,IAAU,MAC5D,IAAK,aAAcmiB,EAASjY,KAAelK,EAC3C,IAAK,OAAQt1B,EAAIy/B,GAAQ0Y,GAASj6B,EAAOs5B,GAAYr1C,EAAImzB,EAE3Dlf,EAAS1V,KACPgW,EACAM,EACA,IAAIigC,GAAUvgC,EAAM,CAClBgb,YAAaxT,EACbg5B,QAASt0C,EACTtF,OAAQq6C,EACRnY,aACAlK,OAAQnzB,EACRoB,EAAGvD,EAAE,GAAKm/B,EACVr3B,EAAG9H,EAAE,GAAKo/B,EACVD,GAAIn/B,EAAE,GAAKoxC,EAAG,GACdhS,GAAIp/B,EAAE,GAAKoxC,EAAG,GACdh7B,aAEFzS,IA8BN,OAzBAg0C,EAAK56C,OAAS,SAAS2R,GACrB,OAAOlR,UAAUC,QAAUV,EAAsB,oBAAN2R,EAAmBA,EAAI1C,KAAW0C,GAAIipC,GAAQ56C,GAG3F46C,EAAKH,UAAY,SAAS9oC,GACxB,OAAOlR,UAAUC,QAAU+5C,EAAyB,oBAAN9oC,EAAmBA,EAAI1C,GAAS0C,GAAIipC,GAAQH,GAG5FG,EAAKT,QAAU,SAASxoC,GACtB,OAAOlR,UAAUC,QAAUy5C,EAAuB,oBAANxoC,EAAmBA,EAAI1C,GAAS0C,GAAIipC,GAAQT,GAG1FS,EAAKza,UAAY,SAASxuB,GACxB,OAAOlR,UAAUC,QAAUy/B,EAAyB,oBAANxuB,EAAmBA,EAAI1C,KAAW0C,GAAIipC,GAAQza,GAG9Fya,EAAK9gC,GAAK,WACR,IAAIlX,EAAQw9B,EAAUtmB,GAAGzZ,MAAM+/B,EAAW3/B,WAC1C,OAAOmC,IAAUw9B,EAAYwa,EAAOh4C,GAGtCg4C,EAAKS,cAAgB,SAAS1pC,GAC5B,OAAOlR,UAAUC,QAAUi6C,GAAkBhpC,GAAKA,GAAKA,EAAGipC,GAAQrwC,KAAKC,KAAKmwC,IAGvEC,GChMLU,GAAM,GACNC,GAAM,GAKV,SAASC,GAAgBC,GACvB,OAAO,IAAIvvC,SAAS,IAAK,WAAauvC,EAAQt2C,KAAI,SAASqC,EAAMhH,GAC/D,OAAOk7C,KAAKC,UAAUn0C,GAAQ,OAAShH,EAAI,aAC1C6E,KAAK,KAAO,KAWjB,SAASu2C,GAAaC,GACpB,IAAIC,EAAYj8C,OAAOwD,OAAO,MAC1Bo4C,EAAU,GAUd,OARAI,EAAKj7C,SAAQ,SAASoU,GACpB,IAAK,IAAI+mC,KAAU/mC,EACX+mC,KAAUD,GACdL,EAAQr7C,KAAK07C,EAAUC,GAAUA,MAKhCN,EAGT,SAASO,GAAIp5C,EAAO28B,GAClB,IAAI15B,EAAIjD,EAAQ,GAAIlC,EAASmF,EAAEnF,OAC/B,OAAOA,EAAS6+B,EAAQ,IAAIp4B,MAAMo4B,EAAQ7+B,EAAS,GAAG2E,KAAK,GAAKQ,EAAIA,EAStE,SAASo2C,GAAWvnB,GAClB,IAPkBwnB,EAOdC,EAAQznB,EAAK0nB,cACbC,EAAU3nB,EAAK4nB,gBACfC,EAAU7nB,EAAK8nB,gBACfC,EAAe/nB,EAAKgoB,qBACxB,OAAOvrB,MAAMuD,GAAQ,iBAXHwnB,EAYDxnB,EAAKioB,kBAXR,EAAI,IAAMX,IAAKE,EAAM,GAC/BA,EAAO,KAAO,IAAMF,GAAIE,EAAM,GAC9BF,GAAIE,EAAM,IAS+B,IAAMF,GAAItnB,EAAKkoB,cAAgB,EAAG,GAAK,IAAMZ,GAAItnB,EAAKmoB,aAAc,IAC1GJ,EAAe,IAAMT,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IAAML,GAAIO,EAAS,GAAK,IAAMP,GAAIS,EAAc,GAAK,IACnHF,EAAU,IAAMP,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IAAML,GAAIO,EAAS,GAAK,IAChFF,GAAWF,EAAQ,IAAMH,GAAIG,EAAO,GAAK,IAAMH,GAAIK,EAAS,GAAK,IACjE,IAGO,gBAASS,GACtB,IAAIC,EAAW,IAAI12B,OAAO,KAAQy2B,EAAY,SAC1CE,EAAYF,EAAUG,WAAW,GAWrC,SAASC,EAAU1kC,EAAMrS,GACvB,IAIIiM,EAJAypC,EAAO,GACP5Z,EAAIzpB,EAAK9X,OACTy8C,EAAI,EACJ/3C,EAAI,EAEJg4C,EAAMnb,GAAK,EACXob,GAAM,EAMV,SAASC,IACP,GAAIF,EAAK,OAAO7B,GAChB,GAAI8B,EAAK,OAAOA,GAAM,EAAO/B,GAG7B,IAAI96C,EAAUgO,EAAP7E,EAAIwzC,EACX,GAzFM,KAyFF3kC,EAAKykC,WAAWtzC,GAAc,CAChC,KAAOwzC,IAAMlb,GA1FT,KA0FczpB,EAAKykC,WAAWE,IA1F9B,KA0F8C3kC,EAAKykC,aAAaE,KAIpE,OAHK38C,EAAI28C,IAAMlb,EAAGmb,GAAM,EA1FlB,MA2FI5uC,EAAIgK,EAAKykC,WAAWE,MAAmBE,GAAM,EA1FlD,KA2FI7uC,IAAgB6uC,GAAM,EA5FzB,KA4FmC7kC,EAAKykC,WAAWE,MAAkBA,GACpE3kC,EAAKjR,MAAMoC,EAAI,EAAGnJ,EAAI,GAAG+8C,QAAQ,MAAO,KAIjD,KAAOJ,EAAIlb,GAAG,CACZ,GAlGM,MAkGDzzB,EAAIgK,EAAKykC,WAAWz8C,EAAI28C,MAAmBE,GAAM,OACjD,GAlGA,KAkGI7uC,EAAgB6uC,GAAM,EAnGzB,KAmGmC7kC,EAAKykC,WAAWE,MAAkBA,OACtE,GAAI3uC,IAAMwuC,EAAW,SAC1B,OAAOxkC,EAAKjR,MAAMoC,EAAGnJ,GAIvB,OAAO48C,GAAM,EAAM5kC,EAAKjR,MAAMoC,EAAGs4B,GAGnC,IA5GU,KA+ENzpB,EAAKykC,WAAWhb,EAAI,MAAkBA,EA9EjC,KA+ELzpB,EAAKykC,WAAWhb,EAAI,MAAiBA,GA4BjC7vB,EAAIkrC,OAAa/B,IAAK,CAE5B,IADA,IAAIvmC,EAAM,GACH5C,IAAMkpC,IAAOlpC,IAAMmpC,IAAKvmC,EAAI5U,KAAKgS,GAAIA,EAAIkrC,IAC5Cn3C,GAA4B,OAAtB6O,EAAM7O,EAAE6O,EAAK5P,OACvBy2C,EAAKz7C,KAAK4U,GAGZ,OAAO6mC,EAGT,SAAS2B,EAAc3B,EAAMJ,GAC3B,OAAOI,EAAK12C,KAAI,SAAS6P,GACvB,OAAOymC,EAAQt2C,KAAI,SAAS42C,GAC1B,OAAO0B,EAAYzoC,EAAI+mC,OACtB12C,KAAKy3C,MAkBZ,SAASY,EAAU1oC,GACjB,OAAOA,EAAI7P,IAAIs4C,GAAap4C,KAAKy3C,GAGnC,SAASW,EAAY76C,GACnB,OAAgB,MAATA,EAAgB,GACjBA,aAAiBgxB,KAAOqoB,GAAWr5C,GACnCm6C,EAASt1C,KAAK7E,GAAS,IAAM,IAAOA,EAAM26C,QAAQ,KAAM,MAAU,IAClE36C,EAGR,MAAO,CACLq2B,MA5FF,SAAezgB,EAAMrS,GACnB,IAAIw3C,EAASlC,EAASI,EAAOqB,EAAU1kC,GAAM,SAASxD,EAAKxU,GACzD,GAAIm9C,EAAS,OAAOA,EAAQ3oC,EAAKxU,EAAI,GACrCi7C,EAAUzmC,EAAK2oC,EAAUx3C,EAtD/B,SAAyBs1C,EAASt1C,GAChC,IAAIzG,EAAS87C,GAAgBC,GAC7B,OAAO,SAASzmC,EAAKxU,GACnB,OAAO2F,EAAEzG,EAAOsV,GAAMxU,EAAGi7C,IAmDMmC,CAAgB5oC,EAAK7O,GAAKq1C,GAAgBxmC,MAGzE,OADA6mC,EAAKJ,QAAUA,GAAW,GACnBI,GAuFPqB,UAAWA,EACX7lC,OA5BF,SAAgBwkC,EAAMJ,GAEpB,OADe,MAAXA,IAAiBA,EAAUG,GAAaC,IACrC,CAACJ,EAAQt2C,IAAIs4C,GAAap4C,KAAKy3C,IAAYjjC,OAAO2jC,EAAc3B,EAAMJ,IAAUp2C,KAAK,OA2B5Fw4C,WAxBF,SAAoBhC,EAAMJ,GAExB,OADe,MAAXA,IAAiBA,EAAUG,GAAaC,IACrC2B,EAAc3B,EAAMJ,GAASp2C,KAAK,OAuBzCy4C,WApBF,SAAoBjC,GAClB,OAAOA,EAAK12C,IAAIu4C,GAAWr4C,KAAK,OAoBhCq4C,UAAWA,EACXD,YAAaA,IC/JbM,GAAMC,GAAI,KAEHC,GAAWF,GAAI9kB,MACfilB,GAAeH,GAAIb,UACnBiB,GAAYJ,GAAI1mC,OAChB+mC,GAAgBL,GAAIF,WACpBQ,GAAgBN,GAAID,WACpBQ,GAAeP,GAAIL,UACnBa,GAAiBR,GAAIN,YCR5Be,GAAMR,GAAI,MAEHS,GAAWD,GAAIvlB,MACfylB,GAAeF,GAAItB,UACnByB,GAAYH,GAAInnC,OAChBunC,GAAgBJ,GAAIX,WACpBgB,GAAgBL,GAAIV,WACpBgB,GAAeN,GAAId,UACnBqB,GAAiBP,GAAIf,YCVjB,SAASuB,GAASt/C,GAC/B,IAAK,IAAImB,KAAOnB,EAAQ,CACtB,IAAgC8I,EAAQ+I,EAApC3O,EAAQlD,EAAOmB,GAAK6Y,OACxB,GAAK9W,EACA,GAAc,SAAVA,EAAkBA,GAAQ,OAC9B,GAAc,UAAVA,EAAmBA,GAAQ,OAC/B,GAAc,QAAVA,EAAiBA,EAAQqD,SAC7B,GAAKkrB,MAAM3oB,GAAU5F,GACrB,MAAI2O,EAAI3O,EAAM+f,MAAM,gGAIpB,SAHCs8B,IAAW1tC,EAAE,KAAOA,EAAE,KAAI3O,EAAQA,EAAM26C,QAAQ,KAAM,KAAKA,QAAQ,IAAK,MAC5E36C,EAAQ,IAAIgxB,KAAKhxB,QAHeA,EAAQ4F,OAJ9B5F,EAAQ,KAUpBlD,EAAOmB,GAAO+B,EAEhB,OAAOlD,EAIT,IAAMu/C,GAAQ,IAAIrrB,KAAK,oBAAoBsrB,YAAc,IAAItrB,KAAK,oBAAoBsrB,WCnBzE5sB,GAAS,SAAAlgB,GAAC,OAAKA,GCArB,SAAS+sC,GAAO/sC,GACrB,OAAOA,EAAIA,EAGN,SAASgtC,GAAQhtC,GACtB,OAAOA,GAAK,EAAIA,GAGX,SAASitC,GAAUjtC,GACxB,QAASA,GAAK,IAAM,EAAIA,EAAIA,IAAMA,GAAK,EAAIA,GAAK,GAAK,ECTvD,IAEWktC,GAAU,SAASC,EAAOv3C,GAGnC,SAASs3C,EAAOltC,GACd,OAAO7H,KAAK4F,IAAIiC,EAAGpK,GAKrB,OARAA,GAAKA,EAMLs3C,EAAOE,SAAWD,EAEXD,EATY,CAFN,GAcJG,GAAW,SAASF,EAAOv3C,GAGpC,SAASy3C,EAAQrtC,GACf,OAAO,EAAI7H,KAAK4F,IAAI,EAAIiC,EAAGpK,GAK7B,OARAA,GAAKA,EAMLy3C,EAAQD,SAAWD,EAEZE,EATa,CAdP,GA0BJC,GAAa,SAASH,EAAOv3C,GAGtC,SAAS03C,EAAUttC,GACjB,QAASA,GAAK,IAAM,EAAI7H,KAAK4F,IAAIiC,EAAGpK,GAAK,EAAIuC,KAAK4F,IAAI,EAAIiC,EAAGpK,IAAM,EAKrE,OARAA,GAAKA,EAML03C,EAAUF,SAAWD,EAEdG,EATe,CA1BT,GCAX3b,GAAKx5B,KAAKkuB,GACVuL,GAASD,GAAK,EAEX,SAAS4b,GAAMvtC,GACpB,OAAe,KAANA,EAAW,EAAI,EAAI7H,KAAKs5B,IAAIzxB,EAAI4xB,IAGpC,SAAS4b,GAAOxtC,GACrB,OAAO7H,KAAKu5B,IAAI1xB,EAAI4xB,IAGf,SAAS6b,GAASztC,GACvB,OAAQ,EAAI7H,KAAKs5B,IAAIE,GAAK3xB,IAAM,ECX3B,SAAS0tC,GAAKt5C,GACnB,OAA+C,oBAAvC+D,KAAK4F,IAAI,GAAI,GAAK3J,GAAK,aCA1B,SAASu5C,GAAM3tC,GACpB,OAAO0tC,GAAK,GAAK1tC,GAGZ,SAAS4tC,GAAO5tC,GACrB,OAAO,EAAI0tC,GAAK1tC,GAGX,SAAS6tC,GAAS7tC,GACvB,QAASA,GAAK,IAAM,EAAI0tC,GAAK,EAAI1tC,GAAK,EAAI0tC,GAAK1tC,EAAI,IAAM,ECXpD,SAAS8tC,GAAS9tC,GACvB,OAAO,EAAI7H,KAAKC,KAAK,EAAI4H,EAAIA,GAGxB,SAAS+tC,GAAU/tC,GACxB,OAAO7H,KAAKC,KAAK,KAAM4H,EAAIA,GAGtB,SAASguC,GAAYhuC,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAI7H,KAAKC,KAAK,EAAI4H,EAAIA,GAAK7H,KAAKC,KAAK,GAAK4H,GAAK,GAAKA,GAAK,GAAK,ECTxF,IAAIiuC,GAAK,EAAI,GASTlM,GAAK,OAEF,SAASmM,GAASluC,GACvB,OAAO,EAAImuC,GAAU,EAAInuC,GAGpB,SAASmuC,GAAUnuC,GACxB,OAAQA,GAAKA,GAAKiuC,GAAKlM,GAAK/hC,EAAIA,EAAIA,EAd7B,kBAcsC+hC,IAAM/hC,GAf5C,mBAeuDA,EAbvD,IAagEA,EAXhE,kBAWyE+hC,IAAM/hC,GAZ/E,mBAY0FA,EAV1F,MAUmG+hC,IAAM/hC,GATzG,mBASoHA,EARpH,QAWF,SAASouC,GAAYpuC,GAC1B,QAASA,GAAK,IAAM,EAAI,EAAImuC,GAAU,EAAInuC,GAAKmuC,GAAUnuC,EAAI,GAAK,GAAK,ECpBzE,IAAIquC,GAAY,QAELC,GAAU,SAASnB,EAAO15C,GAGnC,SAAS66C,EAAOtuC,GACd,OAAQA,GAAKA,GAAKA,GAAKvM,GAAKuM,EAAI,GAAKA,GAKvC,OARAvM,GAAKA,EAML66C,EAAOD,UAAYlB,EAEZmB,EATY,CAUlBD,IAEQE,GAAW,SAASpB,EAAO15C,GAGpC,SAAS86C,EAAQvuC,GACf,QAASA,EAAIA,IAAMA,EAAI,GAAKvM,EAAIuM,GAAK,EAKvC,OARAvM,GAAKA,EAML86C,EAAQF,UAAYlB,EAEboB,EATa,CAUnBF,IAEQG,GAAa,SAASrB,EAAO15C,GAGtC,SAAS+6C,EAAUxuC,GACjB,QAASA,GAAK,GAAK,EAAIA,EAAIA,IAAMvM,EAAI,GAAKuM,EAAIvM,IAAMuM,GAAK,GAAKA,IAAMvM,EAAI,GAAKuM,EAAIvM,GAAK,GAAK,EAK7F,OARAA,GAAKA,EAML+6C,EAAUH,UAAYlB,EAEfqB,EATe,CAUrBH,IClCCxc,GAAM,EAAI15B,KAAKkuB,GAIRooB,GAAa,SAAStB,EAAOx5C,EAAG9C,GACzC,IAAI4C,EAAI0E,KAAKu2C,KAAK,GAAK/6C,EAAIwE,KAAKI,IAAI,EAAG5E,MAAQ9C,GAAKghC,IAEpD,SAAS4c,EAAUzuC,GACjB,OAAOrM,EAAI+5C,OAAS1tC,GAAM7H,KAAKu5B,KAAKj+B,EAAIuM,GAAKnP,GAM/C,OAHA49C,EAAUE,UAAY,SAASh7C,GAAK,OAAOw5C,EAAOx5C,EAAG9C,EAAIghC,KACzD4c,EAAUG,OAAS,SAAS/9C,GAAK,OAAOs8C,EAAOx5C,EAAG9C,IAE3C49C,EAVe,CAHR,EACH,IAeFI,GAAc,SAAS1B,EAAOx5C,EAAG9C,GAC1C,IAAI4C,EAAI0E,KAAKu2C,KAAK,GAAK/6C,EAAIwE,KAAKI,IAAI,EAAG5E,MAAQ9C,GAAKghC,IAEpD,SAASgd,EAAW7uC,GAClB,OAAO,EAAIrM,EAAI+5C,GAAK1tC,GAAKA,GAAK7H,KAAKu5B,KAAK1xB,EAAIvM,GAAK5C,GAMnD,OAHAg+C,EAAWF,UAAY,SAASh7C,GAAK,OAAOw5C,EAAOx5C,EAAG9C,EAAIghC,KAC1Dgd,EAAWD,OAAS,SAAS/9C,GAAK,OAAOs8C,EAAOx5C,EAAG9C,IAE5Cg+C,EAVgB,CAhBT,EACH,IA4BFC,GAAgB,SAAS3B,EAAOx5C,EAAG9C,GAC5C,IAAI4C,EAAI0E,KAAKu2C,KAAK,GAAK/6C,EAAIwE,KAAKI,IAAI,EAAG5E,MAAQ9C,GAAKghC,IAEpD,SAASid,EAAa9uC,GACpB,QAASA,EAAQ,EAAJA,EAAQ,GAAK,EACpBrM,EAAI+5C,IAAM1tC,GAAK7H,KAAKu5B,KAAKj+B,EAAIuM,GAAKnP,GAClC,EAAI8C,EAAI+5C,GAAK1tC,GAAK7H,KAAKu5B,KAAKj+B,EAAIuM,GAAKnP,IAAM,EAMnD,OAHAi+C,EAAaH,UAAY,SAASh7C,GAAK,OAAOw5C,EAAOx5C,EAAG9C,EAAIghC,KAC5Did,EAAaF,OAAS,SAAS/9C,GAAK,OAAOs8C,EAAOx5C,EAAG9C,IAE9Ci+C,EAZkB,CA7BX,EACH,ICJb,SAASC,GAAaC,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAIh/C,MAAM++C,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAASI,OAGH,gBAASvjB,EAAO5F,GAC7B,OAAOopB,MAAMxjB,EAAO5F,GAAMqpB,KAAKP,KCNjC,SAASQ,GAAoBP,GAC3B,IAAKA,EAASC,GAAI,MAAM,IAAIh/C,MAAM++C,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAASQ,cAGH,gBAAS3jB,EAAO5F,GAC7B,OAAOopB,MAAMxjB,EAAO5F,GAAMqpB,KAAKC,KCNjC,SAASE,GAAaT,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAIh/C,MAAM++C,EAASE,OAAS,IAAMF,EAASG,YACnE,OAAOH,EAAS5oC,OAGH,gBAASylB,EAAO5F,GAC7B,OAAOopB,MAAMxjB,EAAO5F,GAAMqpB,KAAKG,KCHjC,SAASC,GAAS7oB,GAChB,OAAO,SAASgF,EAAO5F,EAAMrjB,GAE3B,OADyB,IAArBvU,UAAUC,QAAgC,oBAAT23B,IAAqBrjB,EAAMqjB,EAAMA,OAAOzzB,GACtE4T,GAAKylB,EAAO5F,GAAMqpB,MAAK,SAASN,GACrC,OAAOnoB,EAAMmoB,EAAUpsC,OAKd,SAASgpC,GAAIlB,EAAW7e,EAAO5F,EAAMrjB,GACzB,IAArBvU,UAAUC,QAAgC,oBAAT23B,IAAqBrjB,EAAMqjB,EAAMA,OAAOzzB,GAC7E,IAAIyS,EAAS0qC,GAAUjF,GACvB,OAAOtkC,GAAKylB,EAAO5F,GAAMqpB,MAAK,SAASN,GACrC,OAAO/pC,EAAO4hB,MAAMmoB,EAAUpsC,MAI3B,IAAI+oC,GAAM+D,GAAS7D,IACfO,GAAMsD,GAASrD,ICrBX,YAASxgB,EAAO5F,GAC7B,OAAO,IAAI4E,SAAQ,SAASC,EAASC,GACnC,IAAI6kB,EAAQ,IAAIC,MAChB,IAAK,IAAIphD,KAAOw3B,EAAM2pB,EAAMnhD,GAAOw3B,EAAKx3B,GACxCmhD,EAAME,QAAU/kB,EAChB6kB,EAAMG,OAAS,WAAajlB,EAAQ8kB,IACpCA,EAAMI,IAAMnkB,MCNhB,SAASokB,GAAajB,GACpB,IAAKA,EAASC,GAAI,MAAM,IAAIh/C,MAAM++C,EAASE,OAAS,IAAMF,EAASG,YACnE,GAAwB,MAApBH,EAASE,QAAsC,MAApBF,EAASE,OACxC,OAAOF,EAASkB,OAGH,gBAASrkB,EAAO5F,GAC7B,OAAOopB,MAAMxjB,EAAO5F,GAAMqpB,KAAKW,KCLjC,SAASE,GAAO5oC,GACd,OAAO,SAACskB,EAAO5F,GAAR,OAAiB7f,GAAKylB,EAAO5F,GACjCqpB,MAAK,SAAAlpC,GAAI,OAAK,IAAIgqC,WAAWC,gBAAgBjqC,EAAMmB,OAGzC4oC,UAAO,mBAEX/9B,GAAO+9B,GAAO,aAEdrmC,GAAMqmC,GAAO,iBCXT,YAAS/7C,EAAGuE,GACzB,IAAIqZ,EAAOs+B,EAAW,EAKtB,SAASC,IACP,IAAIniD,EAEAga,EADApV,EAAIgf,EAAM1jB,OAEVkiD,EAAK,EACLC,EAAK,EAET,IAAKriD,EAAI,EAAGA,EAAI4E,IAAK5E,EACFoiD,IAAjBpoC,EAAO4J,EAAM5jB,IAAegG,EAAGq8C,GAAMroC,EAAKzP,EAG5C,IAAK63C,GAAMA,EAAKx9C,EAAIoB,GAAKk8C,EAAUG,GAAMA,EAAKz9C,EAAI2F,GAAK23C,EAAUliD,EAAI,EAAGA,EAAI4E,IAAK5E,GAC/Ega,EAAO4J,EAAM5jB,IAASgG,GAAKo8C,EAAIpoC,EAAKzP,GAAK83C,EAoB7C,OAnCS,MAALr8C,IAAWA,EAAI,GACV,MAALuE,IAAWA,EAAI,GAkBnB43C,EAAMriB,WAAa,SAAS3uB,GAC1ByS,EAAQzS,GAGVgxC,EAAMn8C,EAAI,SAASmL,GACjB,OAAOlR,UAAUC,QAAU8F,GAAKmL,EAAGgxC,GAASn8C,GAG9Cm8C,EAAM53C,EAAI,SAAS4G,GACjB,OAAOlR,UAAUC,QAAUqK,GAAK4G,EAAGgxC,GAAS53C,GAG9C43C,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,GAAY/wC,EAAGgxC,GAASD,GAG9CC,GChCT,SAASx3C,GAAI23C,EAAMt8C,EAAGuE,EAAGnE,GACvB,GAAIuqB,MAAM3qB,IAAM2qB,MAAMpmB,GAAI,OAAO+3C,EAEjC,IAAI/nC,EAOAgoC,EACAC,EACAlP,EACAC,EACAjtC,EACAm8C,EACAziD,EACAmJ,EAbA6Q,EAAOsoC,EAAKI,MACZC,EAAO,CAAClyC,KAAMrK,GACduK,EAAK2xC,EAAK3d,IACVa,EAAK8c,EAAK1d,IACVh0B,EAAK0xC,EAAKzd,IACVM,EAAKmd,EAAKxd,IAWd,IAAK9qB,EAAM,OAAOsoC,EAAKI,MAAQC,EAAML,EAGrC,KAAOtoC,EAAK9Z,QAGV,IAFIoG,EAAQN,IAAMu8C,GAAM5xC,EAAKC,GAAM,IAAID,EAAK4xC,EAAS3xC,EAAK2xC,GACtDE,EAASl4C,IAAMi4C,GAAMhd,EAAKL,GAAM,IAAIK,EAAKgd,EAASrd,EAAKqd,EACvDjoC,EAASP,IAAQA,EAAOA,EAAKha,EAAIyiD,GAAU,EAAIn8C,IAAS,OAAOiU,EAAOva,GAAK2iD,EAAML,EAMvF,GAFAhP,GAAMgP,EAAKM,GAAGz/C,KAAK,KAAM6W,EAAKvJ,MAC9B8iC,GAAM+O,EAAKO,GAAG1/C,KAAK,KAAM6W,EAAKvJ,MAC1BzK,IAAMstC,GAAM/oC,IAAMgpC,EAAI,OAAOoP,EAAK96C,KAAOmS,EAAMO,EAASA,EAAOva,GAAK2iD,EAAOL,EAAKI,MAAQC,EAAML,EAGlG,GACE/nC,EAASA,EAASA,EAAOva,GAAK,IAAI2G,MAAM,GAAK27C,EAAKI,MAAQ,IAAI/7C,MAAM,IAChEL,EAAQN,IAAMu8C,GAAM5xC,EAAKC,GAAM,IAAID,EAAK4xC,EAAS3xC,EAAK2xC,GACtDE,EAASl4C,IAAMi4C,GAAMhd,EAAKL,GAAM,IAAIK,EAAKgd,EAASrd,EAAKqd,SACnDxiD,EAAIyiD,GAAU,EAAIn8C,MAAY6C,GAAKoqC,GAAMiP,IAAO,EAAKlP,GAAMiP,IACrE,OAAOhoC,EAAOpR,GAAK6Q,EAAMO,EAAOva,GAAK2iD,EAAML,EC9C9B,ICAA,YAAStoC,EAAMrJ,EAAI60B,EAAI50B,EAAIu0B,GACxCvhC,KAAKoW,KAAOA,EACZpW,KAAK+M,GAAKA,EACV/M,KAAK4hC,GAAKA,EACV5hC,KAAKgN,GAAKA,EACVhN,KAAKuhC,GAAKA,GCLL,SAASiH,GAAShmC,GACvB,OAAOA,EAAE,GCDJ,SAASimC,GAASjmC,GACvB,OAAOA,EAAE,GCYI,SAAS08C,GAASl/B,EAAO5d,EAAGuE,GACzC,IAAI+3C,EAAO,IAAIS,GAAc,MAAL/8C,EAAYomC,GAAWpmC,EAAQ,MAALuE,EAAY8hC,GAAW9hC,EAAG9E,IAAKA,IAAKA,IAAKA,KAC3F,OAAgB,MAATme,EAAgB0+B,EAAOA,EAAKU,OAAOp/B,GAG5C,SAASm/B,GAAS/8C,EAAGuE,EAAGoG,EAAI60B,EAAI50B,EAAIu0B,GAClCvhC,KAAKg/C,GAAK58C,EACVpC,KAAKi/C,GAAKt4C,EACV3G,KAAK+gC,IAAMh0B,EACX/M,KAAKghC,IAAMY,EACX5hC,KAAKihC,IAAMj0B,EACXhN,KAAKkhC,IAAMK,EACXvhC,KAAK8+C,WAAQt+C,EAGf,SAAS6+C,GAAUN,GAEjB,IADA,IAAIzrC,EAAO,CAACzG,KAAMkyC,EAAKlyC,MAAO5I,EAAOqP,EAC9ByrC,EAAOA,EAAK96C,MAAMA,EAAOA,EAAKA,KAAO,CAAC4I,KAAMkyC,EAAKlyC,MACxD,OAAOyG,EAGT,IAAIgsC,GAAYJ,GAASzhD,UAAY0hD,GAAS1hD,UAE9C6hD,GAAUhsC,KAAO,WACf,IAEI0M,EACA7I,EAHA7D,EAAO,IAAI6rC,GAASn/C,KAAKg/C,GAAIh/C,KAAKi/C,GAAIj/C,KAAK+gC,IAAK/gC,KAAKghC,IAAKhhC,KAAKihC,IAAKjhC,KAAKkhC,KACzE9qB,EAAOpW,KAAK8+C,MAIhB,IAAK1oC,EAAM,OAAO9C,EAElB,IAAK8C,EAAK9Z,OAAQ,OAAOgX,EAAKwrC,MAAQO,GAAUjpC,GAAO9C,EAGvD,IADA0M,EAAQ,CAAC,CAACzjB,OAAQ6Z,EAAMja,OAAQmX,EAAKwrC,MAAQ,IAAI/7C,MAAM,KAChDqT,EAAO4J,EAAM3a,OAClB,IAAK,IAAIjJ,EAAI,EAAGA,EAAI,IAAKA,GACnB+a,EAAQf,EAAK7Z,OAAOH,MAClB+a,EAAM7a,OAAQ0jB,EAAMhkB,KAAK,CAACO,OAAQ4a,EAAOhb,OAAQia,EAAKja,OAAOC,GAAK,IAAI2G,MAAM,KAC3EqT,EAAKja,OAAOC,GAAKijD,GAAUloC,IAKtC,OAAO7D,GAGTgsC,GAAUv4C,IL3DK,SAASvE,GACtB,IAAMJ,GAAKpC,KAAKg/C,GAAGz/C,KAAK,KAAMiD,GAC1BmE,GAAK3G,KAAKi/C,GAAG1/C,KAAK,KAAMiD,GAC5B,OAAOuE,GAAI/G,KAAKu/C,MAAMn9C,EAAGuE,GAAIvE,EAAGuE,EAAGnE,IKyDrC88C,GAAUF,OLXH,SAAgBvyC,GACrB,IAAIrK,EAAGpG,EACHgG,EACAuE,EAFM3F,EAAI6L,EAAKvQ,OAGfwQ,EAAK,IAAI/J,MAAM/B,GACfw+C,EAAK,IAAIz8C,MAAM/B,GACf+L,EAAK+lB,IACL8O,EAAK9O,IACL9lB,GAAM8lB,IACNyO,GAAMzO,IAGV,IAAK12B,EAAI,EAAGA,EAAI4E,IAAK5E,EACf2wB,MAAM3qB,GAAKpC,KAAKg/C,GAAGz/C,KAAK,KAAMiD,EAAIqK,EAAKzQ,MAAQ2wB,MAAMpmB,GAAK3G,KAAKi/C,GAAG1/C,KAAK,KAAMiD,MACjFsK,EAAG1Q,GAAKgG,EACRo9C,EAAGpjD,GAAKuK,EACJvE,EAAI2K,IAAIA,EAAK3K,GACbA,EAAI4K,IAAIA,EAAK5K,GACbuE,EAAIi7B,IAAIA,EAAKj7B,GACbA,EAAI46B,IAAIA,EAAK56B,IAInB,GAAIoG,EAAKC,GAAM40B,EAAKL,EAAI,OAAOvhC,KAM/B,IAHAA,KAAKu/C,MAAMxyC,EAAI60B,GAAI2d,MAAMvyC,EAAIu0B,GAGxBnlC,EAAI,EAAGA,EAAI4E,IAAK5E,EACnB2K,GAAI/G,KAAM8M,EAAG1Q,GAAIojD,EAAGpjD,GAAIyQ,EAAKzQ,IAG/B,OAAO4D,MKrBTs/C,GAAUC,MJ7DK,SAASn9C,EAAGuE,GACzB,GAAIomB,MAAM3qB,GAAKA,IAAM2qB,MAAMpmB,GAAKA,GAAI,OAAO3G,KAE3C,IAAI+M,EAAK/M,KAAK+gC,IACVa,EAAK5hC,KAAKghC,IACVh0B,EAAKhN,KAAKihC,IACVM,EAAKvhC,KAAKkhC,IAKd,GAAInU,MAAMhgB,GACRC,GAAMD,EAAK5G,KAAKwF,MAAMvJ,IAAM,EAC5Bm/B,GAAMK,EAAKz7B,KAAKwF,MAAMhF,IAAM,MAIzB,CAMH,IALA,IAEIgQ,EACAva,EAHAuR,EAAIX,EAAKD,GAAM,EACfqJ,EAAOpW,KAAK8+C,MAIT/xC,EAAK3K,GAAKA,GAAK4K,GAAM40B,EAAKj7B,GAAKA,GAAK46B,GAGzC,OAFAnlC,GAAKuK,EAAIi7B,IAAO,EAAKx/B,EAAI2K,GACzB4J,EAAS,IAAI5T,MAAM,IAAW3G,GAAKga,EAAMA,EAAOO,EAAQhJ,GAAK,EACrDvR,GACN,KAAK,EAAG4Q,EAAKD,EAAKY,EAAG4zB,EAAKK,EAAKj0B,EAAG,MAClC,KAAK,EAAGZ,EAAKC,EAAKW,EAAG4zB,EAAKK,EAAKj0B,EAAG,MAClC,KAAK,EAAGX,EAAKD,EAAKY,EAAGi0B,EAAKL,EAAK5zB,EAAG,MAClC,KAAK,EAAGZ,EAAKC,EAAKW,EAAGi0B,EAAKL,EAAK5zB,EAI/B3N,KAAK8+C,OAAS9+C,KAAK8+C,MAAMxiD,SAAQ0D,KAAK8+C,MAAQ1oC,GAOpD,OAJApW,KAAK+gC,IAAMh0B,EACX/M,KAAKghC,IAAMY,EACX5hC,KAAKihC,IAAMj0B,EACXhN,KAAKkhC,IAAMK,EACJvhC,MIqBTs/C,GAAUzyC,KC9DK,WACb,IAAIA,EAAO,GAIX,OAHA7M,KAAKy/C,OAAM,SAASrpC,GAClB,IAAKA,EAAK9Z,OAAQ,GAAGuQ,EAAK7Q,KAAKoa,EAAKvJ,YAAcuJ,EAAOA,EAAKnS,SAEzD4I,GD0DTyyC,GAAUj5C,OE/DK,SAASkH,GACtB,OAAOlR,UAAUC,OACX0D,KAAKu/C,OAAOhyC,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAIgyC,OAAOhyC,EAAE,GAAG,IAAKA,EAAE,GAAG,IACrDwf,MAAM/sB,KAAK+gC,UAAOvgC,EAAY,CAAC,CAACR,KAAK+gC,IAAK/gC,KAAKghC,KAAM,CAAChhC,KAAKihC,IAAKjhC,KAAKkhC,OF6D7Eoe,GAAUjpC,KG9DK,SAASjU,EAAGuE,EAAGy8B,GAC5B,IAAIv2B,EAGAG,EACAu0B,EACAE,EACAC,EAKAvR,EACA/zB,EAXA2Q,EAAK/M,KAAK+gC,IACVa,EAAK5hC,KAAKghC,IAKVmR,EAAKnyC,KAAKihC,IACVmR,EAAKpyC,KAAKkhC,IACVwe,EAAQ,GACRtpC,EAAOpW,KAAK8+C,MAYhB,IARI1oC,GAAMspC,EAAM1jD,KAAK,IAAI2jD,GAAKvpC,EAAMrJ,EAAI60B,EAAIuQ,EAAIC,IAClC,MAAVhP,EAAgBA,EAAStQ,KAE3B/lB,EAAK3K,EAAIghC,EAAQxB,EAAKj7B,EAAIy8B,EAC1B+O,EAAK/vC,EAAIghC,EAAQgP,EAAKzrC,EAAIy8B,EAC1BA,GAAUA,GAGLjT,EAAIuvB,EAAMr6C,OAGf,OAAM+Q,EAAO+Z,EAAE/Z,QACPpJ,EAAKmjB,EAAEpjB,IAAMolC,IACb5Q,EAAKpR,EAAEyR,IAAMwQ,IACb3Q,EAAKtR,EAAEnjB,IAAMD,IACb20B,EAAKvR,EAAEoR,IAAMK,GAGrB,GAAIxrB,EAAK9Z,OAAQ,CACf,IAAIqiD,GAAM3xC,EAAKy0B,GAAM,EACjBmd,GAAMrd,EAAKG,GAAM,EAErBge,EAAM1jD,KACJ,IAAI2jD,GAAKvpC,EAAK,GAAIuoC,EAAIC,EAAInd,EAAIC,GAC9B,IAAIie,GAAKvpC,EAAK,GAAIpJ,EAAI4xC,EAAID,EAAIjd,GAC9B,IAAIie,GAAKvpC,EAAK,GAAIuoC,EAAIpd,EAAIE,EAAImd,GAC9B,IAAIe,GAAKvpC,EAAK,GAAIpJ,EAAIu0B,EAAIod,EAAIC,KAI5BxiD,GAAKuK,GAAKi4C,IAAO,EAAKx8C,GAAKu8C,KAC7BxuB,EAAIuvB,EAAMA,EAAMpjD,OAAS,GACzBojD,EAAMA,EAAMpjD,OAAS,GAAKojD,EAAMA,EAAMpjD,OAAS,EAAIF,GACnDsjD,EAAMA,EAAMpjD,OAAS,EAAIF,GAAK+zB,OAK7B,CACH,IAAI6N,EAAK57B,GAAKpC,KAAKg/C,GAAGz/C,KAAK,KAAM6W,EAAKvJ,MAClCoxB,EAAKt3B,GAAK3G,KAAKi/C,GAAG1/C,KAAK,KAAM6W,EAAKvJ,MAClC+yC,EAAK5hB,EAAKA,EAAKC,EAAKA,EACxB,GAAI2hB,EAAKxc,EAAQ,CACf,IAAI5gC,EAAI2D,KAAKC,KAAKg9B,EAASwc,GAC3B7yC,EAAK3K,EAAII,EAAGo/B,EAAKj7B,EAAInE,EACrB2vC,EAAK/vC,EAAII,EAAG4vC,EAAKzrC,EAAInE,EACrBqK,EAAOuJ,EAAKvJ,MAKlB,OAAOA,GHHTyyC,GAAU7qC,OIjEK,SAASjS,GACtB,GAAIuqB,MAAM3qB,GAAKpC,KAAKg/C,GAAGz/C,KAAK,KAAMiD,KAAOuqB,MAAMpmB,GAAK3G,KAAKi/C,GAAG1/C,KAAK,KAAMiD,IAAK,OAAOxC,KAEnF,IAAI2W,EAEAkpC,EACAzwC,EACAnL,EAKA7B,EACAuE,EACAg4C,EACAC,EACAl8C,EACAm8C,EACAziD,EACAmJ,EAfA6Q,EAAOpW,KAAK8+C,MAIZ/xC,EAAK/M,KAAK+gC,IACVa,EAAK5hC,KAAKghC,IACVh0B,EAAKhN,KAAKihC,IACVM,EAAKvhC,KAAKkhC,IAWd,IAAK9qB,EAAM,OAAOpW,KAIlB,GAAIoW,EAAK9Z,OAAQ,OAAa,CAG5B,IAFIoG,EAAQN,IAAMu8C,GAAM5xC,EAAKC,GAAM,IAAID,EAAK4xC,EAAS3xC,EAAK2xC,GACtDE,EAASl4C,IAAMi4C,GAAMhd,EAAKL,GAAM,IAAIK,EAAKgd,EAASrd,EAAKqd,EACrDjoC,EAASP,IAAMA,EAAOA,EAAKha,EAAIyiD,GAAU,EAAIn8C,IAAS,OAAO1C,KACnE,IAAKoW,EAAK9Z,OAAQ,OACdqa,EAAQva,EAAI,EAAK,IAAMua,EAAQva,EAAI,EAAK,IAAMua,EAAQva,EAAI,EAAK,MAAIyjD,EAAWlpC,EAAQpR,EAAInJ,GAIhG,KAAOga,EAAKvJ,OAASrK,GAAG,GAAM4M,EAAWgH,IAAMA,EAAOA,EAAKnS,MAAO,OAAOjE,KAIzE,OAHIiE,EAAOmS,EAAKnS,cAAamS,EAAKnS,KAG9BmL,GAAkBnL,EAAOmL,EAASnL,KAAOA,SAAcmL,EAASnL,KAAOjE,MAGtE2W,GAGL1S,EAAO0S,EAAOva,GAAK6H,SAAc0S,EAAOva,IAGnCga,EAAOO,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,KACnDP,KAAUO,EAAO,IAAMA,EAAO,IAAMA,EAAO,IAAMA,EAAO,MACvDP,EAAK9Z,SACPujD,EAAUA,EAASt6C,GAAK6Q,EACvBpW,KAAK8+C,MAAQ1oC,GAGbpW,OAbaA,KAAK8+C,MAAQ76C,EAAMjE,OJwBzCs/C,GAAUQ,UIRH,SAAmBjzC,GACxB,IAAK,IAAIzQ,EAAI,EAAG4E,EAAI6L,EAAKvQ,OAAQF,EAAI4E,IAAK5E,EAAG4D,KAAKyU,OAAO5H,EAAKzQ,IAC9D,OAAO4D,MJOTs/C,GAAUzhC,KKnEK,WACb,OAAO7d,KAAK8+C,OLmEdQ,GAAUr/B,KMpEK,WACb,IAAIA,EAAO,EAIX,OAHAjgB,KAAKy/C,OAAM,SAASrpC,GAClB,IAAKA,EAAK9Z,OAAQ,KAAK2jB,QAAa7J,EAAOA,EAAKnS,SAE3Cgc,GNgETq/B,GAAUG,MOnEK,SAASjqC,GACtB,IAAgB2a,EAAsBhZ,EAAOpK,EAAI60B,EAAI50B,EAAIu0B,EAArDme,EAAQ,GAAOtpC,EAAOpW,KAAK8+C,MAE/B,IADI1oC,GAAMspC,EAAM1jD,KAAK,IAAI2jD,GAAKvpC,EAAMpW,KAAK+gC,IAAK/gC,KAAKghC,IAAKhhC,KAAKihC,IAAKjhC,KAAKkhC,MAChE/Q,EAAIuvB,EAAMr6C,OACf,IAAKmQ,EAASY,EAAO+Z,EAAE/Z,KAAMrJ,EAAKojB,EAAEpjB,GAAI60B,EAAKzR,EAAEyR,GAAI50B,EAAKmjB,EAAEnjB,GAAIu0B,EAAKpR,EAAEoR,KAAOnrB,EAAK9Z,OAAQ,CACvF,IAAIqiD,GAAM5xC,EAAKC,GAAM,EAAG4xC,GAAMhd,EAAKL,GAAM,GACrCpqB,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOwnC,EAAIC,EAAI5xC,EAAIu0B,KACxDpqB,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOpK,EAAI6xC,EAAID,EAAIpd,KACxDpqB,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOwnC,EAAI/c,EAAI50B,EAAI4xC,KACxDznC,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOpK,EAAI60B,EAAI+c,EAAIC,IAGhE,OAAO5+C,MPwDTs/C,GAAUS,WQpEK,SAASvqC,GACtB,IAA2B2a,EAAvBuvB,EAAQ,GAAIz7C,EAAO,GAEvB,IADIjE,KAAK8+C,OAAOY,EAAM1jD,KAAK,IAAI2jD,GAAK3/C,KAAK8+C,MAAO9+C,KAAK+gC,IAAK/gC,KAAKghC,IAAKhhC,KAAKihC,IAAKjhC,KAAKkhC,MAC5E/Q,EAAIuvB,EAAMr6C,OAAO,CACtB,IAAI+Q,EAAO+Z,EAAE/Z,KACb,GAAIA,EAAK9Z,OAAQ,CACf,IAAI6a,EAAOpK,EAAKojB,EAAEpjB,GAAI60B,EAAKzR,EAAEyR,GAAI50B,EAAKmjB,EAAEnjB,GAAIu0B,EAAKpR,EAAEoR,GAAIod,GAAM5xC,EAAKC,GAAM,EAAG4xC,GAAMhd,EAAKL,GAAM,GACxFpqB,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOpK,EAAI60B,EAAI+c,EAAIC,KACxDznC,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOwnC,EAAI/c,EAAI50B,EAAI4xC,KACxDznC,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOpK,EAAI6xC,EAAID,EAAIpd,KACxDpqB,EAAQf,EAAK,KAAIspC,EAAM1jD,KAAK,IAAI2jD,GAAKxoC,EAAOwnC,EAAIC,EAAI5xC,EAAIu0B,IAE9Dt9B,EAAKjI,KAAKm0B,GAEZ,KAAOA,EAAIlsB,EAAKoB,OACdmQ,EAAS2a,EAAE/Z,KAAM+Z,EAAEpjB,GAAIojB,EAAEyR,GAAIzR,EAAEnjB,GAAImjB,EAAEoR,IAEvC,OAAOvhC,MRoDTs/C,GAAUl9C,EFnEK,SAASmL,GACtB,OAAOlR,UAAUC,QAAU0D,KAAKg/C,GAAKzxC,EAAGvN,MAAQA,KAAKg/C,IEmEvDM,GAAU34C,EDpEK,SAAS4G,GACtB,OAAOlR,UAAUC,QAAU0D,KAAKi/C,GAAK1xC,EAAGvN,MAAQA,KAAKi/C,IULxC,gBAAS78C,GACtB,OAAO,WACL,OAAOA,ICFI,YAASoO,GACtB,OAA0B,MAAlBA,IAAW,KCGrB,SAASpO,GAAEI,GACT,OAAOA,EAAEJ,EAAII,EAAEoyC,GAGjB,SAASjuC,GAAEnE,GACT,OAAOA,EAAEmE,EAAInE,EAAEqyC,GAGF,gBAASzR,GACtB,IAAIpjB,EACAggC,EACAxvC,EACA8tC,EAAW,EACX2B,EAAa,EAIjB,SAAS1B,IASP,IARA,IAAIniD,EACAsiD,EACAtoC,EACAqwB,EACAC,EACAwZ,EACAC,EANGn/C,EAAIgf,EAAM1jB,OAQRoR,EAAI,EAAGA,EAAIuyC,IAAcvyC,EAEhC,IADAgxC,EAAOQ,GAASl/B,EAAO5d,GAAGuE,IAAGo5C,WAAWK,GACnChkD,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBga,EAAO4J,EAAM5jB,GACb8jD,EAAKF,EAAM5pC,EAAK7R,OAAQ47C,EAAMD,EAAKA,EACnCzZ,EAAKrwB,EAAKhU,EAAIgU,EAAKw+B,GACnBlO,EAAKtwB,EAAKzP,EAAIyP,EAAKy+B,GACnB6J,EAAKe,MAAMxjD,GAIf,SAASA,EAAMokD,EAAMtzC,EAAI60B,EAAI50B,EAAIu0B,GAC/B,IAAI10B,EAAOwzC,EAAKxzC,KAAMyzC,EAAKD,EAAKzwC,EAAGA,EAAIswC,EAAKI,EAC5C,IAAIzzC,EAiBJ,OAAOE,EAAK05B,EAAK72B,GAAK5C,EAAKy5B,EAAK72B,GAAKgyB,EAAK8E,EAAK92B,GAAK2xB,EAAKmF,EAAK92B,EAhB5D,GAAI/C,EAAKtI,MAAQ6R,EAAK7R,MAAO,CAC3B,IAAInC,EAAIqkC,EAAK55B,EAAKzK,EAAIyK,EAAK+nC,GACvBjuC,EAAI+/B,EAAK75B,EAAKlG,EAAIkG,EAAKgoC,GACvB3oB,EAAI9pB,EAAIA,EAAIuE,EAAIA,EAChBulB,EAAItc,EAAIA,IACA,IAANxN,IAA6B8pB,IAApB9pB,EAAIm+C,GAAO/vC,IAAkBpO,GAChC,IAANuE,IAA6BulB,IAApBvlB,EAAI45C,GAAO/vC,IAAkB7J,GAC1CulB,GAAKtc,GAAKsc,EAAI/lB,KAAKC,KAAK8lB,KAAOA,EAAIoyB,EACnCloC,EAAKw+B,KAAOxyC,GAAK8pB,IAAMtc,GAAK0wC,GAAMA,IAAOH,EAAMG,IAC/ClqC,EAAKy+B,KAAOluC,GAAKulB,GAAKtc,EACtB/C,EAAK+nC,IAAMxyC,GAAKwN,EAAI,EAAIA,GACxB/C,EAAKgoC,IAAMluC,EAAIiJ,KASzB,SAASwwC,EAAQC,GACf,GAAIA,EAAKxzC,KAAM,OAAOwzC,EAAKzwC,EAAIowC,EAAMK,EAAKxzC,KAAKtI,OAC/C,IAAK,IAAInI,EAAIikD,EAAKzwC,EAAI,EAAGxT,EAAI,IAAKA,EAC5BikD,EAAKjkD,IAAMikD,EAAKjkD,GAAGwT,EAAIywC,EAAKzwC,IAC9BywC,EAAKzwC,EAAIywC,EAAKjkD,GAAGwT,GAKvB,SAASssB,IACP,GAAKlc,EAAL,CACA,IAAI5jB,EAAqBga,EAAlBpV,EAAIgf,EAAM1jB,OAEjB,IADA0jD,EAAQ,IAAIj9C,MAAM/B,GACb5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGga,EAAO4J,EAAM5jB,GAAI4jD,EAAM5pC,EAAK7R,QAAU6+B,EAAOhtB,EAAMha,EAAG4jB,IAqBhF,MA/EsB,oBAAXojB,IAAuBA,EAASv4B,GAAmB,MAAVu4B,EAAiB,GAAKA,IA6D1Emb,EAAMriB,WAAa,SAASskB,EAAQC,GAClCzgC,EAAQwgC,EACRhwC,EAASiwC,EACTvkB,KAGFqiB,EAAM0B,WAAa,SAAS1yC,GAC1B,OAAOlR,UAAUC,QAAU2jD,GAAc1yC,EAAGgxC,GAAS0B,GAGvD1B,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,GAAY/wC,EAAGgxC,GAASD,GAGrDC,EAAMnb,OAAS,SAAS71B,GACtB,OAAOlR,UAAUC,QAAU8mC,EAAsB,oBAAN71B,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASnb,GAGlGmb,GC/FT,SAASh6C,GAAM/B,GACb,OAAOA,EAAE+B,MAGX,SAAS8R,GAAKqqC,EAAUC,GACtB,IAAIvqC,EAAOsqC,EAASl5C,IAAIm5C,GACxB,IAAKvqC,EAAM,MAAM,IAAInY,MAAM,mBAAqB0iD,GAChD,OAAOvqC,EAGM,gBAASwqC,GACtB,IAEIC,EAEAC,EACA9gC,EACApb,EACAm8C,EACAvwC,EARAgjB,EAAKjvB,GACL+5C,EAYJ,SAAyB0C,GACvB,OAAO,EAAI76C,KAAKG,IAAI1B,EAAMo8C,EAAKzkD,OAAOgI,OAAQK,EAAMo8C,EAAK7kD,OAAOoI,SAX9D08C,EAAWp2C,GAAS,IAMpBo1C,EAAa,EAQjB,SAAS1B,EAAM2C,GACb,IAAK,IAAIxzC,EAAI,EAAG1M,EAAI4/C,EAAMtkD,OAAQoR,EAAIuyC,IAAcvyC,EAClD,IAAK,IAAWszC,EAAMzkD,EAAQJ,EAAQiG,EAAGuE,EAAGulB,EAAGtqB,EAAtCxF,EAAI,EAAqCA,EAAI4E,IAAK5E,EACxCG,GAAjBykD,EAAOJ,EAAMxkD,IAAkBG,OAC/B6F,GADuCjG,EAAS6kD,EAAK7kD,QAC1CiG,EAAIjG,EAAOy4C,GAAKr4C,EAAO6F,EAAI7F,EAAOq4C,IAAM2L,GAAO/vC,GAC1D7J,EAAIxK,EAAOwK,EAAIxK,EAAO04C,GAAKt4C,EAAOoK,EAAIpK,EAAOs4C,IAAM0L,GAAO/vC,GAG1DpO,GADA8pB,IADAA,EAAI/lB,KAAKC,KAAKhE,EAAIA,EAAIuE,EAAIA,IACjBm6C,EAAU1kD,IAAM8vB,EAAIg1B,EAAQL,EAAUzkD,GACvCuK,GAAKulB,EACb/vB,EAAOy4C,IAAMxyC,GAAKR,EAAIm/C,EAAK3kD,IAC3BD,EAAO04C,IAAMluC,EAAI/E,EACjBrF,EAAOq4C,IAAMxyC,GAAKR,EAAI,EAAIA,GAC1BrF,EAAOs4C,IAAMluC,EAAI/E,EAKvB,SAASs6B,IACP,GAAKlc,EAAL,CAEA,IAAI5jB,EAIA4kD,EAHAhgD,EAAIgf,EAAM1jB,OACV6Q,EAAIyzC,EAAMtkD,OACVokD,EAAW,IAAIz4C,IAAI+X,EAAMjf,KAAI,SAACyB,EAAGpG,GAAJ,MAAU,CAACo3B,EAAGhxB,EAAGpG,EAAG4jB,GAAQxd,OAG7D,IAAKpG,EAAI,EAAGwI,EAAQ,IAAI7B,MAAM/B,GAAI5E,EAAI+Q,IAAK/Q,GACzC4kD,EAAOJ,EAAMxkD,IAASmI,MAAQnI,EACH,kBAAhB4kD,EAAKzkD,SAAqBykD,EAAKzkD,OAAS8Z,GAAKqqC,EAAUM,EAAKzkD,SAC5C,kBAAhBykD,EAAK7kD,SAAqB6kD,EAAK7kD,OAASka,GAAKqqC,EAAUM,EAAK7kD,SACvEyI,EAAMo8C,EAAKzkD,OAAOgI,QAAUK,EAAMo8C,EAAKzkD,OAAOgI,QAAU,GAAK,EAC7DK,EAAMo8C,EAAK7kD,OAAOoI,QAAUK,EAAMo8C,EAAK7kD,OAAOoI,QAAU,GAAK,EAG/D,IAAKnI,EAAI,EAAG2kD,EAAO,IAAIh+C,MAAMoK,GAAI/Q,EAAI+Q,IAAK/Q,EACxC4kD,EAAOJ,EAAMxkD,GAAI2kD,EAAK3kD,GAAKwI,EAAMo8C,EAAKzkD,OAAOgI,QAAUK,EAAMo8C,EAAKzkD,OAAOgI,OAASK,EAAMo8C,EAAK7kD,OAAOoI,QAGtGs8C,EAAY,IAAI99C,MAAMoK,GAAIg0C,IAC1BL,EAAY,IAAI/9C,MAAMoK,GAAIi0C,KAG5B,SAASD,IACP,GAAKnhC,EAEL,IAAK,IAAI5jB,EAAI,EAAG4E,EAAI4/C,EAAMtkD,OAAQF,EAAI4E,IAAK5E,EACzCykD,EAAUzkD,IAAMkiD,EAASsC,EAAMxkD,GAAIA,EAAGwkD,GAI1C,SAASQ,IACP,GAAKphC,EAEL,IAAK,IAAI5jB,EAAI,EAAG4E,EAAI4/C,EAAMtkD,OAAQF,EAAI4E,IAAK5E,EACzC0kD,EAAU1kD,IAAM6kD,EAASL,EAAMxkD,GAAIA,EAAGwkD,GA8B1C,OA1Fa,MAATA,IAAeA,EAAQ,IAgE3BrC,EAAMriB,WAAa,SAASskB,EAAQC,GAClCzgC,EAAQwgC,EACRhwC,EAASiwC,EACTvkB,KAGFqiB,EAAMqC,MAAQ,SAASrzC,GACrB,OAAOlR,UAAUC,QAAUskD,EAAQrzC,EAAG2uB,IAAcqiB,GAASqC,GAG/DrC,EAAM/qB,GAAK,SAASjmB,GAClB,OAAOlR,UAAUC,QAAUk3B,EAAKjmB,EAAGgxC,GAAS/qB,GAG9C+qB,EAAM0B,WAAa,SAAS1yC,GAC1B,OAAOlR,UAAUC,QAAU2jD,GAAc1yC,EAAGgxC,GAAS0B,GAGvD1B,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,EAAwB,oBAAN/wC,EAAmBA,EAAI1C,IAAU0C,GAAI4zC,IAAsB5C,GAASD,GAGnHC,EAAM0C,SAAW,SAAS1zC,GACxB,OAAOlR,UAAUC,QAAU2kD,EAAwB,oBAAN1zC,EAAmBA,EAAI1C,IAAU0C,GAAI6zC,IAAsB7C,GAAS0C,GAG5G1C,GChHHpxC,GAAI,WCCH,SAAS/K,GAAEI,GAChB,OAAOA,EAAEJ,EAGJ,SAASuE,GAAEnE,GAChB,OAAOA,EAAEmE,EAGX,IACI06C,GAAel7C,KAAKkuB,IAAM,EAAIluB,KAAKC,KAAK,IAE7B,YAAS4Z,GACtB,IAAIshC,EACAJ,EAAQ,EACRK,EAAW,KACXC,EAAa,EAAIr7C,KAAK4F,IAAIw1C,EAAU,EAAI,KACxCE,EAAc,EACdC,EAAgB,GAChBC,EAAS,IAAI15C,IACb25C,EAAUrvB,GAAMvuB,GAChB+Y,EAAQ9H,GAAS,OAAQ,OACzBzE,EDpBS,WACb,IAAI/O,EAAI,EACR,OAAO,kBAAOA,GANN,QAMeA,EALf,YAKwB0L,IAAKA,ICkBxB00C,GAIb,SAAS79C,IACP0P,IACAqJ,EAAMxd,KAAK,OAAQ+hD,GACfJ,EAAQK,IACVK,EAAQz2C,OACR4R,EAAMxd,KAAK,MAAO+hD,IAItB,SAAS5tC,EAAKusC,GACZ,IAAI7jD,EAAqBga,EAAlBpV,EAAIgf,EAAM1jB,YAEEkE,IAAfy/C,IAA0BA,EAAa,GAE3C,IAAK,IAAIvyC,EAAI,EAAGA,EAAIuyC,IAAcvyC,EAOhC,IANAwzC,IAAUO,EAAcP,GAASM,EAEjCG,EAAOnlD,SAAQ,SAAS+hD,GACtBA,EAAM2C,MAGH9kD,EAAI,EAAGA,EAAI4E,IAAK5E,EAEJ,OADfga,EAAO4J,EAAM5jB,IACJ20C,GAAY36B,EAAKhU,GAAKgU,EAAKw+B,IAAM8M,GACrCtrC,EAAKhU,EAAIgU,EAAK26B,GAAI36B,EAAKw+B,GAAK,GAClB,MAAXx+B,EAAK46B,GAAY56B,EAAKzP,GAAKyP,EAAKy+B,IAAM6M,GACrCtrC,EAAKzP,EAAIyP,EAAK46B,GAAI56B,EAAKy+B,GAAK,GAIrC,OAAOyM,EAGT,SAASQ,IACP,IAAK,IAA6B1rC,EAAzBha,EAAI,EAAG4E,EAAIgf,EAAM1jB,OAAcF,EAAI4E,IAAK5E,EAAG,CAIlD,IAHAga,EAAO4J,EAAM5jB,IAASmI,MAAQnI,EACf,MAAXga,EAAK26B,KAAY36B,EAAKhU,EAAIgU,EAAK26B,IACpB,MAAX36B,EAAK46B,KAAY56B,EAAKzP,EAAIyP,EAAK46B,IAC/BjkB,MAAM3W,EAAKhU,IAAM2qB,MAAM3W,EAAKzP,GAAI,CAClC,IAAIy8B,EAxDQ,GAwDiBj9B,KAAKC,KAAK,GAAMhK,GAAI2lD,EAAQ3lD,EAAIilD,GAC7DjrC,EAAKhU,EAAIghC,EAASj9B,KAAKs5B,IAAIsiB,GAC3B3rC,EAAKzP,EAAIy8B,EAASj9B,KAAKu5B,IAAIqiB,IAEzBh1B,MAAM3W,EAAKw+B,KAAO7nB,MAAM3W,EAAKy+B,OAC/Bz+B,EAAKw+B,GAAKx+B,EAAKy+B,GAAK,IAK1B,SAASmN,EAAgBzD,GAEvB,OADIA,EAAMriB,YAAYqiB,EAAMriB,WAAWlc,EAAOxP,GACvC+tC,EAKT,OA1Da,MAATv+B,IAAeA,EAAQ,IAwD3B8hC,IAEOR,EAAa,CAClB5tC,KAAMA,EAENgf,QAAS,WACP,OAAOkvB,EAAQlvB,QAAQ1uB,GAAOs9C,GAGhCn2C,KAAM,WACJ,OAAOy2C,EAAQz2C,OAAQm2C,GAGzBthC,MAAO,SAASzS,GACd,OAAOlR,UAAUC,QAAU0jB,EAAQzS,EAAGu0C,IAAmBH,EAAOnlD,QAAQwlD,GAAkBV,GAActhC,GAG1GkhC,MAAO,SAAS3zC,GACd,OAAOlR,UAAUC,QAAU4kD,GAAS3zC,EAAG+zC,GAAcJ,GAGvDK,SAAU,SAASh0C,GACjB,OAAOlR,UAAUC,QAAUilD,GAAYh0C,EAAG+zC,GAAcC,GAG1DC,WAAY,SAASj0C,GACnB,OAAOlR,UAAUC,QAAUklD,GAAcj0C,EAAG+zC,IAAeE,GAG7DC,YAAa,SAASl0C,GACpB,OAAOlR,UAAUC,QAAUmlD,GAAel0C,EAAG+zC,GAAcG,GAG7DC,cAAe,SAASn0C,GACtB,OAAOlR,UAAUC,QAAUolD,EAAgB,EAAIn0C,EAAG+zC,GAAc,EAAII,GAGtEO,aAAc,SAAS10C,GACrB,OAAOlR,UAAUC,QAAUkU,EAASjD,EAAGo0C,EAAOnlD,QAAQwlD,GAAkBV,GAAc9wC,GAGxF+tC,MAAO,SAASn7C,EAAMmK,GACpB,OAAOlR,UAAUC,OAAS,GAAW,MAALiR,EAAYo0C,EAAO14C,OAAO7F,GAAQu+C,EAAOt5C,IAAIjF,EAAM4+C,EAAgBz0C,IAAM+zC,GAAcK,EAAOn6C,IAAIpE,IAGpIiT,KAAM,SAASjU,EAAGuE,EAAGy8B,GACnB,IAEIpF,EACAC,EACA2hB,EACAxpC,EACA8rC,EANA9lD,EAAI,EACJ4E,EAAIgf,EAAM1jB,OAUd,IAHc,MAAV8mC,EAAgBA,EAAStQ,IACxBsQ,GAAUA,EAEVhnC,EAAI,EAAGA,EAAI4E,IAAK5E,GAInBwjD,GAFA5hB,EAAK57B,GADLgU,EAAO4J,EAAM5jB,IACCgG,GAEJ47B,GADVC,EAAKt3B,EAAIyP,EAAKzP,GACMs3B,GACXmF,IAAQ8e,EAAU9rC,EAAMgtB,EAASwc,GAG5C,OAAOsC,GAGTxsC,GAAI,SAAStS,EAAMmK,GACjB,OAAOlR,UAAUC,OAAS,GAAKygB,EAAMrH,GAAGtS,EAAMmK,GAAI+zC,GAAcvkC,EAAMrH,GAAGtS,MCnJhE,cACb,IAAI4c,EACA5J,EACA5F,EACA0wC,EAEAL,EADAvC,EAAWzzC,IAAU,IAErBs3C,EAAe,EACfC,EAAetvB,IACfuvB,EAAS,IAEb,SAAS9D,EAAMhxC,GACb,IAAInR,EAAG4E,EAAIgf,EAAM1jB,OAAQoiD,EAAOQ,GAASl/B,EAAO5d,GAAGuE,IAAGo5C,WAAWuC,GACjE,IAAKpB,EAAQ3zC,EAAGnR,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGga,EAAO4J,EAAM5jB,GAAIsiD,EAAKe,MAAMxjD,GAGjE,SAASigC,IACP,GAAKlc,EAAL,CACA,IAAI5jB,EAAqBga,EAAlBpV,EAAIgf,EAAM1jB,OAEjB,IADAukD,EAAY,IAAI99C,MAAM/B,GACjB5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGga,EAAO4J,EAAM5jB,GAAIykD,EAAUzqC,EAAK7R,QAAU+5C,EAASloC,EAAMha,EAAG4jB,IAGtF,SAASsiC,EAAWjC,GAClB,IAAkBlwB,EAAG/lB,EAAehI,EAAGuE,EAAGvK,EAAtCkiD,EAAW,EAAS3V,EAAS,EAGjC,GAAI0X,EAAK/jD,OAAQ,CACf,IAAK8F,EAAIuE,EAAIvK,EAAI,EAAGA,EAAI,IAAKA,GACtB+zB,EAAIkwB,EAAKjkD,MAAQgO,EAAIjE,KAAKS,IAAIupB,EAAE3xB,UACnC8/C,GAAYnuB,EAAE3xB,MAAOmqC,GAAUv+B,EAAGhI,GAAKgI,EAAI+lB,EAAE/tB,EAAGuE,GAAKyD,EAAI+lB,EAAExpB,GAG/D05C,EAAKj+C,EAAIA,EAAIumC,EACb0X,EAAK15C,EAAIA,EAAIgiC,MAIV,EACHxY,EAAIkwB,GACFj+C,EAAI+tB,EAAEtjB,KAAKzK,EACb+tB,EAAExpB,EAAIwpB,EAAEtjB,KAAKlG,EACb,GAAG23C,GAAYuC,EAAU1wB,EAAEtjB,KAAKtI,aACzB4rB,EAAIA,EAAElsB,MAGfo8C,EAAK7hD,MAAQ8/C,EAGf,SAASriD,EAAMokD,EAAMrzC,EAAIO,EAAGk0B,GAC1B,IAAK4e,EAAK7hD,MAAO,OAAO,EAExB,IAAI4D,EAAIi+C,EAAKj+C,EAAIgU,EAAKhU,EAClBuE,EAAI05C,EAAK15C,EAAIyP,EAAKzP,EAClByzB,EAAIqH,EAAKz0B,EACTkf,EAAI9pB,EAAIA,EAAIuE,EAAIA,EAIpB,GAAIyzB,EAAIA,EAAIioB,EAASn2B,EAQnB,OAPIA,EAAIk2B,IACI,IAANhgD,IAA6B8pB,IAApB9pB,EAAIm+C,GAAO/vC,IAAkBpO,GAChC,IAANuE,IAA6BulB,IAApBvlB,EAAI45C,GAAO/vC,IAAkB7J,GACtCulB,EAAIi2B,IAAcj2B,EAAI/lB,KAAKC,KAAK+7C,EAAej2B,IACnD9V,EAAKw+B,IAAMxyC,EAAIi+C,EAAK7hD,MAAQ0iD,EAAQh1B,EACpC9V,EAAKy+B,IAAMluC,EAAI05C,EAAK7hD,MAAQ0iD,EAAQh1B,IAE/B,EAIJ,KAAIm0B,EAAK/jD,QAAU4vB,GAAKk2B,GAAxB,EAGD/B,EAAKxzC,OAASuJ,GAAQiqC,EAAKp8C,QACnB,IAAN7B,IAA6B8pB,IAApB9pB,EAAIm+C,GAAO/vC,IAAkBpO,GAChC,IAANuE,IAA6BulB,IAApBvlB,EAAI45C,GAAO/vC,IAAkB7J,GACtCulB,EAAIi2B,IAAcj2B,EAAI/lB,KAAKC,KAAK+7C,EAAej2B,KAGrD,GAAOm0B,EAAKxzC,OAASuJ,IACnBgkB,EAAIymB,EAAUR,EAAKxzC,KAAKtI,OAAS28C,EAAQh1B,EACzC9V,EAAKw+B,IAAMxyC,EAAIg4B,EACfhkB,EAAKy+B,IAAMluC,EAAIyzB,SACRimB,EAAOA,EAAKp8C,OAyBvB,OAtBAs6C,EAAMriB,WAAa,SAASskB,EAAQC,GAClCzgC,EAAQwgC,EACRhwC,EAASiwC,EACTvkB,KAGFqiB,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,EAAwB,oBAAN/wC,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASD,GAG3GC,EAAMgE,YAAc,SAASh1C,GAC3B,OAAOlR,UAAUC,QAAU6lD,EAAe50C,EAAIA,EAAGgxC,GAASp4C,KAAKC,KAAK+7C,IAGtE5D,EAAMiE,YAAc,SAASj1C,GAC3B,OAAOlR,UAAUC,QAAU8lD,EAAe70C,EAAIA,EAAGgxC,GAASp4C,KAAKC,KAAKg8C,IAGtE7D,EAAMkE,MAAQ,SAASl1C,GACrB,OAAOlR,UAAUC,QAAU+lD,EAAS90C,EAAIA,EAAGgxC,GAASp4C,KAAKC,KAAKi8C,IAGzD9D,GChHM,YAASnb,EAAQhhC,EAAGuE,GACjC,IAAIqZ,EAEA6gC,EACA6B,EAFApE,EAAWzzC,GAAS,IAQxB,SAAS0zC,EAAM2C,GACb,IAAK,IAAI9kD,EAAI,EAAG4E,EAAIgf,EAAM1jB,OAAQF,EAAI4E,IAAK5E,EAAG,CAC5C,IAAIga,EAAO4J,EAAM5jB,GACb4hC,EAAK5nB,EAAKhU,EAAIA,GAAK,KACnB67B,EAAK7nB,EAAKzP,EAAIA,GAAK,KACnBiJ,EAAIzJ,KAAKC,KAAK43B,EAAKA,EAAKC,EAAKA,GAC7BvwB,GAAKg1C,EAAStmD,GAAKwT,GAAKixC,EAAUzkD,GAAK8kD,EAAQtxC,EACnDwG,EAAKw+B,IAAM5W,EAAKtwB,EAChB0I,EAAKy+B,IAAM5W,EAAKvwB,GAIpB,SAASwuB,IACP,GAAKlc,EAAL,CACA,IAAI5jB,EAAG4E,EAAIgf,EAAM1jB,OAGjB,IAFAukD,EAAY,IAAI99C,MAAM/B,GACtB0hD,EAAW,IAAI3/C,MAAM/B,GAChB5E,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBsmD,EAAStmD,IAAMgnC,EAAOpjB,EAAM5jB,GAAIA,EAAG4jB,GACnC6gC,EAAUzkD,GAAK2wB,MAAM21B,EAAStmD,IAAM,GAAKkiD,EAASt+B,EAAM5jB,GAAIA,EAAG4jB,IAwBnE,MA/CsB,oBAAXojB,IAAuBA,EAASv4B,IAAUu4B,IAC5C,MAALhhC,IAAWA,EAAI,GACV,MAALuE,IAAWA,EAAI,GAyBnB43C,EAAMriB,WAAa,SAAS3uB,GAC1ByS,EAAQzS,EAAG2uB,KAGbqiB,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,EAAwB,oBAAN/wC,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASD,GAG3GC,EAAMnb,OAAS,SAAS71B,GACtB,OAAOlR,UAAUC,QAAU8mC,EAAsB,oBAAN71B,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASnb,GAGzGmb,EAAMn8C,EAAI,SAASmL,GACjB,OAAOlR,UAAUC,QAAU8F,GAAKmL,EAAGgxC,GAASn8C,GAG9Cm8C,EAAM53C,EAAI,SAAS4G,GACjB,OAAOlR,UAAUC,QAAUqK,GAAK4G,EAAGgxC,GAAS53C,GAGvC43C,GCrDM,YAASn8C,GACtB,IACI4d,EACA6gC,EACA/zC,EAHAwxC,EAAWzzC,GAAS,IAOxB,SAAS0zC,EAAM2C,GACb,IAAK,IAA6B9qC,EAAzBha,EAAI,EAAG4E,EAAIgf,EAAM1jB,OAAcF,EAAI4E,IAAK5E,GAC/Cga,EAAO4J,EAAM5jB,IAASw4C,KAAO9nC,EAAG1Q,GAAKga,EAAKhU,GAAKy+C,EAAUzkD,GAAK8kD,EAIlE,SAAShlB,IACP,GAAKlc,EAAL,CACA,IAAI5jB,EAAG4E,EAAIgf,EAAM1jB,OAGjB,IAFAukD,EAAY,IAAI99C,MAAM/B,GACtB8L,EAAK,IAAI/J,MAAM/B,GACV5E,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBykD,EAAUzkD,GAAK2wB,MAAMjgB,EAAG1Q,IAAMgG,EAAE4d,EAAM5jB,GAAIA,EAAG4jB,IAAU,GAAKs+B,EAASt+B,EAAM5jB,GAAIA,EAAG4jB,IAiBtF,MA/BiB,oBAAN5d,IAAkBA,EAAIyI,GAAc,MAALzI,EAAY,GAAKA,IAkB3Dm8C,EAAMriB,WAAa,SAAS3uB,GAC1ByS,EAAQzS,EACR2uB,KAGFqiB,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,EAAwB,oBAAN/wC,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASD,GAG3GC,EAAMn8C,EAAI,SAASmL,GACjB,OAAOlR,UAAUC,QAAU8F,EAAiB,oBAANmL,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASn8C,GAG7Fm8C,GCrCM,YAAS53C,GACtB,IACIqZ,EACA6gC,EACArB,EAHAlB,EAAWzzC,GAAS,IAOxB,SAAS0zC,EAAM2C,GACb,IAAK,IAA6B9qC,EAAzBha,EAAI,EAAG4E,EAAIgf,EAAM1jB,OAAcF,EAAI4E,IAAK5E,GAC/Cga,EAAO4J,EAAM5jB,IAASy4C,KAAO2K,EAAGpjD,GAAKga,EAAKzP,GAAKk6C,EAAUzkD,GAAK8kD,EAIlE,SAAShlB,IACP,GAAKlc,EAAL,CACA,IAAI5jB,EAAG4E,EAAIgf,EAAM1jB,OAGjB,IAFAukD,EAAY,IAAI99C,MAAM/B,GACtBw+C,EAAK,IAAIz8C,MAAM/B,GACV5E,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBykD,EAAUzkD,GAAK2wB,MAAMyyB,EAAGpjD,IAAMuK,EAAEqZ,EAAM5jB,GAAIA,EAAG4jB,IAAU,GAAKs+B,EAASt+B,EAAM5jB,GAAIA,EAAG4jB,IAiBtF,MA/BiB,oBAANrZ,IAAkBA,EAAIkE,GAAc,MAALlE,EAAY,GAAKA,IAkB3D43C,EAAMriB,WAAa,SAAS3uB,GAC1ByS,EAAQzS,EACR2uB,KAGFqiB,EAAMD,SAAW,SAAS/wC,GACxB,OAAOlR,UAAUC,QAAUgiD,EAAwB,oBAAN/wC,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAASD,GAG3GC,EAAM53C,EAAI,SAAS4G,GACjB,OAAOlR,UAAUC,QAAUqK,EAAiB,oBAAN4G,EAAmBA,EAAI1C,IAAU0C,GAAI2uB,IAAcqiB,GAAS53C,GAG7F43C,GC9BF,SAASoE,GAAmBvgD,EAAGvD,GACpC,IAAKzC,GAAKgG,EAAIvD,EAAIuD,EAAEwgD,cAAc/jD,EAAI,GAAKuD,EAAEwgD,iBAAiBz6C,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAI/L,EAAGymD,EAAczgD,EAAEe,MAAM,EAAG/G,GAIhC,MAAO,CACLymD,EAAYvmD,OAAS,EAAIumD,EAAY,GAAKA,EAAY1/C,MAAM,GAAK0/C,GAChEzgD,EAAEe,MAAM/G,EAAI,ICfF,gBAASgG,GACtB,OAAOA,EAAIugD,GAAmBx8C,KAAKS,IAAIxE,KAASA,EAAE,GAAKP,KCFrDihD,GAAK,2EAEM,SAASC,GAAgBC,GACtC,KAAMzkC,EAAQukC,GAAG12B,KAAK42B,IAAa,MAAM,IAAI/kD,MAAM,mBAAqB+kD,GACxE,IAAIzkC,EACJ,OAAO,IAAI0kC,GAAgB,CACzBz9C,KAAM+Y,EAAM,GACZ2kC,MAAO3kC,EAAM,GACb+zB,KAAM/zB,EAAM,GACZ4kC,OAAQ5kC,EAAM,GACd8R,KAAM9R,EAAM,GACZ4c,MAAO5c,EAAM,GACb6kC,MAAO7kC,EAAM,GACb8kC,UAAW9kC,EAAM,IAAMA,EAAM,GAAGpb,MAAM,GACtCmS,KAAMiJ,EAAM,GACZhJ,KAAMgJ,EAAM,MAMT,SAAS0kC,GAAgBD,GAC9BhjD,KAAKwF,UAA0BhF,IAAnBwiD,EAAUx9C,KAAqB,IAAMw9C,EAAUx9C,KAAO,GAClExF,KAAKkjD,WAA4B1iD,IAApBwiD,EAAUE,MAAsB,IAAMF,EAAUE,MAAQ,GACrEljD,KAAKsyC,UAA0B9xC,IAAnBwiD,EAAU1Q,KAAqB,IAAM0Q,EAAU1Q,KAAO,GAClEtyC,KAAKmjD,YAA8B3iD,IAArBwiD,EAAUG,OAAuB,GAAKH,EAAUG,OAAS,GACvEnjD,KAAKqwB,OAAS2yB,EAAU3yB,KACxBrwB,KAAKm7B,WAA4B36B,IAApBwiD,EAAU7nB,WAAsB36B,GAAawiD,EAAU7nB,MACpEn7B,KAAKojD,QAAUJ,EAAUI,MACzBpjD,KAAKqjD,eAAoC7iD,IAAxBwiD,EAAUK,eAA0B7iD,GAAawiD,EAAUK,UAC5ErjD,KAAKsV,OAAS0tC,EAAU1tC,KACxBtV,KAAKuV,UAA0B/U,IAAnBwiD,EAAUztC,KAAqB,GAAKytC,EAAUztC,KAAO,GAZnEwtC,GAAgBtlD,UAAYwlD,GAAgBxlD,UAe5CwlD,GAAgBxlD,UAAUyF,SAAW,WACnC,OAAOlD,KAAKwF,KACNxF,KAAKkjD,MACLljD,KAAKsyC,KACLtyC,KAAKmjD,QACJnjD,KAAKqwB,KAAO,IAAM,UACH7vB,IAAfR,KAAKm7B,MAAsB,GAAKh1B,KAAKI,IAAI,EAAgB,EAAbvG,KAAKm7B,SACjDn7B,KAAKojD,MAAQ,IAAM,UACA5iD,IAAnBR,KAAKqjD,UAA0B,GAAK,IAAMl9C,KAAKI,IAAI,EAAoB,EAAjBvG,KAAKqjD,aAC3DrjD,KAAKsV,KAAO,IAAM,IACnBtV,KAAKuV,MC5CE,ICCJ+tC,GCAPC,GACOtwC,GACAuwC,GCFI,YAASphD,EAAGvD,GACzB,IAAI2D,EAAImgD,GAAmBvgD,EAAGvD,GAC9B,IAAK2D,EAAG,OAAOJ,EAAI,GACnB,IAAIygD,EAAcrgD,EAAE,GAChB44C,EAAW54C,EAAE,GACjB,OAAO44C,EAAW,EAAI,KAAO,IAAIr4C,OAAOq4C,GAAUn6C,KAAK,KAAO4hD,EACxDA,EAAYvmD,OAAS8+C,EAAW,EAAIyH,EAAY1/C,MAAM,EAAGi4C,EAAW,GAAK,IAAMyH,EAAY1/C,MAAMi4C,EAAW,GAC5GyH,EAAc,IAAI9/C,MAAMq4C,EAAWyH,EAAYvmD,OAAS,GAAG2E,KAAK,MCLzD,IACb,IAAK,SAACmB,EAAGvD,GAAJ,OAAe,IAAJuD,GAASqhD,QAAQ5kD,IACjC,EAAK,SAACuD,GAAD,OAAO+D,KAAKqF,MAAMpJ,GAAGc,SAAS,IACnC,EAAK,SAACd,GAAD,OAAOA,EAAI,IAChB,EPRa,SAASA,GACtB,OAAO+D,KAAKS,IAAIxE,EAAI+D,KAAKqF,MAAMpJ,KAAO,KAChCA,EAAEshD,eAAe,MAAMvK,QAAQ,KAAM,IACrC/2C,EAAEc,SAAS,KOMjB,EAAK,SAACd,EAAGvD,GAAJ,OAAUuD,EAAEwgD,cAAc/jD,IAC/B,EAAK,SAACuD,EAAGvD,GAAJ,OAAUuD,EAAEqhD,QAAQ5kD,IACzB,EAAK,SAACuD,EAAGvD,GAAJ,OAAUuD,EAAEuhD,YAAY9kD,IAC7B,EAAK,SAACuD,GAAD,OAAO+D,KAAKqF,MAAMpJ,GAAGc,SAAS,IACnC,EAAK,SAACd,EAAGvD,GAAJ,OAAU+kD,GAAkB,IAAJxhD,EAASvD,IACtC,EAAK+kD,GACL,EHXa,SAASxhD,EAAGvD,GACzB,IAAI2D,EAAImgD,GAAmBvgD,EAAGvD,GAC9B,IAAK2D,EAAG,OAAOJ,EAAI,GACnB,IAAIygD,EAAcrgD,EAAE,GAChB44C,EAAW54C,EAAE,GACbpG,EAAIg/C,GAAYkI,GAAuE,EAAtDn9C,KAAKI,KAAK,EAAGJ,KAAKG,IAAI,EAAGH,KAAKwF,MAAMyvC,EAAW,MAAY,EAC5Fp6C,EAAI6hD,EAAYvmD,OACpB,OAAOF,IAAM4E,EAAI6hD,EACXzmD,EAAI4E,EAAI6hD,EAAc,IAAI9/C,MAAM3G,EAAI4E,EAAI,GAAGC,KAAK,KAChD7E,EAAI,EAAIymD,EAAY1/C,MAAM,EAAG/G,GAAK,IAAMymD,EAAY1/C,MAAM/G,GAC1D,KAAO,IAAI2G,MAAM,EAAI3G,GAAG6E,KAAK,KAAO0hD,GAAmBvgD,EAAG+D,KAAKI,IAAI,EAAG1H,EAAIzC,EAAI,IAAI,IGExF,EAAK,SAACgG,GAAD,OAAO+D,KAAKqF,MAAMpJ,GAAGc,SAAS,IAAI2gD,eACvC,EAAK,SAACzhD,GAAD,OAAO+D,KAAKqF,MAAMpJ,GAAGc,SAAS,MCjBtB,YAASd,GACtB,OAAOA,GCQLrB,GAAMgC,MAAMtF,UAAUsD,IACtB+iD,GAAW,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,OAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAEhE,YAASP,GACtB,ICbsBQ,EAAUC,EDa5B56C,OAA4B5I,IAApB+iD,EAAOQ,eAA+CvjD,IAArB+iD,EAAOS,UAA0B76C,ICbxD46C,EDa+EhjD,GAAIxB,KAAKgkD,EAAOQ,SAAUE,QCb/FD,EDawGT,EAAOS,UAAY,GCZpJ,SAASxlD,EAAO28B,GAOrB,IANA,IAAI/+B,EAAIoC,EAAMlC,OACV0R,EAAI,GACJzI,EAAI,EACJkE,EAAIs6C,EAAS,GACbznD,EAAS,EAENF,EAAI,GAAKqN,EAAI,IACdnN,EAASmN,EAAI,EAAI0xB,IAAO1xB,EAAItD,KAAKI,IAAI,EAAG40B,EAAQ7+B,IACpD0R,EAAEhS,KAAKwC,EAAM0lD,UAAU9nD,GAAKqN,EAAGrN,EAAIqN,OAC9BnN,GAAUmN,EAAI,GAAK0xB,KACxB1xB,EAAIs6C,EAASx+C,GAAKA,EAAI,GAAKw+C,EAASznD,QAGtC,OAAO0R,EAAE5C,UAAUnK,KAAK+iD,KDDtBG,OAAqC3jD,IAApB+iD,EAAOa,SAAyB,GAAKb,EAAOa,SAAS,GAAK,GAC3EC,OAAqC7jD,IAApB+iD,EAAOa,SAAyB,GAAKb,EAAOa,SAAS,GAAK,GAC3EE,OAA6B9jD,IAAnB+iD,EAAOe,QAAwB,IAAMf,EAAOe,QAAU,GAChEC,OAA+B/jD,IAApB+iD,EAAOgB,SAAyBp7C,GEjBlC,SAASo7C,GACtB,OAAO,SAAS/lD,GACd,OAAOA,EAAM26C,QAAQ,UAAU,SAAS/8C,GACtC,OAAOmoD,GAAUnoD,OFcqCooD,CAAezjD,GAAIxB,KAAKgkD,EAAOgB,SAAU5jD,SAC/F8jD,OAA6BjkD,IAAnB+iD,EAAOkB,QAAwB,IAAMlB,EAAOkB,QAAU,GAChEC,OAAyBlkD,IAAjB+iD,EAAOmB,MAAsB,SAAMnB,EAAOmB,MAAQ,GAC1DC,OAAqBnkD,IAAf+iD,EAAOoB,IAAoB,MAAQpB,EAAOoB,IAAM,GAE1D,SAASC,EAAU5B,GAGjB,IAAIx9C,GAFJw9C,EAAYD,GAAgBC,IAEPx9C,KACjB09C,EAAQF,EAAUE,MAClB5Q,EAAO0Q,EAAU1Q,KACjB6Q,EAASH,EAAUG,OACnB9yB,EAAO2yB,EAAU3yB,KACjB8K,EAAQ6nB,EAAU7nB,MAClBioB,EAAQJ,EAAUI,MAClBC,EAAYL,EAAUK,UACtB/tC,EAAO0tC,EAAU1tC,KACjBC,EAAOytC,EAAUztC,KAGR,MAATA,GAAc6tC,GAAQ,EAAM7tC,EAAO,KAG7BsvC,GAAYtvC,UAAqB/U,IAAd6iD,IAA4BA,EAAY,IAAK/tC,GAAO,EAAMC,EAAO,MAG1F8a,GAAkB,MAAT7qB,GAA0B,MAAV09C,KAAgB7yB,GAAO,EAAM7qB,EAAO,IAAK09C,EAAQ,KAI9E,IAAIhrC,EAAoB,MAAXirC,EAAiBgB,EAA4B,MAAXhB,GAAkB,SAAS9/C,KAAKkS,GAAQ,IAAMA,EAAK4W,cAAgB,GAC9G24B,EAAoB,MAAX3B,EAAiBkB,EAAiB,OAAOhhD,KAAKkS,GAAQkvC,EAAU,GAKzEM,EAAaF,GAAYtvC,GACzByvC,EAAc,aAAa3hD,KAAKkS,GAUpC,SAAStC,EAAOzU,GACd,IAEIpC,EAAG4E,EAAGoJ,EAFN66C,EAAc/sC,EACdgtC,EAAcJ,EAGlB,GAAa,MAATvvC,EACF2vC,EAAcH,EAAWvmD,GAAS0mD,EAClC1mD,EAAQ,OACH,CAIL,IAAI2mD,GAHJ3mD,GAASA,GAGmB,GAAK,EAAIA,EAAQ,EAiB7C,GAdAA,EAAQuuB,MAAMvuB,GAASmmD,EAAMI,EAAW5+C,KAAKS,IAAIpI,GAAQ6kD,GAGrD/tC,IAAM9W,ENjFH,SAASiD,GACtB6P,EAAK,IAAK,IAAkCb,EAA9BzP,EAAIS,EAAEnF,OAAQF,EAAI,EAAG+R,GAAM,EAAO/R,EAAI4E,IAAK5E,EACvD,OAAQqF,EAAErF,IACR,IAAK,IAAK+R,EAAKsC,EAAKrU,EAAG,MACvB,IAAK,IAAgB,IAAP+R,IAAUA,EAAK/R,GAAGqU,EAAKrU,EAAG,MACxC,QAAS,KAAMqF,EAAErF,GAAI,MAAMkV,EAASnD,EAAK,IAAGA,EAAK,GAGrD,OAAOA,EAAK,EAAI1M,EAAE0B,MAAM,EAAGgL,GAAM1M,EAAE0B,MAAMsN,EAAK,GAAKhP,EMyE3B2jD,CAAW5mD,IAGzB2mD,GAA4B,KAAV3mD,GAAwB,MAAT8zC,IAAc6S,GAAgB,GAGnEF,GAAeE,EAA0B,MAAT7S,EAAeA,EAAOoS,EAAkB,MAATpS,GAAyB,MAATA,EAAe,GAAKA,GAAQ2S,EAC3GC,GAAwB,MAAT3vC,EAAeuuC,GAAS,EAAIR,GAAiB,GAAK,IAAM4B,GAAeC,GAA0B,MAAT7S,EAAe,IAAM,IAIxH0S,EAEF,IADA5oD,GAAK,EAAG4E,EAAIxC,EAAMlC,SACTF,EAAI4E,GACX,GAA6B,IAAzBoJ,EAAI5L,EAAMq6C,WAAWz8C,KAAcgO,EAAI,GAAI,CAC7C86C,GAAqB,KAAN96C,EAAWk6C,EAAU9lD,EAAM2E,MAAM/G,EAAI,GAAKoC,EAAM2E,MAAM/G,IAAM8oD,EAC3E1mD,EAAQA,EAAM2E,MAAM,EAAG/G,GACvB,OAOJgnD,IAAU/yB,IAAM7xB,EAAQ4K,EAAM5K,EAAOs0B,MAGzC,IAAIx2B,EAAS2oD,EAAY3oD,OAASkC,EAAMlC,OAAS4oD,EAAY5oD,OACzD+oD,EAAU/oD,EAAS6+B,EAAQ,IAAIp4B,MAAMo4B,EAAQ7+B,EAAS,GAAG2E,KAAKuE,GAAQ,GAM1E,OAHI49C,GAAS/yB,IAAM7xB,EAAQ4K,EAAMi8C,EAAU7mD,EAAO6mD,EAAQ/oD,OAAS6+B,EAAQ+pB,EAAY5oD,OAASw2B,KAAWuyB,EAAU,IAG7GnC,GACN,IAAK,IAAK1kD,EAAQymD,EAAczmD,EAAQ0mD,EAAcG,EAAS,MAC/D,IAAK,IAAK7mD,EAAQymD,EAAcI,EAAU7mD,EAAQ0mD,EAAa,MAC/D,IAAK,IAAK1mD,EAAQ6mD,EAAQliD,MAAM,EAAG7G,EAAS+oD,EAAQ/oD,QAAU,GAAK2oD,EAAczmD,EAAQ0mD,EAAcG,EAAQliD,MAAM7G,GAAS,MAC9H,QAASkC,EAAQ6mD,EAAUJ,EAAczmD,EAAQ0mD,EAGnD,OAAOX,EAAS/lD,GAOlB,OAtEA6kD,OAA0B7iD,IAAd6iD,EAA0B,EAChC,SAAShgD,KAAKkS,GAAQpP,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,GAAI+8C,IAC/Cl9C,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,GAAI+8C,IAgE/BpwC,EAAO/P,SAAW,WAChB,OAAO8/C,EAAY,IAGd/vC,EAaT,MAAO,CACLA,OAAQ2xC,EACRpB,aAZF,SAAsBR,EAAWxkD,GAC/B,IAAIuD,EAAI6iD,IAAW5B,EAAYD,GAAgBC,IAAsBztC,KAAO,IAAKytC,IAC7Ep/C,EAAiE,EAA7DuC,KAAKI,KAAK,EAAGJ,KAAKG,IAAI,EAAGH,KAAKwF,MAAMyvC,GAAS58C,GAAS,KAC1DkP,EAAIvH,KAAK4F,IAAI,IAAKnI,GAClBsU,EAAS4rC,GAAS,EAAIlgD,EAAI,GAC9B,OAAO,SAASpF,GACd,OAAOuD,EAAE2L,EAAIlP,GAAS0Z,MJ/Hb,SAASotC,GAAc9jC,GAIpC,OAHA+hC,GAASgC,GAAa/jC,GACtBvO,GAASswC,GAAOtwC,OAChBuwC,GAAeD,GAAOC,aACfD,GAVT+B,GAAc,CACZtB,UAAW,IACXD,SAAU,CAAC,GACXK,SAAU,CAAC,IAAK,MOPH,gBAASpgD,GACtB,OAAOmC,KAAKI,IAAI,GAAI60C,GAASj1C,KAAKS,IAAI5C,MCDzB,YAASA,EAAMxF,GAC5B,OAAO2H,KAAKI,IAAI,EAAgE,EAA7DJ,KAAKI,KAAK,EAAGJ,KAAKG,IAAI,EAAGH,KAAKwF,MAAMyvC,GAAS58C,GAAS,KAAW48C,GAASj1C,KAAKS,IAAI5C,MCDzF,YAASA,EAAMuC,GAE5B,OADAvC,EAAOmC,KAAKS,IAAI5C,GAAOuC,EAAMJ,KAAKS,IAAIL,GAAOvC,EACtCmC,KAAKI,IAAI,EAAG60C,GAAS70C,GAAO60C,GAASp3C,IAAS,GCJ5C6N,GAAU,KACV2zC,GAAW,MACX7lB,GAAKx5B,KAAKkuB,GACVuL,GAASD,GAAK,EACd8lB,GAAY9lB,GAAK,EACjBE,GAAW,EAALF,GAENvL,GAAU,IAAMuL,GAChB+E,GAAU/E,GAAK,IAEf/4B,GAAMT,KAAKS,IACX+tB,GAAOxuB,KAAKwuB,KACZD,GAAQvuB,KAAKuuB,MACb+K,GAAMt5B,KAAKs5B,IACXpzB,GAAOlG,KAAKkG,KACZuB,GAAMzH,KAAKyH,IAEX0nC,IADQnvC,KAAKwF,MACLxF,KAAKmvC,OACb1pC,GAAMzF,KAAKyF,IACXG,GAAM5F,KAAK4F,IACX2zB,GAAMv5B,KAAKu5B,IACX4S,GAAOnsC,KAAKmsC,MAAQ,SAASlwC,GAAK,OAAOA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,GAClEgE,GAAOD,KAAKC,KACZ6kB,GAAM9kB,KAAK8kB,IAEf,SAASuX,GAAKpgC,GACnB,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAIu9B,GAAKx5B,KAAKq8B,KAAKpgC,GAGtC,SAASs6C,GAAKt6C,GACnB,OAAOA,EAAI,EAAIw9B,GAASx9B,GAAK,GAAKw9B,GAASz5B,KAAKu2C,KAAKt6C,GAGhD,SAASsjD,GAAStjD,GACvB,OAAQA,EAAIs9B,GAAIt9B,EAAI,IAAMA,EClCb,SAAS4S,MCAxB,SAAS2wC,GAAezc,EAAU0c,GAC5B1c,GAAY2c,GAAmB1lD,eAAe+oC,EAAS3zB,OACzDswC,GAAmB3c,EAAS3zB,MAAM2zB,EAAU0c,GAIhD,IAAIE,GAAmB,CACrBC,QAAS,SAASzqD,EAAQsqD,GACxBD,GAAerqD,EAAO4tC,SAAU0c,IAElCI,kBAAmB,SAAS1qD,EAAQsqD,GAElC,IADA,IAAIK,EAAW3qD,EAAO2qD,SAAU7pD,GAAK,EAAG4E,EAAIilD,EAAS3pD,SAC5CF,EAAI4E,GAAG2kD,GAAeM,EAAS7pD,GAAG8sC,SAAU0c,KAIrDC,GAAqB,CACvBK,OAAQ,SAAS5qD,EAAQsqD,GACvBA,EAAOO,UAETC,MAAO,SAAS9qD,EAAQsqD,GACtBtqD,EAASA,EAAO2sC,YAChB2d,EAAOj1B,MAAMr1B,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAE5C+qD,WAAY,SAAS/qD,EAAQsqD,GAE3B,IADA,IAAI3d,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAG1F,EAAS2sC,EAAY7rC,GAAIwpD,EAAOj1B,MAAMr1B,EAAO,GAAIA,EAAO,GAAIA,EAAO,KAErFgrD,WAAY,SAAShrD,EAAQsqD,GAC3BW,GAAWjrD,EAAO2sC,YAAa2d,EAAQ,IAEzCY,gBAAiB,SAASlrD,EAAQsqD,GAEhC,IADA,IAAI3d,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAGulD,GAAWte,EAAY7rC,GAAIwpD,EAAQ,IAErDpU,QAAS,SAASl2C,EAAQsqD,GACxBa,GAAcnrD,EAAO2sC,YAAa2d,IAEpCc,aAAc,SAASprD,EAAQsqD,GAE7B,IADA,IAAI3d,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAGylD,GAAcxe,EAAY7rC,GAAIwpD,IAEhDe,mBAAoB,SAASrrD,EAAQsqD,GAEnC,IADA,IAAIgB,EAAatrD,EAAOsrD,WAAYxqD,GAAK,EAAG4E,EAAI4lD,EAAWtqD,SAClDF,EAAI4E,GAAG2kD,GAAeiB,EAAWxqD,GAAIwpD,KAIlD,SAASW,GAAWte,EAAa2d,EAAQiB,GACvC,IAA6CC,EAAzC1qD,GAAK,EAAG4E,EAAIinC,EAAY3rC,OAASuqD,EAErC,IADAjB,EAAOmB,cACE3qD,EAAI4E,GAAG8lD,EAAa7e,EAAY7rC,GAAIwpD,EAAOj1B,MAAMm2B,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACnGlB,EAAOoB,UAGT,SAASP,GAAcxe,EAAa2d,GAClC,IAAIxpD,GAAK,EAAG4E,EAAIinC,EAAY3rC,OAE5B,IADAspD,EAAOqB,iBACE7qD,EAAI4E,GAAGulD,GAAWte,EAAY7rC,GAAIwpD,EAAQ,GACnDA,EAAOsB,aAGM,ICpDXC,GACAC,GACAC,GACAC,GACAC,GDgDW,YAASjsD,EAAQsqD,GAC1BtqD,GAAUwqD,GAAiB3lD,eAAe7E,EAAOia,MACnDuwC,GAAiBxqD,EAAOia,MAAMja,EAAQsqD,GAEtCD,GAAerqD,EAAQsqD,IC7DhB4B,GAAc,IAAIhhD,EAIzBihD,GAAU,IAAIjhD,EAOPkhD,GAAa,CACtB/2B,MAAO3b,GACP+xC,UAAW/xC,GACXgyC,QAAShyC,GACTiyC,aAAc,WACZO,GAAc,IAAIhhD,EAClBkhD,GAAWX,UAAYY,GACvBD,GAAWV,QAAUY,IAEvBV,WAAY,WACV,IAAIW,GAAYL,GAChBC,GAAQ1gD,IAAI8gD,EAAW,EAAIhoB,GAAMgoB,EAAWA,GAC5C7nD,KAAK+mD,UAAY/mD,KAAKgnD,QAAUhnD,KAAK2wB,MAAQ3b,IAE/CmxC,OAAQ,WACNsB,GAAQ1gD,IAAI84B,MAIhB,SAAS8nB,KACPD,GAAW/2B,MAAQm3B,GAGrB,SAASF,KACPG,GAAUZ,GAAUC,IAGtB,SAASU,GAAeE,EAAQC,GAC9BP,GAAW/2B,MAAQo3B,GACnBZ,GAAWa,EAAQZ,GAAQa,EAE3BZ,GADAW,GAAUtjB,GACQ4iB,GAAU7nB,GAAIwoB,GADbA,GAAOvjB,IACkB,EAAI+gB,IAAY8B,GAAU7nB,GAAIuoB,GAG5E,SAASF,GAAUC,EAAQC,GAOzB,IAAIC,GANJF,GAAUtjB,IAMa2iB,GACnBc,EAAWD,GAAW,EAAI,GAAK,EAC/BE,EAAWD,EAAWD,EACtBG,EAAS5oB,GARbwoB,GADmBA,GAAOvjB,IACd,EAAI+gB,IASZ6C,EAAS5oB,GAAIuoB,GACbv6C,EAAI65C,GAAUe,EACd7d,EAAI6c,GAAUe,EAAS36C,EAAI+xB,GAAI2oB,GAC/BtiD,EAAI4H,EAAIy6C,EAAWzoB,GAAI0oB,GAC3BZ,GAAYzgD,IAAI2tB,GAAM5uB,EAAG2kC,IAGzB4c,GAAUW,EAAQV,GAAUe,EAAQd,GAAUe,EAGjC,ICjEXjB,GAASkB,GAAMC,GAASC,GACxBC,GACAvB,GAAUC,GACVnX,GACA0Y,GACAC,GACAp5C,GD2DW,YAASlU,GAGtB,OAFAmsD,GAAU,IAAIjhD,EACdo/C,GAAOtqD,EAAQosD,IACE,EAAVD,IExEF,SAASoB,GAAUC,GACxB,MAAO,CAACp0B,GAAMo0B,EAAU,GAAIA,EAAU,IAAKpM,GAAKoM,EAAU,KAGrD,SAASA,GAAUD,GACxB,IAAIb,EAASa,EAAU,GAAIZ,EAAMY,EAAU,GAAIR,EAAS5oB,GAAIwoB,GAC5D,MAAO,CAACI,EAAS5oB,GAAIuoB,GAASK,EAAS3oB,GAAIsoB,GAAStoB,GAAIuoB,IAGnD,SAASc,GAAapnD,EAAGC,GAC9B,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAGvC,SAASonD,GAAernD,EAAGC,GAChC,MAAO,CAACD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,IAIhF,SAASqnD,GAAoBtnD,EAAGC,GACrCD,EAAE,IAAMC,EAAE,GAAID,EAAE,IAAMC,EAAE,GAAID,EAAE,IAAMC,EAAE,GAGjC,SAASsnD,GAAeC,EAAQz7C,GACrC,MAAO,CAACy7C,EAAO,GAAKz7C,EAAGy7C,EAAO,GAAKz7C,EAAGy7C,EAAO,GAAKz7C,GAI7C,SAAS07C,GAA0B5mD,GACxC,IAAI0pB,EAAI9lB,GAAK5D,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAClDA,EAAE,IAAM0pB,EAAG1pB,EAAE,IAAM0pB,EAAG1pB,EAAE,IAAM0pB,EDjBhC,IAAIm9B,GAAe,CACjB14B,MAAO24B,GACPvC,UAAWwC,GACXvC,QAASwC,GACTvC,aAAc,WACZoC,GAAa14B,MAAQ84B,GACrBJ,GAAatC,UAAY2C,GACzBL,GAAarC,QAAU2C,GACvBhB,GAAW,IAAIniD,EACfkhD,GAAWT,gBAEbC,WAAY,WACVQ,GAAWR,aACXmC,GAAa14B,MAAQ24B,GACrBD,GAAatC,UAAYwC,GACzBF,GAAarC,QAAUwC,GACnBhC,GAAc,GAAGH,KAAYmB,GAAU,KAAMD,KAASE,GAAO,KACxDE,GAAW92C,GAAS42C,GAAO,GAC3BE,IAAW,OAAUJ,IAAQ,IACtC/4C,GAAM,GAAK63C,GAAS73C,GAAM,GAAKg5C,IAEjCrC,OAAQ,WACNkB,KAAYmB,GAAU,KAAMD,KAASE,GAAO,MAIhD,SAASa,GAAYtB,EAAQC,GAC3BW,GAAO5sD,KAAKwT,GAAQ,CAAC63C,GAAUW,EAAQQ,GAAUR,IAC7CC,EAAMM,KAAMA,GAAON,GACnBA,EAAMQ,KAAMA,GAAOR,GAGzB,SAAS2B,GAAU5B,EAAQC,GACzB,IAAIppD,EAAIiqD,GAAU,CAACd,EAAStjB,GAASujB,EAAMvjB,KAC3C,GAAIuL,GAAI,CACN,IAAI4Z,EAASb,GAAe/Y,GAAIpxC,GAE5BirD,EAAad,GADA,CAACa,EAAO,IAAKA,EAAO,GAAI,GACGA,GAC5CT,GAA0BU,GAC1BA,EAAajB,GAAUiB,GACvB,IAGIC,EAHA/nD,EAAQgmD,EAASU,GACjBpW,EAAOtwC,EAAQ,EAAI,GAAK,EACxBgoD,EAAUF,EAAW,GAAK11B,GAAUke,EAEpC2X,EAAerjD,GAAI5E,GAAS,IAC5BioD,GAAgB3X,EAAOoW,GAAUsB,GAAWA,EAAU1X,EAAO0V,IAC/D+B,EAAOD,EAAW,GAAK11B,IACZq0B,KAAMA,GAAOsB,GACwBE,GAAgB3X,EAAOoW,IAA9DsB,GAAWA,EAAU,KAAO,IAAM,MAAiDA,EAAU1X,EAAO0V,IAC7G+B,GAAQD,EAAW,GAAK11B,IACbm0B,KAAMA,GAAOwB,IAEpB9B,EAAMM,KAAMA,GAAON,GACnBA,EAAMQ,KAAMA,GAAOR,IAErBgC,EACEjC,EAASU,GACP3G,GAAMsF,GAASW,GAAUjG,GAAMsF,GAASmB,MAAUA,GAAUR,GAE5DjG,GAAMiG,EAAQQ,IAAWzG,GAAMsF,GAASmB,MAAUnB,GAAUW,GAG9DQ,IAAWnB,IACTW,EAASX,KAASA,GAAUW,GAC5BA,EAASQ,KAASA,GAAUR,IAE5BA,EAASU,GACP3G,GAAMsF,GAASW,GAAUjG,GAAMsF,GAASmB,MAAUA,GAAUR,GAE5DjG,GAAMiG,EAAQQ,IAAWzG,GAAMsF,GAASmB,MAAUnB,GAAUW,QAKtEY,GAAO5sD,KAAKwT,GAAQ,CAAC63C,GAAUW,EAAQQ,GAAUR,IAE/CC,EAAMM,KAAMA,GAAON,GACnBA,EAAMQ,KAAMA,GAAOR,GACvBhY,GAAKpxC,EAAG6pD,GAAUV,EAGpB,SAASuB,KACPF,GAAa14B,MAAQi5B,GAGvB,SAASJ,KACPh6C,GAAM,GAAK63C,GAAS73C,GAAM,GAAKg5C,GAC/Ba,GAAa14B,MAAQ24B,GACrBrZ,GAAK,KAGP,SAASwZ,GAAgBzB,EAAQC,GAC/B,GAAIhY,GAAI,CACN,IAAIjuC,EAAQgmD,EAASU,GACrBC,GAAS5hD,IAAIH,GAAI5E,GAAS,IAAMA,GAASA,EAAQ,EAAI,KAAO,KAAOA,QAEnEmlD,GAAWa,EAAQZ,GAAQa,EAE7BP,GAAW/2B,MAAMq3B,EAAQC,GACzB2B,GAAU5B,EAAQC,GAGpB,SAASyB,KACPhC,GAAWX,YAGb,SAAS4C,KACPF,GAAgBtC,GAAUC,IAC1BM,GAAWV,UACPpgD,GAAI+hD,IAAY92C,KAASw1C,KAAYmB,GAAU,MACnDh5C,GAAM,GAAK63C,GAAS73C,GAAM,GAAKg5C,GAC/BvY,GAAK,KAMP,SAAS8R,GAAMsF,EAASmB,GACtB,OAAQA,GAAWnB,GAAW,EAAImB,EAAU,IAAMA,EAGpD,SAAS0B,GAAavoD,EAAGC,GACvB,OAAOD,EAAE,GAAKC,EAAE,GAGlB,SAASuoD,GAAc36C,EAAOpN,GAC5B,OAAOoN,EAAM,IAAMA,EAAM,GAAKA,EAAM,IAAMpN,GAAKA,GAAKoN,EAAM,GAAKpN,EAAIoN,EAAM,IAAMA,EAAM,GAAKpN,EAG7E,IE1IXgoD,GAAIC,GACJC,GAAIC,GAAIC,GACRC,GAAIC,GAAIC,GACRC,GAAIC,GAAIC,GACR3D,GAAUC,GACVr6C,GAAI60B,GAAImpB,GFqIG,YAASC,GACtB,IAAI5uD,EAAG4E,EAAGW,EAAGC,EAAGqpD,EAAQC,EAAUlpD,EAOlC,GALAymD,GAAOD,KAAYnB,GAAUkB,GAAOz1B,KACpC81B,GAAS,GACThD,GAAOoF,EAAS3B,IAGZroD,EAAI4nD,GAAOtsD,OAAQ,CAIrB,IAHAssD,GAAO1+C,KAAKggD,IAGP9tD,EAAI,EAAkB6uD,EAAS,CAAxBtpD,EAAIinD,GAAO,IAAkBxsD,EAAI4E,IAAK5E,EAE5C+tD,GAAcxoD,GADlBC,EAAIgnD,GAAOxsD,IACY,KAAO+tD,GAAcxoD,EAAGC,EAAE,KAC3CmgD,GAAMpgD,EAAE,GAAIC,EAAE,IAAMmgD,GAAMpgD,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAKC,EAAE,IAChDmgD,GAAMngD,EAAE,GAAID,EAAE,IAAMogD,GAAMpgD,EAAE,GAAIA,EAAE,MAAKA,EAAE,GAAKC,EAAE,KAEpDqpD,EAAOjvD,KAAK2F,EAAIC,GAMpB,IAAKspD,GAAYp4B,IAAiC12B,EAAI,EAAGuF,EAAIspD,EAAlCjqD,EAAIiqD,EAAO3uD,OAAS,GAAyBF,GAAK4E,EAAGW,EAAIC,IAAKxF,EACvFwF,EAAIqpD,EAAO7uD,IACN4F,EAAQ+/C,GAAMpgD,EAAE,GAAIC,EAAE,KAAOspD,IAAUA,EAAWlpD,EAAOqlD,GAAUzlD,EAAE,GAAI4mD,GAAU7mD,EAAE,IAM9F,OAFAinD,GAASp5C,GAAQ,KAEV63C,KAAYv0B,KAAYy1B,KAASz1B,IAClC,CAAC,CAACjxB,IAAKA,KAAM,CAACA,IAAKA,MACnB,CAAC,CAACwlD,GAASkB,IAAO,CAACC,GAASC,MErKhC0C,GAAiB,CACnBhF,OAAQnxC,GACR2b,MAAOy6B,GACPrE,UAAWsE,GACXrE,QAASsE,GACTrE,aAAc,WACZkE,GAAepE,UAAYwE,GAC3BJ,GAAenE,QAAUwE,IAE3BtE,WAAY,WACViE,GAAepE,UAAYsE,GAC3BF,GAAenE,QAAUsE,KAK7B,SAASF,GAAcpD,EAAQC,GAC7BD,GAAUtjB,GACV,IAAI2jB,EAAS5oB,GADMwoB,GAAOvjB,IAE1B+mB,GAAuBpD,EAAS5oB,GAAIuoB,GAASK,EAAS3oB,GAAIsoB,GAAStoB,GAAIuoB,IAGzE,SAASwD,GAAuBrpD,EAAGuE,EAAGgH,KAClCy8C,GACFE,KAAOloD,EAAIkoD,IAAMF,GACjBG,KAAO5jD,EAAI4jD,IAAMH,GACjBI,KAAO78C,EAAI68C,IAAMJ,GAGnB,SAASiB,KACPF,GAAex6B,MAAQ+6B,GAGzB,SAASA,GAAuB1D,EAAQC,GACtCD,GAAUtjB,GACV,IAAI2jB,EAAS5oB,GADMwoB,GAAOvjB,IAE1B33B,GAAKs7C,EAAS5oB,GAAIuoB,GAClBpmB,GAAKymB,EAAS3oB,GAAIsoB,GAClB+C,GAAKrrB,GAAIuoB,GACTkD,GAAex6B,MAAQg7B,GACvBF,GAAuB1+C,GAAI60B,GAAImpB,IAGjC,SAASY,GAAkB3D,EAAQC,GACjCD,GAAUtjB,GACV,IAAI2jB,EAAS5oB,GADMwoB,GAAOvjB,IAEtBtiC,EAAIimD,EAAS5oB,GAAIuoB,GACjBrhD,EAAI0hD,EAAS3oB,GAAIsoB,GACjBr6C,EAAI+xB,GAAIuoB,GACR7tB,EAAI1F,GAAMtuB,IAAMg0B,EAAIwH,GAAKj0B,EAAIo9C,GAAKpkD,GAAKyzB,GAAKA,EAAI2wB,GAAK3oD,EAAI2K,GAAKY,GAAKysB,GAAKA,EAAIrtB,GAAKpG,EAAIi7B,GAAKx/B,GAAKg4B,GAAIrtB,GAAK3K,EAAIw/B,GAAKj7B,EAAIokD,GAAKp9C,GAC9H08C,IAAMjwB,EACNqwB,IAAMrwB,GAAKrtB,IAAMA,GAAK3K,IACtBsoD,IAAMtwB,GAAKwH,IAAMA,GAAKj7B,IACtBgkD,IAAMvwB,GAAK2wB,IAAMA,GAAKp9C,IACtB89C,GAAuB1+C,GAAI60B,GAAImpB,IAGjC,SAASO,KACPH,GAAex6B,MAAQy6B,GAKzB,SAASG,KACPJ,GAAex6B,MAAQi7B,GAGzB,SAASJ,KACPK,GAAkB1E,GAAUC,IAC5B+D,GAAex6B,MAAQy6B,GAGzB,SAASQ,GAAuB5D,EAAQC,GACtCd,GAAWa,EAAQZ,GAAQa,EAC3BD,GAAUtjB,GAASujB,GAAOvjB,GAC1BymB,GAAex6B,MAAQk7B,GACvB,IAAIxD,EAAS5oB,GAAIwoB,GACjBl7C,GAAKs7C,EAAS5oB,GAAIuoB,GAClBpmB,GAAKymB,EAAS3oB,GAAIsoB,GAClB+C,GAAKrrB,GAAIuoB,GACTwD,GAAuB1+C,GAAI60B,GAAImpB,IAGjC,SAASc,GAAkB7D,EAAQC,GACjCD,GAAUtjB,GACV,IAAI2jB,EAAS5oB,GADMwoB,GAAOvjB,IAEtBtiC,EAAIimD,EAAS5oB,GAAIuoB,GACjBrhD,EAAI0hD,EAAS3oB,GAAIsoB,GACjBr6C,EAAI+xB,GAAIuoB,GACRld,EAAKnJ,GAAKj0B,EAAIo9C,GAAKpkD,EACnBqkC,EAAK+f,GAAK3oD,EAAI2K,GAAKY,EACnBm+C,EAAK/+C,GAAKpG,EAAIi7B,GAAKx/B,EACnB+K,EAAImoC,GAAMvK,EAAIC,EAAI8gB,GAClB1xB,EAAIsiB,GAAKvvC,GACTrH,EAAIqH,IAAMitB,EAAIjtB,EAClBy9C,GAAG7jD,IAAIjB,EAAIilC,GACX8f,GAAG9jD,IAAIjB,EAAIklC,GACX8f,GAAG/jD,IAAIjB,EAAIgmD,GACXzB,IAAMjwB,EACNqwB,IAAMrwB,GAAKrtB,IAAMA,GAAK3K,IACtBsoD,IAAMtwB,GAAKwH,IAAMA,GAAKj7B,IACtBgkD,IAAMvwB,GAAK2wB,IAAMA,GAAKp9C,IACtB89C,GAAuB1+C,GAAI60B,GAAImpB,IAGlB,gBAASzvD,GACtB8uD,GAAKC,GACLC,GAAKC,GAAKC,GACVC,GAAKC,GAAKC,GAAK,EACfC,GAAK,IAAIpkD,EACTqkD,GAAK,IAAIrkD,EACTskD,GAAK,IAAItkD,EACTo/C,GAAOtqD,EAAQ6vD,IAEf,IAAI/oD,GAAKwoD,GACLjkD,GAAKkkD,GACLl9C,GAAKm9C,GACL39C,EAAImoC,GAAMlzC,EAAGuE,EAAGgH,GAGpB,OAAIR,EAAIq4C,KACNpjD,EAAIqoD,GAAI9jD,EAAI+jD,GAAI/8C,EAAIg9C,GAEhBN,GAAKx4C,KAASzP,EAAIkoD,GAAI3jD,EAAI4jD,GAAI58C,EAAI68C,KACtCr9C,EAAImoC,GAAMlzC,EAAGuE,EAAGgH,IAER63C,IAAiB,CAAC3jD,IAAKA,KAG1B,CAAC6yB,GAAM/tB,EAAGvE,GAAKgyB,GAASsoB,GAAK/uC,EAAIR,GAAKinB,KC7IhC,YAAShyB,GACtB,OAAO,WACL,OAAOA,ICFI,YAAST,EAAGC,GAEzB,SAASmqD,EAAQ3pD,EAAGuE,GAClB,OAAOvE,EAAIT,EAAES,EAAGuE,GAAI/E,EAAEQ,EAAE,GAAIA,EAAE,IAOhC,OAJIT,EAAEqqD,QAAUpqD,EAAEoqD,SAAQD,EAAQC,OAAS,SAAS5pD,EAAGuE,GACrD,OAAOvE,EAAIR,EAAEoqD,OAAO5pD,EAAGuE,KAAShF,EAAEqqD,OAAO5pD,EAAE,GAAIA,EAAE,MAG5C2pD,GCPT,SAASE,GAAiBjE,EAAQC,GAChC,MAAO,CAACrhD,GAAIohD,GAAUroB,GAAKqoB,EAAS7hD,KAAKqF,OAAOw8C,EAASnoB,IAAOA,GAAMmoB,EAAQC,GAKzE,SAASiE,GAAcC,EAAaC,EAAUC,GACnD,OAAQF,GAAetsB,IAAQusB,GAAYC,EAAaN,GAAQO,GAAeH,GAAcI,GAAiBH,EAAUC,IACpHC,GAAeH,GACdC,GAAYC,EAAaE,GAAiBH,EAAUC,GACrDJ,GAGN,SAASO,GAAsBL,GAC7B,OAAO,SAASnE,EAAQC,GACtB,MAA8B,EAAvBD,GAAUmE,GAAuBxsB,GAAKqoB,EAASnoB,GAAMmoB,GAAUroB,GAAKqoB,EAASnoB,GAAMmoB,EAAQC,IAItG,SAASqE,GAAeH,GACtB,IAAIM,EAAWD,GAAsBL,GAErC,OADAM,EAAST,OAASQ,IAAuBL,GAClCM,EAGT,SAASF,GAAiBH,EAAUC,GAClC,IAAIK,EAAcjtB,GAAI2sB,GAClBO,EAAcjtB,GAAI0sB,GAClBQ,EAAgBntB,GAAI4sB,GACpBQ,EAAgBntB,GAAI2sB,GAExB,SAASI,EAASzE,EAAQC,GACxB,IAAII,EAAS5oB,GAAIwoB,GACb7lD,EAAIq9B,GAAIuoB,GAAUK,EAClB1hD,EAAI+4B,GAAIsoB,GAAUK,EAClB16C,EAAI+xB,GAAIuoB,GACRv6C,EAAIC,EAAI++C,EAActqD,EAAIuqD,EAC9B,MAAO,CACLj4B,GAAM/tB,EAAIimD,EAAgBl/C,EAAIm/C,EAAezqD,EAAIsqD,EAAc/+C,EAAIg/C,GACnEjQ,GAAKhvC,EAAIk/C,EAAgBjmD,EAAIkmD,IAgBjC,OAZAJ,EAAST,OAAS,SAAShE,EAAQC,GACjC,IAAII,EAAS5oB,GAAIwoB,GACb7lD,EAAIq9B,GAAIuoB,GAAUK,EAClB1hD,EAAI+4B,GAAIsoB,GAAUK,EAClB16C,EAAI+xB,GAAIuoB,GACRv6C,EAAIC,EAAIi/C,EAAgBjmD,EAAIkmD,EAChC,MAAO,CACLn4B,GAAM/tB,EAAIimD,EAAgBj/C,EAAIk/C,EAAezqD,EAAIsqD,EAAch/C,EAAIi/C,GACnEjQ,GAAKhvC,EAAIg/C,EAActqD,EAAIuqD,KAIxBF,EAnDTR,GAAiBD,OAASC,GAsDX,gBAAS33B,GAGtB,SAASw4B,EAAQ7kB,GAEf,OADAA,EAAc3T,EAAO2T,EAAY,GAAKvD,GAASuD,EAAY,GAAKvD,KAC7C,IAAMtQ,GAAS6T,EAAY,IAAM7T,GAAS6T,EAQ/D,OAZA3T,EAAS43B,GAAc53B,EAAO,GAAKoQ,GAASpQ,EAAO,GAAKoQ,GAASpQ,EAAOh4B,OAAS,EAAIg4B,EAAO,GAAKoQ,GAAU,GAO3GooB,EAAQd,OAAS,SAAS/jB,GAExB,OADAA,EAAc3T,EAAO03B,OAAO/jB,EAAY,GAAKvD,GAASuD,EAAY,GAAKvD,KACpD,IAAMtQ,GAAS6T,EAAY,IAAM7T,GAAS6T,GAGxD6kB,GCpEF,SAASC,GAAanH,EAAQxiB,EAAQphC,EAAOgrD,EAAWn6B,EAAItF,GACjE,GAAKvrB,EAAL,CACA,IAAIirD,EAAYxtB,GAAI2D,GAChB8pB,EAAYxtB,GAAI0D,GAChBp/B,EAAOgpD,EAAYhrD,EACb,MAAN6wB,GACFA,EAAKuQ,EAAS4pB,EAAYntB,GAC1BtS,EAAK6V,EAASp/B,EAAO,IAErB6uB,EAAKs6B,GAAaF,EAAWp6B,GAC7BtF,EAAK4/B,GAAaF,EAAW1/B,IACzBy/B,EAAY,EAAIn6B,EAAKtF,EAAKsF,EAAKtF,KAAIsF,GAAMm6B,EAAYntB,KAE3D,IAAK,IAAIlP,EAAO3iB,EAAI6kB,EAAIm6B,EAAY,EAAIh/C,EAAIuf,EAAKvf,EAAIuf,EAAIvf,GAAKhK,EAC5D2sB,EAAQk4B,GAAU,CAACoE,GAAYC,EAAYztB,GAAIzxB,IAAKk/C,EAAYxtB,GAAI1xB,KACpE43C,EAAOj1B,MAAMA,EAAM,GAAIA,EAAM,KAKjC,SAASw8B,GAAaF,EAAWt8B,IAC/BA,EAAQm4B,GAAUn4B,IAAc,IAAMs8B,EACtC7D,GAA0Bz4B,GAC1B,IAAIyS,EAASZ,IAAM7R,EAAM,IACzB,SAAUA,EAAM,GAAK,GAAKyS,EAASA,GAAUvD,GAAMhuB,IAAWguB,GAGjD,kBACb,IAGIyG,EACAhS,EAJA7xB,EAASoI,GAAS,CAAC,EAAG,IACtBu4B,EAASv4B,GAAS,IAClBw4C,EAAYx4C,GAAS,GAGrB+6C,EAAS,CAACj1B,MAEd,SAAevuB,EAAGuE,GAChB2/B,EAAKtqC,KAAKoG,EAAIkyB,EAAOlyB,EAAGuE,IACxBvE,EAAE,IAAMgyB,GAAShyB,EAAE,IAAMgyB,KAG3B,SAASg5B,IACP,IAAIhjD,EAAI3H,EAAOxG,MAAM+D,KAAM3D,WACvBuT,EAAIwzB,EAAOnnC,MAAM+D,KAAM3D,WAAaqoC,GACpC7lC,EAAIwkD,EAAUpnD,MAAM+D,KAAM3D,WAAaqoC,GAM3C,OALA4B,EAAO,GACPhS,EAAS43B,IAAe9hD,EAAE,GAAKs6B,IAAUt6B,EAAE,GAAKs6B,GAAS,GAAGsnB,OAC5De,GAAanH,EAAQh2C,EAAG/Q,EAAG,GAC3BuL,EAAI,CAACmL,KAAM,UAAW0yB,YAAa,CAAC3B,IACpCA,EAAOhS,EAAS,KACTlqB,EAeT,OAZAgjD,EAAO3qD,OAAS,SAAS8K,GACvB,OAAOlR,UAAUC,QAAUmG,EAAsB,oBAAN8K,EAAmBA,EAAI1C,GAAS,EAAE0C,EAAE,IAAKA,EAAE,KAAM6/C,GAAU3qD,GAGxG2qD,EAAOhqB,OAAS,SAAS71B,GACvB,OAAOlR,UAAUC,QAAU8mC,EAAsB,oBAAN71B,EAAmBA,EAAI1C,IAAU0C,GAAI6/C,GAAUhqB,GAG5FgqB,EAAO/J,UAAY,SAAS91C,GAC1B,OAAOlR,UAAUC,QAAU+mD,EAAyB,oBAAN91C,EAAmBA,EAAI1C,IAAU0C,GAAI6/C,GAAU/J,GAGxF+J,GCpEM,cACb,IACIl5C,EADAm5C,EAAQ,GAEZ,MAAO,CACL18B,MAAO,SAASvuB,EAAGuE,EAAGwG,GACpB+G,EAAKlY,KAAK,CAACoG,EAAGuE,EAAGwG,KAEnB45C,UAAW,WACTsG,EAAMrxD,KAAKkY,EAAO,KAEpB8yC,QAAShyC,GACTs4C,OAAQ,WACFD,EAAM/wD,OAAS,GAAG+wD,EAAMrxD,KAAKqxD,EAAMhoD,MAAMoQ,OAAO43C,EAAMjgD,WAE5DvN,OAAQ,WACN,IAAIA,EAASwtD,EAGb,OAFAA,EAAQ,GACRn5C,EAAO,KACArU,KClBE,YAAS8B,EAAGC,GACzB,OAAOgF,GAAIjF,EAAE,GAAKC,EAAE,IAAMiQ,IAAWjL,GAAIjF,EAAE,GAAKC,EAAE,IAAMiQ,ICA1D,SAAS07C,GAAa58B,EAAOyN,EAAQltB,EAAOs8C,GAC1CxtD,KAAKoC,EAAIuuB,EACT3wB,KAAK2N,EAAIywB,EACTp+B,KAAKrC,EAAIuT,EACTlR,KAAK4D,EAAI4pD,EACTxtD,KAAK8F,GAAI,EACT9F,KAAKgB,EAAIhB,KAAKnB,EAAI,KAML,gBAAS4uD,EAAUC,EAAqBC,EAAap3B,EAAaqvB,GAC/E,IAEIxpD,EACA4E,EAHA+0C,EAAU,GACV6X,EAAO,GAyBX,GArBAH,EAASjxD,SAAQ,SAASqxD,GACxB,MAAK7sD,EAAI6sD,EAAQvxD,OAAS,IAAM,GAAhC,CACA,IAAI0E,EAAqCoB,EAAlC6tC,EAAK4d,EAAQ,GAAIzd,EAAKyd,EAAQ7sD,GAErC,GAAI8sD,GAAW7d,EAAIG,GAAK,CACtB,IAAKH,EAAG,KAAOG,EAAG,GAAI,CAEpB,IADAwV,EAAOmB,YACF3qD,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGwpD,EAAOj1B,OAAOsf,EAAK4d,EAAQzxD,IAAI,GAAI6zC,EAAG,IAE9D,YADA2V,EAAOoB,UAIT5W,EAAG,IAAM,KAGX2F,EAAQ/5C,KAAKoG,EAAI,IAAImrD,GAAatd,EAAI4d,EAAS,MAAM,IACrDD,EAAK5xD,KAAKoG,EAAEzE,EAAI,IAAI4vD,GAAatd,EAAI,KAAM7tC,GAAG,IAC9C2zC,EAAQ/5C,KAAKoG,EAAI,IAAImrD,GAAand,EAAIyd,EAAS,MAAM,IACrDD,EAAK5xD,KAAKoG,EAAEzE,EAAI,IAAI4vD,GAAand,EAAI,KAAMhuC,GAAG,QAG3C2zC,EAAQz5C,OAAb,CAMA,IAJAsxD,EAAK1jD,KAAKwjD,GACV1M,GAAKjL,GACLiL,GAAK4M,GAEAxxD,EAAI,EAAG4E,EAAI4sD,EAAKtxD,OAAQF,EAAI4E,IAAK5E,EACpCwxD,EAAKxxD,GAAGwH,EAAI+pD,GAAeA,EAO7B,IAJA,IACIvvB,EACAzN,EAFAzlB,EAAQ6qC,EAAQ,KAIV,CAIR,IAFA,IAAIgY,EAAU7iD,EACV8iD,GAAY,EACTD,EAAQjoD,GAAG,IAAKioD,EAAUA,EAAQ/sD,KAAOkK,EAAO,OACvDkzB,EAAS2vB,EAAQpgD,EACjBi4C,EAAOmB,YACP,EAAG,CAED,GADAgH,EAAQjoD,EAAIioD,EAAQpwD,EAAEmI,GAAI,EACtBioD,EAAQnqD,EAAG,CACb,GAAIoqD,EACF,IAAK5xD,EAAI,EAAG4E,EAAIo9B,EAAO9hC,OAAQF,EAAI4E,IAAK5E,EAAGwpD,EAAOj1B,OAAOA,EAAQyN,EAAOhiC,IAAI,GAAIu0B,EAAM,SAEtF4F,EAAYw3B,EAAQ3rD,EAAG2rD,EAAQ/sD,EAAEoB,EAAG,EAAGwjD,GAEzCmI,EAAUA,EAAQ/sD,MACb,CACL,GAAIgtD,EAEF,IADA5vB,EAAS2vB,EAAQlvD,EAAE8O,EACdvR,EAAIgiC,EAAO9hC,OAAS,EAAGF,GAAK,IAAKA,EAAGwpD,EAAOj1B,OAAOA,EAAQyN,EAAOhiC,IAAI,GAAIu0B,EAAM,SAEpF4F,EAAYw3B,EAAQ3rD,EAAG2rD,EAAQlvD,EAAEuD,GAAI,EAAGwjD,GAE1CmI,EAAUA,EAAQlvD,EAGpBu/B,GADA2vB,EAAUA,EAAQpwD,GACDgQ,EACjBqgD,GAAaA,SACLD,EAAQjoD,GAClB8/C,EAAOoB,aAIX,SAAShG,GAAKj8C,GACZ,GAAM/D,EAAI+D,EAAMzI,OAAhB,CAKA,IAJA,IAAI0E,EAGAY,EAFAxF,EAAI,EACJuF,EAAIoD,EAAM,KAEL3I,EAAI4E,GACXW,EAAEX,EAAIY,EAAImD,EAAM3I,GAChBwF,EAAE/C,EAAI8C,EACNA,EAAIC,EAEND,EAAEX,EAAIY,EAAImD,EAAM,GAChBnD,EAAE/C,EAAI8C,GCjGR,SAASssD,GAAUt9B,GACjB,OAAO/pB,GAAI+pB,EAAM,KAAOgP,GAAKhP,EAAM,GAAK2hB,GAAK3hB,EAAM,MAAQ/pB,GAAI+pB,EAAM,IAAMgP,IAAME,GAAMF,IAG1E,gBAASqI,EAASrX,GAC/B,IAAIq3B,EAASiG,GAAUt9B,GACnBs3B,EAAMt3B,EAAM,GACZ23B,EAAS5oB,GAAIuoB,GACb4B,EAAS,CAACnqB,GAAIsoB,IAAUvoB,GAAIuoB,GAAS,GACrCjG,EAAQ,EACRmM,EAAU,EAEVtoD,EAAM,IAAIY,EAEC,IAAX8hD,EAAcL,EAAMroB,GAAS/tB,IACZ,IAAZy2C,IAAeL,GAAOroB,GAAS/tB,IAExC,IAAK,IAAIzV,EAAI,EAAG4E,EAAIgnC,EAAQ1rC,OAAQF,EAAI4E,IAAK5E,EAC3C,GAAM+Q,GAAKm5B,EAAO0B,EAAQ5rC,IAAIE,OAS9B,IARA,IAAIgqC,EACAn5B,EACAoxB,EAAS+H,EAAKn5B,EAAI,GAClBk6C,EAAU4G,GAAU1vB,GACpBgqB,EAAOhqB,EAAO,GAAK,EAAIknB,GACvB8B,EAAU7nB,GAAI6oB,GACdjB,EAAU7nB,GAAI8oB,GAEThjD,EAAI,EAAGA,EAAI4H,IAAK5H,EAAG8hD,EAAUmB,EAASjB,EAAU4G,EAAS7G,EAAU8G,EAAS7vB,EAAS8vB,EAAQ,CACpG,IAAIA,EAAS/nB,EAAK/gC,GACdijD,EAAUyF,GAAUI,GACpB5F,EAAO4F,EAAO,GAAK,EAAI5I,GACvB0I,EAAUzuB,GAAI+oB,GACd2F,EAAU3uB,GAAIgpB,GACdzmD,EAAQwmD,EAAUnB,EAClB/U,EAAOtwC,GAAS,EAAI,GAAK,EACzBssD,EAAWhc,EAAOtwC,EAClBioD,EAAeqE,EAAW3uB,GAC1BjyB,EAAI65C,EAAU4G,EAOlB,GALAvoD,EAAImB,IAAI2tB,GAAMhnB,EAAI4kC,EAAO5S,GAAI4uB,GAAWhH,EAAU8G,EAAU1gD,EAAI+xB,GAAI6uB,KACpEvM,GAASkI,EAAejoD,EAAQswC,EAAOzS,GAAM79B,EAIzCioD,EAAe5C,GAAWW,EAASQ,GAAWR,EAAQ,CACxD,IAAIrlB,EAAMqmB,GAAeF,GAAUvqB,GAASuqB,GAAUuF,IACtDjF,GAA0BzmB,GAC1B,IAAItxB,EAAe23C,GAAea,EAAQlnB,GAC1CymB,GAA0B/3C,GAC1B,IAAIk9C,GAAUtE,EAAejoD,GAAS,GAAK,EAAI,GAAK06C,GAAKrrC,EAAa,KAClE42C,EAAMsG,GAAUtG,IAAQsG,IAAW5rB,EAAI,IAAMA,EAAI,OACnDurB,GAAWjE,EAAejoD,GAAS,EAAI,GAAK,IAiBpD,OAAQ+/C,GAAQ,MAAYA,EAAQlwC,IAAWjM,GAAM,OAAwB,EAAVsoD,GClEtD,YAASM,EAAcC,EAAUl4B,EAAarrB,GAC3D,OAAO,SAASwjD,GACd,IAII1mB,EACAylB,EACAnnB,EANApyB,EAAOu6C,EAASC,GAChBC,EAAaC,KACbC,EAAWJ,EAASE,GACpBG,GAAiB,EAKjBlB,EAAO,CACTj9B,MAAOA,EACPo2B,UAAWA,EACXC,QAASA,EACTC,aAAc,WACZ2G,EAAKj9B,MAAQo+B,EACbnB,EAAK7G,UAAYiI,EACjBpB,EAAK5G,QAAUiI,EACfxB,EAAW,GACXzlB,EAAU,IAEZkf,WAAY,WACV0G,EAAKj9B,MAAQA,EACbi9B,EAAK7G,UAAYA,EACjB6G,EAAK5G,QAAUA,EACfyG,EAAW5+C,GAAM4+C,GACjB,IAAIE,EAAcuB,GAAgBlnB,EAAS98B,GACvCuiD,EAASnxD,QACNwyD,IAAgBJ,EAAKzH,eAAgB6H,GAAiB,GAC3DK,GAAW1B,EAAUC,GAAqBC,EAAap3B,EAAam4B,IAC3Df,IACJmB,IAAgBJ,EAAKzH,eAAgB6H,GAAiB,GAC3DJ,EAAK3H,YACLxwB,EAAY,KAAM,KAAM,EAAGm4B,GAC3BA,EAAK1H,WAEH8H,IAAgBJ,EAAKxH,aAAc4H,GAAiB,GACxDrB,EAAWzlB,EAAU,MAEvBme,OAAQ,WACNuI,EAAKzH,eACLyH,EAAK3H,YACLxwB,EAAY,KAAM,KAAM,EAAGm4B,GAC3BA,EAAK1H,UACL0H,EAAKxH,eAIT,SAASv2B,EAAMq3B,EAAQC,GACjBuG,EAAaxG,EAAQC,IAAMyG,EAAK/9B,MAAMq3B,EAAQC,GAGpD,SAASmH,EAAUpH,EAAQC,GACzB/zC,EAAKyc,MAAMq3B,EAAQC,GAGrB,SAASlB,IACP6G,EAAKj9B,MAAQy+B,EACbl7C,EAAK6yC,YAGP,SAASC,IACP4G,EAAKj9B,MAAQA,EACbzc,EAAK8yC,UAGP,SAAS+H,EAAU/G,EAAQC,GACzB3hB,EAAKtqC,KAAK,CAACgsD,EAAQC,IACnB4G,EAASl+B,MAAMq3B,EAAQC,GAGzB,SAAS+G,IACPH,EAAS9H,YACTzgB,EAAO,GAGT,SAAS2oB,IACPF,EAAUzoB,EAAK,GAAG,GAAIA,EAAK,GAAG,IAC9BuoB,EAAS7H,UAET,IAEI5qD,EAA4B+Q,EAC5B0gD,EACAl9B,EAJA8L,EAAQoyB,EAASpyB,QACjB4yB,EAAeV,EAAW9uD,SACvBmB,EAAIquD,EAAa/yD,OAQxB,GAJAgqC,EAAKjhC,MACL2iC,EAAQhsC,KAAKsqC,GACbA,EAAO,KAEFtlC,EAGL,GAAY,EAARy7B,GAEF,IAAKtvB,GADL0gD,EAAUwB,EAAa,IACN/yD,OAAS,GAAK,EAAG,CAGhC,IAFKwyD,IAAgBJ,EAAKzH,eAAgB6H,GAAiB,GAC3DJ,EAAK3H,YACA3qD,EAAI,EAAGA,EAAI+Q,IAAK/Q,EAAGsyD,EAAK/9B,OAAOA,EAAQk9B,EAAQzxD,IAAI,GAAIu0B,EAAM,IAClE+9B,EAAK1H,gBAOLhmD,EAAI,GAAa,EAARy7B,GAAW4yB,EAAarzD,KAAKqzD,EAAahqD,MAAMoQ,OAAO45C,EAAajiD,UAEjFqgD,EAASzxD,KAAKqzD,EAAazzD,OAAO0zD,KAGpC,OAAO1B,IAIX,SAAS0B,GAAazB,GACpB,OAAOA,EAAQvxD,OAAS,EAK1B,SAASoxD,GAAoB/rD,EAAGC,GAC9B,QAASD,EAAIA,EAAES,GAAG,GAAK,EAAIT,EAAE,GAAKi+B,GAAS/tB,GAAU+tB,GAASj+B,EAAE,MACvDC,EAAIA,EAAEQ,GAAG,GAAK,EAAIR,EAAE,GAAKg+B,GAAS/tB,GAAU+tB,GAASh+B,EAAE,IC9HnDgsD,WACb,WAAa,OAAO,KAStB,SAA8BhI,GAC5B,IAGInpB,EAHA4qB,EAAUxlD,IACV0mD,EAAO1mD,IACP0tD,EAAQ1tD,IAGZ,MAAO,CACLklD,UAAW,WACTnB,EAAOmB,YACPtqB,EAAQ,GAEV9L,MAAO,SAAS63B,EAASC,GACvB,IAAI+G,EAAQhH,EAAU,EAAI7oB,IAAMA,GAC5B39B,EAAQ4E,GAAI4hD,EAAUnB,GACtBzgD,GAAI5E,EAAQ29B,IAAM9tB,IACpB+zC,EAAOj1B,MAAM02B,EAASkB,GAAQA,EAAOE,GAAQ,EAAI,EAAI7oB,IAAUA,IAC/DgmB,EAAOj1B,MAAM4+B,EAAOhH,GACpB3C,EAAOoB,UACPpB,EAAOmB,YACPnB,EAAOj1B,MAAM6+B,EAAOjH,GACpB3C,EAAOj1B,MAAM63B,EAASD,GACtB9rB,EAAQ,GACC8yB,IAAUC,GAASxtD,GAAS29B,KACjC/4B,GAAIygD,EAAUkI,GAAS19C,KAASw1C,GAAWkI,EAAQ19C,IACnDjL,GAAI4hD,EAAUgH,GAAS39C,KAAS22C,GAAWgH,EAAQ39C,IACvD02C,EAoBR,SAAmClB,EAASkB,EAAMC,EAASC,GACzD,IAAInB,EACA8G,EACAqB,EAAoB/vB,GAAI2nB,EAAUmB,GACtC,OAAO5hD,GAAI6oD,GAAqB59C,GAC1B8iB,IAAM+K,GAAI6oB,IAAS6F,EAAU3uB,GAAIgpB,IAAS/oB,GAAI8oB,GAC1C9oB,GAAI+oB,IAASnB,EAAU7nB,GAAI8oB,IAAS7oB,GAAI2nB,KACvCC,EAAU8G,EAAUqB,KACxBlH,EAAOE,GAAQ,EA5BTiH,CAA0BrI,EAASkB,EAAMC,EAASC,GACzD7C,EAAOj1B,MAAM4+B,EAAOhH,GACpB3C,EAAOoB,UACPpB,EAAOmB,YACPnB,EAAOj1B,MAAM6+B,EAAOjH,GACpB9rB,EAAQ,GAEVmpB,EAAOj1B,MAAM02B,EAAUmB,EAASD,EAAOE,GACvC8G,EAAQC,GAEVxI,QAAS,WACPpB,EAAOoB,UACPK,EAAUkB,EAAO1mD,KAEnB46B,MAAO,WACL,OAAO,EAAIA,OAgBjB,SAAqCl7B,EAAMC,EAAIwrD,EAAWpH,GACxD,IAAIqC,EACJ,GAAY,MAAR1mD,EACF0mD,EAAM+E,EAAYptB,GAClBgmB,EAAOj1B,OAAOgP,GAAIsoB,GAClBrC,EAAOj1B,MAAM,EAAGs3B,GAChBrC,EAAOj1B,MAAMgP,GAAIsoB,GACjBrC,EAAOj1B,MAAMgP,GAAI,GACjBimB,EAAOj1B,MAAMgP,IAAKsoB,GAClBrC,EAAOj1B,MAAM,GAAIs3B,GACjBrC,EAAOj1B,OAAOgP,IAAKsoB,GACnBrC,EAAOj1B,OAAOgP,GAAI,GAClBimB,EAAOj1B,OAAOgP,GAAIsoB,QACb,GAAIrhD,GAAIrF,EAAK,GAAKC,EAAG,IAAMqQ,GAAS,CACzC,IAAIm2C,EAASzmD,EAAK,GAAKC,EAAG,GAAKm+B,IAAMA,GACrCsoB,EAAM+E,EAAYhF,EAAS,EAC3BpC,EAAOj1B,OAAOq3B,EAAQC,GACtBrC,EAAOj1B,MAAM,EAAGs3B,GAChBrC,EAAOj1B,MAAMq3B,EAAQC,QAErBrC,EAAOj1B,MAAMnvB,EAAG,GAAIA,EAAG,MAlFzB,EAAEm+B,IAAKC,KCDM,gBAASwD,GACtB,IAAIusB,EAAKlwB,GAAI2D,GACTphC,EAAQ,EAAI0iC,GACZkrB,EAAcD,EAAK,EACnBE,EAAgBjpD,GAAI+oD,GAAM99C,GAM9B,SAASi+C,EAAQ9H,EAAQC,GACvB,OAAOxoB,GAAIuoB,GAAUvoB,GAAIwoB,GAAO0H,EAkFlC,SAASI,EAAUpuD,EAAGC,EAAGouD,GACvB,IAKIhzB,EAAK,CAAC,EAAG,EAAG,GACZizB,EAAKjH,GANAF,GAAUnnD,GACVmnD,GAAUlnD,IAMfsuD,EAAOnH,GAAakH,EAAIA,GACxBE,EAAOF,EAAG,GACVG,EAAcF,EAAOC,EAAOA,EAGhC,IAAKC,EAAa,OAAQJ,GAAOruD,EAEjC,IAAIyxC,EAAMuc,EAAKO,EAAOE,EAClBC,GAAMV,EAAKQ,EAAOC,EAClBE,EAAQtH,GAAehsB,EAAIizB,GAC3BxqB,EAAIyjB,GAAelsB,EAAIoW,GAE3B6V,GAAoBxjB,EADZyjB,GAAe+G,EAAII,IAI3B,IAAI5lB,EAAI6lB,EACJl2B,EAAI2uB,GAAatjB,EAAGgF,GACpB8lB,EAAKxH,GAAate,EAAGA,GACrB7c,EAAKwM,EAAIA,EAAIm2B,GAAMxH,GAAatjB,EAAGA,GAAK,GAE5C,KAAI7X,EAAK,GAAT,CAEA,IAAI5f,EAAI5H,GAAKwnB,GACTuC,EAAI+4B,GAAeze,IAAKrQ,EAAIpsB,GAAKuiD,GAIrC,GAHAtH,GAAoB94B,EAAGsV,GACvBtV,EAAI04B,GAAU14B,IAET6/B,EAAK,OAAO7/B,EAGjB,IAIIxiB,EAJA05C,EAAU1lD,EAAE,GACZ6mD,EAAU5mD,EAAE,GACZ2mD,EAAO5mD,EAAE,GACT8mD,EAAO7mD,EAAE,GAGT4mD,EAAUnB,IAAS15C,EAAI05C,EAASA,EAAUmB,EAASA,EAAU76C,GAEjE,IAAI3L,EAAQwmD,EAAUnB,EAClBmJ,EAAQ5pD,GAAI5E,EAAQ29B,IAAM9tB,GAM9B,IAHK2+C,GAAS/H,EAAOF,IAAM56C,EAAI46C,EAAMA,EAAOE,EAAMA,EAAO96C,GAF1C6iD,GAASxuD,EAAQ6P,GAM1B2+C,EACEjI,EAAOE,EAAO,EAAIt4B,EAAE,IAAMvpB,GAAIupB,EAAE,GAAKk3B,GAAWx1C,GAAU02C,EAAOE,GACjEF,GAAQp4B,EAAE,IAAMA,EAAE,IAAMs4B,EAC1BzmD,EAAQ29B,IAAM0nB,GAAWl3B,EAAE,IAAMA,EAAE,IAAMq4B,GAAU,CACvD,IAAIiI,EAAKvH,GAAeze,IAAKrQ,EAAIpsB,GAAKuiD,GAEtC,OADAtH,GAAoBwH,EAAIhrB,GACjB,CAACtV,EAAG04B,GAAU4H,MAMzB,SAASC,EAAK1I,EAAQC,GACpB,IAAIr4C,EAAIggD,EAAcxsB,EAASzD,GAAKyD,EAChCstB,EAAO,EAKX,OAJI1I,GAAUp4C,EAAG8gD,GAAQ,EAChB1I,EAASp4C,IAAG8gD,GAAQ,GACzBzI,GAAOr4C,EAAG8gD,GAAQ,EACbzI,EAAMr4C,IAAG8gD,GAAQ,GACnBA,EAGT,OAAO9C,GAAKkC,GAvJZ,SAAkBlK,GAChB,IAAIrnB,EACA2U,EACA1lB,EACAmjC,EACAl0B,EACJ,MAAO,CACLsqB,UAAW,WACT4J,EAAMnjC,GAAK,EACXiP,EAAQ,GAEV9L,MAAO,SAASq3B,EAAQC,GACtB,IACI2I,EADAvC,EAAS,CAACrG,EAAQC,GAElBniD,EAAIgqD,EAAQ9H,EAAQC,GACpB79C,EAAIwlD,EACA9pD,EAAI,EAAI4qD,EAAK1I,EAAQC,GACrBniD,EAAI4qD,EAAK1I,GAAUA,EAAS,EAAIroB,IAAMA,IAAKsoB,GAAO,EAO1D,IANK1pB,IAAWoyB,EAAMnjC,EAAK1nB,IAAI8/C,EAAOmB,YAClCjhD,IAAM0nB,MACRojC,EAASb,EAAUxxB,EAAQ8vB,KACZP,GAAWvvB,EAAQqyB,IAAW9C,GAAWO,EAAQuC,MAC9DvC,EAAO,GAAK,GAEZvoD,IAAM0nB,EACRiP,EAAQ,EACJ32B,GAEF8/C,EAAOmB,YACP6J,EAASb,EAAU1B,EAAQ9vB,GAC3BqnB,EAAOj1B,MAAMigC,EAAO,GAAIA,EAAO,MAG/BA,EAASb,EAAUxxB,EAAQ8vB,GAC3BzI,EAAOj1B,MAAMigC,EAAO,GAAIA,EAAO,GAAI,GACnChL,EAAOoB,WAETzoB,EAASqyB,OACJ,GAAIf,GAAiBtxB,GAAUqxB,EAAc9pD,EAAG,CACrD,IAAIkI,EAGE5D,EAAI8oC,KAAQllC,EAAI+hD,EAAU1B,EAAQ9vB,GAAQ,MAC9C9B,EAAQ,EACJmzB,GACFhK,EAAOmB,YACPnB,EAAOj1B,MAAM3iB,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3B43C,EAAOj1B,MAAM3iB,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3B43C,EAAOoB,YAEPpB,EAAOj1B,MAAM3iB,EAAE,GAAG,GAAIA,EAAE,GAAG,IAC3B43C,EAAOoB,UACPpB,EAAOmB,YACPnB,EAAOj1B,MAAM3iB,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAI,MAIjClI,GAAOy4B,GAAWuvB,GAAWvvB,EAAQ8vB,IACvCzI,EAAOj1B,MAAM09B,EAAO,GAAIA,EAAO,IAEjC9vB,EAAS8vB,EAAQ7gC,EAAK1nB,EAAGotC,EAAK9oC,GAEhC48C,QAAS,WACHx5B,GAAIo4B,EAAOoB,UACfzoB,EAAS,MAIX9B,MAAO,WACL,OAAOA,GAAUk0B,GAAOnjC,IAAO,OAjFrC,SAAqBjsB,EAAMC,EAAIwrD,EAAWpH,GACxCmH,GAAanH,EAAQxiB,EAAQphC,EAAOgrD,EAAWzrD,EAAMC,KAkKXouD,EAAc,CAAC,GAAIxsB,GAAU,EAAEzD,GAAIyD,EAASzD,MCzKtFkxB,GAAU,IAAKC,IAAWD,GAKf,SAASE,GAAchkD,EAAI60B,EAAI50B,EAAIu0B,GAEhD,SAASuuB,EAAQ1tD,EAAGuE,GAClB,OAAOoG,GAAM3K,GAAKA,GAAK4K,GAAM40B,GAAMj7B,GAAKA,GAAK46B,EAG/C,SAAShL,EAAYh1B,EAAMC,EAAIwrD,EAAWpH,GACxC,IAAIjkD,EAAI,EAAGkhC,EAAK,EAChB,GAAY,MAARthC,IACII,EAAIqvD,EAAOzvD,EAAMyrD,OAAiBnqB,EAAKmuB,EAAOxvD,EAAIwrD,KACnDiE,EAAa1vD,EAAMC,GAAM,EAAIwrD,EAAY,EAC9C,GAAGpH,EAAOj1B,MAAY,IAANhvB,GAAiB,IAANA,EAAUoL,EAAKC,EAAIrL,EAAI,EAAI4/B,EAAKK,UACnDjgC,GAAKA,EAAIqrD,EAAY,GAAK,KAAOnqB,QAEzC+iB,EAAOj1B,MAAMnvB,EAAG,GAAIA,EAAG,IAI3B,SAASwvD,EAAOnyD,EAAGmuD,GACjB,OAAOpmD,GAAI/H,EAAE,GAAKkO,GAAM8E,GAAUm7C,EAAY,EAAI,EAAI,EAChDpmD,GAAI/H,EAAE,GAAKmO,GAAM6E,GAAUm7C,EAAY,EAAI,EAAI,EAC/CpmD,GAAI/H,EAAE,GAAK+iC,GAAM/vB,GAAUm7C,EAAY,EAAI,EAAI,EAC/CA,EAAY,EAAI,EAAI,EAG5B,SAASU,EAAoB/rD,EAAGC,GAC9B,OAAOqvD,EAAatvD,EAAES,EAAGR,EAAEQ,GAG7B,SAAS6uD,EAAatvD,EAAGC,GACvB,IAAIsvD,EAAKF,EAAOrvD,EAAG,GACfwvD,EAAKH,EAAOpvD,EAAG,GACnB,OAAOsvD,IAAOC,EAAKD,EAAKC,EACX,IAAPD,EAAWtvD,EAAE,GAAKD,EAAE,GACb,IAAPuvD,EAAWvvD,EAAE,GAAKC,EAAE,GACb,IAAPsvD,EAAWvvD,EAAE,GAAKC,EAAE,GACpBA,EAAE,GAAKD,EAAE,GAGjB,OAAO,SAASikD,GACd,IAEI6H,EACAzlB,EACA1B,EACA8qB,EAAKC,EAAKC,EACVC,EAAIC,EAAIC,EACRliD,EACAktB,EARAi1B,EAAe9L,EACf+L,EAAe/C,KASfgD,EAAa,CACfjhC,MAAOA,EACPo2B,UAgDF,WACE6K,EAAWjhC,MAAQi5B,EACf5hB,GAASA,EAAQhsC,KAAKsqC,EAAO,IACjC/2B,GAAQ,EACRkiD,GAAK,EACLF,EAAKC,EAAK3vD,KApDVmlD,QA0DF,WACMyG,IACF7D,EAAUwH,EAAKC,GACXC,GAAOG,GAAIE,EAAarE,SAC5BG,EAASzxD,KAAK21D,EAAa9xD,WAE7B+xD,EAAWjhC,MAAQA,EACf8gC,GAAIC,EAAa1K,WAhErBC,aAuBF,WACEyK,EAAeC,EAAclE,EAAW,GAAIzlB,EAAU,GAAIvL,GAAQ,GAvBlEyqB,WA0BF,WACE,IAAIyG,EApBN,WAGE,IAFA,IAAIO,EAAU,EAEL9xD,EAAI,EAAG4E,EAAIgnC,EAAQ1rC,OAAQF,EAAI4E,IAAK5E,EAC3C,IAAK,IAAgEwmC,EAAIC,EAAhEyD,EAAO0B,EAAQ5rC,GAAImJ,EAAI,EAAG4H,EAAIm5B,EAAKhqC,OAAQq0B,EAAQ2V,EAAK,GAAYyJ,EAAKpf,EAAM,GAAIsrB,EAAKtrB,EAAM,GAAIprB,EAAI4H,IAAK5H,EAClHq9B,EAAKmN,EAAIlN,EAAKoZ,EAAqBlM,GAAjBpf,EAAQ2V,EAAK/gC,IAAe,GAAI02C,EAAKtrB,EAAM,GACzDkS,GAAMtB,EAAU0a,EAAK1a,IAAOwO,EAAKnN,IAAOrB,EAAKsB,IAAOoZ,EAAKpZ,IAAO91B,EAAK61B,MAAOsrB,EACrEjS,GAAM1a,IAAOwO,EAAKnN,IAAOrB,EAAKsB,IAAOoZ,EAAKpZ,IAAO91B,EAAK61B,MAAOsrB,EAI5E,OAAOA,EASW2D,GACdC,EAAcr1B,GAASkxB,EACvBmC,GAAWrC,EAAW5+C,GAAM4+C,IAAWnxD,QACvCw1D,GAAehC,KACjBlK,EAAOqB,eACH6K,IACFlM,EAAOmB,YACPxwB,EAAY,KAAM,KAAM,EAAGqvB,GAC3BA,EAAOoB,WAEL8I,GACFX,GAAW1B,EAAUC,EAAqBC,EAAap3B,EAAaqvB,GAEtEA,EAAOsB,cAETwK,EAAe9L,EAAQ6H,EAAWzlB,EAAU1B,EAAO,OAvCrD,SAAS3V,EAAMvuB,EAAGuE,GACZmpD,EAAQ1tD,EAAGuE,IAAI+qD,EAAa/gC,MAAMvuB,EAAGuE,GA8D3C,SAASijD,EAAUxnD,EAAGuE,GACpB,IAAIb,EAAIgqD,EAAQ1tD,EAAGuE,GAEnB,GADIqhC,GAAS1B,EAAKtqC,KAAK,CAACoG,EAAGuE,IACvB4I,EACF6hD,EAAMhvD,EAAGivD,EAAM1qD,EAAG2qD,EAAMxrD,EACxByJ,GAAQ,EACJzJ,IACF4rD,EAAa3K,YACb2K,EAAa/gC,MAAMvuB,EAAGuE,SAGxB,GAAIb,GAAK2rD,EAAIC,EAAa/gC,MAAMvuB,EAAGuE,OAC9B,CACH,IAAIhF,EAAI,CAAC4vD,EAAKprD,KAAKI,IAAIuqD,GAAS3qD,KAAKG,IAAIuqD,GAASU,IAAMC,EAAKrrD,KAAKI,IAAIuqD,GAAS3qD,KAAKG,IAAIuqD,GAASW,KAC7F5vD,EAAI,CAACQ,EAAI+D,KAAKI,IAAIuqD,GAAS3qD,KAAKG,IAAIuqD,GAASzuD,IAAKuE,EAAIR,KAAKI,IAAIuqD,GAAS3qD,KAAKG,IAAIuqD,GAASlqD,MClJzF,SAAShF,EAAGC,EAAGmL,EAAI60B,EAAI50B,EAAIu0B,GACxC,IAQI3xB,EARA+6B,EAAKhpC,EAAE,GACPipC,EAAKjpC,EAAE,GAGPkxB,EAAK,EACLtF,EAAK,EACLyQ,EAJKp8B,EAAE,GAIG+oC,EACV1M,EAJKr8B,EAAE,GAIGgpC,EAId,GADAh7B,EAAI7C,EAAK49B,EACJ3M,KAAMpuB,EAAI,GAAf,CAEA,GADAA,GAAKouB,EACDA,EAAK,EAAG,CACV,GAAIpuB,EAAIijB,EAAI,OACRjjB,EAAI2d,IAAIA,EAAK3d,QACZ,GAAIouB,EAAK,EAAG,CACjB,GAAIpuB,EAAI2d,EAAI,OACR3d,EAAIijB,IAAIA,EAAKjjB,GAInB,GADAA,EAAI5C,EAAK29B,EACJ3M,KAAMpuB,EAAI,GAAf,CAEA,GADAA,GAAKouB,EACDA,EAAK,EAAG,CACV,GAAIpuB,EAAI2d,EAAI,OACR3d,EAAIijB,IAAIA,EAAKjjB,QACZ,GAAIouB,EAAK,EAAG,CACjB,GAAIpuB,EAAIijB,EAAI,OACRjjB,EAAI2d,IAAIA,EAAK3d,GAInB,GADAA,EAAIgyB,EAAKgJ,EACJ3M,KAAMruB,EAAI,GAAf,CAEA,GADAA,GAAKquB,EACDA,EAAK,EAAG,CACV,GAAIruB,EAAIijB,EAAI,OACRjjB,EAAI2d,IAAIA,EAAK3d,QACZ,GAAIquB,EAAK,EAAG,CACjB,GAAIruB,EAAI2d,EAAI,OACR3d,EAAIijB,IAAIA,EAAKjjB,GAInB,GADAA,EAAI2xB,EAAKqJ,EACJ3M,KAAMruB,EAAI,GAAf,CAEA,GADAA,GAAKquB,EACDA,EAAK,EAAG,CACV,GAAIruB,EAAI2d,EAAI,OACR3d,EAAIijB,IAAIA,EAAKjjB,QACZ,GAAIquB,EAAK,EAAG,CACjB,GAAIruB,EAAIijB,EAAI,OACRjjB,EAAI2d,IAAIA,EAAK3d,GAKnB,OAFIijB,EAAK,IAAGlxB,EAAE,GAAKgpC,EAAK9X,EAAKmL,EAAIr8B,EAAE,GAAKipC,EAAK/X,EAAKoL,GAC9C1Q,EAAK,IAAG3rB,EAAE,GAAK+oC,EAAKpd,EAAKyQ,EAAIp8B,EAAE,GAAKgpC,EAAKrd,EAAK0Q,IAC3C,MD0FKwwB,CAAS9sD,EAAGC,EAAGmL,EAAI60B,EAAI50B,EAAIu0B,GAQpBz7B,IACT4rD,EAAa3K,YACb2K,EAAa/gC,MAAMvuB,EAAGuE,GACtB81B,GAAQ,IAVHg1B,IACHC,EAAa3K,YACb2K,EAAa/gC,MAAMhvB,EAAE,GAAIA,EAAE,KAE7B+vD,EAAa/gC,MAAM/uB,EAAE,GAAIA,EAAE,IACtBkE,GAAG4rD,EAAa1K,UACrBvqB,GAAQ,GAQd80B,EAAKnvD,EAAGovD,EAAK7qD,EAAG8qD,EAAK3rD,EAGvB,OAAO8rD,GEnKI,ICGXG,GACA1K,GACAE,GACAD,GDNW,cACb,IAII0K,EACAC,EACArE,EANA7gD,EAAK,EACL60B,EAAK,EACL50B,EAAK,IACLu0B,EAAK,IAKT,OAAOqsB,EAAO,CACZhI,OAAQ,SAASA,GACf,OAAOoM,GAASC,IAAgBrM,EAASoM,EAAQA,EAAQjB,GAAchkD,EAAI60B,EAAI50B,EAAIu0B,EAA1BwvB,CAA8BkB,EAAcrM,IAEvGv/C,OAAQ,SAASkH,GACf,OAAOlR,UAAUC,QAAUyQ,GAAMQ,EAAE,GAAG,GAAIq0B,GAAMr0B,EAAE,GAAG,GAAIP,GAAMO,EAAE,GAAG,GAAIg0B,GAAMh0B,EAAE,GAAG,GAAIykD,EAAQC,EAAc,KAAMrE,GAAQ,CAAC,CAAC7gD,EAAI60B,GAAK,CAAC50B,EAAIu0B,OCN7I2wB,GAAe,CACjB/L,OAAQnxC,GACR2b,MAAO3b,GACP+xC,UAMF,WACEmL,GAAavhC,MAAQwhC,GACrBD,GAAalL,QAAUoL,IAPvBpL,QAAShyC,GACTiyC,aAAcjyC,GACdkyC,WAAYlyC,IAQd,SAASo9C,KACPF,GAAavhC,MAAQuhC,GAAalL,QAAUhyC,GAG9C,SAASm9C,GAAiBnK,EAAQC,GAEhCZ,GADAW,GAAUtjB,GACQ6iB,GAAU7nB,GADTuoB,GAAOvjB,IACY4iB,GAAU7nB,GAAIwoB,GACpDiK,GAAavhC,MAAQ0hC,GAGvB,SAASA,GAAYrK,EAAQC,GAC3BD,GAAUtjB,GACV,IAAI4jB,EAAS5oB,GADMuoB,GAAOvjB,IAEtB2jB,EAAS5oB,GAAIwoB,GACbjmD,EAAQ4E,GAAIohD,EAASX,IACrBiL,EAAW7yB,GAAIz9B,GAEfI,EAAIimD,EADO3oB,GAAI19B,GAEf2E,EAAI2gD,GAAUgB,EAASf,GAAUc,EAASiK,EAC1C3kD,EAAI45C,GAAUe,EAAShB,GAAUe,EAASiK,EAC9CP,GAAUhrD,IAAI2tB,GAAMtuB,GAAKhE,EAAIA,EAAIuE,EAAIA,GAAIgH,IACzC05C,GAAUW,EAAQT,GAAUe,EAAQhB,GAAUe,EAGjC,gBAAS/sD,GAGtB,OAFAy2D,GAAY,IAAIvrD,EAChBo/C,GAAOtqD,EAAQ42D,KACPH,ICjDN9pB,GAAc,CAAC,KAAM,MACrB3sC,GAAS,CAACia,KAAM,aAAc0yB,YAAaA,IAEhC,YAAStmC,EAAGC,GAGzB,OAFAqmC,GAAY,GAAKtmC,EACjBsmC,GAAY,GAAKrmC,EACVtF,GAAOhB,KCJZi3D,GAAqB,CACvBxM,QAAS,SAASzqD,EAAQq1B,GACxB,OAAO6hC,GAAiBl3D,EAAO4tC,SAAUvY,IAE3Cq1B,kBAAmB,SAAS1qD,EAAQq1B,GAElC,IADA,IAAIs1B,EAAW3qD,EAAO2qD,SAAU7pD,GAAK,EAAG4E,EAAIilD,EAAS3pD,SAC5CF,EAAI4E,GAAG,GAAIwxD,GAAiBvM,EAAS7pD,GAAG8sC,SAAUvY,GAAQ,OAAO,EAC1E,OAAO,IAIP8hC,GAAuB,CACzBvM,OAAQ,WACN,OAAO,GAETE,MAAO,SAAS9qD,EAAQq1B,GACtB,OAAO+hC,GAAcp3D,EAAO2sC,YAAatX,IAE3C01B,WAAY,SAAS/qD,EAAQq1B,GAE3B,IADA,IAAIsX,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAG,GAAI0xD,GAAczqB,EAAY7rC,GAAIu0B,GAAQ,OAAO,EACjE,OAAO,GAET21B,WAAY,SAAShrD,EAAQq1B,GAC3B,OAAOgiC,GAAar3D,EAAO2sC,YAAatX,IAE1C61B,gBAAiB,SAASlrD,EAAQq1B,GAEhC,IADA,IAAIsX,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAG,GAAI2xD,GAAa1qB,EAAY7rC,GAAIu0B,GAAQ,OAAO,EAChE,OAAO,GAET6gB,QAAS,SAASl2C,EAAQq1B,GACxB,OAAOiiC,GAAgBt3D,EAAO2sC,YAAatX,IAE7C+1B,aAAc,SAASprD,EAAQq1B,GAE7B,IADA,IAAIsX,EAAc3sC,EAAO2sC,YAAa7rC,GAAK,EAAG4E,EAAIinC,EAAY3rC,SACrDF,EAAI4E,GAAG,GAAI4xD,GAAgB3qB,EAAY7rC,GAAIu0B,GAAQ,OAAO,EACnE,OAAO,GAETg2B,mBAAoB,SAASrrD,EAAQq1B,GAEnC,IADA,IAAIi2B,EAAatrD,EAAOsrD,WAAYxqD,GAAK,EAAG4E,EAAI4lD,EAAWtqD,SAClDF,EAAI4E,GAAG,GAAIwxD,GAAiB5L,EAAWxqD,GAAIu0B,GAAQ,OAAO,EACnE,OAAO,IAIX,SAAS6hC,GAAiBtpB,EAAUvY,GAClC,SAAOuY,IAAYupB,GAAqBtyD,eAAe+oC,EAAS3zB,QAC1Dk9C,GAAqBvpB,EAAS3zB,MAAM2zB,EAAUvY,GAItD,SAAS+hC,GAAczqB,EAAatX,GAClC,OAAwC,IAAjCswB,GAAShZ,EAAatX,GAG/B,SAASgiC,GAAa1qB,EAAatX,GAEjC,IADA,IAAIkiC,EAAIC,EAAIzgB,EACHj2C,EAAI,EAAG4E,EAAIinC,EAAY3rC,OAAQF,EAAI4E,EAAG5E,IAAK,CAElD,GAAW,KADX02D,EAAK7R,GAAShZ,EAAY7rC,GAAIu0B,IAChB,OAAO,EACrB,GAAIv0B,EAAI,IACNi2C,EAAK4O,GAAShZ,EAAY7rC,GAAI6rC,EAAY7rC,EAAI,KAEvC,GACLy2D,GAAMxgB,GACNygB,GAAMzgB,IACLwgB,EAAKC,EAAKzgB,IAAO,EAAIlsC,KAAK4F,KAAK8mD,EAAKC,GAAMzgB,EAAI,IAAMmT,GAAWnT,EAEhE,OAAO,EAEXwgB,EAAKC,EAEP,OAAO,EAGT,SAASF,GAAgB3qB,EAAatX,GACpC,QAASu+B,GAAgBjnB,EAAYlnC,IAAIgyD,IAAcC,GAAariC,IAGtE,SAASoiC,GAAYzsB,GACnB,OAAOA,EAAOA,EAAKvlC,IAAIiyD,KAAoB3tD,MAAOihC,EAGpD,SAAS0sB,GAAariC,GACpB,MAAO,CAACA,EAAM,GAAK+T,GAAS/T,EAAM,GAAK+T,IAG1B,gBAASppC,EAAQq1B,GAC9B,OAAQr1B,GAAUi3D,GAAmBpyD,eAAe7E,EAAOia,MACrDg9C,GAAmBj3D,EAAOia,MAC1Bi9C,IAAkBl3D,EAAQq1B,IC5FlC,SAASsiC,GAAWrxB,EAAIL,EAAItD,GAC1B,IAAIt3B,EAAI6I,GAAMoyB,EAAIL,EAAK1vB,GAASosB,GAAIxoB,OAAO8rB,GAC3C,OAAO,SAASn/B,GAAK,OAAOuE,EAAE5F,KAAI,SAAS4F,GAAK,MAAO,CAACvE,EAAGuE,OAG7D,SAASusD,GAAWnmD,EAAIC,EAAIgxB,GAC1B,IAAI57B,EAAIoN,GAAMzC,EAAIC,EAAK6E,GAASmsB,GAAIvoB,OAAOzI,GAC3C,OAAO,SAASrG,GAAK,OAAOvE,EAAErB,KAAI,SAASqB,GAAK,MAAO,CAACA,EAAGuE,OAG9C,SAASwsD,KACtB,IAAInmD,EAAID,EAAI09C,EAAIH,EACZ/oB,EAAIK,EAAI8oB,EAAIH,EAEZnoD,EAAGuE,EAAGgzB,EAAGK,EADTgE,EAAK,GAAIC,EAAKD,EAAIo1B,EAAK,GAAIC,EAAK,IAEhChQ,EAAY,IAEhB,SAAS8P,IACP,MAAO,CAAC59C,KAAM,kBAAmB0yB,YAAaolB,KAGhD,SAASA,IACP,OAAO79C,GAAMnD,GAAKi+C,EAAK8I,GAAMA,EAAI3I,EAAI2I,GAAIryD,IAAI44B,GACxClkB,OAAOjG,GAAMnD,GAAKk+C,EAAK8I,GAAMA,EAAI3I,EAAI2I,GAAItyD,IAAIi5B,IAC7CvkB,OAAOjG,GAAMnD,GAAKU,EAAKixB,GAAMA,EAAIhxB,EAAIgxB,GAAIpiC,QAAO,SAASwG,GAAK,OAAOwE,GAAIxE,EAAIgxD,GAAMvhD,MAAY9Q,IAAIqB,IACnGqT,OAAOjG,GAAMnD,GAAKu1B,EAAK3D,GAAMA,EAAIsD,EAAItD,GAAIriC,QAAO,SAAS+K,GAAK,OAAOC,GAAID,EAAI0sD,GAAMxhD,MAAY9Q,IAAI4F,IAqE1G,OAlEAwsD,EAAU9F,MAAQ,WAChB,OAAOA,IAAQtsD,KAAI,SAASknC,GAAe,MAAO,CAAC1yB,KAAM,aAAc0yB,YAAaA,OAGtFkrB,EAAUG,QAAU,WAClB,MAAO,CACL/9C,KAAM,UACN0yB,YAAa,CACXtO,EAAE2wB,GAAI70C,OACNukB,EAAE0wB,GAAIvnD,MAAM,GACZw2B,EAAE8wB,GAAIr/C,UAAUjI,MAAM,GACtB62B,EAAEuwB,GAAIn/C,UAAUjI,MAAM,OAK5BgwD,EAAU9sD,OAAS,SAASkH,GAC1B,OAAKlR,UAAUC,OACR62D,EAAUI,YAAYhmD,GAAGimD,YAAYjmD,GADd4lD,EAAUK,eAI1CL,EAAUI,YAAc,SAAShmD,GAC/B,OAAKlR,UAAUC,QACfguD,GAAM/8C,EAAE,GAAG,GAAIk9C,GAAMl9C,EAAE,GAAG,GAC1Bg9C,GAAMh9C,EAAE,GAAG,GAAIm9C,GAAMn9C,EAAE,GAAG,GACtB+8C,EAAKG,IAAIl9C,EAAI+8C,EAAIA,EAAKG,EAAIA,EAAKl9C,GAC/Bg9C,EAAKG,IAAIn9C,EAAIg9C,EAAIA,EAAKG,EAAIA,EAAKn9C,GAC5B4lD,EAAU9P,UAAUA,IALG,CAAC,CAACiH,EAAIC,GAAK,CAACE,EAAIC,KAQhDyI,EAAUK,YAAc,SAASjmD,GAC/B,OAAKlR,UAAUC,QACfyQ,GAAMQ,EAAE,GAAG,GAAIP,GAAMO,EAAE,GAAG,GAC1Bq0B,GAAMr0B,EAAE,GAAG,GAAIg0B,GAAMh0B,EAAE,GAAG,GACtBR,EAAKC,IAAIO,EAAIR,EAAIA,EAAKC,EAAIA,EAAKO,GAC/Bq0B,EAAKL,IAAIh0B,EAAIq0B,EAAIA,EAAKL,EAAIA,EAAKh0B,GAC5B4lD,EAAU9P,UAAUA,IALG,CAAC,CAACt2C,EAAI60B,GAAK,CAAC50B,EAAIu0B,KAQhD4xB,EAAUnvD,KAAO,SAASuJ,GACxB,OAAKlR,UAAUC,OACR62D,EAAUM,UAAUlmD,GAAGmmD,UAAUnmD,GADV4lD,EAAUO,aAI1CP,EAAUM,UAAY,SAASlmD,GAC7B,OAAKlR,UAAUC,QACf82D,GAAM7lD,EAAE,GAAI8lD,GAAM9lD,EAAE,GACb4lD,GAFuB,CAACC,EAAIC,IAKrCF,EAAUO,UAAY,SAASnmD,GAC7B,OAAKlR,UAAUC,QACf0hC,GAAMzwB,EAAE,GAAI0wB,GAAM1wB,EAAE,GACb4lD,GAFuB,CAACn1B,EAAIC,IAKrCk1B,EAAU9P,UAAY,SAAS91C,GAC7B,OAAKlR,UAAUC,QACf+mD,GAAa91C,EACbnL,EAAI6wD,GAAWrxB,EAAIL,EAAI,IACvB56B,EAAIusD,GAAWnmD,EAAIC,EAAIq2C,GACvB1pB,EAAIs5B,GAAW1I,EAAIG,EAAI,IACvB1wB,EAAIk5B,GAAW5I,EAAIG,EAAIpH,GAChB8P,GANuB9P,GASzB8P,EACFI,YAAY,CAAC,EAAE,KAAK,WAAgB,CAAC,IAAK,aAC1CC,YAAY,CAAC,EAAE,KAAK,WAAgB,CAAC,IAAK,aAG1C,SAASG,KACd,OAAOR,OCrGM,ICIXS,GACAC,GACA9mD,GACA60B,GDPW,YAASjgC,EAAGC,GACzB,IAAImL,EAAKpL,EAAE,GAAK+iC,GACZ9C,EAAKjgC,EAAE,GAAK+iC,GACZ13B,EAAKpL,EAAE,GAAK8iC,GACZnD,EAAK3/B,EAAE,GAAK8iC,GACZovB,EAAMr0B,GAAImC,GACVuS,EAAMzU,GAAIkC,GACVmyB,EAAMt0B,GAAI8B,GACV8S,EAAM3U,GAAI6B,GACVyyB,EAAMF,EAAMr0B,GAAI1yB,GAChBknD,EAAMH,EAAMp0B,GAAI3yB,GAChBmnD,EAAMH,EAAMt0B,GAAIzyB,GAChBmnD,EAAMJ,EAAMr0B,GAAI1yB,GAChBxK,EAAI,EAAIk6C,GAAKt2C,GAAKs/C,GAASnkB,EAAKK,GAAMkyB,EAAMC,EAAMrO,GAAS14C,EAAKD,KAChEW,EAAIgyB,GAAIl9B,GAER+zB,EAAc/zB,EAAI,SAASwL,GAC7B,IAAI03B,EAAIhG,GAAI1xB,GAAKxL,GAAKkL,EAClB+3B,EAAI/F,GAAIl9B,EAAIwL,GAAKN,EACjBtL,EAAIqjC,EAAIuuB,EAAMtuB,EAAIwuB,EAClBvtD,EAAI8+B,EAAIwuB,EAAMvuB,EAAIyuB,EAClBxmD,EAAI83B,EAAI0O,EAAMzO,EAAI2O,EACtB,MAAO,CACL3f,GAAM/tB,EAAGvE,GAAKgyB,GACdM,GAAM/mB,EAAGvH,GAAKhE,EAAIA,EAAIuE,EAAIA,IAAMytB,KAEhC,WACF,MAAO,CAACrnB,EAAKqnB,GAASwN,EAAKxN,KAK7B,OAFAmC,EAAY0qB,SAAWz+C,EAEhB+zB,GElCM,YAAAn0B,GAAC,OAAIA,GDIhBqlD,GAAU,IAAIjhD,EACdghD,GAAc,IAAIhhD,EAMlBkhD,GAAa,CACf/2B,MAAO3b,GACP+xC,UAAW/xC,GACXgyC,QAAShyC,GACTiyC,aAAc,WACZS,GAAWX,UAAYY,GACvBD,GAAWV,QAAUY,IAEvBV,WAAY,WACVQ,GAAWX,UAAYW,GAAWV,QAAUU,GAAW/2B,MAAQ3b,GAC/DyyC,GAAQ1gD,IAAIH,GAAI4gD,KAChBA,GAAc,IAAIhhD,GAEpB3G,OAAQ,WACN,IAAIkoC,EAAO0f,GAAU,EAErB,OADAA,GAAU,IAAIjhD,EACPuhC,IAIX,SAAS4f,KACPD,GAAW/2B,MAAQm3B,GAGrB,SAASA,GAAe1lD,EAAGuE,GACzB+gD,GAAW/2B,MAAQo3B,GACnB6L,GAAM7mD,GAAK3K,EAAGyxD,GAAMjyB,GAAKj7B,EAG3B,SAASohD,GAAU3lD,EAAGuE,GACpB6gD,GAAYzgD,IAAI66B,GAAKx/B,EAAI2K,GAAKpG,GAC9BoG,GAAK3K,EAAGw/B,GAAKj7B,EAGf,SAASihD,KACPG,GAAU6L,GAAKC,IAGFnM,UE/CX36C,GAAK+lB,IACL8O,GAAK70B,GACLC,IAAMD,GACNw0B,GAAKv0B,GAsBMq8C,ICdXuK,GACAC,GACA9mD,GACA60B,GDWWynB,GApBI,CACjB14B,MAYF,SAAqBvuB,EAAGuE,GAClBvE,EAAI2K,KAAIA,GAAK3K,GACbA,EAAI4K,KAAIA,GAAK5K,GACbuE,EAAIi7B,KAAIA,GAAKj7B,GACbA,EAAI46B,KAAIA,GAAK56B,IAfjBogD,UAAW/xC,GACXgyC,QAAShyC,GACTiyC,aAAcjyC,GACdkyC,WAAYlyC,GACZnV,OAAQ,WACN,IAAIw1C,EAAS,CAAC,CAACtoC,GAAI60B,IAAK,CAAC50B,GAAIu0B,KAE7B,OADAv0B,GAAKu0B,KAAOK,GAAK70B,GAAK+lB,KACfuiB,ICZPiV,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EAMLK,GAAiB,CACnBx6B,MAAOy6B,GACPrE,UAAWsE,GACXrE,QAASsE,GACTrE,aAAc,WACZkE,GAAepE,UAAYwE,GAC3BJ,GAAenE,QAAUwE,IAE3BtE,WAAY,WACViE,GAAex6B,MAAQy6B,GACvBD,GAAepE,UAAYsE,GAC3BF,GAAenE,QAAUsE,IAE3BzrD,OAAQ,WACN,IAAIu0D,EAAWtJ,GAAK,CAACF,GAAKE,GAAID,GAAKC,IAC7BH,GAAK,CAACF,GAAKE,GAAID,GAAKC,IACpBH,GAAK,CAACF,GAAKE,GAAID,GAAKC,IACpB,CAAC3oD,IAAKA,KAIZ,OAHAyoD,GAAKC,GAAKC,GACVC,GAAKC,GAAKC,GACVC,GAAKC,GAAKC,GAAK,EACRsJ,IAIX,SAAShJ,GAAchpD,EAAGuE,GACxB2jD,IAAMloD,EACNmoD,IAAM5jD,IACJ6jD,GAGJ,SAASa,KACPF,GAAex6B,MAAQ0jC,GAGzB,SAASA,GAAuBjyD,EAAGuE,GACjCwkD,GAAex6B,MAAQ2jC,GACvBlJ,GAAcr+C,GAAK3K,EAAGw/B,GAAKj7B,GAG7B,SAAS2tD,GAAkBlyD,EAAGuE,GAC5B,IAAIq3B,EAAK57B,EAAI2K,GAAIkxB,EAAKt3B,EAAIi7B,GAAIj0B,EAAIvH,GAAK43B,EAAKA,EAAKC,EAAKA,GACtDwsB,IAAM98C,GAAKZ,GAAK3K,GAAK,EACrBsoD,IAAM/8C,GAAKi0B,GAAKj7B,GAAK,EACrBgkD,IAAMh9C,EACNy9C,GAAcr+C,GAAK3K,EAAGw/B,GAAKj7B,GAG7B,SAAS2kD,KACPH,GAAex6B,MAAQy6B,GAGzB,SAASG,KACPJ,GAAex6B,MAAQ4jC,GAGzB,SAAS/I,KACPgJ,GAAkBZ,GAAKC,IAGzB,SAASU,GAAuBnyD,EAAGuE,GACjCwkD,GAAex6B,MAAQ6jC,GACvBpJ,GAAcwI,GAAM7mD,GAAK3K,EAAGyxD,GAAMjyB,GAAKj7B,GAGzC,SAAS6tD,GAAkBpyD,EAAGuE,GAC5B,IAAIq3B,EAAK57B,EAAI2K,GACTkxB,EAAKt3B,EAAIi7B,GACTj0B,EAAIvH,GAAK43B,EAAKA,EAAKC,EAAKA,GAE5BwsB,IAAM98C,GAAKZ,GAAK3K,GAAK,EACrBsoD,IAAM/8C,GAAKi0B,GAAKj7B,GAAK,EACrBgkD,IAAMh9C,EAGNi9C,KADAj9C,EAAIi0B,GAAKx/B,EAAI2K,GAAKpG,IACPoG,GAAK3K,GAChByoD,IAAMl9C,GAAKi0B,GAAKj7B,GAChBmkD,IAAU,EAAJn9C,EACNy9C,GAAcr+C,GAAK3K,EAAGw/B,GAAKj7B,GAGdwkD,UChGA,SAASsJ,GAAYzhD,GAClChT,KAAK00D,SAAW1hD,EAGlByhD,GAAYh3D,UAAY,CACtBk3D,QAAS,IACTC,YAAa,SAASrnD,GACpB,OAAOvN,KAAK20D,QAAUpnD,EAAGvN,MAE3BinD,aAAc,WACZjnD,KAAK60D,MAAQ,GAEf3N,WAAY,WACVlnD,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK80D,OAAS,GAEhB9N,QAAS,WACY,IAAfhnD,KAAK60D,OAAa70D,KAAK00D,SAAStzB,YACpCphC,KAAK80D,OAASjzD,KAEhB8uB,MAAO,SAASvuB,EAAGuE,GACjB,OAAQ3G,KAAK80D,QACX,KAAK,EACH90D,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GACxB3G,KAAK80D,OAAS,EACd,MAEF,KAAK,EACH90D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GACxB,MAEF,QACE3G,KAAK00D,SAASvzB,OAAO/+B,EAAIpC,KAAK20D,QAAShuD,GACvC3G,KAAK00D,SAAS/xB,IAAIvgC,EAAGuE,EAAG3G,KAAK20D,QAAS,EAAG90B,MAK/ChgC,OAAQmV,ICvCV,IACI+/C,GACAnB,GACAC,GACA9mD,GACA60B,GALAmwB,GAAY,IAAIvrD,EAOhB0rD,GAAe,CACjBvhC,MAAO3b,GACP+xC,UAAW,WACTmL,GAAavhC,MAAQwhC,IAEvBnL,QAAS,WACH+N,IAAY1C,GAAYuB,GAAKC,IACjC3B,GAAavhC,MAAQ3b,IAEvBiyC,aAAc,WACZ8N,IAAa,GAEf7N,WAAY,WACV6N,GAAa,MAEfl1D,OAAQ,WACN,IAAIvD,GAAUy1D,GAEd,OADAA,GAAY,IAAIvrD,EACTlK,IAIX,SAAS61D,GAAiB/vD,EAAGuE,GAC3BurD,GAAavhC,MAAQ0hC,GACrBuB,GAAM7mD,GAAK3K,EAAGyxD,GAAMjyB,GAAKj7B,EAG3B,SAAS0rD,GAAYjwD,EAAGuE,GACtBoG,IAAM3K,EAAGw/B,IAAMj7B,EACforD,GAAUhrD,IAAIX,GAAK2G,GAAKA,GAAK60B,GAAKA,KAClC70B,GAAK3K,EAAGw/B,GAAKj7B,EAGAurD,UC5CA,SAAS8C,KACtBh1D,KAAKi1D,QAAU,GAoDjB,SAAS7H,GAAOhqB,GACd,MAAO,MAAQA,EACT,IAAMA,EAAS,IAAMA,EAAS,aAAe,EAAIA,EACjD,IAAMA,EAAS,IAAMA,EAAS,YAAc,EAAIA,EAChD,IArDR4xB,GAAWv3D,UAAY,CACrBk3D,QAAS,IACTO,QAAS9H,GAAO,KAChBwH,YAAa,SAASrnD,GAEpB,OADKA,GAAKA,KAAOvN,KAAK20D,UAAS30D,KAAK20D,QAAUpnD,EAAGvN,KAAKk1D,QAAU,MACzDl1D,MAETinD,aAAc,WACZjnD,KAAK60D,MAAQ,GAEf3N,WAAY,WACVlnD,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK80D,OAAS,GAEhB9N,QAAS,WACY,IAAfhnD,KAAK60D,OAAa70D,KAAKi1D,QAAQj5D,KAAK,KACxCgE,KAAK80D,OAASjzD,KAEhB8uB,MAAO,SAASvuB,EAAGuE,GACjB,OAAQ3G,KAAK80D,QACX,KAAK,EACH90D,KAAKi1D,QAAQj5D,KAAK,IAAKoG,EAAG,IAAKuE,GAC/B3G,KAAK80D,OAAS,EACd,MAEF,KAAK,EACH90D,KAAKi1D,QAAQj5D,KAAK,IAAKoG,EAAG,IAAKuE,GAC/B,MAEF,QACsB,MAAhB3G,KAAKk1D,UAAiBl1D,KAAKk1D,QAAU9H,GAAOptD,KAAK20D,UACrD30D,KAAKi1D,QAAQj5D,KAAK,IAAKoG,EAAG,IAAKuE,EAAG3G,KAAKk1D,WAK7Cr1D,OAAQ,WACN,GAAIG,KAAKi1D,QAAQ34D,OAAQ,CACvB,IAAIuD,EAASG,KAAKi1D,QAAQh0D,KAAK,IAE/B,OADAjB,KAAKi1D,QAAU,GACRp1D,EAEP,OAAO,OCvCE,gBAASs1D,EAAYniD,GAClC,IACIoiD,EACAC,EAFAT,EAAc,IAIlB,SAASphD,EAAKlY,GAKZ,OAJIA,IACyB,oBAAhBs5D,GAA4BS,EAAcT,aAAaA,EAAY34D,MAAM+D,KAAM3D,YAC1FupD,GAAOtqD,EAAQ85D,EAAiBC,KAE3BA,EAAcx1D,SAwCvB,OArCA2T,EAAKu0B,KAAO,SAASzsC,GAEnB,OADAsqD,GAAOtqD,EAAQ85D,EAAiBE,KACzBA,GAASz1D,UAGlB2T,EAAK+hD,QAAU,SAASj6D,GAEtB,OADAsqD,GAAOtqD,EAAQ85D,EAAiBI,KACzBA,GAAY31D,UAGrB2T,EAAK6hC,OAAS,SAAS/5C,GAErB,OADAsqD,GAAOtqD,EAAQ85D,EAAiBK,KACzBA,GAAW51D,UAGpB2T,EAAK4gD,SAAW,SAAS94D,GAEvB,OADAsqD,GAAOtqD,EAAQ85D,EAAiBM,KACzBA,GAAa71D,UAGtB2T,EAAK2hD,WAAa,SAAS5nD,GACzB,OAAOlR,UAAUC,QAAU84D,EAAwB,MAAL7nD,GAAa4nD,EAAa,KAAMhsD,KAAagsD,EAAa5nD,GAAGq4C,OAAQpyC,GAAQ2hD,GAG7H3hD,EAAKR,QAAU,SAASzF,GACtB,OAAKlR,UAAUC,QACf+4D,EAAqB,MAAL9nD,GAAayF,EAAU,KAAM,IAAIgiD,IAAc,IAAIP,GAAYzhD,EAAUzF,GAC9D,oBAAhBqnD,GAA4BS,EAAcT,YAAYA,GAC1DphD,GAHuBR,GAMhCQ,EAAKohD,YAAc,SAASrnD,GAC1B,OAAKlR,UAAUC,QACfs4D,EAA2B,oBAANrnD,EAAmBA,GAAK8nD,EAAcT,aAAarnD,IAAKA,GACtEiG,GAFuBohD,GAKzBphD,EAAK2hD,WAAWA,GAAYniD,QAAQA,IC3D9B,YAAS2iD,GACtB,MAAO,CACL/P,OAAQgQ,GAAYD,KAIjB,SAASC,GAAYD,GAC1B,OAAO,SAAS/P,GACd,IAAInkD,EAAI,IAAIo0D,GACZ,IAAK,IAAIp5D,KAAOk5D,EAASl0D,EAAEhF,GAAOk5D,EAAQl5D,GAE1C,OADAgF,EAAEmkD,OAASA,EACJnkD,GAIX,SAASo0D,MCZT,SAASC,GAAIX,EAAYY,EAAWz6D,GAClC,IAAIsyD,EAAOuH,EAAWa,YAAcb,EAAWa,aAM/C,OALAb,EAAWnjD,MAAM,KAAKqjB,UAAU,CAAC,EAAG,IACxB,MAARu4B,GAAcuH,EAAWa,WAAW,MACxCC,GAAU36D,EAAQ65D,EAAWvP,OAAOyD,KACpC0M,EAAU1M,GAAaxpD,UACX,MAAR+tD,GAAcuH,EAAWa,WAAWpI,GACjCuH,EAGF,SAASe,GAAUf,EAAY9uD,EAAQ/K,GAC5C,OAAOw6D,GAAIX,GAAY,SAASvzD,GAC9B,IAAIw4B,EAAI/zB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC7B2mB,EAAI3mB,EAAO,GAAG,GAAKA,EAAO,GAAG,GAC7BqH,EAAIvH,KAAKG,IAAI8zB,GAAKx4B,EAAE,GAAG,GAAKA,EAAE,GAAG,IAAKorB,GAAKprB,EAAE,GAAG,GAAKA,EAAE,GAAG,KAC1DQ,GAAKiE,EAAO,GAAG,IAAM+zB,EAAI1sB,GAAK9L,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACpD+E,GAAKN,EAAO,GAAG,IAAM2mB,EAAItf,GAAK9L,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACxDuzD,EAAWnjD,MAAM,IAAMtE,GAAG2nB,UAAU,CAACjzB,EAAGuE,MACvCrL,GAGE,SAAS66D,GAAQhB,EAAYl1C,EAAM3kB,GACxC,OAAO46D,GAAUf,EAAY,CAAC,CAAC,EAAG,GAAIl1C,GAAO3kB,GAGxC,SAAS86D,GAASjB,EAAYh6B,EAAO7/B,GAC1C,OAAOw6D,GAAIX,GAAY,SAASvzD,GAC9B,IAAIw4B,GAAKe,EACLztB,EAAI0sB,GAAKx4B,EAAE,GAAG,GAAKA,EAAE,GAAG,IACxBQ,GAAKg4B,EAAI1sB,GAAK9L,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACpC+E,GAAK+G,EAAI9L,EAAE,GAAG,GAClBuzD,EAAWnjD,MAAM,IAAMtE,GAAG2nB,UAAU,CAACjzB,EAAGuE,MACvCrL,GAGE,SAAS+6D,GAAUlB,EAAY/5B,EAAQ9/B,GAC5C,OAAOw6D,GAAIX,GAAY,SAASvzD,GAC9B,IAAIorB,GAAKoO,EACL1tB,EAAIsf,GAAKprB,EAAE,GAAG,GAAKA,EAAE,GAAG,IACxBQ,GAAKsL,EAAI9L,EAAE,GAAG,GACd+E,GAAKqmB,EAAItf,GAAK9L,EAAE,GAAG,GAAKA,EAAE,GAAG,KAAO,EACxCuzD,EAAWnjD,MAAM,IAAMtE,GAAG2nB,UAAU,CAACjzB,EAAGuE,MACvCrL,GD5BLu6D,GAAgBp4D,UAAY,CAC1ByB,YAAa22D,GACbllC,MAAO,SAASvuB,EAAGuE,GAAK3G,KAAK4lD,OAAOj1B,MAAMvuB,EAAGuE,IAC7Cw/C,OAAQ,WAAanmD,KAAK4lD,OAAOO,UACjCY,UAAW,WAAa/mD,KAAK4lD,OAAOmB,aACpCC,QAAS,WAAahnD,KAAK4lD,OAAOoB,WAClCC,aAAc,WAAajnD,KAAK4lD,OAAOqB,gBACvCC,WAAY,WAAalnD,KAAK4lD,OAAOsB,eEpBvC,IACIoP,GAAiB72B,GAAI,GAAKiF,IAEf,YAAS6xB,EAASC,GAC/B,OAAQA,EAYV,SAAkBD,EAASC,GAEzB,SAASC,EAAe1pD,EAAI60B,EAAIylB,EAASzkB,EAAImN,EAAImD,EAAIlmC,EAAIu0B,EAAIinB,EAAS3lB,EAAIoZ,EAAI7I,EAAIsjB,EAAO9Q,GACvF,IAAI5nB,EAAKhxB,EAAKD,EACVkxB,EAAKsD,EAAKK,EACVge,EAAK5hB,EAAKA,EAAKC,EAAKA,EACxB,GAAI2hB,EAAK,EAAI4W,GAAUE,IAAS,CAC9B,IAAI/0D,EAAIihC,EAAKC,EACTjhC,EAAImuC,EAAKkM,EACT7xC,EAAI8oC,EAAKE,EACTjmC,EAAI/G,GAAKzE,EAAIA,EAAIC,EAAIA,EAAIwI,EAAIA,GAC7BusD,EAAOja,GAAKtyC,GAAK+C,GACjBu7C,EAAU9hD,GAAIA,GAAIwD,GAAK,GAAKyH,IAAWjL,GAAIygD,EAAUmB,GAAW32C,IAAWw1C,EAAUmB,GAAW,EAAI9zB,GAAM9yB,EAAGD,GAC7G9C,EAAI03D,EAAQ7N,EAASiO,GACrBl1B,EAAK5iC,EAAE,GACP6iC,EAAK7iC,EAAE,GACP+3D,EAAMn1B,EAAK10B,EACX8pD,EAAMn1B,EAAKE,EACXk1B,EAAK74B,EAAK24B,EAAM54B,EAAK64B,GACrBC,EAAKA,EAAKlX,EAAK4W,GACZ5vD,IAAKo3B,EAAK44B,EAAM34B,EAAK44B,GAAOjX,EAAK,IAAO,IACxChd,EAAKC,EAAKkN,EAAKkM,EAAK/I,EAAKE,EAAKkjB,MACnCG,EAAe1pD,EAAI60B,EAAIylB,EAASzkB,EAAImN,EAAImD,EAAIzR,EAAIC,EAAIgnB,EAAS/mD,GAAKwL,EAAGvL,GAAKuL,EAAG/C,EAAGssD,EAAO9Q,GACvFA,EAAOj1B,MAAM8Q,EAAIC,GACjB+0B,EAAeh1B,EAAIC,EAAIgnB,EAAS/mD,EAAGC,EAAGwI,EAAG4C,EAAIu0B,EAAIinB,EAAS3lB,EAAIoZ,EAAI7I,EAAIsjB,EAAO9Q,KAInF,OAAO,SAASA,GACd,IAAIuB,EAAUyM,EAAKC,EAAKkD,EAAKC,EAAKC,EAC9B5P,EAASt6C,EAAI60B,EAAIgB,EAAImN,EAAImD,EAEzBgkB,EAAiB,CACnBvmC,MAAOA,EACPo2B,UAAWA,EACXC,QAASA,EACTC,aAAc,WAAarB,EAAOqB,eAAgBiQ,EAAenQ,UAAYiI,GAC7E9H,WAAY,WAAatB,EAAOsB,aAAcgQ,EAAenQ,UAAYA,IAG3E,SAASp2B,EAAMvuB,EAAGuE,GAChBvE,EAAIm0D,EAAQn0D,EAAGuE,GACfi/C,EAAOj1B,MAAMvuB,EAAE,GAAIA,EAAE,IAGvB,SAAS2kD,IACPh6C,EAAKlL,IACLq1D,EAAevmC,MAAQi5B,EACvBhE,EAAOmB,YAGT,SAAS6C,EAAU5B,EAAQC,GACzB,IAAI79C,EAAI0+C,GAAU,CAACd,EAAQC,IAAOppD,EAAI03D,EAAQvO,EAAQC,GACtDwO,EAAe1pD,EAAI60B,EAAIylB,EAASzkB,EAAImN,EAAImD,EAAInmC,EAAKlO,EAAE,GAAI+iC,EAAK/iC,EAAE,GAAIwoD,EAAUW,EAAQplB,EAAKx4B,EAAE,GAAI2lC,EAAK3lC,EAAE,GAAI8oC,EAAK9oC,EAAE,GArExG,GAqEsHw7C,GAC/HA,EAAOj1B,MAAM5jB,EAAI60B,GAGnB,SAASolB,IACPkQ,EAAevmC,MAAQA,EACvBi1B,EAAOoB,UAGT,SAASgI,IACPjI,IACAmQ,EAAevmC,MAAQwmC,EACvBD,EAAelQ,QAAUiI,EAG3B,SAASkI,EAAUnP,EAAQC,GACzB2B,EAAUzC,EAAWa,EAAQC,GAAM2L,EAAM7mD,EAAI8mD,EAAMjyB,EAAIm1B,EAAMn0B,EAAIo0B,EAAMjnB,EAAIknB,EAAM/jB,EACjFgkB,EAAevmC,MAAQi5B,EAGzB,SAASqF,IACPwH,EAAe1pD,EAAI60B,EAAIylB,EAASzkB,EAAImN,EAAImD,EAAI0gB,EAAKC,EAAK1M,EAAU4P,EAAKC,EAAKC,EA1FjE,GA0FgFrR,GACzFsR,EAAelQ,QAAUA,EACzBA,IAGF,OAAOkQ,GA3FQE,CAASb,EAASC,GAGrC,SAAsBD,GACpB,OAAOX,GAAY,CACjBjlC,MAAO,SAASvuB,EAAGuE,GACjBvE,EAAIm0D,EAAQn0D,EAAGuE,GACf3G,KAAK4lD,OAAOj1B,MAAMvuB,EAAE,GAAIA,EAAE,OAPei1D,CAAad,ICG5D,IAAIe,GAAmB1B,GAAY,CACjCjlC,MAAO,SAASvuB,EAAGuE,GACjB3G,KAAK4lD,OAAOj1B,MAAMvuB,EAAIsiC,GAAS/9B,EAAI+9B,OAwBvC,SAAS6yB,GAAqB7pD,EAAGswB,EAAIC,EAAIugB,EAAIC,EAAIyC,GAC/C,IAAKA,EAAO,OAZd,SAAwBxzC,EAAGswB,EAAIC,EAAIugB,EAAIC,GACrC,SAAS1rC,EAAU3Q,EAAGuE,GAEpB,MAAO,CAACq3B,EAAKtwB,GADbtL,GAAKo8C,GACevgB,EAAKvwB,GADhB/G,GAAK83C,IAMhB,OAHA1rC,EAAUi5C,OAAS,SAAS5pD,EAAGuE,GAC7B,MAAO,EAAEvE,EAAI47B,GAAMtwB,EAAI8wC,GAAKvgB,EAAKt3B,GAAK+G,EAAI+wC,IAErC1rC,EAIYykD,CAAe9pD,EAAGswB,EAAIC,EAAIugB,EAAIC,GACjD,IAAIgZ,EAAWh4B,GAAIyhB,GACfwW,EAAWh4B,GAAIwhB,GACfv/C,EAAI81D,EAAW/pD,EACf9L,EAAI81D,EAAWhqD,EACfgmC,EAAK+jB,EAAW/pD,EAChBuiB,EAAKynC,EAAWhqD,EAChB6lC,GAAMmkB,EAAWz5B,EAAKw5B,EAAWz5B,GAAMtwB,EACvCiqD,GAAMD,EAAW15B,EAAKy5B,EAAWx5B,GAAMvwB,EAC3C,SAASqF,EAAU3Q,EAAGuE,GAEpB,MAAO,CAAChF,GADRS,GAAKo8C,GACW58C,GADP+E,GAAK83C,GACUzgB,EAAIC,EAAKr8B,EAAIQ,EAAIT,EAAIgF,GAK/C,OAHAoM,EAAUi5C,OAAS,SAAS5pD,EAAGuE,GAC7B,MAAO,CAAC63C,GAAM9K,EAAKtxC,EAAI6tB,EAAKtpB,EAAI4sC,GAAKkL,GAAMkZ,EAAK1nC,EAAK7tB,EAAIsxC,EAAK/sC,KAEzDoM,EAGM,SAASoiD,GAAWoB,GACjC,OAAOqB,IAAkB,WAAa,OAAOrB,IAAtCqB,GAGF,SAASA,GAAkBC,GAChC,IAAItB,EAI+CjiC,EAKpCsN,EAAI50B,EAAIu0B,EAEnBu2B,EACAC,EACAC,EACAhG,EACAC,EAdAvkD,EAAI,IACJtL,EAAI,IAAKuE,EAAI,IACbqhD,EAAS,EAAGC,EAAM,EAClBkE,EAAc,EAAGC,EAAW,EAAGC,EAAa,EAC5CnL,EAAQ,EACR1C,EAAK,EACLC,EAAK,EACLgE,EAAQ,KAAMwV,EAAUC,GACxBnrD,EAAK,KAAkBorD,EAAWhvD,GAClCqtD,EAAS,GAOb,SAASrB,EAAWxkC,GAClB,OAAOqnC,EAAuBrnC,EAAM,GAAK+T,GAAS/T,EAAM,GAAK+T,IAG/D,SAASsnB,EAAOr7B,GAEd,OADAA,EAAQqnC,EAAuBhM,OAAOr7B,EAAM,GAAIA,EAAM,MACtC,CAACA,EAAM,GAAKyD,GAASzD,EAAM,GAAKyD,IAuElD,SAASgkC,IACP,IAAI31D,EAAS80D,GAAqB7pD,EAAG,EAAG,EAAG8wC,EAAIC,EAAIyC,GAAOjlD,MAAM,KAAMs6D,EAAQvO,EAAQC,IAClFl1C,EAAYwkD,GAAqB7pD,EAAGtL,EAAIK,EAAO,GAAIkE,EAAIlE,EAAO,GAAI+7C,EAAIC,EAAIyC,GAK9E,OAJA5sB,EAAS43B,GAAcC,EAAaC,EAAUC,GAC9C0L,EAAmBhM,GAAQwK,EAASxjD,GACpCilD,EAAyBjM,GAAQz3B,EAAQyjC,GACzCD,EAAkBV,GAASW,EAAkBvB,GACtC6B,IAGT,SAASA,IAEP,OADArG,EAAQC,EAAc,KACfkD,EAGT,OAnFAA,EAAWvP,OAAS,SAASA,GAC3B,OAAOoM,GAASC,IAAgBrM,EAASoM,EAAQA,EAAQsF,GAxE7D,SAAyBhjC,GACvB,OAAOshC,GAAY,CACjBjlC,MAAO,SAASvuB,EAAGuE,GACjB,IAAIiJ,EAAI0kB,EAAOlyB,EAAGuE,GAClB,OAAO3G,KAAK4lD,OAAOj1B,MAAM/gB,EAAE,GAAIA,EAAE,OAoEuC0oD,CAAgBhkC,EAAhBgkC,CAAwBL,EAAQH,EAAgBK,EAASlG,EAAcrM,QAGnJuP,EAAW8C,QAAU,SAAS1qD,GAC5B,OAAOlR,UAAUC,QAAU27D,EAAU1qD,EAAGk1C,OAAQjiD,EAAW63D,KAAWJ,GAGxE9C,EAAWgD,SAAW,SAAS5qD,GAC7B,OAAOlR,UAAUC,QAAU67D,EAAW5qD,EAAGR,EAAK60B,EAAK50B,EAAKu0B,EAAK,KAAM82B,KAAWF,GAGhFhD,EAAWoD,UAAY,SAAShrD,GAC9B,OAAOlR,UAAUC,QAAU27D,GAAW1qD,EAAIirD,GAAW/V,EAAQl1C,EAAIm3B,KAAY+d,EAAQ,KAAMyV,IAAmBG,KAAW5V,EAAQruB,IAGnI+gC,EAAWa,WAAa,SAASzoD,GAC/B,OAAOlR,UAAUC,QAAU67D,EAAgB,MAAL5qD,GAAaR,EAAK60B,EAAK50B,EAAKu0B,EAAK,KAAMp4B,IAAY4nD,GAAchkD,GAAMQ,EAAE,GAAG,GAAIq0B,GAAMr0B,EAAE,GAAG,GAAIP,GAAMO,EAAE,GAAG,GAAIg0B,GAAMh0B,EAAE,GAAG,IAAK8qD,KAAiB,MAANtrD,EAAa,KAAO,CAAC,CAACA,EAAI60B,GAAK,CAAC50B,EAAIu0B,KAGrN4zB,EAAWnjD,MAAQ,SAASzE,GAC1B,OAAOlR,UAAUC,QAAUoR,GAAKH,EAAG6qD,KAAc1qD,GAGnDynD,EAAW9/B,UAAY,SAAS9nB,GAC9B,OAAOlR,UAAUC,QAAU8F,GAAKmL,EAAE,GAAI5G,GAAK4G,EAAE,GAAI6qD,KAAc,CAACh2D,EAAGuE,IAGrEwuD,EAAW1yD,OAAS,SAAS8K,GAC3B,OAAOlR,UAAUC,QAAU0rD,EAASz6C,EAAE,GAAK,IAAMm3B,GAASujB,EAAM16C,EAAE,GAAK,IAAMm3B,GAAS0zB,KAAc,CAACpQ,EAAS5zB,GAAS6zB,EAAM7zB,KAG/H+gC,EAAW7gC,OAAS,SAAS/mB,GAC3B,OAAOlR,UAAUC,QAAU6vD,EAAc5+C,EAAE,GAAK,IAAMm3B,GAAS0nB,EAAW7+C,EAAE,GAAK,IAAMm3B,GAAS2nB,EAAa9+C,EAAEjR,OAAS,EAAIiR,EAAE,GAAK,IAAMm3B,GAAU,EAAG0zB,KAAc,CAACjM,EAAc/3B,GAASg4B,EAAWh4B,GAASi4B,EAAaj4B,KAG/N+gC,EAAWpT,MAAQ,SAASx0C,GAC1B,OAAOlR,UAAUC,QAAU4kD,EAAQ3zC,EAAI,IAAMm3B,GAAS0zB,KAAclX,EAAQ9sB,IAG9E+gC,EAAWsD,SAAW,SAASlrD,GAC7B,OAAOlR,UAAUC,QAAUkiD,EAAKjxC,GAAK,EAAI,EAAG6qD,KAAc5Z,EAAK,GAGjE2W,EAAWuD,SAAW,SAASnrD,GAC7B,OAAOlR,UAAUC,QAAUmiD,EAAKlxC,GAAK,EAAI,EAAG6qD,KAAc3Z,EAAK,GAGjE0W,EAAW9R,UAAY,SAAS91C,GAC9B,OAAOlR,UAAUC,QAAUw7D,EAAkBV,GAASW,EAAkBvB,EAASjpD,EAAIA,GAAI8qD,KAAWjyD,GAAKowD,IAG3GrB,EAAWe,UAAY,SAAS7vD,EAAQ/K,GACtC,OAAO46D,GAAUf,EAAY9uD,EAAQ/K,IAGvC65D,EAAWgB,QAAU,SAASl2C,EAAM3kB,GAClC,OAAO66D,GAAQhB,EAAYl1C,EAAM3kB,IAGnC65D,EAAWiB,SAAW,SAASj7B,EAAO7/B,GACpC,OAAO86D,GAASjB,EAAYh6B,EAAO7/B,IAGrC65D,EAAWkB,UAAY,SAASj7B,EAAQ9/B,GACtC,OAAO+6D,GAAUlB,EAAY/5B,EAAQ9/B,IAkBhC,WAGL,OAFAi7D,EAAUsB,EAAU57D,MAAM+D,KAAM3D,WAChC84D,EAAWnJ,OAASuK,EAAQvK,QAAUA,EAC/BoM,KC3KJ,SAASO,GAAgBd,GAC9B,IAAItP,EAAO,EACPE,EAAO9oB,GAAK,EACZxyB,EAAIyqD,GAAkBC,GACtBh5D,EAAIsO,EAAEo7C,EAAME,GAMhB,OAJA5pD,EAAE+5D,UAAY,SAASrrD,GACrB,OAAOlR,UAAUC,OAAS6Q,EAAEo7C,EAAOh7C,EAAE,GAAKm3B,GAAS+jB,EAAOl7C,EAAE,GAAKm3B,IAAW,CAAC6jB,EAAOn0B,GAASq0B,EAAOr0B,KAG/Fv1B,ECTF,SAASg6D,GAAkBj3B,EAAIL,GACpC,IAAI4S,EAAMzU,GAAIkC,GAAK5gC,GAAKmzC,EAAMzU,GAAI6B,IAAO,EAGzC,GAAI36B,GAAI5F,GAAK6Q,GAAS,OCNjB,SAAiC02C,GACtC,IAAIjB,EAAU7nB,GAAI8oB,GAElB,SAASuE,EAAQ9E,EAAQC,GACvB,MAAO,CAACD,EAASV,EAAS5nB,GAAIuoB,GAAOX,GAOvC,OAJAwF,EAAQd,OAAS,SAAS5pD,EAAGuE,GAC3B,MAAO,CAACvE,EAAIklD,EAAS5K,GAAK/1C,EAAI2gD,KAGzBwF,EDLsBgM,CAAwBl3B,GAErD,IAAIx3B,EAAI,EAAI+pC,GAAO,EAAInzC,EAAImzC,GAAM5oC,EAAKnF,GAAKgE,GAAKpJ,EAEhD,SAASu1D,EAAQn0D,EAAGuE,GAClB,IAAIiJ,EAAIxJ,GAAKgE,EAAI,EAAIpJ,EAAI0+B,GAAI/4B,IAAM3F,EACnC,MAAO,CAAC4O,EAAI8vB,GAAIt9B,GAAKpB,GAAIuK,EAAKqE,EAAI6vB,GAAIr9B,IAWxC,OARAm0D,EAAQvK,OAAS,SAAS5pD,EAAGuE,GAC3B,IAAIoyD,EAAMxtD,EAAK5E,EACXulB,EAAIwI,GAAMtyB,EAAGwE,GAAImyD,IAAQzmB,GAAKymB,GAGlC,OAFIA,EAAM/3D,EAAI,IACZkrB,GAAKyT,GAAK2S,GAAKlwC,GAAKkwC,GAAKymB,IACpB,CAAC7sC,EAAIlrB,EAAG07C,IAAMtyC,GAAKhI,EAAIA,EAAI22D,EAAMA,GAAO/3D,EAAIA,IAAM,EAAIA,MAGxDu1D,EAGM,kBACb,OAAOoC,GAAgBE,IAClB7mD,MAAM,SACNvP,OAAO,CAAC,EAAG,WE7BH,cACb,OAAOu2D,KACFJ,UAAU,CAAC,KAAM,OACjB5mD,MAAM,MACNqjB,UAAU,CAAC,IAAK,MAChBf,OAAO,CAAC,GAAI,IACZ7xB,OAAO,EAAE,GAAK,QCgBN,kBACb,IAAIuvD,EACAC,EACoBgH,EAC+DC,EACDC,EAClFxoC,EAHAyoC,EAAUC,KACVC,EAASN,KAAiB1kC,OAAO,CAAC,IAAK,IAAI7xB,OAAO,EAAE,EAAG,OAAOm2D,UAAU,CAAC,GAAI,KAC7EW,EAASP,KAAiB1kC,OAAO,CAAC,IAAK,IAAI7xB,OAAO,EAAE,EAAG,OAAOm2D,UAAU,CAAC,EAAG,KACrEY,EAAc,CAAC7oC,MAAO,SAASvuB,EAAGuE,GAAKgqB,EAAQ,CAACvuB,EAAGuE,KAE9D,SAAS8yD,EAAUxxB,GACjB,IAAI7lC,EAAI6lC,EAAY,GAAIthC,EAAIshC,EAAY,GACxC,OAAOtX,EAAQ,KACVsoC,EAAatoC,MAAMvuB,EAAGuE,GAAIgqB,IACvBuoC,EAAYvoC,MAAMvuB,EAAGuE,GAAIgqB,KACzBwoC,EAAYxoC,MAAMvuB,EAAGuE,GAAIgqB,GAmEnC,SAAS0nC,IAEP,OADArG,EAAQC,EAAc,KACfwH,EAGT,OArEAA,EAAUzN,OAAS,SAAS/jB,GAC1B,IAAIv6B,EAAI0rD,EAAQpnD,QACZhE,EAAIorD,EAAQ/jC,YACZjzB,GAAK6lC,EAAY,GAAKj6B,EAAE,IAAMN,EAC9B/G,GAAKshC,EAAY,GAAKj6B,EAAE,IAAMN,EAClC,OAAQ/G,GAAK,KAASA,EAAI,MAASvE,IAAM,MAASA,GAAK,KAAQk3D,EACzD3yD,GAAK,MAASA,EAAI,MAASvE,IAAM,MAASA,GAAK,KAAQm3D,EACvDH,GAASpN,OAAO/jB,IAGxBwxB,EAAU7T,OAAS,SAASA,GAC1B,OAAOoM,GAASC,IAAgBrM,EAASoM,EAAQA,EA5CrD,SAAmB0H,GACjB,IAAI14D,EAAI04D,EAAQp9D,OAChB,MAAO,CACLq0B,MAAO,SAASvuB,EAAGuE,GAAiB,IAAZ,IAAIvK,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAGu0B,MAAMvuB,EAAGuE,IACxEw/C,OAAQ,WAAyB,IAAZ,IAAI/pD,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAG+pD,UAC5DY,UAAW,WAAyB,IAAZ,IAAI3qD,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAG2qD,aAC/DC,QAAS,WAAyB,IAAZ,IAAI5qD,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAG4qD,WAC7DC,aAAc,WAAyB,IAAZ,IAAI7qD,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAG6qD,gBAClEC,WAAY,WAAyB,IAAZ,IAAI9qD,GAAK,IAAYA,EAAI4E,GAAG04D,EAAQt9D,GAAG8qD,eAoCPyS,CAAU,CAACP,EAAQxT,OAAOqM,EAAcrM,GAAS0T,EAAO1T,OAAOA,GAAS2T,EAAO3T,OAAOA,MAGjJ6T,EAAUpW,UAAY,SAAS91C,GAC7B,OAAKlR,UAAUC,QACf88D,EAAQ/V,UAAU91C,GAAI+rD,EAAOjW,UAAU91C,GAAIgsD,EAAOlW,UAAU91C,GACrD8qD,KAFuBe,EAAQ/V,aAKxCoW,EAAUznD,MAAQ,SAASzE,GACzB,OAAKlR,UAAUC,QACf88D,EAAQpnD,MAAMzE,GAAI+rD,EAAOtnD,MAAU,IAAJzE,GAAWgsD,EAAOvnD,MAAMzE,GAChDksD,EAAUpkC,UAAU+jC,EAAQ/jC,cAFL+jC,EAAQpnD,SAKxCynD,EAAUpkC,UAAY,SAAS9nB,GAC7B,IAAKlR,UAAUC,OAAQ,OAAO88D,EAAQ/jC,YACtC,IAAI3nB,EAAI0rD,EAAQpnD,QAAS5P,GAAKmL,EAAE,GAAI5G,GAAK4G,EAAE,GAiB3C,OAfA0rD,EAAeG,EACV/jC,UAAU9nB,GACVyoD,WAAW,CAAC,CAAC5zD,EAAI,KAAQsL,EAAG/G,EAAI,KAAQ+G,GAAI,CAACtL,EAAI,KAAQsL,EAAG/G,EAAI,KAAQ+G,KACxEk4C,OAAO4T,GAEZN,EAAcI,EACTjkC,UAAU,CAACjzB,EAAI,KAAQsL,EAAG/G,EAAI,KAAQ+G,IACtCsoD,WAAW,CAAC,CAAC5zD,EAAI,KAAQsL,EAAImE,GAASlL,EAAI,IAAQ+G,EAAImE,IAAU,CAACzP,EAAI,KAAQsL,EAAImE,GAASlL,EAAI,KAAQ+G,EAAImE,MAC1G+zC,OAAO4T,GAEZL,EAAcI,EACTlkC,UAAU,CAACjzB,EAAI,KAAQsL,EAAG/G,EAAI,KAAQ+G,IACtCsoD,WAAW,CAAC,CAAC5zD,EAAI,KAAQsL,EAAImE,GAASlL,EAAI,KAAQ+G,EAAImE,IAAU,CAACzP,EAAI,KAAQsL,EAAImE,GAASlL,EAAI,KAAQ+G,EAAImE,MAC1G+zC,OAAO4T,GAELnB,KAGToB,EAAUvD,UAAY,SAAS7vD,EAAQ/K,GACrC,OAAO46D,GAAUuD,EAAWpzD,EAAQ/K,IAGtCm+D,EAAUtD,QAAU,SAASl2C,EAAM3kB,GACjC,OAAO66D,GAAQsD,EAAWx5C,EAAM3kB,IAGlCm+D,EAAUrD,SAAW,SAASj7B,EAAO7/B,GACnC,OAAO86D,GAASqD,EAAWt+B,EAAO7/B,IAGpCm+D,EAAUpD,UAAY,SAASj7B,EAAQ9/B,GACrC,OAAO+6D,GAAUoD,EAAWr+B,EAAQ9/B,IAQ/Bm+D,EAAUznD,MAAM,OC3GlB,SAAS4nD,GAAa5nD,GAC3B,OAAO,SAAS5P,EAAGuE,GACjB,IAAIokC,EAAKtL,GAAIr9B,GACT4oC,EAAKvL,GAAI94B,GACT+G,EAAIsE,EAAM+4B,EAAKC,GACf,OAAIt9B,IAAMolB,IAAiB,CAAC,EAAG,GAC5B,CACLplB,EAAIs9B,EAAKtL,GAAIt9B,GACbsL,EAAIgyB,GAAI/4B,KAKP,SAASkzD,GAAgB9X,GAC9B,OAAO,SAAS3/C,EAAGuE,GACjB,IAAIgH,EAAIvH,GAAKhE,EAAIA,EAAIuE,EAAIA,GACrByD,EAAI23C,EAAMp0C,GACVmsD,EAAKp6B,GAAIt1B,GACT2vD,EAAKt6B,GAAIr1B,GACb,MAAO,CACLsqB,GAAMtyB,EAAI03D,EAAInsD,EAAIosD,GAClBrd,GAAK/uC,GAAKhH,EAAImzD,EAAKnsD,KCnBlB,IAAIqsD,GAAwBJ,IAAa,SAASK,GACvD,OAAO7zD,GAAK,GAAK,EAAI6zD,OAGvBD,GAAsBhO,OAAS6N,IAAgB,SAASlsD,GACtD,OAAO,EAAI+uC,GAAK/uC,EAAI,MAGP,kBACb,OAAOwnD,GAAW6E,IACbhoD,MAAM,QACNumD,UAAU,UCXN2B,GAA0BN,IAAa,SAASxvD,GACzD,OAAQA,EAAIo4B,GAAKp4B,KAAOA,EAAIs1B,GAAIt1B,MAGlC8vD,GAAwBlO,OAAS6N,IAAgB,SAASlsD,GACxD,OAAOA,KAGM,kBACb,OAAOwnD,GAAW+E,IACbloD,MAAM,SACNumD,UAAU,UCXV,SAAS4B,GAAYnS,EAAQC,GAClC,MAAO,CAACD,EAAQp8C,GAAIqf,IAAK2U,GAASqoB,GAAO,KAG3CkS,GAAYnO,OAAS,SAAS5pD,EAAGuE,GAC/B,MAAO,CAACvE,EAAG,EAAIuyB,GAAK/mB,GAAIjH,IAAMi5B,KAGjB,kBACb,OAAOw6B,GAAmBD,IACrBnoD,MAAM,IAAM6tB,KAGZ,SAASu6B,GAAmB7D,GACjC,IAKe30B,EAAI50B,EAAIu0B,EALnBp0B,EAAIgoD,GAAWoB,GACf9zD,EAAS0K,EAAE1K,OACXuP,EAAQ7E,EAAE6E,MACVqjB,EAAYloB,EAAEkoB,UACd2gC,EAAa7oD,EAAE6oD,WACfjpD,EAAK,KAkBT,SAASstD,IACP,IAAI3sD,EAAIiyB,GAAK3tB,IACThE,EAAIb,EAAEs/C,GAASt/C,EAAEmnB,UAAU03B,OAAO,CAAC,EAAG,KAC1C,OAAOgK,EAAiB,MAANjpD,EACZ,CAAC,CAACiB,EAAE,GAAKN,EAAGM,EAAE,GAAKN,GAAI,CAACM,EAAE,GAAKN,EAAGM,EAAE,GAAKN,IAAM6oD,IAAY4D,GAC3D,CAAC,CAACh0D,KAAKI,IAAIyH,EAAE,GAAKN,EAAGX,GAAK60B,GAAK,CAACz7B,KAAKG,IAAI0H,EAAE,GAAKN,EAAGV,GAAKu0B,IACxD,CAAC,CAACx0B,EAAI5G,KAAKI,IAAIyH,EAAE,GAAKN,EAAGk0B,IAAM,CAAC50B,EAAI7G,KAAKG,IAAI0H,EAAE,GAAKN,EAAG6zB,MAG/D,OAzBAp0B,EAAE6E,MAAQ,SAASzE,GACjB,OAAOlR,UAAUC,QAAU0V,EAAMzE,GAAI8sD,KAAYroD,KAGnD7E,EAAEkoB,UAAY,SAAS9nB,GACrB,OAAOlR,UAAUC,QAAU+4B,EAAU9nB,GAAI8sD,KAAYhlC,KAGvDloB,EAAE1K,OAAS,SAAS8K,GAClB,OAAOlR,UAAUC,QAAUmG,EAAO8K,GAAI8sD,KAAY53D,KAGpD0K,EAAE6oD,WAAa,SAASzoD,GACtB,OAAOlR,UAAUC,QAAgB,MAALiR,EAAYR,EAAK60B,EAAK50B,EAAKu0B,EAAK,MAAQx0B,GAAMQ,EAAE,GAAG,GAAIq0B,GAAMr0B,EAAE,GAAG,GAAIP,GAAMO,EAAE,GAAG,GAAIg0B,GAAMh0B,EAAE,GAAG,IAAM8sD,KAAkB,MAANttD,EAAa,KAAO,CAAC,CAACA,EAAI60B,GAAK,CAAC50B,EAAIu0B,KAY7K84B,IC9CT,SAASC,GAAK3zD,GACZ,OAAOskB,IAAK2U,GAASj5B,GAAK,GAGrB,SAAS4zD,GAAkB34B,EAAIL,GACpC,IAAIuyB,EAAMr0B,GAAImC,GACV5gC,EAAI4gC,IAAOL,EAAK7B,GAAIkC,GAAMh2B,GAAIkoD,EAAMr0B,GAAI8B,IAAO31B,GAAI0uD,GAAK/4B,GAAM+4B,GAAK14B,IACnE7/B,EAAI+xD,EAAM/nD,GAAIuuD,GAAK14B,GAAK5gC,GAAKA,EAEjC,IAAKA,EAAG,OAAOm5D,GAEf,SAAS5D,EAAQn0D,EAAGuE,GACd5E,EAAI,EAAS4E,GAAKi5B,GAAS/tB,KAASlL,GAAKi5B,GAAS/tB,IAC3ClL,EAAIi5B,GAAS/tB,KAASlL,EAAIi5B,GAAS/tB,IAC9C,IAAIjC,EAAI7N,EAAIgK,GAAIuuD,GAAK3zD,GAAI3F,GACzB,MAAO,CAAC4O,EAAI8vB,GAAI1+B,EAAIoB,GAAIL,EAAI6N,EAAI6vB,GAAIz+B,EAAIoB,IAW1C,OARAm0D,EAAQvK,OAAS,SAAS5pD,EAAGuE,GAC3B,IAAIqqC,EAAKjvC,EAAI4E,EAAGiJ,EAAI0iC,GAAKtxC,GAAKoF,GAAKhE,EAAIA,EAAI4uC,EAAKA,GAC9C9kB,EAAIwI,GAAMtyB,EAAGwE,GAAIoqC,IAAOsB,GAAKtB,GAG/B,OAFIA,EAAKhwC,EAAI,IACXkrB,GAAKyT,GAAK2S,GAAKlwC,GAAKkwC,GAAKtB,IACpB,CAAC9kB,EAAIlrB,EAAG,EAAI2zB,GAAK5oB,GAAIhK,EAAI6N,EAAG,EAAI5O,IAAM4+B,KAGxC22B,EAGM,kBACb,OAAOoC,GAAgB4B,IAClBvoD,MAAM,OACN4mD,UAAU,CAAC,GAAI,MClCf,SAAS4B,GAAmBxS,EAAQC,GACzC,MAAO,CAACD,EAAQC,GAGlBuS,GAAmBxO,OAASwO,GAEb,kBACb,OAAOrF,GAAWqF,IACbxoD,MAAM,SCNN,SAASyoD,GAAoB74B,EAAIL,GACtC,IAAIuyB,EAAMr0B,GAAImC,GACV5gC,EAAI4gC,IAAOL,EAAK7B,GAAIkC,IAAOkyB,EAAMr0B,GAAI8B,KAAQA,EAAKK,GAClDn4B,EAAIqqD,EAAM9yD,EAAI4gC,EAElB,GAAIh7B,GAAI5F,GAAK6Q,GAAS,OAAO2oD,GAE7B,SAASjE,EAAQn0D,EAAGuE,GAClB,IAAI+zD,EAAKjxD,EAAI9C,EAAGg0D,EAAK35D,EAAIoB,EACzB,MAAO,CAACs4D,EAAKh7B,GAAIi7B,GAAKlxD,EAAIixD,EAAKj7B,GAAIk7B,IAWrC,OARApE,EAAQvK,OAAS,SAAS5pD,EAAGuE,GAC3B,IAAI+zD,EAAKjxD,EAAI9C,EACTulB,EAAIwI,GAAMtyB,EAAGwE,GAAI8zD,IAAOpoB,GAAKooB,GAGjC,OAFIA,EAAK15D,EAAI,IACXkrB,GAAKyT,GAAK2S,GAAKlwC,GAAKkwC,GAAKooB,IACpB,CAACxuC,EAAIlrB,EAAGyI,EAAI6oC,GAAKtxC,GAAKoF,GAAKhE,EAAIA,EAAIs4D,EAAKA,KAG1CnE,EAGM,kBACb,OAAOoC,GAAgB8B,IAClBzoD,MAAM,SACNvP,OAAO,CAAC,EAAG,WC3Bdm4D,GAAK,SACLC,IAAM,QACNC,GAAK,OACLC,GAAK,QACLC,GAAI50D,GAAK,GAAK,EAGX,SAAS60D,GAAcjT,EAAQC,GACpC,IAAI/7B,EAAIwwB,GAAKse,GAAIt7B,GAAIuoB,IAAOiT,EAAKhvC,EAAIA,EAAGivC,EAAKD,EAAKA,EAAKA,EACvD,MAAO,CACLlT,EAASvoB,GAAIvT,IAAM8uC,IAAKJ,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,KACnEhvC,GAAK0uC,GAAKC,GAAKK,EAAKC,GAAML,GAAKC,GAAKG,KAIxCD,GAAcjP,OAAS,SAAS5pD,EAAGuE,GAEjC,IADA,IACgB3E,EADZkqB,EAAIvlB,EAAGu0D,EAAKhvC,EAAIA,EAAGivC,EAAKD,EAAKA,EAAKA,EAC7B9+D,EAAI,EAAmBA,EAZjB,KAesB++D,GAAZD,GAAvBhvC,GAAKlqB,GAFAkqB,GAAK0uC,GAAKC,GAAKK,EAAKC,GAAML,GAAKC,GAAKG,IAAOv0D,IAC1Ci0D,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,KACjBhvC,GAAagvC,EAAKA,IAC9Ct0D,GAAI5E,GAASwjD,OAJ+BppD,GAMlD,MAAO,CACL4+D,GAAI54D,GAAKw4D,GAAK,EAAIC,GAAKK,EAAKC,GAAM,EAAIL,GAAK,EAAIC,GAAKG,IAAOz7B,GAAIvT,GAC/DwwB,GAAKhd,GAAIxT,GAAK8uC,MAIH,kBACb,OAAO7F,GAAW8F,IACbjpD,MAAM,UC9BN,SAASopD,GAAYh5D,EAAGuE,GAC7B,IAAIqkC,EAAKvL,GAAI94B,GAAI+G,EAAI+xB,GAAIr9B,GAAK4oC,EAC9B,MAAO,CAACA,EAAKtL,GAAIt9B,GAAKsL,EAAGgyB,GAAI/4B,GAAK+G,GAGpC0tD,GAAYpP,OAAS6N,GAAgBllC,IAEtB,kBACb,OAAOwgC,GAAWiG,IACbppD,MAAM,SACNumD,UAAU,KCRF,cACb,IACerH,EAAImK,EACJz5B,EAAI50B,EAAIu0B,EASnBywB,EACAC,EAZAvkD,EAAI,EAAG4tD,EAAK,EAAGC,EAAK,EAAG/c,EAAK,EAAGC,EAAK,EACpCyC,EAAQ,EACRn0C,EAAK,KACLyuD,EAAK,EAAGC,EAAK,EACb1oD,EAAY6iD,GAAY,CACtBjlC,MAAO,SAASvuB,EAAGuE,GACjB,IAAI9H,EAAIs2D,EAAW,CAAC/yD,EAAGuE,IACvB3G,KAAK4lD,OAAOj1B,MAAM9xB,EAAE,GAAIA,EAAE,OAG9Bs5D,EAAWhvD,GAIf,SAASkvD,IAIP,OAHAmD,EAAK9tD,EAAI8wC,EACTid,EAAK/tD,EAAI+wC,EACTuT,EAAQC,EAAc,KACfkD,EAGT,SAASA,EAAYt2D,GACnB,IAAIuD,EAAIvD,EAAE,GAAK28D,EAAI70D,EAAI9H,EAAE,GAAK48D,EAC9B,GAAIva,EAAO,CACT,IAAIlzC,EAAIrH,EAAIuqD,EAAK9uD,EAAIi5D,EACrBj5D,EAAIA,EAAI8uD,EAAKvqD,EAAI00D,EACjB10D,EAAIqH,EAEN,MAAO,CAAC5L,EAAIk5D,EAAI30D,EAAI40D,GAgDtB,OA9CApG,EAAWnJ,OAAS,SAASntD,GAC3B,IAAIuD,EAAIvD,EAAE,GAAKy8D,EAAI30D,EAAI9H,EAAE,GAAK08D,EAC9B,GAAIra,EAAO,CACT,IAAIlzC,EAAIrH,EAAIuqD,EAAK9uD,EAAIi5D,EACrBj5D,EAAIA,EAAI8uD,EAAKvqD,EAAI00D,EACjB10D,EAAIqH,EAEN,MAAO,CAAC5L,EAAIo5D,EAAI70D,EAAI80D,IAEtBtG,EAAWvP,OAAS,SAASA,GAC3B,OAAOoM,GAASC,IAAgBrM,EAASoM,EAAQA,EAAQj/C,EAAUolD,EAASlG,EAAcrM,KAE5FuP,EAAWgD,SAAW,SAAS5qD,GAC7B,OAAOlR,UAAUC,QAAU67D,EAAW5qD,EAAGR,EAAK60B,EAAK50B,EAAKu0B,EAAK,KAAM82B,KAAWF,GAEhFhD,EAAWa,WAAa,SAASzoD,GAC/B,OAAOlR,UAAUC,QAAU67D,EAAgB,MAAL5qD,GAAaR,EAAK60B,EAAK50B,EAAKu0B,EAAK,KAAMp4B,IAAY4nD,GAAchkD,GAAMQ,EAAE,GAAG,GAAIq0B,GAAMr0B,EAAE,GAAG,GAAIP,GAAMO,EAAE,GAAG,GAAIg0B,GAAMh0B,EAAE,GAAG,IAAK8qD,KAAiB,MAANtrD,EAAa,KAAO,CAAC,CAACA,EAAI60B,GAAK,CAAC50B,EAAIu0B,KAErN4zB,EAAWnjD,MAAQ,SAASzE,GAC1B,OAAOlR,UAAUC,QAAUoR,GAAKH,EAAG8qD,KAAW3qD,GAEhDynD,EAAW9/B,UAAY,SAAS9nB,GAC9B,OAAOlR,UAAUC,QAAUg/D,GAAM/tD,EAAE,GAAIguD,GAAMhuD,EAAE,GAAI8qD,KAAW,CAACiD,EAAIC,IAErEpG,EAAWpT,MAAQ,SAASx0C,GAC1B,OAAOlR,UAAUC,QAAqC++D,EAAK37B,GAAhCwhB,EAAQ3zC,EAAI,IAAMm3B,IAA0BwsB,EAAKzxB,GAAIyhB,GAAQmX,KAAWnX,EAAQ9sB,IAE7G+gC,EAAWsD,SAAW,SAASlrD,GAC7B,OAAOlR,UAAUC,QAAUkiD,EAAKjxC,GAAK,EAAI,EAAG8qD,KAAW7Z,EAAK,GAE9D2W,EAAWuD,SAAW,SAASnrD,GAC7B,OAAOlR,UAAUC,QAAUmiD,EAAKlxC,GAAK,EAAI,EAAG8qD,KAAW5Z,EAAK,GAE9D0W,EAAWe,UAAY,SAAS7vD,EAAQ/K,GACtC,OAAO46D,GAAUf,EAAY9uD,EAAQ/K,IAEvC65D,EAAWgB,QAAU,SAASl2C,EAAM3kB,GAClC,OAAO66D,GAAQhB,EAAYl1C,EAAM3kB,IAEnC65D,EAAWiB,SAAW,SAASj7B,EAAO7/B,GACpC,OAAO86D,GAASjB,EAAYh6B,EAAO7/B,IAErC65D,EAAWkB,UAAY,SAASj7B,EAAQ9/B,GACtC,OAAO+6D,GAAUlB,EAAY/5B,EAAQ9/B,IAGhC65D,GChFF,SAASuG,GAAiB1T,EAAQC,GACvC,IAAI0O,EAAO1O,EAAMA,EAAK0T,EAAOhF,EAAOA,EACpC,MAAO,CACL3O,GAAU,MAAS,QAAW2O,EAAOgF,GAAoBA,GAAQ,QAAWhF,EAAO,QAAWgF,GAAhD,UAC9C1T,GAAO,SAAW0O,GAAQ,QAAWgF,GAAoB,QAAWhF,EAAtB,QAA6B,QAAWgF,MAI1FD,GAAiB1P,OAAS,SAAS5pD,EAAGuE,GACpC,IAAqB3E,EAAjBimD,EAAMthD,EAAGvK,EAAI,GACjB,EAAG,CACD,IAAIu6D,EAAO1O,EAAMA,EAAK0T,EAAOhF,EAAOA,EACpC1O,GAAOjmD,GAASimD,GAAO,SAAW0O,GAAQ,QAAWgF,GAAoB,QAAWhF,EAAtB,QAA6B,QAAWgF,KAAUh1D,IAC3G,SAAWgwD,GAAQ,QAAegF,GAAwB,QAAehF,EAA/B,QAAsC,QAAW,GAAKgF,WAC9F/0D,GAAI5E,GAAS6P,MAAazV,EAAI,GACvC,MAAO,CACLgG,GAAK,OAAUu0D,EAAO1O,EAAMA,IAAoB0O,GAAoBA,EAAOA,EAAOA,GAAQ,QAAW,QAAWA,GAAvD,SAApB,UACrC1O,IAIW,kBACb,OAAOkN,GAAWuG,IACb1pD,MAAM,UCtBN,SAAS4pD,GAAgBx5D,EAAGuE,GACjC,MAAO,CAAC84B,GAAI94B,GAAK+4B,GAAIt9B,GAAIs9B,GAAI/4B,IAG/Bi1D,GAAgB5P,OAAS6N,GAAgBnd,IAE1B,kBACb,OAAOyY,GAAWyG,IACb5pD,MAAM,OACNumD,UAAU,YCTV,SAASsD,GAAiBz5D,EAAGuE,GAClC,IAAIqkC,EAAKvL,GAAI94B,GAAI+G,EAAI,EAAI+xB,GAAIr9B,GAAK4oC,EAClC,MAAO,CAACA,EAAKtL,GAAIt9B,GAAKsL,EAAGgyB,GAAI/4B,GAAK+G,GAGpCmuD,GAAiB7P,OAAS6N,IAAgB,SAASlsD,GACjD,OAAO,EAAIgnB,GAAKhnB,MAGH,kBACb,OAAOwnD,GAAW0G,IACb7pD,MAAM,KACNumD,UAAU,MCbV,SAASuD,GAAsB9T,EAAQC,GAC5C,MAAO,CAACr8C,GAAIqf,IAAK2U,GAASqoB,GAAO,KAAMD,GAGzC8T,GAAsB9P,OAAS,SAAS5pD,EAAGuE,GACzC,MAAO,EAAEA,EAAG,EAAIguB,GAAK/mB,GAAIxL,IAAMw9B,KAGlB,kBACb,IAAIzyB,EAAIitD,GAAmB0B,IACvBr5D,EAAS0K,EAAE1K,OACX6xB,EAASnnB,EAAEmnB,OAUf,OARAnnB,EAAE1K,OAAS,SAAS8K,GAClB,OAAOlR,UAAUC,OAASmG,EAAO,EAAE8K,EAAE,GAAIA,EAAE,KAAsB,EAAdA,EAAI9K,KAAa,IAAK8K,EAAE,KAG7EJ,EAAEmnB,OAAS,SAAS/mB,GAClB,OAAOlR,UAAUC,OAASg4B,EAAO,CAAC/mB,EAAE,GAAIA,EAAE,GAAIA,EAAEjR,OAAS,EAAIiR,EAAE,GAAK,GAAK,KAAsB,EAAdA,EAAI+mB,KAAa,GAAI/mB,EAAE,GAAIA,EAAE,GAAK,KAG9G+mB,EAAO,CAAC,EAAG,EAAG,KAChBtiB,MAAM,UCzBb,SAAS+pD,GAAkBp6D,EAAGC,GAC5B,OAAOD,EAAEgV,SAAW/U,EAAE+U,OAAS,EAAI,EAOrC,SAASqlD,GAAY55D,EAAGgI,GACtB,OAAOhI,EAAIgI,EAAEhI,EAOf,SAAS65D,GAAWt1D,EAAGyD,GACrB,OAAOjE,KAAKI,IAAII,EAAGyD,EAAEzD,GAeR,kBACb,IAAIu1D,EAAaH,GACb/9B,EAAK,EACLC,EAAK,EACLk+B,GAAW,EAEf,SAASC,EAAQv+C,GACf,IAAIw+C,EACAj6D,EAAI,EAGRyb,EAAKy+C,WAAU,SAASlmD,GACtB,IAAII,EAAWJ,EAAKI,SAChBA,GACFJ,EAAKhU,EA1Cb,SAAeoU,GACb,OAAOA,EAASrR,OAAO62D,GAAa,GAAKxlD,EAASla,OAyCnCigE,CAAM/lD,GACfJ,EAAKzP,EAnCb,SAAc6P,GACZ,OAAO,EAAIA,EAASrR,OAAO82D,GAAY,GAkCxBnuB,CAAKt3B,KAEdJ,EAAKhU,EAAIi6D,EAAej6D,GAAK85D,EAAW9lD,EAAMimD,GAAgB,EAC9DjmD,EAAKzP,EAAI,EACT01D,EAAejmD,MAInB,IAAIjU,EAnCR,SAAkBiU,GAEhB,IADA,IAAII,EACGA,EAAWJ,EAAKI,UAAUJ,EAAOI,EAAS,GACjD,OAAOJ,EAgCMomD,CAAS3+C,GAChBnb,EA9BR,SAAmB0T,GAEjB,IADA,IAAII,EACGA,EAAWJ,EAAKI,UAAUJ,EAAOI,EAASA,EAASla,OAAS,GACnE,OAAO8Z,EA2BOqmD,CAAU5+C,GAClB9Q,EAAK5K,EAAKC,EAAI85D,EAAW/5D,EAAMO,GAAS,EACxCsK,EAAKtK,EAAMN,EAAI85D,EAAWx5D,EAAOP,GAAQ,EAG7C,OAAO0b,EAAKy+C,UAAUH,EAAW,SAAS/lD,GACxCA,EAAKhU,GAAKgU,EAAKhU,EAAIyb,EAAKzb,GAAK47B,EAC7B5nB,EAAKzP,GAAKkX,EAAKlX,EAAIyP,EAAKzP,GAAKs3B,GAC3B,SAAS7nB,GACXA,EAAKhU,GAAKgU,EAAKhU,EAAI2K,IAAOC,EAAKD,GAAMixB,EACrC5nB,EAAKzP,GAAK,GAAKkX,EAAKlX,EAAIyP,EAAKzP,EAAIkX,EAAKlX,EAAI,IAAMs3B,IAgBpD,OAZAm+B,EAAQF,WAAa,SAAS95D,GAC5B,OAAO/F,UAAUC,QAAU4/D,EAAa95D,EAAGg6D,GAAWF,GAGxDE,EAAQn8C,KAAO,SAAS7d,GACtB,OAAO/F,UAAUC,QAAU6/D,GAAW,EAAOn+B,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIg6D,GAAYD,EAAW,KAAO,CAACn+B,EAAIC,IAG1Gm+B,EAAQD,SAAW,SAAS/5D,GAC1B,OAAO/F,UAAUC,QAAU6/D,GAAW,EAAMn+B,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIg6D,GAAYD,EAAW,CAACn+B,EAAIC,GAAM,MAGjGm+B,GClFT,SAASx3D,GAAMwR,GACb,IAAIxQ,EAAM,EACN4Q,EAAWJ,EAAKI,SAChBpa,EAAIoa,GAAYA,EAASla,OAC7B,GAAKF,EACA,OAASA,GAAK,GAAGwJ,GAAO4Q,EAASpa,GAAGoC,WADjCoH,EAAM,EAEdwQ,EAAK5X,MAAQoH,ECNA,I,gBCAA,+FACa3B,EAAO,CAA7BmS,EAAOpW,MADE,OAGX+tD,EAAU9pD,EAAKmH,UAAWnH,EAAO,GAHtB,YAIJmS,EAAO23C,EAAQ1oD,OAJX,gBAKT,OALS,SAKH+Q,EALG,OAMT,GAAII,EAAWJ,EAAKI,SAClB,IAAKpa,EAAI,EAAG4E,EAAIwV,EAASla,OAAQF,EAAI4E,IAAK5E,EACxC6H,EAAKjI,KAAKwa,EAASpa,IARd,yBAYJ6H,EAAK3H,OAZD,6DCcA,SAASogE,GAAU7vD,EAAM2J,GAClC3J,aAAgB5E,KAClB4E,EAAO,MAACrM,EAAWqM,QACFrM,IAAbgW,IAAwBA,EAAWmmD,UACjBn8D,IAAbgW,IACTA,EAAWomD,IAWb,IARA,IACIxmD,EAEAe,EACA0lD,EACAzgE,EACA4E,EANA6c,EAAO,IAAIi/C,GAAKjwD,GAEhBmT,EAAQ,CAACnC,GAMNzH,EAAO4J,EAAM3a,OAClB,IAAKw3D,EAASrmD,EAASJ,EAAKvJ,SAAW7L,GAAK67D,EAAS95D,MAAMxB,KAAKs7D,IAASvgE,QAEvE,IADA8Z,EAAKI,SAAWqmD,EACXzgE,EAAI4E,EAAI,EAAG5E,GAAK,IAAKA,EACxB4jB,EAAMhkB,KAAKmb,EAAQ0lD,EAAOzgE,GAAK,IAAI0gE,GAAKD,EAAOzgE,KAC/C+a,EAAMR,OAASP,EACfe,EAAMu/C,MAAQtgD,EAAKsgD,MAAQ,EAKjC,OAAO74C,EAAKk/C,WAAWC,IAOzB,SAASJ,GAAep6D,GACtB,OAAOA,EAAEgU,SAGX,SAASmmD,GAAYn6D,GACnB,OAAOO,MAAMU,QAAQjB,GAAKA,EAAE,GAAK,KAGnC,SAASy6D,GAAS7mD,QACQ5V,IAApB4V,EAAKvJ,KAAKrO,QAAqB4X,EAAK5X,MAAQ4X,EAAKvJ,KAAKrO,OAC1D4X,EAAKvJ,KAAOuJ,EAAKvJ,KAAKA,KAGjB,SAASmwD,GAAc5mD,GAC5B,IAAIglB,EAAS,EACb,GAAGhlB,EAAKglB,OAASA,SACThlB,EAAOA,EAAKO,SAAYP,EAAKglB,SAAWA,GAG3C,SAAS0hC,GAAKjwD,GACnB7M,KAAK6M,KAAOA,EACZ7M,KAAK02D,MACL12D,KAAKo7B,OAAS,EACdp7B,KAAK2W,OAAS,KAGhBmmD,GAAKr/D,UAAYi/D,GAAUj/D,UAAV,cACfyB,YAAa49D,GACbl4D,MHnEa,WACb,OAAO5E,KAAKs8D,UAAU13D,KGmEtB8P,KC7Ea,SAASc,EAAUK,GAChC,IADsC,EAClCtR,GAAS,EADyB,IAEnBvE,MAFmB,IAEtC,2BAAyB,KAAdoW,EAAc,QACvBZ,EAASjW,KAAKsW,EAAMO,IAAQ7R,EAAOvE,OAHC,8BAKtC,OAAOA,MDyEPs8D,UE9Ea,SAAS9mD,EAAUK,GAEhC,IADA,IAA4CW,EAAUpa,EAAG4E,EAArDoV,EAAOpW,KAAMggB,EAAQ,CAAC5J,GAAOnS,EAAO,GAAoBM,GAAS,EAC9D6R,EAAO4J,EAAM3a,OAElB,GADApB,EAAKjI,KAAKoa,GACNI,EAAWJ,EAAKI,SAClB,IAAKpa,EAAI,EAAG4E,EAAIwV,EAASla,OAAQF,EAAI4E,IAAK5E,EACxC4jB,EAAMhkB,KAAKwa,EAASpa,IAI1B,KAAOga,EAAOnS,EAAKoB,OACjBmQ,EAASjW,KAAKsW,EAAMO,IAAQ7R,EAAOvE,MAErC,OAAOA,MFkEP+8D,WG/Ea,SAASvnD,EAAUK,GAEhC,IADA,IAAiCW,EAAUpa,EAAvCga,EAAOpW,KAAMggB,EAAQ,CAAC5J,GAAoB7R,GAAS,EAChD6R,EAAO4J,EAAM3a,OAElB,GADAmQ,EAASjW,KAAKsW,EAAMO,IAAQ7R,EAAOvE,MAC/BwW,EAAWJ,EAAKI,SAClB,IAAKpa,EAAIoa,EAASla,OAAS,EAAGF,GAAK,IAAKA,EACtC4jB,EAAMhkB,KAAKwa,EAASpa,IAI1B,OAAO4D,MHsEPqW,KIhFa,SAASb,EAAUK,GAChC,IADsC,EAClCtR,GAAS,EADyB,IAEnBvE,MAFmB,IAEtC,2BAAyB,KAAdoW,EAAc,QACvB,GAAIZ,EAASjW,KAAKsW,EAAMO,IAAQ7R,EAAOvE,MACrC,OAAOoW,GAJ2B,gCJiFtCxQ,IKjFa,SAASpH,GACtB,OAAOwB,KAAKs8D,WAAU,SAASlmD,GAI7B,IAHA,IAAIxQ,GAAOpH,EAAM4X,EAAKvJ,OAAS,EAC3B2J,EAAWJ,EAAKI,SAChBpa,EAAIoa,GAAYA,EAASla,SACpBF,GAAK,GAAGwJ,GAAO4Q,EAASpa,GAAGoC,MACpC4X,EAAK5X,MAAQoH,ML4EfsE,KMlFa,SAASK,GACtB,OAAOvK,KAAK+8D,YAAW,SAAS3mD,GAC1BA,EAAKI,UACPJ,EAAKI,SAAStM,KAAKK,ONgFvBiJ,KOnFa,SAASgb,GAItB,IAHA,IAAItjB,EAAQlL,KACRk9D,EAcN,SAA6Bv7D,EAAGC,GAC9B,GAAID,IAAMC,EAAG,OAAOD,EACpB,IAAIw7D,EAASx7D,EAAEy7D,YACXC,EAASz7D,EAAEw7D,YACXhzD,EAAI,KACRzI,EAAIw7D,EAAO93D,MACXzD,EAAIy7D,EAAOh4D,MACX,KAAO1D,IAAMC,GACXwI,EAAIzI,EACJA,EAAIw7D,EAAO93D,MACXzD,EAAIy7D,EAAOh4D,MAEb,OAAO+E,EA1BQkzD,CAAoBpyD,EAAOsjB,GACtCxO,EAAQ,CAAC9U,GACNA,IAAUgyD,GACfhyD,EAAQA,EAAMyL,OACdqJ,EAAMhkB,KAAKkP,GAGb,IADA,IAAIwC,EAAIsS,EAAM1jB,OACPkyB,IAAQ0uC,GACbl9C,EAAMnF,OAAOnN,EAAG,EAAG8gB,GACnBA,EAAMA,EAAI7X,OAEZ,OAAOqJ,GPuEPo9C,UFpFa,WAEb,IADA,IAAIhnD,EAAOpW,KAAMggB,EAAQ,CAAC5J,GACnBA,EAAOA,EAAKO,QACjBqJ,EAAMhkB,KAAKoa,GAEb,OAAO4J,GEgFPu9C,YQrFa,WACb,OAAOx6D,MAAMxB,KAAKvB,ORqFlBw9D,OStFa,WACb,IAAIA,EAAS,GAMb,OALAx9D,KAAK+8D,YAAW,SAAS3mD,GAClBA,EAAKI,UACRgnD,EAAOxhE,KAAKoa,MAGTonD,GTgFP5c,MUvFa,WACb,IAAI/iC,EAAO7d,KAAM4gD,EAAQ,GAMzB,OALA/iC,EAAKnJ,MAAK,SAAS0B,GACbA,IAASyH,GACX+iC,EAAM5kD,KAAK,CAACO,OAAQ6Z,EAAKO,OAAQxa,OAAQia,OAGtCwqC,GViFPttC,KA5CF,WACE,OAAOopD,GAAU18D,MAAM+8D,WAAWE,MA4CjC79D,OAAOC,SAAWo+D,IWvFN,gBAASC,GAGtB,IAFA,IAAwE7+D,EAAG+E,EAAvExH,EAAI,EAAG4E,GAAK08D,ECGX,SAAiB34D,GAKtB,IAJA,IACIiJ,EACA5R,EAFA+Q,EAAIpI,EAAMzI,OAIP6Q,GACL/Q,EAAI+J,KAAKqK,SAAWrD,IAAM,EAC1Ba,EAAIjJ,EAAMoI,GACVpI,EAAMoI,GAAKpI,EAAM3I,GACjB2I,EAAM3I,GAAK4R,EAGb,OAAOjJ,EDfmB44D,CAAQ56D,MAAMxB,KAAKm8D,KAAWphE,OAAQopC,EAAI,GAE7DtpC,EAAI4E,GACTnC,EAAI6+D,EAAQthE,GACRwH,GAAKg6D,GAAah6D,EAAG/E,KAAMzC,GAC1BwH,EAAIi6D,GAAan4B,EAAIo4B,GAAYp4B,EAAG7mC,IAAKzC,EAAI,GAGpD,OAAOwH,GAGT,SAASk6D,GAAYp4B,EAAG7mC,GACtB,IAAIzC,EAAGmJ,EAEP,GAAIw4D,GAAgBl/D,EAAG6mC,GAAI,MAAO,CAAC7mC,GAGnC,IAAKzC,EAAI,EAAGA,EAAIspC,EAAEppC,SAAUF,EAC1B,GAAI4hE,GAAYn/D,EAAG6mC,EAAEtpC,KACd2hE,GAAgBE,GAAcv4B,EAAEtpC,GAAIyC,GAAI6mC,GAC7C,MAAO,CAACA,EAAEtpC,GAAIyC,GAKlB,IAAKzC,EAAI,EAAGA,EAAIspC,EAAEppC,OAAS,IAAKF,EAC9B,IAAKmJ,EAAInJ,EAAI,EAAGmJ,EAAImgC,EAAEppC,SAAUiJ,EAC9B,GAAIy4D,GAAYC,GAAcv4B,EAAEtpC,GAAIspC,EAAEngC,IAAK1G,IACpCm/D,GAAYC,GAAcv4B,EAAEtpC,GAAIyC,GAAI6mC,EAAEngC,KACtCy4D,GAAYC,GAAcv4B,EAAEngC,GAAI1G,GAAI6mC,EAAEtpC,KACtC2hE,GAAgBG,GAAcx4B,EAAEtpC,GAAIspC,EAAEngC,GAAI1G,GAAI6mC,GACnD,MAAO,CAACA,EAAEtpC,GAAIspC,EAAEngC,GAAI1G,GAM1B,MAAM,IAAIZ,MAGZ,SAAS+/D,GAAYr8D,EAAGC,GACtB,IAAIu8D,EAAKx8D,EAAEiO,EAAIhO,EAAEgO,EAAGouB,EAAKp8B,EAAEQ,EAAIT,EAAES,EAAG67B,EAAKr8B,EAAE+E,EAAIhF,EAAEgF,EACjD,OAAOw3D,EAAK,GAAKA,EAAKA,EAAKngC,EAAKA,EAAKC,EAAKA,EAG5C,SAAS2/B,GAAaj8D,EAAGC,GACvB,IAAIu8D,EAAKx8D,EAAEiO,EAAIhO,EAAEgO,EAA4B,KAAxBzJ,KAAKI,IAAI5E,EAAEiO,EAAGhO,EAAEgO,EAAG,GAAWouB,EAAKp8B,EAAEQ,EAAIT,EAAES,EAAG67B,EAAKr8B,EAAE+E,EAAIhF,EAAEgF,EAChF,OAAOw3D,EAAK,GAAKA,EAAKA,EAAKngC,EAAKA,EAAKC,EAAKA,EAG5C,SAAS8/B,GAAgBp8D,EAAG+jC,GAC1B,IAAK,IAAItpC,EAAI,EAAGA,EAAIspC,EAAEppC,SAAUF,EAC9B,IAAKwhE,GAAaj8D,EAAG+jC,EAAEtpC,IACrB,OAAO,EAGX,OAAO,EAGT,SAASyhE,GAAan4B,GACpB,OAAQA,EAAEppC,QACR,KAAK,EAAG,MAOH,CACL8F,GAFmBT,EANU+jC,EAAE,IAQ1BtjC,EACLuE,EAAGhF,EAAEgF,EACLiJ,EAAGjO,EAAEiO,GATL,KAAK,EAAG,OAAOquD,GAAcv4B,EAAE,GAAIA,EAAE,IACrC,KAAK,EAAG,OAAOw4B,GAAcx4B,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAI/C,IAAuB/jC,EAQvB,SAASs8D,GAAct8D,EAAGC,GACxB,IAAIoL,EAAKrL,EAAES,EAAGm/B,EAAK5/B,EAAEgF,EAAG8E,EAAK9J,EAAEiO,EAC3B6xB,EAAK7/B,EAAEQ,EAAGs/B,EAAK9/B,EAAE+E,EAAGy3D,EAAKx8D,EAAEgO,EAC3BiyB,EAAMJ,EAAKz0B,EAAI80B,EAAMJ,EAAKH,EAAI88B,EAAMD,EAAK3yD,EACzCygB,EAAI/lB,KAAKC,KAAKy7B,EAAMA,EAAMC,EAAMA,GACpC,MAAO,CACL1/B,GAAI4K,EAAKy0B,EAAKI,EAAM3V,EAAImyC,GAAO,EAC/B13D,GAAI46B,EAAKG,EAAKI,EAAM5V,EAAImyC,GAAO,EAC/BzuD,GAAIsc,EAAIzgB,EAAK2yD,GAAM,GAIvB,SAASF,GAAcv8D,EAAGC,EAAGwI,GAC3B,IAAI4C,EAAKrL,EAAES,EAAGm/B,EAAK5/B,EAAEgF,EAAG8E,EAAK9J,EAAEiO,EAC3B6xB,EAAK7/B,EAAEQ,EAAGs/B,EAAK9/B,EAAE+E,EAAGy3D,EAAKx8D,EAAEgO,EAC3BuiC,EAAK/nC,EAAEhI,EAAGgwC,EAAKhoC,EAAEzD,EAAG23D,EAAKl0D,EAAEwF,EAC3B2uD,EAAKvxD,EAAKy0B,EACV+8B,EAAKxxD,EAAKmlC,EACVssB,EAAKl9B,EAAKG,EACVg9B,EAAKn9B,EAAK6Q,EACVie,EAAK+N,EAAK3yD,EACVkzD,EAAKL,EAAK7yD,EACVmzD,EAAK5xD,EAAKA,EAAKu0B,EAAKA,EAAK91B,EAAKA,EAC9Bm0C,EAAKgf,EAAKn9B,EAAKA,EAAKC,EAAKA,EAAK08B,EAAKA,EACnCS,EAAKD,EAAKzsB,EAAKA,EAAKC,EAAKA,EAAKksB,EAAKA,EACnCjsB,EAAKmsB,EAAKC,EAAKF,EAAKG,EACpBzpC,GAAMwpC,EAAKI,EAAKH,EAAK9e,IAAY,EAALvN,GAAUrlC,EACtCmoB,GAAMupC,EAAKrO,EAAKoO,EAAKE,GAAMtsB,EAC3Bnd,GAAMspC,EAAK5e,EAAK2e,EAAKM,IAAY,EAALxsB,GAAU9Q,EACtCnM,GAAMmpC,EAAKI,EAAKH,EAAKnO,GAAMhe,EAC3B5M,EAAItQ,EAAKA,EAAKC,EAAKA,EAAK,EACxBsQ,EAAI,GAAKj6B,EAAKwpB,EAAKE,EAAKD,EAAKE,GAC7BuQ,EAAI1Q,EAAKA,EAAKC,EAAKA,EAAKzpB,EAAKA,EAC7BmE,IAAM61B,GAAKC,EAAIv/B,KAAKC,KAAKs/B,EAAIA,EAAI,EAAID,EAAIE,KAAO,EAAIF,GAAKE,EAAID,GACjE,MAAO,CACLtjC,EAAG4K,EAAKioB,EAAKE,EAAKvlB,EAClBjJ,EAAG46B,EAAKrM,EAAKE,EAAKxlB,EAClBA,EAAGA,GEhHP,SAASkvD,GAAMl9D,EAAGD,EAAGyI,GACnB,IAAoBhI,EAAGm8D,EACH53D,EAAG83D,EADnBzgC,EAAKp8B,EAAEQ,EAAIT,EAAES,EACb67B,EAAKr8B,EAAE+E,EAAIhF,EAAEgF,EACbi5C,EAAK5hB,EAAKA,EAAKC,EAAKA,EACpB2hB,GACF2e,EAAK58D,EAAEiO,EAAIxF,EAAEwF,EAAG2uD,GAAMA,EACtBE,EAAK78D,EAAEgO,EAAIxF,EAAEwF,EACT2uD,GADYE,GAAMA,IAEpBr8D,GAAKw9C,EAAK6e,EAAKF,IAAO,EAAI3e,GAC1Bj5C,EAAIR,KAAKC,KAAKD,KAAKI,IAAI,EAAGk4D,EAAK7e,EAAKx9C,EAAIA,IACxCgI,EAAEhI,EAAIR,EAAEQ,EAAIA,EAAI47B,EAAKr3B,EAAIs3B,EACzB7zB,EAAEzD,EAAI/E,EAAE+E,EAAIvE,EAAI67B,EAAKt3B,EAAIq3B,IAEzB57B,GAAKw9C,EAAK2e,EAAKE,IAAO,EAAI7e,GAC1Bj5C,EAAIR,KAAKC,KAAKD,KAAKI,IAAI,EAAGg4D,EAAK3e,EAAKx9C,EAAIA,IACxCgI,EAAEhI,EAAIT,EAAES,EAAIA,EAAI47B,EAAKr3B,EAAIs3B,EACzB7zB,EAAEzD,EAAIhF,EAAEgF,EAAIvE,EAAI67B,EAAKt3B,EAAIq3B,KAG3B5zB,EAAEhI,EAAIT,EAAES,EAAIgI,EAAEwF,EACdxF,EAAEzD,EAAIhF,EAAEgF,GAIZ,SAASo4D,GAAWp9D,EAAGC,GACrB,IAAIu8D,EAAKx8D,EAAEiO,EAAIhO,EAAEgO,EAAI,KAAMouB,EAAKp8B,EAAEQ,EAAIT,EAAES,EAAG67B,EAAKr8B,EAAE+E,EAAIhF,EAAEgF,EACxD,OAAOw3D,EAAK,GAAKA,EAAKA,EAAKngC,EAAKA,EAAKC,EAAKA,EAG5C,SAAS+gC,GAAM5oD,GACb,IAAIzU,EAAIyU,EAAK7I,EACT3L,EAAIwU,EAAKnS,KAAKsJ,EACd8kC,EAAK1wC,EAAEiO,EAAIhO,EAAEgO,EACbouB,GAAMr8B,EAAES,EAAIR,EAAEgO,EAAIhO,EAAEQ,EAAIT,EAAEiO,GAAKyiC,EAC/BpU,GAAMt8B,EAAEgF,EAAI/E,EAAEgO,EAAIhO,EAAE+E,EAAIhF,EAAEiO,GAAKyiC,EACnC,OAAOrU,EAAKA,EAAKC,EAAKA,EAGxB,SAAS6+B,GAAK1P,GACZptD,KAAKuN,EAAI6/C,EACTptD,KAAKiE,KAAO,KACZjE,KAAKoP,SAAW,KAGX,SAAS6vD,GAAYvB,GAC1B,KAAM18D,GDhDgBoB,ECgDKs7D,EAAhBA,ED/CS,kBAANt7D,GAAkB,WAAYA,EACxCA,EACAW,MAAMxB,KAAKa,IC6CsB9F,QAAS,OAAO,EDhDxC,IAAS8F,ECkDlBT,EAAGC,EAAGwI,EAAGpJ,EAAGk+D,EAAIhO,EAAI90D,EAAGmJ,EAAGmI,EAAGyxD,EAAIC,EAIrC,IADAz9D,EAAI+7D,EAAQ,IAAMt7D,EAAI,EAAGT,EAAEgF,EAAI,IACzB3F,EAAI,GAAI,OAAOW,EAAEiO,EAIvB,GADAhO,EAAI87D,EAAQ,GAAI/7D,EAAES,GAAKR,EAAEgO,EAAGhO,EAAEQ,EAAIT,EAAEiO,EAAGhO,EAAE+E,EAAI,IACvC3F,EAAI,GAAI,OAAOW,EAAEiO,EAAIhO,EAAEgO,EAG7BkvD,GAAMl9D,EAAGD,EAAGyI,EAAIszD,EAAQ,IAGxB/7D,EAAI,IAAIm7D,GAAKn7D,GAAIC,EAAI,IAAIk7D,GAAKl7D,GAAIwI,EAAI,IAAI0yD,GAAK1yD,GAC/CzI,EAAEsC,KAAOmG,EAAEgF,SAAWxN,EACtBA,EAAEqC,KAAOtC,EAAEyN,SAAWhF,EACtBA,EAAEnG,KAAOrC,EAAEwN,SAAWzN,EAGtB09D,EAAM,IAAKjjE,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG,CAC5B0iE,GAAMn9D,EAAE4L,EAAG3L,EAAE2L,EAAGnD,EAAIszD,EAAQthE,IAAKgO,EAAI,IAAI0yD,GAAK1yD,GAK9C7E,EAAI3D,EAAEqC,KAAMyJ,EAAI/L,EAAEyN,SAAU+vD,EAAKv9D,EAAE2L,EAAEqC,EAAGwvD,EAAKz9D,EAAE4L,EAAEqC,EACjD,GACE,GAAIuvD,GAAMC,EAAI,CACZ,GAAIL,GAAWx5D,EAAEgI,EAAGnD,EAAEmD,GAAI,CACxB3L,EAAI2D,EAAG5D,EAAEsC,KAAOrC,EAAGA,EAAEwN,SAAWzN,IAAKvF,EACrC,SAASijE,EAEXF,GAAM55D,EAAEgI,EAAEqC,EAAGrK,EAAIA,EAAEtB,SACd,CACL,GAAI86D,GAAWrxD,EAAEH,EAAGnD,EAAEmD,GAAI,EACxB5L,EAAI+L,GAAKzJ,KAAOrC,EAAGA,EAAEwN,SAAWzN,IAAKvF,EACrC,SAASijE,EAEXD,GAAM1xD,EAAEH,EAAEqC,EAAGlC,EAAIA,EAAE0B,gBAEd7J,IAAMmI,EAAEzJ,MAOjB,IAJAmG,EAAEgF,SAAWzN,EAAGyI,EAAEnG,KAAOrC,EAAGD,EAAEsC,KAAOrC,EAAEwN,SAAWxN,EAAIwI,EAGtD80D,EAAKF,GAAMr9D,IACHyI,EAAIA,EAAEnG,QAAUrC,IACjBsvD,EAAK8N,GAAM50D,IAAM80D,IACpBv9D,EAAIyI,EAAG80D,EAAKhO,GAGhBtvD,EAAID,EAAEsC,KAIU,IAAlBtC,EAAI,CAACC,EAAE2L,GAAInD,EAAIxI,GAAWwI,EAAIA,EAAEnG,QAAUrC,GAAGD,EAAE3F,KAAKoO,EAAEmD,GAGtD,IAH0DnD,EAAIk1D,GAAQ39D,GAGjEvF,EAAI,EAAGA,EAAI4E,IAAK5E,GAAGuF,EAAI+7D,EAAQthE,IAAMgG,GAAKgI,EAAEhI,EAAGT,EAAEgF,GAAKyD,EAAEzD,EAE7D,OAAOyD,EAAEwF,EAGI,gBAAS8tD,GAEtB,OADAuB,GAAYvB,GACLA,GCrHF,SAAS6B,GAASx9D,GACvB,OAAY,MAALA,EAAY,KAAOy9D,GAASz9D,GAG9B,SAASy9D,GAASz9D,GACvB,GAAiB,oBAANA,EAAkB,MAAM,IAAI9D,MACvC,OAAO8D,ECNF,SAAS09D,KACd,OAAO,EAGM,gBAASr9D,GACtB,OAAO,WACL,OAAOA,ICFX,SAAS+gC,GAAc3gC,GACrB,OAAO2D,KAAKC,KAAK5D,EAAEhE,OAGN,kBACb,IAAI4kC,EAAS,KACTpF,EAAK,EACLC,EAAK,EACLonB,EAAUoa,GAEd,SAASJ,EAAKxhD,GAYZ,OAXAA,EAAKzb,EAAI47B,EAAK,EAAGngB,EAAKlX,EAAIs3B,EAAK,EAC3BmF,EACFvlB,EAAKk/C,WAAW2C,GAAWt8B,IACtBk5B,UAAUqD,GAAata,EAAS,KAChC0X,WAAW6C,GAAe,IAE/B/hD,EAAKk/C,WAAW2C,GAAWv8B,KACtBm5B,UAAUqD,GAAaF,GAAc,IACrCnD,UAAUqD,GAAata,EAASxnC,EAAKjO,EAAIzJ,KAAKG,IAAI03B,EAAIC,KACtD8+B,WAAW6C,GAAez5D,KAAKG,IAAI03B,EAAIC,IAAO,EAAIpgB,EAAKjO,KAEvDiO,EAeT,OAZAwhD,EAAKj8B,OAAS,SAAShhC,GACrB,OAAO/F,UAAUC,QAAU8mC,EAASm8B,GAASn9D,GAAIi9D,GAAQj8B,GAG3Di8B,EAAKp/C,KAAO,SAAS7d,GACnB,OAAO/F,UAAUC,QAAU0hC,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIi9D,GAAQ,CAACrhC,EAAIC,IAGlEohC,EAAKha,QAAU,SAASjjD,GACtB,OAAO/F,UAAUC,QAAU+oD,EAAuB,oBAANjjD,EAAmBA,EAAIyI,IAAUzI,GAAIi9D,GAAQha,GAGpFga,GAGT,SAASK,GAAWt8B,GAClB,OAAO,SAAShtB,GACTA,EAAKI,WACRJ,EAAKxG,EAAIzJ,KAAKI,IAAI,GAAI68B,EAAOhtB,IAAS,KAK5C,SAASupD,GAAata,EAAS33C,GAC7B,OAAO,SAAS0I,GACd,GAAII,EAAWJ,EAAKI,SAAU,CAC5B,IAAIA,EACApa,EAGAwH,EAFA5C,EAAIwV,EAASla,OACbsT,EAAIy1C,EAAQjvC,GAAQ1I,GAAK,EAG7B,GAAIkC,EAAG,IAAKxT,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGoa,EAASpa,GAAGwT,GAAKA,EAEhD,GADAhM,EAAIq7D,GAAYzoD,GACZ5G,EAAG,IAAKxT,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGoa,EAASpa,GAAGwT,GAAKA,EAChDwG,EAAKxG,EAAIhM,EAAIgM,IAKnB,SAASgwD,GAAelyD,GACtB,OAAO,SAAS0I,GACd,IAAIO,EAASP,EAAKO,OAClBP,EAAKxG,GAAKlC,EACNiJ,IACFP,EAAKhU,EAAIuU,EAAOvU,EAAIsL,EAAI0I,EAAKhU,EAC7BgU,EAAKzP,EAAIgQ,EAAOhQ,EAAI+G,EAAI0I,EAAKzP,IC3EpB,gBAASyP,GACtBA,EAAKrJ,GAAK5G,KAAKqF,MAAM4K,EAAKrJ,IAC1BqJ,EAAKwrB,GAAKz7B,KAAKqF,MAAM4K,EAAKwrB,IAC1BxrB,EAAKpJ,GAAK7G,KAAKqF,MAAM4K,EAAKpJ,IAC1BoJ,EAAKmrB,GAAKp7B,KAAKqF,MAAM4K,EAAKmrB,KCJb,YAAS5qB,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GAO1C,IANA,IACInrB,EADA4J,EAAQrJ,EAAOH,SAEfpa,GAAK,EACL4E,EAAIgf,EAAM1jB,OACVoR,EAAIiJ,EAAOnY,QAAUwO,EAAKD,GAAM4J,EAAOnY,QAElCpC,EAAI4E,IACXoV,EAAO4J,EAAM5jB,IAASwlC,GAAKA,EAAIxrB,EAAKmrB,GAAKA,EACzCnrB,EAAKrJ,GAAKA,EAAIqJ,EAAKpJ,GAAKD,GAAMqJ,EAAK5X,MAAQkP,GCNhC,cACb,IAAIswB,EAAK,EACLC,EAAK,EACLonB,EAAU,EACV75C,GAAQ,EAEZ,SAASq0D,EAAUhiD,GACjB,IAAI7c,EAAI6c,EAAKud,OAAS,EAOtB,OANAvd,EAAK9Q,GACL8Q,EAAK+jB,GAAKyjB,EACVxnC,EAAK7Q,GAAKgxB,EACVngB,EAAK0jB,GAAKtD,EAAKj9B,EACf6c,EAAKk/C,WAKP,SAAsB9+B,EAAIj9B,GACxB,OAAO,SAASoV,GACVA,EAAKI,UACPspD,GAAY1pD,EAAMA,EAAKrJ,GAAIkxB,GAAM7nB,EAAKsgD,MAAQ,GAAK11D,EAAGoV,EAAKpJ,GAAIixB,GAAM7nB,EAAKsgD,MAAQ,GAAK11D,GAEzF,IAAI+L,EAAKqJ,EAAKrJ,GACV60B,EAAKxrB,EAAKwrB,GACV50B,EAAKoJ,EAAKpJ,GAAKq4C,EACf9jB,EAAKnrB,EAAKmrB,GAAK8jB,EACfr4C,EAAKD,IAAIA,EAAKC,GAAMD,EAAKC,GAAM,GAC/Bu0B,EAAKK,IAAIA,EAAKL,GAAMK,EAAKL,GAAM,GACnCnrB,EAAKrJ,GAAKA,EACVqJ,EAAKwrB,GAAKA,EACVxrB,EAAKpJ,GAAKA,EACVoJ,EAAKmrB,GAAKA,GAnBIw+B,CAAa9hC,EAAIj9B,IAC7BwK,GAAOqS,EAAKk/C,WAAWiD,IACpBniD,EAiCT,OAZAgiD,EAAUr0D,MAAQ,SAASpJ,GACzB,OAAO/F,UAAUC,QAAUkP,IAAUpJ,EAAGy9D,GAAar0D,GAGvDq0D,EAAU5/C,KAAO,SAAS7d,GACxB,OAAO/F,UAAUC,QAAU0hC,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIy9D,GAAa,CAAC7hC,EAAIC,IAGvE4hC,EAAUxa,QAAU,SAASjjD,GAC3B,OAAO/F,UAAUC,QAAU+oD,GAAWjjD,EAAGy9D,GAAaxa,GAGjDwa,GC/CLI,GAAU,CAACvJ,OAAQ,GACnBwJ,GAAY,GAEhB,SAASC,GAAU39D,GACjB,OAAOA,EAAEgxB,GAGX,SAAS4sC,GAAgB59D,GACvB,OAAOA,EAAE69D,SAGI,kBACb,IAAI7sC,EAAK2sC,GACLE,EAAWD,GAEf,SAASE,EAASzzD,GAChB,IAEIrK,EACApG,EACAyhB,EACAlH,EACAP,EACAuqC,EACA4f,EARAvgD,EAAQjd,MAAMxB,KAAKsL,GACnB7L,EAAIgf,EAAM1jB,OAQVkkE,EAAY,IAAIv4D,IAEpB,IAAK7L,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBoG,EAAIwd,EAAM5jB,GAAIga,EAAO4J,EAAM5jB,GAAK,IAAI0gE,GAAKt6D,GACR,OAA5Bm+C,EAASntB,EAAGhxB,EAAGpG,EAAGyQ,MAAmB8zC,GAAU,MAClD4f,EAAUnqD,EAAKod,GAAKmtB,EACpB6f,EAAUn4D,IAAIk4D,EAASC,EAAUp4D,IAAIm4D,GAAWL,GAAY9pD,IAEvB,OAAlCuqC,EAAS0f,EAAS79D,EAAGpG,EAAGyQ,MAAmB8zC,GAAU,MACxDvqC,EAAKO,OAASgqC,GAIlB,IAAKvkD,EAAI,EAAGA,EAAI4E,IAAK5E,EAEnB,GAAIukD,GADJvqC,EAAO4J,EAAM5jB,IACKua,OAAQ,CAExB,KADAA,EAAS6pD,EAAUh5D,IAAIm5C,IACV,MAAM,IAAI1iD,MAAM,YAAc0iD,GAC3C,GAAIhqC,IAAWupD,GAAW,MAAM,IAAIjiE,MAAM,cAAgB0iD,GACtDhqC,EAAOH,SAAUG,EAAOH,SAASxa,KAAKoa,GACrCO,EAAOH,SAAW,CAACJ,GACxBA,EAAKO,OAASA,MACT,CACL,GAAIkH,EAAM,MAAM,IAAI5f,MAAM,kBAC1B4f,EAAOzH,EAIX,IAAKyH,EAAM,MAAM,IAAI5f,MAAM,WAI3B,GAHA4f,EAAKlH,OAASspD,GACdpiD,EAAKk/C,YAAW,SAAS3mD,GAAQA,EAAKsgD,MAAQtgD,EAAKO,OAAO+/C,MAAQ,IAAK11D,KAAM+7D,WAAWC,IACxFn/C,EAAKlH,OAAS,KACV3V,EAAI,EAAG,MAAM,IAAI/C,MAAM,SAE3B,OAAO4f,EAWT,OARAyiD,EAAS9sC,GAAK,SAASpxB,GACrB,OAAO/F,UAAUC,QAAUk3B,EAAKgsC,GAASp9D,GAAIk+D,GAAY9sC,GAG3D8sC,EAASD,SAAW,SAASj+D,GAC3B,OAAO/F,UAAUC,QAAU+jE,EAAWb,GAASp9D,GAAIk+D,GAAYD,GAG1DC,GCvET,SAASvE,GAAkBp6D,EAAGC,GAC5B,OAAOD,EAAEgV,SAAW/U,EAAE+U,OAAS,EAAI,EAWrC,SAAS8pD,GAAS36D,GAChB,IAAI0Q,EAAW1Q,EAAE0Q,SACjB,OAAOA,EAAWA,EAAS,GAAK1Q,EAAEkI,EAIpC,SAAS0yD,GAAU56D,GACjB,IAAI0Q,EAAW1Q,EAAE0Q,SACjB,OAAOA,EAAWA,EAASA,EAASla,OAAS,GAAKwJ,EAAEkI,EAKtD,SAAS2yD,GAAYC,EAAIC,EAAIzzD,GAC3B,IAAI0zD,EAAS1zD,GAASyzD,EAAGzkE,EAAIwkE,EAAGxkE,GAChCykE,EAAGz2D,GAAK02D,EACRD,EAAGp/D,GAAK2L,EACRwzD,EAAGx2D,GAAK02D,EACRD,EAAGlzD,GAAKP,EACRyzD,EAAG1zD,GAAKC,EAsBV,SAAS2zD,GAAaC,EAAKl7D,EAAGo3D,GAC5B,OAAO8D,EAAIr/D,EAAEgV,SAAW7Q,EAAE6Q,OAASqqD,EAAIr/D,EAAIu7D,EAG7C,SAAS+D,GAAS7qD,EAAMha,GACtB4D,KAAKuN,EAAI6I,EACTpW,KAAK2W,OAAS,KACd3W,KAAKwW,SAAW,KAChBxW,KAAKylC,EAAI,KACTzlC,KAAK2B,EAAI3B,KACTA,KAAK2N,EAAI,EACT3N,KAAKmN,EAAI,EACTnN,KAAKoK,EAAI,EACTpK,KAAKyB,EAAI,EACTzB,KAAKgO,EAAI,KACThO,KAAK5D,EAAIA,EAGX6kE,GAASxjE,UAAYhC,OAAOwD,OAAO69D,GAAKr/D,WA0BzB,kBACb,IAAIy+D,EAAaH,GACb/9B,EAAK,EACLC,EAAK,EACLk+B,EAAW,KAEf,SAASzd,EAAK7gC,GACZ,IAAI7P,EA/BR,SAAkB6P,GAShB,IARA,IACIzH,EAEAe,EACAX,EACApa,EACA4E,EANA09C,EAAO,IAAIuiB,GAASpjD,EAAM,GAE1BmC,EAAQ,CAAC0+B,GAMNtoC,EAAO4J,EAAM3a,OAClB,GAAImR,EAAWJ,EAAK7I,EAAEiJ,SAEpB,IADAJ,EAAKI,SAAW,IAAIzT,MAAM/B,EAAIwV,EAASla,QAClCF,EAAI4E,EAAI,EAAG5E,GAAK,IAAKA,EACxB4jB,EAAMhkB,KAAKmb,EAAQf,EAAKI,SAASpa,GAAK,IAAI6kE,GAASzqD,EAASpa,GAAIA,IAChE+a,EAAMR,OAASP,EAMrB,OADCsoC,EAAK/nC,OAAS,IAAIsqD,GAAS,KAAM,IAAIzqD,SAAW,CAACkoC,GAC3CA,EAWGwiB,CAASrjD,GAOjB,GAJA7P,EAAEsuD,UAAU6E,GAAYnzD,EAAE2I,OAAOxJ,GAAKa,EAAEL,EACxCK,EAAE+uD,WAAWqE,GAGTjF,EAAUt+C,EAAKk/C,WAAWsE,OAIzB,CACH,IAAIl/D,EAAO0b,EACPnb,EAAQmb,EACRghC,EAAShhC,EACbA,EAAKk/C,YAAW,SAAS3mD,GACnBA,EAAKhU,EAAID,EAAKC,IAAGD,EAAOiU,GACxBA,EAAKhU,EAAIM,EAAMN,IAAGM,EAAQ0T,GAC1BA,EAAKsgD,MAAQ7X,EAAO6X,QAAO7X,EAASzoC,MAE1C,IAAI3U,EAAIU,IAASO,EAAQ,EAAIw5D,EAAW/5D,EAAMO,GAAS,EACnD44D,EAAK75D,EAAIU,EAAKC,EACdo5D,EAAKx9B,GAAMt7B,EAAMN,EAAIX,EAAI65D,GACzBG,EAAKx9B,GAAM4gB,EAAO6X,OAAS,GAC/B74C,EAAKk/C,YAAW,SAAS3mD,GACvBA,EAAKhU,GAAKgU,EAAKhU,EAAIk5D,GAAME,EACzBplD,EAAKzP,EAAIyP,EAAKsgD,MAAQ+E,KAI1B,OAAO59C,EAOT,SAASsjD,EAAUr7D,GACjB,IAAI0Q,EAAW1Q,EAAE0Q,SACb8qD,EAAWx7D,EAAE6Q,OAAOH,SACpB4jB,EAAIt0B,EAAE1J,EAAIklE,EAASx7D,EAAE1J,EAAI,GAAK,KAClC,GAAIoa,EAAU,EA5GlB,SAAuB1Q,GAMrB,IALA,IAIIs0B,EAJAhtB,EAAQ,EACR0zD,EAAS,EACTtqD,EAAW1Q,EAAE0Q,SACbpa,EAAIoa,EAASla,SAERF,GAAK,IACZg+B,EAAI5jB,EAASpa,IACXuR,GAAKP,EACPgtB,EAAEjtB,GAAKC,EACPA,GAASgtB,EAAE34B,GAAKq/D,GAAU1mC,EAAEhwB,GAmG1Bm3D,CAAcz7D,GACd,IAAI07D,GAAYhrD,EAAS,GAAG7I,EAAI6I,EAASA,EAASla,OAAS,GAAGqR,GAAK,EAC/DysB,GACFt0B,EAAE6H,EAAIysB,EAAEzsB,EAAIuuD,EAAWp2D,EAAEyH,EAAG6sB,EAAE7sB,GAC9BzH,EAAEqH,EAAIrH,EAAE6H,EAAI6zD,GAEZ17D,EAAE6H,EAAI6zD,OAECpnC,IACTt0B,EAAE6H,EAAIysB,EAAEzsB,EAAIuuD,EAAWp2D,EAAEyH,EAAG6sB,EAAE7sB,IAEhCzH,EAAE6Q,OAAO8uB,EAoBX,SAAmB3/B,EAAGs0B,EAAG8iC,GACvB,GAAI9iC,EAAG,CAUL,IATA,IAQIhtB,EARAq0D,EAAM37D,EACN47D,EAAM57D,EACNk7D,EAAM5mC,EACNunC,EAAMF,EAAI9qD,OAAOH,SAAS,GAC1BorD,EAAMH,EAAIt0D,EACV00D,EAAMH,EAAIv0D,EACV20D,EAAMd,EAAI7zD,EACV40D,EAAMJ,EAAIx0D,EAEP6zD,EAAMN,GAAUM,GAAMS,EAAMhB,GAASgB,GAAMT,GAAOS,GACvDE,EAAMlB,GAASkB,IACfD,EAAMhB,GAAUgB,IACZ//D,EAAImE,GACRsH,EAAQ4zD,EAAIrzD,EAAIm0D,EAAML,EAAI9zD,EAAIi0D,EAAM1F,EAAW8E,EAAIzzD,EAAGk0D,EAAIl0D,IAC9C,IACVozD,GAAYI,GAAaC,EAAKl7D,EAAGo3D,GAAWp3D,EAAGsH,GAC/Cw0D,GAAOx0D,EACPy0D,GAAOz0D,GAET00D,GAAOd,EAAI7zD,EACXy0D,GAAOH,EAAIt0D,EACX40D,GAAOJ,EAAIx0D,EACX00D,GAAOH,EAAIv0D,EAET6zD,IAAQN,GAAUgB,KACpBA,EAAI1zD,EAAIgzD,EACRU,EAAIv0D,GAAK20D,EAAMD,GAEbJ,IAAQhB,GAASkB,KACnBA,EAAI3zD,EAAIyzD,EACRE,EAAIx0D,GAAKy0D,EAAMG,EACf7E,EAAWp3D,GAGf,OAAOo3D,EAxDM8E,CAAUl8D,EAAGs0B,EAAGt0B,EAAE6Q,OAAO8uB,GAAK67B,EAAS,IAItD,SAASF,EAAWt7D,GAClBA,EAAEyH,EAAEnL,EAAI0D,EAAE6H,EAAI7H,EAAE6Q,OAAOxJ,EACvBrH,EAAEqH,GAAKrH,EAAE6Q,OAAOxJ,EAqDlB,SAASk0D,EAASjrD,GAChBA,EAAKhU,GAAK47B,EACV5nB,EAAKzP,EAAIyP,EAAKsgD,MAAQz4B,EAexB,OAZAygB,EAAKwd,WAAa,SAAS95D,GACzB,OAAO/F,UAAUC,QAAU4/D,EAAa95D,EAAGs8C,GAAQwd,GAGrDxd,EAAKz+B,KAAO,SAAS7d,GACnB,OAAO/F,UAAUC,QAAU6/D,GAAW,EAAOn+B,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIs8C,GAASyd,EAAW,KAAO,CAACn+B,EAAIC,IAGvGygB,EAAKyd,SAAW,SAAS/5D,GACvB,OAAO/F,UAAUC,QAAU6/D,GAAW,EAAMn+B,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAIs8C,GAASyd,EAAW,CAACn+B,EAAIC,GAAM,MAG9FygB,GC3OM,YAAS/nC,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GAO1C,IANA,IACInrB,EADA4J,EAAQrJ,EAAOH,SAEfpa,GAAK,EACL4E,EAAIgf,EAAM1jB,OACVoR,EAAIiJ,EAAOnY,QAAU+iC,EAAKK,GAAMjrB,EAAOnY,QAElCpC,EAAI4E,IACXoV,EAAO4J,EAAM5jB,IAAS2Q,GAAKA,EAAIqJ,EAAKpJ,GAAKA,EACzCoJ,EAAKwrB,GAAKA,EAAIxrB,EAAKmrB,GAAKK,GAAMxrB,EAAK5X,MAAQkP,GCNpCu6C,IAAO,EAAI9hD,KAAKC,KAAK,IAAM,EAE/B,SAAS67D,GAAcC,EAAOvrD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GAkBvD,IAjBA,IAEI3wB,EACAuxD,EAIAnkC,EAAIC,EAEJmkC,EACApyD,EACAI,EACAiyD,EACAC,EACAphB,EACAqhB,EAfA9qB,EAAO,GACPz3B,EAAQrJ,EAAOH,SAGfrI,EAAK,EACLsC,EAAK,EACLzP,EAAIgf,EAAM1jB,OAEVkC,EAAQmY,EAAOnY,MASZ2P,EAAKnN,GAAG,CACbg9B,EAAKhxB,EAAKD,EAAIkxB,EAAKsD,EAAKK,EAGxB,GAAGwgC,EAAWpiD,EAAMvP,KAAMjS,aAAe4jE,GAAY3xD,EAAKzP,GAO1D,IANAgP,EAAWI,EAAWgyD,EAEtBG,EAAOH,EAAWA,GADlBlhB,EAAQ/6C,KAAKI,IAAI03B,EAAKD,EAAIA,EAAKC,IAAOz/B,EAAQ0jE,IAE9CI,EAAWn8D,KAAKI,IAAI6J,EAAWmyD,EAAMA,EAAOvyD,GAGrCS,EAAKzP,IAAKyP,EAAI,CAMnB,GALA2xD,GAAYD,EAAYniD,EAAMvP,GAAIjS,MAC9B2jE,EAAYnyD,IAAUA,EAAWmyD,GACjCA,EAAY/xD,IAAUA,EAAW+xD,GACrCI,EAAOH,EAAWA,EAAWlhB,GAC7BmhB,EAAWl8D,KAAKI,IAAI6J,EAAWmyD,EAAMA,EAAOvyD,IAC7BsyD,EAAU,CAAEF,GAAYD,EAAW,MAClDG,EAAWD,EAIb5qB,EAAKz7C,KAAK4U,EAAM,CAACpS,MAAO4jE,EAAUI,KAAMxkC,EAAKC,EAAIznB,SAAUwJ,EAAM7c,MAAMgL,EAAIsC,KACvEG,EAAI4xD,KAAM1C,GAAYlvD,EAAK7D,EAAI60B,EAAI50B,EAAIxO,EAAQojC,GAAM3D,EAAKmkC,EAAW5jE,EAAQ+iC,GAC5EkhC,GAAa7xD,EAAK7D,EAAI60B,EAAIpjC,EAAQuO,GAAMixB,EAAKokC,EAAW5jE,EAAQwO,EAAIu0B,GACzE/iC,GAAS4jE,EAAUj0D,EAAKsC,EAG1B,OAAOgnC,EAGM,gBAAU0D,EAAO+mB,GAE9B,SAASQ,EAAS/rD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GACpC0gC,GAAcC,EAAOvrD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GAO3C,OAJAmhC,EAASR,MAAQ,SAAS9/D,GACxB,OAAO+4C,GAAQ/4C,GAAKA,GAAK,EAAIA,EAAI,IAG5BsgE,EAVM,CAWZza,IC5DY,cACb,IAAI0a,EAAOD,GACPl3D,GAAQ,EACRwyB,EAAK,EACLC,EAAK,EACL2kC,EAAe,CAAC,GAChBC,EAAepD,GACfqD,EAAarD,GACbsD,EAAetD,GACfuD,EAAgBvD,GAChBwD,EAAcxD,GAElB,SAASyD,EAAQrlD,GAQf,OAPAA,EAAK9Q,GACL8Q,EAAK+jB,GAAK,EACV/jB,EAAK7Q,GAAKgxB,EACVngB,EAAK0jB,GAAKtD,EACVpgB,EAAKk/C,WAAWgD,GAChB6C,EAAe,CAAC,GACZp3D,GAAOqS,EAAKk/C,WAAWiD,IACpBniD,EAGT,SAASkiD,EAAa3pD,GACpB,IAAIvX,EAAI+jE,EAAaxsD,EAAKsgD,OACtB3pD,EAAKqJ,EAAKrJ,GAAKlO,EACf+iC,EAAKxrB,EAAKwrB,GAAK/iC,EACfmO,EAAKoJ,EAAKpJ,GAAKnO,EACf0iC,EAAKnrB,EAAKmrB,GAAK1iC,EACfmO,EAAKD,IAAIA,EAAKC,GAAMD,EAAKC,GAAM,GAC/Bu0B,EAAKK,IAAIA,EAAKL,GAAMK,EAAKL,GAAM,GACnCnrB,EAAKrJ,GAAKA,EACVqJ,EAAKwrB,GAAKA,EACVxrB,EAAKpJ,GAAKA,EACVoJ,EAAKmrB,GAAKA,EACNnrB,EAAKI,WACP3X,EAAI+jE,EAAaxsD,EAAKsgD,MAAQ,GAAKmM,EAAazsD,GAAQ,EACxDrJ,GAAMk2D,EAAY7sD,GAAQvX,EAC1B+iC,GAAMkhC,EAAW1sD,GAAQvX,GACzBmO,GAAM+1D,EAAa3sD,GAAQvX,GAElBkO,IAAIA,EAAKC,GAAMD,EAAKC,GAAM,IADnCu0B,GAAMyhC,EAAc5sD,GAAQvX,GAEnB+iC,IAAIA,EAAKL,GAAMK,EAAKL,GAAM,GACnCohC,EAAKvsD,EAAMrJ,EAAI60B,EAAI50B,EAAIu0B,IA4C3B,OAxCA2hC,EAAQ13D,MAAQ,SAASpJ,GACvB,OAAO/F,UAAUC,QAAUkP,IAAUpJ,EAAG8gE,GAAW13D,GAGrD03D,EAAQjjD,KAAO,SAAS7d,GACtB,OAAO/F,UAAUC,QAAU0hC,GAAM57B,EAAE,GAAI67B,GAAM77B,EAAE,GAAI8gE,GAAW,CAACllC,EAAIC,IAGrEilC,EAAQP,KAAO,SAASvgE,GACtB,OAAO/F,UAAUC,QAAUqmE,EAAOnD,GAASp9D,GAAI8gE,GAAWP,GAG5DO,EAAQ7d,QAAU,SAASjjD,GACzB,OAAO/F,UAAUC,OAAS4mE,EAAQL,aAAazgE,GAAG+gE,aAAa/gE,GAAK8gE,EAAQL,gBAG9EK,EAAQL,aAAe,SAASzgE,GAC9B,OAAO/F,UAAUC,QAAUumE,EAA4B,oBAANzgE,EAAmBA,EAAIyI,IAAUzI,GAAI8gE,GAAWL,GAGnGK,EAAQC,aAAe,SAAS/gE,GAC9B,OAAO/F,UAAUC,OAAS4mE,EAAQJ,WAAW1gE,GAAG2gE,aAAa3gE,GAAG4gE,cAAc5gE,GAAG6gE,YAAY7gE,GAAK8gE,EAAQJ,cAG5GI,EAAQJ,WAAa,SAAS1gE,GAC5B,OAAO/F,UAAUC,QAAUwmE,EAA0B,oBAAN1gE,EAAmBA,EAAIyI,IAAUzI,GAAI8gE,GAAWJ,GAGjGI,EAAQH,aAAe,SAAS3gE,GAC9B,OAAO/F,UAAUC,QAAUymE,EAA4B,oBAAN3gE,EAAmBA,EAAIyI,IAAUzI,GAAI8gE,GAAWH,GAGnGG,EAAQF,cAAgB,SAAS5gE,GAC/B,OAAO/F,UAAUC,QAAU0mE,EAA6B,oBAAN5gE,EAAmBA,EAAIyI,IAAUzI,GAAI8gE,GAAWF,GAGpGE,EAAQD,YAAc,SAAS7gE,GAC7B,OAAO/F,UAAUC,QAAU2mE,EAA2B,oBAAN7gE,EAAmBA,EAAIyI,IAAUzI,GAAI8gE,GAAWD,GAG3FC,GC5FM,YAASvsD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GAC1C,IACInlC,EACAwJ,EAFAoa,EAAQrJ,EAAOH,SACZxV,EAAIgf,EAAM1jB,OACR8mE,EAAO,IAAIrgE,MAAM/B,EAAI,GAE9B,IAAKoiE,EAAK,GAAKx9D,EAAMxJ,EAAI,EAAGA,EAAI4E,IAAK5E,EACnCgnE,EAAKhnE,EAAI,GAAKwJ,GAAOoa,EAAM5jB,GAAGoC,OAKhC,SAASqhE,EAAUzjE,EAAGmJ,EAAG/G,EAAOuO,EAAI60B,EAAI50B,EAAIu0B,GAC1C,GAAInlC,GAAKmJ,EAAI,EAAG,CACd,IAAI6Q,EAAO4J,EAAM5jB,GAGjB,OAFAga,EAAKrJ,GAAKA,EAAIqJ,EAAKwrB,GAAKA,EACxBxrB,EAAKpJ,GAAKA,OAAIoJ,EAAKmrB,GAAKA,GAI1B,IAAI8hC,EAAcD,EAAKhnE,GACnBknE,EAAe9kE,EAAQ,EAAK6kE,EAC5B31D,EAAItR,EAAI,EACRkG,EAAKiD,EAAI,EAEb,KAAOmI,EAAIpL,GAAI,CACb,IAAIC,EAAMmL,EAAIpL,IAAO,EACjB8gE,EAAK7gE,GAAO+gE,EAAa51D,EAAInL,EAAM,EAClCD,EAAKC,EAGP+gE,EAAcF,EAAK11D,EAAI,GAAO01D,EAAK11D,GAAK41D,GAAgBlnE,EAAI,EAAIsR,KAAKA,EAE1E,IAAI61D,EAAYH,EAAK11D,GAAK21D,EACtBG,EAAahlE,EAAQ+kE,EAEzB,GAAKv2D,EAAKD,EAAOw0B,EAAKK,EAAK,CACzB,IAAI6hC,EAAKjlE,GAASuO,EAAKy2D,EAAax2D,EAAKu2D,GAAa/kE,EAAQwO,EAC9D6yD,EAAUzjE,EAAGsR,EAAG61D,EAAWx2D,EAAI60B,EAAI6hC,EAAIliC,GACvCs+B,EAAUnyD,EAAGnI,EAAGi+D,EAAYC,EAAI7hC,EAAI50B,EAAIu0B,OACnC,CACL,IAAImiC,EAAKllE,GAASojC,EAAK4hC,EAAajiC,EAAKgiC,GAAa/kE,EAAQ+iC,EAC9Ds+B,EAAUzjE,EAAGsR,EAAG61D,EAAWx2D,EAAI60B,EAAI50B,EAAI02D,GACvC7D,EAAUnyD,EAAGnI,EAAGi+D,EAAYz2D,EAAI22D,EAAI12D,EAAIu0B,IAjC5Cs+B,CAAU,EAAG7+D,EAAG2V,EAAOnY,MAAOuO,EAAI60B,EAAI50B,EAAIu0B,ICN7B,YAAS5qB,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,IAC1B,EAAf5qB,EAAO+/C,MAAYvzD,GAAQq/D,IAAM7rD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,ICAzC,YAAU4Z,EAAO+mB,GAE9B,SAASyB,EAAWhtD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GACtC,IAAKkW,EAAO9gC,EAAOitD,YAAensB,EAAKyqB,QAAUA,EAU/C,IATA,IAAIzqB,EACA7mC,EACAoP,EACA5jB,EAEA4E,EADAuE,GAAK,EAEL4H,EAAIsqC,EAAKn7C,OACTkC,EAAQmY,EAAOnY,QAEV+G,EAAI4H,GAAG,CAEd,IADe6S,GAAfpP,EAAM6mC,EAAKlyC,IAAgBiR,SACtBpa,EAAIwU,EAAIpS,MAAQ,EAAGwC,EAAIgf,EAAM1jB,OAAQF,EAAI4E,IAAK5E,EAAGwU,EAAIpS,OAASwhB,EAAM5jB,GAAGoC,MACxEoS,EAAI4xD,KAAM1C,GAAYlvD,EAAK7D,EAAI60B,EAAI50B,EAAIxO,EAAQojC,IAAOL,EAAKK,GAAMhxB,EAAIpS,MAAQA,EAAQ+iC,GACpFkhC,GAAa7xD,EAAK7D,EAAI60B,EAAIpjC,EAAQuO,IAAOC,EAAKD,GAAM6D,EAAIpS,MAAQA,EAAQwO,EAAIu0B,GACjF/iC,GAASoS,EAAIpS,WAGfmY,EAAOitD,UAAYnsB,EAAOwqB,GAAcC,EAAOvrD,EAAQ5J,EAAI60B,EAAI50B,EAAIu0B,GACnEkW,EAAKyqB,MAAQA,EAQjB,OAJAyB,EAAWzB,MAAQ,SAAS9/D,GAC1B,OAAO+4C,GAAQ/4C,GAAKA,GAAK,EAAIA,EAAI,IAG5BuhE,EA9BM,CA+BZ1b,ICnCY,YAASz4C,GACtB,IAAIxO,EAAIwO,EAAMlT,OACd,OAAO,SAAS0R,GACd,OAAOwB,EAAMrJ,KAAKI,IAAI,EAAGJ,KAAKG,IAAItF,EAAI,EAAGmF,KAAKwF,MAAMqC,EAAIhN,QCD7C,YAASW,EAAGC,GACzB,IAAIxF,EAAI+xB,IAAKxsB,GAAIC,GACjB,OAAO,SAASoM,GACd,IAAI5L,EAAIhG,EAAE4R,GACV,OAAO5L,EAAI,IAAM+D,KAAKwF,MAAMvJ,EAAI,OCNrB,YAAST,EAAGC,GACzB,OAAOD,GAAKA,EAAGC,GAAKA,EAAG,SAASoM,GAC9B,OAAO7H,KAAKqF,MAAM7J,GAAK,EAAIqM,GAAKpM,EAAIoM,KCAxC,SAASo4B,GAAKhkC,GACZ,QAASA,EAAI+D,KAAKyH,IAAIxL,IAAM,EAAIA,GAAK,EAWxB,gBAAUyhE,EAAQC,EAAKC,EAAMC,GAI1C,SAASC,EAAKh0B,EAAIG,GAChB,IAKIh0C,EACA2hC,EANAmmC,EAAMj0B,EAAG,GAAIk0B,EAAMl0B,EAAG,GAAIpT,EAAKoT,EAAG,GAClCm0B,EAAMh0B,EAAG,GAAIi0B,EAAMj0B,EAAG,GAAItT,EAAKsT,EAAG,GAClCpS,EAAKomC,EAAMF,EACXjmC,EAAKomC,EAAMF,EACXvkB,EAAK5hB,EAAKA,EAAKC,EAAKA,EAKxB,GAAI2hB,EA5BO,MA6BT7hB,EAAI53B,KAAKyF,IAAIkxB,EAAKD,GAAMinC,EACxB1nE,EAAI,SAAS4R,GACX,MAAO,CACLk2D,EAAMl2D,EAAIgwB,EACVmmC,EAAMn2D,EAAIiwB,EACVpB,EAAK12B,KAAKyH,IAAIk2D,EAAM91D,EAAI+vB,SAMzB,CACH,IAAI6gC,EAAKz4D,KAAKC,KAAKw5C,GACf7P,GAAMjT,EAAKA,EAAKD,EAAKA,EAAKmnC,EAAOpkB,IAAO,EAAI/iB,EAAKknC,EAAOnF,GACxD3iB,GAAMnf,EAAKA,EAAKD,EAAKA,EAAKmnC,EAAOpkB,IAAO,EAAI9iB,EAAKinC,EAAOnF,GACxDrzD,EAAKpF,KAAKyF,IAAIzF,KAAKC,KAAK2pC,EAAKA,EAAK,GAAKA,GACvCtkC,EAAKtF,KAAKyF,IAAIzF,KAAKC,KAAK61C,EAAKA,EAAK,GAAKA,GAC3Cle,GAAKtyB,EAAKF,GAAMu4D,EAChB1nE,EAAI,SAAS4R,GACX,IAtCM5L,EAsCFX,EAAIuM,EAAI+vB,EACRumC,EAASl+B,GAAK76B,GACdk/B,EAAI5N,GAAMknC,EAAOnF,IAAO0F,GAxCtBliE,EAwCoC0hE,EAAMriE,EAAI8J,IAvCjDnJ,EAAI+D,KAAKyH,IAAI,EAAIxL,IAAM,IAAMA,EAAI,IAL5C,SAAcA,GACZ,QAASA,EAAI+D,KAAKyH,IAAIxL,IAAM,EAAIA,GAAK,EA2C2BikC,CAAK96B,IAC/D,MAAO,CACL24D,EAAMz5B,EAAIzM,EACVmmC,EAAM15B,EAAIxM,EACVpB,EAAKynC,EAASl+B,GAAK09B,EAAMriE,EAAI8J,KAOnC,OAFAnP,EAAE23B,SAAe,IAAJgK,EAAW+lC,EAAM39D,KAAKo+D,MAE5BnoE,EAQT,OALA6nE,EAAKH,IAAM,SAASv2D,GAClB,IAAI86B,EAAKliC,KAAKI,IAAI,MAAOgH,GAAIi3D,EAAKn8B,EAAKA,EACvC,OAAOw7B,EAAQx7B,EAAIm8B,EAD6BA,EAAKA,IAIhDP,EAvDM,CAwDZ99D,KAAKo+D,MAAO,EAAG,GCnElB,SAASp3C,GAAIgB,GACX,OAAO,SAASjjB,EAAOsjB,GACrB,IAAIxB,EAAImB,GAAKjjB,EAAQu5D,GAASv5D,IAAQ8hB,GAAIwB,EAAMi2C,GAASj2C,IAAMxB,GAC3DvrB,EAAIwqB,GAAM/gB,EAAMzJ,EAAG+sB,EAAI/sB,GACvByqB,EAAID,GAAM/gB,EAAMghB,EAAGsC,EAAItC,GACvBS,EAAUV,GAAM/gB,EAAMyhB,QAAS6B,EAAI7B,SACvC,OAAO,SAAS3e,GAKd,OAJA9C,EAAM8hB,EAAIA,EAAEhf,GACZ9C,EAAMzJ,EAAIA,EAAEuM,GACZ9C,EAAMghB,EAAIA,EAAEle,GACZ9C,EAAMyhB,QAAUA,EAAQ3e,GACjB9C,EAAQ,KAKNiiB,UAAIgB,IACRu2C,GAAUv3C,GAAIlB,ICjBV,SAASkZ,GAAIj6B,EAAOsjB,GACjC,IAAItC,EAAID,IAAO/gB,EAAQy5D,GAASz5D,IAAQghB,GAAIsC,EAAMm2C,GAASn2C,IAAMtC,GAC7DvqB,EAAIsqB,GAAM/gB,EAAMvJ,EAAG6sB,EAAI7sB,GACvBC,EAAIqqB,GAAM/gB,EAAMtJ,EAAG4sB,EAAI5sB,GACvB+qB,EAAUV,GAAM/gB,EAAMyhB,QAAS6B,EAAI7B,SACvC,OAAO,SAAS3e,GAKd,OAJA9C,EAAMghB,EAAIA,EAAEle,GACZ9C,EAAMvJ,EAAIA,EAAEqM,GACZ9C,EAAMtJ,EAAIA,EAAEoM,GACZ9C,EAAMyhB,QAAUA,EAAQ3e,GACjB9C,EAAQ,ICVnB,SAASs6B,GAAIrX,GACX,OAAO,SAASjjB,EAAOsjB,GACrB,IAAIxB,EAAImB,GAAKjjB,EAAQ05D,GAAS15D,IAAQ8hB,GAAIwB,EAAMo2C,GAASp2C,IAAMxB,GAC3D5iB,EAAI6hB,GAAM/gB,EAAMd,EAAGokB,EAAIpkB,GACvB8hB,EAAID,GAAM/gB,EAAMghB,EAAGsC,EAAItC,GACvBS,EAAUV,GAAM/gB,EAAMyhB,QAAS6B,EAAI7B,SACvC,OAAO,SAAS3e,GAKd,OAJA9C,EAAM8hB,EAAIA,EAAEhf,GACZ9C,EAAMd,EAAIA,EAAE4D,GACZ9C,EAAMghB,EAAIA,EAAEle,GACZ9C,EAAMyhB,QAAUA,EAAQ3e,GACjB9C,EAAQ,KAKNs6B,UAAIrX,IACR02C,GAAUr/B,GAAIvZ,ICjBzB,SAASka,GAAUhY,GACjB,OAAQ,SAAS22C,EAAen+D,GAG9B,SAASw/B,EAAUj7B,EAAOsjB,GACxB,IAAIxB,EAAImB,GAAKjjB,EAAQ65D,GAAe75D,IAAQ8hB,GAAIwB,EAAMu2C,GAAev2C,IAAMxB,GACvEvrB,EAAIwqB,GAAM/gB,EAAMzJ,EAAG+sB,EAAI/sB,GACvByqB,EAAID,GAAM/gB,EAAMghB,EAAGsC,EAAItC,GACvBS,EAAUV,GAAM/gB,EAAMyhB,QAAS6B,EAAI7B,SACvC,OAAO,SAAS3e,GAKd,OAJA9C,EAAM8hB,EAAIA,EAAEhf,GACZ9C,EAAMzJ,EAAIA,EAAEuM,GACZ9C,EAAMghB,EAAIA,EAAE/lB,KAAK4F,IAAIiC,EAAGrH,IACxBuE,EAAMyhB,QAAUA,EAAQ3e,GACjB9C,EAAQ,IAMnB,OAlBAvE,GAAKA,EAgBLw/B,EAAU/X,MAAQ02C,EAEX3+B,EAnBD,CAoBL,GAGUA,UAAUhY,IACd62C,GAAgB7+B,GAAUla,IC1BtB,SAASg5C,GAAU1uC,EAAalyB,QAC9B7D,IAAX6D,IAAsBA,EAASkyB,EAAaA,EAAc/3B,IAE9D,IADA,IAAIpC,EAAI,EAAG4E,EAAIqD,EAAO/H,OAAS,EAAGwJ,EAAIzB,EAAO,GAAI00C,EAAI,IAAIh2C,MAAM/B,EAAI,EAAI,EAAIA,GACpE5E,EAAI4E,GAAG+3C,EAAE38C,GAAKm6B,EAAYzwB,EAAGA,EAAIzB,IAASjI,IACjD,OAAO,SAAS4R,GACd,IAAI5R,EAAI+J,KAAKI,IAAI,EAAGJ,KAAKG,IAAItF,EAAI,EAAGmF,KAAKwF,MAAMqC,GAAKhN,KACpD,OAAO+3C,EAAE38C,GAAG4R,EAAI5R,ICRL,gBAAS8oE,EAAclkE,GAEpC,IADA,IAAImkE,EAAU,IAAIpiE,MAAM/B,GACf5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG+oE,EAAQ/oE,GAAK8oE,EAAa9oE,GAAK4E,EAAI,IAC/D,OAAOmkE,GCHM,YAASn9B,GAOtB,IANA,IAEIrmC,EAFAvF,GAAK,EACL4E,EAAIgnC,EAAQ1rC,OAEZsF,EAAIomC,EAAQhnC,EAAI,GAChB+mC,EAAO,IAEF3rC,EAAI4E,GACXW,EAAIC,EACJA,EAAIomC,EAAQ5rC,GACZ2rC,GAAQpmC,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAGjC,OAAOmmC,EAAO,GCbD,YAASC,GAUtB,IATA,IAIIrmC,EAEAyI,EANAhO,GAAK,EACL4E,EAAIgnC,EAAQ1rC,OACZ8F,EAAI,EACJuE,EAAI,EAEJ/E,EAAIomC,EAAQhnC,EAAI,GAEhB0M,EAAI,IAECtR,EAAI4E,GACXW,EAAIC,EACJA,EAAIomC,EAAQ5rC,GACZsR,GAAKtD,EAAIzI,EAAE,GAAKC,EAAE,GAAKA,EAAE,GAAKD,EAAE,GAChCS,IAAMT,EAAE,GAAKC,EAAE,IAAMwI,EACrBzD,IAAMhF,EAAE,GAAKC,EAAE,IAAMwI,EAGvB,MAAe,CAAChI,GAATsL,GAAK,GAAW/G,EAAI+G,IChB7B,SAAS03D,GAAmBzjE,EAAGC,GAC7B,OAAOD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,GAMjC,SAASyjE,GAAwBjnC,GAC/B,IAEchiC,ECRQuF,EAAGC,EAAGwI,EDMtBpJ,EAAIo9B,EAAO9hC,OACbyN,EAAU,CAAC,EAAG,GACdkW,EAAO,EAEX,IAAK7jB,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG,CACtB,KAAO6jB,EAAO,ICXMte,EDWKy8B,EAAOr0B,EAAQkW,EAAO,ICXxBre,EDW6Bw8B,EAAOr0B,EAAQkW,EAAO,ICXhD7V,EDWqDg0B,EAAOhiC,ICVhFwF,EAAE,GAAKD,EAAE,KAAOyI,EAAE,GAAKzI,EAAE,KAAOC,EAAE,GAAKD,EAAE,KAAOyI,EAAE,GAAKzI,EAAE,KDU8B,MAAKse,EAClGlW,EAAQkW,KAAU7jB,EAGpB,OAAO2N,EAAQ5G,MAAM,EAAG8c,GAGX,gBAASme,GACtB,IAAKp9B,EAAIo9B,EAAO9hC,QAAU,EAAG,OAAO,KAEpC,IAAIF,EACA4E,EACAskE,EAAe,IAAIviE,MAAM/B,GACzBukE,EAAgB,IAAIxiE,MAAM/B,GAE9B,IAAK5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGkpE,EAAalpE,GAAK,EAAEgiC,EAAOhiC,GAAG,IAAKgiC,EAAOhiC,GAAG,GAAIA,GAEzE,IADAkpE,EAAap7D,KAAKk7D,IACbhpE,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGmpE,EAAcnpE,GAAK,CAACkpE,EAAalpE,GAAG,IAAKkpE,EAAalpE,GAAG,IAEjF,IAAIopE,EAAeH,GAAwBC,GACvCG,EAAeJ,GAAwBE,GAGvCG,EAAWD,EAAa,KAAOD,EAAa,GAC5CG,EAAYF,EAAaA,EAAanpE,OAAS,KAAOkpE,EAAaA,EAAalpE,OAAS,GACzFqyC,EAAO,GAIX,IAAKvyC,EAAIopE,EAAalpE,OAAS,EAAGF,GAAK,IAAKA,EAAGuyC,EAAK3yC,KAAKoiC,EAAOknC,EAAaE,EAAappE,IAAI,KAC9F,IAAKA,GAAKspE,EAAUtpE,EAAIqpE,EAAanpE,OAASqpE,IAAavpE,EAAGuyC,EAAK3yC,KAAKoiC,EAAOknC,EAAaG,EAAarpE,IAAI,KAE7G,OAAOuyC,GE/CM,YAAS3G,EAASrX,GAQ/B,IAPA,IAII3jB,EAAIu0B,EAJJvgC,EAAIgnC,EAAQ1rC,OACZuC,EAAImpC,EAAQhnC,EAAI,GAChBoB,EAAIuuB,EAAM,GAAIhqB,EAAIgqB,EAAM,GACxB5jB,EAAKlO,EAAE,GAAI+iC,EAAK/iC,EAAE,GAElB+mE,GAAS,EAEJxpE,EAAI,EAAGA,EAAI4E,IAAK5E,EACP4Q,GAAhBnO,EAAImpC,EAAQ5rC,IAAW,IAAImlC,EAAK1iC,EAAE,IACvB8H,IAAQi7B,EAAKj7B,GAAQvE,GAAK2K,EAAKC,IAAOrG,EAAI46B,IAAOK,EAAKL,GAAMv0B,IAAK44D,GAAUA,GACtF74D,EAAKC,EAAI40B,EAAKL,EAGhB,OAAOqkC,GCdM,YAAS59B,GAUtB,IATA,IAGI/S,EACAC,EAJA94B,GAAK,EACL4E,EAAIgnC,EAAQ1rC,OACZsF,EAAIomC,EAAQhnC,EAAI,GAGhBm0B,EAAKvzB,EAAE,GACPwzB,EAAKxzB,EAAE,GACPikE,EAAY,IAEPzpE,EAAI4E,GACXi0B,EAAKE,EACLD,EAAKE,EAILH,GAFAE,GADAvzB,EAAIomC,EAAQ5rC,IACL,GAGP84B,GAFAE,EAAKxzB,EAAE,GAGPikE,GAAa1/D,KAAKmvC,MAAMrgB,EAAIC,GAG9B,OAAO2wC,GCrBM1/D,QAAf,OCEe,YAAU2/D,EAAoBvpE,GAC3C,SAASwpE,EAAcz/D,EAAKC,GAK1B,OAJAD,EAAa,MAAPA,EAAc,GAAKA,EACzBC,EAAa,MAAPA,EAAc,GAAKA,EACA,IAArBlK,UAAUC,QAAciK,EAAMD,EAAKA,EAAM,GACxCC,GAAOD,EACL,WACL,OAAO/J,IAAWgK,EAAMD,GAM5B,OAFAy/D,EAAcxpE,OAASupE,EAEhBC,EAbM,CAcZ9iC,ICdY,YAAU+iC,EAAgBzpE,GACvC,SAAS0pE,EAAU3/D,EAAKC,GAItB,OAHIlK,UAAUC,OAAS,IAAGiK,EAAMD,EAAKA,EAAM,GAC3CA,EAAMH,KAAKwF,MAAMrF,GACjBC,EAAMJ,KAAKwF,MAAMpF,GAAOD,EACjB,WACL,OAAOH,KAAKwF,MAAMpP,IAAWgK,EAAMD,IAMvC,OAFA2/D,EAAU1pE,OAASypE,EAEZC,EAZM,CAaZhjC,ICbY,YAAUijC,EAAmB3pE,GAC1C,SAAS4pE,EAAaC,EAAIC,GACxB,IAAIjkE,EAAGwN,EAGP,OAFAw2D,EAAW,MAANA,EAAa,GAAKA,EACvBC,EAAiB,MAATA,EAAgB,GAAKA,EACtB,WACL,IAAI1/D,EAGJ,GAAS,MAALvE,EAAWuE,EAAIvE,EAAGA,EAAI,UAGrB,GACHA,EAAe,EAAX7F,IAAe,EACnBoK,EAAe,EAAXpK,IAAe,EACnBqT,EAAIxN,EAAIA,EAAIuE,EAAIA,SACRiJ,GAAKA,EAAI,GAEnB,OAAOw2D,EAAKC,EAAQ1/D,EAAIR,KAAKC,MAAM,EAAID,KAAKyF,IAAIgE,GAAKA,IAMzD,OAFAu2D,EAAa5pE,OAAS2pE,EAEfC,EAxBM,CAyBZljC,ICxBY,YAAUqjC,EAAsB/pE,GAC7C,IAAIshC,EAAIgsB,GAAOttD,OAAOA,GAEtB,SAASgqE,IACP,IAAIJ,EAAetoC,EAAE5hC,MAAM+D,KAAM3D,WACjC,OAAO,WACL,OAAO8J,KAAKyH,IAAIu4D,MAMpB,OAFAI,EAAgBhqE,OAAS+pE,EAElBC,EAZM,CAaZtjC,ICdY,YAAUujC,EAAsBjqE,GAC7C,SAASkqE,EAAgBzlE,GACvB,OAAKA,GAAKA,IAAM,EAAU,kBAAM,GACzB,WACL,IAAK,IAAI4E,EAAM,EAAGxJ,EAAI4E,EAAG5E,EAAI,IAAKA,EAAGwJ,GAAOrJ,IAC5C,OAAOqJ,EAAMxJ,EAAIG,KAMrB,OAFAkqE,EAAgBlqE,OAASiqE,EAElBC,EAXM,CAYZxjC,ICXY,YAAUyjC,EAAkBnqE,GACzC,IAAIw8C,EAAI4tB,GAAUpqE,OAAOA,GAEzB,SAASqqE,EAAY5lE,GAEnB,GAAiB,KAAZA,GAAKA,GAAU,OAAOzE,EAC3B,IAAIkqE,EAAkB1tB,EAAE/3C,GACxB,OAAO,WACL,OAAOylE,IAAoBzlE,GAM/B,OAFA4lE,EAAYrqE,OAASmqE,EAEdE,EAdM,CAeZ3jC,IChBY,YAAU4jC,EAAwBtqE,GAC/C,SAASuqE,EAAkB9e,GACzB,OAAO,WACL,OAAQ7hD,KAAK4gE,OAAOxqE,KAAYyrD,GAMpC,OAFA8e,EAAkBvqE,OAASsqE,EAEpBC,EATM,CAUZ7jC,ICVY,YAAU+jC,EAAmBzqE,GAC1C,SAAS0qE,EAAa/lB,GACpB,IAAKA,GAASA,GAAS,EAAG,MAAM,IAAIgmB,WAAW,iBAE/C,OADAhmB,EAAQ,GAAKA,EACN,WACL,OAAO/6C,KAAK4F,IAAI,EAAIxP,IAAU2kD,IAMlC,OAFA+lB,EAAa1qE,OAASyqE,EAEfC,EAXM,CAYZhkC,ICZY,YAAUkkC,EAAsB5qE,GAC7C,SAAS6qE,EAAgBvoE,GACvB,IAAKA,GAAKA,GAAK,GAAKA,EAAI,EAAG,MAAM,IAAIqoE,WAAW,aAChD,OAAO,WACL,OAAO/gE,KAAKwF,MAAMpP,IAAWsC,IAMjC,OAFAuoE,EAAgB7qE,OAAS4qE,EAElBC,EAVM,CAWZnkC,ICXY,YAAUokC,EAAsB9qE,GAC7C,SAAS+qE,EAAgBzoE,GACvB,IAAKA,GAAKA,GAAK,GAAKA,EAAI,EAAG,MAAM,IAAIqoE,WAAW,aAChD,OAAU,IAANroE,EAAgB,kBAAMi0B,KAChB,IAANj0B,EAAgB,kBAAM,IAC1BA,EAAIsH,KAAK4gE,OAAOloE,GACT,WACL,OAAO,EAAIsH,KAAKwF,MAAMxF,KAAK4gE,OAAOxqE,KAAYsC,KAMlD,OAFAyoE,EAAgB/qE,OAAS8qE,EAElBC,EAbM,CAcZrkC,ICbY,YAAUskC,EAAkBhrE,GACzC,IAAI4pE,EAAetc,GAAOttD,OAAOA,EAAdstD,GAEnB,SAAS2d,EAAY95D,EAAG+0C,GACtB,IAAK/0C,GAAKA,GAAK,EAAG,MAAM,IAAIw5D,WAAW,aAEvC,GAAU,IAANx5D,EAAS,OAAO,kBAAM,GAG1B,GAFA+0C,EAAiB,MAATA,EAAgB,GAAKA,EAEnB,IAAN/0C,EAAS,OAAO,kBAAOvH,KAAK4gE,OAAOxqE,KAAYkmD,GAEnD,IAAIjgD,GAAKkL,EAAI,EAAIA,EAAI,EAAIA,GAAK,EAAI,EAC9BtD,EAAI,GAAK,EAAIjE,KAAKC,KAAK5D,IACvBilE,EAAa/5D,EAAI,EAAI,kBAAMvH,KAAK4F,IAAIxP,IAAU,EAAImR,IAAK,kBAAM,GACjE,OAAO,WACL,EAAG,CACD,GACE,IAAItL,EAAI+jE,IACJrgE,EAAI,EAAIsE,EAAIhI,QACT0D,GAAK,GACdA,GAAKA,EAAIA,EACT,IAAI2kC,EAAI,EAAIluC,UACLkuC,GAAK,EAAI,MAASroC,EAAIA,EAAIA,EAAIA,GAAK+D,KAAKyF,IAAI6+B,IAAM,GAAMroC,EAAIA,EAAII,GAAK,EAAIsD,EAAIK,KAAKyF,IAAI9F,KAC/F,OAAOtD,EAAIsD,EAAI2hE,IAAehlB,GAMlC,OAFA+kB,EAAYjrE,OAASgrE,EAEdC,EA7BM,CA8BZvkC,IC9BY,YAAUykC,EAAiBnrE,GACxC,IAAIorE,EAAIv5C,GAAM7xB,OAAOA,GAErB,SAASqrE,EAAW1mB,EAAOqhB,GACzB,IAAI5oC,EAAIguC,EAAEzmB,GACNlnB,EAAI2tC,EAAEpF,GACV,OAAO,WACL,IAAIngE,EAAIu3B,IACR,OAAa,IAANv3B,EAAU,EAAIA,GAAKA,EAAI43B,MAMlC,OAFA4tC,EAAWrrE,OAASmrE,EAEbE,EAdM,CAeZ3kC,ICdY,YAAU4kC,EAAqBtrE,GAC5C,IAAIorE,EAAIG,GAAUvrE,OAAOA,GACrBmpC,EAAI68B,GAAKhmE,OAAOA,GAEpB,SAASwrE,EAAe/mE,EAAGnC,GAEzB,OADAmC,GAAKA,GACAnC,GAAKA,IAAM,EAAU,kBAAMmC,GAC5BnC,GAAK,EAAU,kBAAM,GAClB,WAEL,IADA,IAAImpE,EAAM,EAAGC,EAAKjnE,EAAGknE,EAAKrpE,EACnBopE,EAAKC,EAAK,IAAMD,GAAM,EAAIC,GAAM,IAAI,CACzC,IAAI9rE,EAAI+J,KAAKwF,OAAOs8D,EAAK,GAAKC,GAC1BvhE,EAAI++B,EAAEtpC,EAAG6rE,EAAK7rE,EAAI,EAAdspC,GACJ/+B,GAAKuhE,GACPF,GAAO5rE,EACP6rE,GAAM7rE,EACN8rE,GAAMA,EAAKvhE,IAAM,EAAIA,KAErBshE,EAAK7rE,EAAI,EACT8rE,GAAMvhE,GAMV,IAHA,IAAI2rC,EAAO41B,EAAK,GAEZz+D,EAAIk+D,EADKr1B,EAAO41B,EAAK,EAAIA,GAEpBzmE,EAAIgI,IAAKiE,EAAI,EAAGjM,GAAKwmE,IAAMv6D,EAAGjM,GAAKgI,IAC5C,OAAOu+D,GAAO11B,EAAO5kC,EAAIu6D,EAAKv6D,IAMlC,OAFAq6D,EAAexrE,OAASsrE,EAEjBE,EAhCM,CAiCZ9kC,ICnCY,YAAUklC,EAAoB5rE,GAC3C,SAAS6rE,EAAc16D,EAAG/L,EAAGC,GAC3B,IAAIymE,EASJ,OARiB,KAAZ36D,GAAKA,GACR26D,EAAY,SAAAjmE,GAAC,OAAK+D,KAAKyF,IAAIxJ,KAE3BsL,EAAI,EAAIA,EACR26D,EAAY,SAAAjmE,GAAC,OAAI+D,KAAK4F,IAAI3J,EAAGsL,KAE/B/L,EAAS,MAALA,EAAY,GAAKA,EACrBC,EAAS,MAALA,EAAY,GAAKA,EACd,WACL,OAAOD,EAAIC,EAAIymE,GAAWliE,KAAK4gE,OAAOxqE,OAM1C,OAFA6rE,EAAc7rE,OAAS4rE,EAEhBC,EAlBM,CAmBZnlC,ICnBY,YAAUqlC,EAAmB/rE,GAC1C,SAASgsE,EAAa5mE,EAAGC,GAGvB,OAFAD,EAAS,MAALA,EAAY,GAAKA,EACrBC,EAAS,MAALA,EAAY,GAAKA,EACd,WACL,OAAOD,EAAIC,EAAIuE,KAAK8kB,IAAI9kB,KAAKkuB,GAAK93B,MAMtC,OAFAgsE,EAAahsE,OAAS+rE,EAEfC,EAXM,CAYZtlC,ICZY,YAAUulC,EAAqBjsE,GAC5C,SAASksE,EAAe9mE,EAAGC,GAGzB,OAFAD,EAAS,MAALA,EAAY,GAAKA,EACrBC,EAAS,MAALA,EAAY,GAAKA,EACd,WACL,IAAI6oC,EAAIluC,IACR,OAAOoF,EAAIC,EAAIuE,KAAKyF,IAAI6+B,GAAK,EAAIA,KAMrC,OAFAg+B,EAAelsE,OAASisE,EAEjBC,EAZM,CAaZxlC,ICXY,YAAUylC,EAAoBnsE,GAC3C,IAAIorE,EAAIv5C,GAAM7xB,OAAOA,GACjBmpC,EAAIijC,GAASpsE,OAAOA,GAExB,SAASqsE,EAAc5gB,GACrB,OAAO,WAEL,IADA,IAAIggB,EAAM,EAAG97C,EAAI87B,EACV97B,EAAI,IAAI,CACb,IAAIlrB,EAAImF,KAAKwF,MAAM,KAAQugB,GACvBle,EAAI25D,EAAE3mE,EAAF2mE,GACR,GAAI35D,EAAIke,EAAG,OAAO87C,EAAMtiC,EAAE1kC,EAAI,EAAGkrB,EAAIle,EAAb03B,GACxBsiC,GAAOhnE,EACPkrB,GAAKle,EAEP,IAAK,IAAIvM,GAAK0E,KAAK4gE,OAAOxqE,KAAWmR,EAAI,EAAGjM,GAAKyqB,IAAKxe,EAAGjM,GAAK0E,KAAK4gE,OAAOxqE,KAC1E,OAAOyrE,EAAMt6D,GAMjB,OAFAk7D,EAAcrsE,OAASmsE,EAEhBE,EArBM,CAsBZ3lC,ICzBG4lC,GAAM,QACNC,GAAM,WACNC,GAAM,EAAI,WAED,SAASlnB,KAA0B,IAAtBmnB,EAAsB,uDAAf7iE,KAAKqK,SAClCsjB,EAAgE,GAAvD,GAAKk1C,GAAQA,EAAO,EAAIA,EAAOD,GAAM5iE,KAAKS,IAAIoiE,IAC3D,OAAO,kBAAsCD,KAA/Bj1C,EAAQ+0C,GAAM/0C,EAAQg1C,GAAM,KAAoB,ICPzD,SAASG,GAAUx8D,EAAQ+C,GAChC,OAAQnT,UAAUC,QAChB,KAAK,EAAG,MACR,KAAK,EAAG0D,KAAKwP,MAAM/C,GAAS,MAC5B,QAASzM,KAAKwP,MAAMA,GAAO/C,OAAOA,GAEpC,OAAOzM,KAGF,SAASkpE,GAAiBz8D,EAAQy4D,GACvC,OAAQ7oE,UAAUC,QAChB,KAAK,EAAG,MACR,KAAK,EACmB,oBAAXmQ,EAAuBzM,KAAKklE,aAAaz4D,GAC/CzM,KAAKwP,MAAM/C,GAChB,MAEF,QACEzM,KAAKyM,OAAOA,GACgB,oBAAjBy4D,EAA6BllE,KAAKklE,aAAaA,GACrDllE,KAAKwP,MAAM01D,GAIpB,OAAOllE,KCrBF,IAAMmpE,GAAW/pE,OAAO,YAEhB,SAASgqE,KACtB,IAAI7kE,EAAQ,IAAIgE,EACZkE,EAAS,GACT+C,EAAQ,GACR65D,EAAUF,GAEd,SAASn3D,EAAMxP,GACb,IAAIpG,EAAImI,EAAMiD,IAAIhF,GAClB,QAAUhC,IAANpE,EAAiB,CACnB,GAAIitE,IAAYF,GAAU,OAAOE,EACjC9kE,EAAM8D,IAAI7F,EAAGpG,EAAIqQ,EAAOzQ,KAAKwG,GAAK,GAEpC,OAAOgN,EAAMpT,EAAIoT,EAAMlT,QA2BzB,OAxBA0V,EAAMvF,OAAS,SAASc,GACtB,IAAKlR,UAAUC,OAAQ,OAAOmQ,EAAOtJ,QACrCsJ,EAAS,GAAIlI,EAAQ,IAAIgE,EAFA,UAGLgF,GAHK,IAGzB,2BAAuB,KAAZ/O,EAAY,QACjB+F,EAAM6D,IAAI5J,IACd+F,EAAM8D,IAAI7J,EAAOiO,EAAOzQ,KAAKwC,GAAS,IALf,8BAOzB,OAAOwT,GAGTA,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAUkT,EAAQzM,MAAMxB,KAAKgM,GAAIyE,GAASxC,EAAMrM,SAGnE6O,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAGnDr3D,EAAMsB,KAAO,WACX,OAAO81D,GAAQ38D,EAAQ+C,GAAO65D,QAAQA,IAGxCJ,GAAUhtE,MAAM+V,EAAO3V,WAEhB2V,ECxCM,SAASs3D,KACtB,IAKItlE,EACAkO,EANAF,EAAQo3D,KAAUC,aAAQ7oE,GAC1BiM,EAASuF,EAAMvF,OACf88D,EAAev3D,EAAMxC,MACrBjE,EAAK,EACLE,EAAK,EAGLD,GAAQ,EACRq3D,EAAe,EACfM,EAAe,EACfjgB,EAAQ,GAIZ,SAASsmB,IACP,IAAIxoE,EAAIyL,IAASnQ,OACb8O,EAAUK,EAAKF,EACfL,EAAQE,EAAUK,EAAKF,EACvBJ,EAAOC,EAAUG,EAAKE,EAC1BzH,GAAQmH,EAAOD,GAAS/E,KAAKI,IAAI,EAAGvF,EAAI6hE,EAA8B,EAAfM,GACnD33D,IAAOxH,EAAOmC,KAAKwF,MAAM3H,IAC7BkH,IAAUC,EAAOD,EAAQlH,GAAQhD,EAAI6hE,IAAiB3f,EACtDhxC,EAAYlO,GAAQ,EAAI6+D,GACpBr3D,IAAON,EAAQ/E,KAAKqF,MAAMN,GAAQgH,EAAY/L,KAAKqF,MAAM0G,IAC7D,IAAI7N,EAASolE,GAASzoE,GAAGD,KAAI,SAAS3E,GAAK,OAAO8O,EAAQlH,EAAO5H,KACjE,OAAOmtE,EAAan+D,EAAU/G,EAAO+G,UAAY/G,GAmDnD,cAhEO2N,EAAMq3D,QAgBbr3D,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,QAAUmQ,EAAOc,GAAIi8D,KAAa/8D,KAGrDuF,EAAMxC,MAAQ,SAASjC,GAAG,MACxB,OAAOlR,UAAUC,QAAU,IAAWiR,EAAX,GAAChC,EAAD,KAAKE,EAAL,KAAcF,GAAMA,EAAIE,GAAMA,EAAI+9D,KAAa,CAACj+D,EAAIE,IAGjFuG,EAAM03D,WAAa,SAASn8D,GAAG,MAC7B,OAAO,IAAWA,EAAX,GAAChC,EAAD,KAAKE,EAAL,KAAcF,GAAMA,EAAIE,GAAMA,EAAID,GAAQ,EAAMg+D,KAGzDx3D,EAAME,UAAY,WAChB,OAAOA,GAGTF,EAAMhO,KAAO,WACX,OAAOA,GAGTgO,EAAMxG,MAAQ,SAAS+B,GACrB,OAAOlR,UAAUC,QAAUkP,IAAU+B,EAAGi8D,KAAah+D,GAGvDwG,EAAMqzC,QAAU,SAAS93C,GACvB,OAAOlR,UAAUC,QAAUumE,EAAe18D,KAAKG,IAAI,EAAG68D,GAAgB51D,GAAIi8D,KAAa3G,GAGzF7wD,EAAM6wD,aAAe,SAASt1D,GAC5B,OAAOlR,UAAUC,QAAUumE,EAAe18D,KAAKG,IAAI,EAAGiH,GAAIi8D,KAAa3G,GAGzE7wD,EAAMmxD,aAAe,SAAS51D,GAC5B,OAAOlR,UAAUC,QAAU6mE,GAAgB51D,EAAGi8D,KAAarG,GAG7DnxD,EAAMkxC,MAAQ,SAAS31C,GACrB,OAAOlR,UAAUC,QAAU4mD,EAAQ/8C,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAGiH,IAAKi8D,KAAatmB,GAG/ElxC,EAAMsB,KAAO,WACX,OAAOg2D,GAAK78D,IAAU,CAAClB,EAAIE,IACtBD,MAAMA,GACNq3D,aAAaA,GACbM,aAAaA,GACbjgB,MAAMA,IAGN+lB,GAAUhtE,MAAMutE,IAAWntE,WAGpC,SAASstE,GAAS33D,GAChB,IAAIsB,EAAOtB,EAAMsB,KAUjB,OARAtB,EAAMqzC,QAAUrzC,EAAMmxD,oBACfnxD,EAAM6wD,oBACN7wD,EAAMmxD,aAEbnxD,EAAMsB,KAAO,WACX,OAAOq2D,GAASr2D,MAGXtB,EAGF,SAAS2e,KACd,OAAOg5C,GAASL,GAAKrtE,MAAM,KAAMI,WAAWwmE,aAAa,ICnG5C,SAASz+D,GAAOhC,GAC7B,OAAQA,ECIV,IAAIwnE,GAAO,CAAC,EAAG,GAER,SAASzgE,GAAS/G,GACvB,OAAOA,EAGT,SAASynE,GAAUloE,EAAGC,GACpB,OAAQA,GAAMD,GAAKA,GACb,SAASS,GAAK,OAAQA,EAAIT,GAAKC,ICbLQ,EDcjB2qB,MAAMnrB,GAAKC,IAAM,GCbzB,WACL,OAAOO,IAFI,IAAmBA,EDyBlC,SAAS0nE,GAAMr9D,EAAQ+C,EAAO+mB,GAC5B,IAAIqY,EAAKniC,EAAO,GAAImyD,EAAKnyD,EAAO,GAAIlB,EAAKiE,EAAM,GAAI/D,EAAK+D,EAAM,GAG9D,OAFIovD,EAAKhwB,GAAIA,EAAKi7B,GAAUjL,EAAIhwB,GAAKrjC,EAAKgrB,EAAY9qB,EAAIF,KACrDqjC,EAAKi7B,GAAUj7B,EAAIgwB,GAAKrzD,EAAKgrB,EAAYhrB,EAAIE,IAC3C,SAASrJ,GAAK,OAAOmJ,EAAGqjC,EAAGxsC,KAGpC,SAAS2nE,GAAQt9D,EAAQ+C,EAAO+mB,GAC9B,IAAIhxB,EAAIY,KAAKG,IAAImG,EAAOnQ,OAAQkT,EAAMlT,QAAU,EAC5CkG,EAAI,IAAIO,MAAMwC,GACdqK,EAAI,IAAI7M,MAAMwC,GACdnJ,GAAK,EAQT,IALIqQ,EAAOlH,GAAKkH,EAAO,KACrBA,EAASA,EAAOtJ,QAAQiI,UACxBoE,EAAQA,EAAMrM,QAAQiI,aAGfhP,EAAImJ,GACX/C,EAAEpG,GAAKytE,GAAUp9D,EAAOrQ,GAAIqQ,EAAOrQ,EAAI,IACvCwT,EAAExT,GAAKm6B,EAAY/mB,EAAMpT,GAAIoT,EAAMpT,EAAI,IAGzC,OAAO,SAASgG,GACd,IAAIhG,EAAIkR,EAAOb,EAAQrK,EAAG,EAAGmD,GAAK,EAClC,OAAOqK,EAAExT,GAAGoG,EAAEpG,GAAGgG,KAId,SAASkR,GAAK/W,EAAQJ,GAC3B,OAAOA,EACFsQ,OAAOlQ,EAAOkQ,UACd+C,MAAMjT,EAAOiT,SACb+mB,YAAYh6B,EAAOg6B,eACnByzC,MAAMztE,EAAOytE,SACbX,QAAQ9sE,EAAO8sE,WAGf,SAASzT,KACd,IAGI7iD,EACAk3D,EACAZ,EAEApE,EACAnrC,EACAD,EATAptB,EAASm9D,GACTp6D,EAAQo6D,GACRrzC,EAAc2zC,GAIdF,EAAQ7gE,GAKZ,SAASqgE,IACP,IAAIxoE,EAAImF,KAAKG,IAAImG,EAAOnQ,OAAQkT,EAAMlT,QAItC,OAHI0tE,IAAU7gE,KAAU6gE,EA7D5B,SAAiBroE,EAAGC,GAClB,IAAIoM,EAEJ,OADIrM,EAAIC,IAAGoM,EAAIrM,EAAGA,EAAIC,EAAGA,EAAIoM,GACtB,SAAS5L,GAAK,OAAO+D,KAAKI,IAAI5E,EAAGwE,KAAKG,IAAI1E,EAAGQ,KA0DlB+nE,CAAQ19D,EAAO,GAAIA,EAAOzL,EAAI,KAC9DikE,EAAYjkE,EAAI,EAAI+oE,GAAUD,GAC9BhwC,EAASD,EAAQ,KACV7nB,EAGT,SAASA,EAAM5P,GACb,OAAY,MAALA,GAAa2qB,MAAM3qB,GAAKA,GAAKinE,GAAWvvC,IAAWA,EAASmrC,EAAUx4D,EAAO1L,IAAIgS,GAAYvD,EAAO+mB,KAAexjB,EAAUi3D,EAAM5nE,KA+B5I,OA5BA4P,EAAMg6C,OAAS,SAASrlD,GACtB,OAAOqjE,EAAMC,GAAapwC,IAAUA,EAAQorC,EAAUz1D,EAAO/C,EAAO1L,IAAIgS,GAAYqjB,MAAqBzvB,MAG3GqL,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,QAAUmQ,EAAS1J,MAAMxB,KAAKgM,EAAGnJ,IAASolE,KAAa/8D,EAAOtJ,SAGjF6O,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAUkT,EAAQzM,MAAMxB,KAAKgM,GAAIi8D,KAAah6D,EAAMrM,SAGvE6O,EAAM03D,WAAa,SAASn8D,GAC1B,OAAOiC,EAAQzM,MAAMxB,KAAKgM,GAAIgpB,EAAc6zC,GAAkBZ,KAGhEx3D,EAAMg4D,MAAQ,SAASz8D,GACrB,OAAOlR,UAAUC,QAAU0tE,IAAQz8D,GAAWpE,GAAUqgE,KAAaQ,IAAU7gE,IAGjF6I,EAAMukB,YAAc,SAAShpB,GAC3B,OAAOlR,UAAUC,QAAUi6B,EAAchpB,EAAGi8D,KAAajzC,GAG3DvkB,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAG5C,SAASr7D,EAAGy8B,GAEjB,OADA13B,EAAY/E,EAAGi8D,EAAcx/B,EACtB++B,KAII,SAASa,KACtB,OAAOzU,KAAczsD,GAAUA,IExHlB,SAASsJ,GAAWvH,EAAOC,EAAMvG,EAAOo+C,GACrD,IACIK,EADAr/C,EAAOgI,GAASd,EAAOC,EAAMvG,GAGjC,QADAo+C,EAAYD,GAA6B,MAAbC,EAAoB,KAAOA,IACrCztC,MAChB,IAAK,IACH,IAAI/W,EAAQ2H,KAAKI,IAAIJ,KAAKS,IAAIsE,GAAQ/E,KAAKS,IAAIuE,IAE/C,OAD2B,MAAvB63C,EAAUK,WAAsBt2B,MAAMs2B,EAAYinB,GAAgBtmE,EAAMxF,MAASwkD,EAAUK,UAAYA,GACpGG,GAAaR,EAAWxkD,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvBwkD,EAAUK,WAAsBt2B,MAAMs2B,EAAYknB,GAAevmE,EAAMmC,KAAKI,IAAIJ,KAAKS,IAAIsE,GAAQ/E,KAAKS,IAAIuE,QAAU63C,EAAUK,UAAYA,GAAgC,MAAnBL,EAAUztC,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvBytC,EAAUK,WAAsBt2B,MAAMs2B,EAAYmnB,GAAexmE,MAAQg/C,EAAUK,UAAYA,EAAuC,GAAP,MAAnBL,EAAUztC,OAI9H,OAAOtC,GAAO+vC,GCtBT,SAASynB,GAAUz4D,GACxB,IAAIvF,EAASuF,EAAMvF,OAkDnB,OAhDAuF,EAAM/G,MAAQ,SAASrG,GACrB,IAAIpC,EAAIiK,IACR,OAAOxB,GAAMzI,EAAE,GAAIA,EAAEA,EAAElG,OAAS,GAAa,MAATsI,EAAgB,GAAKA,IAG3DoN,EAAMS,WAAa,SAAS7N,EAAOo+C,GACjC,IAAIxgD,EAAIiK,IACR,OAAOgG,GAAWjQ,EAAE,GAAIA,EAAEA,EAAElG,OAAS,GAAa,MAATsI,EAAgB,GAAKA,EAAOo+C,IAGvEhxC,EAAM7F,KAAO,SAASvH,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKIwH,EACApI,EANAxB,EAAIiK,IACJ0B,EAAK,EACLsC,EAAKjO,EAAElG,OAAS,EAChB4O,EAAQ1I,EAAE2L,GACVhD,EAAO3I,EAAEiO,GAGTi6D,EAAU,GAOd,IALIv/D,EAAOD,IACTlH,EAAOkH,EAAOA,EAAQC,EAAMA,EAAOnH,EACnCA,EAAOmK,EAAIA,EAAKsC,EAAIA,EAAKzM,GAGpB0mE,KAAY,GAAG,CAEpB,IADA1mE,EAAOqH,GAAcH,EAAOC,EAAMvG,MACrBwH,EAGX,OAFA5J,EAAE2L,GAAMjD,EACR1I,EAAEiO,GAAMtF,EACDsB,EAAOjK,GACT,GAAIwB,EAAO,EAChBkH,EAAQ/E,KAAKwF,MAAMT,EAAQlH,GAAQA,EACnCmH,EAAOhF,KAAKkG,KAAKlB,EAAOnH,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHAkH,EAAQ/E,KAAKkG,KAAKnB,EAAQlH,GAAQA,EAClCmH,EAAOhF,KAAKwF,MAAMR,EAAOnH,GAAQA,EAInCoI,EAAUpI,EAGZ,OAAOgO,GAGFA,EAGM,SAASkc,KACtB,IAAIlc,EAAQq4D,KAQZ,OANAr4D,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOkc,OAGrB+6C,GAAUhtE,MAAM+V,EAAO3V,WAEhBouE,GAAUz4D,GCjEJ,SAAS7I,GAASsD,GAC/B,IAAI48D,EAEJ,SAASr3D,EAAM5P,GACb,OAAY,MAALA,GAAa2qB,MAAM3qB,GAAKA,GAAKinE,EAAUjnE,EAmBhD,OAhBA4P,EAAMg6C,OAASh6C,EAEfA,EAAMvF,OAASuF,EAAMxC,MAAQ,SAASjC,GACpC,OAAOlR,UAAUC,QAAUmQ,EAAS1J,MAAMxB,KAAKgM,EAAGnJ,IAAS4N,GAASvF,EAAOtJ,SAG7E6O,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAGnDr3D,EAAMsB,KAAO,WACX,OAAOnK,GAASsD,GAAQ48D,QAAQA,IAGlC58D,EAASpQ,UAAUC,OAASyG,MAAMxB,KAAKkL,EAAQrI,IAAU,CAAC,EAAG,GAEtDqmE,GAAUz4D,GC1BJ,SAAS7F,GAAKM,EAAQilB,GAGnC,IAII1jB,EAJAG,EAAK,EACLsC,GAHJhE,EAASA,EAAOtJ,SAGA7G,OAAS,EACrByQ,EAAKN,EAAO0B,GACZnB,EAAKP,EAAOgE,GAUhB,OAPIzD,EAAKD,IACPiB,EAAIG,EAAIA,EAAKsC,EAAIA,EAAKzC,EACtBA,EAAIjB,EAAIA,EAAKC,EAAIA,EAAKgB,GAGxBvB,EAAO0B,GAAMujB,EAAS/lB,MAAMoB,GAC5BN,EAAOgE,GAAMihB,EAASrlB,KAAKW,GACpBP,ECVT,SAASk+D,GAAavoE,GACpB,OAAO+D,KAAKyF,IAAIxJ,GAGlB,SAASwoE,GAAaxoE,GACpB,OAAO+D,KAAKyH,IAAIxL,GAGlB,SAASyoE,GAAczoE,GACrB,OAAQ+D,KAAKyF,KAAKxJ,GAGpB,SAAS0oE,GAAc1oE,GACrB,OAAQ+D,KAAKyH,KAAKxL,GAGpB,SAAS2oE,GAAM3oE,GACb,OAAOkJ,SAASlJ,KAAO,KAAOA,GAAKA,EAAI,EAAI,EAAIA,EAgBjD,SAAS4oE,GAAQjpE,GACf,OAAO,SAACK,EAAGsL,GAAJ,OAAW3L,GAAGK,EAAGsL,IAGnB,SAASu9D,GAAQl4D,GACtB,IAGIm4D,EACAC,EAJEn5D,EAAQe,EAAU43D,GAAcC,IAChCn+D,EAASuF,EAAMvF,OACjBhF,EAAO,GAIX,SAAS+hE,IAQP,OAPA0B,EAnBJ,SAAczjE,GACZ,OAAOA,IAAStB,KAAK23B,EAAI33B,KAAKyF,IACf,KAATnE,GAAetB,KAAKilE,OACV,IAAT3jE,GAActB,KAAKklE,OAClB5jE,EAAOtB,KAAKyF,IAAInE,GAAO,SAAArF,GAAC,OAAI+D,KAAKyF,IAAIxJ,GAAKqF,IAezC6jE,CAAK7jE,GAAO0jE,EAzBvB,SAAc1jE,GACZ,OAAgB,KAATA,EAAcsjE,GACftjE,IAAStB,KAAK23B,EAAI33B,KAAKyH,IACvB,SAAAxL,GAAC,OAAI+D,KAAK4F,IAAItE,EAAMrF,IAsBEmpE,CAAK9jE,GAC3BgF,IAAS,GAAK,GAChBy+D,EAAOF,GAAQE,GAAOC,EAAOH,GAAQG,GACrCp4D,EAAU83D,GAAeC,KAEzB/3D,EAAU43D,GAAcC,IAEnB54D,EAyET,OAtEAA,EAAMvK,KAAO,SAAS8F,GACpB,OAAOlR,UAAUC,QAAUmL,GAAQ8F,EAAGi8D,KAAa/hE,GAGrDuK,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,QAAUmQ,EAAOc,GAAIi8D,KAAa/8D,KAGrDuF,EAAM/G,MAAQ,SAAArG,GACZ,IAAMpC,EAAIiK,IACNg+B,EAAIjoC,EAAE,GACNsD,EAAItD,EAAEA,EAAElG,OAAS,GACfsT,EAAI9J,EAAI2kC,EAEd,GAAI76B,EAAJ,OAAiB,CAAC9J,EAAG2kC,GAAZA,EAAT,KAAY3kC,EAAZ,KAEA,IAEI4H,EACAM,EAHA5R,EAAI8uE,EAAKzgC,GACTllC,EAAI2lE,EAAKplE,GAGP9E,EAAa,MAAT4D,EAAgB,IAAMA,EAC5B+I,EAAI,GAER,KAAMlG,EAAO,IAAMlC,EAAInJ,EAAI4E,EAAG,CAE5B,GADA5E,EAAI+J,KAAKwF,MAAMvP,GAAImJ,EAAIY,KAAKkG,KAAK9G,GAC7BklC,EAAI,GAAG,KAAOruC,GAAKmJ,IAAKnJ,EAC1B,IAAKsR,EAAI,EAAGA,EAAIjG,IAAQiG,EAEtB,MADAM,EAAI5R,EAAI,EAAIsR,EAAIy9D,GAAM/uE,GAAKsR,EAAIy9D,EAAK/uE,IAC5BquC,GAAR,CACA,GAAIz8B,EAAIlI,EAAG,MACX6H,EAAE3R,KAAKgS,SAEJ,KAAO5R,GAAKmJ,IAAKnJ,EACtB,IAAKsR,EAAIjG,EAAO,EAAGiG,GAAK,IAAKA,EAE3B,MADAM,EAAI5R,EAAI,EAAIsR,EAAIy9D,GAAM/uE,GAAKsR,EAAIy9D,EAAK/uE,IAC5BquC,GAAR,CACA,GAAIz8B,EAAIlI,EAAG,MACX6H,EAAE3R,KAAKgS,GAGI,EAAXL,EAAErR,OAAa0E,IAAG2M,EAAI1C,GAAMw/B,EAAG3kC,EAAG9E,SAEtC2M,EAAI1C,GAAM7O,EAAGmJ,EAAGY,KAAKG,IAAIf,EAAInJ,EAAG4E,IAAID,IAAIoqE,GAE1C,OAAOv7D,EAAIjC,EAAEvC,UAAYuC,GAG3BqE,EAAMS,WAAa,SAAC7N,EAAOo+C,GAOzB,GANa,MAATp+C,IAAeA,EAAQ,IACV,MAAbo+C,IAAmBA,EAAqB,KAATv7C,EAAc,IAAM,KAC9B,oBAAdu7C,IACHv7C,EAAO,GAA4D,OAArDu7C,EAAYD,GAAgBC,IAAYK,YAAmBL,EAAU1tC,MAAO,GAChG0tC,EAAY/vC,GAAO+vC,IAEjBp+C,IAAUkuB,IAAU,OAAOkwB,EAC/B,IAAMt1C,EAAIvH,KAAKI,IAAI,EAAGkB,EAAO7C,EAAQoN,EAAM/G,QAAQ3O,QACnD,OAAO,SAAAkG,GACL,IAAIpG,EAAIoG,EAAI2oE,EAAKhlE,KAAKqF,MAAM0/D,EAAK1oE,KAEjC,OADIpG,EAAIqL,EAAOA,EAAO,KAAKrL,GAAKqL,GACzBrL,GAAKsR,EAAIs1C,EAAUxgD,GAAK,KAInCwP,EAAM7F,KAAO,WACX,OAAOM,EAAON,GAAKM,IAAU,CAC3Bd,MAAO,SAAAvJ,GAAC,OAAI+oE,EAAKhlE,KAAKwF,MAAMu/D,EAAK9oE,MACjCiK,KAAM,SAAAjK,GAAC,OAAI+oE,EAAKhlE,KAAKkG,KAAK6+D,EAAK9oE,UAI5B4P,EAGM,SAASpG,KACtB,IAAMoG,EAAQi5D,GAAQrV,MAAenpD,OAAO,CAAC,EAAG,KAGhD,OAFAuF,EAAMsB,KAAO,kBAAMA,GAAKtB,EAAOpG,MAAOnE,KAAKuK,EAAMvK,SACjDwhE,GAAUhtE,MAAM+V,EAAO3V,WAChB2V,ECtIT,SAASw5D,GAAgBphE,GACvB,OAAO,SAAShI,GACd,OAAO+D,KAAKmsC,KAAKlwC,GAAK+D,KAAK4gE,MAAM5gE,KAAKS,IAAIxE,EAAIgI,KAIlD,SAASqhE,GAAgBrhE,GACvB,OAAO,SAAShI,GACd,OAAO+D,KAAKmsC,KAAKlwC,GAAK+D,KAAKulE,MAAMvlE,KAAKS,IAAIxE,IAAMgI,GAI7C,SAASuhE,GAAU54D,GACxB,IAAI3I,EAAI,EAAG4H,EAAQe,EAAUy4D,GAAgBphE,GAAIqhE,GAAgBrhE,IAMjE,OAJA4H,EAAMnH,SAAW,SAAS0C,GACxB,OAAOlR,UAAUC,OAASyW,EAAUy4D,GAAgBphE,GAAKmD,GAAIk+D,GAAgBrhE,IAAMA,GAG9EqgE,GAAUz4D,GAGJ,SAAS45D,KACtB,IAAI55D,EAAQ25D,GAAU/V,MAMtB,OAJA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO45D,MAAU/gE,SAASmH,EAAMnH,aAGvCo+D,GAAUhtE,MAAM+V,EAAO3V,WC7BhC,SAASwvE,GAAazwB,GACpB,OAAO,SAASh5C,GACd,OAAOA,EAAI,GAAK+D,KAAK4F,KAAK3J,EAAGg5C,GAAYj1C,KAAK4F,IAAI3J,EAAGg5C,IAIzD,SAAS0wB,GAAc1pE,GACrB,OAAOA,EAAI,GAAK+D,KAAKC,MAAMhE,GAAK+D,KAAKC,KAAKhE,GAG5C,SAAS2pE,GAAgB3pE,GACvB,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAIA,EAGvB,SAAS4pE,GAAOj5D,GACrB,IAAIf,EAAQe,EAAU5J,GAAUA,IAC5BiyC,EAAW,EAEf,SAASouB,IACP,OAAoB,IAAbpuB,EAAiBroC,EAAU5J,GAAUA,IACzB,KAAbiyC,EAAmBroC,EAAU+4D,GAAeC,IAC5Ch5D,EAAU84D,GAAazwB,GAAWywB,GAAa,EAAIzwB,IAO3D,OAJAppC,EAAMopC,SAAW,SAAS7tC,GACxB,OAAOlR,UAAUC,QAAU8+C,GAAY7tC,EAAGi8D,KAAapuB,GAGlDqvB,GAAUz4D,GAGJ,SAASjG,KACtB,IAAIiG,EAAQg6D,GAAOpW,MAQnB,OANA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOjG,MAAOqvC,SAASppC,EAAMopC,aAG3C6tB,GAAUhtE,MAAM+V,EAAO3V,WAEhB2V,EAGF,SAAS5L,KACd,OAAO2F,GAAI9P,MAAM,KAAMI,WAAW++C,SAAS,IC3C7C,SAAS6wB,GAAO7pE,GACd,OAAO+D,KAAKmsC,KAAKlwC,GAAKA,EAAIA,EAG5B,SAAS8pE,GAAS9pE,GAChB,OAAO+D,KAAKmsC,KAAKlwC,GAAK+D,KAAKC,KAAKD,KAAKS,IAAIxE,IAG5B,SAAS+pE,KACtB,IAGI9C,EAHA+C,EAAU/B,KACV76D,EAAQ,CAAC,EAAG,GACZhE,GAAQ,EAGZ,SAASwG,EAAM5P,GACb,IAAIuE,EAAIulE,GAASE,EAAQhqE,IACzB,OAAO2qB,MAAMpmB,GAAK0iE,EAAU79D,EAAQrF,KAAKqF,MAAM7E,GAAKA,EAwCtD,OArCAqL,EAAMg6C,OAAS,SAASrlD,GACtB,OAAOylE,EAAQpgB,OAAOigB,GAAOtlE,KAG/BqL,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,QAAU8vE,EAAQ3/D,OAAOc,GAAIyE,GAASo6D,EAAQ3/D,UAGjEuF,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAU8vE,EAAQ58D,OAAOA,EAAQzM,MAAMxB,KAAKgM,EAAGnJ,KAASrD,IAAIkrE,KAAUj6D,GAASxC,EAAMrM,SAGxG6O,EAAM03D,WAAa,SAASn8D,GAC1B,OAAOyE,EAAMxC,MAAMjC,GAAG/B,OAAM,IAG9BwG,EAAMxG,MAAQ,SAAS+B,GACrB,OAAOlR,UAAUC,QAAUkP,IAAU+B,EAAGyE,GAASxG,GAGnDwG,EAAMg4D,MAAQ,SAASz8D,GACrB,OAAOlR,UAAUC,QAAU8vE,EAAQpC,MAAMz8D,GAAIyE,GAASo6D,EAAQpC,SAGhEh4D,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAGnDr3D,EAAMsB,KAAO,WACX,OAAO64D,GAAOC,EAAQ3/D,SAAU+C,GAC3BhE,MAAMA,GACNw+D,MAAMoC,EAAQpC,SACdX,QAAQA,IAGfJ,GAAUhtE,MAAM+V,EAAO3V,WAEhBouE,GAAUz4D,GC1DJ,SAAS9D,KACtB,IAGIm7D,EAHA58D,EAAS,GACT+C,EAAQ,GACRhC,EAAa,GAGjB,SAASg8D,IACP,IAAIptE,EAAI,EAAG4E,EAAImF,KAAKI,IAAI,EAAGiJ,EAAMlT,QAEjC,IADAkR,EAAa,IAAIzK,MAAM/B,EAAI,KAClB5E,EAAI4E,GAAGwM,EAAWpR,EAAI,GAAKsQ,GAAUD,EAAQrQ,EAAI4E,GAC1D,OAAOgR,EAGT,SAASA,EAAM5P,GACb,OAAY,MAALA,GAAa2qB,MAAM3qB,GAAKA,GAAKinE,EAAU75D,EAAMlC,EAAOE,EAAYpL,IAsCzE,OAnCA4P,EAAMq6D,aAAe,SAAS1lE,GAC5B,IAAIvK,EAAIoT,EAAMrH,QAAQxB,GACtB,OAAOvK,EAAI,EAAI,CAACyF,IAAKA,KAAO,CAC1BzF,EAAI,EAAIoR,EAAWpR,EAAI,GAAKqQ,EAAO,GACnCrQ,EAAIoR,EAAWlR,OAASkR,EAAWpR,GAAKqQ,EAAOA,EAAOnQ,OAAS,KAInE0V,EAAMvF,OAAS,SAASc,GACtB,IAAKlR,UAAUC,OAAQ,OAAOmQ,EAAOtJ,QACrCsJ,EAAS,GAFgB,UAGXc,GAHW,IAGzB,gCAAS/K,EAAT,QAA0B,MAALA,GAAcuqB,MAAMvqB,GAAKA,IAAIiK,EAAOzQ,KAAKwG,IAHrC,8BAKzB,OADAiK,EAAOvC,KAAKxI,GACL8nE,KAGTx3D,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAUkT,EAAQzM,MAAMxB,KAAKgM,GAAIi8D,KAAah6D,EAAMrM,SAGvE6O,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAGnDr3D,EAAMs6D,UAAY,WAChB,OAAO9+D,EAAWrK,SAGpB6O,EAAMsB,KAAO,WACX,OAAOpF,KACFzB,OAAOA,GACP+C,MAAMA,GACN65D,QAAQA,IAGRJ,GAAUhtE,MAAM+V,EAAO3V,WCnDjB,SAASkwE,KACtB,IAKIlD,EALAt8D,EAAK,EACLC,EAAK,EACLhM,EAAI,EACJyL,EAAS,CAAC,IACV+C,EAAQ,CAAC,EAAG,GAGhB,SAASwC,EAAM5P,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAIoN,EAAMlC,EAAOb,EAAQrK,EAAG,EAAGpB,IAAMqoE,EAGhE,SAASG,IACP,IAAIptE,GAAK,EAET,IADAqQ,EAAS,IAAI1J,MAAM/B,KACV5E,EAAI4E,GAAGyL,EAAOrQ,KAAOA,EAAI,GAAK4Q,GAAM5Q,EAAI4E,GAAK+L,IAAO/L,EAAI,GACjE,OAAOgR,EAkCT,OA/BAA,EAAMvF,OAAS,SAASc,GAAG,MACzB,OAAOlR,UAAUC,QAAU,IAAWiR,EAAX,GAACR,EAAD,KAAKC,EAAL,KAAcD,GAAMA,EAAIC,GAAMA,EAAIw8D,KAAa,CAACz8D,EAAIC,IAGjFgF,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAU0E,GAAKwO,EAAQzM,MAAMxB,KAAKgM,IAAIjR,OAAS,EAAGktE,KAAah6D,EAAMrM,SAGxF6O,EAAMq6D,aAAe,SAAS1lE,GAC5B,IAAIvK,EAAIoT,EAAMrH,QAAQxB,GACtB,OAAOvK,EAAI,EAAI,CAACyF,IAAKA,KACfzF,EAAI,EAAI,CAAC2Q,EAAIN,EAAO,IACpBrQ,GAAK4E,EAAI,CAACyL,EAAOzL,EAAI,GAAIgM,GACzB,CAACP,EAAOrQ,EAAI,GAAIqQ,EAAOrQ,KAG/B4V,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASA,GAGnDA,EAAMxE,WAAa,WACjB,OAAOf,EAAOtJ,SAGhB6O,EAAMsB,KAAO,WACX,OAAOi5D,KACF9/D,OAAO,CAACM,EAAIC,IACZwC,MAAMA,GACN65D,QAAQA,IAGRJ,GAAUhtE,MAAMwuE,GAAUz4D,GAAQ3V,WCnD5B,SAASqQ,KACtB,IAEI28D,EAFA58D,EAAS,CAAC,IACV+C,EAAQ,CAAC,EAAG,GAEZxO,EAAI,EAER,SAASgR,EAAM5P,GACb,OAAY,MAALA,GAAaA,GAAKA,EAAIoN,EAAMlC,EAAOb,EAAQrK,EAAG,EAAGpB,IAAMqoE,EA2BhE,OAxBAr3D,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,QAAUmQ,EAAS1J,MAAMxB,KAAKgM,GAAIvM,EAAImF,KAAKG,IAAImG,EAAOnQ,OAAQkT,EAAMlT,OAAS,GAAI0V,GAASvF,EAAOtJ,SAGpH6O,EAAMxC,MAAQ,SAASjC,GACrB,OAAOlR,UAAUC,QAAUkT,EAAQzM,MAAMxB,KAAKgM,GAAIvM,EAAImF,KAAKG,IAAImG,EAAOnQ,OAAQkT,EAAMlT,OAAS,GAAI0V,GAASxC,EAAMrM,SAGlH6O,EAAMq6D,aAAe,SAAS1lE,GAC5B,IAAIvK,EAAIoT,EAAMrH,QAAQxB,GACtB,MAAO,CAAC8F,EAAOrQ,EAAI,GAAIqQ,EAAOrQ,KAGhC4V,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAGnDr3D,EAAMsB,KAAO,WACX,OAAO5G,KACFD,OAAOA,GACP+C,MAAMA,GACN65D,QAAQA,IAGRJ,GAAUhtE,MAAM+V,EAAO3V,WCrCzB,IAAMmwE,GAAiB,IACjBC,GAAiBD,IACjBE,GAAeD,KACfE,GAAcD,MACdE,GAAeD,OACfE,GAAgBF,OAChBG,GAAeH,QCNxB95C,GAAK,IAAIrD,KACTjC,GAAK,IAAIiC,KAEE,SAASu9C,GAAYC,EAAQC,EAASroE,EAAOsoE,GAE1D,SAASx7C,EAASpB,GAChB,OAAO08C,EAAO18C,EAA4B,IAArBj0B,UAAUC,OAAe,IAAIkzB,KAAO,IAAIA,MAAMc,IAAQA,EA8D7E,OA3DAoB,EAAS/lB,MAAQ,SAAS2kB,GACxB,OAAO08C,EAAO18C,EAAO,IAAId,MAAMc,IAAQA,GAGzCoB,EAASrlB,KAAO,SAASikB,GACvB,OAAO08C,EAAO18C,EAAO,IAAId,KAAKc,EAAO,IAAK28C,EAAQ38C,EAAM,GAAI08C,EAAO18C,GAAOA,GAG5EoB,EAASlmB,MAAQ,SAAS8kB,GACxB,IAAIse,EAAKld,EAASpB,GACdsuC,EAAKltC,EAASrlB,KAAKikB,GACvB,OAAOA,EAAOse,EAAKgwB,EAAKtuC,EAAOse,EAAKgwB,GAGtCltC,EAASzf,OAAS,SAASqe,EAAMtsB,GAC/B,OAAOipE,EAAQ38C,EAAO,IAAId,MAAMc,GAAe,MAARtsB,EAAe,EAAImC,KAAKwF,MAAM3H,IAAQssB,GAG/EoB,EAASliB,MAAQ,SAAStE,EAAOC,EAAMnH,GACrC,IAAgBoL,EAAZI,EAAQ,GAGZ,GAFAtE,EAAQwmB,EAASrlB,KAAKnB,GACtBlH,EAAe,MAARA,EAAe,EAAImC,KAAKwF,MAAM3H,KAC/BkH,EAAQC,MAAWnH,EAAO,GAAI,OAAOwL,EAC3C,GAAGA,EAAMxT,KAAKoT,EAAW,IAAIogB,MAAMtkB,IAAS+hE,EAAQ/hE,EAAOlH,GAAOgpE,EAAO9hE,SAClEkE,EAAWlE,GAASA,EAAQC,GACnC,OAAOqE,GAGTkiB,EAAS91B,OAAS,SAASyH,GACzB,OAAO0pE,IAAY,SAASz8C,GAC1B,GAAIA,GAAQA,EAAM,KAAO08C,EAAO18C,IAAQjtB,EAAKitB,IAAOA,EAAKb,QAAQa,EAAO,MACvE,SAASA,EAAMtsB,GAChB,GAAIssB,GAAQA,EACV,GAAItsB,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOipE,EAAQ38C,GAAO,IAAKjtB,EAAKitB,UAC3B,OAAStsB,GAAQ,GACtB,KAAOipE,EAAQ38C,EAAM,IAAMjtB,EAAKitB,UAMpC1rB,IACF8sB,EAAS9sB,MAAQ,SAASsG,EAAOsjB,GAG/B,OAFAqE,GAAGpD,SAASvkB,GAAQqiB,GAAGkC,SAASjB,GAChCw+C,EAAOn6C,IAAKm6C,EAAOz/C,IACZpnB,KAAKwF,MAAM/G,EAAMiuB,GAAItF,MAG9BmE,EAAS5gB,MAAQ,SAAS9M,GAExB,OADAA,EAAOmC,KAAKwF,MAAM3H,GACVsH,SAAStH,IAAWA,EAAO,EAC3BA,EAAO,EACT0tB,EAAS91B,OAAOsxE,EACZ,SAAS1qE,GAAK,OAAO0qE,EAAM1qE,GAAKwB,IAAS,GACzC,SAASxB,GAAK,OAAOkvB,EAAS9sB,MAAM,EAAGpC,GAAKwB,IAAS,IAH3C0tB,EADoB,OAQrCA,EClET,IAAIy7C,GAAcz7C,IAAS,eAExB,SAASpB,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,MACpB,SAASkH,EAAOsjB,GACjB,OAAOA,EAAMtjB,KAIfiiE,GAAYr8D,MAAQ,SAASpD,GAE3B,OADAA,EAAIvH,KAAKwF,MAAM+B,GACVpC,SAASoC,IAAQA,EAAI,EACpBA,EAAI,EACHgkB,IAAS,SAASpB,GACvBA,EAAKb,QAAQtpB,KAAKwF,MAAM2kB,EAAO5iB,GAAKA,MACnC,SAAS4iB,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAO0J,MAC3B,SAASxC,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASwC,KANJy/D,GADgB,MAWxBA,UACJ90B,GAAe80B,GAAY39D,MCtBlC49D,GAAS17C,IAAS,SAASpB,GAC7BA,EAAKb,QAAQa,EAAOA,EAAK+8C,sBACxB,SAAS/8C,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAOwoE,OAC3B,SAASthE,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASshE,MACtB,SAASl8C,GACV,OAAOA,EAAK8nB,mBAGCg1B,MACJj1B,GAAUi1B,GAAO59D,MCXxB89D,GAAS57C,IAAS,SAASpB,GAC7BA,EAAKb,QAAQa,EAAOA,EAAK+8C,kBAAoB/8C,EAAKi9C,aAAef,OAChE,SAASl8C,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAOyoE,OAC3B,SAASvhE,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASuhE,MACtB,SAASn8C,GACV,OAAOA,EAAKk9C,gBAGCF,MACJr1B,GAAUq1B,GAAO99D,MCXxBi+D,GAAO/7C,IAAS,SAASpB,GAC3BA,EAAKb,QAAQa,EAAOA,EAAK+8C,kBAAoB/8C,EAAKi9C,aAAef,GAAiBl8C,EAAKk9C,aAAef,OACrG,SAASn8C,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAO0oE,OAC3B,SAASxhE,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASwhE,MACtB,SAASp8C,GACV,OAAOA,EAAKwqB,cAGC2yB,MACJ11B,GAAQ01B,GAAKj+D,MCXpBk+D,GAAMh8C,IACR,SAAApB,GAAI,OAAIA,EAAKq9C,SAAS,EAAG,EAAG,EAAG,MAC/B,SAACr9C,EAAMtsB,GAAP,OAAgBssB,EAAKs9C,QAAQt9C,EAAKu9C,UAAY7pE,MAC9C,SAACkH,EAAOsjB,GAAR,OAAiBA,EAAMtjB,GAASsjB,EAAIs/C,oBAAsB5iE,EAAM4iE,qBAAuBrB,IAAkBE,MACzG,SAAAr8C,GAAI,OAAIA,EAAKu9C,UAAY,KAGZH,MACJK,GAAOL,GAAIl+D,MCRtB,SAASw+D,GAAQ5xE,GACf,OAAOs1B,IAAS,SAASpB,GACvBA,EAAKs9C,QAAQt9C,EAAKu9C,WAAav9C,EAAK29C,SAAW,EAAI7xE,GAAK,GACxDk0B,EAAKq9C,SAAS,EAAG,EAAG,EAAG,MACtB,SAASr9C,EAAMtsB,GAChBssB,EAAKs9C,QAAQt9C,EAAKu9C,UAAmB,EAAP7pE,MAC7B,SAASkH,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASsjB,EAAIs/C,oBAAsB5iE,EAAM4iE,qBAAuBrB,IAAkBG,MAI7F,IAAIsB,GAASF,GAAQ,GACjBG,GAASH,GAAQ,GACjBI,GAAUJ,GAAQ,GAClBK,GAAYL,GAAQ,GACpBM,GAAWN,GAAQ,GACnBO,GAASP,GAAQ,GACjBQ,GAAWR,GAAQ,GAEnBS,GAAUP,GAAO1+D,MACjBk/D,GAAUP,GAAO3+D,MACjBm/D,GAAWP,GAAQ5+D,MACnBo/D,GAAaP,GAAU7+D,MACvBq/D,GAAYP,GAAS9+D,MACrBs/D,GAAUP,GAAO/+D,MACjBu/D,GAAYP,GAASh/D,MC1B5Bw/D,GAAQt9C,IAAS,SAASpB,GAC5BA,EAAKs9C,QAAQ,GACbt9C,EAAKq9C,SAAS,EAAG,EAAG,EAAG,MACtB,SAASr9C,EAAMtsB,GAChBssB,EAAK2+C,SAAS3+C,EAAK4+C,WAAalrE,MAC/B,SAASkH,EAAOsjB,GACjB,OAAOA,EAAI0gD,WAAahkE,EAAMgkE,WAAyD,IAA3C1gD,EAAI2gD,cAAgBjkE,EAAMikE,kBACrE,SAAS7+C,GACV,OAAOA,EAAK4+C,cAGCF,MACJI,GAASJ,GAAMx/D,MCZtBsoC,GAAOpmB,IAAS,SAASpB,GAC3BA,EAAK2+C,SAAS,EAAG,GACjB3+C,EAAKq9C,SAAS,EAAG,EAAG,EAAG,MACtB,SAASr9C,EAAMtsB,GAChBssB,EAAK++C,YAAY/+C,EAAK6+C,cAAgBnrE,MACrC,SAASkH,EAAOsjB,GACjB,OAAOA,EAAI2gD,cAAgBjkE,EAAMikE,iBAChC,SAAS7+C,GACV,OAAOA,EAAK6+C,iBAIdr3B,GAAKhnC,MAAQ,SAASpD,GACpB,OAAQpC,SAASoC,EAAIvH,KAAKwF,MAAM+B,KAASA,EAAI,EAAYgkB,IAAS,SAASpB,GACzEA,EAAK++C,YAAYlpE,KAAKwF,MAAM2kB,EAAK6+C,cAAgBzhE,GAAKA,GACtD4iB,EAAK2+C,SAAS,EAAG,GACjB3+C,EAAKq9C,SAAS,EAAG,EAAG,EAAG,MACtB,SAASr9C,EAAMtsB,GAChBssB,EAAK++C,YAAY/+C,EAAK6+C,cAAgBnrE,EAAO0J,MALG,MASrCoqC,UACJw3B,GAAQx3B,GAAKtoC,MCtBpB+/D,GAAY79C,IAAS,SAASpB,GAChCA,EAAKk/C,cAAc,EAAG,MACrB,SAASl/C,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAOyoE,OAC3B,SAASvhE,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASuhE,MACtB,SAASn8C,GACV,OAAOA,EAAK4nB,mBAGCq3B,MACJE,GAAaF,GAAU//D,MCX9BkgE,GAAUh+C,IAAS,SAASpB,GAC9BA,EAAKq/C,cAAc,EAAG,EAAG,MACxB,SAASr/C,EAAMtsB,GAChBssB,EAAKb,SAASa,EAAOtsB,EAAO0oE,OAC3B,SAASxhE,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASwhE,MACtB,SAASp8C,GACV,OAAOA,EAAK0nB,iBAGC03B,MACJE,GAAWF,GAAQlgE,MCX1BqgE,GAASn+C,IAAS,SAASpB,GAC7BA,EAAKw/C,YAAY,EAAG,EAAG,EAAG,MACzB,SAASx/C,EAAMtsB,GAChBssB,EAAKy/C,WAAWz/C,EAAKmoB,aAAez0C,MACnC,SAASkH,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAASyhE,MACtB,SAASr8C,GACV,OAAOA,EAAKmoB,aAAe,KAGdo3B,MACJG,GAAUH,GAAOrgE,MCX5B,SAASygE,GAAW7zE,GAClB,OAAOs1B,IAAS,SAASpB,GACvBA,EAAKy/C,WAAWz/C,EAAKmoB,cAAgBnoB,EAAK4/C,YAAc,EAAI9zE,GAAK,GACjEk0B,EAAKw/C,YAAY,EAAG,EAAG,EAAG,MACzB,SAASx/C,EAAMtsB,GAChBssB,EAAKy/C,WAAWz/C,EAAKmoB,aAAsB,EAAPz0C,MACnC,SAASkH,EAAOsjB,GACjB,OAAQA,EAAMtjB,GAAS0hE,MAIpB,IAAIuD,GAAYF,GAAW,GACvBG,GAAYH,GAAW,GACvBI,GAAaJ,GAAW,GACxBK,GAAeL,GAAW,GAC1BM,GAAcN,GAAW,GACzBO,GAAYP,GAAW,GACvBQ,GAAcR,GAAW,GAEzBS,GAAaP,GAAU3gE,MACvBmhE,GAAaP,GAAU5gE,MACvBohE,GAAcP,GAAW7gE,MACzBqhE,GAAgBP,GAAa9gE,MAC7BshE,GAAeP,GAAY/gE,MAC3BuhE,GAAaP,GAAUhhE,MACvBwhE,GAAeP,GAAYjhE,MC1BlCyhE,GAAWv/C,IAAS,SAASpB,GAC/BA,EAAKy/C,WAAW,GAChBz/C,EAAKw/C,YAAY,EAAG,EAAG,EAAG,MACzB,SAASx/C,EAAMtsB,GAChBssB,EAAK4gD,YAAY5gD,EAAKkoB,cAAgBx0C,MACrC,SAASkH,EAAOsjB,GACjB,OAAOA,EAAIgqB,cAAgBttC,EAAMstC,cAAkE,IAAjDhqB,EAAI+pB,iBAAmBrtC,EAAMqtC,qBAC9E,SAASjoB,GACV,OAAOA,EAAKkoB,iBAGCy4B,MACJE,GAAYF,GAASzhE,MCZ5B4hE,GAAU1/C,IAAS,SAASpB,GAC9BA,EAAK4gD,YAAY,EAAG,GACpB5gD,EAAKw/C,YAAY,EAAG,EAAG,EAAG,MACzB,SAASx/C,EAAMtsB,GAChBssB,EAAK+gD,eAAe/gD,EAAKioB,iBAAmBv0C,MAC3C,SAASkH,EAAOsjB,GACjB,OAAOA,EAAI+pB,iBAAmBrtC,EAAMqtC,oBACnC,SAASjoB,GACV,OAAOA,EAAKioB,oBAId64B,GAAQtgE,MAAQ,SAASpD,GACvB,OAAQpC,SAASoC,EAAIvH,KAAKwF,MAAM+B,KAASA,EAAI,EAAYgkB,IAAS,SAASpB,GACzEA,EAAK+gD,eAAelrE,KAAKwF,MAAM2kB,EAAKioB,iBAAmB7qC,GAAKA,GAC5D4iB,EAAK4gD,YAAY,EAAG,GACpB5gD,EAAKw/C,YAAY,EAAG,EAAG,EAAG,MACzB,SAASx/C,EAAMtsB,GAChBssB,EAAK+gD,eAAe/gD,EAAKioB,iBAAmBv0C,EAAO0J,MALH,MASrC0jE,UACJE,GAAWF,GAAQ5hE,MCR9B,SAAS+hE,GAAOz5B,EAAMk3B,EAAOwC,EAAM9D,EAAKD,EAAMH,GAE5C,IAAMmE,EAAgB,CACpB,CAACrE,GAAS,EAAQZ,IAClB,CAACY,GAAS,EAAI,KACd,CAACA,GAAQ,GAAI,MACb,CAACA,GAAQ,GAAI,KACb,CAACE,EAAS,EAAQb,IAClB,CAACa,EAAS,EAAI,KACd,CAACA,EAAQ,GAAI,KACb,CAACA,EAAQ,GAAI,MACb,CAAGG,EAAO,EAAQf,IAClB,CAAGe,EAAO,EAAI,OACd,CAAGA,EAAO,EAAI,OACd,CAAGA,EAAM,GAAI,OACb,CAAIC,EAAM,EAAQf,IAClB,CAAIe,EAAM,EAAI,QACd,CAAG8D,EAAO,EAAQ5E,IAClB,CAAEoC,EAAQ,EAAQnC,IAClB,CAAEmC,EAAQ,EAAI,QACd,CAAGl3B,EAAO,EAAQg1B,KAWpB,SAAS4E,EAAaxmE,EAAOC,EAAMvG,GACjC,IAAMzI,EAASgK,KAAKS,IAAIuE,EAAOD,GAAStG,EAClCxI,EAAI0F,GAAS,gCAAqBY,MAAM+uE,EAAet1E,GAC7D,GAAIC,IAAMq1E,EAAcn1E,OAAQ,OAAOw7C,EAAKhnC,MAAM9E,GAASd,EAAQ4hE,GAAc3hE,EAAO2hE,GAAcloE,IACtG,GAAU,IAANxI,EAAS,OAAO+wE,GAAYr8D,MAAM3K,KAAKI,IAAIyF,GAASd,EAAOC,EAAMvG,GAAQ,IAC7E,QAAkB6sE,EAAct1E,EAASs1E,EAAcr1E,EAAI,GAAG,GAAKq1E,EAAcr1E,GAAG,GAAKD,EAASC,EAAI,EAAIA,GAA1G,GAAO4R,EAAP,KAAUhK,EAAV,KACA,OAAOgK,EAAE8C,MAAM9M,GAGjB,MAAO,CAjBP,SAAekH,EAAOC,EAAMvG,GAC1B,IAAMwG,EAAUD,EAAOD,EACvB,GAAIE,EAAJ,OAA6B,CAACD,EAAMD,GAAtBA,EAAd,KAAqBC,EAArB,KACA,IAAMumB,EAAW9sB,GAAgC,oBAAhBA,EAAM4K,MAAuB5K,EAAQ8sE,EAAaxmE,EAAOC,EAAMvG,GAC1FqG,EAAQymB,EAAWA,EAASliB,MAAMtE,GAAQC,EAAO,GAAK,GAC5D,OAAOC,EAAUH,EAAMG,UAAYH,GAYtBymE,GAGjB,SAAoCH,GAAOH,GAASH,GAAUU,GAAS9B,GAAQH,GAASH,IAAxF,GAAOqC,GAAP,MAAiBC,GAAjB,MACA,KAAsCN,GAAOz5B,GAAMk3B,GAAOwC,GAAM9D,GAAKD,GAAMH,IAA3E,GAAOwE,GAAP,MAAkBC,GAAlB,MChDA,SAASC,GAAUxvE,GACjB,GAAI,GAAKA,EAAEmE,GAAKnE,EAAEmE,EAAI,IAAK,CACzB,IAAI2pB,EAAO,IAAId,MAAM,EAAGhtB,EAAE2K,EAAG3K,EAAEA,EAAGA,EAAEyvE,EAAGzvE,EAAEw4D,EAAGx4D,EAAEu7B,EAAGv7B,EAAE0vE,GAEnD,OADA5hD,EAAK++C,YAAY7sE,EAAEmE,GACZ2pB,EAET,OAAO,IAAId,KAAKhtB,EAAEmE,EAAGnE,EAAE2K,EAAG3K,EAAEA,EAAGA,EAAEyvE,EAAGzvE,EAAEw4D,EAAGx4D,EAAEu7B,EAAGv7B,EAAE0vE,GAGlD,SAASC,GAAQ3vE,GACf,GAAI,GAAKA,EAAEmE,GAAKnE,EAAEmE,EAAI,IAAK,CACzB,IAAI2pB,EAAO,IAAId,KAAKA,KAAK4iD,KAAK,EAAG5vE,EAAE2K,EAAG3K,EAAEA,EAAGA,EAAEyvE,EAAGzvE,EAAEw4D,EAAGx4D,EAAEu7B,EAAGv7B,EAAE0vE,IAE5D,OADA5hD,EAAK+gD,eAAe7uE,EAAEmE,GACf2pB,EAET,OAAO,IAAId,KAAKA,KAAK4iD,IAAI5vE,EAAEmE,EAAGnE,EAAE2K,EAAG3K,EAAEA,EAAGA,EAAEyvE,EAAGzvE,EAAEw4D,EAAGx4D,EAAEu7B,EAAGv7B,EAAE0vE,IAG3D,SAASG,GAAQ1rE,EAAGwG,EAAG3K,GACrB,MAAO,CAACmE,EAAGA,EAAGwG,EAAGA,EAAG3K,EAAGA,EAAGyvE,EAAG,EAAGjX,EAAG,EAAGj9B,EAAG,EAAGm0C,EAAG,GAGlC,SAAS3sB,GAAahC,GACnC,IAAI+uB,EAAkB/uB,EAAOgvB,SACzBC,EAAcjvB,EAAOjzB,KACrBmiD,EAAclvB,EAAO9wB,KACrBigD,EAAiBnvB,EAAOovB,QACxBC,EAAkBrvB,EAAOwqB,KACzB8E,EAAuBtvB,EAAOuvB,UAC9BC,EAAgBxvB,EAAO6rB,OACvB4D,EAAqBzvB,EAAO0vB,YAE5BC,EAAWC,GAAST,GACpBU,EAAeC,GAAaX,GAC5BY,EAAYH,GAASP,GACrBW,EAAgBF,GAAaT,GAC7BY,EAAiBL,GAASN,GAC1BY,EAAqBJ,GAAaR,GAClCa,EAAUP,GAASJ,GACnBY,EAAcN,GAAaN,GAC3Ba,EAAeT,GAASH,GACxBa,EAAmBR,GAAaL,GAEhCc,EAAU,CACZ,EAkQF,SAA4BtxE,GAC1B,OAAOqwE,EAAqBrwE,EAAEyrE,WAlQ9B,EAqQF,SAAuBzrE,GACrB,OAAOowE,EAAgBpwE,EAAEyrE,WArQzB,EAwQF,SAA0BzrE,GACxB,OAAOwwE,EAAmBxwE,EAAE0sE,aAxQ5B,EA2QF,SAAqB1sE,GACnB,OAAOuwE,EAAcvwE,EAAE0sE,aA3QvB,EAAK,KACL,EAAK6E,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAkQF,SAAsBhyE,GACpB,OAAOkwE,IAAiBlwE,EAAEs4C,YAAc,MAlQxC,EAqQF,SAAuBt4C,GACrB,OAAO,KAAOA,EAAE0sE,WAAa,IArQ7B,EAAKuF,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,IAAKC,IAGHC,EAAa,CACf,EAuPF,SAA+B7yE,GAC7B,OAAOqwE,EAAqBrwE,EAAE0tE,cAvP9B,EA0PF,SAA0B1tE,GACxB,OAAOowE,EAAgBpwE,EAAE0tE,cA1PzB,EA6PF,SAA6B1tE,GAC3B,OAAOwwE,EAAmBxwE,EAAEg2C,gBA7P5B,EAgQF,SAAwBh2C,GACtB,OAAOuwE,EAAcvwE,EAAEg2C,gBAhQvB,EAAK,KACL,EAAK88B,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAuPF,SAAyBvzE,GACvB,OAAOkwE,IAAiBlwE,EAAEw1C,eAAiB,MAvP3C,EA0PF,SAA0Bx1C,GACxB,OAAO,KAAOA,EAAEg2C,cAAgB,IA1PhC,EAAKi8B,GACL,EAAKC,GACL,EAAKsB,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,IAAKpB,IAGHqB,EAAS,CACX,EA4JF,SAA2Bj0E,EAAGyX,EAAQ7d,GACpC,IAAI4E,EAAIwyE,EAAepnD,KAAKnS,EAAO9W,MAAM/G,IACzC,OAAO4E,GAAKwB,EAAE43B,EAAIq5C,EAAmBjsE,IAAIxG,EAAE,GAAGmrB,eAAgB/vB,EAAI4E,EAAE,GAAG1E,SAAW,GA7JlF,EAgKF,SAAsBkG,EAAGyX,EAAQ7d,GAC/B,IAAI4E,EAAIsyE,EAAUlnD,KAAKnS,EAAO9W,MAAM/G,IACpC,OAAO4E,GAAKwB,EAAE43B,EAAIm5C,EAAc/rE,IAAIxG,EAAE,GAAGmrB,eAAgB/vB,EAAI4E,EAAE,GAAG1E,SAAW,GAjK7E,EAoKF,SAAyBkG,EAAGyX,EAAQ7d,GAClC,IAAI4E,EAAI4yE,EAAaxnD,KAAKnS,EAAO9W,MAAM/G,IACvC,OAAO4E,GAAKwB,EAAE2K,EAAI0mE,EAAiBrsE,IAAIxG,EAAE,GAAGmrB,eAAgB/vB,EAAI4E,EAAE,GAAG1E,SAAW,GArKhF,EAwKF,SAAoBkG,EAAGyX,EAAQ7d,GAC7B,IAAI4E,EAAI0yE,EAAQtnD,KAAKnS,EAAO9W,MAAM/G,IAClC,OAAO4E,GAAKwB,EAAE2K,EAAIwmE,EAAYnsE,IAAIxG,EAAE,GAAGmrB,eAAgB/vB,EAAI4E,EAAE,GAAG1E,SAAW,GAzK3E,EA4KF,SAA6BkG,EAAGyX,EAAQ7d,GACtC,OAAOs6E,EAAel0E,EAAG8vE,EAAiBr4D,EAAQ7d,IA5KlD,EAAKu6E,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKA,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAuIF,SAAqB30E,EAAGyX,EAAQ7d,GAC9B,IAAI4E,EAAIkyE,EAAS9mD,KAAKnS,EAAO9W,MAAM/G,IACnC,OAAO4E,GAAKwB,EAAE3D,EAAIu0E,EAAa5rE,IAAIxG,EAAE,GAAGmrB,eAAgB/vB,EAAI4E,EAAE,GAAG1E,SAAW,GAxI5E,EAAK86E,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EAAKC,GACL,EA0JF,SAAyBp1E,EAAGyX,EAAQ7d,GAClC,OAAOs6E,EAAel0E,EAAGgwE,EAAav4D,EAAQ7d,IA1J9C,EA6JF,SAAyBoG,EAAGyX,EAAQ7d,GAClC,OAAOs6E,EAAel0E,EAAGiwE,EAAax4D,EAAQ7d,IA7J9C,EAAKy6E,GACL,EAAKC,GACL,EAAKe,GACL,IAAKC,IAWP,SAASlzB,EAAU5B,EAAW8wB,GAC5B,OAAO,SAASxjD,GACd,IAIIlmB,EACAwtC,EACA3kC,EANAgH,EAAS,GACT7d,GAAK,EACLmJ,EAAI,EACJvE,EAAIgiD,EAAU1mD,OAOlB,IAFMg0B,aAAgBd,OAAOc,EAAO,IAAId,MAAMc,MAErCl0B,EAAI4E,GACqB,KAA5BgiD,EAAUnK,WAAWz8C,KACvB6d,EAAOje,KAAKgnD,EAAU7/C,MAAMoC,EAAGnJ,IACgB,OAA1Cw7C,EAAMmgC,GAAK3tE,EAAI44C,EAAUg1B,SAAS57E,KAAcgO,EAAI44C,EAAUg1B,SAAS57E,GACvEw7C,EAAY,MAANxtC,EAAY,IAAM,KACzB6I,EAAS6gE,EAAQ1pE,MAAIA,EAAI6I,EAAOqd,EAAMsnB,IAC1C39B,EAAOje,KAAKoO,GACZ7E,EAAInJ,EAAI,GAKZ,OADA6d,EAAOje,KAAKgnD,EAAU7/C,MAAMoC,EAAGnJ,IACxB6d,EAAOhZ,KAAK,KAIvB,SAASg3E,EAASj1B,EAAWk1B,GAC3B,OAAO,SAASj+D,GACd,IAEIu3D,EAAM9D,EAFNlrE,EAAI6vE,GAAQ,UAAM7xE,EAAW,GAGjC,GAFQk2E,EAAel0E,EAAGwgD,EAAW/oC,GAAU,GAAI,IAE1CA,EAAO3d,OAAQ,OAAO,KAG/B,GAAI,MAAOkG,EAAG,OAAO,IAAIgtB,KAAKhtB,EAAEonC,GAChC,GAAI,MAAOpnC,EAAG,OAAO,IAAIgtB,KAAW,IAANhtB,EAAEf,GAAY,MAAOe,EAAIA,EAAE0vE,EAAI,IAY7D,GATIgG,KAAO,MAAO11E,KAAIA,EAAE01E,EAAI,GAGxB,MAAO11E,IAAGA,EAAEyvE,EAAIzvE,EAAEyvE,EAAI,GAAW,GAANzvE,EAAE3D,QAGrB2B,IAARgC,EAAE2K,IAAiB3K,EAAE2K,EAAI,MAAO3K,EAAIA,EAAE2tB,EAAI,GAG1C,MAAO3tB,EAAG,CACZ,GAAIA,EAAEkN,EAAI,GAAKlN,EAAEkN,EAAI,GAAI,OAAO,KAC1B,MAAOlN,IAAIA,EAAE43B,EAAI,GACnB,MAAO53B,GAC2BkrE,GAApC8D,EAAOW,GAAQE,GAAQ7vE,EAAEmE,EAAG,EAAG,KAAgBupE,YAC/CsB,EAAO9D,EAAM,GAAa,IAARA,EAAY0C,GAAU/jE,KAAKmlE,GAAQpB,GAAUoB,GAC/DA,EAAO3B,GAAO59D,OAAOu/D,EAAkB,GAAXhvE,EAAEkN,EAAI,IAClClN,EAAEmE,EAAI6qE,EAAKj5B,iBACX/1C,EAAE2K,EAAIqkE,EAAKh5B,cACXh2C,EAAEA,EAAIgvE,EAAK/4B,cAAgBj2C,EAAE43B,EAAI,GAAK,IAEAszC,GAAtC8D,EAAOQ,GAAUK,GAAQ7vE,EAAEmE,EAAG,EAAG,KAAgBsnE,SACjDuD,EAAO9D,EAAM,GAAa,IAARA,EAAYyK,GAAW9rE,KAAKmlE,GAAQ2G,GAAW3G,GACjEA,EAAO4G,GAAQnmE,OAAOu/D,EAAkB,GAAXhvE,EAAEkN,EAAI,IACnClN,EAAEmE,EAAI6qE,EAAKrC,cACX3sE,EAAE2K,EAAIqkE,EAAKtC,WACX1sE,EAAEA,EAAIgvE,EAAK3D,WAAarrE,EAAE43B,EAAI,GAAK,QAE5B,MAAO53B,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE43B,EAAI,MAAO53B,EAAIA,EAAEioC,EAAI,EAAI,MAAOjoC,EAAI,EAAI,GAC3DkrE,EAAM,MAAOlrE,EAAI2vE,GAAQE,GAAQ7vE,EAAEmE,EAAG,EAAG,IAAIupE,YAAc8B,GAAUK,GAAQ7vE,EAAEmE,EAAG,EAAG,IAAIsnE,SACzFzrE,EAAE2K,EAAI,EACN3K,EAAEA,EAAI,MAAOA,GAAKA,EAAE43B,EAAI,GAAK,EAAU,EAAN53B,EAAEo7B,GAAS8vC,EAAM,GAAK,EAAIlrE,EAAE43B,EAAU,EAAN53B,EAAE61E,GAAS3K,EAAM,GAAK,GAKzF,MAAI,MAAOlrE,GACTA,EAAEyvE,GAAKzvE,EAAE01E,EAAI,IAAM,EACnB11E,EAAEw4D,GAAKx4D,EAAE01E,EAAI,IACN/F,GAAQ3vE,IAIVwvE,GAAUxvE,IAIrB,SAASk0E,EAAel0E,EAAGwgD,EAAW/oC,EAAQ1U,GAO5C,IANA,IAGI6E,EACAyqB,EAJAz4B,EAAI,EACJ4E,EAAIgiD,EAAU1mD,OACd6Q,EAAI8M,EAAO3d,OAIRF,EAAI4E,GAAG,CACZ,GAAIuE,GAAK4H,EAAG,OAAQ,EAEpB,GAAU,MADV/C,EAAI44C,EAAUnK,WAAWz8C,OAIvB,GAFAgO,EAAI44C,EAAUg1B,OAAO57E,OACrBy4B,EAAQ4hD,EAAOrsE,KAAK2tE,GAAO/0B,EAAUg1B,OAAO57E,KAAOgO,MACnC7E,EAAIsvB,EAAMryB,EAAGyX,EAAQ1U,IAAM,EAAI,OAAQ,OAClD,GAAI6E,GAAK6P,EAAO4+B,WAAWtzC,KAChC,OAAQ,EAIZ,OAAOA,EAwFT,OAzMAuuE,EAAQ1xE,EAAIwiD,EAAU4tB,EAAasB,GACnCA,EAAQn6C,EAAIirB,EAAU6tB,EAAaqB,GACnCA,EAAQ1pE,EAAIw6C,EAAU0tB,EAAiBwB,GACvCuB,EAAWjzE,EAAIwiD,EAAU4tB,EAAa6C,GACtCA,EAAW17C,EAAIirB,EAAU6tB,EAAa4C,GACtCA,EAAWjrE,EAAIw6C,EAAU0tB,EAAiB+C,GAoMnC,CACLpiE,OAAQ,SAAS+vC,GACf,IAAIjhD,EAAI6iD,EAAU5B,GAAa,GAAI8wB,GAEnC,OADA/xE,EAAEmB,SAAW,WAAa,OAAO8/C,GAC1BjhD,GAET8yB,MAAO,SAASmuB,GACd,IAAInkD,EAAIo5E,EAASj1B,GAAa,IAAI,GAElC,OADAnkD,EAAEqE,SAAW,WAAa,OAAO8/C,GAC1BnkD,GAETy5E,UAAW,SAASt1B,GAClB,IAAIjhD,EAAI6iD,EAAU5B,GAAa,GAAIqyB,GAEnC,OADAtzE,EAAEmB,SAAW,WAAa,OAAO8/C,GAC1BjhD,GAETw2E,SAAU,SAASv1B,GACjB,IAAInkD,EAAIo5E,EAASj1B,GAAa,IAAI,GAElC,OADAnkD,EAAEqE,SAAW,WAAa,OAAO8/C,GAC1BnkD,IAKb,ICjYI0kD,GACOi1B,GACAC,GACAH,GACAC,GD6XPR,GAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,KAChCW,GAAW,UACXC,GAAY,KACZC,GAAY,sBAEhB,SAAShhC,GAAIp5C,EAAOgH,EAAM21B,GACxB,IAAImX,EAAO9zC,EAAQ,EAAI,IAAM,GACzByb,GAAUq4B,GAAQ9zC,EAAQA,GAAS,GACnClC,EAAS2d,EAAO3d,OACpB,OAAOg2C,GAAQh2C,EAAS6+B,EAAQ,IAAIp4B,MAAMo4B,EAAQ7+B,EAAS,GAAG2E,KAAKuE,GAAQyU,EAASA,GAGtF,SAAS4+D,GAAQp3E,GACf,OAAOA,EAAE03C,QAAQy/B,GAAW,QAG9B,SAASzF,GAAS54D,GAChB,OAAO,IAAI0H,OAAO,OAAS1H,EAAMxZ,IAAI83E,IAAS53E,KAAK,KAAO,IAAK,KAGjE,SAASoyE,GAAa94D,GACpB,OAAO,IAAItS,IAAIsS,EAAMxZ,KAAI,SAACqC,EAAMhH,GAAP,MAAa,CAACgH,EAAK+oB,cAAe/vB,OAG7D,SAASu7E,GAAyBn1E,EAAGyX,EAAQ7d,GAC3C,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE43B,GAAKp5B,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASk7E,GAAyBh1E,EAAGyX,EAAQ7d,GAC3C,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEioC,GAAKzpC,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASm7E,GAAsBj1E,EAAGyX,EAAQ7d,GACxC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE61E,GAAKr3E,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASo7E,GAAmBl1E,EAAGyX,EAAQ7d,GACrC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEkN,GAAK1O,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASs7E,GAAsBp1E,EAAGyX,EAAQ7d,GACxC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEo7B,GAAK58B,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASw6E,GAAct0E,EAAGyX,EAAQ7d,GAChC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEmE,GAAK3F,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASu6E,GAAUr0E,EAAGyX,EAAQ7d,GAC5B,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEmE,GAAK3F,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAO5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG5E,SAASu7E,GAAUr1E,EAAGyX,EAAQ7d,GAC5B,IAAI4E,EAAI,+BAA+BorB,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAChE,OAAO4E,GAAKwB,EAAE01E,EAAIl3E,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQ5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG7E,SAAS86E,GAAa50E,EAAGyX,EAAQ7d,GAC/B,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE2tB,EAAW,EAAPnvB,EAAE,GAAS,EAAG5E,EAAI4E,EAAE,GAAG1E,SAAW,EAGtD,SAAS46E,GAAiB10E,EAAGyX,EAAQ7d,GACnC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE2K,EAAInM,EAAE,GAAK,EAAG5E,EAAI4E,EAAE,GAAG1E,SAAW,EAGlD,SAASq6E,GAAgBn0E,EAAGyX,EAAQ7d,GAClC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEA,GAAKxB,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAAS06E,GAAex0E,EAAGyX,EAAQ7d,GACjC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE2K,EAAI,EAAG3K,EAAEA,GAAKxB,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAGxD,SAASy6E,GAAYv0E,EAAGyX,EAAQ7d,GAC9B,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEyvE,GAAKjxE,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAAS66E,GAAa30E,EAAGyX,EAAQ7d,GAC/B,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEw4D,GAAKh6D,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASi7E,GAAa/0E,EAAGyX,EAAQ7d,GAC/B,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAEu7B,GAAK/8B,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAAS26E,GAAkBz0E,EAAGyX,EAAQ7d,GACpC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE0vE,GAAKlxE,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASs6E,GAAkBp0E,EAAGyX,EAAQ7d,GACpC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC1C,OAAO4E,GAAKwB,EAAE0vE,EAAI/rE,KAAKwF,MAAM3K,EAAE,GAAK,KAAO5E,EAAI4E,EAAE,GAAG1E,SAAW,EAGjE,SAASw7E,GAAoBt1E,EAAGyX,EAAQ7d,GACtC,IAAI4E,EAAI23E,GAAUvsD,KAAKnS,EAAO9W,MAAM/G,EAAGA,EAAI,IAC3C,OAAO4E,EAAI5E,EAAI4E,EAAE,GAAG1E,QAAU,EAGhC,SAAS+6E,GAAmB70E,EAAGyX,EAAQ7d,GACrC,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,IACnC,OAAO4E,GAAKwB,EAAEonC,GAAK5oC,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASg7E,GAA0B90E,EAAGyX,EAAQ7d,GAC5C,IAAI4E,EAAI03E,GAAStsD,KAAKnS,EAAO9W,MAAM/G,IACnC,OAAO4E,GAAKwB,EAAEf,GAAKT,EAAE,GAAI5E,EAAI4E,EAAE,GAAG1E,SAAW,EAG/C,SAASy3E,GAAiBvxE,EAAG3D,GAC3B,OAAO+4C,GAAIp1C,EAAEqrE,UAAWhvE,EAAG,GAG7B,SAASs1E,GAAa3xE,EAAG3D,GACvB,OAAO+4C,GAAIp1C,EAAEs4C,WAAYj8C,EAAG,GAG9B,SAASu1E,GAAa5xE,EAAG3D,GACvB,OAAO+4C,GAAIp1C,EAAEs4C,WAAa,IAAM,GAAIj8C,EAAG,GAGzC,SAASw1E,GAAgB7xE,EAAG3D,GAC1B,OAAO+4C,GAAI,EAAIwgC,GAAQxzE,MAAMk0E,GAASt2E,GAAIA,GAAI3D,EAAG,GAGnD,SAASy1E,GAAmB9xE,EAAG3D,GAC7B,OAAO+4C,GAAIp1C,EAAE6qE,kBAAmBxuE,EAAG,GAGrC,SAASm1E,GAAmBxxE,EAAG3D,GAC7B,OAAOy1E,GAAmB9xE,EAAG3D,GAAK,MAGpC,SAAS01E,GAAkB/xE,EAAG3D,GAC5B,OAAO+4C,GAAIp1C,EAAE0sE,WAAa,EAAGrwE,EAAG,GAGlC,SAAS21E,GAAchyE,EAAG3D,GACxB,OAAO+4C,GAAIp1C,EAAEgrE,aAAc3uE,EAAG,GAGhC,SAAS81E,GAAcnyE,EAAG3D,GACxB,OAAO+4C,GAAIp1C,EAAE+qE,aAAc1uE,EAAG,GAGhC,SAAS+1E,GAA0BpyE,GACjC,IAAIkrE,EAAMlrE,EAAEyrE,SACZ,OAAe,IAARP,EAAY,EAAIA,EAGzB,SAASmH,GAAuBryE,EAAG3D,GACjC,OAAO+4C,GAAImhC,GAAWn0E,MAAMk0E,GAASt2E,GAAK,EAAGA,GAAI3D,EAAG,GAGtD,SAASm6E,GAAKx2E,GACZ,IAAIkrE,EAAMlrE,EAAEyrE,SACZ,OAAQP,GAAO,GAAa,IAARA,EAAauL,GAAaz2E,GAAKy2E,GAAa5sE,KAAK7J,GAGvE,SAASsyE,GAAoBtyE,EAAG3D,GAE9B,OADA2D,EAAIw2E,GAAKx2E,GACFo1C,GAAIqhC,GAAar0E,MAAMk0E,GAASt2E,GAAIA,IAA+B,IAAzBs2E,GAASt2E,GAAGyrE,UAAiBpvE,EAAG,GAGnF,SAASk2E,GAA0BvyE,GACjC,OAAOA,EAAEyrE,SAGX,SAAS+G,GAAuBxyE,EAAG3D,GACjC,OAAO+4C,GAAIugC,GAAWvzE,MAAMk0E,GAASt2E,GAAK,EAAGA,GAAI3D,EAAG,GAGtD,SAASo2E,GAAWzyE,EAAG3D,GACrB,OAAO+4C,GAAIp1C,EAAE2sE,cAAgB,IAAKtwE,EAAG,GAGvC,SAASo1E,GAAczxE,EAAG3D,GAExB,OAAO+4C,IADPp1C,EAAIw2E,GAAKx2E,IACI2sE,cAAgB,IAAKtwE,EAAG,GAGvC,SAASq2E,GAAe1yE,EAAG3D,GACzB,OAAO+4C,GAAIp1C,EAAE2sE,cAAgB,IAAOtwE,EAAG,GAGzC,SAASq1E,GAAkB1xE,EAAG3D,GAC5B,IAAI6uE,EAAMlrE,EAAEyrE,SAEZ,OAAOr2B,IADPp1C,EAAKkrE,GAAO,GAAa,IAARA,EAAauL,GAAaz2E,GAAKy2E,GAAa5sE,KAAK7J,IACrD2sE,cAAgB,IAAOtwE,EAAG,GAGzC,SAASs2E,GAAW3yE,GAClB,IAAImL,EAAInL,EAAEsrE,oBACV,OAAQngE,EAAI,EAAI,KAAOA,IAAM,EAAG,MAC1BiqC,GAAIjqC,EAAI,GAAK,EAAG,IAAK,GACrBiqC,GAAIjqC,EAAI,GAAI,IAAK,GAGzB,SAAS2nE,GAAoB9yE,EAAG3D,GAC9B,OAAO+4C,GAAIp1C,EAAEi2C,aAAc55C,EAAG,GAGhC,SAAS62E,GAAgBlzE,EAAG3D,GAC1B,OAAO+4C,GAAIp1C,EAAEw1C,cAAen5C,EAAG,GAGjC,SAAS82E,GAAgBnzE,EAAG3D,GAC1B,OAAO+4C,GAAIp1C,EAAEw1C,cAAgB,IAAM,GAAIn5C,EAAG,GAG5C,SAAS+2E,GAAmBpzE,EAAG3D,GAC7B,OAAO+4C,GAAI,EAAIi4B,GAAOjrE,MAAMwsE,GAAQ5uE,GAAIA,GAAI3D,EAAG,GAGjD,SAASg3E,GAAsBrzE,EAAG3D,GAChC,OAAO+4C,GAAIp1C,EAAE81C,qBAAsBz5C,EAAG,GAGxC,SAAS02E,GAAsB/yE,EAAG3D,GAChC,OAAOg3E,GAAsBrzE,EAAG3D,GAAK,MAGvC,SAASi3E,GAAqBtzE,EAAG3D,GAC/B,OAAO+4C,GAAIp1C,EAAEg2C,cAAgB,EAAG35C,EAAG,GAGrC,SAASk3E,GAAiBvzE,EAAG3D,GAC3B,OAAO+4C,GAAIp1C,EAAE01C,gBAAiBr5C,EAAG,GAGnC,SAASm3E,GAAiBxzE,EAAG3D,GAC3B,OAAO+4C,GAAIp1C,EAAE41C,gBAAiBv5C,EAAG,GAGnC,SAASo3E,GAA6BzzE,GACpC,IAAI02E,EAAM12E,EAAE0tE,YACZ,OAAe,IAARgJ,EAAY,EAAIA,EAGzB,SAAShD,GAA0B1zE,EAAG3D,GACpC,OAAO+4C,GAAIu4B,GAAUvrE,MAAMwsE,GAAQ5uE,GAAK,EAAGA,GAAI3D,EAAG,GAGpD,SAASs6E,GAAQ32E,GACf,IAAIkrE,EAAMlrE,EAAE0tE,YACZ,OAAQxC,GAAO,GAAa,IAARA,EAAa6C,GAAY/tE,GAAK+tE,GAAYlkE,KAAK7J,GAGrE,SAAS2zE,GAAuB3zE,EAAG3D,GAEjC,OADA2D,EAAI22E,GAAQ32E,GACLo1C,GAAI24B,GAAY3rE,MAAMwsE,GAAQ5uE,GAAIA,IAAiC,IAA3B4uE,GAAQ5uE,GAAG0tE,aAAoBrxE,EAAG,GAGnF,SAASu3E,GAA6B5zE,GACpC,OAAOA,EAAE0tE,YAGX,SAASmG,GAA0B7zE,EAAG3D,GACpC,OAAO+4C,GAAIw4B,GAAUxrE,MAAMwsE,GAAQ5uE,GAAK,EAAGA,GAAI3D,EAAG,GAGpD,SAASy3E,GAAc9zE,EAAG3D,GACxB,OAAO+4C,GAAIp1C,EAAE+1C,iBAAmB,IAAK15C,EAAG,GAG1C,SAAS22E,GAAiBhzE,EAAG3D,GAE3B,OAAO+4C,IADPp1C,EAAI22E,GAAQ32E,IACC+1C,iBAAmB,IAAK15C,EAAG,GAG1C,SAAS03E,GAAkB/zE,EAAG3D,GAC5B,OAAO+4C,GAAIp1C,EAAE+1C,iBAAmB,IAAO15C,EAAG,GAG5C,SAAS42E,GAAqBjzE,EAAG3D,GAC/B,IAAI6uE,EAAMlrE,EAAE0tE,YAEZ,OAAOt4B,IADPp1C,EAAKkrE,GAAO,GAAa,IAARA,EAAa6C,GAAY/tE,GAAK+tE,GAAYlkE,KAAK7J,IACnD+1C,iBAAmB,IAAO15C,EAAG,GAG5C,SAAS23E,KACP,MAAO,QAGT,SAASpB,KACP,MAAO,IAGT,SAASX,GAAoBjyE,GAC3B,OAAQA,EAGV,SAASkyE,GAA2BlyE,GAClC,OAAO2D,KAAKwF,OAAOnJ,EAAI,KCpqBV,SAAS8iD,GAAc9jC,GAMpC,OALA+hC,GAASgC,GAAa/jC,GACtBg3D,GAAaj1B,GAAOtwC,OACpBwlE,GAAYl1B,GAAO1uB,MACnByjD,GAAY/0B,GAAO+0B,UACnBC,GAAWh1B,GAAOg1B,SACXh1B,GCnBT,SAASjzB,GAAKtiB,GACZ,OAAO,IAAIwhB,KAAKxhB,GAGlB,SAAS5J,GAAO4J,GACd,OAAOA,aAAawhB,MAAQxhB,GAAK,IAAIwhB,MAAMxhB,GAGtC,SAASorE,GAASnuE,EAAOymE,EAAc55B,EAAMk3B,EAAOwC,EAAM9D,EAAKD,EAAMH,EAAQF,EAAQn6D,GAC1F,IAAIjB,EAAQq4D,KACRre,EAASh6C,EAAMg6C,OACfv/C,EAASuF,EAAMvF,OAEf4sE,EAAoBpmE,EAAO,OAC3BqmE,EAAermE,EAAO,OACtBsmE,EAAetmE,EAAO,SACtBumE,EAAavmE,EAAO,SACpBwmE,EAAYxmE,EAAO,SACnBymE,EAAazmE,EAAO,SACpB0mE,EAAc1mE,EAAO,MACrBgiE,EAAahiE,EAAO,MAExB,SAASR,EAAW6d,GAClB,OAAQ88C,EAAO98C,GAAQA,EAAO+oD,EACxB/L,EAAOh9C,GAAQA,EAAOgpD,EACtB7L,EAAKn9C,GAAQA,EAAOipD,EACpB7L,EAAIp9C,GAAQA,EAAOkpD,EACnBxK,EAAM1+C,GAAQA,EAAQkhD,EAAKlhD,GAAQA,EAAOmpD,EAAYC,EACtD5hC,EAAKxnB,GAAQA,EAAOqpD,EACpB1E,GAAY3kD,GA8BpB,OA3BAte,EAAMg6C,OAAS,SAASrlD,GACtB,OAAO,IAAI6oB,KAAKw8B,EAAOrlD,KAGzBqL,EAAMvF,OAAS,SAASc,GACtB,OAAOlR,UAAUC,OAASmQ,EAAO1J,MAAMxB,KAAKgM,EAAGnJ,KAAWqI,IAAS1L,IAAIuvB,KAGzEte,EAAM/G,MAAQ,SAASymB,GACrB,IAAIlvB,EAAIiK,IACR,OAAOxB,EAAMzI,EAAE,GAAIA,EAAEA,EAAElG,OAAS,GAAgB,MAAZo1B,EAAmB,GAAKA,IAG9D1f,EAAMS,WAAa,SAAS7N,EAAOo+C,GACjC,OAAoB,MAAbA,EAAoBvwC,EAAaQ,EAAO+vC,IAGjDhxC,EAAM7F,KAAO,SAASulB,GACpB,IAAIlvB,EAAIiK,IAER,OADKilB,GAAsC,oBAAnBA,EAASliB,QAAsBkiB,EAAWggD,EAAalvE,EAAE,GAAIA,EAAEA,EAAElG,OAAS,GAAgB,MAAZo1B,EAAmB,GAAKA,IACvHA,EAAWjlB,EAAON,GAAK3J,EAAGkvB,IAAa1f,GAGhDA,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOonE,GAASnuE,EAAOymE,EAAc55B,EAAMk3B,EAAOwC,EAAM9D,EAAKD,EAAMH,EAAQF,EAAQn6D,KAG1FjB,EAGM,SAASygB,KACtB,OAAOw2C,GAAUhtE,MAAMm9E,GAAStH,GAAWC,GAAkB+G,GAAUc,GAAWC,GAAUzB,GAAS0B,GAAUC,GAAYC,GAAYxB,IAAY/rE,OAAO,CAAC,IAAI+iB,KAAK,IAAM,EAAG,GAAI,IAAIA,KAAK,IAAM,EAAG,KAAMnzB,WChE5L,SAAS49E,KACtB,OAAOhR,GAAUhtE,MAAMm9E,GAASxH,GAAUC,GAAiBT,GAASH,GAAUU,GAAS9B,GAAQH,GAASH,GAAW2K,GAAW5B,IAAW7rE,OAAO,CAAC+iB,KAAK4iD,IAAI,IAAM,EAAG,GAAI5iD,KAAK4iD,IAAI,IAAM,EAAG,KAAM/1E,WCEjM,SAASu5D,KACP,IAEI/iC,EACAtF,EACA4sD,EACApnE,EAGAs2D,EARAt8D,EAAK,EACLC,EAAK,EAKLk4D,EAAe/7D,GACf6gE,GAAQ,EAGZ,SAASh4D,EAAM5P,GACb,OAAY,MAALA,GAAa2qB,MAAM3qB,GAAKA,GAAKinE,EAAUnE,EAAqB,IAARiV,EAAY,IAAO/3E,GAAK2Q,EAAU3Q,GAAKywB,GAAMsnD,EAAKnQ,EAAQ7jE,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAGlE,IAAMA,IAerJ,SAASoN,EAAM+mB,GACb,OAAO,SAAShpB,GAAG,MACbhC,EAAIE,EACR,OAAOpP,UAAUC,QAAWiP,GAAD,IAAWgC,EAAX,OAAK9B,EAAL,KAAcy5D,EAAe3uC,EAAYhrB,EAAIE,GAAKuG,GAAS,CAACkzD,EAAa,GAAIA,EAAa,KAYzH,OA3BAlzD,EAAMvF,OAAS,SAASc,GAAG,MACzB,OAAOlR,UAAUC,QAAU,IAAWiR,EAAX,GAACR,EAAD,KAAKC,EAAL,KAAc6lB,EAAK9f,EAAUhG,GAAMA,GAAKwgB,EAAKxa,EAAU/F,GAAMA,GAAKmtE,EAAMtnD,IAAOtF,EAAK,EAAI,GAAKA,EAAKsF,GAAK7gB,GAAS,CAACjF,EAAIC,IAGlJgF,EAAMg4D,MAAQ,SAASz8D,GACrB,OAAOlR,UAAUC,QAAU0tE,IAAUz8D,EAAGyE,GAASg4D,GAGnDh4D,EAAMkzD,aAAe,SAAS33D,GAC5B,OAAOlR,UAAUC,QAAU4oE,EAAe33D,EAAGyE,GAASkzD,GAUxDlzD,EAAMxC,MAAQA,EAAM+mB,IAEpBvkB,EAAM03D,WAAal6D,EAAM46D,IAEzBp4D,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAG5C,SAASr7D,GAEd,OADA+E,EAAY/E,EAAG6kB,EAAK7kB,EAAEjB,GAAKwgB,EAAKvf,EAAEhB,GAAKmtE,EAAMtnD,IAAOtF,EAAK,EAAI,GAAKA,EAAKsF,GAChE7gB,GAIJ,SAASsB,GAAK/W,EAAQJ,GAC3B,OAAOA,EACFsQ,OAAOlQ,EAAOkQ,UACdy4D,aAAa3oE,EAAO2oE,gBACpB8E,MAAMztE,EAAOytE,SACbX,QAAQ9sE,EAAO8sE,WAGP,SAAS+Q,KACtB,IAAIpoE,EAAQy4D,GAAU7U,KAAczsD,KAMpC,OAJA6I,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOooE,OAGdlR,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASg+E,KACd,IAAIroE,EAAQi5D,GAAQrV,MAAenpD,OAAO,CAAC,EAAG,KAM9C,OAJAuF,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOqoE,MAAiB5yE,KAAKuK,EAAMvK,SAG1CyhE,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASi+E,KACd,IAAItoE,EAAQ25D,GAAU/V,MAMtB,OAJA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOsoE,MAAoBzvE,SAASmH,EAAMnH,aAGjDq+D,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASk+E,KACd,IAAIvoE,EAAQg6D,GAAOpW,MAMnB,OAJA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAOuoE,MAAiBn/B,SAASppC,EAAMopC,aAG9C8tB,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASm+E,KACd,OAAOD,GAAct+E,MAAM,KAAMI,WAAW++C,SAAS,ICrGxC,SAASq/B,KACtB,IAAIhuE,EAAS,GACTy4D,EAAe/7D,GAEnB,SAAS6I,EAAM5P,GACb,GAAS,MAALA,IAAc2qB,MAAM3qB,GAAKA,GAAI,OAAO8iE,GAAc53D,EAAOb,EAAQrK,EAAG,GAAK,IAAMqK,EAAOnQ,OAAS,IA2BrG,OAxBA0V,EAAMvF,OAAS,SAASc,GACtB,IAAKlR,UAAUC,OAAQ,OAAOmQ,EAAOtJ,QACrCsJ,EAAS,GAFgB,UAGXc,GAHW,IAGzB,gCAAS/K,EAAT,QAA0B,MAALA,GAAcuqB,MAAMvqB,GAAKA,IAAIiK,EAAOzQ,KAAKwG,IAHrC,8BAKzB,OADAiK,EAAOvC,KAAKxI,GACLsQ,GAGTA,EAAMkzD,aAAe,SAAS33D,GAC5B,OAAOlR,UAAUC,QAAU4oE,EAAe33D,EAAGyE,GAASkzD,GAGxDlzD,EAAMxC,MAAQ,WACZ,OAAO/C,EAAO1L,KAAI,SAACyB,EAAGpG,GAAJ,OAAU8oE,EAAa9oE,GAAKqQ,EAAOnQ,OAAS,QAGhE0V,EAAMs6D,UAAY,SAAStrE,GACzB,OAAO+B,MAAMxB,KAAK,CAACjF,OAAQ0E,EAAI,IAAI,SAACuM,EAAGnR,GAAJ,OAAU8R,GAASzB,EAAQrQ,EAAI4E,OAGpEgR,EAAMsB,KAAO,WACX,OAAOmnE,GAAmBvV,GAAcz4D,OAAOA,IAG1Cy8D,GAAiBjtE,MAAM+V,EAAO3V,WC3BvC,SAASu5D,KACP,IAII/iC,EACAtF,EACAK,EACAusD,EACAO,EAEA3nE,EAEAs2D,EAZAt8D,EAAK,EACLC,EAAK,GACLy0B,EAAK,EACLhgC,EAAI,EAMJyjE,EAAe/7D,GAEf6gE,GAAQ,EAGZ,SAASh4D,EAAM5P,GACb,OAAO2qB,MAAM3qB,GAAKA,GAAKinE,GAAWjnE,EAAI,KAAQA,GAAK2Q,EAAU3Q,IAAMmrB,IAAO9rB,EAAIW,EAAIX,EAAI8rB,EAAK4sD,EAAMO,GAAMxV,EAAa8E,EAAQ7jE,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAGlE,IAAMA,IAe5J,SAASoN,EAAM+mB,GACb,OAAO,SAAShpB,GAAG,MACbhC,EAAIE,EAAI2yD,EACZ,OAAO/hE,UAAUC,QAAWiP,GAAD,IAAegC,EAAf,OAAK9B,EAAL,KAAS2yD,EAAT,KAAkB8G,EAAeD,GAAU1uC,EAAa,CAAChrB,EAAIE,EAAI2yD,IAAMpsD,GAAS,CAACkzD,EAAa,GAAIA,EAAa,IAAMA,EAAa,KAYjK,OA3BAlzD,EAAMvF,OAAS,SAASc,GAAG,MACzB,OAAOlR,UAAUC,QAAU,IAAeiR,EAAf,GAACR,EAAD,KAAKC,EAAL,KAASy0B,EAAT,KAAkB5O,EAAK9f,EAAUhG,GAAMA,GAAKwgB,EAAKxa,EAAU/F,GAAMA,GAAK4gB,EAAK7a,EAAU0uB,GAAMA,GAAK04C,EAAMtnD,IAAOtF,EAAK,EAAI,IAAOA,EAAKsF,GAAK6nD,EAAMntD,IAAOK,EAAK,EAAI,IAAOA,EAAKL,GAAK9rB,EAAI8rB,EAAKsF,GAAM,EAAI,EAAG7gB,GAAS,CAACjF,EAAIC,EAAIy0B,IAGnPzvB,EAAMg4D,MAAQ,SAASz8D,GACrB,OAAOlR,UAAUC,QAAU0tE,IAAUz8D,EAAGyE,GAASg4D,GAGnDh4D,EAAMkzD,aAAe,SAAS33D,GAC5B,OAAOlR,UAAUC,QAAU4oE,EAAe33D,EAAGyE,GAASkzD,GAUxDlzD,EAAMxC,MAAQA,EAAM+mB,IAEpBvkB,EAAM03D,WAAal6D,EAAM46D,IAEzBp4D,EAAMq3D,QAAU,SAAS97D,GACvB,OAAOlR,UAAUC,QAAU+sE,EAAU97D,EAAGyE,GAASq3D,GAG5C,SAASr7D,GAEd,OADA+E,EAAY/E,EAAG6kB,EAAK7kB,EAAEjB,GAAKwgB,EAAKvf,EAAEhB,GAAK4gB,EAAK5f,EAAEyzB,GAAK04C,EAAMtnD,IAAOtF,EAAK,EAAI,IAAOA,EAAKsF,GAAK6nD,EAAMntD,IAAOK,EAAK,EAAI,IAAOA,EAAKL,GAAK9rB,EAAI8rB,EAAKsF,GAAM,EAAI,EAC7I7gB,GAII,SAAS2oE,KACtB,IAAI3oE,EAAQy4D,GAAU7U,KAAczsD,KAMpC,OAJA6I,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO2oE,OAGdzR,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASu+E,KACd,IAAI5oE,EAAQi5D,GAAQrV,MAAenpD,OAAO,CAAC,GAAK,EAAG,KAMnD,OAJAuF,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO4oE,MAAgBnzE,KAAKuK,EAAMvK,SAGzCyhE,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASw+E,KACd,IAAI7oE,EAAQ25D,GAAU/V,MAMtB,OAJA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO6oE,MAAmBhwE,SAASmH,EAAMnH,aAGhDq+D,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAASy+E,KACd,IAAI9oE,EAAQg6D,GAAOpW,MAMnB,OAJA5jD,EAAMsB,KAAO,WACX,OAAOA,GAAKtB,EAAO8oE,MAAgB1/B,SAASppC,EAAMopC,aAG7C8tB,GAAiBjtE,MAAM+V,EAAO3V,WAGhC,SAAS0+E,KACd,OAAOD,GAAa7+E,MAAM,KAAMI,WAAW++C,SAAS,IL9FtDkK,GAAc,CACZitB,SAAU,SACVjiD,KAAM,aACNmC,KAAM,eACNkgD,QAAS,CAAC,KAAM,MAChB5E,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzE+E,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtD1D,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvH6D,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SMhB9E,gBAASjwB,GAEtB,IADA,IAAIhiD,EAAIgiD,EAAU1mD,OAAS,EAAI,EAAGsyB,EAAS,IAAI7rB,MAAM/B,GAAI5E,EAAI,EACtDA,EAAI4E,GAAG4tB,EAAOxyB,GAAK,IAAM4mD,EAAU7/C,MAAU,EAAJ/G,EAAa,IAAJA,GACzD,OAAOwyB,GCDMA,MAAO,gECAPA,MAAO,oDCAPA,MAAO,oDCAPA,MAAO,4ECAPA,MAAO,0DCAPA,MAAO,oDCAPA,MAAO,0DCAPA,MAAO,oDCAPA,MAAO,4ECAPA,MAAO,gECAP,YAAAosD,GAAM,OAAIC,GAAoBD,EAAOA,EAAO1+E,OAAS,KCCzD0+E,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,yDACA,+DACA,sEACA1U,IAAI6tB,IAESssD,MAAKF,ICZTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICVTA,GAAS,IAAIj4E,MAAM,GAAG0S,OAC/B,qBACA,2BACA,iCACA,uCACA,6CACA,mDACA,0DACA1U,IAAI6tB,IAESssD,MAAKF,ICbL,YAAShtE,GAEtB,OADAA,EAAI7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAG0H,IACrB,OACD7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,OAAO,KAAOwC,GAAK,MAAQA,GAAK,QAAUA,GAAK,OAASA,GAAK,QAAc,QAAJA,SAAqB,KAC3H7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAM,MAAQwC,GAAK,OAASA,GAAK,MAAQA,GAAK,OAASA,GAAK,OAAa,MAAJA,SAAmB,KACvH7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAM,MAAQwC,GAAK,OAASA,GAAK,QAAUA,GAAK,QAAUA,GAAK,QAAc,QAAJA,SACxG,KCHOmtE,MAAyBh1C,GAAU,IAAK,GAAK,GAAMA,IAAW,IAAK,GAAK,ICA5Ei1C,GAAOD,GAAyBh1C,IAAW,IAAK,IAAM,KAAOA,GAAU,GAAI,IAAM,KAEjFk1C,GAAOF,GAAyBh1C,GAAU,IAAK,IAAM,KAAOA,GAAU,GAAI,IAAM,KAEvF/7B,GAAI+7B,KAEO,YAASn4B,IAClBA,EAAI,GAAKA,EAAI,KAAGA,GAAK7H,KAAKwF,MAAMqC,IACpC,IAAIo5B,EAAKjhC,KAAKS,IAAIoH,EAAI,IAItB,OAHA5D,GAAE4iB,EAAI,IAAMhf,EAAI,IAChB5D,GAAE3I,EAAI,IAAM,IAAM2lC,EAClBh9B,GAAE8hB,EAAI,GAAM,GAAMkb,EACXh9B,GAAI,ICbTA,GAAIyhB,KACJyvD,GAASn1E,KAAKkuB,GAAK,EACnBknD,GAAmB,EAAVp1E,KAAKkuB,GAAS,EAEZ,YAASrmB,GACtB,IAAI5L,EAKJ,OAJA4L,GAAK,GAAMA,GAAK7H,KAAKkuB,GACrBjqB,GAAEwF,EAAI,KAAOxN,EAAI+D,KAAKu5B,IAAI1xB,IAAM5L,EAChCgI,GAAEX,EAAI,KAAOrH,EAAI+D,KAAKu5B,IAAI1xB,EAAIstE,KAAWl5E,EACzCgI,GAAExI,EAAI,KAAOQ,EAAI+D,KAAKu5B,IAAI1xB,EAAIutE,KAAWn5E,EAClCgI,GAAI,ICZE,YAAS4D,GAEtB,OADAA,EAAI7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,EAAG0H,IACrB,OACD7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAM,MAAQwC,GAAK,QAAUA,GAAK,SAAWA,GAAK,SAAWA,GAAK,SAAe,SAAJA,SAAsB,KAClI7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAM,MAAQwC,GAAK,OAASA,GAAK,QAAUA,GAAK,QAAUA,GAAK,QAAc,OAAJA,SAAoB,KAC5H7H,KAAKI,IAAI,EAAGJ,KAAKG,IAAI,IAAKH,KAAKqF,MAAM,KAAOwC,GAAK,OAASA,GAAK,SAAWA,GAAK,MAAQA,GAAK,SAAe,QAAJA,SACvG,KCJR,SAASktE,GAAK1rE,GACZ,IAAIxO,EAAIwO,EAAMlT,OACd,OAAO,SAAS0R,GACd,OAAOwB,EAAMrJ,KAAKI,IAAI,EAAGJ,KAAKG,IAAItF,EAAI,EAAGmF,KAAKwF,MAAMqC,EAAIhN,OAI7Ck6E,UAAKtsD,GAAO,qgDAEhB4sD,GAAQN,GAAKtsD,GAAO,qgDAEpB6sD,GAAUP,GAAKtsD,GAAO,qgDAEtB8sD,GAASR,GAAKtsD,GAAO,qgDCZjB,YAASxrB,GACtB,OAAO+Q,GAAOkM,GAAQjd,GAAM7D,KAAK2Z,SAAS4C,mBCJxC6/D,GAAS,EAEE,SAAStjE,KACtB,OAAO,IAAIujE,GAGb,SAASA,KACP57E,KAAKuN,EAAI,OAASouE,IAAQz4E,SAAS,IAGrC04E,GAAMn+E,UAAY4a,GAAM5a,UAAY,CAClCyB,YAAa08E,GACbp0E,IAAK,SAAS4O,GAEZ,IADA,IAAIod,EAAKxzB,KAAKuN,IACLimB,KAAMpd,IAAO,KAAMA,EAAOA,EAAK5B,YAAa,OACrD,OAAO4B,EAAKod,IAEdnrB,IAAK,SAAS+N,EAAM5X,GAClB,OAAO4X,EAAKpW,KAAKuN,GAAK/O,GAExBiW,OAAQ,SAAS2B,GACf,OAAOpW,KAAKuN,KAAK6I,UAAeA,EAAKpW,KAAKuN,IAE5CrK,SAAU,WACR,OAAOlD,KAAKuN,ICrBD,gBAASsuE,EAAQzlE,GAM9B,OALIylE,EAAO1/E,SACT0/E,EAAStrD,GAAYsrD,QACRr7E,IAAT4V,IAAoBA,EAAOylE,EAAOrrD,eACtCqrD,EAASA,EAAOj/C,SAAW,CAACi/C,IAEvB94E,MAAMxB,KAAKs6E,GAAQ,SAAA9+D,GAAK,OAAIuhB,GAAQvhB,EAAO3G,OCNrC,YAASL,GACtB,MAA2B,kBAAbA,EACR,IAAI+H,GAAU,CAAC5E,SAASjD,iBAAiBF,IAAY,CAACmD,SAAS4C,kBAC/D,IAAIgC,GAAU,CAAC/Y,GAAMgR,IAAY8H,KCN1B,YAASzb,GACtB,OAAO,WACL,OAAOA,ICFAwE,GAAMT,KAAKS,IACX8tB,GAAQvuB,KAAKuuB,MACb+K,GAAMt5B,KAAKs5B,IACXl5B,GAAMJ,KAAKI,IACXD,GAAMH,KAAKG,IACXo5B,GAAMv5B,KAAKu5B,IACXt5B,GAAOD,KAAKC,KAEZyL,GAAU,MACV8tB,GAAKx5B,KAAKkuB,GACVuL,GAASD,GAAK,EACdE,GAAM,EAAIF,GAEd,SAAS6C,GAAKpgC,GACnB,OAAOA,EAAI,EAAI,EAAIA,GAAK,EAAIu9B,GAAKx5B,KAAKq8B,KAAKpgC,GAGtC,SAASs6C,GAAKt6C,GACnB,OAAOA,GAAK,EAAIw9B,GAASx9B,IAAM,GAAKw9B,GAASz5B,KAAKu2C,KAAKt6C,GCdzD,SAAS05E,GAAet5E,GACtB,OAAOA,EAAEu5E,YAGX,SAASC,GAAex5E,GACtB,OAAOA,EAAEy5E,YAGX,SAASC,GAAc15E,GACrB,OAAOA,EAAEm+B,WAGX,SAASw7C,GAAY35E,GACnB,OAAOA,EAAEo+B,SAGX,SAASw7C,GAAY55E,GACnB,OAAOA,GAAKA,EAAE29B,SAGhB,SAAS4vB,GAAUhjD,EAAI60B,EAAI50B,EAAIu0B,EAAIE,EAAIC,EAAIyQ,EAAIC,GAC7C,IAAIiqC,EAAMrvE,EAAKD,EAAIuvE,EAAM/6C,EAAKK,EAC1B26C,EAAMpqC,EAAK1Q,EAAI+6C,EAAMpqC,EAAK1Q,EAC1B1zB,EAAIwuE,EAAMH,EAAME,EAAMD,EAC1B,KAAItuE,EAAIA,EAAI6D,IAEZ,MAAO,CAAC9E,GADRiB,GAAKuuE,GAAO36C,EAAKF,GAAM86C,GAAOzvE,EAAK00B,IAAOzzB,GACzBquE,EAAKz6C,EAAK5zB,EAAIsuE,GAKjC,SAASG,GAAe1vE,EAAI60B,EAAI50B,EAAIu0B,EAAI91B,EAAIixE,EAAI35C,GAC9C,IAAIhB,EAAMh1B,EAAKC,EACXg1B,EAAMJ,EAAKL,EACXl/B,GAAM0gC,EAAK25C,GAAMA,GAAMt2E,GAAK27B,EAAMA,EAAMC,EAAMA,GAC9C26C,EAAKt6E,EAAK2/B,EACV46C,GAAMv6E,EAAK0/B,EACX86C,EAAM9vE,EAAK4vE,EACXG,EAAMl7C,EAAKg7C,EACXP,EAAMrvE,EAAK2vE,EACXL,EAAM/6C,EAAKq7C,EACXhpB,GAAOipB,EAAMR,GAAO,EACpBxoB,GAAOipB,EAAMR,GAAO,EACpBt+C,EAAKq+C,EAAMQ,EACX5+C,EAAKq+C,EAAMQ,EACXl9B,EAAK5hB,EAAKA,EAAKC,EAAKA,EACpBruB,EAAInE,EAAKixE,EACT92C,EAAIi3C,EAAMP,EAAMD,EAAMS,EACtBt6E,GAAKy7B,EAAK,GAAK,EAAI,GAAK73B,GAAKG,GAAI,EAAGqJ,EAAIA,EAAIgwC,EAAKha,EAAIA,IACrDm3C,GAAOn3C,EAAI3H,EAAKD,EAAKx7B,GAAKo9C,EAC1BkU,IAAQluB,EAAI5H,EAAKC,EAAKz7B,GAAKo9C,EAC3Bo9B,GAAOp3C,EAAI3H,EAAKD,EAAKx7B,GAAKo9C,EAC1BmU,IAAQnuB,EAAI5H,EAAKC,EAAKz7B,GAAKo9C,EAC3Bq9B,EAAMF,EAAMnpB,EACZspB,EAAMppB,EAAMD,EACZspB,EAAMH,EAAMppB,EACZwpB,EAAMrpB,EAAMF,EAMhB,OAFIopB,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IAAKL,EAAMC,EAAKlpB,EAAMC,GAE7D,CACLhpB,GAAIgyC,EACJ/xC,GAAI8oB,EACJ/xB,KAAM46C,EACN36C,KAAM46C,EACNC,IAAKE,GAAOtxE,EAAKmE,EAAI,GACrBktE,IAAKhpB,GAAOroD,EAAKmE,EAAI,IAIV,kBACb,IAAImsE,EAAcD,GACdG,EAAcD,GACdqB,EAAexyE,GAAS,GACxByyE,EAAY,KACZ38C,EAAau7C,GACbt7C,EAAWu7C,GACXh8C,EAAWi8C,GACXppE,EAAU,KAEd,SAAS2vB,IACP,IAAIkB,EACAj0B,EACArE,GAAMwwE,EAAY9/E,MAAM+D,KAAM3D,WAC9BoP,GAAMwwE,EAAYhgF,MAAM+D,KAAM3D,WAC9BumC,EAAKjC,EAAW1kC,MAAM+D,KAAM3D,WAAaujC,GACzCiD,EAAKjC,EAAS3kC,MAAM+D,KAAM3D,WAAaujC,GACvCoD,EAAKp8B,GAAIi8B,EAAKD,GACdG,EAAKF,EAAKD,EAQd,GANK5vB,IAASA,EAAU6wB,EAASrwB,MAG7B/H,EAAKF,IAAIqE,EAAInE,EAAIA,EAAKF,EAAIA,EAAKqE,GAG7BnE,EAAKoG,GAGN,GAAImxB,EAAKnD,GAAMhuB,GAClBmB,EAAQmuB,OAAO11B,EAAKg0B,GAAImD,GAAKn3B,EAAKi0B,GAAIkD,IACtC5vB,EAAQ2vB,IAAI,EAAG,EAAGl3B,EAAIm3B,EAAIC,GAAKE,GAC3Bx3B,EAAKsG,KACPmB,EAAQmuB,OAAO51B,EAAKk0B,GAAIoD,GAAKt3B,EAAKm0B,GAAImD,IACtC7vB,EAAQ2vB,IAAI,EAAG,EAAGp3B,EAAIs3B,EAAID,EAAIG,QAK7B,CACH,IAWIlQ,EACAtF,EAZAgwD,EAAM36C,EACN46C,EAAM36C,EACNk0B,EAAMn0B,EACN66C,EAAM56C,EACN66C,EAAM16C,EACN26C,EAAM36C,EACNc,EAAK3D,EAASlkC,MAAM+D,KAAM3D,WAAa,EACvCuhF,EAAM95C,EAAKjyB,KAAayrE,GAAaA,EAAUrhF,MAAM+D,KAAM3D,WAAa+J,GAAKmF,EAAKA,EAAKE,EAAKA,IAC5FixE,EAAKp2E,GAAIM,GAAI6E,EAAKF,GAAM,GAAI8xE,EAAaphF,MAAM+D,KAAM3D,YACrDwhF,EAAMnB,EACNoB,EAAMpB,EAKV,GAAIkB,EAAK/rE,GAAS,CAChB,IAAIo+B,EAAKyM,GAAKkhC,EAAKryE,EAAKm0B,GAAIoE,IACxBsM,EAAKsM,GAAKkhC,EAAKnyE,EAAKi0B,GAAIoE,KACvB45C,GAAY,EAALztC,GAAUp+B,IAA8BklD,GAArB9mB,GAAOlN,EAAK,GAAK,EAAe06C,GAAOxtC,IACjEytC,EAAM,EAAG3mB,EAAM0mB,GAAO76C,EAAKC,GAAM,IACjC86C,GAAY,EAALvtC,GAAUv+B,IAA8B0rE,GAArBntC,GAAOrN,EAAK,GAAK,EAAey6C,GAAOptC,IACjEutC,EAAM,EAAGJ,EAAMC,GAAO56C,EAAKC,GAAM,GAGxC,IAAId,EAAMt2B,EAAKg0B,GAAI89C,GACfv7C,EAAMv2B,EAAKi0B,GAAI69C,GACflB,EAAM9wE,EAAKk0B,GAAIg+C,GACfnB,EAAM/wE,EAAKm0B,GAAI+9C,GAGnB,GAAIf,EAAK7qE,GAAS,CAChB,IAIIksE,EAJAlB,EAAMpxE,EAAKg0B,GAAI+9C,GACfV,EAAMrxE,EAAKi0B,GAAI89C,GACf5pB,EAAMroD,EAAKk0B,GAAIs3B,GACflD,EAAMtoD,EAAKm0B,GAAIq3B,GAInB,GAAI/zB,EAAKrD,KAAOo+C,EAAKhuB,GAAUhuB,EAAKC,EAAK4xB,EAAKC,EAAKgpB,EAAKC,EAAKT,EAAKC,IAAO,CACvE,IAAI3xC,EAAK5I,EAAMg8C,EAAG,GACdnzC,EAAK5I,EAAM+7C,EAAG,GACdlzC,EAAKgyC,EAAMkB,EAAG,GACdjzC,EAAKgyC,EAAMiB,EAAG,GACdC,EAAK,EAAIt+C,GAAI8C,IAAMmI,EAAKE,EAAKD,EAAKE,IAAO1kC,GAAKukC,EAAKA,EAAKC,EAAKA,GAAMxkC,GAAKykC,EAAKA,EAAKC,EAAKA,KAAQ,GAC/FmzC,EAAK73E,GAAK23E,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,IACzCF,EAAMv3E,GAAIo2E,GAAKnxE,EAAK0yE,IAAOD,EAAK,IAChCF,EAAMx3E,GAAIo2E,GAAKjxE,EAAKwyE,IAAOD,EAAK,KAK9BL,EAAM9rE,GAGHisE,EAAMjsE,IACbghB,EAAK4pD,GAAe7oB,EAAKC,EAAK9xB,EAAKC,EAAKv2B,EAAIqyE,EAAK/6C,GACjDxV,EAAKkvD,GAAeI,EAAKC,EAAKT,EAAKC,EAAK7wE,EAAIqyE,EAAK/6C,GAEjD/vB,EAAQmuB,OAAOtO,EAAGkY,GAAKlY,EAAGkP,IAAKlP,EAAGmY,GAAKnY,EAAGmP,KAGtC87C,EAAMpB,EAAI1pE,EAAQ2vB,IAAI9P,EAAGkY,GAAIlY,EAAGmY,GAAI8yC,EAAKppD,GAAM7B,EAAGmP,IAAKnP,EAAGkP,KAAMrN,GAAMnH,EAAGyU,IAAKzU,EAAGwU,MAAOgB,IAI1F/vB,EAAQ2vB,IAAI9P,EAAGkY,GAAIlY,EAAGmY,GAAI8yC,EAAKppD,GAAM7B,EAAGmP,IAAKnP,EAAGkP,KAAMrN,GAAM7B,EAAGiqD,IAAKjqD,EAAGgqD,MAAO95C,GAC9E/vB,EAAQ2vB,IAAI,EAAG,EAAGl3B,EAAIipB,GAAM7B,EAAGmY,GAAKnY,EAAGiqD,IAAKjqD,EAAGkY,GAAKlY,EAAGgqD,KAAMnoD,GAAMnH,EAAGyd,GAAKzd,EAAGuvD,IAAKvvD,EAAGwd,GAAKxd,EAAGsvD,MAAO95C,GACrG/vB,EAAQ2vB,IAAIpV,EAAGwd,GAAIxd,EAAGyd,GAAI8yC,EAAKppD,GAAMnH,EAAGuvD,IAAKvvD,EAAGsvD,KAAMnoD,GAAMnH,EAAGyU,IAAKzU,EAAGwU,MAAOgB,MAK7E/vB,EAAQmuB,OAAOY,EAAKC,GAAMhvB,EAAQ2vB,IAAI,EAAG,EAAGl3B,EAAI8xE,EAAKC,GAAMz6C,IArB1C/vB,EAAQmuB,OAAOY,EAAKC,GAyBpCz2B,EAAKsG,IAAc6rE,EAAM7rE,GAGtBgsE,EAAMhsE,IACbghB,EAAK4pD,GAAeJ,EAAKC,EAAKO,EAAKC,EAAKvxE,GAAKsyE,EAAK96C,GAClDxV,EAAKkvD,GAAe16C,EAAKC,EAAK4xB,EAAKC,EAAKtoD,GAAKsyE,EAAK96C,GAElD/vB,EAAQquB,OAAOxO,EAAGkY,GAAKlY,EAAGkP,IAAKlP,EAAGmY,GAAKnY,EAAGmP,KAGtC67C,EAAMnB,EAAI1pE,EAAQ2vB,IAAI9P,EAAGkY,GAAIlY,EAAGmY,GAAI6yC,EAAKnpD,GAAM7B,EAAGmP,IAAKnP,EAAGkP,KAAMrN,GAAMnH,EAAGyU,IAAKzU,EAAGwU,MAAOgB,IAI1F/vB,EAAQ2vB,IAAI9P,EAAGkY,GAAIlY,EAAGmY,GAAI6yC,EAAKnpD,GAAM7B,EAAGmP,IAAKnP,EAAGkP,KAAMrN,GAAM7B,EAAGiqD,IAAKjqD,EAAGgqD,MAAO95C,GAC9E/vB,EAAQ2vB,IAAI,EAAG,EAAGp3B,EAAImpB,GAAM7B,EAAGmY,GAAKnY,EAAGiqD,IAAKjqD,EAAGkY,GAAKlY,EAAGgqD,KAAMnoD,GAAMnH,EAAGyd,GAAKzd,EAAGuvD,IAAKvvD,EAAGwd,GAAKxd,EAAGsvD,KAAM95C,GACpG/vB,EAAQ2vB,IAAIpV,EAAGwd,GAAIxd,EAAGyd,GAAI6yC,EAAKnpD,GAAMnH,EAAGuvD,IAAKvvD,EAAGsvD,KAAMnoD,GAAMnH,EAAGyU,IAAKzU,EAAGwU,MAAOgB,KAK7E/vB,EAAQ2vB,IAAI,EAAG,EAAGp3B,EAAIkyE,EAAK1mB,EAAKh0B,GArBI/vB,EAAQquB,OAAOg7C,EAAKC,QA1F1CtpE,EAAQmuB,OAAO,EAAG,GAoHvC,GAFAnuB,EAAQouB,YAEJyC,EAAQ,OAAO7wB,EAAU,KAAM6wB,EAAS,IAAM,KAyCpD,OAtCAlB,EAAIyxB,SAAW,WACb,IAAIxkD,IAAMmsE,EAAY9/E,MAAM+D,KAAM3D,aAAc4/E,EAAYhgF,MAAM+D,KAAM3D,YAAc,EAClFsF,IAAMg/B,EAAW1kC,MAAM+D,KAAM3D,aAAcukC,EAAS3kC,MAAM+D,KAAM3D,YAAc,EAAIsjC,GAAK,EAC3F,MAAO,CAACF,GAAI99B,GAAKiO,EAAG8vB,GAAI/9B,GAAKiO,IAG/B+yB,EAAIo5C,YAAc,SAASxuE,GACzB,OAAOlR,UAAUC,QAAUy/E,EAA2B,oBAANxuE,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAOo5C,GAG9Fp5C,EAAIs5C,YAAc,SAAS1uE,GACzB,OAAOlR,UAAUC,QAAU2/E,EAA2B,oBAAN1uE,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAOs5C,GAG9Ft5C,EAAI06C,aAAe,SAAS9vE,GAC1B,OAAOlR,UAAUC,QAAU+gF,EAA4B,oBAAN9vE,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAO06C,GAG/F16C,EAAI26C,UAAY,SAAS/vE,GACvB,OAAOlR,UAAUC,QAAUghF,EAAiB,MAAL/vE,EAAY,KAAoB,oBAANA,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAO26C,GAG/G36C,EAAIhC,WAAa,SAASpzB,GACxB,OAAOlR,UAAUC,QAAUqkC,EAA0B,oBAANpzB,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAOhC,GAG7FgC,EAAI/B,SAAW,SAASrzB,GACtB,OAAOlR,UAAUC,QAAUskC,EAAwB,oBAANrzB,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAO/B,GAG3F+B,EAAIxC,SAAW,SAAS5yB,GACtB,OAAOlR,UAAUC,QAAU6jC,EAAwB,oBAAN5yB,EAAmBA,EAAI1C,IAAU0C,GAAIo1B,GAAOxC,GAG3FwC,EAAI3vB,QAAU,SAASzF,GACrB,OAAOlR,UAAUC,QAAW0W,EAAe,MAALzF,EAAY,KAAOA,EAAIo1B,GAAO3vB,GAG/D2vB,GCnQEx/B,GAAQJ,MAAMtF,UAAU0F,MAEpB,YAASf,GACtB,MAAoB,kBAANA,GAAkB,WAAYA,EACxCA,EACAW,MAAMxB,KAAKa,ICLjB,SAAS87E,GAAOlrE,GACdhT,KAAK00D,SAAW1hD,EAGlBkrE,GAAOzgF,UAAY,CACjB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK80D,OAAS,GAEhB9N,QAAS,YACHhnD,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EACtB,QAAS90D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,MAKxB,gBAASqM,GACtB,OAAO,IAAIkrE,GAAOlrE,IC7Bb,SAAS5Q,GAAEvD,GAChB,OAAOA,EAAE,GAGJ,SAAS8H,GAAE9H,GAChB,OAAOA,EAAE,GCCI,gBAASuD,EAAGuE,GACzB,IAAIoJ,EAAUlF,IAAS,GACnBmI,EAAU,KACVqrE,EAAQC,GACRxkD,EAAS,KAKb,SAAS5lB,EAAKrH,GACZ,IAAIzQ,EAEAoG,EAEAqhC,EAHA7iC,GAAK6L,EAAO9H,GAAM8H,IAAOvQ,OAEzBiiF,GAAW,EAKf,IAFe,MAAXvrE,IAAiB8mB,EAASukD,EAAMx6C,EAASrwB,OAExCpX,EAAI,EAAGA,GAAK4E,IAAK5E,IACdA,EAAI4E,GAAK+O,EAAQvN,EAAIqK,EAAKzQ,GAAIA,EAAGyQ,MAAW0xE,KAC5CA,GAAYA,GAAUzkD,EAAOitB,YAC5BjtB,EAAOktB,WAEVu3B,GAAUzkD,EAAOnJ,OAAOvuB,EAAEI,EAAGpG,EAAGyQ,IAAQlG,EAAEnE,EAAGpG,EAAGyQ,IAGtD,GAAIg3B,EAAQ,OAAO/J,EAAS,KAAM+J,EAAS,IAAM,KAuBnD,OA3CAzhC,EAAiB,oBAANA,EAAmBA,OAAW5B,IAAN4B,EAAmB2yC,GAASlqC,GAASzI,GACxEuE,EAAiB,oBAANA,EAAmBA,OAAWnG,IAANmG,EAAmBquC,GAASnqC,GAASlE,GAsBxEuN,EAAK9R,EAAI,SAASmL,GAChB,OAAOlR,UAAUC,QAAU8F,EAAiB,oBAANmL,EAAmBA,EAAI1C,IAAU0C,GAAI2G,GAAQ9R,GAGrF8R,EAAKvN,EAAI,SAAS4G,GAChB,OAAOlR,UAAUC,QAAUqK,EAAiB,oBAAN4G,EAAmBA,EAAI1C,IAAU0C,GAAI2G,GAAQvN,GAGrFuN,EAAKnE,QAAU,SAASxC,GACtB,OAAOlR,UAAUC,QAAUyT,EAAuB,oBAANxC,EAAmBA,EAAI1C,KAAW0C,GAAI2G,GAAQnE,GAG5FmE,EAAKmqE,MAAQ,SAAS9wE,GACpB,OAAOlR,UAAUC,QAAU+hF,EAAQ9wE,EAAc,MAAXyF,IAAoB8mB,EAASukD,EAAMrrE,IAAWkB,GAAQmqE,GAG9FnqE,EAAKlB,QAAU,SAASzF,GACtB,OAAOlR,UAAUC,QAAe,MAALiR,EAAYyF,EAAU8mB,EAAS,KAAOA,EAASukD,EAAMrrE,EAAUzF,GAAI2G,GAAQlB,GAGjGkB,GChDM,YAASnH,EAAI60B,EAAIL,GAC9B,IAAIv0B,EAAK,KACL+C,EAAUlF,IAAS,GACnBmI,EAAU,KACVqrE,EAAQC,GACRxkD,EAAS,KAMb,SAASiO,EAAKl7B,GACZ,IAAIzQ,EACAmJ,EACAmI,EAEAlL,EAEAqhC,EAHA7iC,GAAK6L,EAAO9H,GAAM8H,IAAOvQ,OAEzBiiF,GAAW,EAEXC,EAAM,IAAIz7E,MAAM/B,GAChBy9E,EAAM,IAAI17E,MAAM/B,GAIpB,IAFe,MAAXgS,IAAiB8mB,EAASukD,EAAMx6C,EAASrwB,OAExCpX,EAAI,EAAGA,GAAK4E,IAAK5E,EAAG,CACvB,KAAMA,EAAI4E,GAAK+O,EAAQvN,EAAIqK,EAAKzQ,GAAIA,EAAGyQ,MAAW0xE,EAChD,GAAIA,GAAYA,EACdh5E,EAAInJ,EACJ09B,EAAOqkD,YACPrkD,EAAOitB,gBACF,CAGL,IAFAjtB,EAAOktB,UACPltB,EAAOitB,YACFr5C,EAAItR,EAAI,EAAGsR,GAAKnI,IAAKmI,EACxBosB,EAAOnJ,MAAM6tD,EAAI9wE,GAAI+wE,EAAI/wE,IAE3BosB,EAAOktB,UACPltB,EAAOskD,UAGPG,IACFC,EAAIpiF,IAAM2Q,EAAGvK,EAAGpG,EAAGyQ,GAAO4xE,EAAIriF,IAAMwlC,EAAGp/B,EAAGpG,EAAGyQ,GAC7CitB,EAAOnJ,MAAM3jB,GAAMA,EAAGxK,EAAGpG,EAAGyQ,GAAQ2xE,EAAIpiF,GAAImlC,GAAMA,EAAG/+B,EAAGpG,EAAGyQ,GAAQ4xE,EAAIriF,KAI3E,GAAIynC,EAAQ,OAAO/J,EAAS,KAAM+J,EAAS,IAAM,KAGnD,SAAS66C,IACP,OAAOxqE,KAAOnE,QAAQA,GAASsuE,MAAMA,GAAOrrE,QAAQA,GAoDtD,OA/FAjG,EAAmB,oBAAPA,EAAoBA,OAAavM,IAAPuM,EAAoBgoC,GAASlqC,IAAUkC,GAC7E60B,EAAmB,oBAAPA,EAAoBA,EAA0B/2B,QAAbrK,IAAPohC,EAA6B,GAAeA,GAClFL,EAAmB,oBAAPA,EAAoBA,OAAa/gC,IAAP+gC,EAAoByT,GAASnqC,IAAU02B,GA4C7EwG,EAAK3lC,EAAI,SAASmL,GAChB,OAAOlR,UAAUC,QAAUyQ,EAAkB,oBAANQ,EAAmBA,EAAI1C,IAAU0C,GAAIP,EAAK,KAAM+6B,GAAQh7B,GAGjGg7B,EAAKh7B,GAAK,SAASQ,GACjB,OAAOlR,UAAUC,QAAUyQ,EAAkB,oBAANQ,EAAmBA,EAAI1C,IAAU0C,GAAIw6B,GAAQh7B,GAGtFg7B,EAAK/6B,GAAK,SAASO,GACjB,OAAOlR,UAAUC,QAAU0Q,EAAU,MAALO,EAAY,KAAoB,oBAANA,EAAmBA,EAAI1C,IAAU0C,GAAIw6B,GAAQ/6B,GAGzG+6B,EAAKphC,EAAI,SAAS4G,GAChB,OAAOlR,UAAUC,QAAUslC,EAAkB,oBAANr0B,EAAmBA,EAAI1C,IAAU0C,GAAIg0B,EAAK,KAAMwG,GAAQnG,GAGjGmG,EAAKnG,GAAK,SAASr0B,GACjB,OAAOlR,UAAUC,QAAUslC,EAAkB,oBAANr0B,EAAmBA,EAAI1C,IAAU0C,GAAIw6B,GAAQnG,GAGtFmG,EAAKxG,GAAK,SAASh0B,GACjB,OAAOlR,UAAUC,QAAUilC,EAAU,MAALh0B,EAAY,KAAoB,oBAANA,EAAmBA,EAAI1C,IAAU0C,GAAIw6B,GAAQxG,GAGzGwG,EAAK42C,OACL52C,EAAK62C,OAAS,WACZ,OAAOF,IAAWt8E,EAAE2K,GAAIpG,EAAEi7B,IAG5BmG,EAAK82C,OAAS,WACZ,OAAOH,IAAWt8E,EAAE2K,GAAIpG,EAAE46B,IAG5BwG,EAAK+2C,OAAS,WACZ,OAAOJ,IAAWt8E,EAAE4K,GAAIrG,EAAEi7B,IAG5BmG,EAAKh4B,QAAU,SAASxC,GACtB,OAAOlR,UAAUC,QAAUyT,EAAuB,oBAANxC,EAAmBA,EAAI1C,KAAW0C,GAAIw6B,GAAQh4B,GAG5Fg4B,EAAKs2C,MAAQ,SAAS9wE,GACpB,OAAOlR,UAAUC,QAAU+hF,EAAQ9wE,EAAc,MAAXyF,IAAoB8mB,EAASukD,EAAMrrE,IAAW+0B,GAAQs2C,GAG9Ft2C,EAAK/0B,QAAU,SAASzF,GACtB,OAAOlR,UAAUC,QAAe,MAALiR,EAAYyF,EAAU8mB,EAAS,KAAOA,EAASukD,EAAMrrE,EAAUzF,GAAIw6B,GAAQ/0B,GAGjG+0B,GC7GM,YAASpmC,EAAGC,GACzB,OAAOA,EAAID,GAAK,EAAIC,EAAID,EAAI,EAAIC,GAAKD,EAAI,EAAIE,KCDhC,YAASW,GACtB,OAAOA,GCKM,cACb,IAAIhE,EAAQ2K,GACR41E,EAAah5E,GACbmE,EAAO,KACPy2B,EAAa91B,GAAS,GACtB+1B,EAAW/1B,GAASg1B,IACpBM,EAAWt1B,GAAS,GAExB,SAASm0E,EAAInyE,GACX,IAAIzQ,EAEAmJ,EACAmI,EAMAm1B,EAGA/8B,EAXA9E,GAAK6L,EAAO9H,GAAM8H,IAAOvQ,OAGzBsJ,EAAM,EACNrB,EAAQ,IAAIxB,MAAM/B,GAClBi+E,EAAO,IAAIl8E,MAAM/B,GACjB4hC,GAAMjC,EAAW1kC,MAAM+D,KAAM3D,WAC7B2mC,EAAK78B,KAAKG,IAAIu5B,GAAK15B,KAAKI,KAAKs5B,GAAKe,EAAS3kC,MAAM+D,KAAM3D,WAAaumC,IAEpE/jC,EAAIsH,KAAKG,IAAIH,KAAKS,IAAIo8B,GAAMhiC,EAAGm/B,EAASlkC,MAAM+D,KAAM3D,YACpD6iF,EAAKrgF,GAAKmkC,EAAK,GAAK,EAAI,GAG5B,IAAK5mC,EAAI,EAAGA,EAAI4E,IAAK5E,GACd0J,EAAIm5E,EAAK16E,EAAMnI,GAAKA,IAAMoC,EAAMqO,EAAKzQ,GAAIA,EAAGyQ,IAAS,IACxDjH,GAAOE,GASX,IAJkB,MAAdi5E,EAAoBx6E,EAAM2F,MAAK,SAAS9N,EAAGmJ,GAAK,OAAOw5E,EAAWE,EAAK7iF,GAAI6iF,EAAK15E,OACnE,MAAR2E,GAAc3F,EAAM2F,MAAK,SAAS9N,EAAGmJ,GAAK,OAAO2E,EAAK2C,EAAKzQ,GAAIyQ,EAAKtH,OAGxEnJ,EAAI,EAAGsR,EAAI9H,GAAOo9B,EAAKhiC,EAAIk+E,GAAMt5E,EAAM,EAAGxJ,EAAI4E,IAAK5E,EAAGwmC,EAAKC,EAC9Dt9B,EAAIhB,EAAMnI,GAAiBymC,EAAKD,IAAlB98B,EAAIm5E,EAAK15E,IAAmB,EAAIO,EAAI4H,EAAI,GAAKwxE,EAAID,EAAK15E,GAAK,CACvEsH,KAAMA,EAAKtH,GACXhB,MAAOnI,EACPoC,MAAOsH,EACP66B,WAAYiC,EACZhC,SAAUiC,EACV1C,SAAUthC,GAId,OAAOogF,EA2BT,OAxBAD,EAAIxgF,MAAQ,SAAS+O,GACnB,OAAOlR,UAAUC,QAAUkC,EAAqB,oBAAN+O,EAAmBA,EAAI1C,IAAU0C,GAAIyxE,GAAOxgF,GAGxFwgF,EAAID,WAAa,SAASxxE,GACxB,OAAOlR,UAAUC,QAAUyiF,EAAaxxE,EAAGrD,EAAO,KAAM80E,GAAOD,GAGjEC,EAAI90E,KAAO,SAASqD,GAClB,OAAOlR,UAAUC,QAAU4N,EAAOqD,EAAGwxE,EAAa,KAAMC,GAAO90E,GAGjE80E,EAAIr+C,WAAa,SAASpzB,GACxB,OAAOlR,UAAUC,QAAUqkC,EAA0B,oBAANpzB,EAAmBA,EAAI1C,IAAU0C,GAAIyxE,GAAOr+C,GAG7Fq+C,EAAIp+C,SAAW,SAASrzB,GACtB,OAAOlR,UAAUC,QAAUskC,EAAwB,oBAANrzB,EAAmBA,EAAI1C,IAAU0C,GAAIyxE,GAAOp+C,GAG3Fo+C,EAAI7+C,SAAW,SAAS5yB,GACtB,OAAOlR,UAAUC,QAAU6jC,EAAwB,oBAAN5yB,EAAmBA,EAAI1C,IAAU0C,GAAIyxE,GAAO7+C,GAGpF6+C,GC5EEG,GAAoBC,GAAYd,IAE3C,SAASe,GAAOhB,GACdr+E,KAAKs/E,OAASjB,EAqBD,SAASe,GAAYf,GAElC,SAASlS,EAAOn5D,GACd,OAAO,IAAIqsE,GAAOhB,EAAMrrE,IAK1B,OAFAm5D,EAAOmT,OAASjB,EAETlS,EC/BF,SAASoT,GAAWrzD,GACzB,IAAI9hB,EAAI8hB,EAAEmyD,MASV,OAPAnyD,EAAE61B,MAAQ71B,EAAE9pB,SAAU8pB,EAAE9pB,EACxB8pB,EAAEkX,OAASlX,EAAEvlB,SAAUulB,EAAEvlB,EAEzBulB,EAAEmyD,MAAQ,SAAS9wE,GACjB,OAAOlR,UAAUC,OAAS8N,EAAEg1E,GAAY7xE,IAAMnD,IAAIk1E,QAG7CpzD,EDLTmzD,GAAO5hF,UAAY,CACjB0gF,UAAW,WACTn+E,KAAKs/E,OAAOnB,aAEdC,QAAS,WACPp+E,KAAKs/E,OAAOlB,WAEdr3B,UAAW,WACT/mD,KAAKs/E,OAAOv4B,aAEdC,QAAS,WACPhnD,KAAKs/E,OAAOt4B,WAEdr2B,MAAO,SAAShvB,EAAGiO,GACjB5P,KAAKs/E,OAAO3uD,MAAM/gB,EAAIzJ,KAAKu5B,IAAI/9B,GAAIiO,GAAKzJ,KAAKs5B,IAAI99B,MCNtC,kBACb,OAAO49E,GAAWrrE,KAAOmqE,MAAMc,MCblB,cACb,IAAIx9E,EAAIomC,KAAOs2C,MAAMc,IACjB/0E,EAAIzI,EAAE08E,MACNtxE,EAAKpL,EAAEg9E,OACP3xE,EAAKrL,EAAEm9E,OACPl9C,EAAKjgC,EAAEi9E,OACPr9C,EAAK5/B,EAAEk9E,OAiBX,OAfAl9E,EAAEogD,MAAQpgD,EAAES,SAAUT,EAAES,EACxBT,EAAEg/B,WAAah/B,EAAEoL,UAAWpL,EAAEoL,GAC9BpL,EAAEi/B,SAAWj/B,EAAEqL,UAAWrL,EAAEqL,GAC5BrL,EAAEyhC,OAASzhC,EAAEgF,SAAUhF,EAAEgF,EACzBhF,EAAEo6E,YAAcp6E,EAAEigC,UAAWjgC,EAAEigC,GAC/BjgC,EAAEs6E,YAAct6E,EAAE4/B,UAAW5/B,EAAE4/B,GAC/B5/B,EAAE69E,eAAiB,WAAa,OAAOD,GAAWxyE,aAAiBpL,EAAEg9E,OACrEh9E,EAAE89E,aAAe,WAAa,OAAOF,GAAWvyE,aAAiBrL,EAAEm9E,OACnEn9E,EAAE+9E,gBAAkB,WAAa,OAAOH,GAAW39C,aAAiBjgC,EAAEi9E,OACtEj9E,EAAEg+E,gBAAkB,WAAa,OAAOJ,GAAWh+C,aAAiB5/B,EAAEk9E,OAEtEl9E,EAAE08E,MAAQ,SAAS9wE,GACjB,OAAOlR,UAAUC,OAAS8N,EAAEg1E,GAAY7xE,IAAMnD,IAAIk1E,QAG7C39E,GC3BM,YAASS,EAAGuE,GACzB,MAAO,EAAEA,GAAKA,GAAKR,KAAKs5B,IAAIr9B,GAAK+D,KAAKkuB,GAAK,GAAI1tB,EAAIR,KAAKu5B,IAAIt9B,KCK9D,SAASw9E,GAAWp9E,GAClB,OAAOA,EAAEjG,OAGX,SAASsjF,GAAWr9E,GAClB,OAAOA,EAAErG,OAGX,SAAS6kD,GAAKq9B,GACZ,IAAI9hF,EAASqjF,GACTzjF,EAAS0jF,GACTz9E,EAAI2yC,GACJpuC,EAAIquC,GACJhiC,EAAU,KAEd,SAASguC,IACP,IAAInd,EAAQE,EAAO5gC,GAAM5D,KAAKlD,WAAYoF,EAAIlF,EAAON,MAAM+D,KAAM+jC,GAAO/1B,EAAI7R,EAAOF,MAAM+D,KAAM+jC,GAG/F,GAFK/wB,IAASA,EAAU6wB,EAASrwB,MACjC6qE,EAAMrrE,GAAU5Q,EAAEnG,MAAM+D,MAAO+jC,EAAK,GAAKtiC,EAAGsiC,KAASp9B,EAAE1K,MAAM+D,KAAM+jC,IAAQ3hC,EAAEnG,MAAM+D,MAAO+jC,EAAK,GAAK/1B,EAAG+1B,KAASp9B,EAAE1K,MAAM+D,KAAM+jC,IAC1HF,EAAQ,OAAO7wB,EAAU,KAAM6wB,EAAS,IAAM,KAuBpD,OApBAmd,EAAKzkD,OAAS,SAASgR,GACrB,OAAOlR,UAAUC,QAAUC,EAASgR,EAAGyzC,GAAQzkD,GAGjDykD,EAAK7kD,OAAS,SAASoR,GACrB,OAAOlR,UAAUC,QAAUH,EAASoR,EAAGyzC,GAAQ7kD,GAGjD6kD,EAAK5+C,EAAI,SAASmL,GAChB,OAAOlR,UAAUC,QAAU8F,EAAiB,oBAANmL,EAAmBA,EAAI1C,IAAU0C,GAAIyzC,GAAQ5+C,GAGrF4+C,EAAKr6C,EAAI,SAAS4G,GAChB,OAAOlR,UAAUC,QAAUqK,EAAiB,oBAAN4G,EAAmBA,EAAI1C,IAAU0C,GAAIyzC,GAAQr6C,GAGrFq6C,EAAKhuC,QAAU,SAASzF,GACtB,OAAOlR,UAAUC,QAAW0W,EAAe,MAALzF,EAAY,KAAOA,EAAIyzC,GAAQhuC,GAGhEguC,EAGT,SAAS8+B,GAAgB9sE,EAASjG,EAAI60B,EAAI50B,EAAIu0B,GAC5CvuB,EAAQmuB,OAAOp0B,EAAI60B,GACnB5uB,EAAQwuB,cAAcz0B,GAAMA,EAAKC,GAAM,EAAG40B,EAAI70B,EAAIw0B,EAAIv0B,EAAIu0B,GAG5D,SAASw+C,GAAc/sE,EAASjG,EAAI60B,EAAI50B,EAAIu0B,GAC1CvuB,EAAQmuB,OAAOp0B,EAAI60B,GACnB5uB,EAAQwuB,cAAcz0B,EAAI60B,GAAMA,EAAKL,GAAM,EAAGv0B,EAAI40B,EAAI50B,EAAIu0B,GAG5D,SAAS69C,GAAYpsE,EAASjG,EAAI60B,EAAI50B,EAAIu0B,GACxC,IAAI0O,EAAK+vC,GAAYjzE,EAAI60B,GACrBwO,EAAK4vC,GAAYjzE,EAAI60B,GAAMA,EAAKL,GAAM,GACtC0+C,EAAKD,GAAYhzE,EAAI40B,GACrBs+C,EAAKF,GAAYhzE,EAAIu0B,GACzBvuB,EAAQmuB,OAAO8O,EAAG,GAAIA,EAAG,IACzBj9B,EAAQwuB,cAAc4O,EAAG,GAAIA,EAAG,GAAI6vC,EAAG,GAAIA,EAAG,GAAIC,EAAG,GAAIA,EAAG,IAGvD,SAASC,KACd,OAAOn/B,GAAK8+B,IAGP,SAASM,KACd,OAAOp/B,GAAK++B,IAGP,SAASM,KACd,IAAIn0D,EAAI80B,GAAKo+B,IAGb,OAFAlzD,EAAE61B,MAAQ71B,EAAE9pB,SAAU8pB,EAAE9pB,EACxB8pB,EAAEkX,OAASlX,EAAEvlB,SAAUulB,EAAEvlB,EAClBulB,EChFM,QACbo0D,KAAM,SAASttE,EAASiN,GACtB,IAAIrQ,EAAIzJ,KAAKC,KAAK6Z,EAAO0f,IACzB3sB,EAAQmuB,OAAOvxB,EAAG,GAClBoD,EAAQ2vB,IAAI,EAAG,EAAG/yB,EAAG,EAAGiwB,MCNb,IACbygD,KAAM,SAASttE,EAASiN,GACtB,IAAIrQ,EAAIzJ,KAAKC,KAAK6Z,EAAO,GAAK,EAC9BjN,EAAQmuB,QAAQ,EAAIvxB,GAAIA,GACxBoD,EAAQquB,QAAQzxB,GAAIA,GACpBoD,EAAQquB,QAAQzxB,GAAI,EAAIA,GACxBoD,EAAQquB,OAAOzxB,GAAI,EAAIA,GACvBoD,EAAQquB,OAAOzxB,GAAIA,GACnBoD,EAAQquB,OAAO,EAAIzxB,GAAIA,GACvBoD,EAAQquB,OAAO,EAAIzxB,EAAGA,GACtBoD,EAAQquB,OAAOzxB,EAAGA,GAClBoD,EAAQquB,OAAOzxB,EAAG,EAAIA,GACtBoD,EAAQquB,QAAQzxB,EAAG,EAAIA,GACvBoD,EAAQquB,QAAQzxB,EAAGA,GACnBoD,EAAQquB,QAAQ,EAAIzxB,EAAGA,GACvBoD,EAAQouB,cCfRm/C,GAAQp6E,KAAKC,KAAK,EAAI,GACtBo6E,GAAkB,EAARD,GAEC,IACbD,KAAM,SAASttE,EAASiN,GACtB,IAAItZ,EAAIR,KAAKC,KAAK6Z,EAAOugE,IACrBp+E,EAAIuE,EAAI45E,GACZvtE,EAAQmuB,OAAO,GAAIx6B,GACnBqM,EAAQquB,OAAOj/B,EAAG,GAClB4Q,EAAQquB,OAAO,EAAG16B,GAClBqM,EAAQquB,QAAQj/B,EAAG,GACnB4Q,EAAQouB,cCRRq/C,GAAKt6E,KAAKu5B,IAAIC,GAAK,IAAMx5B,KAAKu5B,IAAI,EAAIC,GAAK,IAC3C67B,GAAKr1D,KAAKu5B,IAAIG,GAAM,IAAM4gD,GAC1BhlB,IAAMt1D,KAAKs5B,IAAII,GAAM,IAAM4gD,GAEhB,IACbH,KAAM,SAASttE,EAASiN,GACtB,IAAIrQ,EAAIzJ,KAAKC,KAPR,kBAOa6Z,GACd7d,EAAIo5D,GAAK5rD,EACTjJ,EAAI80D,GAAK7rD,EACboD,EAAQmuB,OAAO,GAAIvxB,GACnBoD,EAAQquB,OAAOj/B,EAAGuE,GAClB,IAAK,IAAIvK,EAAI,EAAGA,EAAI,IAAKA,EAAG,CAC1B,IAAIuF,EAAIk+B,GAAMzjC,EAAI,EACdgO,EAAIjE,KAAKs5B,IAAI99B,GACbF,EAAI0E,KAAKu5B,IAAI/9B,GACjBqR,EAAQquB,OAAO5/B,EAAImO,GAAIxF,EAAIwF,GAC3BoD,EAAQquB,OAAOj3B,EAAIhI,EAAIX,EAAIkF,EAAGlF,EAAIW,EAAIgI,EAAIzD,GAE5CqM,EAAQouB,cCrBG,IACbk/C,KAAM,SAASttE,EAASiN,GACtB,IAAIma,EAAIj0B,KAAKC,KAAK6Z,GACd7d,GAAKg4B,EAAI,EACbpnB,EAAQke,KAAK9uB,EAAGA,EAAGg4B,EAAGA,KCJtBsmD,GAAQv6E,KAAKC,KAAK,GAEP,IACbk6E,KAAM,SAASttE,EAASiN,GACtB,IAAItZ,GAAKR,KAAKC,KAAK6Z,GAAgB,EAARygE,KAC3B1tE,EAAQmuB,OAAO,EAAO,EAAJx6B,GAClBqM,EAAQquB,QAAQq/C,GAAQ/5E,GAAIA,GAC5BqM,EAAQquB,OAAOq/C,GAAQ/5E,GAAIA,GAC3BqM,EAAQouB,cCRRh3B,IAAK,GACL3I,GAAI0E,KAAKC,KAAK,GAAK,EACnBsH,GAAI,EAAIvH,KAAKC,KAAK,IAClBzE,GAAkB,GAAb+L,GAAI,EAAI,GAEF,IACb4yE,KAAM,SAASttE,EAASiN,GACtB,IAAIrQ,EAAIzJ,KAAKC,KAAK6Z,EAAOte,IACrBoL,EAAK6C,EAAI,EACTgyB,EAAKhyB,EAAIlC,GACTV,EAAKD,EACLw0B,EAAK3xB,EAAIlC,GAAIkC,EACb6xB,GAAMz0B,EACN00B,EAAKH,EACTvuB,EAAQmuB,OAAOp0B,EAAI60B,GACnB5uB,EAAQquB,OAAOr0B,EAAIu0B,GACnBvuB,EAAQquB,OAAOI,EAAIC,GACnB1uB,EAAQquB,OAAOj3B,GAAI2C,EAAKtL,GAAImgC,EAAIngC,GAAIsL,EAAK3C,GAAIw3B,GAC7C5uB,EAAQquB,OAAOj3B,GAAI4C,EAAKvL,GAAI8/B,EAAI9/B,GAAIuL,EAAK5C,GAAIm3B,GAC7CvuB,EAAQquB,OAAOj3B,GAAIq3B,EAAKhgC,GAAIigC,EAAIjgC,GAAIggC,EAAKr3B,GAAIs3B,GAC7C1uB,EAAQquB,OAAOj3B,GAAI2C,EAAKtL,GAAImgC,EAAIx3B,GAAIw3B,EAAKngC,GAAIsL,GAC7CiG,EAAQquB,OAAOj3B,GAAI4C,EAAKvL,GAAI8/B,EAAIn3B,GAAIm3B,EAAK9/B,GAAIuL,GAC7CgG,EAAQquB,OAAOj3B,GAAIq3B,EAAKhgC,GAAIigC,EAAIt3B,GAAIs3B,EAAKjgC,GAAIggC,GAC7CzuB,EAAQouB,cCbDzlC,GAAU,CACnByxD,GACAhoD,GACAu7E,GACA1U,GACA2U,GACAC,GACAC,IAGa,YAASvrE,EAAM0K,GAC5B,IAAIjN,EAAU,KAId,SAASmwC,IACP,IAAItf,EAGJ,GAFK7wB,IAASA,EAAU6wB,EAASrwB,MACjC+B,EAAKtZ,MAAM+D,KAAM3D,WAAWikF,KAAKttE,GAAUiN,EAAKhkB,MAAM+D,KAAM3D,YACxDwnC,EAAQ,OAAO7wB,EAAU,KAAM6wB,EAAS,IAAM,KAepD,OAtBAtuB,EAAuB,oBAATA,EAAsBA,EAAO1K,GAAS0K,GAAQ63C,IAC5DntC,EAAuB,oBAATA,EAAsBA,EAAOpV,QAAkBrK,IAATyf,EAAqB,IAAMA,GAS/EkjC,EAAO5tC,KAAO,SAAShI,GACrB,OAAOlR,UAAUC,QAAUiZ,EAAoB,oBAANhI,EAAmBA,EAAI1C,GAAS0C,GAAI41C,GAAU5tC,GAGzF4tC,EAAOljC,KAAO,SAAS1S,GACrB,OAAOlR,UAAUC,QAAU2jB,EAAoB,oBAAN1S,EAAmBA,EAAI1C,IAAU0C,GAAI41C,GAAUljC,GAG1FkjC,EAAOnwC,QAAU,SAASzF,GACxB,OAAOlR,UAAUC,QAAU0W,EAAe,MAALzF,EAAY,KAAOA,EAAG41C,GAAUnwC,GAGhEmwC,GC5CM,gBCAR,SAASxyB,GAAM9a,EAAMzT,EAAGuE,GAC7BkP,EAAK6+C,SAASlzB,eACX,EAAI3rB,EAAKkrB,IAAMlrB,EAAKorB,KAAO,GAC3B,EAAIprB,EAAKmrB,IAAMnrB,EAAKqrB,KAAO,GAC3BrrB,EAAKkrB,IAAM,EAAIlrB,EAAKorB,KAAO,GAC3BprB,EAAKmrB,IAAM,EAAInrB,EAAKqrB,KAAO,GAC3BrrB,EAAKkrB,IAAM,EAAIlrB,EAAKorB,IAAM7+B,GAAK,GAC/ByT,EAAKmrB,IAAM,EAAInrB,EAAKqrB,IAAMv6B,GAAK,GAI7B,SAASo6E,GAAM/tE,GACpBhT,KAAK00D,SAAW1hD,EAGlB+tE,GAAMtjF,UAAY,CAChB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAChBjhC,KAAKghC,IAAMhhC,KAAKkhC,IAAMr/B,IACtB7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EAAGnkC,GAAM3wB,KAAMA,KAAKihC,IAAKjhC,KAAKkhC,KACnC,KAAK,EAAGlhC,KAAK00D,SAASrzB,OAAOrhC,KAAKihC,IAAKjhC,KAAKkhC,MAE1ClhC,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK00D,SAASrzB,QAAQ,EAAIrhC,KAAK+gC,IAAM/gC,KAAKihC,KAAO,GAAI,EAAIjhC,KAAKghC,IAAMhhC,KAAKkhC,KAAO,GACzG,QAASvQ,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAM7+B,EAChCpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMv6B,IAIrB,gBAASqM,GACtB,OAAO,IAAI+tE,GAAM/tE,IC9CnB,SAASguE,GAAYhuE,GACnBhT,KAAK00D,SAAW1hD,EAGlBguE,GAAYvjF,UAAY,CACtB0gF,UAAWnpE,GACXopE,QAASppE,GACT+xC,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAAMjhF,KAAKkhF,IAAMlhF,KAAKmhF,IACjDnhF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMphF,KAAKqhF,IAAMrhF,KAAKshF,IAAMz/E,IACvD7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EACH90D,KAAK00D,SAASvzB,OAAOnhC,KAAKihF,IAAKjhF,KAAKohF,KACpCphF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK00D,SAASvzB,QAAQnhC,KAAKihF,IAAM,EAAIjhF,KAAKkhF,KAAO,GAAIlhF,KAAKohF,IAAM,EAAIphF,KAAKqhF,KAAO,GAChFrhF,KAAK00D,SAASrzB,QAAQrhC,KAAKkhF,IAAM,EAAIlhF,KAAKihF,KAAO,GAAIjhF,KAAKqhF,IAAM,EAAIrhF,KAAKohF,KAAO,GAChFphF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK2wB,MAAM3wB,KAAKihF,IAAKjhF,KAAKohF,KAC1BphF,KAAK2wB,MAAM3wB,KAAKkhF,IAAKlhF,KAAKqhF,KAC1BrhF,KAAK2wB,MAAM3wB,KAAKmhF,IAAKnhF,KAAKshF,OAKhC3wD,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAKihF,IAAM7+E,EAAGpC,KAAKohF,IAAMz6E,EAAG,MACrD,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAKkhF,IAAM9+E,EAAGpC,KAAKqhF,IAAM16E,EAAG,MACrD,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAKmhF,IAAM/+E,EAAGpC,KAAKshF,IAAM36E,EAAG3G,KAAK00D,SAASvzB,QAAQnhC,KAAK+gC,IAAM,EAAI/gC,KAAKihC,IAAM7+B,GAAK,GAAIpC,KAAKghC,IAAM,EAAIhhC,KAAKkhC,IAAMv6B,GAAK,GAAI,MACjJ,QAASgqB,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAM7+B,EAChCpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMv6B,IAIrB,gBAASqM,GACtB,OAAO,IAAIguE,GAAYhuE,IChDzB,SAASuuE,GAAUvuE,GACjBhT,KAAK00D,SAAW1hD,EAGlBuuE,GAAU9jF,UAAY,CACpB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAChBjhC,KAAKghC,IAAMhhC,KAAKkhC,IAAMr/B,IACtB7B,KAAK80D,OAAS,GAEhB9N,QAAS,YACHhnD,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,IAAI/nD,GAAM/M,KAAK+gC,IAAM,EAAI/gC,KAAKihC,IAAM7+B,GAAK,EAAGw/B,GAAM5hC,KAAKghC,IAAM,EAAIhhC,KAAKkhC,IAAMv6B,GAAK,EAAG3G,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOt0B,EAAI60B,GAAM5hC,KAAK00D,SAASvzB,OAAOp0B,EAAI60B,GAAK,MACvL,KAAK,EAAG5hC,KAAK80D,OAAS,EACtB,QAASnkC,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAM7+B,EAChCpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMv6B,IAIrB,gBAASqM,GACtB,OAAO,IAAIuuE,GAAUvuE,ICrCjBwuE,G,WACJ,WAAYxuE,EAAS5Q,GAAG,oBACtBpC,KAAK00D,SAAW1hD,EAChBhT,KAAKg/C,GAAK58C,E,6CAEZ,WACEpC,KAAK60D,MAAQ,I,qBAEf,WACE70D,KAAK60D,MAAQhzD,M,uBAEf,WACE7B,KAAK80D,OAAS,I,qBAEhB,YACM90D,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,Q,mBAExB,SAAMzyD,EAAGuE,GAEP,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EACH90D,KAAK80D,OAAS,EACV90D,KAAK60D,MAAO70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GACnC3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAC7B,MAEF,KAAK,EAAG3G,KAAK80D,OAAS,EACtB,QACM90D,KAAKg/C,GAAIh/C,KAAK00D,SAASlzB,cAAcxhC,KAAK+gC,KAAO/gC,KAAK+gC,IAAM3+B,GAAK,EAAGpC,KAAKghC,IAAKhhC,KAAK+gC,IAAKp6B,EAAGvE,EAAGuE,GAC7F3G,KAAK00D,SAASlzB,cAAcxhC,KAAK+gC,IAAK/gC,KAAKghC,KAAOhhC,KAAKghC,IAAMr6B,GAAK,EAAGvE,EAAGpC,KAAKghC,IAAK5+B,EAAGuE,GAI9F3G,KAAK+gC,IAAM3+B,EAAGpC,KAAKghC,IAAMr6B,M,KAItB,SAAS86E,GAAMzuE,GACpB,OAAO,IAAIwuE,GAAKxuE,GAAS,GAGpB,SAAS0uE,GAAM1uE,GACpB,OAAO,IAAIwuE,GAAKxuE,GAAS,GCzC3B,SAAS2uE,GAAO3uE,EAASuvD,GACvBviE,KAAK4hF,OAAS,IAAIb,GAAM/tE,GACxBhT,KAAK6hF,MAAQtf,EAGfof,GAAOlkF,UAAY,CACjBspD,UAAW,WACT/mD,KAAKg/C,GAAK,GACVh/C,KAAKi/C,GAAK,GACVj/C,KAAK4hF,OAAO76B,aAEdC,QAAS,WACP,IAAI5kD,EAAIpC,KAAKg/C,GACTr4C,EAAI3G,KAAKi/C,GACT15C,EAAInD,EAAE9F,OAAS,EAEnB,GAAIiJ,EAAI,EAQN,IAPA,IAKIyI,EALAjB,EAAK3K,EAAE,GACPw/B,EAAKj7B,EAAE,GACPq3B,EAAK57B,EAAEmD,GAAKwH,EACZkxB,EAAKt3B,EAAEpB,GAAKq8B,EACZxlC,GAAK,IAGAA,GAAKmJ,GACZyI,EAAI5R,EAAImJ,EACRvF,KAAK4hF,OAAOjxD,MACV3wB,KAAK6hF,MAAQz/E,EAAEhG,IAAM,EAAI4D,KAAK6hF,QAAU90E,EAAKiB,EAAIgwB,GACjDh+B,KAAK6hF,MAAQl7E,EAAEvK,IAAM,EAAI4D,KAAK6hF,QAAUjgD,EAAK5zB,EAAIiwB,IAKvDj+B,KAAKg/C,GAAKh/C,KAAKi/C,GAAK,KACpBj/C,KAAK4hF,OAAO56B,WAEdr2B,MAAO,SAASvuB,EAAGuE,GACjB3G,KAAKg/C,GAAGhjD,MAAMoG,GACdpC,KAAKi/C,GAAGjjD,MAAM2K,KAIH,gBAAUw0C,EAAOonB,GAE9B,SAASuf,EAAO9uE,GACd,OAAgB,IAATuvD,EAAa,IAAIwe,GAAM/tE,GAAW,IAAI2uE,GAAO3uE,EAASuvD,GAO/D,OAJAuf,EAAOvf,KAAO,SAASA,GACrB,OAAOpnB,GAAQonB,IAGVuf,EAVM,CAWZ,KCvDI,SAASnxD,GAAM9a,EAAMzT,EAAGuE,GAC7BkP,EAAK6+C,SAASlzB,cACZ3rB,EAAKorB,IAAMprB,EAAKksE,IAAMlsE,EAAKorE,IAAMprE,EAAKkrB,KACtClrB,EAAKqrB,IAAMrrB,EAAKksE,IAAMlsE,EAAKurE,IAAMvrE,EAAKmrB,KACtCnrB,EAAKorE,IAAMprE,EAAKksE,IAAMlsE,EAAKorB,IAAM7+B,GACjCyT,EAAKurE,IAAMvrE,EAAKksE,IAAMlsE,EAAKqrB,IAAMv6B,GACjCkP,EAAKorE,IACLprE,EAAKurE,KAIF,SAASY,GAAShvE,EAASivE,GAChCjiF,KAAK00D,SAAW1hD,EAChBhT,KAAK+hF,IAAM,EAAIE,GAAW,EAG5BD,GAASvkF,UAAY,CACnB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAC3BjhF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMv/E,IACjC7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EAAG90D,KAAK00D,SAASrzB,OAAOrhC,KAAKihF,IAAKjhF,KAAKohF,KAAM,MAClD,KAAK,EAAGzwD,GAAM3wB,KAAMA,KAAKihC,IAAKjhC,KAAKkhC,MAEjClhC,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAKihC,IAAM7+B,EAAGpC,KAAKkhC,IAAMv6B,EAAG,MACrD,KAAK,EAAG3G,KAAK80D,OAAS,EACtB,QAASnkC,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO8mC,GAE9B,SAASC,EAASlvE,GAChB,OAAO,IAAIgvE,GAAShvE,EAASivE,GAO/B,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO9mC,GAAQ8mC,IAGVC,EAVM,CAWZ,GCzDI,SAASC,GAAenvE,EAASivE,GACtCjiF,KAAK00D,SAAW1hD,EAChBhT,KAAK+hF,IAAM,EAAIE,GAAW,EAG5BE,GAAe1kF,UAAY,CACzB0gF,UAAWnpE,GACXopE,QAASppE,GACT+xC,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAAMjhF,KAAKkhF,IAAMlhF,KAAKmhF,IAAMnhF,KAAKoiF,IAC5DpiF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMphF,KAAKqhF,IAAMrhF,KAAKshF,IAAMthF,KAAKqiF,IAAMxgF,IAClE7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EACH90D,KAAK00D,SAASvzB,OAAOnhC,KAAKkhF,IAAKlhF,KAAKqhF,KACpCrhF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK00D,SAASrzB,OAAOrhC,KAAKkhF,IAAKlhF,KAAKqhF,KACpCrhF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK2wB,MAAM3wB,KAAKkhF,IAAKlhF,KAAKqhF,KAC1BrhF,KAAK2wB,MAAM3wB,KAAKmhF,IAAKnhF,KAAKshF,KAC1BthF,KAAK2wB,MAAM3wB,KAAKoiF,IAAKpiF,KAAKqiF,OAKhC1xD,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAKkhF,IAAM9+E,EAAGpC,KAAKqhF,IAAM16E,EAAG,MACrD,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAK00D,SAASvzB,OAAOnhC,KAAKmhF,IAAM/+E,EAAGpC,KAAKshF,IAAM36E,GAAI,MAC3E,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAKoiF,IAAMhgF,EAAGpC,KAAKqiF,IAAM17E,EAAG,MACrD,QAASgqB,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO8mC,GAE9B,SAASC,EAASlvE,GAChB,OAAO,IAAImvE,GAAenvE,EAASivE,GAOrC,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO9mC,GAAQ8mC,IAGVC,EAVM,CAWZ,GC1DI,SAASI,GAAatvE,EAASivE,GACpCjiF,KAAK00D,SAAW1hD,EAChBhT,KAAK+hF,IAAM,EAAIE,GAAW,EAG5BK,GAAa7kF,UAAY,CACvB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAC3BjhF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMv/E,IACjC7B,KAAK80D,OAAS,GAEhB9N,QAAS,YACHhnD,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOrhC,KAAKihF,IAAKjhF,KAAKohF,KAAOphF,KAAK00D,SAASvzB,OAAOnhC,KAAKihF,IAAKjhF,KAAKohF,KAAM,MAC3H,KAAK,EAAGphF,KAAK80D,OAAS,EACtB,QAASnkC,GAAM3wB,KAAMoC,EAAGuE,GAE1B3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO8mC,GAE9B,SAASC,EAASlvE,GAChB,OAAO,IAAIsvE,GAAatvE,EAASivE,GAOnC,OAJAC,EAASD,QAAU,SAASA,GAC1B,OAAO9mC,GAAQ8mC,IAGVC,EAVM,CAWZ,GC7CI,SAASvxD,GAAM9a,EAAMzT,EAAGuE,GAC7B,IAAIqG,EAAK6I,EAAKorB,IACVM,EAAK1rB,EAAKqrB,IACVO,EAAK5rB,EAAKorE,IACVv/C,EAAK7rB,EAAKurE,IAEd,GAAIvrE,EAAK0sE,OAAS1wE,GAAS,CACzB,IAAIlQ,EAAI,EAAIkU,EAAK2sE,QAAU,EAAI3sE,EAAK0sE,OAAS1sE,EAAK4sE,OAAS5sE,EAAK6sE,QAC5D1hF,EAAI,EAAI6U,EAAK0sE,QAAU1sE,EAAK0sE,OAAS1sE,EAAK4sE,QAC9Cz1E,GAAMA,EAAKrL,EAAIkU,EAAKkrB,IAAMlrB,EAAK6sE,QAAU7sE,EAAKorE,IAAMprE,EAAK2sE,SAAWxhF,EACpEugC,GAAMA,EAAK5/B,EAAIkU,EAAKmrB,IAAMnrB,EAAK6sE,QAAU7sE,EAAKurE,IAAMvrE,EAAK2sE,SAAWxhF,EAGtE,GAAI6U,EAAK8sE,OAAS9wE,GAAS,CACzB,IAAIjQ,EAAI,EAAIiU,EAAK+sE,QAAU,EAAI/sE,EAAK8sE,OAAS9sE,EAAK4sE,OAAS5sE,EAAK6sE,QAC5Dv1E,EAAI,EAAI0I,EAAK8sE,QAAU9sE,EAAK8sE,OAAS9sE,EAAK4sE,QAC9ChhD,GAAMA,EAAK7/B,EAAIiU,EAAKorB,IAAMprB,EAAK+sE,QAAUxgF,EAAIyT,EAAK6sE,SAAWv1E,EAC7Du0B,GAAMA,EAAK9/B,EAAIiU,EAAKqrB,IAAMrrB,EAAK+sE,QAAUj8E,EAAIkP,EAAK6sE,SAAWv1E,EAG/D0I,EAAK6+C,SAASlzB,cAAcx0B,EAAIu0B,EAAIE,EAAIC,EAAI7rB,EAAKorE,IAAKprE,EAAKurE,KAG7D,SAASyB,GAAW7vE,EAASkuC,GAC3BlhD,KAAK00D,SAAW1hD,EAChBhT,KAAK8iF,OAAS5hC,EAGhB2hC,GAAWplF,UAAY,CACrB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAC3BjhF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMv/E,IACjC7B,KAAKuiF,OAASviF,KAAKyiF,OAASziF,KAAK2iF,OACjC3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAU1iF,KAAK4iF,QACnC5iF,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EAAG90D,KAAK00D,SAASrzB,OAAOrhC,KAAKihF,IAAKjhF,KAAKohF,KAAM,MAClD,KAAK,EAAGphF,KAAK2wB,MAAM3wB,KAAKihF,IAAKjhF,KAAKohF,MAEhCphF,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAGjB,GAFAvE,GAAKA,EAAGuE,GAAKA,EAET3G,KAAK80D,OAAQ,CACf,IAAIiuB,EAAM/iF,KAAKihF,IAAM7+E,EACjB4gF,EAAMhjF,KAAKohF,IAAMz6E,EACrB3G,KAAK2iF,OAASx8E,KAAKC,KAAKpG,KAAK4iF,QAAUz8E,KAAK4F,IAAIg3E,EAAMA,EAAMC,EAAMA,EAAKhjF,KAAK8iF,SAG9E,OAAQ9iF,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EACtB,QAASnkC,GAAM3wB,KAAMoC,EAAGuE,GAG1B3G,KAAKuiF,OAASviF,KAAKyiF,OAAQziF,KAAKyiF,OAASziF,KAAK2iF,OAC9C3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAS1iF,KAAK0iF,QAAU1iF,KAAK4iF,QACjD5iF,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO+F,GAE9B,SAAS+hC,EAAWjwE,GAClB,OAAOkuC,EAAQ,IAAI2hC,GAAW7vE,EAASkuC,GAAS,IAAI8gC,GAAShvE,EAAS,GAOxE,OAJAiwE,EAAW/hC,MAAQ,SAASA,GAC1B,OAAO/F,GAAQ+F,IAGV+hC,EAVM,CAWZ,ICnFH,SAASC,GAAiBlwE,EAASkuC,GACjClhD,KAAK00D,SAAW1hD,EAChBhT,KAAK8iF,OAAS5hC,EAGhBgiC,GAAiBzlF,UAAY,CAC3B0gF,UAAWnpE,GACXopE,QAASppE,GACT+xC,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAAMjhF,KAAKkhF,IAAMlhF,KAAKmhF,IAAMnhF,KAAKoiF,IAC5DpiF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMphF,KAAKqhF,IAAMrhF,KAAKshF,IAAMthF,KAAKqiF,IAAMxgF,IAClE7B,KAAKuiF,OAASviF,KAAKyiF,OAASziF,KAAK2iF,OACjC3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAU1iF,KAAK4iF,QACnC5iF,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EACH90D,KAAK00D,SAASvzB,OAAOnhC,KAAKkhF,IAAKlhF,KAAKqhF,KACpCrhF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK00D,SAASrzB,OAAOrhC,KAAKkhF,IAAKlhF,KAAKqhF,KACpCrhF,KAAK00D,SAAStzB,YACd,MAEF,KAAK,EACHphC,KAAK2wB,MAAM3wB,KAAKkhF,IAAKlhF,KAAKqhF,KAC1BrhF,KAAK2wB,MAAM3wB,KAAKmhF,IAAKnhF,KAAKshF,KAC1BthF,KAAK2wB,MAAM3wB,KAAKoiF,IAAKpiF,KAAKqiF,OAKhC1xD,MAAO,SAASvuB,EAAGuE,GAGjB,GAFAvE,GAAKA,EAAGuE,GAAKA,EAET3G,KAAK80D,OAAQ,CACf,IAAIiuB,EAAM/iF,KAAKihF,IAAM7+E,EACjB4gF,EAAMhjF,KAAKohF,IAAMz6E,EACrB3G,KAAK2iF,OAASx8E,KAAKC,KAAKpG,KAAK4iF,QAAUz8E,KAAK4F,IAAIg3E,EAAMA,EAAMC,EAAMA,EAAKhjF,KAAK8iF,SAG9E,OAAQ9iF,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAKkhF,IAAM9+E,EAAGpC,KAAKqhF,IAAM16E,EAAG,MACrD,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAK00D,SAASvzB,OAAOnhC,KAAKmhF,IAAM/+E,EAAGpC,KAAKshF,IAAM36E,GAAI,MAC3E,KAAK,EAAG3G,KAAK80D,OAAS,EAAG90D,KAAKoiF,IAAMhgF,EAAGpC,KAAKqiF,IAAM17E,EAAG,MACrD,QAASgqB,GAAM3wB,KAAMoC,EAAGuE,GAG1B3G,KAAKuiF,OAASviF,KAAKyiF,OAAQziF,KAAKyiF,OAASziF,KAAK2iF,OAC9C3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAS1iF,KAAK0iF,QAAU1iF,KAAK4iF,QACjD5iF,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO+F,GAE9B,SAAS+hC,EAAWjwE,GAClB,OAAOkuC,EAAQ,IAAIgiC,GAAiBlwE,EAASkuC,GAAS,IAAIihC,GAAenvE,EAAS,GAOpF,OAJAiwE,EAAW/hC,MAAQ,SAASA,GAC1B,OAAO/F,GAAQ+F,IAGV+hC,EAVM,CAWZ,ICtEH,SAASE,GAAenwE,EAASkuC,GAC/BlhD,KAAK00D,SAAW1hD,EAChBhT,KAAK8iF,OAAS5hC,EAGhBiiC,GAAe1lF,UAAY,CACzB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAAMjhC,KAAKihF,IAC3BjhF,KAAKghC,IAAMhhC,KAAKkhC,IAAMlhC,KAAKohF,IAAMv/E,IACjC7B,KAAKuiF,OAASviF,KAAKyiF,OAASziF,KAAK2iF,OACjC3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAU1iF,KAAK4iF,QACnC5iF,KAAK80D,OAAS,GAEhB9N,QAAS,YACHhnD,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GAGjB,GAFAvE,GAAKA,EAAGuE,GAAKA,EAET3G,KAAK80D,OAAQ,CACf,IAAIiuB,EAAM/iF,KAAKihF,IAAM7+E,EACjB4gF,EAAMhjF,KAAKohF,IAAMz6E,EACrB3G,KAAK2iF,OAASx8E,KAAKC,KAAKpG,KAAK4iF,QAAUz8E,KAAK4F,IAAIg3E,EAAMA,EAAMC,EAAMA,EAAKhjF,KAAK8iF,SAG9E,OAAQ9iF,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOrhC,KAAKihF,IAAKjhF,KAAKohF,KAAOphF,KAAK00D,SAASvzB,OAAOnhC,KAAKihF,IAAKjhF,KAAKohF,KAAM,MAC3H,KAAK,EAAGphF,KAAK80D,OAAS,EACtB,QAASnkC,GAAM3wB,KAAMoC,EAAGuE,GAG1B3G,KAAKuiF,OAASviF,KAAKyiF,OAAQziF,KAAKyiF,OAASziF,KAAK2iF,OAC9C3iF,KAAKwiF,QAAUxiF,KAAK0iF,QAAS1iF,KAAK0iF,QAAU1iF,KAAK4iF,QACjD5iF,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAMjhC,KAAKihF,IAAKjhF,KAAKihF,IAAM7+E,EACrDpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMlhC,KAAKohF,IAAKphF,KAAKohF,IAAMz6E,IAI1C,gBAAUw0C,EAAO+F,GAE9B,SAAS+hC,EAAWjwE,GAClB,OAAOkuC,EAAQ,IAAIiiC,GAAenwE,EAASkuC,GAAS,IAAIohC,GAAatvE,EAAS,GAOhF,OAJAiwE,EAAW/hC,MAAQ,SAASA,GAC1B,OAAO/F,GAAQ+F,IAGV+hC,EAVM,CAWZ,IC3DH,SAASG,GAAapwE,GACpBhT,KAAK00D,SAAW1hD,EAGlBowE,GAAa3lF,UAAY,CACvB0gF,UAAWnpE,GACXopE,QAASppE,GACT+xC,UAAW,WACT/mD,KAAK80D,OAAS,GAEhB9N,QAAS,WACHhnD,KAAK80D,QAAQ90D,KAAK00D,SAAStzB,aAEjCzQ,MAAO,SAASvuB,EAAGuE,GACjBvE,GAAKA,EAAGuE,GAAKA,EACT3G,KAAK80D,OAAQ90D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,IACpC3G,KAAK80D,OAAS,EAAG90D,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,MAInC,gBAASqM,GACtB,OAAO,IAAIowE,GAAapwE,ICvB1B,SAASs/B,GAAKlwC,GACZ,OAAOA,EAAI,GAAK,EAAI,EAOtB,SAASihF,GAAOxtE,EAAM4rB,EAAIC,GACxB,IAAIiR,EAAK98B,EAAKorB,IAAMprB,EAAKkrB,IACrB6R,EAAKnR,EAAK5rB,EAAKorB,IACf9D,GAAMtnB,EAAKqrB,IAAMrrB,EAAKmrB,MAAQ2R,GAAMC,EAAK,IAAM,GAC/CxV,GAAMsE,EAAK7rB,EAAKqrB,MAAQ0R,GAAMD,EAAK,IAAM,GACzC9zC,GAAKs+B,EAAKyV,EAAKxV,EAAKuV,IAAOA,EAAKC,GACpC,OAAQN,GAAKnV,GAAMmV,GAAKlV,IAAOj3B,KAAKG,IAAIH,KAAKS,IAAIu2B,GAAKh3B,KAAKS,IAAIw2B,GAAK,GAAMj3B,KAAKS,IAAI/H,KAAO,EAI5F,SAASykF,GAAOztE,EAAM7H,GACpB,IAAIgf,EAAInX,EAAKorB,IAAMprB,EAAKkrB,IACxB,OAAO/T,GAAK,GAAKnX,EAAKqrB,IAAMrrB,EAAKmrB,KAAOhU,EAAIhf,GAAK,EAAIA,EAMvD,SAAS2iB,GAAM9a,EAAMgd,EAAItF,GACvB,IAAIxgB,EAAK8I,EAAKkrB,IACVa,EAAK/rB,EAAKmrB,IACVh0B,EAAK6I,EAAKorB,IACVM,EAAK1rB,EAAKqrB,IACVlD,GAAMhxB,EAAKD,GAAM,EACrB8I,EAAK6+C,SAASlzB,cAAcz0B,EAAKixB,EAAI4D,EAAK5D,EAAKnL,EAAI7lB,EAAKgxB,EAAIuD,EAAKvD,EAAKzQ,EAAIvgB,EAAIu0B,GAGhF,SAASgiD,GAAUvwE,GACjBhT,KAAK00D,SAAW1hD,EA0ClB,SAASwwE,GAAUxwE,GACjBhT,KAAK00D,SAAW,IAAI+uB,GAAezwE,GAOrC,SAASywE,GAAezwE,GACtBhT,KAAK00D,SAAW1hD,EAUX,SAAS0wE,GAAU1wE,GACxB,OAAO,IAAIuwE,GAAUvwE,GAGhB,SAAS2wE,GAAU3wE,GACxB,OAAO,IAAIwwE,GAAUxwE,GCtGvB,SAAS4wE,GAAQ5wE,GACfhT,KAAK00D,SAAW1hD,EA2ClB,SAAS6wE,GAAczhF,GACrB,IAAIhG,EAEA+Q,EADAnM,EAAIoB,EAAE9F,OAAS,EAEfqF,EAAI,IAAIoB,MAAM/B,GACdY,EAAI,IAAImB,MAAM/B,GACd4O,EAAI,IAAI7M,MAAM/B,GAElB,IADAW,EAAE,GAAK,EAAGC,EAAE,GAAK,EAAGgO,EAAE,GAAKxN,EAAE,GAAK,EAAIA,EAAE,GACnChG,EAAI,EAAGA,EAAI4E,EAAI,IAAK5E,EAAGuF,EAAEvF,GAAK,EAAGwF,EAAExF,GAAK,EAAGwT,EAAExT,GAAK,EAAIgG,EAAEhG,GAAK,EAAIgG,EAAEhG,EAAI,GAE5E,IADAuF,EAAEX,EAAI,GAAK,EAAGY,EAAEZ,EAAI,GAAK,EAAG4O,EAAE5O,EAAI,GAAK,EAAIoB,EAAEpB,EAAI,GAAKoB,EAAEpB,GACnD5E,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG+Q,EAAIxL,EAAEvF,GAAKwF,EAAExF,EAAI,GAAIwF,EAAExF,IAAM+Q,EAAGyC,EAAExT,IAAM+Q,EAAIyC,EAAExT,EAAI,GAE1E,IADAuF,EAAEX,EAAI,GAAK4O,EAAE5O,EAAI,GAAKY,EAAEZ,EAAI,GACvB5E,EAAI4E,EAAI,EAAG5E,GAAK,IAAKA,EAAGuF,EAAEvF,IAAMwT,EAAExT,GAAKuF,EAAEvF,EAAI,IAAMwF,EAAExF,GAE1D,IADAwF,EAAEZ,EAAI,IAAMoB,EAAEpB,GAAKW,EAAEX,EAAI,IAAM,EAC1B5E,EAAI,EAAGA,EAAI4E,EAAI,IAAK5E,EAAGwF,EAAExF,GAAK,EAAIgG,EAAEhG,EAAI,GAAKuF,EAAEvF,EAAI,GACxD,MAAO,CAACuF,EAAGC,GDpBb2hF,GAAU9lF,UAAY,CACpB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAK+gC,IAAM/gC,KAAKihC,IAChBjhC,KAAKghC,IAAMhhC,KAAKkhC,IAChBlhC,KAAK8jF,IAAMjiF,IACX7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACP,OAAQhnD,KAAK80D,QACX,KAAK,EAAG90D,KAAK00D,SAASrzB,OAAOrhC,KAAKihC,IAAKjhC,KAAKkhC,KAAM,MAClD,KAAK,EAAGvQ,GAAM3wB,KAAMA,KAAK8jF,IAAKR,GAAOtjF,KAAMA,KAAK8jF,OAE9C9jF,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACzEphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,OAExBlkC,MAAO,SAASvuB,EAAGuE,GACjB,IAAI4mB,EAAK1rB,IAGT,GADQ8E,GAAKA,GAAbvE,GAAKA,KACKpC,KAAKihC,KAAOt6B,IAAM3G,KAAKkhC,IAAjC,CACA,OAAQlhC,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EAAG,MACzB,KAAK,EAAG90D,KAAK80D,OAAS,EAAGnkC,GAAM3wB,KAAMsjF,GAAOtjF,KAAMutB,EAAK81D,GAAOrjF,KAAMoC,EAAGuE,IAAK4mB,GAAK,MACjF,QAASoD,GAAM3wB,KAAMA,KAAK8jF,IAAKv2D,EAAK81D,GAAOrjF,KAAMoC,EAAGuE,IAGtD3G,KAAK+gC,IAAM/gC,KAAKihC,IAAKjhC,KAAKihC,IAAM7+B,EAChCpC,KAAKghC,IAAMhhC,KAAKkhC,IAAKlhC,KAAKkhC,IAAMv6B,EAChC3G,KAAK8jF,IAAMv2D,MAQdi2D,GAAU/lF,UAAYhC,OAAOwD,OAAOskF,GAAU9lF,YAAYkzB,MAAQ,SAASvuB,EAAGuE,GAC7E48E,GAAU9lF,UAAUkzB,MAAMpxB,KAAKS,KAAM2G,EAAGvE,IAO1CqhF,GAAehmF,UAAY,CACzB0jC,OAAQ,SAAS/+B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAOx6B,EAAGvE,IACjDg/B,UAAW,WAAaphC,KAAK00D,SAAStzB,aACtCC,OAAQ,SAASj/B,EAAGuE,GAAK3G,KAAK00D,SAASrzB,OAAO16B,EAAGvE,IACjDo/B,cAAe,SAASx0B,EAAIu0B,EAAIE,EAAIC,EAAIt/B,EAAGuE,GAAK3G,KAAK00D,SAASlzB,cAAcD,EAAIv0B,EAAI00B,EAAID,EAAI96B,EAAGvE,KC1FjGwhF,GAAQnmF,UAAY,CAClB0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAKg/C,GAAK,GACVh/C,KAAKi/C,GAAK,IAEZ+H,QAAS,WACP,IAAI5kD,EAAIpC,KAAKg/C,GACTr4C,EAAI3G,KAAKi/C,GACTj+C,EAAIoB,EAAE9F,OAEV,GAAI0E,EAEF,GADAhB,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAE,GAAIuE,EAAE,IAAM3G,KAAK00D,SAASvzB,OAAO/+B,EAAE,GAAIuE,EAAE,IACnE,IAAN3F,EACFhB,KAAK00D,SAASrzB,OAAOj/B,EAAE,GAAIuE,EAAE,SAI7B,IAFA,IAAIkqC,EAAKgzC,GAAczhF,GACnB0uC,EAAK+yC,GAAcl9E,GACdwH,EAAK,EAAGsC,EAAK,EAAGA,EAAKzP,IAAKmN,IAAMsC,EACvCzQ,KAAK00D,SAASlzB,cAAcqP,EAAG,GAAG1iC,GAAK2iC,EAAG,GAAG3iC,GAAK0iC,EAAG,GAAG1iC,GAAK2iC,EAAG,GAAG3iC,GAAK/L,EAAEqO,GAAK9J,EAAE8J,KAKnFzQ,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAAqB,IAAN7zD,IAAUhB,KAAK00D,SAAStzB,YAC/DphC,KAAK60D,MAAQ,EAAI70D,KAAK60D,MACtB70D,KAAKg/C,GAAKh/C,KAAKi/C,GAAK,MAEtBtuB,MAAO,SAASvuB,EAAGuE,GACjB3G,KAAKg/C,GAAGhjD,MAAMoG,GACdpC,KAAKi/C,GAAGjjD,MAAM2K,KAuBH,gBAASqM,GACtB,OAAO,IAAI4wE,GAAQ5wE,IC/DrB,SAAS+wE,GAAK/wE,EAAShF,GACrBhO,KAAK00D,SAAW1hD,EAChBhT,KAAKgkF,GAAKh2E,EAGZ+1E,GAAKtmF,UAAY,CACf0gF,UAAW,WACTn+E,KAAK60D,MAAQ,GAEfupB,QAAS,WACPp+E,KAAK60D,MAAQhzD,KAEfklD,UAAW,WACT/mD,KAAKg/C,GAAKh/C,KAAKi/C,GAAKp9C,IACpB7B,KAAK80D,OAAS,GAEhB9N,QAAS,WACH,EAAIhnD,KAAKgkF,IAAMhkF,KAAKgkF,GAAK,GAAqB,IAAhBhkF,KAAK80D,QAAc90D,KAAK00D,SAASrzB,OAAOrhC,KAAKg/C,GAAIh/C,KAAKi/C,KACpFj/C,KAAK60D,OAAyB,IAAf70D,KAAK60D,OAA+B,IAAhB70D,KAAK80D,SAAe90D,KAAK00D,SAAStzB,YACrEphC,KAAK60D,OAAS,IAAG70D,KAAKgkF,GAAK,EAAIhkF,KAAKgkF,GAAIhkF,KAAK60D,MAAQ,EAAI70D,KAAK60D,QAEpElkC,MAAO,SAASvuB,EAAGuE,GAEjB,OADAvE,GAAKA,EAAGuE,GAAKA,EACL3G,KAAK80D,QACX,KAAK,EAAG90D,KAAK80D,OAAS,EAAG90D,KAAK60D,MAAQ70D,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,GAAK3G,KAAK00D,SAASvzB,OAAO/+B,EAAGuE,GAAI,MAC/F,KAAK,EAAG3G,KAAK80D,OAAS,EACtB,QACE,GAAI90D,KAAKgkF,IAAM,EACbhkF,KAAK00D,SAASrzB,OAAOrhC,KAAKg/C,GAAIr4C,GAC9B3G,KAAK00D,SAASrzB,OAAOj/B,EAAGuE,OACnB,CACL,IAAIqG,EAAKhN,KAAKg/C,IAAM,EAAIh/C,KAAKgkF,IAAM5hF,EAAIpC,KAAKgkF,GAC5ChkF,KAAK00D,SAASrzB,OAAOr0B,EAAIhN,KAAKi/C,IAC9Bj/C,KAAK00D,SAASrzB,OAAOr0B,EAAIrG,IAK/B3G,KAAKg/C,GAAK58C,EAAGpC,KAAKi/C,GAAKt4C,IAIZ,gBAASqM,GACtB,OAAO,IAAI+wE,GAAK/wE,EAAS,KAGpB,SAASixE,GAAWjxE,GACzB,OAAO,IAAI+wE,GAAK/wE,EAAS,GAGpB,SAASkxE,GAAUlxE,GACxB,OAAO,IAAI+wE,GAAK/wE,EAAS,GCnDZ,gBAASmxE,EAAQxwE,GAC9B,IAAO3S,EAAImjF,EAAO7nF,QAAU,EAC5B,IAAK,IAAWiJ,EAAG43B,EAA2Bn8B,EAArC5E,EAAI,EAAUghC,EAAK+mD,EAAOxwE,EAAM,IAAQxG,EAAIiwB,EAAG9gC,OAAQF,EAAI4E,IAAK5E,EAEvE,IADA+gC,EAAKC,EAAIA,EAAK+mD,EAAOxwE,EAAMvX,IACtBmJ,EAAI,EAAGA,EAAI4H,IAAK5H,EACnB63B,EAAG73B,GAAG,IAAM63B,EAAG73B,GAAG,GAAKwnB,MAAMoQ,EAAG53B,GAAG,IAAM43B,EAAG53B,GAAG,GAAK43B,EAAG53B,GAAG,ICLjD,YAAS4+E,GAEtB,IADA,IAAInjF,EAAImjF,EAAO7nF,OAAQqB,EAAI,IAAIoF,MAAM/B,KAC5BA,GAAK,GAAGrD,EAAEqD,GAAKA,EACxB,OAAOrD,GCET,SAASymF,GAAW5hF,EAAG/F,GACrB,OAAO+F,EAAE/F,GAGX,SAAS4nF,GAAY5nF,GACnB,IAAM0nF,EAAS,GAEf,OADAA,EAAO1nF,IAAMA,EACN0nF,EAGM,kBACb,IAAI3oF,EAAOqP,GAAS,IAChB8I,EAAQ2wE,GACRryE,EAASsyE,GACT/lF,EAAQ4lF,GAEZ,SAASI,EAAM33E,GACb,IACIzQ,EACAqoF,EAHe,EACfC,EAAK3hF,MAAMxB,KAAK/F,EAAKS,MAAM+D,KAAM3D,WAAYgoF,IAC1CrjF,EAAI0jF,EAAGpoF,OAAQiJ,GAAK,EAFR,IAKHsH,GALG,IAKnB,2BAAsB,KAAXrK,EAAW,QACpB,IAAKpG,EAAI,IAAKmJ,EAAGnJ,EAAI4E,IAAK5E,GACvBsoF,EAAGtoF,GAAGmJ,GAAK,CAAC,GAAI/G,EAAMgE,EAAGkiF,EAAGtoF,GAAGK,IAAK8I,EAAGsH,KAAQA,KAAOrK,GAPxC,8BAWnB,IAAKpG,EAAI,EAAGqoF,EAAK1/E,GAAM4O,EAAM+wE,IAAMtoF,EAAI4E,IAAK5E,EAC1CsoF,EAAGD,EAAGroF,IAAImI,MAAQnI,EAIpB,OADA6V,EAAOyyE,EAAID,GACJC,EAmBT,OAhBAF,EAAMhpF,KAAO,SAAS+R,GACpB,OAAOlR,UAAUC,QAAUd,EAAoB,oBAAN+R,EAAmBA,EAAI1C,GAAS9H,MAAMxB,KAAKgM,IAAKi3E,GAAShpF,GAGpGgpF,EAAMhmF,MAAQ,SAAS+O,GACrB,OAAOlR,UAAUC,QAAUkC,EAAqB,oBAAN+O,EAAmBA,EAAI1C,IAAU0C,GAAIi3E,GAAShmF,GAG1FgmF,EAAM7wE,MAAQ,SAASpG,GACrB,OAAOlR,UAAUC,QAAUqX,EAAa,MAALpG,EAAY+2E,GAAyB,oBAAN/2E,EAAmBA,EAAI1C,GAAS9H,MAAMxB,KAAKgM,IAAKi3E,GAAS7wE,GAG7H6wE,EAAMvyE,OAAS,SAAS1E,GACtB,OAAOlR,UAAUC,QAAU2V,EAAc,MAAL1E,EAAYg3E,GAAah3E,EAAGi3E,GAASvyE,GAGpEuyE,GCtDM,YAASL,EAAQxwE,GAC9B,IAAO3S,EAAImjF,EAAO7nF,QAAU,EAA5B,CACA,IAAK,IAAIF,EAAG4E,EAAgC2F,EAA7BpB,EAAI,EAAG4H,EAAIg3E,EAAO,GAAG7nF,OAAWiJ,EAAI4H,IAAK5H,EAAG,CACzD,IAAKoB,EAAIvK,EAAI,EAAGA,EAAI4E,IAAK5E,EAAGuK,GAAKw9E,EAAO/nF,GAAGmJ,GAAG,IAAM,EACpD,GAAIoB,EAAG,IAAKvK,EAAI,EAAGA,EAAI4E,IAAK5E,EAAG+nF,EAAO/nF,GAAGmJ,GAAG,IAAMoB,EAEpDmP,GAAKquE,EAAQxwE,KCRA,YAASwwE,EAAQxwE,GAC9B,IAAO3S,EAAImjF,EAAO7nF,QAAU,EAC5B,IAAK,IAAIF,EAAUoG,EAAGy7B,EAAI0R,EAAIg1C,EAAI3jF,EAAtBuE,EAAI,EAAqB4H,EAAIg3E,EAAOxwE,EAAM,IAAIrX,OAAQiJ,EAAI4H,IAAK5H,EACzE,IAAKoqC,EAAKg1C,EAAK,EAAGvoF,EAAI,EAAGA,EAAI4E,IAAK5E,GAC3B6hC,GAAMz7B,EAAI2hF,EAAOxwE,EAAMvX,IAAImJ,IAAI,GAAK/C,EAAE,IAAM,GAC/CA,EAAE,GAAKmtC,EAAIntC,EAAE,GAAKmtC,GAAM1R,GACfA,EAAK,GACdz7B,EAAE,GAAKmiF,EAAIniF,EAAE,GAAKmiF,GAAM1mD,IAExBz7B,EAAE,GAAK,EAAGA,EAAE,GAAKy7B,ICPV,YAASkmD,EAAQxwE,GAC9B,IAAO3S,EAAImjF,EAAO7nF,QAAU,EAA5B,CACA,IAAK,IAAkC0E,EAA9BuE,EAAI,EAAG43B,EAAKgnD,EAAOxwE,EAAM,IAAQxG,EAAIgwB,EAAG7gC,OAAQiJ,EAAI4H,IAAK5H,EAAG,CACnE,IAAK,IAAInJ,EAAI,EAAGuK,EAAI,EAAGvK,EAAI4E,IAAK5E,EAAGuK,GAAKw9E,EAAO/nF,GAAGmJ,GAAG,IAAM,EAC3D43B,EAAG53B,GAAG,IAAM43B,EAAG53B,GAAG,IAAMoB,EAAI,EAE9BmP,GAAKquE,EAAQxwE,KCNA,YAASwwE,EAAQxwE,GAC9B,IAAO3S,EAAImjF,EAAO7nF,QAAU,IAAS6Q,GAAKgwB,EAAKgnD,EAAOxwE,EAAM,KAAKrX,QAAU,EAA3E,CACA,IAAK,IAAkB6gC,EAAIhwB,EAAGnM,EAArB2F,EAAI,EAAGpB,EAAI,EAAaA,EAAI4H,IAAK5H,EAAG,CAC3C,IAAK,IAAInJ,EAAI,EAAGghC,EAAK,EAAGwnD,EAAK,EAAGxoF,EAAI4E,IAAK5E,EAAG,CAK1C,IAJA,IAAIyoF,EAAKV,EAAOxwE,EAAMvX,IAClB0oF,EAAOD,EAAGt/E,GAAG,IAAM,EAEnBw/E,GAAMD,GADCD,EAAGt/E,EAAI,GAAG,IAAM,IACF,EAChBmI,EAAI,EAAGA,EAAItR,IAAKsR,EAAG,CAC1B,IAAI0xD,EAAK+kB,EAAOxwE,EAAMjG,IAGtBq3E,IAFW3lB,EAAG75D,GAAG,IAAM,IACZ65D,EAAG75D,EAAI,GAAG,IAAM,GAG7B63B,GAAM0nD,EAAMF,GAAMG,EAAKD,EAEzB3nD,EAAG53B,EAAI,GAAG,IAAM43B,EAAG53B,EAAI,GAAG,GAAKoB,EAC3By2B,IAAIz2B,GAAKi+E,EAAKxnD,GAEpBD,EAAG53B,EAAI,GAAG,IAAM43B,EAAG53B,EAAI,GAAG,GAAKoB,EAC/BmP,GAAKquE,EAAQxwE,KCpBA,YAASwwE,GACtB,IAAIa,EAAQb,EAAOpjF,IAAIkkF,IACvB,OAAOnvE,GAAKquE,GAAQj6E,MAAK,SAASvI,EAAGC,GAAK,OAAOojF,EAAMrjF,GAAKqjF,EAAMpjF,OAGpE,SAASqjF,GAAKd,GAEZ,IADA,IAAsCe,EAAlC9oF,GAAK,EAAGmJ,EAAI,EAAGvE,EAAImjF,EAAO7nF,OAAY6oF,GAAMryD,MACvC12B,EAAI4E,IAAQkkF,GAAMf,EAAO/nF,GAAG,IAAM+oF,IAAIA,EAAKD,EAAI3/E,EAAInJ,GAC5D,OAAOmJ,ECRM,gBAAS4+E,GACtB,IAAI/gB,EAAO+gB,EAAOpjF,IAAI6E,IACtB,OAAOkQ,GAAKquE,GAAQj6E,MAAK,SAASvI,EAAGC,GAAK,OAAOwhE,EAAKzhE,GAAKyhE,EAAKxhE,OAG3D,SAASgE,GAAIu+E,GAElB,IADA,IAAsCr+E,EAAlCrE,EAAI,EAAGrF,GAAK,EAAG4E,EAAImjF,EAAO7nF,SACrBF,EAAI4E,IAAO8E,GAAKq+E,EAAO/nF,GAAG,MAAIqF,GAAKqE,GAC5C,OAAOrE,ECRM,gBAAS0iF,GACtB,OAAOziF,GAAUyiF,GAAQ/4E,WCAZ,YAAS+4E,GACtB,IACI/nF,EACAmJ,EAFAvE,EAAImjF,EAAO7nF,OAGX8mE,EAAO+gB,EAAOpjF,IAAI6E,IAClB+N,EAAQyxE,GAAWjB,GACnB/yD,EAAM,EACNytB,EAAS,EACTwmC,EAAO,GACPC,EAAU,GAEd,IAAKlpF,EAAI,EAAGA,EAAI4E,IAAK5E,EACnBmJ,EAAIoO,EAAMvX,GACNg1B,EAAMytB,GACRztB,GAAOgyC,EAAK79D,GACZ8/E,EAAKrpF,KAAKuJ,KAEVs5C,GAAUukB,EAAK79D,GACf+/E,EAAQtpF,KAAKuJ,IAIjB,OAAO+/E,EAAQl6E,UAAUqK,OAAO4vE,ICvBnB,YAASlB,GACtB,OAAOruE,GAAKquE,GAAQ/4E,WCDXm6E,GAAe,wBAM1B,IAIeC,GAJCh2D,KAAK/xB,UAAUgoF,YAJ/B,SAAyBn1D,GACvB,OAAOA,EAAKm1D,eAKRnN,GAAUiN,ICFhB,IAIeG,IAJC,IAAIl2D,KAAK,4BALzB,SAAwBvV,GACtB,IAAIqW,EAAO,IAAId,KAAKvV,GACpB,OAAO8S,MAAMuD,GAAQ,KAAOA,GAKxBioD,GAASgN,ICRA,YAAS/vE,EAAUgd,EAAOC,GACvC,IAAIzkB,EAAI,IAAIokB,GAAOuzD,EAAQnzD,EAC3B,OAAa,MAATA,GAAsBxkB,EAAE0kB,QAAQld,EAAUgd,EAAOC,GAAOzkB,IAC5DA,EAAE43E,SAAW53E,EAAE0kB,QACf1kB,EAAE0kB,QAAU,SAASld,EAAUgd,EAAOC,GACpCD,GAASA,EAAOC,EAAe,MAARA,EAAeT,MAASS,EAC/CzkB,EAAE43E,UAAS,SAASlyE,EAAK2f,GACvBA,GAAWsyD,EACX33E,EAAE43E,SAASlyE,EAAMiyE,GAASnzD,EAAOC,GACjCjd,EAAS6d,KACRb,EAAOC,IAEZzkB,EAAE0kB,QAAQld,EAAUgd,EAAOC,GACpBzkB,ICfM,YAAA5L,GAAC,OAAI,kBAAMA,ICAX,SAASyjF,GAAUtwE,EAAnB,GAKZ,IAJDgb,EAIC,EAJDA,YACAp0B,EAGC,EAHDA,OACA4W,EAEC,EAFDA,UACAkC,EACC,EADDA,SAEAxZ,OAAOkB,iBAAiBqD,KAAM,CAC5BuV,KAAM,CAAC/W,MAAO+W,EAAMxZ,YAAY,EAAMqB,cAAc,GACpDmzB,YAAa,CAAC/xB,MAAO+xB,EAAax0B,YAAY,EAAMqB,cAAc,GAClEjB,OAAQ,CAACqC,MAAOrC,EAAQJ,YAAY,EAAMqB,cAAc,GACxD2V,UAAW,CAACvU,MAAOuU,EAAWhX,YAAY,EAAMqB,cAAc,GAC9DmQ,EAAG,CAAC/O,MAAOyW,KCXR,SAAS6wE,GAAUp4E,EAAGtL,EAAGuE,GAC9B3G,KAAK0N,EAAIA,EACT1N,KAAKoC,EAAIA,EACTpC,KAAK2G,EAAIA,EAGXm/E,GAAUroF,UAAY,CACpByB,YAAa4mF,GACb9zE,MAAO,SAAStE,GACd,OAAa,IAANA,EAAU1N,KAAO,IAAI8lF,GAAU9lF,KAAK0N,EAAIA,EAAG1N,KAAKoC,EAAGpC,KAAK2G,IAEjE0uB,UAAW,SAASjzB,EAAGuE,GACrB,OAAa,IAANvE,EAAgB,IAANuE,EAAU3G,KAAO,IAAI8lF,GAAU9lF,KAAK0N,EAAG1N,KAAKoC,EAAIpC,KAAK0N,EAAItL,EAAGpC,KAAK2G,EAAI3G,KAAK0N,EAAI/G,IAEjG1K,MAAO,SAAS00B,GACd,MAAO,CAACA,EAAM,GAAK3wB,KAAK0N,EAAI1N,KAAKoC,EAAGuuB,EAAM,GAAK3wB,KAAK0N,EAAI1N,KAAK2G,IAE/Do/E,OAAQ,SAAS3jF,GACf,OAAOA,EAAIpC,KAAK0N,EAAI1N,KAAKoC,GAE3B4jF,OAAQ,SAASr/E,GACf,OAAOA,EAAI3G,KAAK0N,EAAI1N,KAAK2G,GAE3BqlD,OAAQ,SAASi6B,GACf,MAAO,EAAEA,EAAS,GAAKjmF,KAAKoC,GAAKpC,KAAK0N,GAAIu4E,EAAS,GAAKjmF,KAAK2G,GAAK3G,KAAK0N,IAEzEw4E,QAAS,SAAS9jF,GAChB,OAAQA,EAAIpC,KAAKoC,GAAKpC,KAAK0N,GAE7By4E,QAAS,SAASx/E,GAChB,OAAQA,EAAI3G,KAAK2G,GAAK3G,KAAK0N,GAE7B04E,SAAU,SAAShkF,GACjB,OAAOA,EAAEkR,OAAO7G,OAAOrK,EAAEoN,QAAQzO,IAAIf,KAAKkmF,QAASlmF,MAAMe,IAAIqB,EAAE4pD,OAAQ5pD,KAEzEikF,SAAU,SAAS1/E,GACjB,OAAOA,EAAE2M,OAAO7G,OAAO9F,EAAE6I,QAAQzO,IAAIf,KAAKmmF,QAASnmF,MAAMe,IAAI4F,EAAEqlD,OAAQrlD,KAEzEzD,SAAU,WACR,MAAO,aAAelD,KAAKoC,EAAI,IAAMpC,KAAK2G,EAAI,WAAa3G,KAAK0N,EAAI,MAIjE,IAAIvE,GAAW,IAAI28E,GAAU,EAAG,EAAG,GAI3B,SAAS/yE,GAAUqD,GAChC,MAAQA,EAAKkwE,QAAQ,KAAMlwE,EAAOA,EAAK5B,YAAa,OAAOrL,GAC3D,OAAOiN,EAAKkwE,OCjDP,SAASzlE,GAAc9D,GAC5BA,EAAM+D,2BD4CR/N,GAAUtV,UAAYqoF,GAAUroF,UCzCjB,gBAASsf,GACtBA,EAAMgE,iBACNhE,EAAM+D,4BCMR,SAAS+Z,GAAc9d,GACrB,QAASA,EAAM+d,SAA0B,UAAf/d,EAAMxH,QAAsBwH,EAAMge,OAG9D,SAASC,KACP,IAAIp3B,EAAI5D,KACR,OAAI4D,aAAa2iF,YACf3iF,EAAIA,EAAE6sB,iBAAmB7sB,GACnBq3B,aAAa,WAEV,CAAC,EADRr3B,EAAIA,EAAEs3B,QAAQtF,SACHxzB,EAAGwB,EAAE+C,GAAI,CAAC/C,EAAExB,EAAIwB,EAAEu3B,MAAOv3B,EAAE+C,EAAI/C,EAAEw3B,SAEvC,CAAC,CAAC,EAAG,GAAI,CAACx3B,EAAEu3B,MAAMvF,QAAQp3B,MAAOoF,EAAEw3B,OAAOxF,QAAQp3B,QAEpD,CAAC,CAAC,EAAG,GAAI,CAACoF,EAAE4iF,YAAa5iF,EAAE6iF,eAGpC,SAASC,KACP,OAAO1mF,KAAKsmF,QAAUn9E,GAGxB,SAASw9E,GAAkB5pE,GACzB,OAAQA,EAAM6pE,QAA8B,IAApB7pE,EAAM8pE,UAAkB,IAAO9pE,EAAM8pE,UAAY,EAAI,OAAU9pE,EAAM+d,QAAU,GAAK,GAG9G,SAASO,KACP,OAAOC,UAAUC,gBAAmB,iBAAkBv7B,KAGxD,SAAS8mF,GAAiB/zE,EAAW1M,EAAQ0gF,GAC3C,IAAI9J,EAAMlqE,EAAUmzE,QAAQ7/E,EAAO,GAAG,IAAM0gF,EAAgB,GAAG,GAC3D5J,EAAMpqE,EAAUmzE,QAAQ7/E,EAAO,GAAG,IAAM0gF,EAAgB,GAAG,GAC3D7J,EAAMnqE,EAAUozE,QAAQ9/E,EAAO,GAAG,IAAM0gF,EAAgB,GAAG,GAC3D3J,EAAMrqE,EAAUozE,QAAQ9/E,EAAO,GAAG,IAAM0gF,EAAgB,GAAG,GAC/D,OAAOh0E,EAAUsiB,UACf8nD,EAAMF,GAAOA,EAAME,GAAO,EAAIh3E,KAAKG,IAAI,EAAG22E,IAAQ92E,KAAKI,IAAI,EAAG42E,GAC9DC,EAAMF,GAAOA,EAAME,GAAO,EAAIj3E,KAAKG,IAAI,EAAG42E,IAAQ/2E,KAAKI,IAAI,EAAG62E,IAInD,kBACb,IAUI4J,EACAC,EACAnrD,EAZAlgC,EAASi/B,GACTx0B,EAAS20B,GACTksD,EAAYJ,GACZK,EAAaR,GACb5qD,EAAYV,GACZ+rD,EAAc,CAAC,EAAGt0D,KAClBi0D,EAAkB,CAAC,EAAEj0D,KAAWA,KAAW,CAACA,IAAUA,MACtDiB,EAAW,IACXwC,EAAc8wD,GACdrrD,EAAY/mB,GAAS,QAAS,OAAQ,OAItCqyE,EAAa,IAEb/wC,EAAiB,EACjBgxC,EAAc,GAElB,SAAStjB,EAAK1wD,GACZA,EACKjM,SAAS,SAAUo/E,IACnBhxE,GAAG,aAAc8xE,EAAS,CAAC9mE,SAAS,IACpChL,GAAG,iBAAkB+gC,GACrB/gC,GAAG,gBAAiB+xE,GACtB7rF,OAAOmgC,GACLrmB,GAAG,kBAAmBghC,GACtBhhC,GAAG,iBAAkB4mB,GACrB5mB,GAAG,iCAAkC6mB,GACrCnjB,MAAM,8BAA+B,iBA2D5C,SAASpH,EAAMe,EAAWrF,GAExB,OADAA,EAAIvH,KAAKI,IAAI6gF,EAAY,GAAIjhF,KAAKG,IAAI8gF,EAAY,GAAI15E,OACzCqF,EAAUrF,EAAIqF,EAAY,IAAI+yE,GAAUp4E,EAAGqF,EAAU3Q,EAAG2Q,EAAUpM,GAGjF,SAAS0uB,EAAUtiB,EAAWk9B,EAAIG,GAChC,IAAIhuC,EAAI6tC,EAAG,GAAKG,EAAG,GAAKr9B,EAAUrF,EAAG/G,EAAIspC,EAAG,GAAKG,EAAG,GAAKr9B,EAAUrF,EACnE,OAAOtL,IAAM2Q,EAAU3Q,GAAKuE,IAAMoM,EAAUpM,EAAIoM,EAAY,IAAI+yE,GAAU/yE,EAAUrF,EAAGtL,EAAGuE,GAG5F,SAASytD,EAAS/tD,GAChB,MAAO,GAAGA,EAAO,GAAG,KAAMA,EAAO,GAAG,IAAM,IAAKA,EAAO,GAAG,KAAMA,EAAO,GAAG,IAAM,GAGjF,SAASwtB,EAASvf,EAAYvB,EAAW4d,EAAO5T,GAC9CzI,EACKoB,GAAG,cAAc,WAAaihC,EAAQ32C,KAAM3D,WAAW0gB,MAAMA,GAAO7R,WACpEwK,GAAG,2BAA2B,WAAaihC,EAAQ32C,KAAM3D,WAAW0gB,MAAMA,GAAOyR,SACjFoF,MAAM,QAAQ,WACb,IAAI/d,EAAO7V,KACP4H,EAAOvL,UACPoN,EAAIktC,EAAQ9gC,EAAMjO,GAAMmV,MAAMA,GAC9BnZ,EAAIyC,EAAOpK,MAAM4Z,EAAMjO,GACvB/I,EAAa,MAAT8xB,EAAgByjC,EAASxwD,GAAsB,oBAAV+sB,EAAuBA,EAAM10B,MAAM4Z,EAAMjO,GAAQ+oB,EAC1FyJ,EAAIj0B,KAAKI,IAAI3C,EAAE,GAAG,GAAKA,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAKA,EAAE,GAAG,IAC/CjC,EAAIkU,EAAKywE,OACT1kF,EAAyB,oBAAdmR,EAA2BA,EAAU9W,MAAM4Z,EAAMjO,GAAQmL,EACpE3W,EAAIm6B,EAAY50B,EAAEqqD,OAAOntD,GAAG4W,OAAO2kB,EAAIz4B,EAAE+L,GAAI9L,EAAEoqD,OAAOntD,GAAG4W,OAAO2kB,EAAIx4B,EAAE8L,IAC1E,OAAO,SAASM,GACd,GAAU,IAANA,EAASA,EAAIpM,MACZ,CAAE,IAAIsqB,EAAI9vB,EAAE4R,GAAIN,EAAI0sB,EAAIlO,EAAE,GAAIle,EAAI,IAAI83E,GAAUp4E,EAAG7O,EAAE,GAAKqtB,EAAE,GAAKxe,EAAG7O,EAAE,GAAKqtB,EAAE,GAAKxe,GACvFjE,EAAEw6D,KAAK,KAAMj2D,OAKvB,SAAS2oC,EAAQ9gC,EAAMjO,EAAM60B,GAC3B,OAASA,GAAS5mB,EAAK6xE,WAAc,IAAIC,EAAQ9xE,EAAMjO,GAGzD,SAAS+/E,EAAQ9xE,EAAMjO,GACrB5H,KAAK6V,KAAOA,EACZ7V,KAAK4H,KAAOA,EACZ5H,KAAKm0B,OAAS,EACdn0B,KAAKuwB,YAAc,KACnBvwB,KAAKqG,OAASA,EAAOpK,MAAM4Z,EAAMjO,GACjC5H,KAAK4nF,KAAO,EA+Cd,SAASJ,EAAQzqE,GAAgB,2BAANnV,EAAM,iCAANA,EAAM,kBAC/B,GAAKhM,EAAOK,MAAM+D,KAAM3D,WAAxB,CACA,IAAIoN,EAAIktC,EAAQ32C,KAAM4H,GAAMmV,MAAMA,GAC9B/O,EAAIhO,KAAKsmF,OACT54E,EAAIvH,KAAKI,IAAI6gF,EAAY,GAAIjhF,KAAKG,IAAI8gF,EAAY,GAAIp5E,EAAEN,EAAIvH,KAAK4F,IAAI,EAAGo7E,EAAWlrF,MAAM+D,KAAM3D,cAC/FwC,EAAIy/B,GAAQvhB,GAIhB,GAAItT,EAAEo+E,MACAp+E,EAAEstC,MAAM,GAAG,KAAOl4C,EAAE,IAAM4K,EAAEstC,MAAM,GAAG,KAAOl4C,EAAE,KAChD4K,EAAEstC,MAAM,GAAK/oC,EAAEg+C,OAAOviD,EAAEstC,MAAM,GAAKl4C,IAErCq0B,aAAazpB,EAAEo+E,WAIZ,IAAI75E,EAAEN,IAAMA,EAAG,OAIlBjE,EAAEstC,MAAQ,CAACl4C,EAAGmP,EAAEg+C,OAAOntD,IACvBo6B,GAAUj5B,MACVyJ,EAAEyB,QAGJ+V,GAAQlE,GACRtT,EAAEo+E,MAAQvmE,WAAWwmE,EAjMN,KAkMfr+E,EAAEw6D,KAAK,QAASijB,EAAU7xD,EAAUrjB,EAAMhE,EAAGN,GAAIjE,EAAEstC,MAAM,GAAIttC,EAAEstC,MAAM,IAAKttC,EAAEpD,OAAQ0gF,IAEpF,SAASe,IACPr+E,EAAEo+E,MAAQ,KACVp+E,EAAE+kB,OAIN,SAASioB,EAAY15B,GAAgB,2BAANnV,EAAM,iCAANA,EAAM,kBACnC,IAAIk0B,GAAgBlgC,EAAOK,MAAM+D,KAAM3D,WAAvC,CACA,IAAIm0B,EAAgBzT,EAAMyT,cACtB/mB,EAAIktC,EAAQ32C,KAAM4H,GAAM,GAAMmV,MAAMA,GACpCjX,EAAIqO,GAAO4I,EAAMiE,MAAMtL,GAAG,iBAAkBkhC,GAAY,GAAMlhC,GAAG,eAAgBmhC,GAAY,GAC7Fh4C,EAAIy/B,GAAQvhB,EAAOyT,GACnBzjB,EAAKgQ,EAAM6T,QACXgR,EAAK7kB,EAAM8T,QAEfkO,GAAYhiB,EAAMiE,MAClBH,GAAc9D,GACdtT,EAAEstC,MAAQ,CAACl4C,EAAGmB,KAAKsmF,OAAOt6B,OAAOntD,IACjCo6B,GAAUj5B,MACVyJ,EAAEyB,QAEF,SAAS0rC,EAAW75B,GAElB,GADAkE,GAAQlE,IACHtT,EAAEk1B,MAAO,CACZ,IAAIX,EAAKjhB,EAAM6T,QAAU7jB,EAAIkxB,EAAKlhB,EAAM8T,QAAU+Q,EAClDn4B,EAAEk1B,MAAQX,EAAKA,EAAKC,EAAKA,EAAKsY,EAEhC9sC,EAAEsT,MAAMA,GACNknD,KAAK,QAASijB,EAAU7xD,EAAU5rB,EAAEoM,KAAKywE,OAAQ78E,EAAEstC,MAAM,GAAKzY,GAAQvhB,EAAOyT,GAAgB/mB,EAAEstC,MAAM,IAAKttC,EAAEpD,OAAQ0gF,IAGxH,SAASlwC,EAAW95B,GAClBjX,EAAE4P,GAAG,8BAA+B,MACpCwpB,GAAWniB,EAAMiE,KAAMvX,EAAEk1B,OACzB1d,GAAQlE,GACRtT,EAAEsT,MAAMA,GAAOyR,OAInB,SAASi5D,EAAW1qE,GAAgB,2BAANnV,EAAM,iCAANA,EAAM,kBAClC,GAAKhM,EAAOK,MAAM+D,KAAM3D,WAAxB,CACA,IAAIw2B,EAAK7yB,KAAKsmF,OACVr2C,EAAK3R,GAAQvhB,EAAMiiB,eAAiBjiB,EAAMiiB,eAAe,GAAKjiB,EAAO/c,MACrEowC,EAAKvd,EAAGm5B,OAAO/b,GACf83C,EAAKl1D,EAAGnlB,GAAKqP,EAAMohB,SAAW,GAAM,GACpC5Q,EAAK25D,EAAU7xD,EAAUrjB,EAAM6gB,EAAIk1D,GAAK93C,EAAIG,GAAK/pC,EAAOpK,MAAM+D,KAAM4H,GAAOm/E,GAE/E9lE,GAAQlE,GACJgX,EAAW,EAAG5f,GAAOnU,MAAMsU,aAAayf,SAASA,GAAUx0B,KAAKs0B,EAAUtG,EAAI0iB,EAAIlzB,GACjF5I,GAAOnU,MAAMT,KAAK0kE,EAAKlxD,UAAWwa,EAAI0iB,EAAIlzB,IAGjD,SAAS25B,EAAa35B,GAAgB,2BAANnV,EAAM,iCAANA,EAAM,kBACpC,GAAKhM,EAAOK,MAAM+D,KAAM3D,WAAxB,CACA,IAGIggC,EAASjgC,EAAG4R,EAAGnP,EAHf+9B,EAAU7f,EAAM6f,QAChB57B,EAAI47B,EAAQtgC,OACZmN,EAAIktC,EAAQ32C,KAAM4H,EAAMmV,EAAMiiB,eAAe1iC,SAAW0E,GAAG+b,MAAMA,GAIrE,IADA8D,GAAc9D,GACT3gB,EAAI,EAAGA,EAAI4E,IAAK5E,EACnB4R,EAAI4uB,EAAQxgC,GACZyC,EAAI,CADYA,EAAIy/B,GAAQtwB,EAAGhO,MACvBA,KAAKsmF,OAAOt6B,OAAOntD,GAAImP,EAAEqwB,YAC5B50B,EAAEu+E,OACGv+E,EAAEw+E,QAAUx+E,EAAEu+E,OAAO,KAAOnpF,EAAE,KAAI4K,EAAEw+E,OAASppF,EAAG4K,EAAEm+E,KAAO,IADpDn+E,EAAEu+E,OAASnpF,EAAGw9B,GAAU,EAAM5yB,EAAEm+E,KAAO,IAAMZ,GAI1DA,IAAeA,EAAgB9zD,aAAa8zD,IAE5C3qD,IACE5yB,EAAEm+E,KAAO,IAAGX,EAAapoF,EAAE,GAAImoF,EAAgB1lE,YAAW,WAAa0lE,EAAgB,OAASM,IACpGruD,GAAUj5B,MACVyJ,EAAEyB,UAIN,SAASoxB,EAAWvf,GAClB,GAAK/c,KAAK0nF,UAAV,CADkC,2BAAN9/E,EAAM,iCAANA,EAAM,kBAElC,IAEwBxL,EAAG4R,EAAGnP,EAAGqtB,EAF7BziB,EAAIktC,EAAQ32C,KAAM4H,GAAMmV,MAAMA,GAC9B6f,EAAU7f,EAAMiiB,eAChBh+B,EAAI47B,EAAQtgC,OAGhB,IADA2kB,GAAQlE,GACH3gB,EAAI,EAAGA,EAAI4E,IAAK5E,EACnB4R,EAAI4uB,EAAQxgC,GAAIyC,EAAIy/B,GAAQtwB,EAAGhO,MAC3ByJ,EAAEu+E,QAAUv+E,EAAEu+E,OAAO,KAAOh6E,EAAEqwB,WAAY50B,EAAEu+E,OAAO,GAAKnpF,EACnD4K,EAAEw+E,QAAUx+E,EAAEw+E,OAAO,KAAOj6E,EAAEqwB,aAAY50B,EAAEw+E,OAAO,GAAKppF,GAGnE,GADAmP,EAAIvE,EAAEoM,KAAKywE,OACP78E,EAAEw+E,OAAQ,CACZ,IAAIh4C,EAAKxmC,EAAEu+E,OAAO,GAAIE,EAAKz+E,EAAEu+E,OAAO,GAChC53C,EAAK3mC,EAAEw+E,OAAO,GAAIE,EAAK1+E,EAAEw+E,OAAO,GAChCG,GAAMA,EAAKh4C,EAAG,GAAKH,EAAG,IAAMm4C,GAAMA,EAAKh4C,EAAG,GAAKH,EAAG,IAAMm4C,EACxDC,GAAMA,EAAKF,EAAG,GAAKD,EAAG,IAAMG,GAAMA,EAAKF,EAAG,GAAKD,EAAG,IAAMG,EAC5Dr6E,EAAIgE,EAAMhE,EAAG7H,KAAKC,KAAKgiF,EAAKC,IAC5BxpF,EAAI,EAAEoxC,EAAG,GAAKG,EAAG,IAAM,GAAIH,EAAG,GAAKG,EAAG,IAAM,GAC5ClkB,EAAI,EAAEg8D,EAAG,GAAKC,EAAG,IAAM,GAAID,EAAG,GAAKC,EAAG,IAAM,OAEzC,KAAI1+E,EAAEu+E,OACN,OADcnpF,EAAI4K,EAAEu+E,OAAO,GAAI97D,EAAIziB,EAAEu+E,OAAO,GAGjDv+E,EAAEw6D,KAAK,QAASijB,EAAU7xD,EAAUrnB,EAAGnP,EAAGqtB,GAAIziB,EAAEpD,OAAQ0gF,KAG1D,SAASxqD,EAAWxf,GAAgB,2BAANnV,EAAM,iCAANA,EAAM,kBAClC,GAAK5H,KAAK0nF,UAAV,CACA,IAEwBtrF,EAAG4R,EAFvBvE,EAAIktC,EAAQ32C,KAAM4H,GAAMmV,MAAMA,GAC9B6f,EAAU7f,EAAMiiB,eAChBh+B,EAAI47B,EAAQtgC,OAKhB,IAHAukB,GAAc9D,GACV+e,GAAa5I,aAAa4I,GAC9BA,EAAcxa,YAAW,WAAawa,EAAc,OAASwrD,GACxDlrF,EAAI,EAAGA,EAAI4E,IAAK5E,EACnB4R,EAAI4uB,EAAQxgC,GACRqN,EAAEu+E,QAAUv+E,EAAEu+E,OAAO,KAAOh6E,EAAEqwB,kBAAmB50B,EAAEu+E,OAC9Cv+E,EAAEw+E,QAAUx+E,EAAEw+E,OAAO,KAAOj6E,EAAEqwB,mBAAmB50B,EAAEw+E,OAG9D,GADIx+E,EAAEw+E,SAAWx+E,EAAEu+E,SAAQv+E,EAAEu+E,OAASv+E,EAAEw+E,cAAex+E,EAAEw+E,QACrDx+E,EAAEu+E,OAAQv+E,EAAEu+E,OAAO,GAAKhoF,KAAKsmF,OAAOt6B,OAAOviD,EAAEu+E,OAAO,SAItD,GAFAv+E,EAAE+kB,MAEa,IAAX/kB,EAAEm+E,OACJ55E,EAAIswB,GAAQtwB,EAAGhO,MACXmG,KAAKmvC,MAAM2xC,EAAW,GAAKj5E,EAAE,GAAIi5E,EAAW,GAAKj5E,EAAE,IAAMu5E,GAAa,CACxE,IAAI1oF,EAAIsV,GAAOnU,MAAM0V,GAAG,iBACpB7W,GAAGA,EAAE5C,MAAM+D,KAAM3D,aAuD7B,OAzWA4nE,EAAKlxD,UAAY,SAASu1E,EAAYv1E,EAAW4d,EAAO5T,GACtD,IAAIxJ,EAAY+0E,EAAW/0E,UAAY+0E,EAAW/0E,YAAc+0E,EAChE/0E,EAAUjM,SAAS,SAAUo/E,IACzB4B,IAAe/0E,EACjBsgB,EAASy0D,EAAYv1E,EAAW4d,EAAO5T,GAEvCxJ,EAAU0lB,YAAYvkB,MAAK,WACzBiiC,EAAQ32C,KAAM3D,WACX0gB,MAAMA,GACN7R,QACA+4D,KAAK,KAA2B,oBAAdlxD,EAA2BA,EAAU9W,MAAM+D,KAAM3D,WAAa0W,GAChFyb,UAKTy1C,EAAKskB,QAAU,SAASh1E,EAAW7F,EAAG7O,EAAGke,GACvCknD,EAAKukB,QAAQj1E,GAAW,WACtB,IAAIk1E,EAAKzoF,KAAKsmF,OAAO54E,EACjBq6E,EAAkB,oBAANr6E,EAAmBA,EAAEzR,MAAM+D,KAAM3D,WAAaqR,EAC9D,OAAO+6E,EAAKV,IACXlpF,EAAGke,IAGRknD,EAAKukB,QAAU,SAASj1E,EAAW7F,EAAG7O,EAAGke,GACvCknD,EAAKlxD,UAAUQ,GAAW,WACxB,IAAI3P,EAAIyC,EAAOpK,MAAM+D,KAAM3D,WACvBw2B,EAAK7yB,KAAKsmF,OACVr2C,EAAU,MAALpxC,EAAYu1D,EAASxwD,GAAkB,oBAAN/E,EAAmBA,EAAE5C,MAAM+D,KAAM3D,WAAawC,EACpFuxC,EAAKvd,EAAGm5B,OAAO/b,GACf83C,EAAkB,oBAANr6E,EAAmBA,EAAEzR,MAAM+D,KAAM3D,WAAaqR,EAC9D,OAAOw5E,EAAU7xD,EAAUrjB,EAAM6gB,EAAIk1D,GAAK93C,EAAIG,GAAKxsC,EAAGmjF,KACrDloF,EAAGke,IAGRknD,EAAKykB,YAAc,SAASn1E,EAAWnR,EAAGuE,EAAGoW,GAC3CknD,EAAKlxD,UAAUQ,GAAW,WACxB,OAAO2zE,EAAUlnF,KAAKsmF,OAAOjxD,UACd,oBAANjzB,EAAmBA,EAAEnG,MAAM+D,KAAM3D,WAAa+F,EACxC,oBAANuE,EAAmBA,EAAE1K,MAAM+D,KAAM3D,WAAasK,GACpDN,EAAOpK,MAAM+D,KAAM3D,WAAY0qF,KACjC,KAAMhqE,IAGXknD,EAAK0kB,YAAc,SAASp1E,EAAWnR,EAAGuE,EAAG9H,EAAGke,GAC9CknD,EAAKlxD,UAAUQ,GAAW,WACxB,IAAI3P,EAAIyC,EAAOpK,MAAM+D,KAAM3D,WACvB2R,EAAIhO,KAAKsmF,OACTr2C,EAAU,MAALpxC,EAAYu1D,EAASxwD,GAAkB,oBAAN/E,EAAmBA,EAAE5C,MAAM+D,KAAM3D,WAAawC,EACxF,OAAOqoF,EAAU/9E,GAASksB,UAAU4a,EAAG,GAAIA,EAAG,IAAIj+B,MAAMhE,EAAEN,GAAG2nB,UAC9C,oBAANjzB,GAAoBA,EAAEnG,MAAM+D,KAAM3D,YAAc+F,EAC1C,oBAANuE,GAAoBA,EAAE1K,MAAM+D,KAAM3D,YAAcsK,GACtD/C,EAAGmjF,KACLloF,EAAGke,IAoDR4qE,EAAQlqF,UAAY,CAClBsf,MAAO,SAASA,GAEd,OADIA,IAAO/c,KAAKuwB,YAAcxT,GACvB/c,MAETkL,MAAO,WAKL,OAJsB,MAAhBlL,KAAKm0B,SACTn0B,KAAK6V,KAAK6xE,UAAY1nF,KACtBA,KAAK08B,KAAK,UAEL18B,MAETikE,KAAM,SAASxnE,EAAKsW,GAMlB,OALI/S,KAAK+2C,OAAiB,UAARt6C,IAAiBuD,KAAK+2C,MAAM,GAAKhkC,EAAUi5C,OAAOhsD,KAAK+2C,MAAM,KAC3E/2C,KAAKgoF,QAAkB,UAARvrF,IAAiBuD,KAAKgoF,OAAO,GAAKj1E,EAAUi5C,OAAOhsD,KAAKgoF,OAAO,KAC9EhoF,KAAKioF,QAAkB,UAARxrF,IAAiBuD,KAAKioF,OAAO,GAAKl1E,EAAUi5C,OAAOhsD,KAAKioF,OAAO,KAClFjoF,KAAK6V,KAAKywE,OAASvzE,EACnB/S,KAAK08B,KAAK,QACH18B,MAETwuB,IAAK,WAKH,OAJsB,MAAhBxuB,KAAKm0B,gBACFn0B,KAAK6V,KAAK6xE,UACjB1nF,KAAK08B,KAAK,QAEL18B,MAET08B,KAAM,SAASnnB,GACb,IAAI/S,EAAI2R,GAAOnU,KAAK6V,MAAMe,QAC1BolB,EAAUz8B,KACRgW,EACAvV,KAAK6V,KACL,IAAIgwE,GAAUtwE,EAAM,CAClBgb,YAAavwB,KAAKuwB,YAClBp0B,OAAQ8nE,EACR1uD,OACAxC,UAAW/S,KAAK6V,KAAKywE,OACrBrxE,SAAU+mB,IAEZx5B,KAwKNyhE,EAAKkjB,WAAa,SAAS55E,GACzB,OAAOlR,UAAUC,QAAU6qF,EAA0B,oBAAN55E,EAAmBA,EAAI1C,IAAU0C,GAAI02D,GAAQkjB,GAG9FljB,EAAKroE,OAAS,SAAS2R,GACrB,OAAOlR,UAAUC,QAAUV,EAAsB,oBAAN2R,EAAmBA,EAAI1C,KAAW0C,GAAI02D,GAAQroE,GAG3FqoE,EAAKloC,UAAY,SAASxuB,GACxB,OAAOlR,UAAUC,QAAUy/B,EAAyB,oBAANxuB,EAAmBA,EAAI1C,KAAW0C,GAAI02D,GAAQloC,GAG9FkoC,EAAK59D,OAAS,SAASkH,GACrB,OAAOlR,UAAUC,QAAU+J,EAAsB,oBAANkH,EAAmBA,EAAI1C,GAAS,CAAC,EAAE0C,EAAE,GAAG,IAAKA,EAAE,GAAG,IAAK,EAAEA,EAAE,GAAG,IAAKA,EAAE,GAAG,MAAO02D,GAAQ59D,GAGpI49D,EAAKmjB,YAAc,SAAS75E,GAC1B,OAAOlR,UAAUC,QAAU8qF,EAAY,IAAM75E,EAAE,GAAI65E,EAAY,IAAM75E,EAAE,GAAI02D,GAAQ,CAACmjB,EAAY,GAAIA,EAAY,KAGlHnjB,EAAK8iB,gBAAkB,SAASx5E,GAC9B,OAAOlR,UAAUC,QAAUyqF,EAAgB,GAAG,IAAMx5E,EAAE,GAAG,GAAIw5E,EAAgB,GAAG,IAAMx5E,EAAE,GAAG,GAAIw5E,EAAgB,GAAG,IAAMx5E,EAAE,GAAG,GAAIw5E,EAAgB,GAAG,IAAMx5E,EAAE,GAAG,GAAI02D,GAAQ,CAAC,CAAC8iB,EAAgB,GAAG,GAAIA,EAAgB,GAAG,IAAK,CAACA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,MAGzQ9iB,EAAKijB,UAAY,SAAS35E,GACxB,OAAOlR,UAAUC,QAAU4qF,EAAY35E,EAAG02D,GAAQijB,GAGpDjjB,EAAKlwC,SAAW,SAASxmB,GACvB,OAAOlR,UAAUC,QAAUy3B,GAAYxmB,EAAG02D,GAAQlwC,GAGpDkwC,EAAK1tC,YAAc,SAAShpB,GAC1B,OAAOlR,UAAUC,QAAUi6B,EAAchpB,EAAG02D,GAAQ1tC,GAGtD0tC,EAAKvuD,GAAK,WACR,IAAIlX,EAAQw9B,EAAUtmB,GAAGzZ,MAAM+/B,EAAW3/B,WAC1C,OAAOmC,IAAUw9B,EAAYioC,EAAOzlE,GAGtCylE,EAAKhtB,cAAgB,SAAS1pC,GAC5B,OAAOlR,UAAUC,QAAUi6C,GAAkBhpC,GAAKA,GAAKA,EAAG02D,GAAQ99D,KAAKC,KAAKmwC,IAG9E0tB,EAAKsjB,YAAc,SAASh6E,GAC1B,OAAOlR,UAAUC,QAAUirF,GAAeh6E,EAAG02D,GAAQsjB,GAGhDtjB,I,8BC3bT,SAAS2kB,IAEP,GAC4C,qBAAnCC,gCAC4C,oBAA5CA,+BAA+BD,SAcxC,IAEEC,+BAA+BD,SAASA,GACxC,MAAOvnF,GAGPynF,QAAQh9E,MAAMzK,IAOhBunF,GACA1tF,EAAOC,QAAUC,EAAQ,K,6BClCZ,SAAS2tF,IACtB,GAAuB,qBAAZ9oF,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAU8oF,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAz5D,KAAK/xB,UAAUyF,SAAS3D,KAAKU,QAAQC,UAAUsvB,KAAM,IAAI,iBAClD,EACP,MAAO5rB,GACP,OAAO,GATX,mC,gBCAA,IAAIslF,EACJ,GAA0B,kBAAfC,WACVD,EAAcC,gBAEd,IACCD,EAAc9tF,EAAQ,IACrB,MAAO0Q,IAFT,QAKC,GADKo9E,GAAiC,qBAAXr2E,SAA0Bq2E,EAAcr2E,SAC9Dq2E,EAAe,MAAM,IAAIjrF,MAAM,mCAItC,IAAImrF,EAAkBF,EAAYG,WAAaH,EAAYI,aACvDC,EAAoBnuF,EAAQ,IAMhC,SAASouF,EAAa3tE,EAAK4tE,GAiB1B,OAdIA,EACe,IAAIL,EAAgBvtE,EAAK4tE,GAGzB,IAAIL,EAAgBvtE,GAYpCutE,GACH,CAAC,aAAc,OAAQ,UAAW,UAAU5sF,SAAQ,SAASktF,GAC5DjuF,OAAOmB,eAAe4sF,EAAcE,EAAM,CACzCliF,IAAK,WAAa,OAAO4hF,EAAgBM,SAQ5CxuF,EAAOC,QAAU,CACb,aAAiBiuF,EAAkBI,EAAe,KAClD,QAAiBD,I,6BC5CR,IAAIr9D,EAAE9wB,EAAQ,IAAiB4F,EAAE,MAAMnC,EAAE,MAAM1D,EAAQwuF,SAAS,MAAMxuF,EAAQyuF,WAAW,MAAMzuF,EAAQ0uF,SAAS,MAAM,IAAI15D,EAAE,MAAMvgB,EAAE,MAAM5B,EAAE,MAAM7S,EAAQ2uF,SAAS,MAAM,IAAIr/C,EAAE,MAAM3kC,EAAE,MACpM,GAAG,oBAAoB1G,QAAQA,OAAO2qF,IAAI,CAAC,IAAI3vD,EAAEh7B,OAAO2qF,IAAI/oF,EAAEo5B,EAAE,iBAAiBv7B,EAAEu7B,EAAE,gBAAgBj/B,EAAQwuF,SAASvvD,EAAE,kBAAkBj/B,EAAQyuF,WAAWxvD,EAAE,qBAAqBj/B,EAAQ0uF,SAASzvD,EAAE,kBAAkBjK,EAAEiK,EAAE,kBAAkBxqB,EAAEwqB,EAAE,iBAAiBpsB,EAAEosB,EAAE,qBAAqBj/B,EAAQ2uF,SAAS1vD,EAAE,kBAAkBqQ,EAAErQ,EAAE,cAAct0B,EAAEs0B,EAAE,cAAc,IAAIh4B,EAAE,oBAAoBhD,QAAQA,OAAOC,SACtR,SAASsO,EAAEhM,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEyI,EAAE,EAAEA,EAAE/N,UAAUC,OAAO8N,IAAIxI,GAAG,WAAWooF,mBAAmB3tF,UAAU+N,IAAI,MAAM,yBAAyBzI,EAAE,WAAWC,EAAE,iHACpU,IAAI6jC,EAAE,CAACwkD,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAc1kD,EAAE,GAAG,SAASC,EAAEhkC,EAAEC,EAAEwI,GAAGpK,KAAK9C,MAAMyE,EAAE3B,KAAKgT,QAAQpR,EAAE5B,KAAKqqF,KAAK3kD,EAAE1lC,KAAK5B,QAAQgM,GAAGq7B,EACpN,SAASG,KAA6B,SAAS9H,EAAEn8B,EAAEC,EAAEwI,GAAGpK,KAAK9C,MAAMyE,EAAE3B,KAAKgT,QAAQpR,EAAE5B,KAAKqqF,KAAK3kD,EAAE1lC,KAAK5B,QAAQgM,GAAGq7B,EADsGE,EAAEloC,UAAU6sF,iBAAiB,GAAG3kD,EAAEloC,UAAU8sF,SAAS,SAAS5oF,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAM1D,MAAM0P,EAAE,KAAK3N,KAAK5B,QAAQgsF,gBAAgBpqF,KAAK2B,EAAEC,EAAE,aAAa+jC,EAAEloC,UAAU+sF,YAAY,SAAS7oF,GAAG3B,KAAK5B,QAAQ8rF,mBAAmBlqF,KAAK2B,EAAE,gBACndikC,EAAEnoC,UAAUkoC,EAAEloC,UAAsF,IAAIiG,EAAEo6B,EAAErgC,UAAU,IAAImoC,EAAEliC,EAAExE,YAAY4+B,EAAE5R,EAAExoB,EAAEiiC,EAAEloC,WAAWiG,EAAE+mF,sBAAqB,EAAG,IAAI9iB,EAAE,CAAC5Z,QAAQ,MAAMkkB,EAAEx2E,OAAOgC,UAAU0C,eAAe44C,EAAE,CAACt8C,KAAI,EAAGiuF,KAAI,EAAGC,QAAO,EAAGC,UAAS,GAChS,SAASC,EAAElpF,EAAEC,EAAEwI,GAAG,IAAIxG,EAAEpB,EAAE,GAAGkL,EAAE,KAAKsf,EAAE,KAAK,GAAG,MAAMprB,EAAE,IAAIgC,UAAK,IAAShC,EAAE8oF,MAAM19D,EAAEprB,EAAE8oF,UAAK,IAAS9oF,EAAEnF,MAAMiR,EAAE,GAAG9L,EAAEnF,KAAKmF,EAAEqwE,EAAE1yE,KAAKqC,EAAEgC,KAAKm1C,EAAE54C,eAAeyD,KAAKpB,EAAEoB,GAAGhC,EAAEgC,IAAI,IAAI6F,EAAEpN,UAAUC,OAAO,EAAE,GAAG,IAAImN,EAAEjH,EAAEgU,SAASpM,OAAO,GAAG,EAAEX,EAAE,CAAC,IAAI,IAAI1H,EAAEgB,MAAM0G,GAAG0D,EAAE,EAAEA,EAAE1D,EAAE0D,IAAIpL,EAAEoL,GAAG9Q,UAAU8Q,EAAE,GAAG3K,EAAEgU,SAASzU,EAAE,GAAGJ,GAAGA,EAAEmpF,aAAa,IAAIlnF,KAAK6F,EAAE9H,EAAEmpF,kBAAe,IAAStoF,EAAEoB,KAAKpB,EAAEoB,GAAG6F,EAAE7F,IAAI,MAAM,CAACmnF,SAAS/pF,EAAEuU,KAAK5T,EAAElF,IAAIiR,EAAEg9E,IAAI19D,EAAE9vB,MAAMsF,EAAEwoF,OAAOrjB,EAAE5Z,SACxU,SAASmkB,EAAEvwE,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEopF,WAAW/pF,EAAqG,IAAIg6D,EAAE,OAAO,SAASn9B,EAAEl8B,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAElF,IAA7K,SAAgBkF,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEw3C,QAAQ,SAAQ,SAASx3C,GAAG,OAAOC,EAAED,MAAmFspF,CAAO,GAAGtpF,EAAElF,KAAKmF,EAAEsB,SAAS,IAC5W,SAASgoF,EAAEvpF,EAAEC,EAAEwI,EAAExG,EAAEpB,GAAG,IAAIkL,SAAS/L,EAAK,cAAc+L,GAAG,YAAYA,IAAE/L,EAAE,MAAK,IAAIqrB,GAAE,EAAG,GAAG,OAAOrrB,EAAEqrB,GAAE,OAAQ,OAAOtf,GAAG,IAAK,SAAS,IAAK,SAASsf,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOrrB,EAAEopF,UAAU,KAAK/pF,EAAE,KAAKnC,EAAEmuB,GAAE,GAAI,GAAGA,EAAE,OAAWxqB,EAAEA,EAANwqB,EAAErrB,GAASA,EAAE,KAAKiC,EAAE,IAAIi6B,EAAE7Q,EAAE,GAAGppB,EAAEb,MAAMU,QAAQjB,IAAI4H,EAAE,GAAG,MAAMzI,IAAIyI,EAAEzI,EAAEw3C,QAAQ6hB,EAAE,OAAO,KAAKkwB,EAAE1oF,EAAEZ,EAAEwI,EAAE,IAAG,SAASzI,GAAG,OAAOA,MAAK,MAAMa,IAAI0vE,EAAE1vE,KAAKA,EAD/W,SAAWb,EAAEC,GAAG,MAAM,CAACmpF,SAAS/pF,EAAEuU,KAAK5T,EAAE4T,KAAK9Y,IAAImF,EAAE8oF,IAAI/oF,EAAE+oF,IAAIxtF,MAAMyE,EAAEzE,MAAM8tF,OAAOrpF,EAAEqpF,QAC4RG,CAAE3oF,EAAE4H,IAAI5H,EAAE/F,KAAKuwB,GAAGA,EAAEvwB,MAAM+F,EAAE/F,IAAI,IAAI,GAAG+F,EAAE/F,KAAK08C,QAAQ6hB,EAAE,OAAO,KAAKr5D,IAAIC,EAAE5F,KAAKwG,IAAI,EAAyB,GAAvBwqB,EAAE,EAAEppB,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOb,MAAMU,QAAQ9B,GAAG,IAAI,IAAI8H,EACzf,EAAEA,EAAE9H,EAAErF,OAAOmN,IAAI,CAAQ,IAAI1H,EAAE6B,EAAEi6B,EAAfnwB,EAAE/L,EAAE8H,GAAeA,GAAGujB,GAAGk+D,EAAEx9E,EAAE9L,EAAEwI,EAAErI,EAAES,QAAQ,GAAGT,EANhE,SAAWJ,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAES,GAAGT,EAAES,IAAIT,EAAE,eAA0CA,EAAE,KAMlDgF,CAAEhF,GAAG,oBAAoBI,EAAE,IAAIJ,EAAEI,EAAExC,KAAKoC,GAAG8H,EAAE,IAAIiE,EAAE/L,EAAEsC,QAAQN,MAA6BqpB,GAAGk+D,EAA1Bx9E,EAAEA,EAAElP,MAA0BoD,EAAEwI,EAAtBrI,EAAE6B,EAAEi6B,EAAEnwB,EAAEjE,KAAkBjH,QAAQ,GAAG,WAAWkL,EAAE,MAAM9L,EAAE,GAAGD,EAAE1D,MAAM0P,EAAE,GAAG,oBAAoB/L,EAAE,qBAAqBnG,OAAOD,KAAKmG,GAAGV,KAAK,MAAM,IAAIW,IAAI,OAAOorB,EAAE,SAASinB,EAAEtyC,EAAEC,EAAEwI,GAAG,GAAG,MAAMzI,EAAE,OAAOA,EAAE,IAAIiC,EAAE,GAAGpB,EAAE,EAAmD,OAAjD0oF,EAAEvpF,EAAEiC,EAAE,GAAG,IAAG,SAASjC,GAAG,OAAOC,EAAErC,KAAK6K,EAAEzI,EAAEa,QAAcoB,EAC1Z,SAASgmC,EAAEjoC,GAAG,IAAI,IAAIA,EAAEypF,QAAQ,CAAC,IAAIxpF,EAAED,EAAE0pF,QAAQzpF,EAAEA,IAAID,EAAEypF,QAAQ,EAAEzpF,EAAE0pF,QAAQzpF,EAAEA,EAAE07C,MAAK,SAAS17C,GAAG,IAAID,EAAEypF,UAAUxpF,EAAEA,EAAE0pF,QAAQ3pF,EAAEypF,QAAQ,EAAEzpF,EAAE0pF,QAAQzpF,MAAI,SAASA,GAAG,IAAID,EAAEypF,UAAUzpF,EAAEypF,QAAQ,EAAEzpF,EAAE0pF,QAAQzpF,MAAK,GAAG,IAAID,EAAEypF,QAAQ,OAAOzpF,EAAE0pF,QAAQ,MAAM1pF,EAAE0pF,QAAS,IAAI17E,EAAE,CAACo+C,QAAQ,MAAM,SAAShwB,IAAI,IAAIp8B,EAAEgO,EAAEo+C,QAAQ,GAAG,OAAOpsD,EAAE,MAAM1D,MAAM0P,EAAE,MAAM,OAAOhM,EAAE,IAAIiU,EAAE,CAAC21E,uBAAuB57E,EAAE67E,wBAAwB,CAACl3E,WAAW,GAAGm3E,kBAAkB9jB,EAAE+jB,qBAAqB,CAAC39B,SAAQ,GAAIttD,OAAOyrB,GACje/wB,EAAQwwF,SAAS,CAAC5qF,IAAIkzC,EAAEz3C,QAAQ,SAASmF,EAAEC,EAAEwI,GAAG6pC,EAAEtyC,GAAE,WAAWC,EAAE3F,MAAM+D,KAAK3D,aAAY+N,IAAIxF,MAAM,SAASjD,GAAG,IAAIC,EAAE,EAAuB,OAArBqyC,EAAEtyC,GAAE,WAAWC,OAAaA,GAAGgqF,QAAQ,SAASjqF,GAAG,OAAOsyC,EAAEtyC,GAAE,SAASA,GAAG,OAAOA,MAAK,IAAIkqF,KAAK,SAASlqF,GAAG,IAAIuwE,EAAEvwE,GAAG,MAAM1D,MAAM0P,EAAE,MAAM,OAAOhM,IAAIxG,EAAQgD,UAAUwnC,EAAExqC,EAAQ2wF,cAAchuD,EAAE3iC,EAAQ4wF,mDAAmDn2E,EAChXza,EAAQ6wF,aAAa,SAASrqF,EAAEC,EAAEwI,GAAG,GAAG,OAAOzI,QAAG,IAASA,EAAE,MAAM1D,MAAM0P,EAAE,IAAIhM,IAAI,IAAIiC,EAAEsoB,EAAE,GAAGvqB,EAAEzE,OAAOsF,EAAEb,EAAElF,IAAIiR,EAAE/L,EAAE+oF,IAAI19D,EAAErrB,EAAEqpF,OAAO,GAAG,MAAMppF,EAAE,CAAoE,QAAnE,IAASA,EAAE8oF,MAAMh9E,EAAE9L,EAAE8oF,IAAI19D,EAAE26C,EAAE5Z,cAAS,IAASnsD,EAAEnF,MAAM+F,EAAE,GAAGZ,EAAEnF,KAAQkF,EAAE4T,MAAM5T,EAAE4T,KAAKu1E,aAAa,IAAIrhF,EAAE9H,EAAE4T,KAAKu1E,aAAa,IAAI/oF,KAAKH,EAAEqwE,EAAE1yE,KAAKqC,EAAEG,KAAKg3C,EAAE54C,eAAe4B,KAAK6B,EAAE7B,QAAG,IAASH,EAAEG,SAAI,IAAS0H,EAAEA,EAAE1H,GAAGH,EAAEG,IAAI,IAAIA,EAAE1F,UAAUC,OAAO,EAAE,GAAG,IAAIyF,EAAE6B,EAAE4S,SAASpM,OAAO,GAAG,EAAErI,EAAE,CAAC0H,EAAE1G,MAAMhB,GAAG,IAAI,IAAIoL,EAAE,EAAEA,EAAEpL,EAAEoL,IAAI1D,EAAE0D,GAAG9Q,UAAU8Q,EAAE,GAAGvJ,EAAE4S,SAAS/M,EAAE,MAAM,CAACshF,SAAS/pF,EAAEuU,KAAK5T,EAAE4T,KACxf9Y,IAAI+F,EAAEkoF,IAAIh9E,EAAExQ,MAAM0G,EAAEonF,OAAOh+D,IAAI7xB,EAAQ8wF,cAAc,SAAStqF,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAACopF,SAASn7E,EAAEs8E,sBAAsBtqF,EAAEuqF,cAAcxqF,EAAEyqF,eAAezqF,EAAE0qF,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAACvB,SAAS56D,EAAEukC,SAAS/yD,GAAUA,EAAE4qF,SAAS5qF,GAAGxG,EAAQ4gB,cAAc8uE,EAAE1vF,EAAQqxF,cAAc,SAAS7qF,GAAG,IAAIC,EAAEipF,EAAE9iF,KAAK,KAAKpG,GAAY,OAATC,EAAE2T,KAAK5T,EAASC,GAAGzG,EAAQsxF,UAAU,WAAW,MAAM,CAAC1+B,QAAQ,OAAO5yD,EAAQuxF,WAAW,SAAS/qF,GAAG,MAAM,CAACopF,SAAS/8E,EAAE2+E,OAAOhrF,IAAIxG,EAAQkD,eAAe6zE,EAC3e/2E,EAAQyxF,KAAK,SAASjrF,GAAG,MAAM,CAACopF,SAASjlF,EAAE+mF,SAAS,CAACzB,SAAS,EAAEC,QAAQ1pF,GAAGswC,MAAMrI,IAAIzuC,EAAQ2xF,KAAK,SAASnrF,EAAEC,GAAG,MAAM,CAACmpF,SAAStgD,EAAEl1B,KAAK5T,EAAE4I,aAAQ,IAAS3I,EAAE,KAAKA,IAAIzG,EAAQ4xF,YAAY,SAASprF,EAAEC,GAAG,OAAOm8B,IAAIgvD,YAAYprF,EAAEC,IAAIzG,EAAQ6xF,WAAW,SAASrrF,EAAEC,GAAG,OAAOm8B,IAAIivD,WAAWrrF,EAAEC,IAAIzG,EAAQ8xF,cAAc,aAAa9xF,EAAQ+xF,UAAU,SAASvrF,EAAEC,GAAG,OAAOm8B,IAAImvD,UAAUvrF,EAAEC,IAAIzG,EAAQgyF,oBAAoB,SAASxrF,EAAEC,EAAEwI,GAAG,OAAO2zB,IAAIovD,oBAAoBxrF,EAAEC,EAAEwI,IAC9cjP,EAAQiyF,gBAAgB,SAASzrF,EAAEC,GAAG,OAAOm8B,IAAIqvD,gBAAgBzrF,EAAEC,IAAIzG,EAAQkyF,QAAQ,SAAS1rF,EAAEC,GAAG,OAAOm8B,IAAIsvD,QAAQ1rF,EAAEC,IAAIzG,EAAQmyF,WAAW,SAAS3rF,EAAEC,EAAEwI,GAAG,OAAO2zB,IAAIuvD,WAAW3rF,EAAEC,EAAEwI,IAAIjP,EAAQoyF,OAAO,SAAS5rF,GAAG,OAAOo8B,IAAIwvD,OAAO5rF,IAAIxG,EAAQqyF,SAAS,SAAS7rF,GAAG,OAAOo8B,IAAIyvD,SAAS7rF,IAAIxG,EAAQsyF,QAAQ,U,6BCXxS,IAAIvuB,EAAG9jE,EAAQ,GAAS+R,EAAE/R,EAAQ,IAAiBwU,EAAExU,EAAQ,IAAa,SAASuL,EAAEhF,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEyI,EAAE,EAAEA,EAAE/N,UAAUC,OAAO8N,IAAIxI,GAAG,WAAWooF,mBAAmB3tF,UAAU+N,IAAI,MAAM,yBAAyBzI,EAAE,WAAWC,EAAE,iHAAiH,IAAIs9D,EAAG,MAAMjhE,MAAM0I,EAAE,MAAM,IAAI+mF,EAAG,IAAI1kF,IAAIkoD,EAAG,GAAG,SAASluB,EAAGrhC,EAAEC,GAAG+rF,EAAGhsF,EAAEC,GAAG+rF,EAAGhsF,EAAE,UAAUC,GAC3e,SAAS+rF,EAAGhsF,EAAEC,GAAW,IAARsvD,EAAGvvD,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAEtF,OAAOqF,IAAI+rF,EAAG3mF,IAAInF,EAAED,IACzD,IAAIisF,IAAK,qBAAqB/6E,QAAQ,qBAAqBA,OAAOqG,UAAU,qBAAqBrG,OAAOqG,SAAS6C,eAAe8xE,EAAG,8VAA8VC,EAAGryF,OAAOgC,UAAU0C,eACrf4tF,EAAG,GAAGC,EAAG,GAC+M,SAAStoD,EAAE/jC,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,EAAE0H,GAAGzJ,KAAKiuF,gBAAgB,IAAIrsF,GAAG,IAAIA,GAAG,IAAIA,EAAE5B,KAAKkuF,cAAc1rF,EAAExC,KAAKmuF,mBAAmBvqF,EAAE5D,KAAKouF,gBAAgBhkF,EAAEpK,KAAKquF,aAAa1sF,EAAE3B,KAAKuV,KAAK3T,EAAE5B,KAAKsuF,YAAYvsF,EAAE/B,KAAKuuF,kBAAkB9kF,EAAE,IAAIm8B,EAAE,GACnb,uIAAuIzkC,MAAM,KAAK3E,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAenF,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAE,GAAGikC,EAAEhkC,GAAG,IAAI8jC,EAAE9jC,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASnF,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAEwqB,cAAc,MAAK,GAAG,MACve,CAAC,cAAc,4BAA4B,YAAY,iBAAiB3vB,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,8OAA8OR,MAAM,KAAK3E,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAEwqB,cAAc,MAAK,GAAG,MACrb,CAAC,UAAU,WAAW,QAAQ,YAAY3vB,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,YAAYnF,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQnF,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,MAAM,CAAC,UAAU,SAASnF,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAEwqB,cAAc,MAAK,GAAG,MAAM,IAAIqiE,EAAG,gBAAgB,SAAStP,EAAGv9E,GAAG,OAAOA,EAAE,GAAGkiD,cAI3Y,SAAS4qC,EAAG9sF,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEgiC,EAAEzlC,eAAeyB,GAAGgkC,EAAEhkC,GAAG,MAAW,OAAOgC,EAAE,IAAIA,EAAE2R,MAAK/S,IAAO,EAAEZ,EAAEtF,SAAS,MAAMsF,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAEwI,EAAE5H,GAAG,GAAG,OAAOZ,GAAG,qBAAqBA,GADwE,SAAYD,EAAEC,EAAEwI,EAAE5H,GAAG,GAAG,OAAO4H,GAAG,IAAIA,EAAEmL,KAAK,OAAM,EAAG,cAAc3T,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGY,IAAc,OAAO4H,GAASA,EAAE6jF,gBAAmD,WAAnCtsF,EAAEA,EAAEwqB,cAAchpB,MAAM,EAAE,KAAsB,UAAUxB,GAAE,QAAQ,OAAM,GAC/T+sF,CAAG/sF,EAAEC,EAAEwI,EAAE5H,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAO4H,EAAE,OAAOA,EAAEmL,MAAM,KAAK,EAAE,OAAO3T,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOmrB,MAAMnrB,GAAG,KAAK,EAAE,OAAOmrB,MAAMnrB,IAAI,EAAEA,EAAE,OAAM,EAOrD2tB,CAAG3tB,EAAEwI,EAAExG,EAAEpB,KAAK4H,EAAE,MAAM5H,GAAG,OAAOoB,EARpL,SAAYjC,GAAG,QAAGmsF,EAAGvuF,KAAKyuF,EAAGrsF,KAAemsF,EAAGvuF,KAAKwuF,EAAGpsF,KAAeksF,EAAGxqF,KAAK1B,GAAUqsF,EAAGrsF,IAAG,GAAGosF,EAAGpsF,IAAG,GAAS,IAQsEgtF,CAAG/sF,KAAK,OAAOwI,EAAEzI,EAAE4W,gBAAgB3W,GAAGD,EAAEiX,aAAahX,EAAE,GAAGwI,IAAIxG,EAAEwqF,gBAAgBzsF,EAAEiC,EAAEyqF,cAAc,OAAOjkF,EAAE,IAAIxG,EAAE2R,MAAQ,GAAGnL,GAAGxI,EAAEgC,EAAEsqF,cAAc1rF,EAAEoB,EAAEuqF,mBAAmB,OAAO/jF,EAAEzI,EAAE4W,gBAAgB3W,IAAawI,EAAE,KAAXxG,EAAEA,EAAE2R,OAAc,IAAI3R,IAAG,IAAKwG,EAAE,GAAG,GAAGA,EAAE5H,EAAEb,EAAEmX,eAAetW,EAAEZ,EAAEwI,GAAGzI,EAAEiX,aAAahX,EAAEwI,MAH5d,0jCAA0jCjJ,MAAM,KAAK3E,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAEw3C,QAAQq1C,EACzmCtP,GAAIt5C,EAAEhkC,GAAG,IAAI8jC,EAAE9jC,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,MAAM,2EAA2ER,MAAM,KAAK3E,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAEw3C,QAAQq1C,EAAGtP,GAAIt5C,EAAEhkC,GAAG,IAAI8jC,EAAE9jC,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,MAAM,CAAC,WAAW,WAAW,aAAanF,SAAQ,SAASmF,GAAG,IAAIC,EAAED,EAAEw3C,QAAQq1C,EAAGtP,GAAIt5C,EAAEhkC,GAAG,IAAI8jC,EAAE9jC,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,MAAM,CAAC,WAAW,eAAenF,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAEwqB,cAAc,MAAK,GAAG,MAC/cyZ,EAAEgpD,UAAU,IAAIlpD,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAclpC,SAAQ,SAASmF,GAAGikC,EAAEjkC,GAAG,IAAI+jC,EAAE/jC,EAAE,GAAE,EAAGA,EAAEwqB,cAAc,MAAK,GAAG,MAEzL,IAAI0iE,EAAG3vB,EAAG6sB,mDAAmD1wB,EAAG,MAAMyzB,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAM/5D,EAAG,MAAMC,EAAG,MAAM+5D,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAChN,GAAG,oBAAoBvwF,QAAQA,OAAO2qF,IAAI,CAAC,IAAIjsD,EAAE1+B,OAAO2qF,IAAI1uB,EAAGv9B,EAAE,iBAAiBgxD,EAAGhxD,EAAE,gBAAgBixD,EAAGjxD,EAAE,kBAAkBkxD,EAAGlxD,EAAE,qBAAqB7I,EAAG6I,EAAE,kBAAkB5I,EAAG4I,EAAE,kBAAkBmxD,EAAGnxD,EAAE,iBAAiBoxD,EAAGpxD,EAAE,qBAAqBqxD,EAAGrxD,EAAE,kBAAkBsxD,EAAGtxD,EAAE,uBAAuBuxD,EAAGvxD,EAAE,cAAcwxD,EAAGxxD,EAAE,cAAcyxD,EAAGzxD,EAAE,eAAeA,EAAE,eAAe0xD,EAAG1xD,EAAE,mBAAmB2xD,EAAG3xD,EAAE,0BAA0B4xD,EAAG5xD,EAAE,mBAAmB6xD,EAAG7xD,EAAE,uBACxc,IAAmL8xD,EAA/KC,EAAG,oBAAoBzwF,QAAQA,OAAOC,SAAS,SAASywF,EAAGnuF,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEkuF,GAAIluF,EAAEkuF,IAAKluF,EAAE,eAA0CA,EAAE,KAAY,SAASouF,EAAGpuF,GAAG,QAAG,IAASiuF,EAAG,IAAI,MAAM3xF,QAAS,MAAMmM,GAAG,IAAIxI,EAAEwI,EAAEo6E,MAAMlvE,OAAOiJ,MAAM,gBAAgBqxE,EAAGhuF,GAAGA,EAAE,IAAI,GAAG,MAAM,KAAKguF,EAAGjuF,EAAE,IAAIquF,GAAG,EACjU,SAASC,EAAGtuF,EAAEC,GAAG,IAAID,GAAGquF,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI5lF,EAAEnM,MAAMiyF,kBAAkBjyF,MAAMiyF,uBAAkB,EAAO,IAAI,GAAGtuF,EAAE,GAAGA,EAAE,WAAW,MAAM3D,SAAUxC,OAAOmB,eAAegF,EAAEnE,UAAU,QAAQ,CAAC4K,IAAI,WAAW,MAAMpK,WAAY,kBAAkBgC,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAU0B,EAAE,IAAI,MAAM8L,GAAG,IAAIlL,EAAEkL,EAAEzN,QAAQC,UAAUyB,EAAE,GAAGC,OAAO,CAAC,IAAIA,EAAErC,OAAO,MAAMmO,GAAGlL,EAAEkL,EAAE/L,EAAEpC,KAAKqC,EAAEnE,eAAe,CAAC,IAAI,MAAMQ,QAAS,MAAMyP,GAAGlL,EAAEkL,EAAE/L,KAAK,MAAM+L,GAAG,GAAGA,GAAGlL,GAAG,kBAAkBkL,EAAE82E,MAAM,CAAC,IAAI,IAAI5gF,EAAE8J,EAAE82E,MAAMrjF,MAAM,MACnfY,EAAES,EAAEgiF,MAAMrjF,MAAM,MAAMsI,EAAE7F,EAAEtH,OAAO,EAAE0wB,EAAEjrB,EAAEzF,OAAO,EAAE,GAAGmN,GAAG,GAAGujB,GAAGppB,EAAE6F,KAAK1H,EAAEirB,IAAIA,IAAI,KAAK,GAAGvjB,GAAG,GAAGujB,EAAEvjB,IAAIujB,IAAI,GAAGppB,EAAE6F,KAAK1H,EAAEirB,GAAG,CAAC,GAAG,IAAIvjB,GAAG,IAAIujB,EAAG,GAAG,GAAGvjB,IAAQ,IAAJujB,GAASppB,EAAE6F,KAAK1H,EAAEirB,GAAG,MAAM,KAAKppB,EAAE6F,GAAG0vC,QAAQ,WAAW,cAAc,GAAG1vC,GAAG,GAAGujB,GAAG,QAD3H,QAC2IgjE,GAAG,EAAG/xF,MAAMiyF,kBAAkB9lF,EAAE,OAAOzI,EAAEA,EAAEA,EAAEwuF,aAAaxuF,EAAEyB,KAAK,IAAI2sF,EAAGpuF,GAAG,GAC7T,SAASyuF,EAAGzuF,GAAG,OAAOA,EAAE0uF,KAAK,KAAK,EAAE,OAAON,EAAGpuF,EAAE4T,MAAM,KAAK,GAAG,OAAOw6E,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOpuF,EAAEsuF,EAAGtuF,EAAE4T,MAAK,GAAM,KAAK,GAAG,OAAO5T,EAAEsuF,EAAGtuF,EAAE4T,KAAKo3E,QAAO,GAAM,KAAK,GAAG,OAAOhrF,EAAEsuF,EAAGtuF,EAAE4T,KAAK+6E,SAAQ,GAAM,KAAK,EAAE,OAAO3uF,EAAEsuF,EAAGtuF,EAAE4T,MAAK,GAAM,QAAQ,MAAM,IAC9T,SAASg7E,EAAG5uF,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEwuF,aAAaxuF,EAAEyB,MAAM,KAAK,GAAG,kBAAkBzB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKotF,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAK75D,EAAG,MAAM,WAAW,KAAK+5D,EAAG,MAAM,aAAa,KAAKG,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBztF,EAAE,OAAOA,EAAEopF,UAAU,KAAKkE,EAAG,OAAOttF,EAAEwuF,aAAa,WAAW,YAAY,KAAKj7D,EAAG,OAAOvzB,EAAE+yD,SAASy7B,aAAa,WAAW,YAAY,KAAKjB,EAAG,IAAIttF,EAAED,EAAEgrF,OACnd,OAD0d/qF,EAAEA,EAAEuuF,aAAavuF,EAAEwB,MAAM,GAC5ezB,EAAEwuF,cAAc,KAAKvuF,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAKytF,EAAG,OAAOkB,EAAG5uF,EAAE4T,MAAM,KAAKg6E,EAAG,OAAOgB,EAAG5uF,EAAE2uF,SAAS,KAAKhB,EAAG1tF,EAAED,EAAEkrF,SAASlrF,EAAEA,EAAEswC,MAAM,IAAI,OAAOs+C,EAAG5uF,EAAEC,IAAI,MAAMwI,KAAK,OAAO,KAAK,SAASomF,EAAG7uF,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAAS8uF,EAAG9uF,GAAG,IAAIC,EAAED,EAAE4T,KAAK,OAAO5T,EAAEA,EAAE+uF,WAAW,UAAU/uF,EAAEwqB,gBAAgB,aAAavqB,GAAG,UAAUA,GAE1Z,SAAS+uF,EAAGhvF,GAAGA,EAAEivF,gBAAgBjvF,EAAEivF,cADvD,SAAYjvF,GAAG,IAAIC,EAAE6uF,EAAG9uF,GAAG,UAAU,QAAQyI,EAAE3O,OAAOK,yBAAyB6F,EAAEzC,YAAYzB,UAAUmE,GAAGY,EAAE,GAAGb,EAAEC,GAAG,IAAID,EAAExB,eAAeyB,IAAI,qBAAqBwI,GAAG,oBAAoBA,EAAE5C,KAAK,oBAAoB4C,EAAE/B,IAAI,CAAC,IAAIzE,EAAEwG,EAAE5C,IAAIzF,EAAEqI,EAAE/B,IAAiL,OAA7K5M,OAAOmB,eAAe+E,EAAEC,EAAE,CAACxE,cAAa,EAAGoK,IAAI,WAAW,OAAO5D,EAAErE,KAAKS,OAAOqI,IAAI,SAAS1G,GAAGa,EAAE,GAAGb,EAAEI,EAAExC,KAAKS,KAAK2B,MAAMlG,OAAOmB,eAAe+E,EAAEC,EAAE,CAAC7F,WAAWqO,EAAErO,aAAmB,CAAC80F,SAAS,WAAW,OAAOruF,GAAGsuF,SAAS,SAASnvF,GAAGa,EAAE,GAAGb,GAAGovF,aAAa,WAAWpvF,EAAEivF,cACxf,YAAYjvF,EAAEC,MAAuDovF,CAAGrvF,IAAI,SAASsvF,EAAGtvF,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEivF,cAAc,IAAIhvF,EAAE,OAAM,EAAG,IAAIwI,EAAExI,EAAEivF,WAAeruF,EAAE,GAAqD,OAAlDb,IAAIa,EAAEiuF,EAAG9uF,GAAGA,EAAEuvF,QAAQ,OAAO,QAAQvvF,EAAEnD,QAAOmD,EAAEa,KAAa4H,IAAGxI,EAAEkvF,SAASnvF,IAAG,GAAO,SAASwvF,EAAGxvF,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqBuX,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOvX,EAAEyvF,eAAezvF,EAAE0vF,KAAK,MAAMzvF,GAAG,OAAOD,EAAE0vF,MAC/Z,SAASC,EAAG3vF,EAAEC,GAAG,IAAIwI,EAAExI,EAAEsvF,QAAQ,OAAO/jF,EAAE,GAAGvL,EAAE,CAAC2vF,oBAAe,EAAOC,kBAAa,EAAOhzF,WAAM,EAAO0yF,QAAQ,MAAM9mF,EAAEA,EAAEzI,EAAE8vF,cAAcC,iBAAiB,SAASC,GAAGhwF,EAAEC,GAAG,IAAIwI,EAAE,MAAMxI,EAAE4vF,aAAa,GAAG5vF,EAAE4vF,aAAahvF,EAAE,MAAMZ,EAAEsvF,QAAQtvF,EAAEsvF,QAAQtvF,EAAE2vF,eAAennF,EAAEomF,EAAG,MAAM5uF,EAAEpD,MAAMoD,EAAEpD,MAAM4L,GAAGzI,EAAE8vF,cAAc,CAACC,eAAelvF,EAAEovF,aAAaxnF,EAAEynF,WAAW,aAAajwF,EAAE2T,MAAM,UAAU3T,EAAE2T,KAAK,MAAM3T,EAAEsvF,QAAQ,MAAMtvF,EAAEpD,OAAO,SAASszF,GAAGnwF,EAAEC,GAAe,OAAZA,EAAEA,EAAEsvF,UAAiBzC,EAAG9sF,EAAE,UAAUC,GAAE,GAC3d,SAASywC,GAAG1wC,EAAEC,GAAGkwF,GAAGnwF,EAAEC,GAAG,IAAIwI,EAAEomF,EAAG5uF,EAAEpD,OAAOgE,EAAEZ,EAAE2T,KAAK,GAAG,MAAMnL,EAAK,WAAW5H,GAAM,IAAI4H,GAAG,KAAKzI,EAAEnD,OAAOmD,EAAEnD,OAAO4L,KAAEzI,EAAEnD,MAAM,GAAG4L,GAAOzI,EAAEnD,QAAQ,GAAG4L,IAAIzI,EAAEnD,MAAM,GAAG4L,QAAQ,GAAG,WAAW5H,GAAG,UAAUA,EAA8B,YAA3Bb,EAAE4W,gBAAgB,SAAgB3W,EAAEzB,eAAe,SAAS4xF,GAAGpwF,EAAEC,EAAE2T,KAAKnL,GAAGxI,EAAEzB,eAAe,iBAAiB4xF,GAAGpwF,EAAEC,EAAE2T,KAAKi7E,EAAG5uF,EAAE4vF,eAAe,MAAM5vF,EAAEsvF,SAAS,MAAMtvF,EAAE2vF,iBAAiB5vF,EAAE4vF,iBAAiB3vF,EAAE2vF,gBACnZ,SAASpgC,GAAGxvD,EAAEC,EAAEwI,GAAG,GAAGxI,EAAEzB,eAAe,UAAUyB,EAAEzB,eAAe,gBAAgB,CAAC,IAAIqC,EAAEZ,EAAE2T,KAAK,KAAK,WAAW/S,GAAG,UAAUA,QAAG,IAASZ,EAAEpD,OAAO,OAAOoD,EAAEpD,OAAO,OAAOoD,EAAE,GAAGD,EAAE8vF,cAAcG,aAAaxnF,GAAGxI,IAAID,EAAEnD,QAAQmD,EAAEnD,MAAMoD,GAAGD,EAAE6vF,aAAa5vF,EAAW,MAATwI,EAAEzI,EAAEyB,QAAczB,EAAEyB,KAAK,IAAIzB,EAAE4vF,iBAAiB5vF,EAAE8vF,cAAcC,eAAe,KAAKtnF,IAAIzI,EAAEyB,KAAKgH,GACvV,SAAS2nF,GAAGpwF,EAAEC,EAAEwI,GAAM,WAAWxI,GAAGuvF,EAAGxvF,EAAEkV,iBAAiBlV,IAAE,MAAMyI,EAAEzI,EAAE6vF,aAAa,GAAG7vF,EAAE8vF,cAAcG,aAAajwF,EAAE6vF,eAAe,GAAGpnF,IAAIzI,EAAE6vF,aAAa,GAAGpnF,IAAwF,SAAS4nF,GAAGrwF,EAAEC,GAA6D,OAA1DD,EAAEwL,EAAE,CAACqJ,cAAS,GAAQ5U,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApDs9D,EAAGysB,SAASnvF,QAAQmF,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,MAAYC,EAAiDqwF,CAAGrwF,EAAE4U,aAAU7U,EAAE6U,SAAS5U,GAASD,EACvU,SAASuwF,GAAGvwF,EAAEC,EAAEwI,EAAE5H,GAAe,GAAZb,EAAEA,EAAEkb,QAAWjb,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIgC,EAAE,EAAEA,EAAEwG,EAAE9N,OAAOsH,IAAIhC,EAAE,IAAIwI,EAAExG,KAAI,EAAG,IAAIwG,EAAE,EAAEA,EAAEzI,EAAErF,OAAO8N,IAAIxG,EAAEhC,EAAEzB,eAAe,IAAIwB,EAAEyI,GAAG5L,OAAOmD,EAAEyI,GAAG+nF,WAAWvuF,IAAIjC,EAAEyI,GAAG+nF,SAASvuF,GAAGA,GAAGpB,IAAIb,EAAEyI,GAAGgoF,iBAAgB,OAAQ,CAAmB,IAAlBhoF,EAAE,GAAGomF,EAAGpmF,GAAGxI,EAAE,KAASgC,EAAE,EAAEA,EAAEjC,EAAErF,OAAOsH,IAAI,CAAC,GAAGjC,EAAEiC,GAAGpF,QAAQ4L,EAAiD,OAA9CzI,EAAEiC,GAAGuuF,UAAS,OAAG3vF,IAAIb,EAAEiC,GAAGwuF,iBAAgB,IAAW,OAAOxwF,GAAGD,EAAEiC,GAAGyuF,WAAWzwF,EAAED,EAAEiC,IAAI,OAAOhC,IAAIA,EAAEuwF,UAAS,IACpY,SAASG,GAAG3wF,EAAEC,GAAG,GAAG,MAAMA,EAAE2wF,wBAAwB,MAAMt0F,MAAM0I,EAAE,KAAK,OAAOwG,EAAE,GAAGvL,EAAE,CAACpD,WAAM,EAAOgzF,kBAAa,EAAOh7E,SAAS,GAAG7U,EAAE8vF,cAAcG,eAAe,SAASY,GAAG7wF,EAAEC,GAAG,IAAIwI,EAAExI,EAAEpD,MAAM,GAAG,MAAM4L,EAAE,CAA+B,GAA9BA,EAAExI,EAAE4U,SAAS5U,EAAEA,EAAE4vF,aAAgB,MAAMpnF,EAAE,CAAC,GAAG,MAAMxI,EAAE,MAAM3D,MAAM0I,EAAE,KAAK,GAAG5D,MAAMU,QAAQ2G,GAAG,CAAC,KAAK,GAAGA,EAAE9N,QAAQ,MAAM2B,MAAM0I,EAAE,KAAKyD,EAAEA,EAAE,GAAGxI,EAAEwI,EAAE,MAAMxI,IAAIA,EAAE,IAAIwI,EAAExI,EAAED,EAAE8vF,cAAc,CAACG,aAAapB,EAAGpmF,IAC/Y,SAASqoF,GAAG9wF,EAAEC,GAAG,IAAIwI,EAAEomF,EAAG5uF,EAAEpD,OAAOgE,EAAEguF,EAAG5uF,EAAE4vF,cAAc,MAAMpnF,KAAIA,EAAE,GAAGA,KAAMzI,EAAEnD,QAAQmD,EAAEnD,MAAM4L,GAAG,MAAMxI,EAAE4vF,cAAc7vF,EAAE6vF,eAAepnF,IAAIzI,EAAE6vF,aAAapnF,IAAI,MAAM5H,IAAIb,EAAE6vF,aAAa,GAAGhvF,GAAG,SAASkwF,GAAG/wF,GAAG,IAAIC,EAAED,EAAEqZ,YAAYpZ,IAAID,EAAE8vF,cAAcG,cAAc,KAAKhwF,GAAG,OAAOA,IAAID,EAAEnD,MAAMoD,GAAG,IAAI+wF,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGjxF,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASkxF,GAAGlxF,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEixF,GAAGhxF,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAI2tB,GAAe3tB,GAAZmxF,IAAYnxF,GAAsJ,SAASA,EAAEC,GAAG,GAAGD,EAAEmV,eAAe67E,IAAQ,cAAchxF,EAAEA,EAAEyZ,UAAUxZ,MAAM,CAA2F,KAA1F0tB,GAAGA,IAAIpW,SAAS6C,cAAc,QAAUX,UAAU,QAAQxZ,EAAEsH,UAAUhG,WAAW,SAAatB,EAAE0tB,GAAG3T,WAAWha,EAAEga,YAAYha,EAAEya,YAAYza,EAAEga,YAAY,KAAK/Z,EAAE+Z,YAAYha,EAAEuV,YAAYtV,EAAE+Z,cAArZ,qBAAqBo3E,OAAOA,MAAMC,wBAAwB,SAASpxF,EAAEwI,EAAE5H,EAAEoB,GAAGmvF,MAAMC,yBAAwB,WAAW,OAAOrxF,GAAEC,EAAEwI,OAAUzI,IACtK,SAASsxF,GAAGtxF,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIwI,EAAEzI,EAAEga,WAAW,GAAGvR,GAAGA,IAAIzI,EAAEuxF,WAAW,IAAI9oF,EAAE+oF,SAAwB,YAAd/oF,EAAE+3D,UAAUvgE,GAAUD,EAAEqZ,YAAYpZ,EACrH,IAAIwxF,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGv8C,SAAQ,EAAGw8C,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGnoE,SAAQ,EAAGhZ,OAAM,EAAGohF,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGjxB,MAAK,EAAGkxB,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGj0F,EAAEC,EAAEwI,GAAG,OAAO,MAAMxI,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGwI,GAAG,kBAAkBxI,GAAG,IAAIA,GAAGwxF,GAAGjzF,eAAewB,IAAIyxF,GAAGzxF,IAAI,GAAGC,GAAG0T,OAAO1T,EAAE,KAC9Z,SAASi0F,GAAGl0F,EAAEC,GAAa,IAAI,IAAIwI,KAAlBzI,EAAEA,EAAEyX,MAAmBxX,EAAE,GAAGA,EAAEzB,eAAeiK,GAAG,CAAC,IAAI5H,EAAE,IAAI4H,EAAEjC,QAAQ,MAAMvE,EAAEgyF,GAAGxrF,EAAExI,EAAEwI,GAAG5H,GAAG,UAAU4H,IAAIA,EAAE,YAAY5H,EAAEb,EAAE6X,YAAYpP,EAAExG,GAAGjC,EAAEyI,GAAGxG,GADTnI,OAAOD,KAAK43F,IAAI52F,SAAQ,SAASmF,GAAGg0F,GAAGn5F,SAAQ,SAASoF,GAAGA,EAAEA,EAAED,EAAEq2E,OAAO,GAAGn0B,cAAcliD,EAAEuiD,UAAU,GAAGkvC,GAAGxxF,GAAGwxF,GAAGzxF,SACrG,IAAIm0F,GAAG3oF,EAAE,CAAC4oF,UAAS,GAAI,CAAChuD,MAAK,EAAGtgC,MAAK,EAAG+oC,IAAG,EAAGwlD,KAAI,EAAGC,OAAM,EAAG3xD,IAAG,EAAG4xD,KAAI,EAAGr8D,OAAM,EAAGs8D,QAAO,EAAGn1C,MAAK,EAAGo1C,MAAK,EAAGC,OAAM,EAAG95F,QAAO,EAAG+5F,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG70F,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAGk0F,GAAGn0F,KAAK,MAAMC,EAAE4U,UAAU,MAAM5U,EAAE2wF,yBAAyB,MAAMt0F,MAAM0I,EAAE,IAAIhF,IAAI,GAAG,MAAMC,EAAE2wF,wBAAwB,CAAC,GAAG,MAAM3wF,EAAE4U,SAAS,MAAMvY,MAAM0I,EAAE,KAAK,GAAK,kBAAkB/E,EAAE2wF,2BAAyB,WAAW3wF,EAAE2wF,yBAAyB,MAAMt0F,MAAM0I,EAAE,KAAM,GAAG,MAAM/E,EAAEwX,OAAO,kBAAkBxX,EAAEwX,MAAM,MAAMnb,MAAM0I,EAAE,MAC5V,SAAS8vF,GAAG90F,EAAEC,GAAG,IAAI,IAAID,EAAEwG,QAAQ,KAAK,MAAM,kBAAkBvG,EAAEwP,GAAG,OAAOzP,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASwzB,GAAGxzB,GAA6F,OAA1FA,EAAEA,EAAExF,QAAQwF,EAAE+0F,YAAY7jF,QAAS8jF,0BAA0Bh1F,EAAEA,EAAEg1F,yBAAgC,IAAIh1F,EAAEwxF,SAASxxF,EAAE6S,WAAW7S,EAAE,IAAIyzB,GAAG,KAAKwhE,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAGn1F,GAAG,GAAGA,EAAEo1F,GAAGp1F,GAAG,CAAC,GAAG,oBAAoByzB,GAAG,MAAMn3B,MAAM0I,EAAE,MAAM,IAAI/E,EAAED,EAAEq1F,UAAUp1F,IAAIA,EAAEq1F,GAAGr1F,GAAGwzB,GAAGzzB,EAAEq1F,UAAUr1F,EAAE4T,KAAK3T,KAAK,SAASs1F,GAAGv1F,GAAGi1F,GAAGC,GAAGA,GAAG76F,KAAK2F,GAAGk1F,GAAG,CAACl1F,GAAGi1F,GAAGj1F,EAAE,SAASw1F,KAAK,GAAGP,GAAG,CAAC,IAAIj1F,EAAEi1F,GAAGh1F,EAAEi1F,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGn1F,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEtF,OAAOqF,IAAIm1F,GAAGl1F,EAAED,KAAK,SAASy1F,GAAGz1F,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAASy1F,GAAG11F,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,OAAOjC,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,SAAS0zF,MAAM,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOd,IAAI,OAAOC,KAAGS,KAAKH,MAE9Z,SAASQ,GAAGh2F,EAAEC,GAAG,IAAIwI,EAAEzI,EAAEq1F,UAAU,GAAG,OAAO5sF,EAAE,OAAO,KAAK,IAAI5H,EAAEy0F,GAAG7sF,GAAG,GAAG,OAAO5H,EAAE,OAAO,KAAK4H,EAAE5H,EAAEZ,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBY,GAAGA,EAAE6vF,YAAqB7vF,IAAI,YAAbb,EAAEA,EAAE4T,OAAuB,UAAU5T,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGa,EAAE,MAAMb,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGyI,GAAG,oBACleA,EAAE,MAAMnM,MAAM0I,EAAE,IAAI/E,SAASwI,IAAI,OAAOA,EAAE,IAAIwtF,IAAG,EAAG,GAAGhK,EAAG,IAAI,IAAIiK,GAAG,GAAGp8F,OAAOmB,eAAei7F,GAAG,UAAU,CAACrwF,IAAI,WAAWowF,IAAG,KAAM/kF,OAAOoK,iBAAiB,OAAO46E,GAAGA,IAAIhlF,OAAO8J,oBAAoB,OAAOk7E,GAAGA,IAAI,MAAMl2F,IAAGi2F,IAAG,EAAG,SAASE,GAAGn2F,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,EAAE0H,EAAEujB,EAAEtf,GAAG,IAAIwe,EAAEnpB,MAAMtF,UAAU0F,MAAM5D,KAAKlD,UAAU,GAAG,IAAIuF,EAAE3F,MAAMmO,EAAE8hB,GAAG,MAAMlrB,GAAGhB,KAAK+3F,QAAQ/2F,IAAI,IAAIg3F,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAASp2F,GAAGq2F,IAAG,EAAGC,GAAGt2F,IAAI,SAAS02F,GAAG12F,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,EAAE0H,EAAEujB,EAAEtf,GAAGsqF,IAAG,EAAGC,GAAG,KAAKH,GAAG77F,MAAMm8F,GAAG/7F,WACvV,SAASi8F,GAAG32F,GAAG,IAAIC,EAAED,EAAEyI,EAAEzI,EAAE,GAAGA,EAAE42F,UAAU,KAAK32F,EAAE42F,QAAQ52F,EAAEA,EAAE42F,WAAW,CAAC72F,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAAS82F,SAAcruF,EAAExI,EAAE42F,QAAQ72F,EAAEC,EAAE42F,aAAa72F,GAAG,OAAO,IAAIC,EAAEyuF,IAAIjmF,EAAE,KAAK,SAASsuF,GAAG/2F,GAAG,GAAG,KAAKA,EAAE0uF,IAAI,CAAC,IAAIzuF,EAAED,EAAEg3F,cAAsE,GAAxD,OAAO/2F,IAAkB,QAAdD,EAAEA,EAAE42F,aAAqB32F,EAAED,EAAEg3F,gBAAmB,OAAO/2F,EAAE,OAAOA,EAAEg3F,WAAW,OAAO,KAAK,SAASC,GAAGl3F,GAAG,GAAG22F,GAAG32F,KAAKA,EAAE,MAAM1D,MAAM0I,EAAE,MAEpS,SAASozD,GAAGp4D,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAE42F,UAAU,IAAI32F,EAAE,CAAS,GAAG,QAAXA,EAAE02F,GAAG32F,IAAe,MAAM1D,MAAM0I,EAAE,MAAM,OAAO/E,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAIyI,EAAEzI,EAAEa,EAAEZ,IAAI,CAAC,IAAIgC,EAAEwG,EAAEouF,OAAO,GAAG,OAAO50F,EAAE,MAAM,IAAI7B,EAAE6B,EAAE20F,UAAU,GAAG,OAAOx2F,EAAE,CAAY,GAAG,QAAdS,EAAEoB,EAAE40F,QAAmB,CAACpuF,EAAE5H,EAAE,SAAS,MAAM,GAAGoB,EAAEuT,QAAQpV,EAAEoV,MAAM,CAAC,IAAIpV,EAAE6B,EAAEuT,MAAMpV,GAAG,CAAC,GAAGA,IAAIqI,EAAE,OAAOyuF,GAAGj1F,GAAGjC,EAAE,GAAGI,IAAIS,EAAE,OAAOq2F,GAAGj1F,GAAGhC,EAAEG,EAAEA,EAAE+2F,QAAQ,MAAM76F,MAAM0I,EAAE,MAAO,GAAGyD,EAAEouF,SAASh2F,EAAEg2F,OAAOpuF,EAAExG,EAAEpB,EAAET,MAAM,CAAC,IAAI,IAAI0H,GAAE,EAAGujB,EAAEppB,EAAEuT,MAAM6V,GAAG,CAAC,GAAGA,IAAI5iB,EAAE,CAACX,GAAE,EAAGW,EAAExG,EAAEpB,EAAET,EAAE,MAAM,GAAGirB,IAAIxqB,EAAE,CAACiH,GAAE,EAAGjH,EAAEoB,EAAEwG,EAAErI,EAAE,MAAMirB,EAAEA,EAAE8rE,QAAQ,IAAIrvF,EAAE,CAAC,IAAIujB,EAAEjrB,EAAEoV,MAAM6V,GAAG,CAAC,GAAGA,IAC5f5iB,EAAE,CAACX,GAAE,EAAGW,EAAErI,EAAES,EAAEoB,EAAE,MAAM,GAAGopB,IAAIxqB,EAAE,CAACiH,GAAE,EAAGjH,EAAET,EAAEqI,EAAExG,EAAE,MAAMopB,EAAEA,EAAE8rE,QAAQ,IAAIrvF,EAAE,MAAMxL,MAAM0I,EAAE,OAAQ,GAAGyD,EAAEmuF,YAAY/1F,EAAE,MAAMvE,MAAM0I,EAAE,MAAO,GAAG,IAAIyD,EAAEimF,IAAI,MAAMpyF,MAAM0I,EAAE,MAAM,OAAOyD,EAAE4sF,UAAUjpC,UAAU3jD,EAAEzI,EAAEC,EAAmBm3F,CAAGp3F,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEyuF,KAAK,IAAIzuF,EAAEyuF,IAAI,OAAOzuF,EAAE,GAAGA,EAAEuV,MAAMvV,EAAEuV,MAAMqhF,OAAO52F,EAAEA,EAAEA,EAAEuV,UAAU,CAAC,GAAGvV,IAAID,EAAE,MAAM,MAAMC,EAAEk3F,SAAS,CAAC,IAAIl3F,EAAE42F,QAAQ52F,EAAE42F,SAAS72F,EAAE,OAAO,KAAKC,EAAEA,EAAE42F,OAAO52F,EAAEk3F,QAAQN,OAAO52F,EAAE42F,OAAO52F,EAAEA,EAAEk3F,SAAS,OAAO,KAC5c,SAAStjD,GAAG7zC,EAAEC,GAAG,IAAI,IAAIwI,EAAEzI,EAAE42F,UAAU,OAAO32F,GAAG,CAAC,GAAGA,IAAID,GAAGC,IAAIwI,EAAE,OAAM,EAAGxI,EAAEA,EAAE42F,OAAO,OAAM,EAAG,IAAIQ,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGrb,GAAG,KAAKC,GAAG,KAAKqb,GAAG,KAAKC,GAAG,IAAItxF,IAAI81E,GAAG,IAAI91E,IAAIuxF,GAAG,GAAGC,GAAG,6PAA6Pt4F,MAAM,KACrb,SAASu7E,GAAG/6E,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,MAAM,CAAC81F,UAAU/3F,EAAEg4F,aAAa/3F,EAAEg4F,iBAAmB,GAAFxvF,EAAKyvF,YAAYj2F,EAAEk2F,iBAAiB,CAACt3F,IAAI,SAASs3D,GAAGn4D,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWq8E,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWqb,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGtwF,OAAOrH,EAAEm4F,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBhc,GAAG90E,OAAOrH,EAAEm4F,YAC3Z,SAASC,GAAGr4F,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,OAAG,OAAOJ,GAAGA,EAAEk4F,cAAc93F,GAASJ,EAAE+6E,GAAG96E,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,OAAOH,IAAY,QAARA,EAAEm1F,GAAGn1F,KAAaq3F,GAAGr3F,IAAID,IAAEA,EAAEi4F,kBAAkBp3F,EAAEZ,EAAED,EAAEm4F,iBAAiB,OAAOl2F,IAAI,IAAIhC,EAAEuG,QAAQvE,IAAIhC,EAAE5F,KAAK4H,GAAUjC,GAE9M,SAASs4F,GAAGt4F,GAAG,IAAIC,EAAEs4F,GAAGv4F,EAAExF,QAAQ,GAAG,OAAOyF,EAAE,CAAC,IAAIwI,EAAEkuF,GAAG12F,GAAG,GAAG,OAAOwI,EAAE,GAAW,MAARxI,EAAEwI,EAAEimF,MAAY,GAAW,QAARzuF,EAAE82F,GAAGtuF,IAAmH,OAAtGzI,EAAE+3F,UAAU93F,OAAEu3F,GAAGx3F,EAAEw4F,cAAa,WAAWvqF,EAAEwqF,yBAAyBz4F,EAAE4X,UAAS,WAAW2/E,GAAG9uF,cAAoB,GAAG,IAAIxI,GAAGwI,EAAE4sF,UAAUqD,QAA8D,YAArD14F,EAAE+3F,UAAU,IAAItvF,EAAEimF,IAAIjmF,EAAE4sF,UAAUsD,cAAc,MAAa34F,EAAE+3F,UAAU,KAC1U,SAASa,GAAG54F,GAAG,GAAG,OAAOA,EAAE+3F,UAAU,OAAM,EAAG,IAAI,IAAI93F,EAAED,EAAEm4F,iBAAiB,EAAEl4F,EAAEtF,QAAQ,CAAC,IAAI8N,EAAEowF,GAAG74F,EAAEg4F,aAAah4F,EAAEi4F,iBAAiBh4F,EAAE,GAAGD,EAAEk4F,aAAa,GAAG,OAAOzvF,EAAE,OAAe,QAARxI,EAAEm1F,GAAG3sF,KAAa6uF,GAAGr3F,GAAGD,EAAE+3F,UAAUtvF,GAAE,EAAGxI,EAAEwL,QAAQ,OAAM,EAAG,SAASqtF,GAAG94F,EAAEC,EAAEwI,GAAGmwF,GAAG54F,IAAIyI,EAAEnB,OAAOrH,GACzQ,SAAS84F,KAAK,IAAItB,IAAG,EAAG,EAAEC,GAAG/8F,QAAQ,CAAC,IAAIqF,EAAE03F,GAAG,GAAG,GAAG,OAAO13F,EAAE+3F,UAAU,CAAmB,QAAlB/3F,EAAEo1F,GAAGp1F,EAAE+3F,aAAqBV,GAAGr3F,GAAG,MAAM,IAAI,IAAIC,EAAED,EAAEm4F,iBAAiB,EAAEl4F,EAAEtF,QAAQ,CAAC,IAAI8N,EAAEowF,GAAG74F,EAAEg4F,aAAah4F,EAAEi4F,iBAAiBh4F,EAAE,GAAGD,EAAEk4F,aAAa,GAAG,OAAOzvF,EAAE,CAACzI,EAAE+3F,UAAUtvF,EAAE,MAAMxI,EAAEwL,QAAQ,OAAOzL,EAAE+3F,WAAWL,GAAGjsF,QAAQ,OAAO4wE,IAAIuc,GAAGvc,MAAMA,GAAG,MAAM,OAAOC,IAAIsc,GAAGtc,MAAMA,GAAG,MAAM,OAAOqb,IAAIiB,GAAGjB,MAAMA,GAAG,MAAMC,GAAG/8F,QAAQi+F,IAAI1c,GAAGvhF,QAAQi+F,IACrZ,SAASE,GAAGh5F,EAAEC,GAAGD,EAAE+3F,YAAY93F,IAAID,EAAE+3F,UAAU,KAAKN,KAAKA,IAAG,EAAGxpF,EAAEgrF,0BAA0BhrF,EAAEirF,wBAAwBH,MACrH,SAASI,GAAGn5F,GAAG,SAASC,EAAEA,GAAG,OAAO+4F,GAAG/4F,EAAED,GAAG,GAAG,EAAE03F,GAAG/8F,OAAO,CAACq+F,GAAGtB,GAAG,GAAG13F,GAAG,IAAI,IAAIyI,EAAE,EAAEA,EAAEivF,GAAG/8F,OAAO8N,IAAI,CAAC,IAAI5H,EAAE62F,GAAGjvF,GAAG5H,EAAEk3F,YAAY/3F,IAAIa,EAAEk3F,UAAU,OAA+F,IAAxF,OAAO1b,IAAI2c,GAAG3c,GAAGr8E,GAAG,OAAOs8E,IAAI0c,GAAG1c,GAAGt8E,GAAG,OAAO23F,IAAIqB,GAAGrB,GAAG33F,GAAG43F,GAAG/8F,QAAQoF,GAAGm8E,GAAGvhF,QAAQoF,GAAOwI,EAAE,EAAEA,EAAEovF,GAAGl9F,OAAO8N,KAAI5H,EAAEg3F,GAAGpvF,IAAKsvF,YAAY/3F,IAAIa,EAAEk3F,UAAU,MAAM,KAAK,EAAEF,GAAGl9F,QAAiB,QAAR8N,EAAEovF,GAAG,IAAYE,WAAYO,GAAG7vF,GAAG,OAAOA,EAAEsvF,WAAWF,GAAGpsF,QAC/X,SAAS2tF,GAAGp5F,EAAEC,GAAG,IAAIwI,EAAE,GAAkF,OAA/EA,EAAEzI,EAAEwqB,eAAevqB,EAAEuqB,cAAc/hB,EAAE,SAASzI,GAAG,SAASC,EAAEwI,EAAE,MAAMzI,GAAG,MAAMC,EAASwI,EAAE,IAAI4wF,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GACnF,SAASC,GAAG55F,GAAG,GAAG05F,GAAG15F,GAAG,OAAO05F,GAAG15F,GAAG,IAAIq5F,GAAGr5F,GAAG,OAAOA,EAAE,IAAYyI,EAARxI,EAAEo5F,GAAGr5F,GAAK,IAAIyI,KAAKxI,EAAE,GAAGA,EAAEzB,eAAeiK,IAAIA,KAAKkxF,GAAG,OAAOD,GAAG15F,GAAGC,EAAEwI,GAAG,OAAOzI,EAA9XisF,IAAK0N,GAAGpiF,SAAS6C,cAAc,OAAO3C,MAAM,mBAAmBvG,gBAAgBmoF,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoB3oF,eAAemoF,GAAGI,cAAc9mF,YACxO,IAAImnF,GAAGF,GAAG,gBAAgBG,GAAGH,GAAG,sBAAsBI,GAAGJ,GAAG,kBAAkBK,GAAGL,GAAG,iBAAiBM,GAAG,IAAI5zF,IAAI6zF,GAAG,IAAI7zF,IAAI8zF,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAGr6F,EAAEC,GAAG,IAAI,IAAIwI,EAAE,EAAEA,EAAEzI,EAAErF,OAAO8N,GAAG,EAAE,CAAC,IAAI5H,EAAEb,EAAEyI,GAAGxG,EAAEjC,EAAEyI,EAAE,GAAGxG,EAAE,MAAMA,EAAE,GAAGigD,cAAcjgD,EAAET,MAAM,IAAI24F,GAAGzzF,IAAI7F,EAAEZ,GAAGi6F,GAAGxzF,IAAI7F,EAAEoB,GAAGo/B,EAAGp/B,EAAE,CAACpB,MAA2By5F,EAAfrsF,EAAEssF,gBAAkB,IAAIx4F,GAAE,EAC/X,SAASy4F,GAAGx6F,GAAG,GAAG,KAAK,EAAEA,GAAG,OAAO+B,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE/B,GAAG,OAAO+B,GAAE,GAAG,EAAE,GAAG,KAAK,EAAE/B,GAAG,OAAO+B,GAAE,GAAG,EAAE,IAAI9B,EAAE,GAAGD,EAAE,OAAG,IAAIC,GAAS8B,GAAE,GAAG9B,GAAK,KAAO,GAAFD,IAAa+B,GAAE,GAAG,IAAc,KAAX9B,EAAE,IAAID,IAAkB+B,GAAE,GAAG9B,GAAK,KAAO,IAAFD,IAAc+B,GAAE,EAAE,KAAgB,KAAZ9B,EAAE,KAAKD,IAAkB+B,GAAE,EAAE9B,GAAK,KAAO,KAAFD,IAAe+B,GAAE,EAAE,MAAoB,KAAf9B,EAAE,QAAQD,IAAkB+B,GAAE,EAAE9B,GAAkB,KAAhBA,EAAE,SAASD,IAAkB+B,GAAE,EAAE9B,GAAO,SAAFD,GAAkB+B,GAAE,EAAE,UAAY,KAAO,UAAF/B,IAAoB+B,GAAE,EAAE,WAA2B,KAAjB9B,EAAE,UAAUD,IAAkB+B,GAAE,EAAE9B,GAAK,KAAK,WAAWD,IAAU+B,GAAE,EAAE,aACjfA,GAAE,EAAS/B,GACX,SAASy6F,GAAGz6F,EAAEC,GAAG,IAAIwI,EAAEzI,EAAE06F,aAAa,GAAG,IAAIjyF,EAAE,OAAO1G,GAAE,EAAE,IAAIlB,EAAE,EAAEoB,EAAE,EAAE7B,EAAEJ,EAAE26F,aAAa7yF,EAAE9H,EAAE46F,eAAevvE,EAAErrB,EAAE66F,YAAY,GAAG,IAAIz6F,EAAES,EAAET,EAAE6B,EAAEF,GAAE,QAAQ,GAAiB,KAAd3B,EAAI,UAAFqI,GAAkB,CAAC,IAAIsD,EAAE3L,GAAG0H,EAAE,IAAIiE,GAAGlL,EAAE25F,GAAGzuF,GAAG9J,EAAEF,IAAS,KAALspB,GAAGjrB,KAAUS,EAAE25F,GAAGnvE,GAAGppB,EAAEF,SAAgB,KAAP3B,EAAEqI,GAAGX,IAASjH,EAAE25F,GAAGp6F,GAAG6B,EAAEF,IAAG,IAAIspB,IAAIxqB,EAAE25F,GAAGnvE,GAAGppB,EAAEF,IAAG,GAAG,IAAIlB,EAAE,OAAO,EAAqC,GAAxBA,EAAE4H,IAAI,GAAjB5H,EAAE,GAAGi6F,GAAGj6F,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIZ,GAAGA,IAAIY,GAAG,KAAKZ,EAAE6H,GAAG,CAAO,GAAN0yF,GAAGv6F,GAAMgC,GAAGF,GAAE,OAAO9B,EAAE8B,GAAEE,EAAqB,GAAG,KAAtBhC,EAAED,EAAE+6F,gBAAwB,IAAI/6F,EAAEA,EAAEg7F,cAAc/6F,GAAGY,EAAE,EAAEZ,GAAcgC,EAAE,IAAbwG,EAAE,GAAGqyF,GAAG76F,IAAUY,GAAGb,EAAEyI,GAAGxI,IAAIgC,EAAE,OAAOpB,EAC1e,SAASo6F,GAAGj7F,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE06F,cAAsC16F,EAAI,WAAFA,EAAa,WAAW,EAAE,SAASk7F,GAAGl7F,EAAEC,GAAG,OAAOD,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEm7F,GAAG,IAAIl7F,IAASi7F,GAAG,GAAGj7F,GAAGD,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEm7F,GAAG,KAAKl7F,IAASi7F,GAAG,EAAEj7F,GAAGD,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEm7F,GAAG,MAAMl7F,MAA4B,KAAjBD,EAAEm7F,GAAG,SAASl7F,MAAWD,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBC,EAAEk7F,GAAG,WAAWl7F,MAAWA,EAAE,WAAWA,EAAE,MAAM3D,MAAM0I,EAAE,IAAIhF,IAAK,SAASm7F,GAAGn7F,GAAG,OAAOA,GAAGA,EAAE,SAASo7F,GAAGp7F,GAAG,IAAI,IAAIC,EAAE,GAAGwI,EAAE,EAAE,GAAGA,EAAEA,IAAIxI,EAAE5F,KAAK2F,GAAG,OAAOC,EACrd,SAASo7F,GAAGr7F,EAAEC,EAAEwI,GAAGzI,EAAE06F,cAAcz6F,EAAE,IAAIY,EAAEZ,EAAE,EAAED,EAAE46F,gBAAgB/5F,EAAEb,EAAE66F,aAAah6F,GAAEb,EAAEA,EAAEs7F,YAAWr7F,EAAE,GAAG66F,GAAG76F,IAAQwI,EAAE,IAAIqyF,GAAGt2F,KAAK+2F,MAAM/2F,KAAK+2F,MAAiC,SAAYv7F,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAIw7F,GAAGx7F,GAAGy7F,GAAG,GAAG,GAAvED,GAAGh3F,KAAKyF,IAAIwxF,GAAGj3F,KAAKoG,IAAqD,IAAI8wF,GAAGztF,EAAE0tF,8BAA8BC,GAAG3tF,EAAEwqF,yBAAyBoD,IAAG,EAAG,SAASC,GAAG97F,EAAEC,EAAEwI,EAAE5H,GAAGg1F,IAAIF,KAAK,IAAI1zF,EAAE85F,GAAG37F,EAAEy1F,GAAGA,IAAG,EAAG,IAAIH,GAAGzzF,EAAEjC,EAAEC,EAAEwI,EAAE5H,GAAf,SAA2Bg1F,GAAGz1F,IAAI21F,MAAM,SAASlkE,GAAG7xB,EAAEC,EAAEwI,EAAE5H,GAAG+6F,GAAGF,GAAGK,GAAG31F,KAAK,KAAKpG,EAAEC,EAAEwI,EAAE5H,IACjb,SAASk7F,GAAG/7F,EAAEC,EAAEwI,EAAE5H,GAAU,IAAIoB,EAAX,GAAG45F,GAAU,IAAI55F,EAAE,KAAO,EAAFhC,KAAO,EAAEy3F,GAAG/8F,SAAS,EAAEm9F,GAAGtxF,QAAQxG,GAAGA,EAAE+6E,GAAG,KAAK/6E,EAAEC,EAAEwI,EAAE5H,GAAG62F,GAAGr9F,KAAK2F,OAAO,CAAC,IAAII,EAAEy4F,GAAG74F,EAAEC,EAAEwI,EAAE5H,GAAG,GAAG,OAAOT,EAAE6B,GAAGk2D,GAAGn4D,EAAEa,OAAO,CAAC,GAAGoB,EAAE,CAAC,IAAI,EAAE61F,GAAGtxF,QAAQxG,GAA+B,OAA3BA,EAAE+6E,GAAG36E,EAAEJ,EAAEC,EAAEwI,EAAE5H,QAAG62F,GAAGr9F,KAAK2F,GAAU,GAfhO,SAAYA,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,OAAOhC,GAAG,IAAK,UAAU,OAAOo8E,GAAGgc,GAAGhc,GAAGr8E,EAAEC,EAAEwI,EAAE5H,EAAEoB,IAAG,EAAG,IAAK,YAAY,OAAOq6E,GAAG+b,GAAG/b,GAAGt8E,EAAEC,EAAEwI,EAAE5H,EAAEoB,IAAG,EAAG,IAAK,YAAY,OAAO01F,GAAGU,GAAGV,GAAG33F,EAAEC,EAAEwI,EAAE5H,EAAEoB,IAAG,EAAG,IAAK,cAAc,IAAI7B,EAAE6B,EAAEm2F,UAAkD,OAAxCR,GAAGlxF,IAAItG,EAAEi4F,GAAGT,GAAG/xF,IAAIzF,IAAI,KAAKJ,EAAEC,EAAEwI,EAAE5H,EAAEoB,KAAU,EAAG,IAAK,oBAAoB,OAAO7B,EAAE6B,EAAEm2F,UAAUhc,GAAG11E,IAAItG,EAAEi4F,GAAGjc,GAAGv2E,IAAIzF,IAAI,KAAKJ,EAAEC,EAAEwI,EAAE5H,EAAEoB,KAAI,EAAG,OAAM,EAe9H+5F,CAAG57F,EAAEJ,EAAEC,EAAEwI,EAAE5H,GAAG,OAAOs3D,GAAGn4D,EAAEa,GAAGo7F,GAAGj8F,EAAEC,EAAEY,EAAE,KAAK4H,KAC9Q,SAASowF,GAAG74F,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEuxB,GAAG3yB,GAAW,GAAG,QAAXoB,EAAEs2F,GAAGt2F,IAAe,CAAC,IAAI7B,EAAEu2F,GAAG10F,GAAG,GAAG,OAAO7B,EAAE6B,EAAE,SAAS,CAAC,IAAI6F,EAAE1H,EAAEsuF,IAAI,GAAG,KAAK5mF,EAAE,CAAS,GAAG,QAAX7F,EAAE80F,GAAG32F,IAAe,OAAO6B,EAAEA,EAAE,UAAU,GAAG,IAAI6F,EAAE,CAAC,GAAG1H,EAAEi1F,UAAUqD,QAAQ,OAAO,IAAIt4F,EAAEsuF,IAAItuF,EAAEi1F,UAAUsD,cAAc,KAAK12F,EAAE,UAAU7B,IAAI6B,IAAIA,EAAE,OAAqB,OAAdg6F,GAAGj8F,EAAEC,EAAEY,EAAEoB,EAAEwG,GAAU,KAAK,IAAIyzF,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACzT,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIp8F,EAAkBa,EAAhBZ,EAAEk8F,GAAG1zF,EAAExI,EAAEtF,OAASsH,EAAE,UAAUi6F,GAAGA,GAAGr/F,MAAMq/F,GAAG7iF,YAAYjZ,EAAE6B,EAAEtH,OAAO,IAAIqF,EAAE,EAAEA,EAAEyI,GAAGxI,EAAED,KAAKiC,EAAEjC,GAAGA,KAAK,IAAI8H,EAAEW,EAAEzI,EAAE,IAAIa,EAAE,EAAEA,GAAGiH,GAAG7H,EAAEwI,EAAE5H,KAAKoB,EAAE7B,EAAES,GAAGA,KAAK,OAAOu7F,GAAGn6F,EAAET,MAAMxB,EAAE,EAAEa,EAAE,EAAEA,OAAE,GAAQ,SAASy7F,GAAGt8F,GAAG,IAAIC,EAAED,EAAEw9B,QAA+E,MAAvE,aAAax9B,EAAgB,KAAbA,EAAEA,EAAEu8F,WAAgB,KAAKt8F,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EAAE,SAASw8F,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EACjY,SAASC,GAAG18F,GAAG,SAASC,EAAEA,EAAEY,EAAEoB,EAAE7B,EAAE0H,GAA6G,IAAI,IAAIW,KAAlHpK,KAAKs+F,WAAW18F,EAAE5B,KAAKu+F,YAAY36F,EAAE5D,KAAKuV,KAAK/S,EAAExC,KAAK65F,YAAY93F,EAAE/B,KAAK7D,OAAOsN,EAAEzJ,KAAKwwB,cAAc,KAAkB7uB,EAAEA,EAAExB,eAAeiK,KAAKxI,EAAED,EAAEyI,GAAGpK,KAAKoK,GAAGxI,EAAEA,EAAEG,GAAGA,EAAEqI,IAAgI,OAA5HpK,KAAKw+F,oBAAoB,MAAMz8F,EAAE08F,iBAAiB18F,EAAE08F,kBAAiB,IAAK18F,EAAE28F,aAAaP,GAAGC,GAAGp+F,KAAK2+F,qBAAqBP,GAAUp+F,KAC1E,OAD+EmN,EAAEvL,EAAEnE,UAAU,CAACsjB,eAAe,WAAW/gB,KAAKy+F,kBAAiB,EAAG,IAAI98F,EAAE3B,KAAK65F,YAAYl4F,IAAIA,EAAEof,eAAepf,EAAEof,iBAAiB,mBAAmBpf,EAAE+8F,cAC7e/8F,EAAE+8F,aAAY,GAAI1+F,KAAKw+F,mBAAmBL,KAAKS,gBAAgB,WAAW,IAAIj9F,EAAE3B,KAAK65F,YAAYl4F,IAAIA,EAAEi9F,gBAAgBj9F,EAAEi9F,kBAAkB,mBAAmBj9F,EAAEk9F,eAAel9F,EAAEk9F,cAAa,GAAI7+F,KAAK2+F,qBAAqBR,KAAKW,QAAQ,aAAaC,aAAaZ,KAAYv8F,EAChR,IAAoLo9F,GAAGC,GAAGC,GAAtLrxF,GAAG,CAACsxF,WAAW,EAAE5hF,QAAQ,EAAEC,WAAW,EAAE4hF,UAAU,SAASz9F,GAAG,OAAOA,EAAEy9F,WAAW5vE,KAAKwC,OAAOysE,iBAAiB,EAAEY,UAAU,GAAGC,GAAGjB,GAAGxwF,IAAI0xF,GAAGpyF,EAAE,GAAGU,GAAG,CAACmT,KAAK,EAAEvD,OAAO,IAAI+hF,GAAGnB,GAAGkB,IAAaE,GAAGtyF,EAAE,GAAGoyF,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAE/uE,QAAQ,EAAEC,QAAQ,EAAES,MAAM,EAAEC,MAAM,EAAEuJ,QAAQ,EAAEqD,SAAS,EAAEV,OAAO,EAAED,QAAQ,EAAEoiE,iBAAiBC,GAAG9kE,OAAO,EAAE+kE,QAAQ,EAAEC,cAAc,SAASp+F,GAAG,YAAO,IAASA,EAAEo+F,cAAcp+F,EAAEq+F,cAAcr+F,EAAE+0F,WAAW/0F,EAAEs+F,UAAUt+F,EAAEq+F,YAAYr+F,EAAEo+F,eAAeG,UAAU,SAASv+F,GAAG,MAAG,cAC3eA,EAASA,EAAEu+F,WAAUv+F,IAAIu9F,KAAKA,IAAI,cAAcv9F,EAAE4T,MAAMypF,GAAGr9F,EAAE+9F,QAAQR,GAAGQ,QAAQT,GAAGt9F,EAAEg+F,QAAQT,GAAGS,SAASV,GAAGD,GAAG,EAAEE,GAAGv9F,GAAUq9F,KAAImB,UAAU,SAASx+F,GAAG,MAAM,cAAcA,EAAEA,EAAEw+F,UAAUlB,MAAMmB,GAAG/B,GAAGoB,IAAiCY,GAAGhC,GAA7BlxF,EAAE,GAAGsyF,GAAG,CAACa,aAAa,KAA4CC,GAAGlC,GAA9BlxF,EAAE,GAAGoyF,GAAG,CAACQ,cAAc,KAA0ES,GAAGnC,GAA5DlxF,EAAE,GAAGU,GAAG,CAAC4yF,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAGzzF,EAAE,GAAGU,GAAG,CAACgzF,cAAc,SAASl/F,GAAG,MAAM,kBAAkBA,EAAEA,EAAEk/F,cAAchuF,OAAOguF,iBAAiBC,GAAGzC,GAAGuC,IAAyBG,GAAG1C,GAArBlxF,EAAE,GAAGU,GAAG,CAAChB,KAAK,KAAcm0F,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGxgG,GAAG,IAAIC,EAAE5B,KAAK65F,YAAY,OAAOj4F,EAAEg+F,iBAAiBh+F,EAAEg+F,iBAAiBj+F,MAAIA,EAAEmgG,GAAGngG,OAAMC,EAAED,GAAM,SAASk+F,KAAK,OAAOsC,GAC9R,IAAIC,GAAGj1F,EAAE,GAAGoyF,GAAG,CAAC9iG,IAAI,SAASkF,GAAG,GAAGA,EAAElF,IAAI,CAAC,IAAImF,EAAEo/F,GAAGr/F,EAAElF,MAAMkF,EAAElF,IAAI,GAAG,iBAAiBmF,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAE4T,KAAc,MAAR5T,EAAEs8F,GAAGt8F,IAAU,QAAQhB,OAAOG,aAAaa,GAAI,YAAYA,EAAE4T,MAAM,UAAU5T,EAAE4T,KAAKssF,GAAGlgG,EAAEw9B,UAAU,eAAe,IAAIuxB,KAAK,EAAEu1B,SAAS,EAAEnrD,QAAQ,EAAEqD,SAAS,EAAEV,OAAO,EAAED,QAAQ,EAAE6kE,OAAO,EAAE9+C,OAAO,EAAEq8C,iBAAiBC,GAAG3B,SAAS,SAASv8F,GAAG,MAAM,aAAaA,EAAE4T,KAAK0oF,GAAGt8F,GAAG,GAAGw9B,QAAQ,SAASx9B,GAAG,MAAM,YAAYA,EAAE4T,MAAM,UAAU5T,EAAE4T,KAAK5T,EAAEw9B,QAAQ,GAAGmjE,MAAM,SAAS3gG,GAAG,MAAM,aAC7eA,EAAE4T,KAAK0oF,GAAGt8F,GAAG,YAAYA,EAAE4T,MAAM,UAAU5T,EAAE4T,KAAK5T,EAAEw9B,QAAQ,KAAKojE,GAAGlE,GAAG+D,IAAiII,GAAGnE,GAA7HlxF,EAAE,GAAGsyF,GAAG,CAAC1F,UAAU,EAAE5+D,MAAM,EAAEC,OAAO,EAAEqnE,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAG3E,GAArHlxF,EAAE,GAAGoyF,GAAG,CAAC3iE,QAAQ,EAAEqmE,cAAc,EAAEjkE,eAAe,EAAEvB,OAAO,EAAED,QAAQ,EAAE1C,QAAQ,EAAEqD,SAAS,EAAEyhE,iBAAiBC,MAA0EqD,GAAG7E,GAA3DlxF,EAAE,GAAGU,GAAG,CAACwgF,aAAa,EAAEqS,YAAY,EAAEC,cAAc,KAAcwC,GAAGh2F,EAAE,GAAGsyF,GAAG,CAAC2D,OAAO,SAASzhG,GAAG,MAAM,WAAWA,EAAEA,EAAEyhG,OAAO,gBAAgBzhG,GAAGA,EAAE0hG,YAAY,GAClfzc,OAAO,SAASjlF,GAAG,MAAM,WAAWA,EAAEA,EAAEilF,OAAO,gBAAgBjlF,GAAGA,EAAE2hG,YAAY,eAAe3hG,GAAGA,EAAEwlF,WAAW,GAAGoc,OAAO,EAAE1c,UAAU,IAAI2c,GAAGnF,GAAG8E,IAAIM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG9V,GAAI,qBAAqB/6E,OAAO8wF,GAAG,KAAK/V,GAAI,iBAAiB10E,WAAWyqF,GAAGzqF,SAAS0qF,cAAc,IAAIC,GAAGjW,GAAI,cAAc/6E,SAAS8wF,GAAGG,GAAGlW,KAAM8V,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGpjG,OAAOG,aAAa,IAAIkjG,IAAG,EAC1W,SAASC,GAAGtiG,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI8hG,GAAGt7F,QAAQvG,EAAEu9B,SAAS,IAAK,UAAU,OAAO,MAAMv9B,EAAEu9B,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,GAAI,SAAS+kE,GAAGviG,GAAc,MAAM,kBAAjBA,EAAEA,EAAE8b,SAAkC,SAAS9b,EAAEA,EAAEkL,KAAK,KAAK,IAAIs3F,IAAG,EAE9Q,IAAIC,GAAG,CAACn4E,OAAM,EAAGqE,MAAK,EAAG+zE,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGt1B,OAAM,EAAG5qE,QAAO,EAAGmgG,UAAS,EAAG/0F,OAAM,EAAGg1F,QAAO,EAAGC,KAAI,EAAGrwF,MAAK,EAAGqe,MAAK,EAAGiyE,KAAI,EAAGlzB,MAAK,GAAI,SAASmzB,GAAGhjG,GAAG,IAAIC,EAAED,GAAGA,EAAE+uF,UAAU/uF,EAAE+uF,SAASvkE,cAAc,MAAM,UAAUvqB,IAAIwiG,GAAGziG,EAAE4T,MAAM,aAAa3T,EAAQ,SAAS04B,GAAG34B,EAAEC,EAAEwI,EAAE5H,GAAG00F,GAAG10F,GAAsB,GAAnBZ,EAAEgjG,GAAGhjG,EAAE,aAAgBtF,SAAS8N,EAAE,IAAIk1F,GAAG,WAAW,SAAS,KAAKl1F,EAAE5H,GAAGb,EAAE3F,KAAK,CAAC+gB,MAAM3S,EAAE4xB,UAAUp6B,KAAK,IAAIijG,GAAG,KAAKC,GAAG,KAAK,SAAShiD,GAAGnhD,GAAG44B,GAAG54B,EAAE,GAAG,SAASojG,GAAGpjG,GAAe,GAAGsvF,EAAT+T,GAAGrjG,IAAY,OAAOA,EACne,SAASsjG,GAAGtjG,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAIsjG,IAAG,EAAG,GAAGtX,EAAG,CAAC,IAAIuX,GAAG,GAAGvX,EAAG,CAAC,IAAIwX,GAAG,YAAYlsF,SAAS,IAAIksF,GAAG,CAAC,IAAIC,GAAGnsF,SAAS6C,cAAc,OAAOspF,GAAGzsF,aAAa,UAAU,WAAWwsF,GAAG,oBAAoBC,GAAGC,QAAQH,GAAGC,QAAQD,IAAG,EAAGD,GAAGC,MAAMjsF,SAAS0qF,cAAc,EAAE1qF,SAAS0qF,cAAc,SAAS2B,KAAKV,KAAKA,GAAGW,YAAY,mBAAmBC,IAAIX,GAAGD,GAAG,MAAM,SAASY,GAAG9jG,GAAG,GAAG,UAAUA,EAAE0sF,cAAc0W,GAAGD,IAAI,CAAC,IAAIljG,EAAE,GAAyB,GAAtB04B,GAAG14B,EAAEkjG,GAAGnjG,EAAEwzB,GAAGxzB,IAAIA,EAAEmhD,GAAM00C,GAAG71F,EAAEC,OAAO,CAAC41F,IAAG,EAAG,IAAIJ,GAAGz1F,EAAEC,GAAT,QAAoB41F,IAAG,EAAGE,QAC3e,SAASgO,GAAG/jG,EAAEC,EAAEwI,GAAG,YAAYzI,GAAG4jG,KAAUT,GAAG16F,GAARy6F,GAAGjjG,GAAU+jG,YAAY,mBAAmBF,KAAK,aAAa9jG,GAAG4jG,KAAK,SAASK,GAAGjkG,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOojG,GAAGD,IAAI,SAASe,GAAGlkG,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOojG,GAAGnjG,GAAG,SAASkkG,GAAGnkG,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOojG,GAAGnjG,GAAmE,IAAImkG,GAAG,oBAAoBtqG,OAAO2V,GAAG3V,OAAO2V,GAA5G,SAAYzP,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,GAAoDokG,GAAGvqG,OAAOgC,UAAU0C,eAC7a,SAAS8lG,GAAGtkG,EAAEC,GAAG,GAAGmkG,GAAGpkG,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIwI,EAAE3O,OAAOD,KAAKmG,GAAGa,EAAE/G,OAAOD,KAAKoG,GAAG,GAAGwI,EAAE9N,SAASkG,EAAElG,OAAO,OAAM,EAAG,IAAIkG,EAAE,EAAEA,EAAE4H,EAAE9N,OAAOkG,IAAI,IAAIwjG,GAAGzmG,KAAKqC,EAAEwI,EAAE5H,MAAMujG,GAAGpkG,EAAEyI,EAAE5H,IAAIZ,EAAEwI,EAAE5H,KAAK,OAAM,EAAG,OAAM,EAAG,SAAS0jG,GAAGvkG,GAAG,KAAKA,GAAGA,EAAEga,YAAYha,EAAEA,EAAEga,WAAW,OAAOha,EAClU,SAASwkG,GAAGxkG,EAAEC,GAAG,IAAwBY,EAApB4H,EAAE87F,GAAGvkG,GAAO,IAAJA,EAAE,EAAYyI,GAAG,CAAC,GAAG,IAAIA,EAAE+oF,SAAS,CAA0B,GAAzB3wF,EAAEb,EAAEyI,EAAE4Q,YAAY1e,OAAUqF,GAAGC,GAAGY,GAAGZ,EAAE,MAAM,CAACwU,KAAKhM,EAAE6H,OAAOrQ,EAAED,GAAGA,EAAEa,EAAEb,EAAE,CAAC,KAAKyI,GAAG,CAAC,GAAGA,EAAEoR,YAAY,CAACpR,EAAEA,EAAEoR,YAAY,MAAM7Z,EAAEyI,EAAEA,EAAEoK,WAAWpK,OAAE,EAAOA,EAAE87F,GAAG97F,IAAI,SAASg8F,GAAGzkG,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAEwxF,YAAYvxF,GAAG,IAAIA,EAAEuxF,SAASiT,GAAGzkG,EAAEC,EAAE4S,YAAY,aAAa7S,EAAEA,EAAEmZ,SAASlZ,KAAGD,EAAEie,4BAAwD,GAA7Bje,EAAEie,wBAAwBhe,MAClZ,SAASykG,KAAK,IAAI,IAAI1kG,EAAEkR,OAAOjR,EAAEuvF,IAAKvvF,aAAaD,EAAE2kG,mBAAmB,CAAC,IAAI,IAAIl8F,EAAE,kBAAkBxI,EAAE2kG,cAActgB,SAASugB,KAAK,MAAMhkG,GAAG4H,GAAE,EAAG,IAAGA,EAAyB,MAAMxI,EAAEuvF,GAA/BxvF,EAAEC,EAAE2kG,eAAgCrtF,UAAU,OAAOtX,EAAE,SAAS6kG,GAAG9kG,GAAG,IAAIC,EAAED,GAAGA,EAAE+uF,UAAU/uF,EAAE+uF,SAASvkE,cAAc,OAAOvqB,IAAI,UAAUA,IAAI,SAASD,EAAE4T,MAAM,WAAW5T,EAAE4T,MAAM,QAAQ5T,EAAE4T,MAAM,QAAQ5T,EAAE4T,MAAM,aAAa5T,EAAE4T,OAAO,aAAa3T,GAAG,SAASD,EAAE+kG,iBACxZ,IAAIC,GAAG/Y,GAAI,iBAAiB10E,UAAU,IAAIA,SAAS0qF,aAAagD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGrlG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAE4H,EAAEyI,SAASzI,EAAEA,EAAE8O,SAAS,IAAI9O,EAAE+oF,SAAS/oF,EAAEA,EAAEyM,cAAckwF,IAAI,MAAMH,IAAIA,KAAKzV,EAAG3uF,KAAU,mBAALA,EAAEokG,KAAyBH,GAAGjkG,GAAGA,EAAE,CAAC0I,MAAM1I,EAAEykG,eAAez4E,IAAIhsB,EAAE0kG,cAAuF1kG,EAAE,CAAC2kG,YAA3E3kG,GAAGA,EAAEqU,eAAerU,EAAEqU,cAAcoC,aAAapG,QAAQu0F,gBAA+BD,WAAWE,aAAa7kG,EAAE6kG,aAAaC,UAAU9kG,EAAE8kG,UAAUC,YAAY/kG,EAAE+kG,aAAcT,IAAIb,GAAGa,GAAGtkG,KAAKskG,GAAGtkG,EAAsB,GAApBA,EAAEoiG,GAAGiC,GAAG,aAAgBvqG,SAASsF,EAAE,IAAI09F,GAAG,WAAW,SAAS,KAAK19F,EAAEwI,GAAGzI,EAAE3F,KAAK,CAAC+gB,MAAMnb,EAAEo6B,UAAUx5B,IAAIZ,EAAEzF,OAAOyqG,MACjf5K,GAAG,mjBAAmjB76F,MAAM,KAC5jB,GAAG66F,GAAG,oRAAoR76F,MAAM,KAAK,GAAG66F,GAAGD,GAAG,GAAG,IAAI,IAAIyL,GAAG,qFAAqFrmG,MAAM,KAAKsmG,GAAG,EAAEA,GAAGD,GAAGlrG,OAAOmrG,KAAK3L,GAAGzzF,IAAIm/F,GAAGC,IAAI,GAAG9Z,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgB3qD,EAAG,WAAW,oEAAoE7hC,MAAM,MAAM6hC,EAAG,WAAW,uFAAuF7hC,MAAM,MAAM6hC,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2D7hC,MAAM,MAC5f6hC,EAAG,qBAAqB,6DAA6D7hC,MAAM,MAAM6hC,EAAG,sBAAsB,8DAA8D7hC,MAAM,MAAM,IAAIumG,GAAG,sNAAsNvmG,MAAM,KAAKwmG,GAAG,IAAI3+F,IAAI,0CAA0C7H,MAAM,KAAKsU,OAAOiyF,KACnf,SAASE,GAAGjmG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAE4T,MAAM,gBAAgB5T,EAAE6uB,cAAcpmB,EA/CjE,SAAYzI,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,EAAE0H,EAAEujB,EAAEtf,GAA4B,GAAzB2qF,GAAGp8F,MAAM+D,KAAK3D,WAAc27F,GAAG,CAAC,IAAGA,GAAgC,MAAM/5F,MAAM0I,EAAE,MAA1C,IAAIulB,EAAE+rE,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGjsE,IA+CjE27E,CAAGrlG,EAAEZ,OAAE,EAAOD,GAAGA,EAAE6uB,cAAc,KACpG,SAAS+J,GAAG54B,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIwI,EAAE,EAAEA,EAAEzI,EAAErF,OAAO8N,IAAI,CAAC,IAAI5H,EAAEb,EAAEyI,GAAGxG,EAAEpB,EAAEua,MAAMva,EAAEA,EAAEw5B,UAAUr6B,EAAE,CAAC,IAAII,OAAE,EAAO,GAAGH,EAAE,IAAI,IAAI6H,EAAEjH,EAAElG,OAAO,EAAE,GAAGmN,EAAEA,IAAI,CAAC,IAAIujB,EAAExqB,EAAEiH,GAAGiE,EAAEsf,EAAElwB,SAASovB,EAAEc,EAAEwD,cAA2B,GAAbxD,EAAEA,EAAEpQ,SAAYlP,IAAI3L,GAAG6B,EAAE+6F,uBAAuB,MAAMh9F,EAAEimG,GAAGhkG,EAAEopB,EAAEd,GAAGnqB,EAAE2L,OAAO,IAAIjE,EAAE,EAAEA,EAAEjH,EAAElG,OAAOmN,IAAI,CAAoD,GAA5CiE,GAAPsf,EAAExqB,EAAEiH,IAAO3M,SAASovB,EAAEc,EAAEwD,cAAcxD,EAAEA,EAAEpQ,SAAYlP,IAAI3L,GAAG6B,EAAE+6F,uBAAuB,MAAMh9F,EAAEimG,GAAGhkG,EAAEopB,EAAEd,GAAGnqB,EAAE2L,IAAI,GAAGwqF,GAAG,MAAMv2F,EAAEw2F,GAAGD,IAAG,EAAGC,GAAG,KAAKx2F,EAC1a,SAASgmE,GAAEhmE,EAAEC,GAAG,IAAIwI,EAAE09F,GAAGlmG,GAAGY,EAAEb,EAAE,WAAWyI,EAAEhC,IAAI5F,KAAKulG,GAAGnmG,EAAED,EAAE,GAAE,GAAIyI,EAAErD,IAAIvE,IAAI,IAAIwlG,GAAG,kBAAkB7hG,KAAKqK,SAAStN,SAAS,IAAIC,MAAM,GAAG,SAAS8kG,GAAGtmG,GAAGA,EAAEqmG,MAAMrmG,EAAEqmG,KAAI,EAAGta,EAAGlxF,SAAQ,SAASoF,GAAG+lG,GAAGv/F,IAAIxG,IAAIsmG,GAAGtmG,GAAE,EAAGD,EAAE,MAAMumG,GAAGtmG,GAAE,EAAGD,EAAE,UACtO,SAASumG,GAAGvmG,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAE,EAAEvH,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,EAAE0F,EAAEqI,EAA6D,GAA3D,oBAAoBzI,GAAG,IAAIyI,EAAE+oF,WAAWpxF,EAAEqI,EAAEyM,eAAkB,OAAOrU,IAAIZ,GAAG+lG,GAAGv/F,IAAIzG,GAAG,CAAC,GAAG,WAAWA,EAAE,OAAOiC,GAAG,EAAE7B,EAAES,EAAE,IAAIiH,EAAEq+F,GAAG/lG,GAAGirB,EAAErrB,EAAE,MAAMC,EAAE,UAAU,UAAU6H,EAAErB,IAAI4kB,KAAKprB,IAAIgC,GAAG,GAAGmkG,GAAGhmG,EAAEJ,EAAEiC,EAAEhC,GAAG6H,EAAE1C,IAAIimB,IAClS,SAAS+6E,GAAGpmG,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEk4F,GAAGt0F,IAAI5F,GAAG,YAAO,IAASgC,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAE65F,GAAG,MAAM,KAAK,EAAE75F,EAAE4vB,GAAG,MAAM,QAAQ5vB,EAAE85F,GAAGtzF,EAAExG,EAAEmE,KAAK,KAAKnG,EAAEwI,EAAEzI,GAAGiC,OAAE,GAAQg0F,IAAI,eAAeh2F,GAAG,cAAcA,GAAG,UAAUA,IAAIgC,GAAE,GAAIpB,OAAE,IAASoB,EAAEjC,EAAEsb,iBAAiBrb,EAAEwI,EAAE,CAACwW,SAAQ,EAAGF,QAAQ9c,IAAIjC,EAAEsb,iBAAiBrb,EAAEwI,GAAE,QAAI,IAASxG,EAAEjC,EAAEsb,iBAAiBrb,EAAEwI,EAAE,CAACsW,QAAQ9c,IAAIjC,EAAEsb,iBAAiBrb,EAAEwI,GAAE,GACpW,SAASwzF,GAAGj8F,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI7B,EAAES,EAAE,GAAG,KAAO,EAAFZ,IAAM,KAAO,EAAFA,IAAM,OAAOY,EAAEb,EAAE,OAAO,CAAC,GAAG,OAAOa,EAAE,OAAO,IAAIiH,EAAEjH,EAAE6tF,IAAI,GAAG,IAAI5mF,GAAG,IAAIA,EAAE,CAAC,IAAIujB,EAAExqB,EAAEw0F,UAAUsD,cAAc,GAAGttE,IAAIppB,GAAG,IAAIopB,EAAEmmE,UAAUnmE,EAAExY,aAAa5Q,EAAE,MAAM,GAAG,IAAI6F,EAAE,IAAIA,EAAEjH,EAAEg2F,OAAO,OAAO/uF,GAAG,CAAC,IAAIiE,EAAEjE,EAAE4mF,IAAI,IAAG,IAAI3iF,GAAG,IAAIA,MAAKA,EAAEjE,EAAEutF,UAAUsD,iBAAkB12F,GAAG,IAAI8J,EAAEylF,UAAUzlF,EAAE8G,aAAa5Q,GAAE,OAAO6F,EAAEA,EAAE+uF,OAAO,KAAK,OAAOxrE,GAAG,CAAS,GAAG,QAAXvjB,EAAEywF,GAAGltE,IAAe,OAAe,GAAG,KAAXtf,EAAEjE,EAAE4mF,MAAc,IAAI3iF,EAAE,CAAClL,EAAET,EAAE0H,EAAE,SAAS9H,EAAEqrB,EAAEA,EAAExY,YAAYhS,EAAEA,EAAEg2F,QAvD7c,SAAY72F,EAAEC,EAAEwI,GAAG,GAAGqtF,GAAG,OAAO91F,EAAEC,EAAEwI,GAAGqtF,IAAG,EAAG,IAAWF,GAAG51F,EAAEC,EAAEwI,GAAlB,QAA6BqtF,IAAG,EAAGC,MAuDoYyQ,EAAG,WAAW,IAAI3lG,EAAET,EAAE6B,EAAEuxB,GAAG/qB,GAAGX,EAAE,GACpf9H,EAAE,CAAC,IAAIqrB,EAAE6uE,GAAGr0F,IAAI7F,GAAG,QAAG,IAASqrB,EAAE,CAAC,IAAItf,EAAE4xF,GAAGl9F,EAAET,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIs8F,GAAG7zF,GAAG,MAAMzI,EAAE,IAAK,UAAU,IAAK,QAAQ+L,EAAE60F,GAAG,MAAM,IAAK,UAAUngG,EAAE,QAAQsL,EAAE6yF,GAAG,MAAM,IAAK,WAAWn+F,EAAE,OAAOsL,EAAE6yF,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY7yF,EAAE6yF,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIn2F,EAAE2wB,OAAO,MAAMp5B,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc+L,EAAE0yF,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO1yF,EAC1iB2yF,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa3yF,EAAEs1F,GAAG,MAAM,KAAKvH,GAAG,KAAKC,GAAG,KAAKC,GAAGjuF,EAAE8yF,GAAG,MAAM,KAAK5E,GAAGluF,EAAEw1F,GAAG,MAAM,IAAK,SAASx1F,EAAE8xF,GAAG,MAAM,IAAK,QAAQ9xF,EAAE81F,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ91F,EAAEozF,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYpzF,EAAE80F,GAAG,IAAIpoE,EAAE,KAAO,EAAFx4B,GAAK+L,GAAGysB,GAAG,WAAWz4B,EAAE8oC,EAAErQ,EAAE,OAAOpN,EAAEA,EAAE,UAAU,KAAKA,EAAEoN,EAAE,GAAG,IAAI,IAAQjK,EAAJniB,EAAExL,EAAI,OAC/ewL,GAAG,CAAK,IAAIlI,GAARqqB,EAAEniB,GAAUgpF,UAAsF,GAA5E,IAAI7mE,EAAEkgE,KAAK,OAAOvqF,IAAIqqB,EAAErqB,EAAE,OAAO2kC,IAAc,OAAV3kC,EAAE6xF,GAAG3pF,EAAEy8B,KAAYrQ,EAAEp+B,KAAKosG,GAAGp6F,EAAElI,EAAEqqB,MAASxiB,EAAE,MAAMK,EAAEA,EAAEwqF,OAAO,EAAEp+D,EAAE99B,SAAS0wB,EAAE,IAAItf,EAAEsf,EAAE5qB,EAAE,KAAKgI,EAAExG,GAAG6F,EAAEzN,KAAK,CAAC+gB,MAAMiQ,EAAEgP,UAAU5B,MAAM,GAAG,KAAO,EAAFx4B,GAAK,CAA4E,GAAnC8L,EAAE,aAAa/L,GAAG,eAAeA,KAAtEqrB,EAAE,cAAcrrB,GAAG,gBAAgBA,IAA2C,KAAO,GAAFC,MAAQQ,EAAEgI,EAAE21F,eAAe31F,EAAE41F,eAAe9F,GAAG93F,KAAIA,EAAEimG,OAAgB36F,GAAGsf,KAAGA,EAAEppB,EAAEiP,SAASjP,EAAEA,GAAGopB,EAAEppB,EAAEiT,eAAemW,EAAE/T,aAAa+T,EAAEs7E,aAAaz1F,OAAUnF,GAAqCA,EAAElL,EAAiB,QAAfJ,GAAnCA,EAAEgI,EAAE21F,eAAe31F,EAAE61F,WAAkB/F,GAAG93F,GAAG,QACleA,KAARuL,EAAE2qF,GAAGl2F,KAAU,IAAIA,EAAEiuF,KAAK,IAAIjuF,EAAEiuF,OAAKjuF,EAAE,QAAUsL,EAAE,KAAKtL,EAAEI,GAAKkL,IAAItL,GAAE,CAAgU,GAA/Tg4B,EAAEgmE,GAAGt6F,EAAE,eAAe2kC,EAAE,eAAez8B,EAAE,QAAW,eAAerM,GAAG,gBAAgBA,IAAEy4B,EAAEooE,GAAG18F,EAAE,iBAAiB2kC,EAAE,iBAAiBz8B,EAAE,WAAUL,EAAE,MAAMD,EAAEsf,EAAEg4E,GAAGt3F,GAAGyiB,EAAE,MAAM/tB,EAAE4qB,EAAEg4E,GAAG5iG,IAAG4qB,EAAE,IAAIoN,EAAEt0B,EAAEkI,EAAE,QAAQN,EAAEtD,EAAExG,IAAKzH,OAAOwR,EAAEqf,EAAE+yE,cAAc5vE,EAAErqB,EAAE,KAAKo0F,GAAGt2F,KAAKpB,KAAI43B,EAAE,IAAIA,EAAEqQ,EAAEz8B,EAAE,QAAQ5L,EAAEgI,EAAExG,IAAKzH,OAAOg0B,EAAEiK,EAAE2lE,cAAcpyF,EAAE7H,EAAEs0B,GAAGzsB,EAAE7H,EAAK4H,GAAGtL,EAAER,EAAE,CAAa,IAAR6oC,EAAEroC,EAAE4L,EAAE,EAAMmiB,EAAhBiK,EAAE1sB,EAAkByiB,EAAEA,EAAEo4E,GAAGp4E,GAAGniB,IAAQ,IAAJmiB,EAAE,EAAMrqB,EAAE2kC,EAAE3kC,EAAEA,EAAEyiG,GAAGziG,GAAGqqB,IAAI,KAAK,EAAEniB,EAAEmiB,GAAGiK,EAAEmuE,GAAGnuE,GAAGpsB,IAAI,KAAK,EAAEmiB,EAAEniB,GAAGy8B,EACpf89D,GAAG99D,GAAGta,IAAI,KAAKniB,KAAK,CAAC,GAAGosB,IAAIqQ,GAAG,OAAOA,GAAGrQ,IAAIqQ,EAAE8tD,UAAU,MAAM32F,EAAEw4B,EAAEmuE,GAAGnuE,GAAGqQ,EAAE89D,GAAG99D,GAAGrQ,EAAE,UAAUA,EAAE,KAAK,OAAO1sB,GAAG86F,GAAG/+F,EAAEujB,EAAEtf,EAAE0sB,GAAE,GAAI,OAAOh4B,GAAG,OAAOuL,GAAG66F,GAAG/+F,EAAEkE,EAAEvL,EAAEg4B,GAAE,GAAiE,GAAG,YAA1C1sB,GAAjBsf,EAAExqB,EAAEwiG,GAAGxiG,GAAGqQ,QAAW69E,UAAU1jE,EAAE0jE,SAASvkE,gBAA+B,UAAUze,GAAG,SAASsf,EAAEzX,KAAK,IAAIs1E,EAAEoa,QAAQ,GAAGN,GAAG33E,GAAG,GAAGk4E,GAAGra,EAAEib,OAAO,CAACjb,EAAE+a,GAAG,IAAIza,EAAEua,QAAQh4F,EAAEsf,EAAE0jE,WAAW,UAAUhjF,EAAEye,gBAAgB,aAAaa,EAAEzX,MAAM,UAAUyX,EAAEzX,QAAQs1E,EAAEgb,IAClV,OADyVhb,IAAIA,EAAEA,EAAElpF,EAAEa,IAAK83B,GAAG7wB,EAAEohF,EAAEzgF,EAAExG,IAAWunF,GAAGA,EAAExpF,EAAEqrB,EAAExqB,GAAG,aAAab,IAAIwpF,EAAEn+D,EAAEykE,gBACtetG,EAAE0G,YAAY,WAAW7kE,EAAEzX,MAAMw8E,GAAG/kE,EAAE,SAASA,EAAExuB,QAAO2sF,EAAE3oF,EAAEwiG,GAAGxiG,GAAGqQ,OAAclR,GAAG,IAAK,WAAagjG,GAAGxZ,IAAI,SAASA,EAAEub,mBAAgBE,GAAGzb,EAAE0b,GAAGrkG,EAAEskG,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGv9F,EAAEW,EAAExG,GAAG,MAAM,IAAK,kBAAkB,GAAG+iG,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGv9F,EAAEW,EAAExG,GAAG,IAAIgmC,EAAE,GAAG85D,GAAG9hG,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIuwE,EAAE,qBAAqB,MAAMtwE,EAAE,IAAK,iBAAiBswE,EAAE,mBAAmB,MAAMtwE,EACrf,IAAK,oBAAoBswE,EAAE,sBAAsB,MAAMtwE,EAAEswE,OAAE,OAAYiyB,GAAGF,GAAGtiG,EAAEyI,KAAK8nE,EAAE,oBAAoB,YAAYvwE,GAAG,MAAMyI,EAAE+0B,UAAU+yC,EAAE,sBAAsBA,IAAI4xB,IAAI,OAAO15F,EAAEm5C,SAAS4gD,IAAI,uBAAuBjyB,EAAE,qBAAqBA,GAAGiyB,KAAKv6D,EAAEo0D,OAAYF,GAAG,UAARD,GAAGj6F,GAAkBi6F,GAAGr/F,MAAMq/F,GAAG7iF,YAAYmpF,IAAG,IAAe,GAAVhZ,EAAEyZ,GAAGpiG,EAAE0vE,IAAO51E,SAAS41E,EAAE,IAAI6uB,GAAG7uB,EAAEvwE,EAAE,KAAKyI,EAAExG,GAAG6F,EAAEzN,KAAK,CAAC+gB,MAAMm1D,EAAEl2C,UAAUmvD,IAAIvhD,EAAEsoC,EAAErlE,KAAK+8B,EAAW,QAARA,EAAEs6D,GAAG95F,MAAc8nE,EAAErlE,KAAK+8B,MAASA,EAAEi6D,GA1BjK,SAAYliG,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAOuiG,GAAGtiG,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE0gG,MAAa,MAAK0B,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOpiG,EAAEC,EAAEiL,QAASk3F,IAAIC,GAAG,KAAKriG,EAAE,QAAQ,OAAO,MA0BxB8mG,CAAG9mG,EAAEyI,GAzB1b,SAAYzI,EAAEC,GAAG,GAAGuiG,GAAG,MAAM,mBAAmBxiG,IAAI+hG,IAAIO,GAAGtiG,EAAEC,IAAID,EAAEq8F,KAAKD,GAAGD,GAAGD,GAAG,KAAKsG,IAAG,EAAGxiG,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEk5B,SAASl5B,EAAE67B,QAAQ77B,EAAE47B,UAAU57B,EAAEk5B,SAASl5B,EAAE67B,OAAO,CAAC,GAAG77B,EAAE8mG,MAAM,EAAE9mG,EAAE8mG,KAAKpsG,OAAO,OAAOsF,EAAE8mG,KAAK,GAAG9mG,EAAE0gG,MAAM,OAAO3hG,OAAOG,aAAac,EAAE0gG,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAOwB,IAAI,OAAOliG,EAAE2hD,OAAO,KAAK3hD,EAAEiL,MAyB+E87F,CAAGhnG,EAAEyI,MAA2B,GAAxB5H,EAAEoiG,GAAGpiG,EAAE,kBAAqBlG,SAASsH,EAAE,IAAIm9F,GAAG,gBACnf,cAAc,KAAK32F,EAAExG,GAAG6F,EAAEzN,KAAK,CAAC+gB,MAAMnZ,EAAEo4B,UAAUx5B,IAAIoB,EAAEiJ,KAAK+8B,IAAGrP,GAAG9wB,EAAE7H,MAAK,SAASwmG,GAAGzmG,EAAEC,EAAEwI,GAAG,MAAM,CAACtN,SAAS6E,EAAEib,SAAShb,EAAE4uB,cAAcpmB,GAAG,SAASw6F,GAAGjjG,EAAEC,GAAG,IAAI,IAAIwI,EAAExI,EAAE,UAAUY,EAAE,GAAG,OAAOb,GAAG,CAAC,IAAIiC,EAAEjC,EAAEI,EAAE6B,EAAEozF,UAAU,IAAIpzF,EAAEysF,KAAK,OAAOtuF,IAAI6B,EAAE7B,EAAY,OAAVA,EAAE41F,GAAGh2F,EAAEyI,KAAY5H,EAAEqlC,QAAQugE,GAAGzmG,EAAEI,EAAE6B,IAAc,OAAV7B,EAAE41F,GAAGh2F,EAAEC,KAAYY,EAAExG,KAAKosG,GAAGzmG,EAAEI,EAAE6B,KAAKjC,EAAEA,EAAE62F,OAAO,OAAOh2F,EAAE,SAAS+lG,GAAG5mG,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE62F,aAAa72F,GAAG,IAAIA,EAAE0uF,KAAK,OAAO1uF,GAAI,KACxa,SAAS6mG,GAAG7mG,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI,IAAI7B,EAAEH,EAAE08F,WAAW70F,EAAE,GAAG,OAAOW,GAAGA,IAAI5H,GAAG,CAAC,IAAIwqB,EAAE5iB,EAAEsD,EAAEsf,EAAEurE,UAAUrsE,EAAEc,EAAEgqE,UAAU,GAAG,OAAOtpF,GAAGA,IAAIlL,EAAE,MAAM,IAAIwqB,EAAEqjE,KAAK,OAAOnkE,IAAIc,EAAEd,EAAEtoB,EAAa,OAAV8J,EAAEiqF,GAAGvtF,EAAErI,KAAY0H,EAAEo+B,QAAQugE,GAAGh+F,EAAEsD,EAAEsf,IAAKppB,GAAc,OAAV8J,EAAEiqF,GAAGvtF,EAAErI,KAAY0H,EAAEzN,KAAKosG,GAAGh+F,EAAEsD,EAAEsf,KAAM5iB,EAAEA,EAAEouF,OAAO,IAAI/uF,EAAEnN,QAAQqF,EAAE3F,KAAK,CAAC+gB,MAAMnb,EAAEo6B,UAAUvyB,IAAI,SAASm/F,MAAM,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGpnG,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEonG,UAAU,OAAM,EAC3b,SAASC,GAAGtnG,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkBC,EAAE4U,UAAU,kBAAkB5U,EAAE4U,UAAU,kBAAkB5U,EAAE2wF,yBAAyB,OAAO3wF,EAAE2wF,yBAAyB,MAAM3wF,EAAE2wF,wBAAwB2W,OAAO,IAAIC,GAAG,oBAAoB7nF,WAAWA,gBAAW,EAAO8nF,GAAG,oBAAoBl2E,aAAaA,kBAAa,EAAO,SAASm2E,GAAG1nG,GAAG,IAAIA,EAAEwxF,SAASxxF,EAAEqZ,YAAY,GAAG,IAAIrZ,EAAEwxF,WAAoB,OAATxxF,EAAEA,EAAE0vF,QAAe1vF,EAAEqZ,YAAY,KACxc,SAASsuF,GAAG3nG,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE6Z,YAAY,CAAC,IAAI5Z,EAAED,EAAEwxF,SAAS,GAAG,IAAIvxF,GAAG,IAAIA,EAAE,MAAM,OAAOD,EAAE,SAAS4nG,GAAG5nG,GAAGA,EAAEA,EAAE+Z,gBAAgB,IAAI,IAAI9Z,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEwxF,SAAS,CAAC,IAAI/oF,EAAEzI,EAAEkL,KAAK,GAAG,MAAMzC,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIxI,EAAE,OAAOD,EAAEC,QAAQ,OAAOwI,GAAGxI,IAAID,EAAEA,EAAE+Z,gBAAgB,OAAO,KAAK,IAAI8tF,GAAG,EAA0D,IAAIC,GAAGtjG,KAAKqK,SAAStN,SAAS,IAAIC,MAAM,GAAGumG,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGpB,GAAG,oBAAoBoB,GAAGG,GAAG,iBAAiBH,GAC9d,SAASvP,GAAGv4F,GAAG,IAAIC,EAAED,EAAE+nG,IAAI,GAAG9nG,EAAE,OAAOA,EAAE,IAAI,IAAIwI,EAAEzI,EAAE6S,WAAWpK,GAAG,CAAC,GAAGxI,EAAEwI,EAAEi+F,KAAKj+F,EAAEs/F,IAAI,CAAe,GAAdt/F,EAAExI,EAAE22F,UAAa,OAAO32F,EAAEuV,OAAO,OAAO/M,GAAG,OAAOA,EAAE+M,MAAM,IAAIxV,EAAE4nG,GAAG5nG,GAAG,OAAOA,GAAG,CAAC,GAAGyI,EAAEzI,EAAE+nG,IAAI,OAAOt/F,EAAEzI,EAAE4nG,GAAG5nG,GAAG,OAAOC,EAAMwI,GAAJzI,EAAEyI,GAAMoK,WAAW,OAAO,KAAK,SAASuiF,GAAGp1F,GAAkB,QAAfA,EAAEA,EAAE+nG,KAAK/nG,EAAE0mG,MAAc,IAAI1mG,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,KAAK,KAAK1uF,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,IAAI,KAAK1uF,EAAE,SAASqjG,GAAGrjG,GAAG,GAAG,IAAIA,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,IAAI,OAAO1uF,EAAEq1F,UAAU,MAAM/4F,MAAM0I,EAAE,KAAM,SAASswF,GAAGt1F,GAAG,OAAOA,EAAEgoG,KAAK,KAClb,SAAS7B,GAAGnmG,GAAG,IAAIC,EAAED,EAAEioG,IAAkC,YAA9B,IAAShoG,IAAIA,EAAED,EAAEioG,IAAI,IAAI5gG,KAAYpH,EAAE,IAAIioG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGpoG,GAAG,MAAM,CAACosD,QAAQpsD,GAAG,SAASswE,GAAEtwE,GAAG,EAAEmoG,KAAKnoG,EAAEosD,QAAQ87C,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAAM,SAAS/wD,GAAEp3C,EAAEC,GAAGkoG,KAAKD,GAAGC,IAAInoG,EAAEosD,QAAQpsD,EAAEosD,QAAQnsD,EAAE,IAAIooG,GAAG,GAAGhvC,GAAE+uC,GAAGC,IAAInsE,GAAEksE,IAAG,GAAIE,GAAGD,GAC5P,SAASE,GAAGvoG,EAAEC,GAAG,IAAIwI,EAAEzI,EAAE4T,KAAK40F,aAAa,IAAI//F,EAAE,OAAO4/F,GAAG,IAAIxnG,EAAEb,EAAEq1F,UAAU,GAAGx0F,GAAGA,EAAE4nG,8CAA8CxoG,EAAE,OAAOY,EAAE6nG,0CAA0C,IAAStoG,EAAL6B,EAAE,GAAK,IAAI7B,KAAKqI,EAAExG,EAAE7B,GAAGH,EAAEG,GAAoH,OAAjHS,KAAIb,EAAEA,EAAEq1F,WAAYoT,4CAA4CxoG,EAAED,EAAE0oG,0CAA0CzmG,GAAUA,EAAE,SAAS0mG,GAAG3oG,GAAyB,OAAO,QAA7BA,EAAEA,EAAE4oG,yBAAmC,IAAS5oG,EAAE,SAAS6oG,KAAKv4B,GAAEp0C,IAAGo0C,GAAEjX,IAAG,SAASyvC,GAAG9oG,EAAEC,EAAEwI,GAAG,GAAG4wD,GAAEjN,UAAUi8C,GAAG,MAAM/rG,MAAM0I,EAAE,MAAMoyC,GAAEiiB,GAAEp5D,GAAGm3C,GAAElb,GAAEzzB,GAC/e,SAASsgG,GAAG/oG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAEq1F,UAAgC,GAAtBr1F,EAAEC,EAAE2oG,kBAAqB,oBAAoB/nG,EAAEmoG,gBAAgB,OAAOvgG,EAAwB,IAAI,IAAIxG,KAA9BpB,EAAEA,EAAEmoG,kBAAiC,KAAK/mG,KAAKjC,GAAG,MAAM1D,MAAM0I,EAAE,IAAI4pF,EAAG3uF,IAAI,UAAUgC,IAAI,OAAOuJ,EAAE,GAAG/C,EAAE5H,GAAG,SAASooG,GAAGjpG,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEq1F,YAAYr1F,EAAEkpG,2CAA2Cb,GAAGC,GAAGjvC,GAAEjN,QAAQhV,GAAEiiB,GAAEr5D,GAAGo3C,GAAElb,GAAEA,GAAEkwB,UAAe,EAAG,SAAS+8C,GAAGnpG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAEq1F,UAAU,IAAIx0F,EAAE,MAAMvE,MAAM0I,EAAE,MAAMyD,GAAGzI,EAAE+oG,GAAG/oG,EAAEC,EAAEqoG,IAAIznG,EAAEqoG,0CAA0ClpG,EAAEswE,GAAEp0C,IAAGo0C,GAAEjX,IAAGjiB,GAAEiiB,GAAEr5D,IAAIswE,GAAEp0C,IAAGkb,GAAElb,GAAEzzB,GAC7e,IAAI2gG,GAAG,KAAKC,GAAG,KAAKC,GAAGr7F,EAAEwqF,yBAAyB8Q,GAAGt7F,EAAEgrF,0BAA0BuQ,GAAGv7F,EAAEw7F,wBAAwBC,GAAGz7F,EAAE07F,qBAAqBC,GAAG37F,EAAE47F,sBAAsBC,GAAG77F,EAAEssF,aAAawP,GAAG97F,EAAE+7F,iCAAiCC,GAAGh8F,EAAEi8F,2BAA2BC,GAAGl8F,EAAE0tF,8BAA8ByO,GAAGn8F,EAAEirF,wBAAwBmR,GAAGp8F,EAAEq8F,qBAAqBC,GAAGt8F,EAAEu8F,sBAAsBC,GAAG,GAAGC,QAAG,IAASd,GAAGA,GAAG,aAAae,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGhB,KAAKvgB,GAAE,IAAIuhB,GAAGhB,GAAG,WAAW,OAAOA,KAAKgB,IACtd,SAASC,KAAK,OAAOhB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAMjuG,MAAM0I,EAAE,OAAQ,SAASgmG,GAAGhrG,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOiqG,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAMjuG,MAAM0I,EAAE,OAAQ,SAASimG,GAAGjrG,EAAEC,GAAW,OAARD,EAAEgrG,GAAGhrG,GAAUspG,GAAGtpG,EAAEC,GAAG,SAASirG,GAAGlrG,EAAEC,EAAEwI,GAAW,OAARzI,EAAEgrG,GAAGhrG,GAAUupG,GAAGvpG,EAAEC,EAAEwI,GAAG,SAAS0iG,KAAK,GAAG,OAAOP,GAAG,CAAC,IAAI5qG,EAAE4qG,GAAGA,GAAG,KAAKpB,GAAGxpG,GAAGorG,KAC3a,SAASA,KAAK,IAAIP,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAI7qG,EAAE,EAAE,IAAI,IAAIC,EAAE0qG,GAAGM,GAAG,IAAG,WAAW,KAAKjrG,EAAEC,EAAEtF,OAAOqF,IAAI,CAAC,IAAIyI,EAAExI,EAAED,GAAG,GAAGyI,EAAEA,GAAE,SAAU,OAAOA,OAAMkiG,GAAG,KAAK,MAAMliG,GAAG,MAAM,OAAOkiG,KAAKA,GAAGA,GAAGnpG,MAAMxB,EAAE,IAAIupG,GAAGU,GAAGkB,IAAI1iG,EAA3J,QAAsKoiG,IAAG,IAAK,IAAIQ,GAAGne,EAAGrD,wBAAwB,SAASyhB,GAAGtrG,EAAEC,GAAG,GAAGD,GAAGA,EAAEmpF,aAAa,CAA4B,IAAI,IAAI1gF,KAAnCxI,EAAEuL,EAAE,GAAGvL,GAAGD,EAAEA,EAAEmpF,kBAA4B,IAASlpF,EAAEwI,KAAKxI,EAAEwI,GAAGzI,EAAEyI,IAAI,OAAOxI,EAAE,OAAOA,EAAE,IAAIsrG,GAAGnD,GAAG,MAAMoD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KAC5b,SAASI,GAAG5rG,GAAG,IAAIC,EAAEsrG,GAAGn/C,QAAQkkB,GAAEi7B,IAAIvrG,EAAE4T,KAAKm/C,SAASy3B,cAAcvqF,EAAE,SAAS4rG,GAAG7rG,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIyI,EAAEzI,EAAE42F,UAAU,IAAI52F,EAAE8rG,WAAW7rG,KAAKA,EAAtB,CAAwB,GAAG,OAAOwI,IAAIA,EAAEqjG,WAAW7rG,KAAKA,EAAE,MAAWwI,EAAEqjG,YAAY7rG,OAAOD,EAAE8rG,YAAY7rG,EAAE,OAAOwI,IAAIA,EAAEqjG,YAAY7rG,GAAGD,EAAEA,EAAE62F,QAAQ,SAASkV,GAAG/rG,EAAEC,GAAGurG,GAAGxrG,EAAE0rG,GAAGD,GAAG,KAAsB,QAAjBzrG,EAAEA,EAAEgsG,eAAuB,OAAOhsG,EAAEisG,eAAe,KAAKjsG,EAAEksG,MAAMjsG,KAAKksG,IAAG,GAAInsG,EAAEisG,aAAa,MACvY,SAASG,GAAGpsG,EAAEC,GAAG,GAAGyrG,KAAK1rG,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAEyrG,GAAG1rG,EAAEC,EAAE,YAAWA,EAAE,CAACoR,QAAQrR,EAAEqsG,aAAapsG,EAAEqC,KAAK,MAAS,OAAOmpG,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMlvG,MAAM0I,EAAE,MAAMymG,GAAGxrG,EAAEurG,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAahsG,EAAEqsG,WAAW,WAAWb,GAAGA,GAAGnpG,KAAKrC,EAAE,OAAOD,EAAEwqF,cAAc,IAAI+hB,IAAG,EAAG,SAASC,GAAGxsG,GAAGA,EAAEysG,YAAY,CAACC,UAAU1sG,EAAEg3F,cAAc2V,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,MAAMC,QAAQ,MAC1a,SAASC,GAAGhtG,EAAEC,GAAGD,EAAEA,EAAEysG,YAAYxsG,EAAEwsG,cAAczsG,IAAIC,EAAEwsG,YAAY,CAACC,UAAU1sG,EAAE0sG,UAAUC,gBAAgB3sG,EAAE2sG,gBAAgBC,eAAe5sG,EAAE4sG,eAAeC,OAAO7sG,EAAE6sG,OAAOE,QAAQ/sG,EAAE+sG,UAAU,SAASE,GAAGjtG,EAAEC,GAAG,MAAM,CAACitG,UAAUltG,EAAEmtG,KAAKltG,EAAEyuF,IAAI,EAAE0e,QAAQ,KAAKv5F,SAAS,KAAKvR,KAAK,MAAM,SAAS+qG,GAAGrtG,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAEysG,aAAwB,CAAY,IAAIhkG,GAAfzI,EAAEA,EAAE6sG,QAAeC,QAAQ,OAAOrkG,EAAExI,EAAEqC,KAAKrC,GAAGA,EAAEqC,KAAKmG,EAAEnG,KAAKmG,EAAEnG,KAAKrC,GAAGD,EAAE8sG,QAAQ7sG,GACrZ,SAASqtG,GAAGttG,EAAEC,GAAG,IAAIwI,EAAEzI,EAAEysG,YAAY5rG,EAAEb,EAAE42F,UAAU,GAAG,OAAO/1F,GAAoB4H,KAAhB5H,EAAEA,EAAE4rG,aAAmB,CAAC,IAAIxqG,EAAE,KAAK7B,EAAE,KAAyB,GAAG,QAAvBqI,EAAEA,EAAEkkG,iBAA4B,CAAC,EAAE,CAAC,IAAI7kG,EAAE,CAAColG,UAAUzkG,EAAEykG,UAAUC,KAAK1kG,EAAE0kG,KAAKze,IAAIjmF,EAAEimF,IAAI0e,QAAQ3kG,EAAE2kG,QAAQv5F,SAASpL,EAAEoL,SAASvR,KAAK,MAAM,OAAOlC,EAAE6B,EAAE7B,EAAE0H,EAAE1H,EAAEA,EAAEkC,KAAKwF,EAAEW,EAAEA,EAAEnG,WAAW,OAAOmG,GAAG,OAAOrI,EAAE6B,EAAE7B,EAAEH,EAAEG,EAAEA,EAAEkC,KAAKrC,OAAOgC,EAAE7B,EAAEH,EAAiH,OAA/GwI,EAAE,CAACikG,UAAU7rG,EAAE6rG,UAAUC,gBAAgB1qG,EAAE2qG,eAAexsG,EAAEysG,OAAOhsG,EAAEgsG,OAAOE,QAAQlsG,EAAEksG,cAAS/sG,EAAEysG,YAAYhkG,GAA4B,QAAnBzI,EAAEyI,EAAEmkG,gBAAwBnkG,EAAEkkG,gBAAgB1sG,EAAED,EAAEsC,KACnfrC,EAAEwI,EAAEmkG,eAAe3sG,EACnB,SAASstG,GAAGvtG,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEjC,EAAEysG,YAAYF,IAAG,EAAG,IAAInsG,EAAE6B,EAAE0qG,gBAAgB7kG,EAAE7F,EAAE2qG,eAAevhF,EAAEppB,EAAE4qG,OAAOC,QAAQ,GAAG,OAAOzhF,EAAE,CAACppB,EAAE4qG,OAAOC,QAAQ,KAAK,IAAI/gG,EAAEsf,EAAEd,EAAExe,EAAEzJ,KAAKyJ,EAAEzJ,KAAK,KAAK,OAAOwF,EAAE1H,EAAEmqB,EAAEziB,EAAExF,KAAKioB,EAAEziB,EAAEiE,EAAE,IAAI1M,EAAEW,EAAE42F,UAAU,GAAG,OAAOv3F,EAAE,CAAiB,IAAIykC,GAApBzkC,EAAEA,EAAEotG,aAAoBG,eAAe9oE,IAAIh8B,IAAI,OAAOg8B,EAAEzkC,EAAEstG,gBAAgBpiF,EAAEuZ,EAAExhC,KAAKioB,EAAElrB,EAAEutG,eAAe7gG,IAAI,GAAG,OAAO3L,EAAE,CAA8B,IAA7B0jC,EAAE7hC,EAAEyqG,UAAU5kG,EAAE,EAAEzI,EAAEkrB,EAAExe,EAAE,OAAO,CAACsf,EAAEjrB,EAAE+sG,KAAK,IAAIjwG,EAAEkD,EAAE8sG,UAAU,IAAIrsG,EAAEwqB,KAAKA,EAAE,CAAC,OAAOhsB,IAAIA,EAAEA,EAAEiD,KAAK,CAAC4qG,UAAUhwG,EAAEiwG,KAAK,EAAEze,IAAItuF,EAAEsuF,IAAI0e,QAAQhtG,EAAEgtG,QAAQv5F,SAASzT,EAAEyT,SACrfvR,KAAK,OAAOtC,EAAE,CAAC,IAAIgkC,EAAEhkC,EAAES,EAAEL,EAAU,OAARirB,EAAEprB,EAAE/C,EAAEuL,EAAShI,EAAEiuF,KAAK,KAAK,EAAc,GAAG,oBAAf1qD,EAAEvjC,EAAE2sG,SAAiC,CAACtpE,EAAEE,EAAEpmC,KAAKV,EAAE4mC,EAAEzY,GAAG,MAAMrrB,EAAE8jC,EAAEE,EAAE,MAAMhkC,EAAE,KAAK,EAAEgkC,EAAE8yD,OAAe,KAAT9yD,EAAE8yD,MAAY,GAAG,KAAK,EAAsD,GAAG,QAA3CzrE,EAAE,oBAAd2Y,EAAEvjC,EAAE2sG,SAAgCppE,EAAEpmC,KAAKV,EAAE4mC,EAAEzY,GAAG2Y,SAAe,IAAS3Y,EAAE,MAAMrrB,EAAE8jC,EAAEt4B,EAAE,GAAGs4B,EAAEzY,GAAG,MAAMrrB,EAAE,KAAK,EAAEusG,IAAG,GAAI,OAAOnsG,EAAEyT,WAAW7T,EAAE82F,OAAO,GAAe,QAAZzrE,EAAEppB,EAAE8qG,SAAiB9qG,EAAE8qG,QAAQ,CAAC3sG,GAAGirB,EAAEhxB,KAAK+F,SAASlD,EAAE,CAACgwG,UAAUhwG,EAAEiwG,KAAK9hF,EAAEqjE,IAAItuF,EAAEsuF,IAAI0e,QAAQhtG,EAAEgtG,QAAQv5F,SAASzT,EAAEyT,SAASvR,KAAK,MAAM,OAAOjD,GAAGkrB,EAAElrB,EAAEnC,EAAE6O,EAAE+3B,GAAGzkC,EAAEA,EAAEiD,KAAKpF,EAAE4K,GAAGujB,EAAW,GAAG,QAAZjrB,EAAEA,EAAEkC,MAC1e,IAAsB,QAAnB+oB,EAAEppB,EAAE4qG,OAAOC,SAAiB,MAAW1sG,EAAEirB,EAAE/oB,KAAK+oB,EAAE/oB,KAAK,KAAKL,EAAE2qG,eAAevhF,EAAEppB,EAAE4qG,OAAOC,QAAQ,MAAc,OAAOztG,IAAI0M,EAAE+3B,GAAG7hC,EAAEyqG,UAAU3gG,EAAE9J,EAAE0qG,gBAAgBpiF,EAAEtoB,EAAE2qG,eAAevtG,EAAEmuG,IAAI1lG,EAAE9H,EAAEksG,MAAMpkG,EAAE9H,EAAEg3F,cAAclzD,GAAG,SAAS2pE,GAAGztG,EAAEC,EAAEwI,GAA8B,GAA3BzI,EAAEC,EAAE8sG,QAAQ9sG,EAAE8sG,QAAQ,KAAQ,OAAO/sG,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAErF,OAAOsF,IAAI,CAAC,IAAIY,EAAEb,EAAEC,GAAGgC,EAAEpB,EAAEgT,SAAS,GAAG,OAAO5R,EAAE,CAAqB,GAApBpB,EAAEgT,SAAS,KAAKhT,EAAE4H,EAAK,oBAAoBxG,EAAE,MAAM3F,MAAM0I,EAAE,IAAI/C,IAAIA,EAAErE,KAAKiD,KAAK,IAAI6sG,IAAI,IAAInwC,EAAG/gE,WAAWksF,KAC3b,SAASilB,GAAG3tG,EAAEC,EAAEwI,EAAE5H,GAA8B4H,EAAE,QAAXA,EAAEA,EAAE5H,EAAtBZ,EAAED,EAAEg3F,sBAAmC,IAASvuF,EAAExI,EAAEuL,EAAE,GAAGvL,EAAEwI,GAAGzI,EAAEg3F,cAAcvuF,EAAE,IAAIzI,EAAEksG,QAAQlsG,EAAEysG,YAAYC,UAAUjkG,GAC3I,IAAImlG,GAAG,CAACtlB,UAAU,SAAStoF,GAAG,SAAOA,EAAEA,EAAE6tG,kBAAiBlX,GAAG32F,KAAKA,GAAMyoF,gBAAgB,SAASzoF,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAE6tG,gBAAgB,IAAIhtG,EAAEitG,KAAK7rG,EAAE8rG,GAAG/tG,GAAGI,EAAE6sG,GAAGpsG,EAAEoB,GAAG7B,EAAEgtG,QAAQntG,OAAE,IAASwI,GAAG,OAAOA,IAAIrI,EAAEyT,SAASpL,GAAG4kG,GAAGrtG,EAAEI,GAAG4tG,GAAGhuG,EAAEiC,EAAEpB,IAAI2nF,oBAAoB,SAASxoF,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAE6tG,gBAAgB,IAAIhtG,EAAEitG,KAAK7rG,EAAE8rG,GAAG/tG,GAAGI,EAAE6sG,GAAGpsG,EAAEoB,GAAG7B,EAAEsuF,IAAI,EAAEtuF,EAAEgtG,QAAQntG,OAAE,IAASwI,GAAG,OAAOA,IAAIrI,EAAEyT,SAASpL,GAAG4kG,GAAGrtG,EAAEI,GAAG4tG,GAAGhuG,EAAEiC,EAAEpB,IAAI0nF,mBAAmB,SAASvoF,EAAEC,GAAGD,EAAEA,EAAE6tG,gBAAgB,IAAIplG,EAAEqlG,KAAKjtG,EAAEktG,GAAG/tG,GAAGiC,EAAEgrG,GAAGxkG,EAAE5H,GAAGoB,EAAEysF,IAAI,OAAE,IAASzuF,GAAG,OAAOA,IAAIgC,EAAE4R,SACjf5T,GAAGotG,GAAGrtG,EAAEiC,GAAG+rG,GAAGhuG,EAAEa,EAAE4H,KAAK,SAASwlG,GAAGjuG,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,EAAE0H,GAAiB,MAAM,oBAApB9H,EAAEA,EAAEq1F,WAAsC6Y,sBAAsBluG,EAAEkuG,sBAAsBrtG,EAAET,EAAE0H,IAAG7H,EAAEnE,YAAWmE,EAAEnE,UAAUgtF,wBAAsBwb,GAAG77F,EAAE5H,KAAKyjG,GAAGriG,EAAE7B,IAC/M,SAAS+tG,GAAGnuG,EAAEC,EAAEwI,GAAG,IAAI5H,GAAE,EAAGoB,EAAEomG,GAAOjoG,EAAEH,EAAEmuG,YAA2W,MAA/V,kBAAkBhuG,GAAG,OAAOA,EAAEA,EAAEgsG,GAAGhsG,IAAI6B,EAAE0mG,GAAG1oG,GAAGqoG,GAAGjvC,GAAEjN,QAAyBhsD,GAAGS,EAAE,QAAtBA,EAAEZ,EAAEuoG,oBAA4B,IAAS3nG,GAAG0nG,GAAGvoG,EAAEiC,GAAGomG,IAAIpoG,EAAE,IAAIA,EAAEwI,EAAErI,GAAGJ,EAAEg3F,cAAc,OAAO/2F,EAAEkyB,YAAO,IAASlyB,EAAEkyB,MAAMlyB,EAAEkyB,MAAM,KAAKlyB,EAAExD,QAAQmxG,GAAG5tG,EAAEq1F,UAAUp1F,EAAEA,EAAE4tG,gBAAgB7tG,EAAEa,KAAIb,EAAEA,EAAEq1F,WAAYoT,4CAA4CxmG,EAAEjC,EAAE0oG,0CAA0CtoG,GAAUH,EAC3Z,SAASouG,GAAGruG,EAAEC,EAAEwI,EAAE5H,GAAGb,EAAEC,EAAEkyB,MAAM,oBAAoBlyB,EAAEquG,2BAA2BruG,EAAEquG,0BAA0B7lG,EAAE5H,GAAG,oBAAoBZ,EAAEsuG,kCAAkCtuG,EAAEsuG,iCAAiC9lG,EAAE5H,GAAGZ,EAAEkyB,QAAQnyB,GAAG4tG,GAAGplB,oBAAoBvoF,EAAEA,EAAEkyB,MAAM,MAC/P,SAASq8E,GAAGxuG,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEjC,EAAEq1F,UAAUpzF,EAAE1G,MAAMkN,EAAExG,EAAEkwB,MAAMnyB,EAAEg3F,cAAc/0F,EAAEymF,KAAKglB,GAAGlB,GAAGxsG,GAAG,IAAII,EAAEH,EAAEmuG,YAAY,kBAAkBhuG,GAAG,OAAOA,EAAE6B,EAAEoP,QAAQ+6F,GAAGhsG,IAAIA,EAAEuoG,GAAG1oG,GAAGqoG,GAAGjvC,GAAEjN,QAAQnqD,EAAEoP,QAAQk3F,GAAGvoG,EAAEI,IAAImtG,GAAGvtG,EAAEyI,EAAExG,EAAEpB,GAAGoB,EAAEkwB,MAAMnyB,EAAEg3F,cAA2C,oBAA7B52F,EAAEH,EAAEwuG,4BAAiDd,GAAG3tG,EAAEC,EAAEG,EAAEqI,GAAGxG,EAAEkwB,MAAMnyB,EAAEg3F,eAAe,oBAAoB/2F,EAAEwuG,0BAA0B,oBAAoBxsG,EAAEysG,yBAAyB,oBAAoBzsG,EAAE0sG,2BAA2B,oBAAoB1sG,EAAE2sG,qBACve3uG,EAAEgC,EAAEkwB,MAAM,oBAAoBlwB,EAAE2sG,oBAAoB3sG,EAAE2sG,qBAAqB,oBAAoB3sG,EAAE0sG,2BAA2B1sG,EAAE0sG,4BAA4B1uG,IAAIgC,EAAEkwB,OAAOy7E,GAAGplB,oBAAoBvmF,EAAEA,EAAEkwB,MAAM,MAAMo7E,GAAGvtG,EAAEyI,EAAExG,EAAEpB,GAAGoB,EAAEkwB,MAAMnyB,EAAEg3F,eAAe,oBAAoB/0F,EAAE4sG,oBAAoB7uG,EAAE82F,OAAO,GAAG,IAAIgY,GAAG1tG,MAAMU,QACvT,SAASitG,GAAG/uG,EAAEC,EAAEwI,GAAW,GAAG,QAAXzI,EAAEyI,EAAEsgF,MAAiB,oBAAoB/oF,GAAG,kBAAkBA,EAAE,CAAC,GAAGyI,EAAE4gF,OAAO,CAAY,GAAX5gF,EAAEA,EAAE4gF,OAAY,CAAC,GAAG,IAAI5gF,EAAEimF,IAAI,MAAMpyF,MAAM0I,EAAE,MAAM,IAAInE,EAAE4H,EAAE4sF,UAAU,IAAIx0F,EAAE,MAAMvE,MAAM0I,EAAE,IAAIhF,IAAI,IAAIiC,EAAE,GAAGjC,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE8oF,KAAK,oBAAoB9oF,EAAE8oF,KAAK9oF,EAAE8oF,IAAIimB,aAAa/sG,EAAShC,EAAE8oF,KAAI9oF,EAAE,SAASD,GAAG,IAAIC,EAAEY,EAAE6nF,KAAKzoF,IAAIytG,KAAKztG,EAAEY,EAAE6nF,KAAK,IAAI,OAAO1oF,SAASC,EAAEgC,GAAGhC,EAAEgC,GAAGjC,GAAGC,EAAE+uG,WAAW/sG,EAAShC,GAAE,GAAG,kBAAkBD,EAAE,MAAM1D,MAAM0I,EAAE,MAAM,IAAIyD,EAAE4gF,OAAO,MAAM/sF,MAAM0I,EAAE,IAAIhF,IAAK,OAAOA,EAChe,SAASivG,GAAGjvG,EAAEC,GAAG,GAAG,aAAaD,EAAE4T,KAAK,MAAMtX,MAAM0I,EAAE,GAAG,oBAAoBlL,OAAOgC,UAAUyF,SAAS3D,KAAKqC,GAAG,qBAAqBnG,OAAOD,KAAKoG,GAAGX,KAAK,MAAM,IAAIW,IAClK,SAASivG,GAAGlvG,GAAG,SAASC,EAAEA,EAAEwI,GAAG,GAAGzI,EAAE,CAAC,IAAIa,EAAEZ,EAAEkvG,WAAW,OAAOtuG,GAAGA,EAAEuuG,WAAW3mG,EAAExI,EAAEkvG,WAAW1mG,GAAGxI,EAAEovG,YAAYpvG,EAAEkvG,WAAW1mG,EAAEA,EAAE2mG,WAAW,KAAK3mG,EAAEquF,MAAM,GAAG,SAASruF,EAAEA,EAAE5H,GAAG,IAAIb,EAAE,OAAO,KAAK,KAAK,OAAOa,GAAGZ,EAAEwI,EAAE5H,GAAGA,EAAEA,EAAEs2F,QAAQ,OAAO,KAAK,SAASt2F,EAAEb,EAAEC,GAAG,IAAID,EAAE,IAAIsG,IAAI,OAAOrG,GAAG,OAAOA,EAAEnF,IAAIkF,EAAE0G,IAAIzG,EAAEnF,IAAImF,GAAGD,EAAE0G,IAAIzG,EAAE2C,MAAM3C,GAAGA,EAAEA,EAAEk3F,QAAQ,OAAOn3F,EAAE,SAASiC,EAAEjC,EAAEC,GAAsC,OAAnCD,EAAEsvG,GAAGtvG,EAAEC,IAAK2C,MAAM,EAAE5C,EAAEm3F,QAAQ,KAAYn3F,EAAE,SAASI,EAAEH,EAAEwI,EAAE5H,GAAa,OAAVZ,EAAE2C,MAAM/B,EAAMb,EAA4B,QAAjBa,EAAEZ,EAAE22F,YAA6B/1F,EAAEA,EAAE+B,OAAQ6F,GAAGxI,EAAE62F,MAAM,EACpfruF,GAAG5H,GAAEZ,EAAE62F,MAAM,EAASruF,GADoaA,EACla,SAASX,EAAE7H,GAAsC,OAAnCD,GAAG,OAAOC,EAAE22F,YAAY32F,EAAE62F,MAAM,GAAU72F,EAAE,SAASorB,EAAErrB,EAAEC,EAAEwI,EAAE5H,GAAG,OAAG,OAAOZ,GAAG,IAAIA,EAAEyuF,MAAWzuF,EAAEsvG,GAAG9mG,EAAEzI,EAAEoN,KAAKvM,IAAKg2F,OAAO72F,EAAEC,KAAEA,EAAEgC,EAAEhC,EAAEwI,IAAKouF,OAAO72F,EAASC,GAAE,SAAS8L,EAAE/L,EAAEC,EAAEwI,EAAE5H,GAAG,OAAG,OAAOZ,GAAGA,EAAEuvG,cAAc/mG,EAAEmL,OAAY/S,EAAEoB,EAAEhC,EAAEwI,EAAElN,QAASwtF,IAAIgmB,GAAG/uG,EAAEC,EAAEwI,GAAG5H,EAAEg2F,OAAO72F,EAAEa,KAAEA,EAAE4uG,GAAGhnG,EAAEmL,KAAKnL,EAAE3N,IAAI2N,EAAElN,MAAM,KAAKyE,EAAEoN,KAAKvM,IAAKkoF,IAAIgmB,GAAG/uG,EAAEC,EAAEwI,GAAG5H,EAAEg2F,OAAO72F,EAASa,GAAE,SAAS0pB,EAAEvqB,EAAEC,EAAEwI,EAAE5H,GAAG,OAAG,OAAOZ,GAAG,IAAIA,EAAEyuF,KAAKzuF,EAAEo1F,UAAUsD,gBAAgBlwF,EAAEkwF,eAAe14F,EAAEo1F,UAAUqa,iBAAiBjnG,EAAEinG,iBAAsBzvG,EACrgB0vG,GAAGlnG,EAAEzI,EAAEoN,KAAKvM,IAAKg2F,OAAO72F,EAAEC,KAAEA,EAAEgC,EAAEhC,EAAEwI,EAAEoM,UAAU,KAAMgiF,OAAO72F,EAASC,GAAE,SAASZ,EAAEW,EAAEC,EAAEwI,EAAE5H,EAAET,GAAG,OAAG,OAAOH,GAAG,IAAIA,EAAEyuF,MAAWzuF,EAAE2vG,GAAGnnG,EAAEzI,EAAEoN,KAAKvM,EAAET,IAAKy2F,OAAO72F,EAAEC,KAAEA,EAAEgC,EAAEhC,EAAEwI,IAAKouF,OAAO72F,EAASC,GAAE,SAAS6jC,EAAE9jC,EAAEC,EAAEwI,GAAG,GAAG,kBAAkBxI,GAAG,kBAAkBA,EAAE,OAAOA,EAAEsvG,GAAG,GAAGtvG,EAAED,EAAEoN,KAAK3E,IAAKouF,OAAO72F,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEmpF,UAAU,KAAK1vB,EAAG,OAAOjxD,EAAEgnG,GAAGxvG,EAAE2T,KAAK3T,EAAEnF,IAAImF,EAAE1E,MAAM,KAAKyE,EAAEoN,KAAK3E,IAAKsgF,IAAIgmB,GAAG/uG,EAAE,KAAKC,GAAGwI,EAAEouF,OAAO72F,EAAEyI,EAAE,KAAK0kF,EAAG,OAAOltF,EAAE0vG,GAAG1vG,EAAED,EAAEoN,KAAK3E,IAAKouF,OAAO72F,EAAEC,EAAE,GAAG6uG,GAAG7uG,IAAIkuF,EAAGluF,GAAG,OAAOA,EAAE2vG,GAAG3vG,EACnfD,EAAEoN,KAAK3E,EAAE,OAAQouF,OAAO72F,EAAEC,EAAEgvG,GAAGjvG,EAAEC,GAAG,OAAO,KAAK,SAAS/C,EAAE8C,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAE,OAAOhC,EAAEA,EAAEnF,IAAI,KAAK,GAAG,kBAAkB2N,GAAG,kBAAkBA,EAAE,OAAO,OAAOxG,EAAE,KAAKopB,EAAErrB,EAAEC,EAAE,GAAGwI,EAAE5H,GAAG,GAAG,kBAAkB4H,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE2gF,UAAU,KAAK1vB,EAAG,OAAOjxD,EAAE3N,MAAMmH,EAAEwG,EAAEmL,OAAOw5E,EAAG/tF,EAAEW,EAAEC,EAAEwI,EAAElN,MAAMsZ,SAAShU,EAAEoB,GAAG8J,EAAE/L,EAAEC,EAAEwI,EAAE5H,GAAG,KAAK,KAAKssF,EAAG,OAAO1kF,EAAE3N,MAAMmH,EAAEsoB,EAAEvqB,EAAEC,EAAEwI,EAAE5H,GAAG,KAAK,GAAGiuG,GAAGrmG,IAAI0lF,EAAG1lF,GAAG,OAAO,OAAOxG,EAAE,KAAK5C,EAAEW,EAAEC,EAAEwI,EAAE5H,EAAE,MAAMouG,GAAGjvG,EAAEyI,GAAG,OAAO,KAAK,SAASu7B,EAAEhkC,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,GAAG,kBAAkBpB,GAAG,kBAAkBA,EAAE,OAClewqB,EAAEprB,EADueD,EAAEA,EAAE6F,IAAI4C,IACtf,KAAW,GAAG5H,EAAEoB,GAAG,GAAG,kBAAkBpB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEuoF,UAAU,KAAK1vB,EAAG,OAAO15D,EAAEA,EAAE6F,IAAI,OAAOhF,EAAE/F,IAAI2N,EAAE5H,EAAE/F,MAAM,KAAK+F,EAAE+S,OAAOw5E,EAAG/tF,EAAEY,EAAED,EAAEa,EAAEtF,MAAMsZ,SAAS5S,EAAEpB,EAAE/F,KAAKiR,EAAE9L,EAAED,EAAEa,EAAEoB,GAAG,KAAKkrF,EAAG,OAA2C5iE,EAAEtqB,EAAtCD,EAAEA,EAAE6F,IAAI,OAAOhF,EAAE/F,IAAI2N,EAAE5H,EAAE/F,MAAM,KAAW+F,EAAEoB,GAAG,GAAG6sG,GAAGjuG,IAAIstF,EAAGttF,GAAG,OAAwBxB,EAAEY,EAAnBD,EAAEA,EAAE6F,IAAI4C,IAAI,KAAW5H,EAAEoB,EAAE,MAAMgtG,GAAGhvG,EAAEY,GAAG,OAAO,KAAK,SAASJ,EAAEwB,EAAE6F,EAAEujB,EAAEtf,GAAG,IAAI,IAAIwe,EAAE,KAAKle,EAAE,KAAKy8B,EAAEhhC,EAAEkE,EAAElE,EAAE,EAAE0mB,EAAE,KAAK,OAAOsa,GAAG98B,EAAEqf,EAAE1wB,OAAOqR,IAAI,CAAC88B,EAAElmC,MAAMoJ,GAAGwiB,EAAEsa,EAAEA,EAAE,MAAMta,EAAEsa,EAAEquD,QAAQ,IAAI93F,EAAEnC,EAAE+E,EAAE6mC,EAAEzd,EAAErf,GAAGD,GAAG,GAAG,OAAO1M,EAAE,CAAC,OAAOypC,IAAIA,EAAEta,GAAG,MAAMxuB,GAAG8oC,GAAG,OACjfzpC,EAAEu3F,WAAW32F,EAAEgC,EAAE6mC,GAAGhhC,EAAE1H,EAAEf,EAAEyI,EAAEkE,GAAG,OAAOK,EAAEke,EAAElrB,EAAEgN,EAAE8qF,QAAQ93F,EAAEgN,EAAEhN,EAAEypC,EAAEta,EAAE,GAAGxiB,IAAIqf,EAAE1wB,OAAO,OAAO8N,EAAExG,EAAE6mC,GAAGve,EAAE,GAAG,OAAOue,EAAE,CAAC,KAAK98B,EAAEqf,EAAE1wB,OAAOqR,IAAkB,QAAd88B,EAAEhF,EAAE7hC,EAAEopB,EAAErf,GAAGD,MAAcjE,EAAE1H,EAAE0oC,EAAEhhC,EAAEkE,GAAG,OAAOK,EAAEke,EAAEue,EAAEz8B,EAAE8qF,QAAQruD,EAAEz8B,EAAEy8B,GAAG,OAAOve,EAAE,IAAIue,EAAEjoC,EAAEoB,EAAE6mC,GAAG98B,EAAEqf,EAAE1wB,OAAOqR,IAAsB,QAAlBwiB,EAAEwV,EAAE8E,EAAE7mC,EAAE+J,EAAEqf,EAAErf,GAAGD,MAAc/L,GAAG,OAAOwuB,EAAEooE,WAAW9tD,EAAExhC,OAAO,OAAOknB,EAAE1zB,IAAIkR,EAAEwiB,EAAE1zB,KAAKgN,EAAE1H,EAAEouB,EAAE1mB,EAAEkE,GAAG,OAAOK,EAAEke,EAAEiE,EAAEniB,EAAE8qF,QAAQ3oE,EAAEniB,EAAEmiB,GAA4C,OAAzCxuB,GAAG8oC,EAAEjuC,SAAQ,SAASmF,GAAG,OAAOC,EAAEgC,EAAEjC,MAAYuqB,EAAE,SAASkO,EAAEx2B,EAAE6F,EAAEujB,EAAEtf,GAAG,IAAIwe,EAAE4jE,EAAG9iE,GAAG,GAAG,oBAAoBd,EAAE,MAAMjuB,MAAM0I,EAAE,MAAkB,GAAG,OAAfqmB,EAAEd,EAAE3sB,KAAKytB,IAC1e,MAAM/uB,MAAM0I,EAAE,MAAM,IAAI,IAAIqH,EAAEke,EAAE,KAAKue,EAAEhhC,EAAEkE,EAAElE,EAAE,EAAE0mB,EAAE,KAAKnvB,EAAEgsB,EAAE/oB,OAAO,OAAOwmC,IAAIzpC,EAAE2C,KAAKgK,IAAI3M,EAAEgsB,EAAE/oB,OAAO,CAACwmC,EAAElmC,MAAMoJ,GAAGwiB,EAAEsa,EAAEA,EAAE,MAAMta,EAAEsa,EAAEquD,QAAQ,IAAI1+D,EAAEv7B,EAAE+E,EAAE6mC,EAAEzpC,EAAExC,MAAMkP,GAAG,GAAG,OAAO0sB,EAAE,CAAC,OAAOqQ,IAAIA,EAAEta,GAAG,MAAMxuB,GAAG8oC,GAAG,OAAOrQ,EAAEm+D,WAAW32F,EAAEgC,EAAE6mC,GAAGhhC,EAAE1H,EAAEq4B,EAAE3wB,EAAEkE,GAAG,OAAOK,EAAEke,EAAEkO,EAAEpsB,EAAE8qF,QAAQ1+D,EAAEpsB,EAAEosB,EAAEqQ,EAAEta,EAAE,GAAGnvB,EAAE2C,KAAK,OAAOyG,EAAExG,EAAE6mC,GAAGve,EAAE,GAAG,OAAOue,EAAE,CAAC,MAAMzpC,EAAE2C,KAAKgK,IAAI3M,EAAEgsB,EAAE/oB,OAAwB,QAAjBjD,EAAEykC,EAAE7hC,EAAE5C,EAAExC,MAAMkP,MAAcjE,EAAE1H,EAAEf,EAAEyI,EAAEkE,GAAG,OAAOK,EAAEke,EAAElrB,EAAEgN,EAAE8qF,QAAQ93F,EAAEgN,EAAEhN,GAAG,OAAOkrB,EAAE,IAAIue,EAAEjoC,EAAEoB,EAAE6mC,IAAIzpC,EAAE2C,KAAKgK,IAAI3M,EAAEgsB,EAAE/oB,OAA4B,QAArBjD,EAAE2kC,EAAE8E,EAAE7mC,EAAE+J,EAAE3M,EAAExC,MAAMkP,MAAc/L,GAAG,OAAOX,EAAEu3F,WAChf9tD,EAAExhC,OAAO,OAAOjI,EAAEvE,IAAIkR,EAAE3M,EAAEvE,KAAKgN,EAAE1H,EAAEf,EAAEyI,EAAEkE,GAAG,OAAOK,EAAEke,EAAElrB,EAAEgN,EAAE8qF,QAAQ93F,EAAEgN,EAAEhN,GAA4C,OAAzCW,GAAG8oC,EAAEjuC,SAAQ,SAASmF,GAAG,OAAOC,EAAEgC,EAAEjC,MAAYuqB,EAAE,OAAO,SAASvqB,EAAEa,EAAET,EAAEirB,GAAG,IAAItf,EAAE,kBAAkB3L,GAAG,OAAOA,GAAGA,EAAEwT,OAAOw5E,GAAI,OAAOhtF,EAAEtF,IAAIiR,IAAI3L,EAAEA,EAAE7E,MAAMsZ,UAAU,IAAI0V,EAAE,kBAAkBnqB,GAAG,OAAOA,EAAE,GAAGmqB,EAAE,OAAOnqB,EAAEgpF,UAAU,KAAK1vB,EAAG15D,EAAE,CAAS,IAARuqB,EAAEnqB,EAAEtF,IAAQiR,EAAElL,EAAE,OAAOkL,GAAG,CAAC,GAAGA,EAAEjR,MAAMyvB,EAAE,CAAC,GAAmB,IAAZxe,EAAE2iF,KAAY,GAAGtuF,EAAEwT,OAAOw5E,EAAG,CAAC3kF,EAAEzI,EAAE+L,EAAEorF,UAASt2F,EAAEoB,EAAE8J,EAAE3L,EAAE7E,MAAMsZ,WAAYgiF,OAAO72F,EAAEA,EAAEa,EAAE,MAAMb,QAAgB,GAAG+L,EAAEyjG,cAAcpvG,EAAEwT,KAAK,CAACnL,EAAEzI,EAAE+L,EAAEorF,UAC5et2F,EAAEoB,EAAE8J,EAAE3L,EAAE7E,QAASwtF,IAAIgmB,GAAG/uG,EAAE+L,EAAE3L,GAAGS,EAAEg2F,OAAO72F,EAAEA,EAAEa,EAAE,MAAMb,EAAGyI,EAAEzI,EAAE+L,GAAG,MAAW9L,EAAED,EAAE+L,GAAGA,EAAEA,EAAEorF,QAAQ/2F,EAAEwT,OAAOw5E,IAAIvsF,EAAE+uG,GAAGxvG,EAAE7E,MAAMsZ,SAAS7U,EAAEoN,KAAKie,EAAEjrB,EAAEtF,MAAO+7F,OAAO72F,EAAEA,EAAEa,KAAIwqB,EAAEokF,GAAGrvG,EAAEwT,KAAKxT,EAAEtF,IAAIsF,EAAE7E,MAAM,KAAKyE,EAAEoN,KAAKie,IAAK09D,IAAIgmB,GAAG/uG,EAAEa,EAAET,GAAGirB,EAAEwrE,OAAO72F,EAAEA,EAAEqrB,GAAG,OAAOvjB,EAAE9H,GAAG,KAAKmtF,EAAGntF,EAAE,CAAC,IAAI+L,EAAE3L,EAAEtF,IAAI,OAAO+F,GAAG,CAAC,GAAGA,EAAE/F,MAAMiR,EAAX,CAAa,GAAG,IAAIlL,EAAE6tF,KAAK7tF,EAAEw0F,UAAUsD,gBAAgBv4F,EAAEu4F,eAAe93F,EAAEw0F,UAAUqa,iBAAiBtvG,EAAEsvG,eAAe,CAACjnG,EAAEzI,EAAEa,EAAEs2F,UAASt2F,EAAEoB,EAAEpB,EAAET,EAAEyU,UAAU,KAAMgiF,OAAO72F,EAAEA,EAAEa,EAAE,MAAMb,EAAOyI,EAAEzI,EAAEa,GAAG,MAAWZ,EAAED,EAAEa,GAAGA,EAAEA,EAAEs2F,SAAQt2F,EACpf8uG,GAAGvvG,EAAEJ,EAAEoN,KAAKie,IAAKwrE,OAAO72F,EAAEA,EAAEa,EAAE,OAAOiH,EAAE9H,GAAG,GAAG,kBAAkBI,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOS,GAAG,IAAIA,EAAE6tF,KAAKjmF,EAAEzI,EAAEa,EAAEs2F,UAASt2F,EAAEoB,EAAEpB,EAAET,IAAKy2F,OAAO72F,EAAEA,EAAEa,IAAI4H,EAAEzI,EAAEa,IAAGA,EAAE0uG,GAAGnvG,EAAEJ,EAAEoN,KAAKie,IAAKwrE,OAAO72F,EAAEA,EAAEa,GAAGiH,EAAE9H,GAAG,GAAG8uG,GAAG1uG,GAAG,OAAOK,EAAET,EAAEa,EAAET,EAAEirB,GAAG,GAAG8iE,EAAG/tF,GAAG,OAAOq4B,EAAEz4B,EAAEa,EAAET,EAAEirB,GAAc,GAAXd,GAAG0kF,GAAGjvG,EAAEI,GAAM,qBAAqBA,IAAI2L,EAAE,OAAO/L,EAAE0uF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMpyF,MAAM0I,EAAE,IAAI4pF,EAAG5uF,EAAE4T,OAAO,cAAe,OAAOnL,EAAEzI,EAAEa,IAAI,IAAIgvG,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,GAAGC,GAAG5H,GAAG2H,IAAIE,GAAG7H,GAAG2H,IAAIG,GAAG9H,GAAG2H,IACtd,SAASI,GAAGnwG,GAAG,GAAGA,IAAI+vG,GAAG,MAAMzzG,MAAM0I,EAAE,MAAM,OAAOhF,EAAE,SAASowG,GAAGpwG,EAAEC,GAAyC,OAAtCm3C,GAAE84D,GAAGjwG,GAAGm3C,GAAE64D,GAAGjwG,GAAGo3C,GAAE44D,GAAGD,IAAI/vG,EAAEC,EAAEuxF,UAAmB,KAAK,EAAE,KAAK,GAAGvxF,GAAGA,EAAEA,EAAEka,iBAAiBla,EAAEkV,aAAa+7E,GAAG,KAAK,IAAI,MAAM,QAAkEjxF,EAAEixF,GAArCjxF,GAAvBD,EAAE,IAAIA,EAAEC,EAAE4S,WAAW5S,GAAMkV,cAAc,KAAKnV,EAAEA,EAAEqwG,SAAkB//B,GAAE0/B,IAAI54D,GAAE44D,GAAG/vG,GAAG,SAASqwG,KAAKhgC,GAAE0/B,IAAI1/B,GAAE2/B,IAAI3/B,GAAE4/B,IAAI,SAASK,GAAGvwG,GAAGmwG,GAAGD,GAAG9jD,SAAS,IAAInsD,EAAEkwG,GAAGH,GAAG5jD,SAAa3jD,EAAEyoF,GAAGjxF,EAAED,EAAE4T,MAAM3T,IAAIwI,IAAI2uC,GAAE64D,GAAGjwG,GAAGo3C,GAAE44D,GAAGvnG,IAAI,SAAS0/B,GAAGnoC,GAAGiwG,GAAG7jD,UAAUpsD,IAAIswE,GAAE0/B,IAAI1/B,GAAE2/B,KAAK,IAAI39D,GAAE81D,GAAG,GAC9c,SAASoI,GAAGxwG,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEyuF,IAAI,CAAC,IAAIjmF,EAAExI,EAAE+2F,cAAc,GAAG,OAAOvuF,IAAmB,QAAfA,EAAEA,EAAEwuF,aAAqB,OAAOxuF,EAAEyC,MAAM,OAAOzC,EAAEyC,MAAM,OAAOjL,OAAO,GAAG,KAAKA,EAAEyuF,UAAK,IAASzuF,EAAEwwG,cAAcC,aAAa,GAAG,KAAa,GAARzwG,EAAE62F,OAAU,OAAO72F,OAAO,GAAG,OAAOA,EAAEuV,MAAM,CAACvV,EAAEuV,MAAMqhF,OAAO52F,EAAEA,EAAEA,EAAEuV,MAAM,SAAS,GAAGvV,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEk3F,SAAS,CAAC,GAAG,OAAOl3F,EAAE42F,QAAQ52F,EAAE42F,SAAS72F,EAAE,OAAO,KAAKC,EAAEA,EAAE42F,OAAO52F,EAAEk3F,QAAQN,OAAO52F,EAAE42F,OAAO52F,EAAEA,EAAEk3F,QAAQ,OAAO,KAAK,IAAIwZ,GAAG,KAAKC,GAAG,KAAKC,IAAG,EACpd,SAASC,GAAG9wG,EAAEC,GAAG,IAAIwI,EAAEsoG,GAAG,EAAE,KAAK,KAAK,GAAGtoG,EAAE+mG,YAAY,UAAU/mG,EAAEmL,KAAK,UAAUnL,EAAE4sF,UAAUp1F,EAAEwI,EAAEouF,OAAO72F,EAAEyI,EAAEquF,MAAM,EAAE,OAAO92F,EAAEmvG,YAAYnvG,EAAEmvG,WAAWC,WAAW3mG,EAAEzI,EAAEmvG,WAAW1mG,GAAGzI,EAAEqvG,YAAYrvG,EAAEmvG,WAAW1mG,EAAE,SAASuoG,GAAGhxG,EAAEC,GAAG,OAAOD,EAAE0uF,KAAK,KAAK,EAAE,IAAIjmF,EAAEzI,EAAE4T,KAAyE,OAAO,QAA3E3T,EAAE,IAAIA,EAAEuxF,UAAU/oF,EAAE+hB,gBAAgBvqB,EAAE8uF,SAASvkE,cAAc,KAAKvqB,KAAmBD,EAAEq1F,UAAUp1F,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAEixG,cAAc,IAAIhxG,EAAEuxF,SAAS,KAAKvxF,KAAYD,EAAEq1F,UAAUp1F,GAAE,GAAwB,QAAQ,OAAM,GACve,SAASixG,GAAGlxG,GAAG,GAAG6wG,GAAG,CAAC,IAAI5wG,EAAE2wG,GAAG,GAAG3wG,EAAE,CAAC,IAAIwI,EAAExI,EAAE,IAAI+wG,GAAGhxG,EAAEC,GAAG,CAAqB,KAApBA,EAAE0nG,GAAGl/F,EAAEoR,gBAAqBm3F,GAAGhxG,EAAEC,GAAuC,OAAnCD,EAAE82F,OAAe,KAAT92F,EAAE82F,MAAY,EAAE+Z,IAAG,OAAGF,GAAG3wG,GAAS8wG,GAAGH,GAAGloG,GAAGkoG,GAAG3wG,EAAE4wG,GAAGjJ,GAAG1nG,EAAE+Z,iBAAiBha,EAAE82F,OAAe,KAAT92F,EAAE82F,MAAY,EAAE+Z,IAAG,EAAGF,GAAG3wG,GAAG,SAASmxG,GAAGnxG,GAAG,IAAIA,EAAEA,EAAE62F,OAAO,OAAO72F,GAAG,IAAIA,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,KAAK,KAAK1uF,EAAE0uF,KAAK1uF,EAAEA,EAAE62F,OAAO8Z,GAAG3wG,EAC5S,SAASoxG,GAAGpxG,GAAG,GAAGA,IAAI2wG,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAGnxG,GAAG6wG,IAAG,GAAG,EAAG,IAAI5wG,EAAED,EAAE4T,KAAK,GAAG,IAAI5T,EAAE0uF,KAAK,SAASzuF,GAAG,SAASA,IAAIqnG,GAAGrnG,EAAED,EAAEywG,eAAe,IAAIxwG,EAAE2wG,GAAG3wG,GAAG6wG,GAAG9wG,EAAEC,GAAGA,EAAE0nG,GAAG1nG,EAAE4Z,aAAmB,GAANs3F,GAAGnxG,GAAM,KAAKA,EAAE0uF,IAAI,CAAgD,KAA7B1uF,EAAE,QAApBA,EAAEA,EAAEg3F,eAAyBh3F,EAAEi3F,WAAW,MAAW,MAAM36F,MAAM0I,EAAE,MAAMhF,EAAE,CAAiB,IAAhBA,EAAEA,EAAE6Z,YAAgB5Z,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEwxF,SAAS,CAAC,IAAI/oF,EAAEzI,EAAEkL,KAAK,GAAG,OAAOzC,EAAE,CAAC,GAAG,IAAIxI,EAAE,CAAC2wG,GAAGjJ,GAAG3nG,EAAE6Z,aAAa,MAAM7Z,EAAEC,QAAQ,MAAMwI,GAAG,OAAOA,GAAG,OAAOA,GAAGxI,IAAID,EAAEA,EAAE6Z,YAAY+2F,GAAG,WAAWA,GAAGD,GAAGhJ,GAAG3nG,EAAEq1F,UAAUx7E,aAAa,KAAK,OAAM,EACtf,SAASw3F,KAAKT,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIS,GAAG,GAAG,SAASC,KAAK,IAAI,IAAIvxG,EAAE,EAAEA,EAAEsxG,GAAG32G,OAAOqF,IAAIsxG,GAAGtxG,GAAGwxG,8BAA8B,KAAKF,GAAG32G,OAAO,EAAE,IAAI82G,GAAGvkB,EAAGtD,uBAAuB8nB,GAAGxkB,EAAGrD,wBAAwB8nB,GAAG,EAAE3jG,GAAE,KAAKouB,GAAE,KAAKnoB,GAAE,KAAK29F,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAMx1G,MAAM0I,EAAE,MAAO,SAAS+sG,GAAG/xG,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIwI,EAAE,EAAEA,EAAExI,EAAEtF,QAAQ8N,EAAEzI,EAAErF,OAAO8N,IAAI,IAAI27F,GAAGpkG,EAAEyI,GAAGxI,EAAEwI,IAAI,OAAM,EAAG,OAAM,EAC9X,SAASupG,GAAGhyG,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAyH,GAAtHuxG,GAAGvxG,EAAE4N,GAAE/N,EAAEA,EAAE+2F,cAAc,KAAK/2F,EAAEwsG,YAAY,KAAKxsG,EAAEisG,MAAM,EAAEuF,GAAGrlD,QAAQ,OAAOpsD,GAAG,OAAOA,EAAEg3F,cAAcib,GAAGC,GAAGlyG,EAAEyI,EAAE5H,EAAEoB,GAAM4vG,GAAG,CAACzxG,EAAE,EAAE,EAAE,CAAO,GAANyxG,IAAG,IAAQ,GAAGzxG,GAAG,MAAM9D,MAAM0I,EAAE,MAAM5E,GAAG,EAAE6T,GAAEmoB,GAAE,KAAKn8B,EAAEwsG,YAAY,KAAKgF,GAAGrlD,QAAQ+lD,GAAGnyG,EAAEyI,EAAE5H,EAAEoB,SAAS4vG,IAAkE,GAA9DJ,GAAGrlD,QAAQgmD,GAAGnyG,EAAE,OAAOm8B,IAAG,OAAOA,GAAE95B,KAAKqvG,GAAG,EAAE19F,GAAEmoB,GAAEpuB,GAAE,KAAK4jG,IAAG,EAAM3xG,EAAE,MAAM3D,MAAM0I,EAAE,MAAM,OAAOhF,EAAE,SAASqyG,KAAK,IAAIryG,EAAE,CAACg3F,cAAc,KAAK0V,UAAU,KAAK4F,UAAU,KAAKC,MAAM,KAAKjwG,KAAK,MAA8C,OAAxC,OAAO2R,GAAEjG,GAAEgpF,cAAc/iF,GAAEjU,EAAEiU,GAAEA,GAAE3R,KAAKtC,EAASiU,GAC/e,SAASu+F,KAAK,GAAG,OAAOp2E,GAAE,CAAC,IAAIp8B,EAAEgO,GAAE4oF,UAAU52F,EAAE,OAAOA,EAAEA,EAAEg3F,cAAc,UAAUh3F,EAAEo8B,GAAE95B,KAAK,IAAIrC,EAAE,OAAOgU,GAAEjG,GAAEgpF,cAAc/iF,GAAE3R,KAAK,GAAG,OAAOrC,EAAEgU,GAAEhU,EAAEm8B,GAAEp8B,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAM1D,MAAM0I,EAAE,MAAUhF,EAAE,CAACg3F,eAAP56D,GAAEp8B,GAAqBg3F,cAAc0V,UAAUtwE,GAAEswE,UAAU4F,UAAUl2E,GAAEk2E,UAAUC,MAAMn2E,GAAEm2E,MAAMjwG,KAAK,MAAM,OAAO2R,GAAEjG,GAAEgpF,cAAc/iF,GAAEjU,EAAEiU,GAAEA,GAAE3R,KAAKtC,EAAE,OAAOiU,GAAE,SAASw+F,GAAGzyG,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,EACvY,SAASyyG,GAAG1yG,GAAG,IAAIC,EAAEuyG,KAAK/pG,EAAExI,EAAEsyG,MAAM,GAAG,OAAO9pG,EAAE,MAAMnM,MAAM0I,EAAE,MAAMyD,EAAEkqG,oBAAoB3yG,EAAE,IAAIa,EAAEu7B,GAAEn6B,EAAEpB,EAAEyxG,UAAUlyG,EAAEqI,EAAEqkG,QAAQ,GAAG,OAAO1sG,EAAE,CAAC,GAAG,OAAO6B,EAAE,CAAC,IAAI6F,EAAE7F,EAAEK,KAAKL,EAAEK,KAAKlC,EAAEkC,KAAKlC,EAAEkC,KAAKwF,EAAEjH,EAAEyxG,UAAUrwG,EAAE7B,EAAEqI,EAAEqkG,QAAQ,KAAK,GAAG,OAAO7qG,EAAE,CAACA,EAAEA,EAAEK,KAAKzB,EAAEA,EAAE6rG,UAAU,IAAIrhF,EAAEvjB,EAAE1H,EAAE,KAAK2L,EAAE9J,EAAE,EAAE,CAAC,IAAIsoB,EAAExe,EAAEohG,KAAK,IAAIwE,GAAGpnF,KAAKA,EAAE,OAAOc,IAAIA,EAAEA,EAAE/oB,KAAK,CAAC6qG,KAAK,EAAEyF,OAAO7mG,EAAE6mG,OAAOC,aAAa9mG,EAAE8mG,aAAaC,WAAW/mG,EAAE+mG,WAAWxwG,KAAK,OAAOzB,EAAEkL,EAAE8mG,eAAe7yG,EAAE+L,EAAE+mG,WAAW9yG,EAAEa,EAAEkL,EAAE6mG,YAAY,CAAC,IAAIvzG,EAAE,CAAC8tG,KAAK5iF,EAAEqoF,OAAO7mG,EAAE6mG,OAAOC,aAAa9mG,EAAE8mG,aAC9fC,WAAW/mG,EAAE+mG,WAAWxwG,KAAK,MAAM,OAAO+oB,GAAGvjB,EAAEujB,EAAEhsB,EAAEe,EAAES,GAAGwqB,EAAEA,EAAE/oB,KAAKjD,EAAE2O,GAAEk+F,OAAO3hF,EAAEijF,IAAIjjF,EAAExe,EAAEA,EAAEzJ,WAAW,OAAOyJ,GAAGA,IAAI9J,GAAG,OAAOopB,EAAEjrB,EAAES,EAAEwqB,EAAE/oB,KAAKwF,EAAEs8F,GAAGvjG,EAAEZ,EAAE+2F,iBAAiBmV,IAAG,GAAIlsG,EAAE+2F,cAAcn2F,EAAEZ,EAAEysG,UAAUtsG,EAAEH,EAAEqyG,UAAUjnF,EAAE5iB,EAAEsqG,kBAAkBlyG,EAAE,MAAM,CAACZ,EAAE+2F,cAAcvuF,EAAE6K,UACtQ,SAAS0/F,GAAGhzG,GAAG,IAAIC,EAAEuyG,KAAK/pG,EAAExI,EAAEsyG,MAAM,GAAG,OAAO9pG,EAAE,MAAMnM,MAAM0I,EAAE,MAAMyD,EAAEkqG,oBAAoB3yG,EAAE,IAAIa,EAAE4H,EAAE6K,SAASrR,EAAEwG,EAAEqkG,QAAQ1sG,EAAEH,EAAE+2F,cAAc,GAAG,OAAO/0F,EAAE,CAACwG,EAAEqkG,QAAQ,KAAK,IAAIhlG,EAAE7F,EAAEA,EAAEK,KAAK,GAAGlC,EAAEJ,EAAEI,EAAE0H,EAAE8qG,QAAQ9qG,EAAEA,EAAExF,WAAWwF,IAAI7F,GAAGmiG,GAAGhkG,EAAEH,EAAE+2F,iBAAiBmV,IAAG,GAAIlsG,EAAE+2F,cAAc52F,EAAE,OAAOH,EAAEqyG,YAAYryG,EAAEysG,UAAUtsG,GAAGqI,EAAEsqG,kBAAkB3yG,EAAE,MAAM,CAACA,EAAES,GACnV,SAASoyG,GAAGjzG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEZ,EAAEizG,YAAYryG,EAAEA,EAAEZ,EAAEkzG,SAAS,IAAIlxG,EAAEhC,EAAEuxG,8BAAyI,GAAxG,OAAOvvG,EAAEjC,EAAEiC,IAAIpB,GAAUb,EAAEA,EAAEozG,kBAAiBpzG,GAAG2xG,GAAG3xG,KAAKA,KAAEC,EAAEuxG,8BAA8B3wG,EAAEywG,GAAGj3G,KAAK4F,KAAMD,EAAE,OAAOyI,EAAExI,EAAEkzG,SAAoB,MAAX7B,GAAGj3G,KAAK4F,GAAS3D,MAAM0I,EAAE,MACzP,SAASquG,GAAGrzG,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEy0E,GAAE,GAAG,OAAOz0E,EAAE,MAAM3F,MAAM0I,EAAE,MAAM,IAAI5E,EAAEH,EAAEizG,YAAYprG,EAAE1H,EAAEH,EAAEkzG,SAAS9nF,EAAEomF,GAAGrlD,QAAQrgD,EAAEsf,EAAEwgE,UAAS,WAAW,OAAOonB,GAAGhxG,EAAEhC,EAAEwI,MAAK8hB,EAAExe,EAAE,GAAG1M,EAAE0M,EAAE,GAAGA,EAAEkI,GAAE,IAAI6vB,EAAE9jC,EAAEg3F,cAAc95F,EAAE4mC,EAAE4kD,KAAK1kD,EAAE9mC,EAAEo2G,YAAY7yG,EAAEqjC,EAAElpC,OAAOkpC,EAAEA,EAAEyvE,UAAU,IAAI96E,EAAEzqB,GACuO,OADrOhO,EAAEg3F,cAAc,CAACtO,KAAKxrF,EAAEtC,OAAOqF,EAAEszG,UAAU1yG,GAAGwqB,EAAEkgE,WAAU,WAAWruF,EAAEo2G,YAAY7qG,EAAEvL,EAAEs2G,YAAYjpF,EAAE,IAAIvqB,EAAEI,EAAEH,EAAEkzG,SAAS,IAAI/O,GAAGt8F,EAAE9H,GAAG,CAACA,EAAEyI,EAAExI,EAAEkzG,SAAS/O,GAAG/kG,EAAEW,KAAKuqB,EAAEvqB,GAAGA,EAAE+tG,GAAGt1E,GAAGx2B,EAAEmxG,kBAAkBpzG,EAAEiC,EAAEy4F,cAAc16F,EAAEiC,EAAEmxG,iBAAiBnxG,EAAE84F,gBAAgB/6F,EAAE,IAAI,IAAIa,EAC5foB,EAAE+4F,cAAc3vE,EAAErrB,EAAE,EAAEqrB,GAAG,CAAC,IAAItf,EAAE,GAAG+uF,GAAGzvE,GAAGlnB,EAAE,GAAG4H,EAAElL,EAAEkL,IAAI/L,EAAEqrB,IAAIlnB,MAAK,CAACsE,EAAExI,EAAEY,IAAIwqB,EAAEkgE,WAAU,WAAW,OAAO1qF,EAAEZ,EAAEkzG,SAAQ,WAAW,IAAInzG,EAAE9C,EAAEo2G,YAAY7qG,EAAEvL,EAAEs2G,YAAY,IAAI/qG,EAAEzI,EAAEC,EAAEkzG,UAAU,IAAItyG,EAAEktG,GAAGt1E,GAAGx2B,EAAEmxG,kBAAkBvyG,EAAEoB,EAAEy4F,aAAa,MAAMlsE,GAAG/lB,GAAE,WAAW,MAAM+lB,WAAS,CAACvuB,EAAEY,IAAIujG,GAAGpgE,EAAEv7B,IAAI27F,GAAG3jG,EAAER,IAAImkG,GAAGtgE,EAAEjjC,MAAKb,EAAE,CAAC8sG,QAAQ,KAAKx5F,SAAS,KAAKq/F,oBAAoBF,GAAGM,kBAAkB1zG,IAAKiU,SAASiX,EAAEkpF,GAAGrtG,KAAK,KAAK4H,GAAEhO,GAAG+L,EAAEwmG,MAAMvyG,EAAE+L,EAAEumG,UAAU,KAAKjzG,EAAE4zG,GAAGhxG,EAAEhC,EAAEwI,GAAGsD,EAAEirF,cAAcjrF,EAAE2gG,UAAUrtG,GAAUA,EACte,SAASq0G,GAAG1zG,EAAEC,EAAEwI,GAAc,OAAO4qG,GAAZb,KAAiBxyG,EAAEC,EAAEwI,GAAG,SAASkrG,GAAG3zG,GAAG,IAAIC,EAAEoyG,KAAmL,MAA9K,oBAAoBryG,IAAIA,EAAEA,KAAKC,EAAE+2F,cAAc/2F,EAAEysG,UAAU1sG,EAAoFA,GAAlFA,EAAEC,EAAEsyG,MAAM,CAACzF,QAAQ,KAAKx5F,SAAS,KAAKq/F,oBAAoBF,GAAGM,kBAAkB/yG,IAAOsT,SAASmgG,GAAGrtG,KAAK,KAAK4H,GAAEhO,GAAS,CAACC,EAAE+2F,cAAch3F,GAChR,SAAS4zG,GAAG5zG,EAAEC,EAAEwI,EAAE5H,GAAkO,OAA/Nb,EAAE,CAAC0uF,IAAI1uF,EAAE1C,OAAO2C,EAAE4zG,QAAQprG,EAAEqrG,KAAKjzG,EAAEyB,KAAK,MAAsB,QAAhBrC,EAAE+N,GAAEy+F,cAAsBxsG,EAAE,CAACkvG,WAAW,MAAMnhG,GAAEy+F,YAAYxsG,EAAEA,EAAEkvG,WAAWnvG,EAAEsC,KAAKtC,GAAmB,QAAfyI,EAAExI,EAAEkvG,YAAoBlvG,EAAEkvG,WAAWnvG,EAAEsC,KAAKtC,GAAGa,EAAE4H,EAAEnG,KAAKmG,EAAEnG,KAAKtC,EAAEA,EAAEsC,KAAKzB,EAAEZ,EAAEkvG,WAAWnvG,GAAWA,EAAE,SAAS+zG,GAAG/zG,GAA4B,OAAdA,EAAE,CAACosD,QAAQpsD,GAAhBqyG,KAA4Brb,cAAch3F,EAAE,SAASg0G,KAAK,OAAOxB,KAAKxb,cAAc,SAASid,GAAGj0G,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEowG,KAAKrkG,GAAE8oF,OAAO92F,EAAEiC,EAAE+0F,cAAc4c,GAAG,EAAE3zG,EAAEwI,OAAE,OAAO,IAAS5H,EAAE,KAAKA,GACjc,SAASqzG,GAAGl0G,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEuwG,KAAK3xG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIT,OAAE,EAAO,GAAG,OAAOg8B,GAAE,CAAC,IAAIt0B,EAAEs0B,GAAE46D,cAA0B,GAAZ52F,EAAE0H,EAAE+rG,QAAW,OAAOhzG,GAAGkxG,GAAGlxG,EAAEiH,EAAEgsG,MAAmB,YAAZF,GAAG3zG,EAAEwI,EAAErI,EAAES,GAAWmN,GAAE8oF,OAAO92F,EAAEiC,EAAE+0F,cAAc4c,GAAG,EAAE3zG,EAAEwI,EAAErI,EAAES,GAAG,SAASszG,GAAGn0G,EAAEC,GAAG,OAAOg0G,GAAG,IAAI,EAAEj0G,EAAEC,GAAG,SAASm0G,GAAGp0G,EAAEC,GAAG,OAAOi0G,GAAG,IAAI,EAAEl0G,EAAEC,GAAG,SAASo0G,GAAGr0G,EAAEC,GAAG,OAAOi0G,GAAG,EAAE,EAAEl0G,EAAEC,GAAG,SAASq0G,GAAGt0G,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEmsD,QAAQpsD,EAAE,WAAWC,EAAEmsD,QAAQ,YAAtE,EACxY,SAASmoD,GAAGv0G,EAAEC,EAAEwI,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEqL,OAAO,CAAC9T,IAAI,KAAYk0G,GAAG,EAAE,EAAEI,GAAGluG,KAAK,KAAKnG,EAAED,GAAGyI,GAAG,SAASspC,MAAM,SAASzjB,GAAGtuB,EAAEC,GAAG,IAAIwI,EAAE+pG,KAAKvyG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIY,EAAE4H,EAAEuuF,cAAc,OAAG,OAAOn2F,GAAG,OAAOZ,GAAG8xG,GAAG9xG,EAAEY,EAAE,IAAWA,EAAE,IAAG4H,EAAEuuF,cAAc,CAACh3F,EAAEC,GAAUD,GAAE,SAAS4xC,GAAG5xC,EAAEC,GAAG,IAAIwI,EAAE+pG,KAAKvyG,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIY,EAAE4H,EAAEuuF,cAAc,OAAG,OAAOn2F,GAAG,OAAOZ,GAAG8xG,GAAG9xG,EAAEY,EAAE,IAAWA,EAAE,IAAGb,EAAEA,IAAIyI,EAAEuuF,cAAc,CAACh3F,EAAEC,GAAUD,GACzZ,SAASw0G,GAAGx0G,EAAEC,GAAG,IAAIwI,EAAEsiG,KAAKE,GAAG,GAAGxiG,EAAE,GAAGA,GAAE,WAAWzI,GAAE,MAAMirG,GAAG,GAAGxiG,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEipG,GAAG/+F,WAAW++F,GAAG/+F,WAAW,EAAE,IAAI3S,GAAE,GAAIC,IAAV,QAAsByxG,GAAG/+F,WAAWlK,MAC5J,SAASgrG,GAAGzzG,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEitG,KAAK7rG,EAAE8rG,GAAG/tG,GAAGI,EAAE,CAAC+sG,KAAKlrG,EAAE2wG,OAAOnqG,EAAEoqG,aAAa,KAAKC,WAAW,KAAKxwG,KAAK,MAAMwF,EAAE7H,EAAE6sG,QAA6E,GAArE,OAAOhlG,EAAE1H,EAAEkC,KAAKlC,GAAGA,EAAEkC,KAAKwF,EAAExF,KAAKwF,EAAExF,KAAKlC,GAAGH,EAAE6sG,QAAQ1sG,EAAE0H,EAAE9H,EAAE42F,UAAa52F,IAAIgO,IAAG,OAAOlG,GAAGA,IAAIkG,GAAE6jG,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAI5xG,EAAEksG,QAAQ,OAAOpkG,GAAG,IAAIA,EAAEokG,QAAiC,QAAxBpkG,EAAE7H,EAAE0yG,qBAA8B,IAAI,IAAItnF,EAAEprB,EAAE8yG,kBAAkBhnG,EAAEjE,EAAEujB,EAAE5iB,GAAmC,GAAhCrI,EAAEyyG,aAAa/qG,EAAE1H,EAAE0yG,WAAW/mG,EAAKq4F,GAAGr4F,EAAEsf,GAAG,OAAO,MAAMd,IAAayjF,GAAGhuG,EAAEiC,EAAEpB,IAC9Z,IAAIuxG,GAAG,CAACqC,YAAYrI,GAAGhhB,YAAY0mB,GAAGzmB,WAAWymB,GAAGvmB,UAAUumB,GAAGtmB,oBAAoBsmB,GAAGrmB,gBAAgBqmB,GAAGpmB,QAAQomB,GAAGnmB,WAAWmmB,GAAGlmB,OAAOkmB,GAAGjmB,SAASimB,GAAGxmB,cAAcwmB,GAAG4C,iBAAiB5C,GAAG6C,cAAc7C,GAAG8C,iBAAiB9C,GAAG+C,oBAAoB/C,GAAGgD,0BAAyB,GAAI7C,GAAG,CAACwC,YAAYrI,GAAGhhB,YAAY,SAASprF,EAAEC,GAA4C,OAAzCoyG,KAAKrb,cAAc,CAACh3F,OAAE,IAASC,EAAE,KAAKA,GAAUD,GAAGqrF,WAAW+gB,GAAG7gB,UAAU4oB,GAAG3oB,oBAAoB,SAASxrF,EAAEC,EAAEwI,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEqL,OAAO,CAAC9T,IAAI,KAAYi0G,GAAG,EAAE,EAAEK,GAAGluG,KAAK,KACvfnG,EAAED,GAAGyI,IAAIgjF,gBAAgB,SAASzrF,EAAEC,GAAG,OAAOg0G,GAAG,EAAE,EAAEj0G,EAAEC,IAAIyrF,QAAQ,SAAS1rF,EAAEC,GAAG,IAAIwI,EAAE4pG,KAAqD,OAAhDpyG,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIyI,EAAEuuF,cAAc,CAACh3F,EAAEC,GAAUD,GAAG2rF,WAAW,SAAS3rF,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEwxG,KAAuK,OAAlKpyG,OAAE,IAASwI,EAAEA,EAAExI,GAAGA,EAAEY,EAAEm2F,cAAcn2F,EAAE6rG,UAAUzsG,EAAmFD,GAAjFA,EAAEa,EAAE0xG,MAAM,CAACzF,QAAQ,KAAKx5F,SAAS,KAAKq/F,oBAAoB3yG,EAAE+yG,kBAAkB9yG,IAAOqT,SAASmgG,GAAGrtG,KAAK,KAAK4H,GAAEhO,GAAS,CAACa,EAAEm2F,cAAch3F,IAAI4rF,OAAOmoB,GAAGloB,SAAS8nB,GAAGroB,cAAcv5C,GAAG2iE,iBAAiB,SAAS10G,GAAG,IAAIC,EAAE0zG,GAAG3zG,GAAGyI,EAAExI,EAAE,GAAGY,EAAEZ,EAAE,GAC5Z,OAD+Zk0G,IAAG,WAAW,IAAIl0G,EAAEyxG,GAAG/+F,WAC9e++F,GAAG/+F,WAAW,EAAE,IAAI9R,EAAEb,GAAN,QAAiB0xG,GAAG/+F,WAAW1S,KAAI,CAACD,IAAWyI,GAAGksG,cAAc,WAAW,IAAI30G,EAAE2zG,IAAG,GAAI1zG,EAAED,EAAE,GAA8B,OAAN+zG,GAArB/zG,EAAEw0G,GAAGpuG,KAAK,KAAKpG,EAAE,KAAgB,CAACA,EAAEC,IAAI20G,iBAAiB,SAAS50G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEwxG,KAAkF,OAA7ExxG,EAAEm2F,cAAc,CAACtO,KAAK,CAAC4qB,YAAYrzG,EAAEuzG,YAAY,MAAM54G,OAAOoF,EAAEuzG,UAAU9qG,GAAU4qG,GAAGxyG,EAAEb,EAAEC,EAAEwI,IAAIosG,oBAAoB,WAAW,GAAGhE,GAAG,CAAC,IAAI7wG,GAAE,EAAGC,EAzDlD,SAAYD,GAAG,MAAM,CAACopF,SAASyE,EAAGtsF,SAASvB,EAAEuH,QAAQvH,GAyDD+0G,EAAG,WAAiD,MAAtC/0G,IAAIA,GAAE,EAAGyI,EAAE,MAAMo/F,MAAMtmG,SAAS,MAAYjF,MAAM0I,EAAE,SAASyD,EAAEkrG,GAAG1zG,GAAG,GAC1Z,OAD6Z,KAAY,EAAP+N,GAAEZ,QAAUY,GAAE8oF,OAAO,IAAI8c,GAAG,GAAE,WAAWnrG,EAAE,MAAMo/F,MAAMtmG,SAAS,YAChf,EAAO,OAActB,EAAmC,OAAN0zG,GAA3B1zG,EAAE,MAAM4nG,MAAMtmG,SAAS,KAAiBtB,GAAG60G,0BAAyB,GAAI5C,GAAG,CAACuC,YAAYrI,GAAGhhB,YAAY98D,GAAG+8D,WAAW+gB,GAAG7gB,UAAU6oB,GAAG5oB,oBAAoB+oB,GAAG9oB,gBAAgB4oB,GAAG3oB,QAAQ95C,GAAG+5C,WAAW+mB,GAAG9mB,OAAOooB,GAAGnoB,SAAS,WAAW,OAAO6mB,GAAGD,KAAKnnB,cAAcv5C,GAAG2iE,iBAAiB,SAAS10G,GAAG,IAAIC,EAAEyyG,GAAGD,IAAIhqG,EAAExI,EAAE,GAAGY,EAAEZ,EAAE,GAA6F,OAA1Fm0G,IAAG,WAAW,IAAIn0G,EAAEyxG,GAAG/+F,WAAW++F,GAAG/+F,WAAW,EAAE,IAAI9R,EAAEb,GAAN,QAAiB0xG,GAAG/+F,WAAW1S,KAAI,CAACD,IAAWyI,GAAGksG,cAAc,WAAW,IAAI30G,EAAE0yG,GAAGD,IAAI,GAAG,MAAM,CAACuB,KAAK5nD,QAC9epsD,IAAI40G,iBAAiBlB,GAAGmB,oBAAoB,WAAW,OAAOnC,GAAGD,IAAI,IAAIqC,0BAAyB,GAAI3C,GAAG,CAACsC,YAAYrI,GAAGhhB,YAAY98D,GAAG+8D,WAAW+gB,GAAG7gB,UAAU6oB,GAAG5oB,oBAAoB+oB,GAAG9oB,gBAAgB4oB,GAAG3oB,QAAQ95C,GAAG+5C,WAAWqnB,GAAGpnB,OAAOooB,GAAGnoB,SAAS,WAAW,OAAOmnB,GAAGP,KAAKnnB,cAAcv5C,GAAG2iE,iBAAiB,SAAS10G,GAAG,IAAIC,EAAE+yG,GAAGP,IAAIhqG,EAAExI,EAAE,GAAGY,EAAEZ,EAAE,GAA6F,OAA1Fm0G,IAAG,WAAW,IAAIn0G,EAAEyxG,GAAG/+F,WAAW++F,GAAG/+F,WAAW,EAAE,IAAI9R,EAAEb,GAAN,QAAiB0xG,GAAG/+F,WAAW1S,KAAI,CAACD,IAAWyI,GAAGksG,cAAc,WAAW,IAAI30G,EAAEgzG,GAAGP,IAAI,GAAG,MAAM,CAACuB,KAAK5nD,QACrfpsD,IAAI40G,iBAAiBlB,GAAGmB,oBAAoB,WAAW,OAAO7B,GAAGP,IAAI,IAAIqC,0BAAyB,GAAIE,GAAG9nB,EAAGpD,kBAAkBqiB,IAAG,EAAG,SAASn2C,GAAGh2D,EAAEC,EAAEwI,EAAE5H,GAAGZ,EAAEuV,MAAM,OAAOxV,EAAE8vG,GAAG7vG,EAAE,KAAKwI,EAAE5H,GAAGgvG,GAAG5vG,EAAED,EAAEwV,MAAM/M,EAAE5H,GAAG,SAASo0G,GAAGj1G,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAGwG,EAAEA,EAAEuiF,OAAO,IAAI5qF,EAAEH,EAAE8oF,IAA8B,OAA1BgjB,GAAG9rG,EAAEgC,GAAGpB,EAAEmxG,GAAGhyG,EAAEC,EAAEwI,EAAE5H,EAAET,EAAE6B,GAAM,OAAOjC,GAAImsG,IAA0ElsG,EAAE62F,OAAO,EAAE9gC,GAAGh2D,EAAEC,EAAEY,EAAEoB,GAAUhC,EAAEuV,QAAhGvV,EAAEwsG,YAAYzsG,EAAEysG,YAAYxsG,EAAE62F,QAAQ,IAAI92F,EAAEksG,QAAQjqG,EAAEtB,GAAGX,EAAEC,EAAEgC,IACxW,SAASizG,GAAGl1G,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,GAAG,OAAOJ,EAAE,CAAC,IAAI8H,EAAEW,EAAEmL,KAAK,MAAG,oBAAoB9L,GAAIqtG,GAAGrtG,SAAI,IAASA,EAAEqhF,cAAc,OAAO1gF,EAAEG,cAAS,IAASH,EAAE0gF,eAAsDnpF,EAAEyvG,GAAGhnG,EAAEmL,KAAK,KAAK/S,EAAEZ,EAAEA,EAAEmN,KAAKhN,IAAK2oF,IAAI9oF,EAAE8oF,IAAI/oF,EAAE62F,OAAO52F,EAASA,EAAEuV,MAAMxV,IAAvGC,EAAEyuF,IAAI,GAAGzuF,EAAE2T,KAAK9L,EAAEstG,GAAGp1G,EAAEC,EAAE6H,EAAEjH,EAAEoB,EAAE7B,IAAoF,OAAV0H,EAAE9H,EAAEwV,MAAS,KAAKvT,EAAE7B,KAAK6B,EAAE6F,EAAE2oG,eAA0BhoG,EAAE,QAAdA,EAAEA,EAAEG,SAAmBH,EAAE67F,IAAKriG,EAAEpB,IAAIb,EAAE+oF,MAAM9oF,EAAE8oF,KAAYpoF,GAAGX,EAAEC,EAAEG,IAAGH,EAAE62F,OAAO,GAAE92F,EAAEsvG,GAAGxnG,EAAEjH,IAAKkoF,IAAI9oF,EAAE8oF,IAAI/oF,EAAE62F,OAAO52F,EAASA,EAAEuV,MAAMxV,GAClb,SAASo1G,GAAGp1G,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,GAAG,OAAOJ,GAAGskG,GAAGtkG,EAAEywG,cAAc5vG,IAAIb,EAAE+oF,MAAM9oF,EAAE8oF,IAAI,IAAGojB,IAAG,EAAG,KAAK/rG,EAAE6B,GAAqC,OAAOhC,EAAEisG,MAAMlsG,EAAEksG,MAAMvrG,GAAGX,EAAEC,EAAEG,GAAhE,KAAa,MAARJ,EAAE82F,SAAeqV,IAAG,GAA0C,OAAOn6D,GAAGhyC,EAAEC,EAAEwI,EAAE5H,EAAET,GACnL,SAASi1G,GAAGr1G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEZ,EAAEgxG,aAAahvG,EAAEpB,EAAEgU,SAASzU,EAAE,OAAOJ,EAAEA,EAAEg3F,cAAc,KAAK,GAAG,WAAWn2F,EAAEuM,MAAM,kCAAkCvM,EAAEuM,KAAK,GAAG,KAAY,EAAPnN,EAAEmN,MAAQnN,EAAE+2F,cAAc,CAACse,UAAU,GAAGC,GAAGt1G,EAAEwI,OAAQ,IAAG,KAAO,WAAFA,GAA8E,OAAOzI,EAAE,OAAOI,EAAEA,EAAEk1G,UAAU7sG,EAAEA,EAAExI,EAAEisG,MAAMjsG,EAAE6rG,WAAW,WAAW7rG,EAAE+2F,cAAc,CAACse,UAAUt1G,GAAGu1G,GAAGt1G,EAAED,GAAG,KAAxKC,EAAE+2F,cAAc,CAACse,UAAU,GAAGC,GAAGt1G,EAAE,OAAOG,EAAEA,EAAEk1G,UAAU7sG,QAA0H,OAAOrI,GAAGS,EAAET,EAAEk1G,UAAU7sG,EAAExI,EAAE+2F,cAAc,MAAMn2F,EAAE4H,EAAE8sG,GAAGt1G,EAAEY,GAAe,OAAZm1D,GAAGh2D,EAAEC,EAAEgC,EAAEwG,GAAUxI,EAAEuV,MAC1e,SAASggG,GAAGx1G,EAAEC,GAAG,IAAIwI,EAAExI,EAAE8oF,KAAO,OAAO/oF,GAAG,OAAOyI,GAAG,OAAOzI,GAAGA,EAAE+oF,MAAMtgF,KAAExI,EAAE62F,OAAO,KAAI,SAAS9kD,GAAGhyC,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI7B,EAAEuoG,GAAGlgG,GAAG6/F,GAAGjvC,GAAEjN,QAA4C,OAApChsD,EAAEmoG,GAAGtoG,EAAEG,GAAG2rG,GAAG9rG,EAAEgC,GAAGwG,EAAEupG,GAAGhyG,EAAEC,EAAEwI,EAAE5H,EAAET,EAAE6B,GAAM,OAAOjC,GAAImsG,IAA0ElsG,EAAE62F,OAAO,EAAE9gC,GAAGh2D,EAAEC,EAAEwI,EAAExG,GAAUhC,EAAEuV,QAAhGvV,EAAEwsG,YAAYzsG,EAAEysG,YAAYxsG,EAAE62F,QAAQ,IAAI92F,EAAEksG,QAAQjqG,EAAEtB,GAAGX,EAAEC,EAAEgC,IAC9P,SAAS+7B,GAAGh+B,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,GAAG0mG,GAAGlgG,GAAG,CAAC,IAAIrI,GAAE,EAAG6oG,GAAGhpG,QAAQG,GAAE,EAAW,GAAR2rG,GAAG9rG,EAAEgC,GAAM,OAAOhC,EAAEo1F,UAAU,OAAOr1F,IAAIA,EAAE42F,UAAU,KAAK32F,EAAE22F,UAAU,KAAK32F,EAAE62F,OAAO,GAAGqX,GAAGluG,EAAEwI,EAAE5H,GAAG2tG,GAAGvuG,EAAEwI,EAAE5H,EAAEoB,GAAGpB,GAAE,OAAQ,GAAG,OAAOb,EAAE,CAAC,IAAI8H,EAAE7H,EAAEo1F,UAAUhqE,EAAEprB,EAAEwwG,cAAc3oG,EAAEvM,MAAM8vB,EAAE,IAAItf,EAAEjE,EAAEuJ,QAAQkZ,EAAE9hB,EAAE2lG,YAAY,kBAAkB7jF,GAAG,OAAOA,EAAEA,EAAE6hF,GAAG7hF,GAAyBA,EAAEg+E,GAAGtoG,EAA1BsqB,EAAEo+E,GAAGlgG,GAAG6/F,GAAGjvC,GAAEjN,SAAmB,IAAI/sD,EAAEoJ,EAAEgmG,yBAAyB3qE,EAAE,oBAAoBzkC,GAAG,oBAAoByI,EAAE4mG,wBAAwB5qE,GAAG,oBAAoBh8B,EAAEymG,kCACpd,oBAAoBzmG,EAAEwmG,4BAA4BjjF,IAAIxqB,GAAGkL,IAAIwe,IAAI8jF,GAAGpuG,EAAE6H,EAAEjH,EAAE0pB,GAAGgiF,IAAG,EAAG,IAAIrvG,EAAE+C,EAAE+2F,cAAclvF,EAAEqqB,MAAMj1B,EAAEqwG,GAAGttG,EAAEY,EAAEiH,EAAE7F,GAAG8J,EAAE9L,EAAE+2F,cAAc3rE,IAAIxqB,GAAG3D,IAAI6O,GAAGmwB,GAAEkwB,SAASmgD,IAAI,oBAAoBltG,IAAIsuG,GAAG1tG,EAAEwI,EAAEpJ,EAAEwB,GAAGkL,EAAE9L,EAAE+2F,gBAAgB3rE,EAAEkhF,IAAI0B,GAAGhuG,EAAEwI,EAAE4iB,EAAExqB,EAAE3D,EAAE6O,EAAEwe,KAAKuZ,GAAG,oBAAoBh8B,EAAE6mG,2BAA2B,oBAAoB7mG,EAAE8mG,qBAAqB,oBAAoB9mG,EAAE8mG,oBAAoB9mG,EAAE8mG,qBAAqB,oBAAoB9mG,EAAE6mG,2BAA2B7mG,EAAE6mG,6BAA6B,oBACze7mG,EAAE+mG,oBAAoB5uG,EAAE62F,OAAO,KAAK,oBAAoBhvF,EAAE+mG,oBAAoB5uG,EAAE62F,OAAO,GAAG72F,EAAEwwG,cAAc5vG,EAAEZ,EAAE+2F,cAAcjrF,GAAGjE,EAAEvM,MAAMsF,EAAEiH,EAAEqqB,MAAMpmB,EAAEjE,EAAEuJ,QAAQkZ,EAAE1pB,EAAEwqB,IAAI,oBAAoBvjB,EAAE+mG,oBAAoB5uG,EAAE62F,OAAO,GAAGj2F,GAAE,OAAQ,CAACiH,EAAE7H,EAAEo1F,UAAU2X,GAAGhtG,EAAEC,GAAGorB,EAAEprB,EAAEwwG,cAAclmF,EAAEtqB,EAAE2T,OAAO3T,EAAEuvG,YAAYnkF,EAAEigF,GAAGrrG,EAAE2T,KAAKyX,GAAGvjB,EAAEvM,MAAMgvB,EAAEuZ,EAAE7jC,EAAEgxG,aAAa/zG,EAAE4K,EAAEuJ,QAAwB,kBAAhBtF,EAAEtD,EAAE2lG,cAAiC,OAAOriG,EAAEA,EAAEqgG,GAAGrgG,GAAyBA,EAAEw8F,GAAGtoG,EAA1B8L,EAAE48F,GAAGlgG,GAAG6/F,GAAGjvC,GAAEjN,SAAmB,IAAIpoB,EAAEv7B,EAAEgmG,0BAA0BpvG,EAAE,oBAAoB2kC,GACnf,oBAAoBl8B,EAAE4mG,0BAA0B,oBAAoB5mG,EAAEymG,kCAAkC,oBAAoBzmG,EAAEwmG,4BAA4BjjF,IAAIyY,GAAG5mC,IAAI6O,IAAIsiG,GAAGpuG,EAAE6H,EAAEjH,EAAEkL,GAAGwgG,IAAG,EAAGrvG,EAAE+C,EAAE+2F,cAAclvF,EAAEqqB,MAAMj1B,EAAEqwG,GAAGttG,EAAEY,EAAEiH,EAAE7F,GAAG,IAAIxB,EAAER,EAAE+2F,cAAc3rE,IAAIyY,GAAG5mC,IAAIuD,GAAGy7B,GAAEkwB,SAASmgD,IAAI,oBAAoBvoE,IAAI2pE,GAAG1tG,EAAEwI,EAAEu7B,EAAEnjC,GAAGJ,EAAER,EAAE+2F,gBAAgBzsE,EAAEgiF,IAAI0B,GAAGhuG,EAAEwI,EAAE8hB,EAAE1pB,EAAE3D,EAAEuD,EAAEsL,KAAK1M,GAAG,oBAAoByI,EAAE2tG,4BAA4B,oBAAoB3tG,EAAE4tG,sBAAsB,oBAAoB5tG,EAAE4tG,qBAAqB5tG,EAAE4tG,oBAAoB70G,EAC1gBJ,EAAEsL,GAAG,oBAAoBjE,EAAE2tG,4BAA4B3tG,EAAE2tG,2BAA2B50G,EAAEJ,EAAEsL,IAAI,oBAAoBjE,EAAE6tG,qBAAqB11G,EAAE62F,OAAO,GAAG,oBAAoBhvF,EAAE4mG,0BAA0BzuG,EAAE62F,OAAO,OAAO,oBAAoBhvF,EAAE6tG,oBAAoBtqF,IAAIrrB,EAAEywG,eAAevzG,IAAI8C,EAAEg3F,gBAAgB/2F,EAAE62F,OAAO,GAAG,oBAAoBhvF,EAAE4mG,yBAAyBrjF,IAAIrrB,EAAEywG,eAAevzG,IAAI8C,EAAEg3F,gBAAgB/2F,EAAE62F,OAAO,KAAK72F,EAAEwwG,cAAc5vG,EAAEZ,EAAE+2F,cAAcv2F,GAAGqH,EAAEvM,MAAMsF,EAAEiH,EAAEqqB,MAAM1xB,EAAEqH,EAAEuJ,QAAQtF,EAAElL,EAAE0pB,IAAI,oBAAoBziB,EAAE6tG,oBAC7ftqF,IAAIrrB,EAAEywG,eAAevzG,IAAI8C,EAAEg3F,gBAAgB/2F,EAAE62F,OAAO,GAAG,oBAAoBhvF,EAAE4mG,yBAAyBrjF,IAAIrrB,EAAEywG,eAAevzG,IAAI8C,EAAEg3F,gBAAgB/2F,EAAE62F,OAAO,KAAKj2F,GAAE,GAAI,OAAO+0G,GAAG51G,EAAEC,EAAEwI,EAAE5H,EAAET,EAAE6B,GACzL,SAAS2zG,GAAG51G,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAGo1G,GAAGx1G,EAAEC,GAAG,IAAI6H,EAAE,KAAa,GAAR7H,EAAE62F,OAAU,IAAIj2F,IAAIiH,EAAE,OAAO7F,GAAGknG,GAAGlpG,EAAEwI,GAAE,GAAI9H,GAAGX,EAAEC,EAAEG,GAAGS,EAAEZ,EAAEo1F,UAAU2f,GAAG5oD,QAAQnsD,EAAE,IAAIorB,EAAEvjB,GAAG,oBAAoBW,EAAEotG,yBAAyB,KAAKh1G,EAAEmqF,SAAwI,OAA/H/qF,EAAE62F,OAAO,EAAE,OAAO92F,GAAG8H,GAAG7H,EAAEuV,MAAMq6F,GAAG5vG,EAAED,EAAEwV,MAAM,KAAKpV,GAAGH,EAAEuV,MAAMq6F,GAAG5vG,EAAE,KAAKorB,EAAEjrB,IAAI41D,GAAGh2D,EAAEC,EAAEorB,EAAEjrB,GAAGH,EAAE+2F,cAAcn2F,EAAEsxB,MAAMlwB,GAAGknG,GAAGlpG,EAAEwI,GAAE,GAAWxI,EAAEuV,MAAM,SAAS+oC,GAAGv+C,GAAG,IAAIC,EAAED,EAAEq1F,UAAUp1F,EAAE61G,eAAehN,GAAG9oG,EAAEC,EAAE61G,eAAe71G,EAAE61G,iBAAiB71G,EAAEoR,SAASpR,EAAEoR,SAASy3F,GAAG9oG,EAAEC,EAAEoR,SAAQ,GAAI++F,GAAGpwG,EAAEC,EAAE04F,eAC7d,IAS0Vod,GAAMC,GAAGC,GAT/V/yB,GAAG,CAAC+T,WAAW,KAAKif,UAAU,GAClC,SAASrlE,GAAG7wC,EAAEC,EAAEwI,GAAG,IAAsCX,EAAlCjH,EAAEZ,EAAEgxG,aAAahvG,EAAEqwC,GAAE8Z,QAAQhsD,GAAE,EAA6M,OAAvM0H,EAAE,KAAa,GAAR7H,EAAE62F,UAAahvF,GAAE,OAAO9H,GAAG,OAAOA,EAAEg3F,gBAAiB,KAAO,EAAF/0F,IAAM6F,GAAG1H,GAAE,EAAGH,EAAE62F,QAAQ,IAAI,OAAO92F,GAAG,OAAOA,EAAEg3F,oBAAe,IAASn2F,EAAEs1G,WAAU,IAAKt1G,EAAEu1G,6BAA6Bn0G,GAAG,GAAGm1C,GAAE9E,GAAI,EAAFrwC,GAAQ,OAAOjC,QAAG,IAASa,EAAEs1G,UAAUjF,GAAGjxG,GAAGD,EAAEa,EAAEgU,SAAS5S,EAAEpB,EAAEs1G,SAAY/1G,GAASJ,EAAEq2G,GAAGp2G,EAAED,EAAEiC,EAAEwG,GAAGxI,EAAEuV,MAAMwhF,cAAc,CAACse,UAAU7sG,GAAGxI,EAAE+2F,cAAc9T,GAAGljF,GAAK,kBAAkBa,EAAEy1G,2BAAiCt2G,EAAEq2G,GAAGp2G,EAAED,EAAEiC,EAAEwG,GAAGxI,EAAEuV,MAAMwhF,cAAc,CAACse,UAAU7sG,GAC/fxI,EAAE+2F,cAAc9T,GAAGjjF,EAAEisG,MAAM,SAASlsG,KAAEyI,EAAE86E,GAAG,CAACn2E,KAAK,UAAUyH,SAAS7U,GAAGC,EAAEmN,KAAK3E,EAAE,OAAQouF,OAAO52F,EAASA,EAAEuV,MAAM/M,KAAYzI,EAAEg3F,cAAkB52F,GAASS,EAAEymC,GAAGtnC,EAAEC,EAAEY,EAAEgU,SAAShU,EAAEs1G,SAAS1tG,GAAGrI,EAAEH,EAAEuV,MAAMvT,EAAEjC,EAAEwV,MAAMwhF,cAAc52F,EAAE42F,cAAc,OAAO/0F,EAAE,CAACqzG,UAAU7sG,GAAG,CAAC6sG,UAAUrzG,EAAEqzG,UAAU7sG,GAAGrI,EAAE0rG,WAAW9rG,EAAE8rG,YAAYrjG,EAAExI,EAAE+2F,cAAc9T,GAAGriF,IAAE4H,EAAEq8B,GAAG9kC,EAAEC,EAAEY,EAAEgU,SAASpM,GAAGxI,EAAE+2F,cAAc,KAAYvuF,IAClQ,SAAS4tG,GAAGr2G,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEjC,EAAEoN,KAAKhN,EAAEJ,EAAEwV,MAAuK,OAAjKvV,EAAE,CAACmN,KAAK,SAASyH,SAAS5U,GAAG,KAAO,EAAFgC,IAAM,OAAO7B,GAAGA,EAAE0rG,WAAW,EAAE1rG,EAAE6wG,aAAahxG,GAAGG,EAAEmjF,GAAGtjF,EAAEgC,EAAE,EAAE,MAAMwG,EAAEmnG,GAAGnnG,EAAExG,EAAEpB,EAAE,MAAMT,EAAEy2F,OAAO72F,EAAEyI,EAAEouF,OAAO72F,EAAEI,EAAE+2F,QAAQ1uF,EAAEzI,EAAEwV,MAAMpV,EAASqI,EACrV,SAASq8B,GAAG9kC,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEjC,EAAEwV,MAAiL,OAA3KxV,EAAEiC,EAAEk1F,QAAQ1uF,EAAE6mG,GAAGrtG,EAAE,CAACmL,KAAK,UAAUyH,SAASpM,IAAI,KAAY,EAAPxI,EAAEmN,QAAU3E,EAAEyjG,MAAMrrG,GAAG4H,EAAEouF,OAAO52F,EAAEwI,EAAE0uF,QAAQ,KAAK,OAAOn3F,IAAIA,EAAEovG,WAAW,KAAKpvG,EAAE82F,MAAM,EAAE72F,EAAEovG,YAAYpvG,EAAEkvG,WAAWnvG,GAAUC,EAAEuV,MAAM/M,EAC7N,SAAS6+B,GAAGtnC,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI7B,EAAEH,EAAEmN,KAAKtF,EAAE9H,EAAEwV,MAAMxV,EAAE8H,EAAEqvF,QAAQ,IAAI9rE,EAAE,CAACje,KAAK,SAASyH,SAASpM,GAAoS,OAAjS,KAAO,EAAFrI,IAAMH,EAAEuV,QAAQ1N,IAAGW,EAAExI,EAAEuV,OAAQs2F,WAAW,EAAErjG,EAAEwoG,aAAa5lF,EAAiB,QAAfvjB,EAAEW,EAAE0mG,aAAqBlvG,EAAEovG,YAAY5mG,EAAE4mG,YAAYpvG,EAAEkvG,WAAWrnG,EAAEA,EAAEsnG,WAAW,MAAMnvG,EAAEovG,YAAYpvG,EAAEkvG,WAAW,MAAM1mG,EAAE6mG,GAAGxnG,EAAEujB,GAAG,OAAOrrB,EAAEa,EAAEyuG,GAAGtvG,EAAEa,IAAIA,EAAE+uG,GAAG/uG,EAAET,EAAE6B,EAAE,OAAQ60F,OAAO,EAAGj2F,EAAEg2F,OAAO52F,EAAEwI,EAAEouF,OAAO52F,EAAEwI,EAAE0uF,QAAQt2F,EAAEZ,EAAEuV,MAAM/M,EAAS5H,EAAE,SAASkkC,GAAG/kC,EAAEC,GAAGD,EAAEksG,OAAOjsG,EAAE,IAAIwI,EAAEzI,EAAE42F,UAAU,OAAOnuF,IAAIA,EAAEyjG,OAAOjsG,GAAG4rG,GAAG7rG,EAAE62F,OAAO52F,GACtd,SAASs2G,GAAGv2G,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,IAAI0H,EAAE9H,EAAEg3F,cAAc,OAAOlvF,EAAE9H,EAAEg3F,cAAc,CAACwf,YAAYv2G,EAAEw2G,UAAU,KAAKC,mBAAmB,EAAEC,KAAK91G,EAAE+1G,KAAKnuG,EAAEouG,SAAS50G,EAAEktG,WAAW/uG,IAAI0H,EAAE0uG,YAAYv2G,EAAE6H,EAAE2uG,UAAU,KAAK3uG,EAAE4uG,mBAAmB,EAAE5uG,EAAE6uG,KAAK91G,EAAEiH,EAAE8uG,KAAKnuG,EAAEX,EAAE+uG,SAAS50G,EAAE6F,EAAEqnG,WAAW/uG,GACvQ,SAAS02G,GAAG92G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEZ,EAAEgxG,aAAahvG,EAAEpB,EAAE6vG,YAAYtwG,EAAES,EAAE+1G,KAAsC,GAAjC5gD,GAAGh2D,EAAEC,EAAEY,EAAEgU,SAASpM,GAAkB,KAAO,GAAtB5H,EAAEyxC,GAAE8Z,UAAqBvrD,EAAI,EAAFA,EAAI,EAAEZ,EAAE62F,OAAO,OAAO,CAAC,GAAG,OAAO92F,GAAG,KAAa,GAARA,EAAE82F,OAAU92F,EAAE,IAAIA,EAAEC,EAAEuV,MAAM,OAAOxV,GAAG,CAAC,GAAG,KAAKA,EAAE0uF,IAAI,OAAO1uF,EAAEg3F,eAAejyD,GAAG/kC,EAAEyI,QAAQ,GAAG,KAAKzI,EAAE0uF,IAAI3pD,GAAG/kC,EAAEyI,QAAQ,GAAG,OAAOzI,EAAEwV,MAAM,CAACxV,EAAEwV,MAAMqhF,OAAO72F,EAAEA,EAAEA,EAAEwV,MAAM,SAAS,GAAGxV,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEm3F,SAAS,CAAC,GAAG,OAAOn3F,EAAE62F,QAAQ72F,EAAE62F,SAAS52F,EAAE,MAAMD,EAAEA,EAAEA,EAAE62F,OAAO72F,EAAEm3F,QAAQN,OAAO72F,EAAE62F,OAAO72F,EAAEA,EAAEm3F,QAAQt2F,GAAG,EAAS,GAAPu2C,GAAE9E,GAAEzxC,GAAM,KAAY,EAAPZ,EAAEmN,MAAQnN,EAAE+2F,cACze,UAAU,OAAO/0F,GAAG,IAAK,WAAqB,IAAVwG,EAAExI,EAAEuV,MAAUvT,EAAE,KAAK,OAAOwG,GAAiB,QAAdzI,EAAEyI,EAAEmuF,YAAoB,OAAO4Z,GAAGxwG,KAAKiC,EAAEwG,GAAGA,EAAEA,EAAE0uF,QAAY,QAAJ1uF,EAAExG,IAAYA,EAAEhC,EAAEuV,MAAMvV,EAAEuV,MAAM,OAAOvT,EAAEwG,EAAE0uF,QAAQ1uF,EAAE0uF,QAAQ,MAAMof,GAAGt2G,GAAE,EAAGgC,EAAEwG,EAAErI,EAAEH,EAAEkvG,YAAY,MAAM,IAAK,YAA6B,IAAjB1mG,EAAE,KAAKxG,EAAEhC,EAAEuV,MAAUvV,EAAEuV,MAAM,KAAK,OAAOvT,GAAG,CAAe,GAAG,QAAjBjC,EAAEiC,EAAE20F,YAAuB,OAAO4Z,GAAGxwG,GAAG,CAACC,EAAEuV,MAAMvT,EAAE,MAAMjC,EAAEiC,EAAEk1F,QAAQl1F,EAAEk1F,QAAQ1uF,EAAEA,EAAExG,EAAEA,EAAEjC,EAAEu2G,GAAGt2G,GAAE,EAAGwI,EAAE,KAAKrI,EAAEH,EAAEkvG,YAAY,MAAM,IAAK,WAAWoH,GAAGt2G,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEkvG,YAAY,MAAM,QAAQlvG,EAAE+2F,cAAc,KAAK,OAAO/2F,EAAEuV,MAC/f,SAAS7U,GAAGX,EAAEC,EAAEwI,GAAyD,GAAtD,OAAOzI,IAAIC,EAAE+rG,aAAahsG,EAAEgsG,cAAcwB,IAAIvtG,EAAEisG,MAAS,KAAKzjG,EAAExI,EAAE6rG,YAAY,CAAC,GAAG,OAAO9rG,GAAGC,EAAEuV,QAAQxV,EAAEwV,MAAM,MAAMlZ,MAAM0I,EAAE,MAAM,GAAG,OAAO/E,EAAEuV,MAAM,CAA4C,IAAjC/M,EAAE6mG,GAAZtvG,EAAEC,EAAEuV,MAAaxV,EAAEixG,cAAchxG,EAAEuV,MAAM/M,EAAMA,EAAEouF,OAAO52F,EAAE,OAAOD,EAAEm3F,SAASn3F,EAAEA,EAAEm3F,SAAQ1uF,EAAEA,EAAE0uF,QAAQmY,GAAGtvG,EAAEA,EAAEixG,eAAgBpa,OAAO52F,EAAEwI,EAAE0uF,QAAQ,KAAK,OAAOl3F,EAAEuV,MAAM,OAAO,KAK5P,SAASuhG,GAAG/2G,EAAEC,GAAG,IAAI4wG,GAAG,OAAO7wG,EAAE62G,UAAU,IAAK,SAAS52G,EAAED,EAAE42G,KAAK,IAAI,IAAInuG,EAAE,KAAK,OAAOxI,GAAG,OAAOA,EAAE22F,YAAYnuF,EAAExI,GAAGA,EAAEA,EAAEk3F,QAAQ,OAAO1uF,EAAEzI,EAAE42G,KAAK,KAAKnuG,EAAE0uF,QAAQ,KAAK,MAAM,IAAK,YAAY1uF,EAAEzI,EAAE42G,KAAK,IAAI,IAAI/1G,EAAE,KAAK,OAAO4H,GAAG,OAAOA,EAAEmuF,YAAY/1F,EAAE4H,GAAGA,EAAEA,EAAE0uF,QAAQ,OAAOt2F,EAAEZ,GAAG,OAAOD,EAAE42G,KAAK52G,EAAE42G,KAAK,KAAK52G,EAAE42G,KAAKzf,QAAQ,KAAKt2F,EAAEs2F,QAAQ,MAC7Z,SAAS6f,GAAGh3G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEZ,EAAEgxG,aAAa,OAAOhxG,EAAEyuF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAQyC,KAAK,GAAG,OAAOia,GAAG1oG,EAAE2T,OAAOi1F,KAAK,KAR1C,KAAK,EAAsL,OAApLyH,KAAKhgC,GAAEp0C,IAAGo0C,GAAEjX,IAAGk4C,MAAK1wG,EAAEZ,EAAEo1F,WAAYygB,iBAAiBj1G,EAAEwQ,QAAQxQ,EAAEi1G,eAAej1G,EAAEi1G,eAAe,MAAS,OAAO91G,GAAG,OAAOA,EAAEwV,QAAM47F,GAAGnxG,GAAGA,EAAE62F,OAAO,EAAEj2F,EAAE63F,UAAUz4F,EAAE62F,OAAO,MAAkB,KAAK,KAAK,EAAE3uD,GAAGloC,GAAG,IAAIgC,EAAEkuG,GAAGD,GAAG9jD,SAAkB,GAAT3jD,EAAExI,EAAE2T,KAAQ,OAAO5T,GAAG,MAAMC,EAAEo1F,UAAU2gB,GAAGh2G,EAAEC,EAAEwI,EAAE5H,GAAKb,EAAE+oF,MAAM9oF,EAAE8oF,MAAM9oF,EAAE62F,OAAO,SAAS,CAAC,IAAIj2F,EAAE,CAAC,GAAG,OAC7fZ,EAAEo1F,UAAU,MAAM/4F,MAAM0I,EAAE,MAAM,OAAO,KAAsB,GAAjBhF,EAAEmwG,GAAGH,GAAG5jD,SAAYglD,GAAGnxG,GAAG,CAACY,EAAEZ,EAAEo1F,UAAU5sF,EAAExI,EAAE2T,KAAK,IAAIxT,EAAEH,EAAEwwG,cAA8B,OAAhB5vG,EAAEknG,IAAI9nG,EAAEY,EAAEmnG,IAAI5nG,EAASqI,GAAG,IAAK,SAASu9D,GAAE,SAASnlE,GAAGmlE,GAAE,QAAQnlE,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQmlE,GAAE,OAAOnlE,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIb,EAAE,EAAEA,EAAE+lG,GAAGprG,OAAOqF,IAAIgmE,GAAE+/B,GAAG/lG,GAAGa,GAAG,MAAM,IAAK,SAASmlE,GAAE,QAAQnlE,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOmlE,GAAE,QAAQnlE,GAAGmlE,GAAE,OAAOnlE,GAAG,MAAM,IAAK,UAAUmlE,GAAE,SAASnlE,GAAG,MAAM,IAAK,QAAQmvF,GAAGnvF,EAAET,GAAG4lE,GAAE,UAAUnlE,GAAG,MAAM,IAAK,SAASA,EAAEivF,cAC5f,CAACmnB,cAAc72G,EAAE82G,UAAUlxC,GAAE,UAAUnlE,GAAG,MAAM,IAAK,WAAWgwF,GAAGhwF,EAAET,GAAG4lE,GAAE,UAAUnlE,GAAkB,IAAI,IAAIiH,KAAvB+sF,GAAGpsF,EAAErI,GAAGJ,EAAE,KAAkBI,EAAEA,EAAE5B,eAAesJ,KAAK7F,EAAE7B,EAAE0H,GAAG,aAAaA,EAAE,kBAAkB7F,EAAEpB,EAAEwY,cAAcpX,IAAIjC,EAAE,CAAC,WAAWiC,IAAI,kBAAkBA,GAAGpB,EAAEwY,cAAc,GAAGpX,IAAIjC,EAAE,CAAC,WAAW,GAAGiC,IAAIstD,EAAG/wD,eAAesJ,IAAI,MAAM7F,GAAG,aAAa6F,GAAGk+D,GAAE,SAASnlE,IAAI,OAAO4H,GAAG,IAAK,QAAQumF,EAAGnuF,GAAG2uD,GAAG3uD,EAAET,GAAE,GAAI,MAAM,IAAK,WAAW4uF,EAAGnuF,GAAGkwF,GAAGlwF,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBT,EAAE+2G,UAAUt2G,EAAEu2G,QACtfnQ,IAAIpmG,EAAEb,EAAEC,EAAEwsG,YAAY5rG,EAAE,OAAOA,IAAIZ,EAAE62F,OAAO,OAAO,CAAiZ,OAAhZhvF,EAAE,IAAI7F,EAAEuvF,SAASvvF,EAAEA,EAAEiT,cAAclV,IAAIgxF,KAAUhxF,EAAEixF,GAAGxoF,IAAIzI,IAAIgxF,GAAQ,WAAWvoF,IAAGzI,EAAE8H,EAAEsS,cAAc,QAASX,UAAU,qBAAuBzZ,EAAEA,EAAEya,YAAYza,EAAEga,aAAa,kBAAkBnZ,EAAE4O,GAAGzP,EAAE8H,EAAEsS,cAAc3R,EAAE,CAACgH,GAAG5O,EAAE4O,MAAMzP,EAAE8H,EAAEsS,cAAc3R,GAAG,WAAWA,IAAIX,EAAE9H,EAAEa,EAAEq2G,SAASpvG,EAAEovG,UAAS,EAAGr2G,EAAEyd,OAAOxW,EAAEwW,KAAKzd,EAAEyd,QAAQte,EAAE8H,EAAEuS,gBAAgBra,EAAEyI,GAAGzI,EAAE+nG,IAAI9nG,EAAED,EAAEgoG,IAAInnG,EAAEk1G,GAAG/1G,EAAEC,GAASA,EAAEo1F,UAAUr1F,EAAE8H,EAAEgtF,GAAGrsF,EAAE5H,GAAU4H,GAAG,IAAK,SAASu9D,GAAE,SAAShmE,GAAGgmE,GAAE,QAAQhmE,GACpfiC,EAAEpB,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQmlE,GAAE,OAAOhmE,GAAGiC,EAAEpB,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIoB,EAAE,EAAEA,EAAE8jG,GAAGprG,OAAOsH,IAAI+jE,GAAE+/B,GAAG9jG,GAAGjC,GAAGiC,EAAEpB,EAAE,MAAM,IAAK,SAASmlE,GAAE,QAAQhmE,GAAGiC,EAAEpB,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOmlE,GAAE,QAAQhmE,GAAGgmE,GAAE,OAAOhmE,GAAGiC,EAAEpB,EAAE,MAAM,IAAK,UAAUmlE,GAAE,SAAShmE,GAAGiC,EAAEpB,EAAE,MAAM,IAAK,QAAQmvF,GAAGhwF,EAAEa,GAAGoB,EAAE0tF,EAAG3vF,EAAEa,GAAGmlE,GAAE,UAAUhmE,GAAG,MAAM,IAAK,SAASiC,EAAEouF,GAAGrwF,EAAEa,GAAG,MAAM,IAAK,SAASb,EAAE8vF,cAAc,CAACmnB,cAAcp2G,EAAEq2G,UAAUj1G,EAAEuJ,EAAE,GAAG3K,EAAE,CAAChE,WAAM,IAASmpE,GAAE,UAAUhmE,GAAG,MAAM,IAAK,WAAW6wF,GAAG7wF,EAAEa,GAAGoB,EACpf0uF,GAAG3wF,EAAEa,GAAGmlE,GAAE,UAAUhmE,GAAG,MAAM,QAAQiC,EAAEpB,EAAEg0F,GAAGpsF,EAAExG,GAAG,IAAIopB,EAAEppB,EAAE,IAAI7B,KAAKirB,EAAE,GAAGA,EAAE7sB,eAAe4B,GAAG,CAAC,IAAI2L,EAAEsf,EAAEjrB,GAAG,UAAUA,EAAE8zF,GAAGl0F,EAAE+L,GAAG,4BAA4B3L,EAAuB,OAApB2L,EAAEA,EAAEA,EAAEw7F,YAAO,IAAgBpW,GAAGnxF,EAAE+L,GAAI,aAAa3L,EAAE,kBAAkB2L,GAAG,aAAatD,GAAG,KAAKsD,IAAIulF,GAAGtxF,EAAE+L,GAAG,kBAAkBA,GAAGulF,GAAGtxF,EAAE,GAAG+L,GAAG,mCAAmC3L,GAAG,6BAA6BA,GAAG,cAAcA,IAAImvD,EAAG/wD,eAAe4B,GAAG,MAAM2L,GAAG,aAAa3L,GAAG4lE,GAAE,SAAShmE,GAAG,MAAM+L,GAAG+gF,EAAG9sF,EAAEI,EAAE2L,EAAEjE,IAAI,OAAOW,GAAG,IAAK,QAAQumF,EAAGhvF,GAAGwvD,GAAGxvD,EAAEa,GAAE,GACnf,MAAM,IAAK,WAAWmuF,EAAGhvF,GAAG+wF,GAAG/wF,GAAG,MAAM,IAAK,SAAS,MAAMa,EAAEhE,OAAOmD,EAAEiX,aAAa,QAAQ,GAAG43E,EAAGhuF,EAAEhE,QAAQ,MAAM,IAAK,SAASmD,EAAEk3G,WAAWr2G,EAAEq2G,SAAmB,OAAV92G,EAAES,EAAEhE,OAAc0zF,GAAGvwF,IAAIa,EAAEq2G,SAAS92G,GAAE,GAAI,MAAMS,EAAEgvF,cAAcU,GAAGvwF,IAAIa,EAAEq2G,SAASr2G,EAAEgvF,cAAa,GAAI,MAAM,QAAQ,oBAAoB5tF,EAAEk1G,UAAUn3G,EAAEo3G,QAAQnQ,IAAIG,GAAG3+F,EAAE5H,KAAKZ,EAAE62F,OAAO,GAAG,OAAO72F,EAAE8oF,MAAM9oF,EAAE62F,OAAO,KAAK,OAAO,KAAK,KAAK,EAAE,GAAG92F,GAAG,MAAMC,EAAEo1F,UAAU4gB,GAAGj2G,EAAEC,EAAED,EAAEywG,cAAc5vG,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOZ,EAAEo1F,UAAU,MAAM/4F,MAAM0I,EAAE,MAC/eyD,EAAE0nG,GAAGD,GAAG9jD,SAAS+jD,GAAGH,GAAG5jD,SAASglD,GAAGnxG,IAAIY,EAAEZ,EAAEo1F,UAAU5sF,EAAExI,EAAEwwG,cAAc5vG,EAAEknG,IAAI9nG,EAAEY,EAAE2/D,YAAY/3D,IAAIxI,EAAE62F,OAAO,MAAKj2F,GAAG,IAAI4H,EAAE+oF,SAAS/oF,EAAEA,EAAEyM,eAAemiG,eAAex2G,IAAKknG,IAAI9nG,EAAEA,EAAEo1F,UAAUx0F,GAAG,OAAO,KAAK,KAAK,GAA0B,OAAvByvE,GAAEh+B,IAAGzxC,EAAEZ,EAAE+2F,cAAiB,KAAa,GAAR/2F,EAAE62F,QAAiB72F,EAAEisG,MAAMzjG,EAAExI,IAAEY,EAAE,OAAOA,EAAE4H,GAAE,EAAG,OAAOzI,OAAE,IAASC,EAAEwwG,cAAc0F,UAAU/E,GAAGnxG,GAAGwI,EAAE,OAAOzI,EAAEg3F,cAAiBn2F,IAAI4H,GAAG,KAAY,EAAPxI,EAAEmN,QAAW,OAAOpN,IAAG,IAAKC,EAAEwwG,cAAc2F,4BAA4B,KAAe,EAAV9jE,GAAE8Z,SAAW,IAAIr+C,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GACrf,GAAE,OAAO2oE,IAAG,KAAQ,UAAH82B,KAAe,KAAQ,UAAH8J,KAAeC,GAAG7gC,GAAEz6C,OAAMp7B,GAAG4H,KAAExI,EAAE62F,OAAO,GAAS,MAAK,KAAK,EAAE,OAAOwZ,KAAW,OAAOtwG,GAAGsmG,GAAGrmG,EAAEo1F,UAAUsD,eAAe,KAAK,KAAK,GAAG,OAAOiT,GAAG3rG,GAAG,KAA0C,KAAK,GAA0B,GAAvBqwE,GAAEh+B,IAAwB,QAArBzxC,EAAEZ,EAAE+2F,eAA0B,OAAO,KAAsC,GAAjC52F,EAAE,KAAa,GAARH,EAAE62F,OAA2B,QAAjBhvF,EAAEjH,EAAE41G,WAAsB,GAAGr2G,EAAE22G,GAAGl2G,GAAE,OAAQ,CAAC,GAAG,IAAIkN,IAAG,OAAO/N,GAAG,KAAa,GAARA,EAAE82F,OAAU,IAAI92F,EAAEC,EAAEuV,MAAM,OAAOxV,GAAG,CAAS,GAAG,QAAX8H,EAAE0oG,GAAGxwG,IAAe,CACjW,IADkWC,EAAE62F,OAAO,GAAGigB,GAAGl2G,GAAE,GAAoB,QAAhBT,EAAE0H,EAAE2kG,eAAuBxsG,EAAEwsG,YAAYrsG,EAAEH,EAAE62F,OAAO,GACnf,OAAOj2F,EAAEsuG,aAAalvG,EAAEovG,YAAY,MAAMpvG,EAAEkvG,WAAWtuG,EAAEsuG,WAAWtuG,EAAE4H,EAAMA,EAAExI,EAAEuV,MAAM,OAAO/M,GAAOzI,EAAEa,GAANT,EAAEqI,GAAQquF,OAAO,EAAE12F,EAAEgvG,WAAW,KAAKhvG,EAAEivG,YAAY,KAAKjvG,EAAE+uG,WAAW,KAAmB,QAAdrnG,EAAE1H,EAAEw2F,YAAoBx2F,EAAE0rG,WAAW,EAAE1rG,EAAE8rG,MAAMlsG,EAAEI,EAAEoV,MAAM,KAAKpV,EAAEqwG,cAAc,KAAKrwG,EAAE42F,cAAc,KAAK52F,EAAEqsG,YAAY,KAAKrsG,EAAE4rG,aAAa,KAAK5rG,EAAEi1F,UAAU,OAAOj1F,EAAE0rG,WAAWhkG,EAAEgkG,WAAW1rG,EAAE8rG,MAAMpkG,EAAEokG,MAAM9rG,EAAEoV,MAAM1N,EAAE0N,MAAMpV,EAAEqwG,cAAc3oG,EAAE2oG,cAAcrwG,EAAE42F,cAAclvF,EAAEkvF,cAAc52F,EAAEqsG,YAAY3kG,EAAE2kG,YAAYrsG,EAAEwT,KAAK9L,EAAE8L,KAAK5T,EAAE8H,EAAEkkG,aACpf5rG,EAAE4rG,aAAa,OAAOhsG,EAAE,KAAK,CAACksG,MAAMlsG,EAAEksG,MAAMD,aAAajsG,EAAEisG,eAAexjG,EAAEA,EAAE0uF,QAA2B,OAAnB//C,GAAE9E,GAAY,EAAVA,GAAE8Z,QAAU,GAAUnsD,EAAEuV,MAAMxV,EAAEA,EAAEm3F,QAAQ,OAAOt2F,EAAE+1G,MAAMrtB,KAAIiuB,KAAKv3G,EAAE62F,OAAO,GAAG12F,GAAE,EAAG22G,GAAGl2G,GAAE,GAAIZ,EAAEisG,MAAM,cAAc,CAAC,IAAI9rG,EAAE,GAAW,QAARJ,EAAEwwG,GAAG1oG,KAAa,GAAG7H,EAAE62F,OAAO,GAAG12F,GAAE,EAAmB,QAAhBqI,EAAEzI,EAAEysG,eAAuBxsG,EAAEwsG,YAAYhkG,EAAExI,EAAE62F,OAAO,GAAGigB,GAAGl2G,GAAE,GAAI,OAAOA,EAAE+1G,MAAM,WAAW/1G,EAAEg2G,WAAW/uG,EAAE8uF,YAAYia,GAAG,OAAmC,QAA5B5wG,EAAEA,EAAEkvG,WAAWtuG,EAAEsuG,cAAsBlvG,EAAEmvG,WAAW,MAAM,UAAU,EAAE7lB,KAAI1oF,EAAE61G,mBAAmBc,IAAI,aAAa/uG,IAAIxI,EAAE62F,OACjf,GAAG12F,GAAE,EAAG22G,GAAGl2G,GAAE,GAAIZ,EAAEisG,MAAM,UAAUrrG,EAAE21G,aAAa1uG,EAAEqvF,QAAQl3F,EAAEuV,MAAMvV,EAAEuV,MAAM1N,IAAa,QAATW,EAAE5H,EAAE81G,MAAcluG,EAAE0uF,QAAQrvF,EAAE7H,EAAEuV,MAAM1N,EAAEjH,EAAE81G,KAAK7uG,GAAG,OAAO,OAAOjH,EAAE+1G,MAAMnuG,EAAE5H,EAAE+1G,KAAK/1G,EAAE41G,UAAUhuG,EAAE5H,EAAE+1G,KAAKnuG,EAAE0uF,QAAQt2F,EAAEsuG,WAAWlvG,EAAEkvG,WAAWtuG,EAAE61G,mBAAmBntB,KAAI9gF,EAAE0uF,QAAQ,KAAKl3F,EAAEqyC,GAAE8Z,QAAQhV,GAAE9E,GAAElyC,EAAI,EAAFH,EAAI,EAAI,EAAFA,GAAKwI,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOgvG,KAAK,OAAOz3G,GAAG,OAAOA,EAAEg3F,iBAAiB,OAAO/2F,EAAE+2F,gBAAgB,kCAAkCn2F,EAAEuM,OAAOnN,EAAE62F,OAAO,GAAG,KAAK,MAAMx6F,MAAM0I,EAAE,IAAI/E,EAAEyuF,MAChd,SAASgpB,GAAG13G,GAAG,OAAOA,EAAE0uF,KAAK,KAAK,EAAEia,GAAG3oG,EAAE4T,OAAOi1F,KAAK,IAAI5oG,EAAED,EAAE82F,MAAM,OAAS,KAAF72F,GAAQD,EAAE82F,OAAS,KAAH72F,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAAgC,GAA9BswG,KAAKhgC,GAAEp0C,IAAGo0C,GAAEjX,IAAGk4C,KAAkB,KAAO,IAApBtxG,EAAED,EAAE82F,QAAoB,MAAMx6F,MAAM0I,EAAE,MAAyB,OAAnBhF,EAAE82F,OAAS,KAAH72F,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAOmoC,GAAGnoC,GAAG,KAAK,KAAK,GAAG,OAAOswE,GAAEh+B,IAAe,MAAZryC,EAAED,EAAE82F,QAAc92F,EAAE82F,OAAS,KAAH72F,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAOswE,GAAEh+B,IAAG,KAAK,KAAK,EAAE,OAAOg+D,KAAK,KAAK,KAAK,GAAG,OAAO1E,GAAG5rG,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOy3G,KAAK,KAAK,QAAQ,OAAO,MACra,SAASE,GAAG33G,EAAEC,GAAG,IAAI,IAAIwI,EAAE,GAAG5H,EAAEZ,EAAE,GAAGwI,GAAGgmF,EAAG5tF,GAAGA,EAAEA,EAAEg2F,aAAah2F,GAAG,IAAIoB,EAAEwG,EAAE,MAAMrI,GAAG6B,EAAE,6BAA6B7B,EAAEw3G,QAAQ,KAAKx3G,EAAEyiF,MAAM,MAAM,CAAChmF,MAAMmD,EAAEpF,OAAOqF,EAAE4iF,MAAM5gF,GAAG,SAAS41G,GAAG73G,EAAEC,GAAG,IAAIknF,QAAQh9E,MAAMlK,EAAEpD,OAAO,MAAM4L,GAAGkX,YAAW,WAAW,MAAMlX,MAlB3PstG,GAAG,SAAS/1G,EAAEC,GAAG,IAAI,IAAIwI,EAAExI,EAAEuV,MAAM,OAAO/M,GAAG,CAAC,GAAG,IAAIA,EAAEimF,KAAK,IAAIjmF,EAAEimF,IAAI1uF,EAAEuV,YAAY9M,EAAE4sF,gBAAgB,GAAG,IAAI5sF,EAAEimF,KAAK,OAAOjmF,EAAE+M,MAAM,CAAC/M,EAAE+M,MAAMqhF,OAAOpuF,EAAEA,EAAEA,EAAE+M,MAAM,SAAS,GAAG/M,IAAIxI,EAAE,MAAM,KAAK,OAAOwI,EAAE0uF,SAAS,CAAC,GAAG,OAAO1uF,EAAEouF,QAAQpuF,EAAEouF,SAAS52F,EAAE,OAAOwI,EAAEA,EAAEouF,OAAOpuF,EAAE0uF,QAAQN,OAAOpuF,EAAEouF,OAAOpuF,EAAEA,EAAE0uF,UAChS6e,GAAG,SAASh2G,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEjC,EAAEywG,cAAc,GAAGxuG,IAAIpB,EAAE,CAACb,EAAEC,EAAEo1F,UAAU8a,GAAGH,GAAG5jD,SAAS,IAAyUtkD,EAArU1H,EAAE,KAAK,OAAOqI,GAAG,IAAK,QAAQxG,EAAE0tF,EAAG3vF,EAAEiC,GAAGpB,EAAE8uF,EAAG3vF,EAAEa,GAAGT,EAAE,GAAG,MAAM,IAAK,SAAS6B,EAAEouF,GAAGrwF,EAAEiC,GAAGpB,EAAEwvF,GAAGrwF,EAAEa,GAAGT,EAAE,GAAG,MAAM,IAAK,SAAS6B,EAAEuJ,EAAE,GAAGvJ,EAAE,CAACpF,WAAM,IAASgE,EAAE2K,EAAE,GAAG3K,EAAE,CAAChE,WAAM,IAASuD,EAAE,GAAG,MAAM,IAAK,WAAW6B,EAAE0uF,GAAG3wF,EAAEiC,GAAGpB,EAAE8vF,GAAG3wF,EAAEa,GAAGT,EAAE,GAAG,MAAM,QAAQ,oBAAoB6B,EAAEk1G,SAAS,oBAAoBt2G,EAAEs2G,UAAUn3G,EAAEo3G,QAAQnQ,IAAyB,IAAI18E,KAAzBsqE,GAAGpsF,EAAE5H,GAAS4H,EAAE,KAAcxG,EAAE,IAAIpB,EAAErC,eAAe+rB,IAAItoB,EAAEzD,eAAe+rB,IAAI,MAAMtoB,EAAEsoB,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAIc,EAAEppB,EAAEsoB,GAAG,IAAIziB,KAAKujB,EAAEA,EAAE7sB,eAAesJ,KAAKW,IAAIA,EAAE,IAAIA,EAAEX,GAAG,QAAQ,4BAA4ByiB,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIglC,EAAG/wD,eAAe+rB,GAAGnqB,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI/F,KAAKkwB,EAAE,OAAO,IAAIA,KAAK1pB,EAAE,CAAC,IAAIkL,EAAElL,EAAE0pB,GAAyB,GAAtBc,EAAE,MAAMppB,EAAEA,EAAEsoB,QAAG,EAAU1pB,EAAErC,eAAe+rB,IAAIxe,IAAIsf,IAAI,MAAMtf,GAAG,MAAMsf,GAAG,GAAG,UAAUd,EAAE,GAAGc,EAAE,CAAC,IAAIvjB,KAAKujB,GAAGA,EAAE7sB,eAAesJ,IAAIiE,GAAGA,EAAEvN,eAAesJ,KAAKW,IAAIA,EAAE,IAAIA,EAAEX,GAAG,IAAI,IAAIA,KAAKiE,EAAEA,EAAEvN,eAAesJ,IAAIujB,EAAEvjB,KAAKiE,EAAEjE,KAAKW,IAClfA,EAAE,IAAIA,EAAEX,GAAGiE,EAAEjE,SAASW,IAAIrI,IAAIA,EAAE,IAAIA,EAAE/F,KAAKkwB,EAAE9hB,IAAIA,EAAEsD,MAAM,4BAA4Bwe,GAAGxe,EAAEA,EAAEA,EAAEw7F,YAAO,EAAOl8E,EAAEA,EAAEA,EAAEk8E,YAAO,EAAO,MAAMx7F,GAAGsf,IAAItf,IAAI3L,EAAEA,GAAG,IAAI/F,KAAKkwB,EAAExe,IAAI,aAAawe,EAAE,kBAAkBxe,GAAG,kBAAkBA,IAAI3L,EAAEA,GAAG,IAAI/F,KAAKkwB,EAAE,GAAGxe,GAAG,mCAAmCwe,GAAG,6BAA6BA,IAAIglC,EAAG/wD,eAAe+rB,IAAI,MAAMxe,GAAG,aAAawe,GAAGy7C,GAAE,SAAShmE,GAAGI,GAAGirB,IAAItf,IAAI3L,EAAE,KAAK,kBAAkB2L,GAAG,OAAOA,GAAGA,EAAEq9E,WAAWyE,EAAG9hF,EAAExK,YAAYnB,EAAEA,GAAG,IAAI/F,KAAKkwB,EAAExe,IAAItD,IAAIrI,EAAEA,GAAG,IAAI/F,KAAK,QAC/eoO,GAAG,IAAI8hB,EAAEnqB,GAAKH,EAAEwsG,YAAYliF,KAAEtqB,EAAE62F,OAAO,KAAImf,GAAG,SAASj2G,EAAEC,EAAEwI,EAAE5H,GAAG4H,IAAI5H,IAAIZ,EAAE62F,OAAO,IAcgL,IAAIghB,GAAG,oBAAoBC,QAAQA,QAAQzxG,IAAI,SAAS0xG,GAAGh4G,EAAEC,EAAEwI,IAAGA,EAAEwkG,IAAI,EAAExkG,IAAKimF,IAAI,EAAEjmF,EAAE2kG,QAAQ,CAAC9+F,QAAQ,MAAM,IAAIzN,EAAEZ,EAAEpD,MAAsD,OAAhD4L,EAAEoL,SAAS,WAAWokG,KAAKA,IAAG,EAAGC,GAAGr3G,GAAGg3G,GAAG73G,EAAEC,IAAWwI,EACpb,SAAS0vG,GAAGn4G,EAAEC,EAAEwI,IAAGA,EAAEwkG,IAAI,EAAExkG,IAAKimF,IAAI,EAAE,IAAI7tF,EAAEb,EAAE4T,KAAKiiG,yBAAyB,GAAG,oBAAoBh1G,EAAE,CAAC,IAAIoB,EAAEhC,EAAEpD,MAAM4L,EAAE2kG,QAAQ,WAAmB,OAARyK,GAAG73G,EAAEC,GAAUY,EAAEoB,IAAI,IAAI7B,EAAEJ,EAAEq1F,UAA8O,OAApO,OAAOj1F,GAAG,oBAAoBA,EAAEg4G,oBAAoB3vG,EAAEoL,SAAS,WAAW,oBAAoBhT,IAAI,OAAOw3G,GAAGA,GAAG,IAAIhxG,IAAI,CAAChJ,OAAOg6G,GAAGjzG,IAAI/G,MAAMw5G,GAAG73G,EAAEC,IAAI,IAAIwI,EAAExI,EAAE4iF,MAAMxkF,KAAK+5G,kBAAkBn4G,EAAEpD,MAAM,CAACy7G,eAAe,OAAO7vG,EAAEA,EAAE,OAAcA,EAAE,IAAI8vG,GAAG,oBAAoBC,QAAQA,QAAQnxG,IACxc,SAASoxG,GAAGz4G,GAAG,IAAIC,EAAED,EAAE+oF,IAAI,GAAG,OAAO9oF,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMwI,GAAGiwG,GAAG14G,EAAEyI,QAAQxI,EAAEmsD,QAAQ,KAAK,SAASusD,GAAG34G,EAAEC,GAAG,OAAOA,EAAEyuF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAA8Q,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAjS,KAAK,EAAE,GAAW,IAARzuF,EAAE62F,OAAW,OAAO92F,EAAE,CAAC,IAAIyI,EAAEzI,EAAEywG,cAAc5vG,EAAEb,EAAEg3F,cAA4B/2F,GAAdD,EAAEC,EAAEo1F,WAAcqZ,wBAAwBzuG,EAAEuvG,cAAcvvG,EAAE2T,KAAKnL,EAAE6iG,GAAGrrG,EAAE2T,KAAKnL,GAAG5H,GAAGb,EAAE44G,oCAAoC34G,EAAE,OAAO,KAAK,EAA6C,YAAnC,IAARA,EAAE62F,OAAW4Q,GAAGznG,EAAEo1F,UAAUsD,gBAA0D,MAAMr8F,MAAM0I,EAAE,MAC5e,SAAS6zG,GAAG74G,EAAEC,EAAEwI,GAAG,OAAOA,EAAEimF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhCzuF,EAAE,QAAlBA,EAAEwI,EAAEgkG,aAAuBxsG,EAAEkvG,WAAW,MAAiB,CAACnvG,EAAEC,EAAEA,EAAEqC,KAAK,EAAE,CAAC,GAAG,KAAW,EAANtC,EAAE0uF,KAAO,CAAC,IAAI7tF,EAAEb,EAAE1C,OAAO0C,EAAE6zG,QAAQhzG,IAAIb,EAAEA,EAAEsC,WAAWtC,IAAIC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEwI,EAAEgkG,aAAuBxsG,EAAEkvG,WAAW,MAAiB,CAACnvG,EAAEC,EAAEA,EAAEqC,KAAK,EAAE,CAAC,IAAIL,EAAEjC,EAAEa,EAAEoB,EAAEK,KAAa,KAAO,GAAfL,EAAEA,EAAEysF,OAAe,KAAO,EAAFzsF,KAAO62G,GAAGrwG,EAAEzI,GAAG+4G,GAAGtwG,EAAEzI,IAAIA,EAAEa,QAAQb,IAAIC,GAAG,OAAO,KAAK,EACtR,OADwRD,EAAEyI,EAAE4sF,UAAkB,EAAR5sF,EAAEquF,QAAU,OAAO72F,EAAED,EAAE6uG,qBAAqBhuG,EAAE4H,EAAE+mG,cAAc/mG,EAAEmL,KAAK3T,EAAEwwG,cAAcnF,GAAG7iG,EAAEmL,KAAK3T,EAAEwwG,eAAezwG,EAAE21G,mBAAmB90G,EACxgBZ,EAAE+2F,cAAch3F,EAAE44G,4CAAuD,QAAhB34G,EAAEwI,EAAEgkG,cAAsBgB,GAAGhlG,EAAExI,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEwI,EAAEgkG,aAAwB,CAAQ,GAAPzsG,EAAE,KAAQ,OAAOyI,EAAE+M,MAAM,OAAO/M,EAAE+M,MAAMk5E,KAAK,KAAK,EAA4B,KAAK,EAAE1uF,EAAEyI,EAAE+M,MAAM6/E,UAAUoY,GAAGhlG,EAAExI,EAAED,GAAG,OAAO,KAAK,EAA2E,OAAzEA,EAAEyI,EAAE4sF,eAAU,OAAOp1F,GAAW,EAARwI,EAAEquF,OAASsQ,GAAG3+F,EAAEmL,KAAKnL,EAAEgoG,gBAAgBzwG,EAAEg5G,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GACnX,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAD6U,KAAK,GACzY,YAD4Y,OAAOvwG,EAAEuuF,gBAAgBvuF,EAAEA,EAAEmuF,UAAU,OAAOnuF,IAAIA,EAAEA,EAAEuuF,cAAc,OAAOvuF,IAAIA,EAAEA,EAAEwuF,WAAW,OAAOxuF,GAAG0wF,GAAG1wF,OACzb,MAAMnM,MAAM0I,EAAE,MAC5E,SAASitC,GAAGjyC,EAAEC,GAAG,IAAI,IAAIwI,EAAEzI,IAAI,CAAC,GAAG,IAAIyI,EAAEimF,IAAI,CAAC,IAAI7tF,EAAE4H,EAAE4sF,UAAU,GAAGp1F,EAAY,oBAAVY,EAAEA,EAAE4W,OAA4BI,YAAYhX,EAAEgX,YAAY,UAAU,OAAO,aAAahX,EAAEo4G,QAAQ,WAAW,CAACp4G,EAAE4H,EAAE4sF,UAAU,IAAIpzF,EAAEwG,EAAEgoG,cAAch5F,MAAMxV,OAAE,IAASA,GAAG,OAAOA,GAAGA,EAAEzD,eAAe,WAAWyD,EAAEg3G,QAAQ,KAAKp4G,EAAE4W,MAAMwhG,QAAQhlB,GAAG,UAAUhyF,SAAS,GAAG,IAAIwG,EAAEimF,IAAIjmF,EAAE4sF,UAAU70B,UAAUvgE,EAAE,GAAGwI,EAAEgoG,mBAAmB,IAAI,KAAKhoG,EAAEimF,KAAK,KAAKjmF,EAAEimF,KAAK,OAAOjmF,EAAEuuF,eAAevuF,IAAIzI,IAAI,OAAOyI,EAAE+M,MAAM,CAAC/M,EAAE+M,MAAMqhF,OAAOpuF,EAAEA,EAAEA,EAAE+M,MAAM,SAAS,GAAG/M,IACtfzI,EAAE,MAAM,KAAK,OAAOyI,EAAE0uF,SAAS,CAAC,GAAG,OAAO1uF,EAAEouF,QAAQpuF,EAAEouF,SAAS72F,EAAE,OAAOyI,EAAEA,EAAEouF,OAAOpuF,EAAE0uF,QAAQN,OAAOpuF,EAAEouF,OAAOpuF,EAAEA,EAAE0uF,SACjH,SAAS+hB,GAAGl5G,EAAEC,GAAG,GAAGopG,IAAI,oBAAoBA,GAAG8P,qBAAqB,IAAI9P,GAAG8P,qBAAqB/P,GAAGnpG,GAAG,MAAMG,IAAI,OAAOH,EAAEyuF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB1uF,EAAEC,EAAEwsG,cAAyC,QAAfzsG,EAAEA,EAAEmvG,YAAqB,CAAC,IAAI1mG,EAAEzI,EAAEA,EAAEsC,KAAK,EAAE,CAAC,IAAIzB,EAAE4H,EAAExG,EAAEpB,EAAEgzG,QAAgB,GAARhzG,EAAEA,EAAE6tF,SAAO,IAASzsF,EAAE,GAAG,KAAO,EAAFpB,GAAKi4G,GAAG74G,EAAEwI,OAAO,CAAC5H,EAAEZ,EAAE,IAAIgC,IAAI,MAAM7B,GAAGs4G,GAAG73G,EAAET,IAAIqI,EAAEA,EAAEnG,WAAWmG,IAAIzI,GAAG,MAAM,KAAK,EAAsB,GAApBy4G,GAAGx4G,GAAoB,oBAAjBD,EAAEC,EAAEo1F,WAAmC+jB,qBAAqB,IAAIp5G,EAAEzE,MAAM0E,EAAEwwG,cAAczwG,EAAEmyB,MAAMlyB,EAAE+2F,cAAch3F,EAAEo5G,uBAAuB,MAAMh5G,GAAGs4G,GAAGz4G,EAC/gBG,GAAG,MAAM,KAAK,EAAEq4G,GAAGx4G,GAAG,MAAM,KAAK,EAAE6xC,GAAG9xC,EAAEC,IAAI,SAASo5G,GAAGr5G,GAAGA,EAAE42F,UAAU,KAAK52F,EAAEwV,MAAM,KAAKxV,EAAEgsG,aAAa,KAAKhsG,EAAEqvG,YAAY,KAAKrvG,EAAEmvG,WAAW,KAAKnvG,EAAEywG,cAAc,KAAKzwG,EAAEg3F,cAAc,KAAKh3F,EAAEixG,aAAa,KAAKjxG,EAAE62F,OAAO,KAAK72F,EAAEysG,YAAY,KAAK,SAAS6M,GAAGt5G,GAAG,OAAO,IAAIA,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,KAAK,IAAI1uF,EAAE0uF,IACnS,SAAS6qB,GAAGv5G,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAE62F,OAAO,OAAO52F,GAAG,CAAC,GAAGq5G,GAAGr5G,GAAG,MAAMD,EAAEC,EAAEA,EAAE42F,OAAO,MAAMv6F,MAAM0I,EAAE,MAAO,IAAIyD,EAAExI,EAAgB,OAAdA,EAAEwI,EAAE4sF,UAAiB5sF,EAAEimF,KAAK,KAAK,EAAE,IAAI7tF,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEZ,EAAEA,EAAE04F,cAAc93F,GAAE,EAAG,MAAM,QAAQ,MAAMvE,MAAM0I,EAAE,MAAe,GAARyD,EAAEquF,QAAWxF,GAAGrxF,EAAE,IAAIwI,EAAEquF,QAAQ,IAAI92F,EAAEC,EAAE,IAAIwI,EAAEzI,IAAI,CAAC,KAAK,OAAOyI,EAAE0uF,SAAS,CAAC,GAAG,OAAO1uF,EAAEouF,QAAQyiB,GAAG7wG,EAAEouF,QAAQ,CAACpuF,EAAE,KAAK,MAAMzI,EAAEyI,EAAEA,EAAEouF,OAAiC,IAA1BpuF,EAAE0uF,QAAQN,OAAOpuF,EAAEouF,OAAWpuF,EAAEA,EAAE0uF,QAAQ,IAAI1uF,EAAEimF,KAAK,IAAIjmF,EAAEimF,KAAK,KAAKjmF,EAAEimF,KAAK,CAAC,GAAW,EAARjmF,EAAEquF,MAAQ,SAAS72F,EAAE,GAAG,OAC/ewI,EAAE+M,OAAO,IAAI/M,EAAEimF,IAAI,SAASzuF,EAAOwI,EAAE+M,MAAMqhF,OAAOpuF,EAAEA,EAAEA,EAAE+M,MAAM,KAAa,EAAR/M,EAAEquF,OAAS,CAACruF,EAAEA,EAAE4sF,UAAU,MAAMr1F,GAAGa,EAAE24G,GAAGx5G,EAAEyI,EAAExI,GAAGw5G,GAAGz5G,EAAEyI,EAAExI,GACzH,SAASu5G,GAAGx5G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAE0uF,IAAIzsF,EAAE,IAAIpB,GAAG,IAAIA,EAAE,GAAGoB,EAAEjC,EAAEiC,EAAEjC,EAAEq1F,UAAUr1F,EAAEq1F,UAAUl6F,SAAS8E,EAAE,IAAIwI,EAAE+oF,SAAS/oF,EAAEoK,WAAW4C,aAAazV,EAAEC,GAAGwI,EAAEgN,aAAazV,EAAEC,IAAI,IAAIwI,EAAE+oF,UAAUvxF,EAAEwI,EAAEoK,YAAa4C,aAAazV,EAAEyI,IAAKxI,EAAEwI,GAAI8M,YAAYvV,GAA4B,QAAxByI,EAAEA,EAAEixG,2BAA8B,IAASjxG,GAAG,OAAOxI,EAAEm3G,UAAUn3G,EAAEm3G,QAAQnQ,UAAU,GAAG,IAAIpmG,GAAc,QAAVb,EAAEA,EAAEwV,OAAgB,IAAIgkG,GAAGx5G,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAEm3F,QAAQ,OAAOn3F,GAAGw5G,GAAGx5G,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAEm3F,QAC9Y,SAASsiB,GAAGz5G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAE0uF,IAAIzsF,EAAE,IAAIpB,GAAG,IAAIA,EAAE,GAAGoB,EAAEjC,EAAEiC,EAAEjC,EAAEq1F,UAAUr1F,EAAEq1F,UAAUl6F,SAAS8E,EAAEwI,EAAEgN,aAAazV,EAAEC,GAAGwI,EAAE8M,YAAYvV,QAAQ,GAAG,IAAIa,GAAc,QAAVb,EAAEA,EAAEwV,OAAgB,IAAIikG,GAAGz5G,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAEm3F,QAAQ,OAAOn3F,GAAGy5G,GAAGz5G,EAAEC,EAAEwI,GAAGzI,EAAEA,EAAEm3F,QACrN,SAASrlD,GAAG9xC,EAAEC,GAAG,IAAI,IAAagC,EAAE7B,EAAXqI,EAAExI,EAAEY,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAE4H,EAAEouF,OAAO72F,EAAE,OAAO,CAAC,GAAG,OAAOa,EAAE,MAAMvE,MAAM0I,EAAE,MAAoB,OAAd/C,EAAEpB,EAAEw0F,UAAiBx0F,EAAE6tF,KAAK,KAAK,EAAEtuF,GAAE,EAAG,MAAMJ,EAAE,KAAK,EAAiC,KAAK,EAAEiC,EAAEA,EAAE02F,cAAcv4F,GAAE,EAAG,MAAMJ,EAAEa,EAAEA,EAAEg2F,OAAOh2F,GAAE,EAAG,GAAG,IAAI4H,EAAEimF,KAAK,IAAIjmF,EAAEimF,IAAI,CAAC1uF,EAAE,IAAI,IAAI8H,EAAE9H,EAAEqrB,EAAE5iB,EAAEsD,EAAEsf,IAAI,GAAG6tF,GAAGpxG,EAAEiE,GAAG,OAAOA,EAAEyJ,OAAO,IAAIzJ,EAAE2iF,IAAI3iF,EAAEyJ,MAAMqhF,OAAO9qF,EAAEA,EAAEA,EAAEyJ,UAAU,CAAC,GAAGzJ,IAAIsf,EAAE,MAAMrrB,EAAE,KAAK,OAAO+L,EAAEorF,SAAS,CAAC,GAAG,OAAOprF,EAAE8qF,QAAQ9qF,EAAE8qF,SAASxrE,EAAE,MAAMrrB,EAAE+L,EAAEA,EAAE8qF,OAAO9qF,EAAEorF,QAAQN,OAAO9qF,EAAE8qF,OAAO9qF,EAAEA,EAAEorF,QAAQ/2F,GAAG0H,EAAE7F,EAAEopB,EAAE5iB,EAAE4sF,UACrf,IAAIvtF,EAAE0pF,SAAS1pF,EAAE+K,WAAW4H,YAAY4Q,GAAGvjB,EAAE2S,YAAY4Q,IAAIppB,EAAEwY,YAAYhS,EAAE4sF,gBAAgB,GAAG,IAAI5sF,EAAEimF,KAAK,GAAG,OAAOjmF,EAAE+M,MAAM,CAACvT,EAAEwG,EAAE4sF,UAAUsD,cAAcv4F,GAAE,EAAGqI,EAAE+M,MAAMqhF,OAAOpuF,EAAEA,EAAEA,EAAE+M,MAAM,eAAe,GAAG0jG,GAAGl5G,EAAEyI,GAAG,OAAOA,EAAE+M,MAAM,CAAC/M,EAAE+M,MAAMqhF,OAAOpuF,EAAEA,EAAEA,EAAE+M,MAAM,SAAS,GAAG/M,IAAIxI,EAAE,MAAM,KAAK,OAAOwI,EAAE0uF,SAAS,CAAC,GAAG,OAAO1uF,EAAEouF,QAAQpuF,EAAEouF,SAAS52F,EAAE,OAAkB,KAAXwI,EAAEA,EAAEouF,QAAanI,MAAM7tF,GAAE,GAAI4H,EAAE0uF,QAAQN,OAAOpuF,EAAEouF,OAAOpuF,EAAEA,EAAE0uF,SAClZ,SAASwiB,GAAG35G,EAAEC,GAAG,OAAOA,EAAEyuF,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIjmF,EAAExI,EAAEwsG,YAAyC,GAAG,QAAhChkG,EAAE,OAAOA,EAAEA,EAAE0mG,WAAW,MAAiB,CAAC,IAAItuG,EAAE4H,EAAEA,EAAEnG,KAAK,GAAG,KAAW,EAANzB,EAAE6tF,OAAS1uF,EAAEa,EAAEgzG,QAAQhzG,EAAEgzG,aAAQ,OAAO,IAAS7zG,GAAGA,KAAKa,EAAEA,EAAEyB,WAAWzB,IAAI4H,GAAG,OAAO,KAAK,EAErJ,KAAK,GAAoG,KAAK,GAAG,OAF6C,KAAK,EAAgB,GAAG,OAAjBA,EAAExI,EAAEo1F,WAAqB,CAACx0F,EAAEZ,EAAEwwG,cAAc,IAAIxuG,EAAE,OAAOjC,EAAEA,EAAEywG,cAAc5vG,EAAEb,EAAEC,EAAE2T,KAAK,IAAIxT,EAAEH,EAAEwsG,YAA+B,GAAnBxsG,EAAEwsG,YAAY,KAAQ,OAAOrsG,EAAE,CAAgF,IAA/EqI,EAAEu/F,IAAInnG,EAAE,UAAUb,GAAG,UAAUa,EAAE+S,MAAM,MAAM/S,EAAEY,MAAM0uF,GAAG1nF,EAAE5H,GAAGi0F,GAAG90F,EAAEiC,GAAGhC,EAAE60F,GAAG90F,EAAEa,GAAOoB,EAAE,EAAEA,EAAE7B,EAAEzF,OAAOsH,GAClf,EAAE,CAAC,IAAI6F,EAAE1H,EAAE6B,GAAGopB,EAAEjrB,EAAE6B,EAAE,GAAG,UAAU6F,EAAEosF,GAAGzrF,EAAE4iB,GAAG,4BAA4BvjB,EAAEqpF,GAAG1oF,EAAE4iB,GAAG,aAAavjB,EAAEwpF,GAAG7oF,EAAE4iB,GAAGyhE,EAAGrkF,EAAEX,EAAEujB,EAAEprB,GAAG,OAAOD,GAAG,IAAK,QAAQ0wC,GAAGjoC,EAAE5H,GAAG,MAAM,IAAK,WAAWiwF,GAAGroF,EAAE5H,GAAG,MAAM,IAAK,SAASb,EAAEyI,EAAEqnF,cAAcmnB,YAAYxuG,EAAEqnF,cAAcmnB,cAAcp2G,EAAEq2G,SAAmB,OAAV92G,EAAES,EAAEhE,OAAc0zF,GAAG9nF,IAAI5H,EAAEq2G,SAAS92G,GAAE,GAAIJ,MAAMa,EAAEq2G,WAAW,MAAMr2G,EAAEgvF,aAAaU,GAAG9nF,IAAI5H,EAAEq2G,SAASr2G,EAAEgvF,cAAa,GAAIU,GAAG9nF,IAAI5H,EAAEq2G,SAASr2G,EAAEq2G,SAAS,GAAG,IAAG,MAAO,OAAO,KAAK,EAAE,GAAG,OAAOj3G,EAAEo1F,UAAU,MAAM/4F,MAAM0I,EAAE,MAC/c,YADqd/E,EAAEo1F,UAAU70B,UACjfvgE,EAAEwwG,eAAqB,KAAK,EAA8D,aAA5DhoG,EAAExI,EAAEo1F,WAAYqD,UAAUjwF,EAAEiwF,SAAQ,EAAGS,GAAG1wF,EAAEkwF,iBAAsC,KAAK,GAAyD,OAAtD,OAAO14F,EAAE+2F,gBAAgB4iB,GAAGrwB,KAAIt3C,GAAGhyC,EAAEuV,OAAM,SAAKqkG,GAAG55G,GAAU,KAAK,GAAS,YAAN45G,GAAG55G,GAAyB,KAAK,GAAG,KAAK,GAAgC,YAA7BgyC,GAAGhyC,EAAE,OAAOA,EAAE+2F,eAAsB,MAAM16F,MAAM0I,EAAE,MAAO,SAAS60G,GAAG75G,GAAG,IAAIC,EAAED,EAAEysG,YAAY,GAAG,OAAOxsG,EAAE,CAACD,EAAEysG,YAAY,KAAK,IAAIhkG,EAAEzI,EAAEq1F,UAAU,OAAO5sF,IAAIA,EAAEzI,EAAEq1F,UAAU,IAAIkjB,IAAIt4G,EAAEpF,SAAQ,SAASoF,GAAG,IAAIY,EAAEqxC,GAAG9rC,KAAK,KAAKpG,EAAEC,GAAGwI,EAAEhC,IAAIxG,KAAKwI,EAAErD,IAAInF,GAAGA,EAAE07C,KAAK96C,EAAEA,QACne,SAASi5G,GAAG95G,EAAEC,GAAG,OAAO,OAAOD,IAAsB,QAAlBA,EAAEA,EAAEg3F,gBAAwB,OAAOh3F,EAAEi3F,cAA+B,QAAlBh3F,EAAEA,EAAE+2F,gBAAwB,OAAO/2F,EAAEg3F,YAAe,IAAI8iB,GAAGv1G,KAAKkG,KAAKsvG,GAAG9sB,EAAGtD,uBAAuB5kD,GAAGkoD,EAAGpD,kBAAkB9xD,GAAE,EAAE0+C,GAAE,KAAKr+C,GAAE,KAAK4D,GAAE,EAAEg+E,GAAG,EAAEt7D,GAAGypD,GAAG,GAAGr6F,GAAE,EAAEyvD,GAAG,KAAK1sB,GAAG,EAAE08D,GAAG,EAAE8J,GAAG,EAAE4C,GAAG,EAAE12B,GAAG,KAAKo2B,GAAG,EAAEpC,GAAGrmF,IAAS,SAASgpF,KAAK3C,GAAGjuB,KAAI,IAAI,IA8BsF6wB,GA9BlF7jC,GAAE,KAAK0hC,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKpzE,IAAG,EAAGC,GAAG,KAAKm1E,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAASjN,KAAK,OAAO,KAAO,GAAF91E,IAAMuxD,MAAK,IAAIoxB,GAAGA,GAAGA,GAAGpxB,KAC3e,SAASwkB,GAAG/tG,GAAY,GAAG,KAAO,GAAnBA,EAAEA,EAAEoN,OAAkB,OAAO,EAAE,GAAG,KAAO,EAAFpN,GAAK,OAAO,KAAK+qG,KAAK,EAAE,EAAkB,GAAhB,IAAI6P,KAAKA,GAAG9pE,IAAO,IAAIu6D,GAAG14F,WAAW,CAAC,IAAIkoG,KAAKA,GAAG,OAAOr3B,GAAGA,GAAGkX,aAAa,GAAG16F,EAAE46G,GAAG,IAAI36G,EAAE,SAAS46G,GAAsD,OAA7C,KAAN56G,IAAIA,KAA8B,KAAPA,GAAbD,EAAE,SAASA,IAAOA,KAAUC,EAAE,OAAcA,EAA4D,OAA1DD,EAAE+qG,KAAK,KAAO,EAAF/yE,KAAM,KAAKh4B,EAAEA,EAAEk7F,GAAG,GAAG0f,IAAa56G,EAAEk7F,GAAVl7F,EAtK3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,GAsKuJg7G,CAAGh7G,GAAU46G,IAAY56G,EACnT,SAASguG,GAAGhuG,EAAEC,EAAEwI,GAAG,GAAG,GAAGgyG,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKp+G,MAAM0I,EAAE,MAAgB,GAAG,QAAbhF,EAAEi7G,GAAGj7G,EAAEC,IAAe,OAAO,KAAKo7F,GAAGr7F,EAAEC,EAAEwI,GAAGzI,IAAI02E,KAAI4gC,IAAIr3G,EAAE,IAAI8N,IAAGwpG,GAAGv3G,EAAEi8B,KAAI,IAAIp7B,EAAEkqG,KAAK,IAAI9qG,EAAE,KAAO,EAAF+3B,KAAM,KAAO,GAAFA,IAAMkjF,GAAGl7G,IAAIm7G,GAAGn7G,EAAEyI,GAAG,IAAIuvB,KAAImiF,KAAKhP,QAAQ,KAAO,EAAFnzE,KAAM,KAAKn3B,GAAG,KAAKA,IAAI,OAAO25G,GAAGA,GAAG,IAAInzG,IAAI,CAACrH,IAAIw6G,GAAGp1G,IAAIpF,IAAIm7G,GAAGn7G,EAAEyI,IAAI+6E,GAAGxjF,EAAE,SAASi7G,GAAGj7G,EAAEC,GAAGD,EAAEksG,OAAOjsG,EAAE,IAAIwI,EAAEzI,EAAE42F,UAAqC,IAA3B,OAAOnuF,IAAIA,EAAEyjG,OAAOjsG,GAAGwI,EAAEzI,EAAMA,EAAEA,EAAE62F,OAAO,OAAO72F,GAAGA,EAAE8rG,YAAY7rG,EAAgB,QAAdwI,EAAEzI,EAAE42F,aAAqBnuF,EAAEqjG,YAAY7rG,GAAGwI,EAAEzI,EAAEA,EAAEA,EAAE62F,OAAO,OAAO,IAAIpuF,EAAEimF,IAAIjmF,EAAE4sF,UAAU,KACze,SAAS8lB,GAAGn7G,EAAEC,GAAG,IAAI,IAAIwI,EAAEzI,EAAEo7G,aAAav6G,EAAEb,EAAE46F,eAAe34F,EAAEjC,EAAE66F,YAAYz6F,EAAEJ,EAAEq7G,gBAAgBvzG,EAAE9H,EAAE06F,aAAa,EAAE5yF,GAAG,CAAC,IAAIujB,EAAE,GAAGyvE,GAAGhzF,GAAGiE,EAAE,GAAGsf,EAAEd,EAAEnqB,EAAEirB,GAAG,IAAI,IAAId,GAAG,GAAG,KAAKxe,EAAElL,IAAI,KAAKkL,EAAE9J,GAAG,CAACsoB,EAAEtqB,EAAEu6F,GAAGzuF,GAAG,IAAI1M,EAAE0C,GAAE3B,EAAEirB,GAAG,IAAIhsB,EAAEkrB,EAAE,IAAI,GAAGlrB,EAAEkrB,EAAE,KAAK,QAAQA,GAAGtqB,IAAID,EAAE26F,cAAc5uF,GAAGjE,IAAIiE,EAAwB,GAAtBlL,EAAE45F,GAAGz6F,EAAEA,IAAI02E,GAAEz6C,GAAE,GAAGh8B,EAAE8B,GAAK,IAAIlB,EAAE,OAAO4H,IAAIA,IAAIgiG,IAAIjB,GAAG/gG,GAAGzI,EAAEo7G,aAAa,KAAKp7G,EAAEs7G,iBAAiB,OAAO,CAAC,GAAG,OAAO7yG,EAAE,CAAC,GAAGzI,EAAEs7G,mBAAmBr7G,EAAE,OAAOwI,IAAIgiG,IAAIjB,GAAG/gG,GAAG,KAAKxI,GAAGwI,EAAEyyG,GAAG90G,KAAK,KAAKpG,GAAG,OAAO2qG,IAAIA,GAAG,CAACliG,GAAGmiG,GAAGrB,GAAGU,GAAGmB,KAAKT,GAAGtwG,KAAKoO,GACrfA,EAAEgiG,IAAI,KAAKxqG,EAAEwI,EAAEyiG,GAAG,GAAGgQ,GAAG90G,KAAK,KAAKpG,KAAKyI,EAzK+F,SAAYzI,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAM1D,MAAM0I,EAAE,IAAIhF,KAyKxTu7G,CAAGt7G,GAAGwI,EAAEyiG,GAAGziG,EAAE+yG,GAAGp1G,KAAK,KAAKpG,KAAKA,EAAEs7G,iBAAiBr7G,EAAED,EAAEo7G,aAAa3yG,GAC5G,SAAS+yG,GAAGx7G,GAAiB,GAAd26G,IAAI,EAAEE,GAAGD,GAAG,EAAK,KAAO,GAAF5iF,IAAM,MAAM17B,MAAM0I,EAAE,MAAM,IAAI/E,EAAED,EAAEo7G,aAAa,GAAGK,MAAMz7G,EAAEo7G,eAAen7G,EAAE,OAAO,KAAK,IAAIwI,EAAEgyF,GAAGz6F,EAAEA,IAAI02E,GAAEz6C,GAAE,GAAG,GAAG,IAAIxzB,EAAE,OAAO,KAAK,IAAI5H,EAAE4H,EAAMxG,EAAE+1B,GAAEA,IAAG,GAAG,IAAI53B,EAAEs7G,KAAkC,IAA1BhlC,KAAI12E,GAAGi8B,KAAIp7B,IAAEs5G,KAAKwB,GAAG37G,EAAEa,MAAM,IAAI+6G,KAAK,MAAM,MAAMvwF,GAAGwwF,GAAG77G,EAAEqrB,GAAgE,GAApDsgF,KAAKqO,GAAG5tD,QAAQhsD,EAAE43B,GAAE/1B,EAAE,OAAOo2B,GAAEx3B,EAAE,GAAG61E,GAAE,KAAKz6C,GAAE,EAAEp7B,EAAEkN,IAAM,KAAK+iC,GAAGwmE,IAAIqE,GAAG37G,EAAE,QAAQ,GAAG,IAAIa,EAAE,CAAyF,GAAxF,IAAIA,IAAIm3B,IAAG,GAAGh4B,EAAE04F,UAAU14F,EAAE04F,SAAQ,EAAGgP,GAAG1nG,EAAE24F,gBAAwB,KAARlwF,EAAEwyF,GAAGj7F,MAAWa,EAAEi7G,GAAG97G,EAAEyI,KAAQ,IAAI5H,EAAE,MAAMZ,EAAEu9D,GAAGm+C,GAAG37G,EAAE,GAAGu3G,GAAGv3G,EAAEyI,GAAG0yG,GAAGn7G,EAAEupF,MAAKtpF,EAC3c,OAD6cD,EAAE+7G,aACrf/7G,EAAEosD,QAAQwqC,UAAU52F,EAAEg8G,cAAcvzG,EAAS5H,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMvE,MAAM0I,EAAE,MAAM,KAAK,EACI,KAAK,EAAEi3G,GAAGj8G,GAAG,MADH,KAAK,EAAU,GAARu3G,GAAGv3G,EAAEyI,IAAS,SAAFA,KAAcA,GAAiB,IAAb5H,EAAE+4G,GAAG,IAAIrwB,MAAU,CAAC,GAAG,IAAIkR,GAAGz6F,EAAE,GAAG,MAAyB,KAAnBiC,EAAEjC,EAAE46F,gBAAqBnyF,KAAKA,EAAE,CAACqlG,KAAK9tG,EAAE66F,aAAa76F,EAAE46F,eAAe34F,EAAE,MAAMjC,EAAEk8G,cAAc1U,GAAGyU,GAAG71G,KAAK,KAAKpG,GAAGa,GAAG,MAAMo7G,GAAGj8G,GAAG,MAAM,KAAK,EAAU,GAARu3G,GAAGv3G,EAAEyI,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAf5H,EAAEb,EAAEs7F,WAAer5F,GAAG,EAAE,EAAEwG,GAAG,CAAC,IAAIX,EAAE,GAAGgzF,GAAGryF,GAAGrI,EAAE,GAAG0H,GAAEA,EAAEjH,EAAEiH,IAAK7F,IAAIA,EAAE6F,GAAGW,IAAIrI,EACjZ,GADmZqI,EAAExG,EAClZ,IAD4ZwG,GAAG,KAAXA,EAAE8gF,KAAI9gF,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAKsxG,GAAGtxG,EAAE,OAAOA,GAAU,CAACzI,EAAEk8G,cAAc1U,GAAGyU,GAAG71G,KAAK,KAAKpG,GAAGyI,GAAG,MAAMwzG,GAAGj8G,GAAG,MAAyB,QAAQ,MAAM1D,MAAM0I,EAAE,OAAkB,OAAVm2G,GAAGn7G,EAAEupF,MAAYvpF,EAAEo7G,eAAen7G,EAAEu7G,GAAGp1G,KAAK,KAAKpG,GAAG,KAAK,SAASu3G,GAAGv3G,EAAEC,GAAuD,IAApDA,IAAIi6G,GAAGj6G,IAAIq3G,GAAGt3G,EAAE46F,gBAAgB36F,EAAED,EAAE66F,cAAc56F,EAAMD,EAAEA,EAAEq7G,gBAAgB,EAAEp7G,GAAG,CAAC,IAAIwI,EAAE,GAAGqyF,GAAG76F,GAAGY,EAAE,GAAG4H,EAAEzI,EAAEyI,IAAI,EAAExI,IAAIY,GAC1U,SAASq6G,GAAGl7G,GAAG,GAAG,KAAO,GAAFg4B,IAAM,MAAM17B,MAAM0I,EAAE,MAAW,GAALy2G,KAAQz7G,IAAI02E,IAAG,KAAK12E,EAAE26F,aAAa1+D,IAAG,CAAC,IAAIh8B,EAAEg8B,GAAMxzB,EAAEqzG,GAAG97G,EAAEC,GAAG,KAAK6wC,GAAGwmE,MAAgB7uG,EAAEqzG,GAAG97G,EAAfC,EAAEw6F,GAAGz6F,EAAEC,UAA6BwI,EAAEqzG,GAAG97G,EAAfC,EAAEw6F,GAAGz6F,EAAE,IAAgH,GAAnG,IAAIA,EAAE0uF,KAAK,IAAIjmF,IAAIuvB,IAAG,GAAGh4B,EAAE04F,UAAU14F,EAAE04F,SAAQ,EAAGgP,GAAG1nG,EAAE24F,gBAAwB,KAAR14F,EAAEg7F,GAAGj7F,MAAWyI,EAAEqzG,GAAG97G,EAAEC,KAAQ,IAAIwI,EAAE,MAAMA,EAAE+0D,GAAGm+C,GAAG37G,EAAE,GAAGu3G,GAAGv3G,EAAEC,GAAGk7G,GAAGn7G,EAAEupF,MAAK9gF,EAAuE,OAArEzI,EAAE+7G,aAAa/7G,EAAEosD,QAAQwqC,UAAU52F,EAAEg8G,cAAc/7G,EAAEg8G,GAAGj8G,GAAGm7G,GAAGn7G,EAAEupF,MAAY,KACnR,SAAS4yB,GAAGn8G,EAAEC,GAAG,IAAIwI,EAAEuvB,GAAEA,IAAG,EAAE,IAAI,OAAOh4B,EAAEC,GAAb,QAA4B,KAAJ+3B,GAAEvvB,KAAU0xG,KAAKhP,OAAO,SAASiR,GAAGp8G,EAAEC,GAAG,IAAIwI,EAAEuvB,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAOh4B,EAAEC,GAAb,QAA4B,KAAJ+3B,GAAEvvB,KAAU0xG,KAAKhP,OAAO,SAASoK,GAAGv1G,EAAEC,GAAGm3C,GAAEuH,GAAGs7D,IAAIA,IAAIh6G,EAAE6wC,IAAI7wC,EAAE,SAASw3G,KAAKwC,GAAGt7D,GAAGyN,QAAQkkB,GAAE3xB,IAC5V,SAASg9D,GAAG37G,EAAEC,GAAGD,EAAE+7G,aAAa,KAAK/7G,EAAEg8G,cAAc,EAAE,IAAIvzG,EAAEzI,EAAEk8G,cAAiD,IAAlC,IAAIzzG,IAAIzI,EAAEk8G,eAAe,EAAEzU,GAAGh/F,IAAO,OAAO4vB,GAAE,IAAI5vB,EAAE4vB,GAAEw+D,OAAO,OAAOpuF,GAAG,CAAC,IAAI5H,EAAE4H,EAAE,OAAO5H,EAAE6tF,KAAK,KAAK,EAA6B,QAA3B7tF,EAAEA,EAAE+S,KAAKg1F,yBAA4B,IAAS/nG,GAAGgoG,KAAK,MAAM,KAAK,EAAEyH,KAAKhgC,GAAEp0C,IAAGo0C,GAAEjX,IAAGk4C,KAAK,MAAM,KAAK,EAAEppE,GAAGtnC,GAAG,MAAM,KAAK,EAAEyvG,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGhgC,GAAEh+B,IAAG,MAAM,KAAK,GAAGs5D,GAAG/qG,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG42G,KAAKhvG,EAAEA,EAAEouF,OAAOngB,GAAE12E,EAAEq4B,GAAEi3E,GAAGtvG,EAAEosD,QAAQ,MAAMnwB,GAAEg+E,GAAGnpE,GAAG7wC,EAAE8N,GAAE,EAAEyvD,GAAG,KAAK08C,GAAG5C,GAAG9J,GAAG,EACvc,SAASqO,GAAG77G,EAAEC,GAAG,OAAE,CAAC,IAAIwI,EAAE4vB,GAAE,IAAuB,GAAnBszE,KAAK8F,GAAGrlD,QAAQgmD,GAAMR,GAAG,CAAC,IAAI,IAAI/wG,EAAEmN,GAAEgpF,cAAc,OAAOn2F,GAAG,CAAC,IAAIoB,EAAEpB,EAAE0xG,MAAM,OAAOtwG,IAAIA,EAAE6qG,QAAQ,MAAMjsG,EAAEA,EAAEyB,KAAKsvG,IAAG,EAAyC,GAAtCD,GAAG,EAAE19F,GAAEmoB,GAAEpuB,GAAE,KAAK6jG,IAAG,EAAG7sE,GAAGonB,QAAQ,KAAQ,OAAO3jD,GAAG,OAAOA,EAAEouF,OAAO,CAAC9oF,GAAE,EAAEyvD,GAAGv9D,EAAEo4B,GAAE,KAAK,MAAMr4B,EAAE,CAAC,IAAII,EAAEJ,EAAE8H,EAAEW,EAAEouF,OAAOxrE,EAAE5iB,EAAEsD,EAAE9L,EAAoD,GAAlDA,EAAEg8B,GAAE5Q,EAAEyrE,OAAO,KAAKzrE,EAAEgkF,YAAYhkF,EAAE8jF,WAAW,KAAQ,OAAOpjG,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE4vC,KAAK,CAAC,IAAIpxB,EAAExe,EAAE,GAAG,KAAY,EAAPsf,EAAEje,MAAQ,CAAC,IAAI/N,EAAEgsB,EAAEurE,UAAUv3F,GAAGgsB,EAAEohF,YAAYptG,EAAEotG,YAAYphF,EAAE2rE,cAAc33F,EAAE23F,cAAc3rE,EAAE6gF,MAAM7sG,EAAE6sG,QACpf7gF,EAAEohF,YAAY,KAAKphF,EAAE2rE,cAAc,MAAM,IAAIlzD,EAAE,KAAe,EAAVwO,GAAE8Z,SAAWlvD,EAAE4K,EAAE,EAAE,CAAC,IAAIk8B,EAAE,GAAGA,EAAE,KAAK9mC,EAAEwxF,IAAI,CAAC,IAAIjuF,EAAEvD,EAAE85F,cAAc,GAAG,OAAOv2F,EAAEujC,EAAE,OAAOvjC,EAAEw2F,eAAqB,CAAC,IAAIx+D,EAAEv7B,EAAEuzG,cAAczsE,OAAE,IAASvL,EAAE09E,YAAY,IAAK19E,EAAE29E,6BAA8BtyE,IAAS,GAAGE,EAAE,CAAC,IAAIh4B,EAAE9O,EAAEuvG,YAAY,GAAG,OAAOzgG,EAAE,CAAC,IAAI88B,EAAE,IAAIzhC,IAAIyhC,EAAE1jC,IAAImlB,GAAGrtB,EAAEuvG,YAAY3jE,OAAO98B,EAAE5G,IAAImlB,GAAG,GAAG,KAAY,EAAPrtB,EAAEkQ,MAAQ,CAA2C,GAA1ClQ,EAAE45F,OAAO,GAAGzrE,EAAEyrE,OAAO,MAAMzrE,EAAEyrE,QAAQ,KAAQ,IAAIzrE,EAAEqjE,IAAI,GAAG,OAAOrjE,EAAEurE,UAAUvrE,EAAEqjE,IAAI,OAAO,CAAC,IAAIriF,EAAE4gG,IAAI,EAAE,GAAG5gG,EAAEqiF,IAAI,EAAE2e,GAAGhiF,EAAEhf,GAAGgf,EAAE6gF,OAAO,EAAE,MAAMlsG,EAAE+L,OAC5f,EAAOsf,EAAEprB,EAAE,IAAIuuB,EAAEpuB,EAAEi8G,UAA+G,GAArG,OAAO7tF,GAAGA,EAAEpuB,EAAEi8G,UAAU,IAAIvE,GAAG/rG,EAAE,IAAI1E,IAAImnB,EAAE9nB,IAAI6jB,EAAExe,SAAgB,KAAXA,EAAEyiB,EAAE3oB,IAAI0kB,MAAgBxe,EAAE,IAAI1E,IAAImnB,EAAE9nB,IAAI6jB,EAAExe,KAASA,EAAEtF,IAAI4kB,GAAG,CAACtf,EAAE3G,IAAIimB,GAAG,IAAIlnB,EAAEm4G,GAAGl2G,KAAK,KAAKhG,EAAEmqB,EAAEc,GAAGd,EAAEoxB,KAAKx3C,EAAEA,GAAGjH,EAAE45F,OAAO,KAAK55F,EAAEgvG,MAAMjsG,EAAE,MAAMD,EAAE9C,EAAEA,EAAE25F,aAAa,OAAO35F,GAAG6O,EAAEzP,OAAOsyF,EAAGvjE,EAAEzX,OAAO,qBAAqB,yLAAyL,IAAI7F,KAAIA,GAAE,GAAGhC,EAAE4rG,GAAG5rG,EAAEsf,GAAGnuB,EACpf4K,EAAE,EAAE,CAAC,OAAO5K,EAAEwxF,KAAK,KAAK,EAAEtuF,EAAE2L,EAAE7O,EAAE45F,OAAO,KAAK72F,IAAIA,EAAE/C,EAAEgvG,OAAOjsG,EAAkBqtG,GAAGpwG,EAAb86G,GAAG96G,EAAEkD,EAAEH,IAAW,MAAMD,EAAE,KAAK,EAAEI,EAAE2L,EAAE,IAAIy9E,EAAEtsF,EAAE0W,KAAKq0B,EAAE/qC,EAAEm4F,UAAU,GAAG,KAAa,GAARn4F,EAAE45F,SAAY,oBAAoBtN,EAAEqsB,0BAA0B,OAAO5tE,GAAG,oBAAoBA,EAAEmwE,oBAAoB,OAAOC,KAAKA,GAAG5xG,IAAIwhC,KAAK,CAAC/qC,EAAE45F,OAAO,KAAK72F,IAAIA,EAAE/C,EAAEgvG,OAAOjsG,EAAkBqtG,GAAGpwG,EAAbi7G,GAAGj7G,EAAEkD,EAAEH,IAAW,MAAMD,GAAG9C,EAAEA,EAAE25F,aAAa,OAAO35F,GAAGq/G,GAAG9zG,GAAG,MAAM+zG,GAAIv8G,EAAEu8G,EAAGnkF,KAAI5vB,GAAG,OAAOA,IAAI4vB,GAAE5vB,EAAEA,EAAEouF,QAAQ,SAAS,OAC/a,SAAS6kB,KAAK,IAAI17G,EAAEg6G,GAAG5tD,QAAsB,OAAd4tD,GAAG5tD,QAAQgmD,GAAU,OAAOpyG,EAAEoyG,GAAGpyG,EAAE,SAAS87G,GAAG97G,EAAEC,GAAG,IAAIwI,EAAEuvB,GAAEA,IAAG,GAAG,IAAIn3B,EAAE66G,KAA2B,IAAtBhlC,KAAI12E,GAAGi8B,KAAIh8B,GAAG07G,GAAG37G,EAAEC,KAAM,IAAI6I,KAAK,MAAM,MAAM7G,GAAG45G,GAAG77G,EAAEiC,GAAkC,GAAtB0pG,KAAK3zE,GAAEvvB,EAAEuxG,GAAG5tD,QAAQvrD,EAAK,OAAOw3B,GAAE,MAAM/7B,MAAM0I,EAAE,MAAiB,OAAX0xE,GAAE,KAAKz6C,GAAE,EAASluB,GAAE,SAASjF,KAAK,KAAK,OAAOuvB,IAAGrvB,GAAGqvB,IAAG,SAASujF,KAAK,KAAK,OAAOvjF,KAAIqxE,MAAM1gG,GAAGqvB,IAAG,SAASrvB,GAAGhJ,GAAG,IAAIC,EAAEm6G,GAAGp6G,EAAE42F,UAAU52F,EAAEi6G,IAAIj6G,EAAEywG,cAAczwG,EAAEixG,aAAa,OAAOhxG,EAAEs8G,GAAGv8G,GAAGq4B,GAAEp4B,EAAE+kC,GAAGonB,QAAQ,KAC5a,SAASmwD,GAAGv8G,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIyI,EAAExI,EAAE22F,UAAqB,GAAX52F,EAAEC,EAAE42F,OAAU,KAAa,KAAR52F,EAAE62F,OAAY,CAAc,GAAG,QAAhBruF,EAAEuuG,GAAGvuG,EAAExI,EAAEg6G,KAAqB,YAAJ5hF,GAAE5vB,GAAa,GAAG,MAAPA,EAAExI,GAAYyuF,KAAK,KAAKjmF,EAAEimF,KAAK,OAAOjmF,EAAEuuF,eAAe,KAAQ,WAAHijB,KAAgB,KAAY,EAAPxxG,EAAE2E,MAAQ,CAAC,IAAI,IAAIvM,EAAE,EAAEoB,EAAEwG,EAAE+M,MAAM,OAAOvT,GAAGpB,GAAGoB,EAAEiqG,MAAMjqG,EAAE6pG,WAAW7pG,EAAEA,EAAEk1F,QAAQ1uF,EAAEqjG,WAAWjrG,EAAE,OAAOb,GAAG,KAAa,KAARA,EAAE82F,SAAc,OAAO92F,EAAEqvG,cAAcrvG,EAAEqvG,YAAYpvG,EAAEovG,aAAa,OAAOpvG,EAAEkvG,aAAa,OAAOnvG,EAAEmvG,aAAanvG,EAAEmvG,WAAWC,WAAWnvG,EAAEovG,aAAarvG,EAAEmvG,WAAWlvG,EAAEkvG,YAAY,EAAElvG,EAAE62F,QAAQ,OAC/e92F,EAAEmvG,WAAWnvG,EAAEmvG,WAAWC,WAAWnvG,EAAED,EAAEqvG,YAAYpvG,EAAED,EAAEmvG,WAAWlvG,QAAQ,CAAS,GAAG,QAAXwI,EAAEivG,GAAGz3G,IAAkC,OAAlBwI,EAAEquF,OAAO,UAAKz+D,GAAE5vB,GAAS,OAAOzI,IAAIA,EAAEqvG,YAAYrvG,EAAEmvG,WAAW,KAAKnvG,EAAE82F,OAAO,MAAkB,GAAG,QAAf72F,EAAEA,EAAEk3F,SAAyB,YAAJ9+D,GAAEp4B,GAASo4B,GAAEp4B,EAAED,QAAQ,OAAOC,GAAG,IAAI8N,KAAIA,GAAE,GAAG,SAASkuG,GAAGj8G,GAAG,IAAIC,EAAE8qG,KAA8B,OAAzBE,GAAG,GAAGwR,GAAGr2G,KAAK,KAAKpG,EAAEC,IAAW,KACtT,SAASw8G,GAAGz8G,EAAEC,GAAG,GAAGw7G,WAAW,OAAOv2E,IAAI,GAAG,KAAO,GAAFlN,IAAM,MAAM17B,MAAM0I,EAAE,MAAM,IAAIyD,EAAEzI,EAAE+7G,aAAa,GAAG,OAAOtzG,EAAE,OAAO,KAA2C,GAAtCzI,EAAE+7G,aAAa,KAAK/7G,EAAEg8G,cAAc,EAAKvzG,IAAIzI,EAAEosD,QAAQ,MAAM9vD,MAAM0I,EAAE,MAAMhF,EAAEo7G,aAAa,KAAK,IAAIv6G,EAAE4H,EAAEyjG,MAAMzjG,EAAEqjG,WAAW7pG,EAAEpB,EAAET,EAAEJ,EAAE06F,cAAcz4F,EAAEjC,EAAE06F,aAAaz4F,EAAEjC,EAAE46F,eAAe,EAAE56F,EAAE66F,YAAY,EAAE76F,EAAE26F,cAAc14F,EAAEjC,EAAEozG,kBAAkBnxG,EAAEjC,EAAE+6F,gBAAgB94F,EAAEA,EAAEjC,EAAEg7F,cAAc,IAAI,IAAIlzF,EAAE9H,EAAEs7F,WAAWjwE,EAAErrB,EAAEq7G,gBAAgB,EAAEj7G,GAAG,CAAC,IAAI2L,EAAE,GAAG+uF,GAAG16F,GAAGmqB,EAAE,GAAGxe,EAAE9J,EAAE8J,GAAG,EAAEjE,EAAEiE,IAAI,EAAEsf,EAAEtf,IAAI,EAAE3L,IAAImqB,EACnV,GADqV,OACjfiwF,IAAI,KAAO,GAAF35G,IAAO25G,GAAG/zG,IAAIzG,IAAIw6G,GAAGlzG,OAAOtH,GAAGA,IAAI02E,KAAIr+C,GAAEq+C,GAAE,KAAKz6C,GAAE,GAAG,EAAExzB,EAAEquF,MAAM,OAAOruF,EAAE0mG,YAAY1mG,EAAE0mG,WAAWC,WAAW3mG,EAAE5H,EAAE4H,EAAE4mG,aAAaxuG,EAAE4H,EAAE5H,EAAE4H,EAAE4mG,YAAe,OAAOxuG,EAAE,CAAwC,GAAvCoB,EAAE+1B,GAAEA,IAAG,GAAGgN,GAAGonB,QAAQ,KAAK86C,GAAGrL,GAAaiJ,GAAVh9F,EAAE48F,MAAc,CAAC,GAAG,mBAAmB58F,EAAEujB,EAAE,CAAC9hB,MAAMzB,EAAEw9F,eAAez4E,IAAI/kB,EAAEy9F,mBAAmBvlG,EAAE,GAAGqrB,GAAGA,EAAEvjB,EAAEoN,gBAAgBmW,EAAE/T,aAAapG,QAAQqZ,EAAEc,EAAEo6E,cAAcp6E,EAAEo6E,iBAAiB,IAAIl7E,EAAEmyF,WAAW,CAACrxF,EAAEd,EAAEi7E,WAAWplG,EAAEmqB,EAAEm7E,aAAa35F,EAAEwe,EAAEo7E,UAAUp7E,EAAEA,EAAEq7E,YAAY,IAAIv6E,EAAEmmE,SAASzlF,EAAEylF,SAAS,MAAMgrB,GAAInxF,EAAE,KACnf,MAAMrrB,EAAE,IAAIX,EAAE,EAAEykC,GAAG,EAAE5mC,GAAG,EAAE8mC,EAAE,EAAEvjC,EAAE,EAAEg4B,EAAE3wB,EAAEkE,EAAE,KAAK/L,EAAE,OAAO,CAAC,IAAI,IAAI6oC,EAAKrQ,IAAIpN,GAAG,IAAIjrB,GAAG,IAAIq4B,EAAE+4D,WAAW1tD,EAAEzkC,EAAEe,GAAGq4B,IAAI1sB,GAAG,IAAIwe,GAAG,IAAIkO,EAAE+4D,WAAWt0F,EAAEmC,EAAEkrB,GAAG,IAAIkO,EAAE+4D,WAAWnyF,GAAGo5B,EAAE+nC,UAAU7lE,QAAW,QAAQmuC,EAAErQ,EAAEze,aAAkBhO,EAAEysB,EAAEA,EAAEqQ,EAAE,OAAO,CAAC,GAAGrQ,IAAI3wB,EAAE,MAAM7H,EAA8C,GAA5C+L,IAAIqf,KAAK2Y,IAAI5jC,IAAI0jC,EAAEzkC,GAAG2M,IAAID,KAAKtL,IAAI8pB,IAAIrtB,EAAEmC,GAAM,QAAQypC,EAAErQ,EAAE5e,aAAa,MAAU7N,GAAJysB,EAAEzsB,GAAM6G,WAAW4lB,EAAEqQ,EAAEzd,GAAG,IAAIyY,IAAI,IAAI5mC,EAAE,KAAK,CAACqM,MAAMu6B,EAAEjX,IAAI3vB,QAAQmuB,EAAE,KAAKA,EAAEA,GAAG,CAAC9hB,MAAM,EAAEsjB,IAAI,QAAQxB,EAAE,KAAK87E,GAAG,CAACwV,YAAY70G,EAAE80G,eAAevxF,GAAGwwE,IAAG,EAAGif,GAAG,KAAKC,IAAG,EAAGxkC,GAAE11E,EAAE,GAAG,IAAIg8G,KAAK,MAAML,GAAI,GAAG,OACvgBjmC,GAAE,MAAMj6E,MAAM0I,EAAE,MAAM0zG,GAAGniC,GAAEimC,GAAIjmC,GAAEA,GAAE64B,kBAAiB,OAAO74B,IAAGukC,GAAG,KAAKvkC,GAAE11E,EAAE,GAAG,IAAI,IAAIiH,EAAE9H,EAAE,OAAOu2E,IAAG,CAAC,IAAIlqE,EAAEkqE,GAAEugB,MAA+B,GAAvB,GAAFzqF,GAAMilF,GAAG/a,GAAE8e,UAAU,IAAS,IAAFhpF,EAAM,CAAC,IAAImiB,EAAE+nD,GAAEqgB,UAAU,GAAG,OAAOpoE,EAAE,CAAC,IAAIrqB,EAAEqqB,EAAEu6D,IAAI,OAAO5kF,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAEioD,QAAQ,OAAO,OAAS,KAAF//C,GAAQ,KAAK,EAAEktG,GAAGhjC,IAAGA,GAAEugB,QAAQ,EAAE,MAAM,KAAK,EAAEyiB,GAAGhjC,IAAGA,GAAEugB,QAAQ,EAAE6iB,GAAGpjC,GAAEqgB,UAAUrgB,IAAG,MAAM,KAAK,KAAKA,GAAEugB,QAAQ,KAAK,MAAM,KAAK,KAAKvgB,GAAEugB,QAAQ,KAAK6iB,GAAGpjC,GAAEqgB,UAAUrgB,IAAG,MAAM,KAAK,EAAEojC,GAAGpjC,GAAEqgB,UAAUrgB,IAAG,MAAM,KAAK,EAAMzkC,GAAGhqC,EAAPujB,EAAEkrD,IAAU,IAAI2S,EAAE79D,EAAEurE,UAAUyiB,GAAGhuF,GAAG,OACnf69D,GAAGmwB,GAAGnwB,GAAG3S,GAAEA,GAAE64B,YAAY,MAAMoN,GAAI,GAAG,OAAOjmC,GAAE,MAAMj6E,MAAM0I,EAAE,MAAM0zG,GAAGniC,GAAEimC,GAAIjmC,GAAEA,GAAE64B,kBAAiB,OAAO74B,IAAkD,GAA/CpyE,EAAEgjG,GAAG34E,EAAEk2E,KAAKr4F,EAAElI,EAAEw4G,YAAY70G,EAAE3D,EAAEy4G,eAAkBpuF,IAAIniB,GAAGA,GAAGA,EAAE6I,eAAeuvF,GAAGp4F,EAAE6I,cAAciF,gBAAgB9N,GAAG,CAAC,OAAOvE,GAAGg9F,GAAGz4F,KAAKmiB,EAAE1mB,EAAEyB,WAAc,KAARpF,EAAE2D,EAAE+kB,OAAiB1oB,EAAEqqB,GAAG,mBAAmBniB,GAAGA,EAAEi5F,eAAe92E,EAAEniB,EAAEk5F,aAAa/gG,KAAKG,IAAIR,EAAEkI,EAAExP,MAAMlC,UAAUwJ,GAAGqqB,EAAEniB,EAAE6I,eAAeqC,WAAWiX,EAAElX,aAAapG,QAASu0F,eAAethG,EAAEA,EAAEshG,eAAep6E,EAAEhf,EAAEgN,YAAY1e,OAAOuuF,EAAE1kF,KAAKG,IAAImD,EAAEyB,MAAM8hB,GAAGvjB,OAAE,IACpfA,EAAE+kB,IAAIq8D,EAAE1kF,KAAKG,IAAImD,EAAE+kB,IAAIxB,IAAIlnB,EAAEyb,QAAQspE,EAAEphF,IAAIujB,EAAEvjB,EAAEA,EAAEohF,EAAEA,EAAE79D,GAAGA,EAAEm5E,GAAGn4F,EAAE68E,GAAG9oF,EAAEokG,GAAGn4F,EAAEvE,GAAGujB,GAAGjrB,IAAI,IAAI+D,EAAEu4G,YAAYv4G,EAAEqhG,aAAan6E,EAAE5W,MAAMtQ,EAAEuhG,eAAer6E,EAAE/a,QAAQnM,EAAEwhG,YAAYvlG,EAAEqU,MAAMtQ,EAAEyhG,cAAcxlG,EAAEkQ,WAAUke,EAAEA,EAAEsuF,eAAgBC,SAAS1xF,EAAE5W,KAAK4W,EAAE/a,QAAQnM,EAAE64G,kBAAkB9zB,EAAEphF,GAAG3D,EAAE84G,SAASzuF,GAAGrqB,EAAEyb,OAAOxf,EAAEqU,KAAKrU,EAAEkQ,UAAUke,EAAE0uF,OAAO98G,EAAEqU,KAAKrU,EAAEkQ,QAAQnM,EAAE84G,SAASzuF,OAAQA,EAAE,GAAG,IAAIrqB,EAAEkI,EAAElI,EAAEA,EAAE0O,YAAY,IAAI1O,EAAEqtF,UAAUhjE,EAAEn0B,KAAK,CAACiU,QAAQnK,EAAE3D,KAAK2D,EAAEg5G,WAAW1tF,IAAItrB,EAAEi5G,YAAmD,IAAvC,oBAAoB/wG,EAAE2sG,OAAO3sG,EAAE2sG,QAAY3sG,EACrf,EAAEA,EAAEmiB,EAAE7zB,OAAO0R,KAAIlI,EAAEqqB,EAAEniB,IAAKiC,QAAQ6uG,WAAWh5G,EAAE3D,KAAK2D,EAAEmK,QAAQ8uG,UAAUj5G,EAAEsrB,IAAIosE,KAAKqL,GAAGC,GAAGD,GAAG,KAAKlnG,EAAEosD,QAAQ3jD,EAAE8tE,GAAE11E,EAAE,GAAG,IAAI,IAAIwL,EAAErM,EAAE,OAAOu2E,IAAG,CAAC,IAAIiT,EAAEjT,GAAEugB,MAAgC,GAAxB,GAAFtN,GAAMqvB,GAAGxsG,EAAEkqE,GAAEqgB,UAAUrgB,IAAQ,IAAFiT,EAAM,CAACh7D,OAAE,EAAO,IAAIyZ,EAAEsuC,GAAEwS,IAAI,GAAG,OAAO9gD,EAAE,CAAC,IAAIsoC,EAAEgG,GAAE8e,UAAiB9e,GAAEmY,IAA8BlgE,EAAE+hD,EAAE,oBAAoBtoC,EAAEA,EAAEzZ,GAAGyZ,EAAEmkB,QAAQ59B,GAAG+nD,GAAEA,GAAE64B,YAAY,MAAMoN,GAAI,GAAG,OAAOjmC,GAAE,MAAMj6E,MAAM0I,EAAE,MAAM0zG,GAAGniC,GAAEimC,GAAIjmC,GAAEA,GAAE64B,kBAAiB,OAAO74B,IAAGA,GAAE,KAAKm0B,KAAK1yE,GAAE/1B,OAAOjC,EAAEosD,QAAQ3jD,EAAE,GAAGw8B,GAAGA,IAAG,EAAGC,GAAGllC,EAAEq6G,GAAGp6G,OAAO,IAAIs2E,GAAE11E,EAAE,OAAO01E,IAAGt2E,EACpfs2E,GAAE64B,WAAW74B,GAAE64B,WAAW,KAAa,EAAR74B,GAAEugB,SAAUtN,EAAEjT,IAAI4gB,QAAQ,KAAK3N,EAAE6L,UAAU,MAAM9e,GAAEt2E,EAAqF,GAAlE,KAAjBY,EAAEb,EAAE06F,gBAAqB2d,GAAG,MAAM,IAAIx3G,EAAEb,IAAI06G,GAAGD,MAAMA,GAAG,EAAEC,GAAG16G,GAAGy6G,GAAG,EAAEhyG,EAAEA,EAAE4sF,UAAagU,IAAI,oBAAoBA,GAAGgU,kBAAkB,IAAIhU,GAAGgU,kBAAkBjU,GAAG3gG,OAAE,EAAO,MAAsB,GAAhBA,EAAE2jD,QAAQ0qC,QAAW,MAAM0lB,IAAe,GAAVrB,GAAGn7G,EAAEupF,MAAQ0uB,GAAG,MAAMA,IAAG,EAAGj4G,EAAEk4G,GAAGA,GAAG,KAAKl4G,EAAE,OAAG,KAAO,EAAFg4B,KAAiBmzE,KAAL,KACjW,SAAS0R,KAAK,KAAK,OAAOtmC,IAAG,CAAC,IAAIv2E,EAAEu2E,GAAEqgB,UAAUmkB,IAAI,OAAOD,KAAK,KAAa,EAARvkC,GAAEugB,OAASjjD,GAAG0iC,GAAEukC,MAAMC,IAAG,GAAI,KAAKxkC,GAAEmY,KAAKorB,GAAG95G,EAAEu2E,KAAI1iC,GAAG0iC,GAAEukC,MAAMC,IAAG,IAAK,IAAI96G,EAAEs2E,GAAEugB,MAAM,KAAO,IAAF72F,IAAQ04G,GAAG34G,EAAEu2E,IAAG,KAAO,IAAFt2E,IAAQglC,KAAKA,IAAG,EAAGimE,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SAAQllC,GAAEA,GAAE64B,YAAY,SAASqM,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAIr6G,EAAE,GAAGq6G,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUpP,GAAGjrG,EAAEs9G,IAAI,OAAM,EAAG,SAASvE,GAAG/4G,EAAEC,GAAGq6G,GAAGjgH,KAAK4F,EAAED,GAAGilC,KAAKA,IAAG,EAAGimE,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SAAQ,SAAS3C,GAAG94G,EAAEC,GAAGs6G,GAAGlgH,KAAK4F,EAAED,GAAGilC,KAAKA,IAAG,EAAGimE,GAAG,IAAG,WAAgB,OAALuQ,KAAY,SACzd,SAAS6B,KAAK,GAAG,OAAOp4E,GAAG,OAAM,EAAG,IAAIllC,EAAEklC,GAAW,GAARA,GAAG,KAAQ,KAAO,GAAFlN,IAAM,MAAM17B,MAAM0I,EAAE,MAAM,IAAI/E,EAAE+3B,GAAEA,IAAG,GAAG,IAAIvvB,EAAE8xG,GAAGA,GAAG,GAAG,IAAI,IAAI15G,EAAE,EAAEA,EAAE4H,EAAE9N,OAAOkG,GAAG,EAAE,CAAC,IAAIoB,EAAEwG,EAAE5H,GAAGT,EAAEqI,EAAE5H,EAAE,GAAGiH,EAAE7F,EAAE4xG,QAAyB,GAAjB5xG,EAAE4xG,aAAQ,EAAU,oBAAoB/rG,EAAE,IAAIA,IAAI,MAAMiE,GAAG,GAAG,OAAO3L,EAAE,MAAM9D,MAAM0I,EAAE,MAAM0zG,GAAGt4G,EAAE2L,IAAe,IAAXtD,EAAE6xG,GAAGA,GAAG,GAAOz5G,EAAE,EAAEA,EAAE4H,EAAE9N,OAAOkG,GAAG,EAAE,CAACoB,EAAEwG,EAAE5H,GAAGT,EAAEqI,EAAE5H,EAAE,GAAG,IAAI,IAAIwqB,EAAEppB,EAAE3E,OAAO2E,EAAE4xG,QAAQxoF,IAAI,MAAMtf,GAAG,GAAG,OAAO3L,EAAE,MAAM9D,MAAM0I,EAAE,MAAM0zG,GAAGt4G,EAAE2L,IAAI,IAAIsf,EAAErrB,EAAEosD,QAAQijD,YAAY,OAAOhkF,GAAGrrB,EAAEqrB,EAAE+jF,WAAW/jF,EAAE+jF,WAAW,KAAa,EAAR/jF,EAAEyrE,QAAUzrE,EAAE8rE,QACjf,KAAK9rE,EAAEgqE,UAAU,MAAMhqE,EAAErrB,EAAW,OAATg4B,GAAE/3B,EAAEkrG,MAAW,EAAG,SAASoS,GAAGv9G,EAAEC,EAAEwI,GAAyB4kG,GAAGrtG,EAAfC,EAAE+3G,GAAGh4G,EAAfC,EAAE03G,GAAGlvG,EAAExI,GAAY,IAAWA,EAAE6tG,KAAe,QAAV9tG,EAAEi7G,GAAGj7G,EAAE,MAAcq7F,GAAGr7F,EAAE,EAAEC,GAAGk7G,GAAGn7G,EAAEC,IACzI,SAASy4G,GAAG14G,EAAEC,GAAG,GAAG,IAAID,EAAE0uF,IAAI6uB,GAAGv9G,EAAEA,EAAEC,QAAQ,IAAI,IAAIwI,EAAEzI,EAAE62F,OAAO,OAAOpuF,GAAG,CAAC,GAAG,IAAIA,EAAEimF,IAAI,CAAC6uB,GAAG90G,EAAEzI,EAAEC,GAAG,MAAW,GAAG,IAAIwI,EAAEimF,IAAI,CAAC,IAAI7tF,EAAE4H,EAAE4sF,UAAU,GAAG,oBAAoB5sF,EAAEmL,KAAKiiG,0BAA0B,oBAAoBh1G,EAAEu3G,oBAAoB,OAAOC,KAAKA,GAAG5xG,IAAI5F,IAAI,CAAW,IAAIoB,EAAEk2G,GAAG1vG,EAAnBzI,EAAE23G,GAAG13G,EAAED,GAAgB,GAA4B,GAAzBqtG,GAAG5kG,EAAExG,GAAGA,EAAE6rG,KAAkB,QAAbrlG,EAAEwyG,GAAGxyG,EAAE,IAAe4yF,GAAG5yF,EAAE,EAAExG,GAAGk5G,GAAG1yG,EAAExG,QAAQ,GAAG,oBAAoBpB,EAAEu3G,oBAAoB,OAAOC,KAAKA,GAAG5xG,IAAI5F,IAAI,IAAIA,EAAEu3G,kBAAkBn4G,EAAED,GAAG,MAAMI,IAAI,OAAOqI,EAAEA,EAAEouF,QACpd,SAASylB,GAAGt8G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEb,EAAEq8G,UAAU,OAAOx7G,GAAGA,EAAEyG,OAAOrH,GAAGA,EAAE6tG,KAAK9tG,EAAE66F,aAAa76F,EAAE46F,eAAenyF,EAAEiuE,KAAI12E,IAAIi8B,GAAExzB,KAAKA,IAAI,IAAIsF,IAAG,IAAIA,KAAM,SAAFkuB,MAAcA,IAAG,IAAIstD,KAAIqwB,GAAG+B,GAAG37G,EAAE,GAAGk6G,IAAIzxG,GAAG0yG,GAAGn7G,EAAEC,GAAG,SAASiyC,GAAGlyC,EAAEC,GAAG,IAAIwI,EAAEzI,EAAEq1F,UAAU,OAAO5sF,GAAGA,EAAEnB,OAAOrH,GAAO,KAAJA,EAAE,KAAmB,KAAO,GAAhBA,EAAED,EAAEoN,OAAenN,EAAE,EAAE,KAAO,EAAFA,GAAKA,EAAE,KAAK8qG,KAAK,EAAE,GAAG,IAAI6P,KAAKA,GAAG9pE,IAAuB,KAAnB7wC,EAAEk7F,GAAG,UAAUyf,OAAY36G,EAAE,WAAWwI,EAAEqlG,KAAe,QAAV9tG,EAAEi7G,GAAGj7G,EAAEC,MAAco7F,GAAGr7F,EAAEC,EAAEwI,GAAG0yG,GAAGn7G,EAAEyI,IAUjZ,SAAS+0G,GAAGx9G,EAAEC,EAAEwI,EAAE5H,GAAGxC,KAAKqwF,IAAI1uF,EAAE3B,KAAKvD,IAAI2N,EAAEpK,KAAK84F,QAAQ94F,KAAKmX,MAAMnX,KAAKw4F,OAAOx4F,KAAKg3F,UAAUh3F,KAAKuV,KAAKvV,KAAKmxG,YAAY,KAAKnxG,KAAKuE,MAAM,EAAEvE,KAAK0qF,IAAI,KAAK1qF,KAAK4yG,aAAahxG,EAAE5B,KAAK2tG,aAAa3tG,KAAK24F,cAAc34F,KAAKouG,YAAYpuG,KAAKoyG,cAAc,KAAKpyG,KAAK+O,KAAKvM,EAAExC,KAAKy4F,MAAM,EAAEz4F,KAAK8wG,WAAW9wG,KAAKgxG,YAAYhxG,KAAK+wG,WAAW,KAAK/wG,KAAKytG,WAAWztG,KAAK6tG,MAAM,EAAE7tG,KAAKu4F,UAAU,KAAK,SAASma,GAAG/wG,EAAEC,EAAEwI,EAAE5H,GAAG,OAAO,IAAI28G,GAAGx9G,EAAEC,EAAEwI,EAAE5H,GAAG,SAASs0G,GAAGn1G,GAAiB,UAAdA,EAAEA,EAAElE,aAAuBkE,EAAE2oF,kBAErd,SAAS2mB,GAAGtvG,EAAEC,GAAG,IAAIwI,EAAEzI,EAAE42F,UACuB,OADb,OAAOnuF,IAAGA,EAAEsoG,GAAG/wG,EAAE0uF,IAAIzuF,EAAED,EAAElF,IAAIkF,EAAEoN,OAAQoiG,YAAYxvG,EAAEwvG,YAAY/mG,EAAEmL,KAAK5T,EAAE4T,KAAKnL,EAAE4sF,UAAUr1F,EAAEq1F,UAAU5sF,EAAEmuF,UAAU52F,EAAEA,EAAE42F,UAAUnuF,IAAIA,EAAEwoG,aAAahxG,EAAEwI,EAAEmL,KAAK5T,EAAE4T,KAAKnL,EAAEquF,MAAM,EAAEruF,EAAE2mG,WAAW,KAAK3mG,EAAE4mG,YAAY,KAAK5mG,EAAE0mG,WAAW,MAAM1mG,EAAEqjG,WAAW9rG,EAAE8rG,WAAWrjG,EAAEyjG,MAAMlsG,EAAEksG,MAAMzjG,EAAE+M,MAAMxV,EAAEwV,MAAM/M,EAAEgoG,cAAczwG,EAAEywG,cAAchoG,EAAEuuF,cAAch3F,EAAEg3F,cAAcvuF,EAAEgkG,YAAYzsG,EAAEysG,YAAYxsG,EAAED,EAAEgsG,aAAavjG,EAAEujG,aAAa,OAAO/rG,EAAE,KAAK,CAACisG,MAAMjsG,EAAEisG,MAAMD,aAAahsG,EAAEgsG,cAC3exjG,EAAE0uF,QAAQn3F,EAAEm3F,QAAQ1uF,EAAE7F,MAAM5C,EAAE4C,MAAM6F,EAAEsgF,IAAI/oF,EAAE+oF,IAAWtgF,EACvD,SAASgnG,GAAGzvG,EAAEC,EAAEwI,EAAE5H,EAAEoB,EAAE7B,GAAG,IAAI0H,EAAE,EAAM,GAAJjH,EAAEb,EAAK,oBAAoBA,EAAEm1G,GAAGn1G,KAAK8H,EAAE,QAAQ,GAAG,kBAAkB9H,EAAE8H,EAAE,OAAO9H,EAAE,OAAOA,GAAG,KAAKotF,EAAG,OAAOwiB,GAAGnnG,EAAEoM,SAAS5S,EAAE7B,EAAEH,GAAG,KAAK6tF,EAAGhmF,EAAE,EAAE7F,GAAG,GAAG,MAAM,KAAKorF,EAAGvlF,EAAE,EAAE7F,GAAG,EAAE,MAAM,KAAKqxB,EAAG,OAAOtzB,EAAE+wG,GAAG,GAAGtoG,EAAExI,EAAI,EAAFgC,IAAOutG,YAAYl8E,EAAGtzB,EAAE4T,KAAK0f,EAAGtzB,EAAEksG,MAAM9rG,EAAEJ,EAAE,KAAKwtF,EAAG,OAAOxtF,EAAE+wG,GAAG,GAAGtoG,EAAExI,EAAEgC,IAAK2R,KAAK45E,EAAGxtF,EAAEwvG,YAAYhiB,EAAGxtF,EAAEksG,MAAM9rG,EAAEJ,EAAE,KAAKytF,EAAG,OAAOztF,EAAE+wG,GAAG,GAAGtoG,EAAExI,EAAEgC,IAAKutG,YAAY/hB,EAAGztF,EAAEksG,MAAM9rG,EAAEJ,EAAE,KAAK+tF,EAAG,OAAOxK,GAAG96E,EAAExG,EAAE7B,EAAEH,GAAG,KAAK+tF,EAAG,OAAOhuF,EAAE+wG,GAAG,GAAGtoG,EAAExI,EAAEgC,IAAKutG,YAAYxhB,EAAGhuF,EAAEksG,MAAM9rG,EAAEJ,EAAE,QAAQ,GAAG,kBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEopF,UAAU,KAAK71D,EAAGzrB,EAAE,GAAG,MAAM9H,EAAE,KAAKstF,EAAGxlF,EAAE,EAAE,MAAM9H,EAAE,KAAKutF,EAAGzlF,EAAE,GAAG,MAAM9H,EAAE,KAAK0tF,EAAG5lF,EAAE,GAAG,MAAM9H,EAAE,KAAK2tF,EAAG7lF,EAAE,GAAGjH,EAAE,KAAK,MAAMb,EAAE,KAAK4tF,EAAG9lF,EAAE,GAAG,MAAM9H,EAAE,MAAM1D,MAAM0I,EAAE,IAAI,MAAMhF,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE8wG,GAAGjpG,EAAEW,EAAExI,EAAEgC,IAAKutG,YAAYxvG,EAAEC,EAAE2T,KAAK/S,EAAEZ,EAAEisG,MAAM9rG,EAASH,EAAE,SAAS2vG,GAAG5vG,EAAEC,EAAEwI,EAAE5H,GAA2B,OAAxBb,EAAE+wG,GAAG,EAAE/wG,EAAEa,EAAEZ,IAAKisG,MAAMzjG,EAASzI,EAAE,SAASujF,GAAGvjF,EAAEC,EAAEwI,EAAE5H,GAA6C,OAA1Cb,EAAE+wG,GAAG,GAAG/wG,EAAEa,EAAEZ,IAAKuvG,YAAYzhB,EAAG/tF,EAAEksG,MAAMzjG,EAASzI,EAAE,SAASuvG,GAAGvvG,EAAEC,EAAEwI,GAA8B,OAA3BzI,EAAE+wG,GAAG,EAAE/wG,EAAE,KAAKC,IAAKisG,MAAMzjG,EAASzI,EAClc,SAAS2vG,GAAG3vG,EAAEC,EAAEwI,GAA8J,OAA3JxI,EAAE8wG,GAAG,EAAE,OAAO/wG,EAAE6U,SAAS7U,EAAE6U,SAAS,GAAG7U,EAAElF,IAAImF,IAAKisG,MAAMzjG,EAAExI,EAAEo1F,UAAU,CAACsD,cAAc34F,EAAE24F,cAAc8kB,gBAAgB,KAAK/N,eAAe1vG,EAAE0vG,gBAAuBzvG,EACrL,SAASy9G,GAAG19G,EAAEC,EAAEwI,GAAGpK,KAAKqwF,IAAIzuF,EAAE5B,KAAKs6F,cAAc34F,EAAE3B,KAAK09G,aAAa19G,KAAKg+G,UAAUh+G,KAAK+tD,QAAQ/tD,KAAKo/G,gBAAgB,KAAKp/G,KAAK69G,eAAe,EAAE79G,KAAKy3G,eAAez3G,KAAKgT,QAAQ,KAAKhT,KAAKq6F,QAAQjwF,EAAEpK,KAAK+8G,aAAa,KAAK/8G,KAAKi9G,iBAAiB,EAAEj9G,KAAKi9F,WAAWF,GAAG,GAAG/8F,KAAKg9G,gBAAgBjgB,IAAI,GAAG/8F,KAAK08F,eAAe18F,KAAK29G,cAAc39G,KAAK+0G,iBAAiB/0G,KAAKs8F,aAAat8F,KAAKw8F,YAAYx8F,KAAKu8F,eAAev8F,KAAKq8F,aAAa,EAAEr8F,KAAK28F,cAAcI,GAAG,GAAG/8F,KAAKs/G,gCAAgC,KAC7e,SAASC,GAAG59G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAE,EAAEnG,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC0uF,SAAS+D,EAAGryF,IAAI,MAAM+F,EAAE,KAAK,GAAGA,EAAEgU,SAAS7U,EAAE24F,cAAc14F,EAAEyvG,eAAejnG,GACxK,SAASo1G,GAAG79G,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIoB,EAAEhC,EAAEmsD,QAAQhsD,EAAE0tG,KAAKhmG,EAAEimG,GAAG9rG,GAAGjC,EAAE,GAAGyI,EAAE,CAAqBxI,EAAE,CAAC,GAAG02F,GAA1BluF,EAAEA,EAAEolG,mBAA8BplG,GAAG,IAAIA,EAAEimF,IAAI,MAAMpyF,MAAM0I,EAAE,MAAM,IAAIqmB,EAAE5iB,EAAE,EAAE,CAAC,OAAO4iB,EAAEqjE,KAAK,KAAK,EAAErjE,EAAEA,EAAEgqE,UAAUhkF,QAAQ,MAAMpR,EAAE,KAAK,EAAE,GAAG0oG,GAAGt9E,EAAEzX,MAAM,CAACyX,EAAEA,EAAEgqE,UAAU6T,0CAA0C,MAAMjpG,GAAGorB,EAAEA,EAAEwrE,aAAa,OAAOxrE,GAAG,MAAM/uB,MAAM0I,EAAE,MAAO,GAAG,IAAIyD,EAAEimF,IAAI,CAAC,IAAI3iF,EAAEtD,EAAEmL,KAAK,GAAG+0F,GAAG58F,GAAG,CAACtD,EAAEsgG,GAAGtgG,EAAEsD,EAAEsf,GAAG,MAAMrrB,GAAGyI,EAAE4iB,OAAO5iB,EAAE4/F,GACrW,OADwW,OAAOpoG,EAAEoR,QAAQpR,EAAEoR,QAAQ5I,EAAExI,EAAE61G,eAAertG,GAAExI,EAAEgtG,GAAG7sG,EAAE0H,IAAKslG,QAAQ,CAAC9+F,QAAQtO,GAAuB,QAApBa,OAAE,IAASA,EAAE,KAAKA,KAC1eZ,EAAE4T,SAAShT,GAAGwsG,GAAGprG,EAAEhC,GAAG+tG,GAAG/rG,EAAE6F,EAAE1H,GAAU0H,EAAE,SAASg2G,GAAG99G,GAAe,OAAZA,EAAEA,EAAEosD,SAAc52C,OAAyBxV,EAAEwV,MAAMk5E,IAAoD1uF,EAAEwV,MAAM6/E,WAAhF,KAA2F,SAAS0oB,GAAG/9G,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEg3F,gBAA2B,OAAOh3F,EAAEi3F,WAAW,CAAC,IAAIxuF,EAAEzI,EAAEk2G,UAAUl2G,EAAEk2G,UAAU,IAAIztG,GAAGA,EAAExI,EAAEwI,EAAExI,GAAG,SAASq7C,GAAGt7C,EAAEC,GAAG89G,GAAG/9G,EAAEC,IAAID,EAAEA,EAAE42F,YAAYmnB,GAAG/9G,EAAEC,GACxV,SAAS+9G,GAAGh+G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAE,MAAM4H,GAAG,MAAMA,EAAEw1G,kBAAkBx1G,EAAEw1G,iBAAiBC,gBAAgB,KAAiK,GAA5Jz1G,EAAE,IAAIi1G,GAAG19G,EAAEC,EAAE,MAAMwI,IAAG,IAAKA,EAAEiwF,SAASz4F,EAAE8wG,GAAG,EAAE,KAAK,KAAK,IAAI9wG,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGwI,EAAE2jD,QAAQnsD,EAAEA,EAAEo1F,UAAU5sF,EAAE+jG,GAAGvsG,GAAGD,EAAE0mG,IAAIj+F,EAAE2jD,QAAQk6C,GAAG,IAAItmG,EAAEwxF,SAASxxF,EAAE6S,WAAW7S,GAAMa,EAAE,IAAIb,EAAE,EAAEA,EAAEa,EAAElG,OAAOqF,IAAI,CAAQ,IAAIiC,GAAXhC,EAAEY,EAAEb,IAAWkzG,YAAYjxG,EAAEA,EAAEhC,EAAEkzG,SAAS,MAAM1qG,EAAEk1G,gCAAgCl1G,EAAEk1G,gCAAgC,CAAC19G,EAAEgC,GAAGwG,EAAEk1G,gCAAgCtjH,KAAK4F,EAAEgC,GAAG5D,KAAK8/G,cAAc11G,EAC/R,SAAS21G,GAAGp+G,GAAG,SAASA,GAAG,IAAIA,EAAEwxF,UAAU,IAAIxxF,EAAEwxF,UAAU,KAAKxxF,EAAEwxF,WAAW,IAAIxxF,EAAEwxF,UAAU,iCAAiCxxF,EAAEwgE,YAEvT,SAAS69C,GAAGr+G,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI7B,EAAEqI,EAAEixG,oBAAoB,GAAGt5G,EAAE,CAAC,IAAI0H,EAAE1H,EAAE+9G,cAAc,GAAG,oBAAoBl8G,EAAE,CAAC,IAAIopB,EAAEppB,EAAEA,EAAE,WAAW,IAAIjC,EAAE89G,GAAGh2G,GAAGujB,EAAEztB,KAAKoC,IAAI69G,GAAG59G,EAAE6H,EAAE9H,EAAEiC,OAAO,CAAmD,GAAlD7B,EAAEqI,EAAEixG,oBAD1K,SAAY15G,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAEwxF,SAASxxF,EAAEma,gBAAgBna,EAAEga,WAAW,OAAa,IAAI/Z,EAAEuxF,WAAWvxF,EAAEq5B,aAAa,qBAAwBr5B,EAAE,IAAI,IAAIwI,EAAEA,EAAEzI,EAAEuxF,WAAWvxF,EAAEya,YAAYhS,GAAG,OAAO,IAAIu1G,GAAGh+G,EAAE,EAAEC,EAAE,CAACy4F,SAAQ,QAAI,GAC3Bj7B,CAAGh1D,EAAE5H,GAAGiH,EAAE1H,EAAE+9G,cAAiB,oBAAoBl8G,EAAE,CAAC,IAAI8J,EAAE9J,EAAEA,EAAE,WAAW,IAAIjC,EAAE89G,GAAGh2G,GAAGiE,EAAEnO,KAAKoC,IAAIo8G,IAAG,WAAWyB,GAAG59G,EAAE6H,EAAE9H,EAAEiC,MAAK,OAAO67G,GAAGh2G,GAGlG,SAASw2G,GAAGt+G,EAAEC,GAAG,IAAIwI,EAAE,EAAE/N,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI0jH,GAAGn+G,GAAG,MAAM3D,MAAM0I,EAAE,MAAM,OAAO44G,GAAG59G,EAAEC,EAAE,KAAKwI,GA1BtW2xG,GAAG,SAASp6G,EAAEC,EAAEwI,GAAG,IAAI5H,EAAEZ,EAAEisG,MAAM,GAAG,OAAOlsG,EAAE,GAAGA,EAAEywG,gBAAgBxwG,EAAEgxG,cAAc/0E,GAAEkwB,QAAQ+/C,IAAG,MAAQ,IAAG,KAAK1jG,EAAE5H,GAAoC,CAAO,OAANsrG,IAAG,EAAUlsG,EAAEyuF,KAAK,KAAK,EAAEnwC,GAAGt+C,GAAGoxG,KAAK,MAAM,KAAK,EAAEd,GAAGtwG,GAAG,MAAM,KAAK,EAAE0oG,GAAG1oG,EAAE2T,OAAOq1F,GAAGhpG,GAAG,MAAM,KAAK,EAAEmwG,GAAGnwG,EAAEA,EAAEo1F,UAAUsD,eAAe,MAAM,KAAK,GAAG93F,EAAEZ,EAAEwwG,cAAc5zG,MAAM,IAAIoF,EAAEhC,EAAE2T,KAAKm/C,SAAS3b,GAAEm0D,GAAGtpG,EAAEuoF,eAAevoF,EAAEuoF,cAAc3pF,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOZ,EAAE+2F,cAAe,OAAG,KAAKvuF,EAAExI,EAAEuV,MAAMs2F,YAAmBj7D,GAAG7wC,EAAEC,EAAEwI,IAAG2uC,GAAE9E,GAAY,EAAVA,GAAE8Z,SAA8B,QAAnBnsD,EAAEU,GAAGX,EAAEC,EAAEwI,IAC/exI,EAAEk3F,QAAQ,MAAK//C,GAAE9E,GAAY,EAAVA,GAAE8Z,SAAW,MAAM,KAAK,GAA0B,GAAvBvrD,EAAE,KAAK4H,EAAExI,EAAE6rG,YAAe,KAAa,GAAR9rG,EAAE82F,OAAU,CAAC,GAAGj2F,EAAE,OAAOi2G,GAAG92G,EAAEC,EAAEwI,GAAGxI,EAAE62F,OAAO,GAA+F,GAA1E,QAAlB70F,EAAEhC,EAAE+2F,iBAAyB/0F,EAAEw0G,UAAU,KAAKx0G,EAAE20G,KAAK,KAAK30G,EAAEktG,WAAW,MAAM/3D,GAAE9E,GAAEA,GAAE8Z,SAAYvrD,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOZ,EAAEisG,MAAM,EAAEmJ,GAAGr1G,EAAEC,EAAEwI,GAAG,OAAO9H,GAAGX,EAAEC,EAAEwI,GAD3L0jG,GAAG,KAAa,MAARnsG,EAAE82F,YACyLqV,IAAG,EAAa,OAAVlsG,EAAEisG,MAAM,EAASjsG,EAAEyuF,KAAK,KAAK,EAA+I,GAA7I7tF,EAAEZ,EAAE2T,KAAK,OAAO5T,IAAIA,EAAE42F,UAAU,KAAK32F,EAAE22F,UAAU,KAAK32F,EAAE62F,OAAO,GAAG92F,EAAEC,EAAEgxG,aAAahvG,EAAEsmG,GAAGtoG,EAAEo5D,GAAEjN,SAAS2/C,GAAG9rG,EAAEwI,GAAGxG,EAAE+vG,GAAG,KAAK/xG,EAAEY,EAAEb,EAAEiC,EAAEwG,GAAGxI,EAAE62F,OAAO,EAAK,kBACre70F,GAAG,OAAOA,GAAG,oBAAoBA,EAAE+oF,aAAQ,IAAS/oF,EAAEmnF,SAAS,CAAiD,GAAhDnpF,EAAEyuF,IAAI,EAAEzuF,EAAE+2F,cAAc,KAAK/2F,EAAEwsG,YAAY,KAAQ9D,GAAG9nG,GAAG,CAAC,IAAIT,GAAE,EAAG6oG,GAAGhpG,QAAQG,GAAE,EAAGH,EAAE+2F,cAAc,OAAO/0F,EAAEkwB,YAAO,IAASlwB,EAAEkwB,MAAMlwB,EAAEkwB,MAAM,KAAKq6E,GAAGvsG,GAAG,IAAI6H,EAAEjH,EAAE4tG,yBAAyB,oBAAoB3mG,GAAG6lG,GAAG1tG,EAAEY,EAAEiH,EAAE9H,GAAGiC,EAAExF,QAAQmxG,GAAG3tG,EAAEo1F,UAAUpzF,EAAEA,EAAE4rG,gBAAgB5tG,EAAEuuG,GAAGvuG,EAAEY,EAAEb,EAAEyI,GAAGxI,EAAE21G,GAAG,KAAK31G,EAAEY,GAAE,EAAGT,EAAEqI,QAAQxI,EAAEyuF,IAAI,EAAE14B,GAAG,KAAK/1D,EAAEgC,EAAEwG,GAAGxI,EAAEA,EAAEuV,MAAM,OAAOvV,EAAE,KAAK,GAAGgC,EAAEhC,EAAEuvG,YAAYxvG,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAE42F,UAAU,KAAK32F,EAAE22F,UAAU,KAAK32F,EAAE62F,OAAO,GACnf92F,EAAEC,EAAEgxG,aAAuBhvG,GAAV7B,EAAE6B,EAAEquC,OAAUruC,EAAEipF,UAAUjrF,EAAE2T,KAAK3R,EAAE7B,EAAEH,EAAEyuF,IAOxD,SAAY1uF,GAAG,GAAG,oBAAoBA,EAAE,OAAOm1G,GAAGn1G,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEopF,YAAgBmE,EAAG,OAAO,GAAG,GAAGvtF,IAAI0tF,EAAG,OAAO,GAAG,OAAO,EAPlF6wB,CAAGt8G,GAAGjC,EAAEsrG,GAAGrpG,EAAEjC,GAAUI,GAAG,KAAK,EAAEH,EAAE+xC,GAAG,KAAK/xC,EAAEgC,EAAEjC,EAAEyI,GAAG,MAAMzI,EAAE,KAAK,EAAEC,EAAE+9B,GAAG,KAAK/9B,EAAEgC,EAAEjC,EAAEyI,GAAG,MAAMzI,EAAE,KAAK,GAAGC,EAAEg1G,GAAG,KAAKh1G,EAAEgC,EAAEjC,EAAEyI,GAAG,MAAMzI,EAAE,KAAK,GAAGC,EAAEi1G,GAAG,KAAKj1G,EAAEgC,EAAEqpG,GAAGrpG,EAAE2R,KAAK5T,GAAGa,EAAE4H,GAAG,MAAMzI,EAAE,MAAM1D,MAAM0I,EAAE,IAAI/C,EAAE,KAAM,OAAOhC,EAAE,KAAK,EAAE,OAAOY,EAAEZ,EAAE2T,KAAK3R,EAAEhC,EAAEgxG,aAA2Cj/D,GAAGhyC,EAAEC,EAAEY,EAArCoB,EAAEhC,EAAEuvG,cAAc3uG,EAAEoB,EAAEqpG,GAAGzqG,EAAEoB,GAAcwG,GAAG,KAAK,EAAE,OAAO5H,EAAEZ,EAAE2T,KAAK3R,EAAEhC,EAAEgxG,aAA2CjzE,GAAGh+B,EAAEC,EAAEY,EAArCoB,EAAEhC,EAAEuvG,cAAc3uG,EAAEoB,EAAEqpG,GAAGzqG,EAAEoB,GAAcwG,GAAG,KAAK,EAAwB,GAAtB81C,GAAGt+C,GAAGY,EAAEZ,EAAEwsG,YAAe,OAAOzsG,GAAG,OAAOa,EAAE,MAAMvE,MAAM0I,EAAE,MAC3Y,GAA9GnE,EAAEZ,EAAEgxG,aAA+BhvG,EAAE,QAApBA,EAAEhC,EAAE+2F,eAAyB/0F,EAAEqM,QAAQ,KAAK0+F,GAAGhtG,EAAEC,GAAGstG,GAAGttG,EAAEY,EAAE,KAAK4H,IAAG5H,EAAEZ,EAAE+2F,cAAc1oF,WAAerM,EAAEovG,KAAKpxG,EAAEU,GAAGX,EAAEC,EAAEwI,OAAO,CAAuF,IAArErI,GAAjB6B,EAAEhC,EAAEo1F,WAAiBqD,WAAQkY,GAAGjJ,GAAG1nG,EAAEo1F,UAAUsD,cAAc3+E,YAAY22F,GAAG1wG,EAAEG,EAAEywG,IAAG,GAAMzwG,EAAE,CAAqC,GAAG,OAAvCJ,EAAEiC,EAAE07G,iCAA2C,IAAI17G,EAAE,EAAEA,EAAEjC,EAAErF,OAAOsH,GAAG,GAAE7B,EAAEJ,EAAEiC,IAAKuvG,8BAA8BxxG,EAAEiC,EAAE,GAAGqvG,GAAGj3G,KAAK+F,GAAoB,IAAjBqI,EAAEqnG,GAAG7vG,EAAE,KAAKY,EAAE4H,GAAOxI,EAAEuV,MAAM/M,EAAEA,GAAGA,EAAEquF,OAAe,EAATruF,EAAEquF,MAAS,KAAKruF,EAAEA,EAAE0uF,aAAanhC,GAAGh2D,EAAEC,EAAEY,EAAE4H,GAAG4oG,KAAKpxG,EAAEA,EAAEuV,MAAM,OAAOvV,EAAE,KAAK,EAAE,OAAOswG,GAAGtwG,GAAG,OAAOD,GACnfkxG,GAAGjxG,GAAGY,EAAEZ,EAAE2T,KAAK3R,EAAEhC,EAAEgxG,aAAa7wG,EAAE,OAAOJ,EAAEA,EAAEywG,cAAc,KAAK3oG,EAAE7F,EAAE4S,SAASyyF,GAAGzmG,EAAEoB,GAAG6F,EAAE,KAAK,OAAO1H,GAAGknG,GAAGzmG,EAAET,KAAKH,EAAE62F,OAAO,IAAI0e,GAAGx1G,EAAEC,GAAG+1D,GAAGh2D,EAAEC,EAAE6H,EAAEW,GAAGxI,EAAEuV,MAAM,KAAK,EAAE,OAAO,OAAOxV,GAAGkxG,GAAGjxG,GAAG,KAAK,KAAK,GAAG,OAAO4wC,GAAG7wC,EAAEC,EAAEwI,GAAG,KAAK,EAAE,OAAO2nG,GAAGnwG,EAAEA,EAAEo1F,UAAUsD,eAAe93F,EAAEZ,EAAEgxG,aAAa,OAAOjxG,EAAEC,EAAEuV,MAAMq6F,GAAG5vG,EAAE,KAAKY,EAAE4H,GAAGutD,GAAGh2D,EAAEC,EAAEY,EAAE4H,GAAGxI,EAAEuV,MAAM,KAAK,GAAG,OAAO3U,EAAEZ,EAAE2T,KAAK3R,EAAEhC,EAAEgxG,aAA2CgE,GAAGj1G,EAAEC,EAAEY,EAArCoB,EAAEhC,EAAEuvG,cAAc3uG,EAAEoB,EAAEqpG,GAAGzqG,EAAEoB,GAAcwG,GAAG,KAAK,EAAE,OAAOutD,GAAGh2D,EAAEC,EAAEA,EAAEgxG,aAAaxoG,GAAGxI,EAAEuV,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOwgD,GAAGh2D,EAAEC,EAAEA,EAAEgxG,aAAap8F,SAASpM,GAAGxI,EAAEuV,MAAM,KAAK,GAAGxV,EAAE,CAACa,EAAEZ,EAAE2T,KAAKm/C,SAAS9wD,EAAEhC,EAAEgxG,aAAanpG,EAAE7H,EAAEwwG,cAAcrwG,EAAE6B,EAAEpF,MAAM,IAAIwuB,EAAEprB,EAAE2T,KAAKm/C,SAAiD,GAAxC3b,GAAEm0D,GAAGlgF,EAAEm/D,eAAen/D,EAAEm/D,cAAcpqF,EAAK,OAAO0H,EAAE,GAAGujB,EAAEvjB,EAAEjL,MAA0G,KAApGuD,EAAEgkG,GAAG/4E,EAAEjrB,GAAG,EAAwF,GAArF,oBAAoBS,EAAE0pF,sBAAsB1pF,EAAE0pF,sBAAsBl/D,EAAEjrB,GAAG,cAAqB,GAAG0H,EAAE+M,WAAW5S,EAAE4S,WAAWqnB,GAAEkwB,QAAQ,CAACnsD,EAAEU,GAAGX,EAAEC,EAAEwI,GAAG,MAAMzI,QAAQ,IAAc,QAAVqrB,EAAEprB,EAAEuV,SAAiB6V,EAAEwrE,OAAO52F,GAAG,OAAOorB,GAAG,CAAC,IAAItf,EAAEsf,EAAE2gF,aAAa,GAAG,OAAOjgG,EAAE,CAACjE,EAAEujB,EAAE7V,MAAM,IAAI,IAAI+U,EACtfxe,EAAEkgG,aAAa,OAAO1hF,GAAG,CAAC,GAAGA,EAAElZ,UAAUxQ,GAAG,KAAK0pB,EAAE8hF,aAAajsG,GAAG,CAAC,IAAIirB,EAAEqjE,OAAMnkE,EAAE0iF,IAAI,EAAExkG,GAAGA,IAAKimF,IAAI,EAAE2e,GAAGhiF,EAAEd,IAAIc,EAAE6gF,OAAOzjG,EAAgB,QAAd8hB,EAAEc,EAAEurE,aAAqBrsE,EAAE2hF,OAAOzjG,GAAGojG,GAAGxgF,EAAEwrE,OAAOpuF,GAAGsD,EAAEmgG,OAAOzjG,EAAE,MAAM8hB,EAAEA,EAAEjoB,WAAWwF,EAAE,KAAKujB,EAAEqjE,KAAIrjE,EAAEzX,OAAO3T,EAAE2T,KAAK,KAAayX,EAAE7V,MAAM,GAAG,OAAO1N,EAAEA,EAAE+uF,OAAOxrE,OAAO,IAAIvjB,EAAEujB,EAAE,OAAOvjB,GAAG,CAAC,GAAGA,IAAI7H,EAAE,CAAC6H,EAAE,KAAK,MAAkB,GAAG,QAAfujB,EAAEvjB,EAAEqvF,SAAoB,CAAC9rE,EAAEwrE,OAAO/uF,EAAE+uF,OAAO/uF,EAAEujB,EAAE,MAAMvjB,EAAEA,EAAE+uF,OAAOxrE,EAAEvjB,EAAEkuD,GAAGh2D,EAAEC,EAAEgC,EAAE4S,SAASpM,GAAGxI,EAAEA,EAAEuV,MAAM,OAAOvV,EAAE,KAAK,EAAE,OAAOgC,EAAEhC,EAAE2T,KAAsB/S,GAAjBT,EAAEH,EAAEgxG,cAAiBp8F,SAASk3F,GAAG9rG,EAAEwI,GACnd5H,EAAEA,EADodoB,EAAEmqG,GAAGnqG,EACpf7B,EAAEo+G,wBAA8Bv+G,EAAE62F,OAAO,EAAE9gC,GAAGh2D,EAAEC,EAAEY,EAAE4H,GAAGxI,EAAEuV,MAAM,KAAK,GAAG,OAAgBpV,EAAEkrG,GAAXrpG,EAAEhC,EAAE2T,KAAY3T,EAAEgxG,cAA6BiE,GAAGl1G,EAAEC,EAAEgC,EAAtB7B,EAAEkrG,GAAGrpG,EAAE2R,KAAKxT,GAAcS,EAAE4H,GAAG,KAAK,GAAG,OAAO2sG,GAAGp1G,EAAEC,EAAEA,EAAE2T,KAAK3T,EAAEgxG,aAAapwG,EAAE4H,GAAG,KAAK,GAAG,OAAO5H,EAAEZ,EAAE2T,KAAK3R,EAAEhC,EAAEgxG,aAAahvG,EAAEhC,EAAEuvG,cAAc3uG,EAAEoB,EAAEqpG,GAAGzqG,EAAEoB,GAAG,OAAOjC,IAAIA,EAAE42F,UAAU,KAAK32F,EAAE22F,UAAU,KAAK32F,EAAE62F,OAAO,GAAG72F,EAAEyuF,IAAI,EAAEia,GAAG9nG,IAAIb,GAAE,EAAGipG,GAAGhpG,IAAID,GAAE,EAAG+rG,GAAG9rG,EAAEwI,GAAG0lG,GAAGluG,EAAEY,EAAEoB,GAAGusG,GAAGvuG,EAAEY,EAAEoB,EAAEwG,GAAGmtG,GAAG,KAAK31G,EAAEY,GAAE,EAAGb,EAAEyI,GAAG,KAAK,GAAG,OAAOquG,GAAG92G,EAAEC,EAAEwI,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAO4sG,GAAGr1G,EAAEC,EAAEwI,GAAG,MAAMnM,MAAM0I,EAAE,IAAI/E,EAAEyuF,OAa/esvB,GAAGliH,UAAUkvF,OAAO,SAAShrF,GAAG69G,GAAG79G,EAAE3B,KAAK8/G,cAAc,KAAK,OAAOH,GAAGliH,UAAU2iH,QAAQ,WAAW,IAAIz+G,EAAE3B,KAAK8/G,cAAcl+G,EAAED,EAAE24F,cAAcklB,GAAG,KAAK79G,EAAE,MAAK,WAAWC,EAAEymG,IAAI,SAEwJrP,GAAG,SAASr3F,GAAM,KAAKA,EAAE0uF,MAAgBsf,GAAGhuG,EAAE,EAAV8tG,MAAexyD,GAAGt7C,EAAE,KAAKs3F,GAAG,SAASt3F,GAAM,KAAKA,EAAE0uF,MAAgBsf,GAAGhuG,EAAE,SAAV8tG,MAAsBxyD,GAAGt7C,EAAE,YACncu3F,GAAG,SAASv3F,GAAG,GAAG,KAAKA,EAAE0uF,IAAI,CAAC,IAAIzuF,EAAE6tG,KAAKrlG,EAAEslG,GAAG/tG,GAAGguG,GAAGhuG,EAAEyI,EAAExI,GAAGq7C,GAAGt7C,EAAEyI,KAAK+uF,GAAG,SAASx3F,EAAEC,GAAG,OAAOA,KAC7FwzB,GAAG,SAASzzB,EAAEC,EAAEwI,GAAG,OAAOxI,GAAG,IAAK,QAAyB,GAAjBywC,GAAG1wC,EAAEyI,GAAGxI,EAAEwI,EAAEhH,KAAQ,UAAUgH,EAAEmL,MAAM,MAAM3T,EAAE,CAAC,IAAIwI,EAAEzI,EAAEyI,EAAEoK,YAAYpK,EAAEA,EAAEoK,WAAsF,IAA3EpK,EAAEA,EAAE6L,iBAAiB,cAAcqhC,KAAKC,UAAU,GAAG31C,GAAG,mBAAuBA,EAAE,EAAEA,EAAEwI,EAAE9N,OAAOsF,IAAI,CAAC,IAAIY,EAAE4H,EAAExI,GAAG,GAAGY,IAAIb,GAAGa,EAAE69G,OAAO1+G,EAAE0+G,KAAK,CAAC,IAAIz8G,EAAEqzF,GAAGz0F,GAAG,IAAIoB,EAAE,MAAM3F,MAAM0I,EAAE,KAAKsqF,EAAGzuF,GAAG6vC,GAAG7vC,EAAEoB,KAAK,MAAM,IAAK,WAAW6uF,GAAG9wF,EAAEyI,GAAG,MAAM,IAAK,SAAmB,OAAVxI,EAAEwI,EAAE5L,QAAe0zF,GAAGvwF,IAAIyI,EAAEyuG,SAASj3G,GAAE,KAAMw1F,GAAG0mB,GAC9ZzmB,GAAG,SAAS11F,EAAEC,EAAEwI,EAAE5H,EAAEoB,GAAG,IAAI7B,EAAE43B,GAAEA,IAAG,EAAE,IAAI,OAAOizE,GAAG,GAAGjrG,EAAEoG,KAAK,KAAKnG,EAAEwI,EAAE5H,EAAEoB,IAAnC,QAAmD,KAAJ+1B,GAAE53B,KAAU+5G,KAAKhP,QAAQxV,GAAG,WAAW,KAAO,GAAF39D,MAhD/H,WAAc,GAAG,OAAOwiF,GAAG,CAAC,IAAIx6G,EAAEw6G,GAAGA,GAAG,KAAKx6G,EAAEnF,SAAQ,SAASmF,GAAGA,EAAE26F,cAAc,GAAG36F,EAAE06F,aAAaygB,GAAGn7G,EAAEupF,SAAO4hB,KAgDsBwT,GAAKlD,OAAO7lB,GAAG,SAAS51F,EAAEC,GAAG,IAAIwI,EAAEuvB,GAAEA,IAAG,EAAE,IAAI,OAAOh4B,EAAEC,GAAb,QAA4B,KAAJ+3B,GAAEvvB,KAAU0xG,KAAKhP,QAA+I,IAAIyT,GAAG,CAACC,OAAO,CAACzpB,GAAGiO,GAAG/N,GAAGC,GAAGC,GAAGimB,GAAG,CAACrvD,SAAQ,KAAM0yD,GAAG,CAACC,wBAAwBxmB,GAAGymB,WAAW,EAAElzB,QAAQ,SAASmzB,oBAAoB,aACven9C,GAAG,CAACk9C,WAAWF,GAAGE,WAAWlzB,QAAQgzB,GAAGhzB,QAAQmzB,oBAAoBH,GAAGG,oBAAoBC,eAAeJ,GAAGI,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBzyB,EAAGtD,uBAAuBg2B,wBAAwB,SAAS5/G,GAAW,OAAO,QAAfA,EAAEo4D,GAAGp4D,IAAmB,KAAKA,EAAEq1F,WAAW0pB,wBAAwBD,GAAGC,yBAR/I,WAAc,OAAO,MAS7Wc,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,qBAAqB/4B,+BAA+B,CAAC,IAAInlB,GAAGmlB,+BAA+B,IAAInlB,GAAGm+C,YAAYn+C,GAAGo+C,cAAc,IAAI/W,GAAGrnC,GAAGq+C,OAAOt+C,IAAIunC,GAAGtnC,GAAG,MAAM/hE,MAAKxG,EAAQ4wF,mDAAmDw0B,GAAGplH,EAAQ6mH,aAAa/B,GACnX9kH,EAAQ8mH,YAAY,SAAStgH,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEwxF,SAAS,OAAOxxF,EAAE,IAAIC,EAAED,EAAE6tG,gBAAgB,QAAG,IAAS5tG,EAAE,CAAC,GAAG,oBAAoBD,EAAEgrF,OAAO,MAAM1uF,MAAM0I,EAAE,MAAM,MAAM1I,MAAM0I,EAAE,IAAIlL,OAAOD,KAAKmG,KAA0C,OAA5BA,EAAE,QAAVA,EAAEo4D,GAAGn4D,IAAc,KAAKD,EAAEq1F,WAAoB77F,EAAQ+mH,UAAU,SAASvgH,EAAEC,GAAG,IAAIwI,EAAEuvB,GAAE,GAAG,KAAO,GAAFvvB,GAAM,OAAOzI,EAAEC,GAAG+3B,IAAG,EAAE,IAAI,GAAGh4B,EAAE,OAAOirG,GAAG,GAAGjrG,EAAEoG,KAAK,KAAKnG,IAAlC,QAA8C+3B,GAAEvvB,EAAE0iG,OAAO3xG,EAAQk/F,QAAQ,SAAS14F,EAAEC,EAAEwI,GAAG,IAAI21G,GAAGn+G,GAAG,MAAM3D,MAAM0I,EAAE,MAAM,OAAOq5G,GAAG,KAAKr+G,EAAEC,GAAE,EAAGwI,IACndjP,EAAQwxF,OAAO,SAAShrF,EAAEC,EAAEwI,GAAG,IAAI21G,GAAGn+G,GAAG,MAAM3D,MAAM0I,EAAE,MAAM,OAAOq5G,GAAG,KAAKr+G,EAAEC,GAAE,EAAGwI,IAAIjP,EAAQgnH,uBAAuB,SAASxgH,GAAG,IAAIo+G,GAAGp+G,GAAG,MAAM1D,MAAM0I,EAAE,KAAK,QAAOhF,EAAE05G,sBAAqB0C,IAAG,WAAWiC,GAAG,KAAK,KAAKr+G,GAAE,GAAG,WAAWA,EAAE05G,oBAAoB,KAAK15G,EAAE0mG,IAAI,YAAS,IAAQltG,EAAQinH,wBAAwBtE,GAAG3iH,EAAQknH,sBAAsB,SAAS1gH,EAAEC,GAAG,OAAOq+G,GAAGt+G,EAAEC,EAAE,EAAEvF,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,OAC9alB,EAAQmnH,oCAAoC,SAAS3gH,EAAEC,EAAEwI,EAAE5H,GAAG,IAAIu9G,GAAG31G,GAAG,MAAMnM,MAAM0I,EAAE,MAAM,GAAG,MAAMhF,QAAG,IAASA,EAAE6tG,gBAAgB,MAAMvxG,MAAM0I,EAAE,KAAK,OAAOq5G,GAAGr+G,EAAEC,EAAEwI,GAAE,EAAG5H,IAAIrH,EAAQsyF,QAAQ,U,6BCrS3LvyF,EAAOC,QAAUC,EAAQ,K,6BCKd,IAAI2G,EAAE0H,EAAEujB,EAAEtf,EAAE,GAAG,kBAAkBqkB,aAAa,oBAAoBA,YAAYC,IAAI,CAAC,IAAI9F,EAAE6F,YAAY52B,EAAQ+gG,aAAa,WAAW,OAAOhwE,EAAE8F,WAAW,CAAC,IAAInzB,EAAE2wB,KAAKW,EAAEtxB,EAAEmzB,MAAM72B,EAAQ+gG,aAAa,WAAW,OAAOr9F,EAAEmzB,MAAM7B,GAC3O,GAAG,qBAAqBtd,QAAQ,oBAAoB0vG,eAAe,CAAC,IAAIv0G,EAAE,KAAKy8B,EAAE,KAAKrQ,EAAE,SAAFA,IAAa,GAAG,OAAOpsB,EAAE,IAAI,IAAIrM,EAAExG,EAAQ+gG,eAAeluF,GAAE,EAAGrM,GAAGqM,EAAE,KAAK,MAAMpM,GAAG,MAAM0f,WAAW8Y,EAAE,GAAGx4B,IAAKG,EAAE,SAASJ,GAAG,OAAOqM,EAAEsT,WAAWvf,EAAE,EAAEJ,IAAIqM,EAAErM,EAAE2f,WAAW8Y,EAAE,KAAK3wB,EAAE,SAAS9H,EAAEC,GAAG6oC,EAAEnpB,WAAW3f,EAAEC,IAAIorB,EAAE,WAAWkG,aAAauX,IAAItvC,EAAQmwG,qBAAqB,WAAW,OAAM,GAAI59F,EAAEvS,EAAQqnH,wBAAwB,iBAAiB,CAAC,IAAIpgH,EAAEyQ,OAAOyO,WAAW3a,EAAEkM,OAAOqgB,aAAa,GAAG,qBAAqB41D,QAAQ,CAAC,IAAIn7E,EAC7fkF,OAAO4vG,qBAAqB,oBAAoB5vG,OAAOqf,uBAAuB42D,QAAQh9E,MAAM,sJAAsJ,oBAAoB6B,GAAGm7E,QAAQh9E,MAAM,qJAAqJ,IAAI25B,GAAE,EAAGC,EAAE,KAAKC,GAAG,EAAEC,EAAE,EAAE9H,EAAE,EAAE3iC,EAAQmwG,qBAAqB,WAAW,OAAOnwG,EAAQ+gG,gBAChgBp+D,GAAGpwB,EAAE,aAAavS,EAAQqnH,wBAAwB,SAAS7gH,GAAG,EAAEA,GAAG,IAAIA,EAAEmnF,QAAQh9E,MAAM,mHAAmH85B,EAAE,EAAEjkC,EAAEwE,KAAKwF,MAAM,IAAIhK,GAAG,GAAG,IAAI+B,EAAE,IAAI6+G,eAAe56C,EAAEjkE,EAAEg/G,MAAMh/G,EAAEi/G,MAAMC,UAAU,WAAW,GAAG,OAAOl9E,EAAE,CAAC,IAAI/jC,EAAExG,EAAQ+gG,eAAep+D,EAAEn8B,EAAEikC,EAAE,IAAIF,GAAE,EAAG/jC,GAAGgmE,EAAEk7C,YAAY,OAAOp9E,GAAE,EAAGC,EAAE,MAAM,MAAM9jC,GAAG,MAAM+lE,EAAEk7C,YAAY,MAAMjhH,QAAS6jC,GAAE,GAAI1jC,EAAE,SAASJ,GAAG+jC,EAAE/jC,EAAE8jC,IAAIA,GAAE,EAAGkiC,EAAEk7C,YAAY,QAAQp5G,EAAE,SAAS9H,EAAEC,GAAG+jC,EACtfvjC,GAAE,WAAWT,EAAExG,EAAQ+gG,kBAAiBt6F,IAAIorB,EAAE,WAAWrmB,EAAEg/B,GAAGA,GAAG,GAAG,SAASssC,EAAEtwE,EAAEC,GAAG,IAAIwI,EAAEzI,EAAErF,OAAOqF,EAAE3F,KAAK4F,GAAGD,EAAE,OAAO,CAAC,IAAIa,EAAE4H,EAAE,IAAI,EAAExG,EAAEjC,EAAEa,GAAG,UAAG,IAASoB,GAAG,EAAEm1C,EAAEn1C,EAAEhC,IAA0B,MAAMD,EAA7BA,EAAEa,GAAGZ,EAAED,EAAEyI,GAAGxG,EAAEwG,EAAE5H,GAAgB,SAASqoF,EAAElpF,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAChP,SAASwpF,EAAExpF,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAIwI,EAAEzI,EAAE0D,MAAM,GAAG+E,IAAIxI,EAAE,CAACD,EAAE,GAAGyI,EAAEzI,EAAE,IAAI,IAAIa,EAAE,EAAEoB,EAAEjC,EAAErF,OAAOkG,EAAEoB,GAAG,CAAC,IAAIuJ,EAAE,GAAG3K,EAAE,GAAG,EAAExB,EAAEW,EAAEwL,GAAGrH,EAAEqH,EAAE,EAAEyC,EAAEjO,EAAEmE,GAAG,QAAG,IAAS9E,GAAG,EAAE+3C,EAAE/3C,EAAEoJ,QAAG,IAASwF,GAAG,EAAEmpC,EAAEnpC,EAAE5O,IAAIW,EAAEa,GAAGoN,EAAEjO,EAAEmE,GAAGsE,EAAE5H,EAAEsD,IAAInE,EAAEa,GAAGxB,EAAEW,EAAEwL,GAAG/C,EAAE5H,EAAE2K,OAAQ,WAAG,IAASyC,GAAG,EAAEmpC,EAAEnpC,EAAExF,IAA0B,MAAMzI,EAA7BA,EAAEa,GAAGoN,EAAEjO,EAAEmE,GAAGsE,EAAE5H,EAAEsD,IAAgB,OAAOlE,EAAE,OAAO,KAAK,SAASm3C,EAAEp3C,EAAEC,GAAG,IAAIwI,EAAEzI,EAAEmhH,UAAUlhH,EAAEkhH,UAAU,OAAO,IAAI14G,EAAEA,EAAEzI,EAAE6xB,GAAG5xB,EAAE4xB,GAAG,IAAI0+C,EAAE,GAAGlX,EAAE,GAAGn9B,EAAE,EAAEqtD,EAAE,KAAKj3C,EAAE,EAAErK,GAAE,EAAGj6B,GAAE,EAAGouB,GAAE,EACja,SAASnoB,EAAEjU,GAAG,IAAI,IAAIC,EAAEipF,EAAE7vB,GAAG,OAAOp5D,GAAG,CAAC,GAAG,OAAOA,EAAE4T,SAAS21E,EAAEnwB,OAAQ,MAAGp5D,EAAEmhH,WAAWphH,GAAgD,MAA9CwpF,EAAEnwB,GAAGp5D,EAAEkhH,UAAUlhH,EAAEohH,eAAe/wC,EAAEC,EAAEtwE,GAAcA,EAAEipF,EAAE7vB,IAAI,SAASqd,EAAE12E,GAAa,GAAVo8B,GAAE,EAAGnoB,EAAEjU,IAAOgO,EAAE,GAAG,OAAOk7E,EAAE3Y,GAAGviE,GAAE,EAAG5N,EAAE2N,OAAO,CAAC,IAAI9N,EAAEipF,EAAE7vB,GAAG,OAAOp5D,GAAG6H,EAAE4uE,EAAEz2E,EAAEmhH,UAAUphH,IACtP,SAAS+N,EAAE/N,EAAEC,GAAG+N,GAAE,EAAGouB,IAAIA,GAAE,EAAG/Q,KAAK4c,GAAE,EAAG,IAAIx/B,EAAE6pC,EAAE,IAAS,IAALr+B,EAAEhU,GAAOspF,EAAEL,EAAE3Y,GAAG,OAAOgZ,MAAMA,EAAE83B,eAAephH,IAAID,IAAIxG,EAAQmwG,yBAAyB,CAAC,IAAI9oG,EAAE0oF,EAAE11E,SAAS,GAAG,oBAAoBhT,EAAE,CAAC0oF,EAAE11E,SAAS,KAAKy+B,EAAEi3C,EAAE+3B,cAAc,IAAIr/G,EAAEpB,EAAE0oF,EAAE83B,gBAAgBphH,GAAGA,EAAEzG,EAAQ+gG,eAAe,oBAAoBt4F,EAAEsnF,EAAE11E,SAAS5R,EAAEsnF,IAAIL,EAAE3Y,IAAIiZ,EAAEjZ,GAAGt8D,EAAEhU,QAAQupF,EAAEjZ,GAAGgZ,EAAEL,EAAE3Y,GAAG,GAAG,OAAOgZ,EAAE,IAAI/9E,GAAE,MAAO,CAAC,IAAInM,EAAE6pF,EAAE7vB,GAAG,OAAOh6D,GAAGyI,EAAE4uE,EAAEr3E,EAAE+hH,UAAUnhH,GAAGuL,GAAE,EAAG,OAAOA,EAArX,QAA+X+9E,EAAE,KAAKj3C,EAAE7pC,EAAEw/B,GAAE,GAAI,IAAIhM,EAAElwB,EAAEvS,EAAQgxG,sBAAsB,EACtehxG,EAAQ0wG,2BAA2B,EAAE1wG,EAAQ8wG,qBAAqB,EAAE9wG,EAAQ0/F,wBAAwB,EAAE1/F,EAAQ+nH,mBAAmB,KAAK/nH,EAAQmiG,8BAA8B,EAAEniG,EAAQiwG,wBAAwB,SAASzpG,GAAGA,EAAE6T,SAAS,MAAMra,EAAQgoH,2BAA2B,WAAWxzG,GAAGi6B,IAAIj6B,GAAE,EAAG5N,EAAE2N,KAAKvU,EAAQwwG,iCAAiC,WAAW,OAAO13D,GAAG94C,EAAQioH,8BAA8B,WAAW,OAAOv4B,EAAE3Y,IACpa/2E,EAAQkoH,cAAc,SAAS1hH,GAAG,OAAOsyC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIryC,EAAE,EAAE,MAAM,QAAQA,EAAEqyC,EAAE,IAAI7pC,EAAE6pC,EAAEA,EAAEryC,EAAE,IAAI,OAAOD,IAAX,QAAuBsyC,EAAE7pC,IAAIjP,EAAQmoH,wBAAwB,aAAanoH,EAAQqwG,sBAAsB5tE,EAAEziC,EAAQi/F,yBAAyB,SAASz4F,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIyI,EAAE6pC,EAAEA,EAAEtyC,EAAE,IAAI,OAAOC,IAAX,QAAuBqyC,EAAE7pC,IACpWjP,EAAQy/F,0BAA0B,SAASj5F,EAAEC,EAAEwI,GAAG,IAAI5H,EAAErH,EAAQ+gG,eAA8F,OAA/E,kBAAkB9xF,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEooB,QAA6B,EAAEpoB,EAAE5H,EAAE4H,EAAE5H,EAAG4H,EAAE5H,EAASb,GAAG,KAAK,EAAE,IAAIiC,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAA2M,OAAjMjC,EAAE,CAAC6xB,GAAGqK,IAAIroB,SAAS5T,EAAEqhH,cAActhH,EAAEohH,UAAU34G,EAAE44G,eAAvDp/G,EAAEwG,EAAExG,EAAoEk/G,WAAW,GAAG14G,EAAE5H,GAAGb,EAAEmhH,UAAU14G,EAAE6nE,EAAEjX,EAAEr5D,GAAG,OAAOkpF,EAAE3Y,IAAIvwE,IAAIkpF,EAAE7vB,KAAKj9B,EAAE/Q,IAAI+Q,GAAE,EAAGt0B,EAAE4uE,EAAEjuE,EAAE5H,MAAMb,EAAEmhH,UAAUl/G,EAAEquE,EAAEC,EAAEvwE,GAAGgO,GAAGi6B,IAAIj6B,GAAE,EAAG5N,EAAE2N,KAAY/N,GAC1dxG,EAAQooH,sBAAsB,SAAS5hH,GAAG,IAAIC,EAAEqyC,EAAE,OAAO,WAAW,IAAI7pC,EAAE6pC,EAAEA,EAAEryC,EAAE,IAAI,OAAOD,EAAE1F,MAAM+D,KAAK3D,WAAxB,QAA2C43C,EAAE7pC,M,eCnB7H,IAAIo5G,EAAgB,WACnB,GAAoB,kBAAT9kH,MAAqBA,KAAM,OAAOA,KAC7C,GAAsB,kBAAXmU,QAAuBA,OAAQ,OAAOA,OACjD,MAAM,IAAI5U,MAAM,oCAGjB/C,EAAOC,QAAW,WACjB,GAAI6E,KAAM,OAAOA,KAKjB,GAA0B,kBAAfmpF,YAA2BA,WAAY,OAAOA,WAKzD,IACC1tF,OAAOmB,eAAenB,OAAOgC,UAAW,aAAc,CACrD+J,IAAK,WAAc,OAAOxH,MAC1B5C,cAAc,IAEd,MAAO0O,GAGR,OAAO03G,IAER,IAEC,OAAKC,YAAmBD,IAFzB,eAKQ/nH,OAAOgC,UAAUgmH,YA1BR,I,gBCNlBvoH,EAAOC,QAAUC,EAAQ,IAAmBqyF,S,unCCQ/BryF,EAAQ,IAAiB,IAAI2G,EAAE3G,EAAQ,GAASqO,EAAE,MAA6B,GAAvBtO,EAAQwuF,SAAS,MAAS,oBAAoBvqF,QAAQA,OAAO2qF,IAAI,CAAC,IAAI/8D,EAAE5tB,OAAO2qF,IAAItgF,EAAEujB,EAAE,iBAAiB7xB,EAAQwuF,SAAS38D,EAAE,kBAAkB,IAAI7f,EAAEpL,EAAEgqF,mDAAmDN,kBAAkBzqF,EAAEvF,OAAOgC,UAAU0C,eAAetB,EAAE,CAACpC,KAAI,EAAGiuF,KAAI,EAAGC,QAAO,EAAGC,UAAS,GACrW,SAASz6D,EAAE/lB,EAAEzI,EAAE+L,GAAG,IAAI9L,EAAEY,EAAE,GAAGoB,EAAE,KAAKsoB,EAAE,KAAiF,IAAItqB,UAAhF,IAAS8L,IAAI9J,EAAE,GAAG8J,QAAG,IAAS/L,EAAElF,MAAMmH,EAAE,GAAGjC,EAAElF,UAAK,IAASkF,EAAE+oF,MAAMx+D,EAAEvqB,EAAE+oF,KAAc/oF,EAAEX,EAAEzB,KAAKoC,EAAEC,KAAK/C,EAAEsB,eAAeyB,KAAKY,EAAEZ,GAAGD,EAAEC,IAAI,GAAGwI,GAAGA,EAAE0gF,aAAa,IAAIlpF,KAAKD,EAAEyI,EAAE0gF,kBAAe,IAAStoF,EAAEZ,KAAKY,EAAEZ,GAAGD,EAAEC,IAAI,MAAM,CAACmpF,SAASthF,EAAE8L,KAAKnL,EAAE3N,IAAImH,EAAE8mF,IAAIx+D,EAAEhvB,MAAMsF,EAAEwoF,OAAO79E,EAAE4gD,SAAS5yD,EAAQuoH,IAAIvzF,EAAEh1B,EAAQwoH,KAAKxzF,G,6BCCvV,IAAIyzF,EAAUxoH,EAAQ,IAIlByoH,EAAc,GAgBlB,SAASC,EAAWC,EAAW9wG,EAAQtR,EAAGC,EAAGwI,EAAG5H,EAAGoB,EAAG7B,GAGpD,IAAKgiH,EAAW,CACd,IAAIj4G,EACJ,QAAetL,IAAXyS,EACFnH,EAAQ,IAAI7N,MAAM,qIACb,CACL,IAAI2J,EAAO,CAACjG,EAAGC,EAAGwI,EAAG5H,EAAGoB,EAAG7B,GACvBiiH,EAAW,GACfl4G,EAAQ,IAAI7N,MAAMgV,EAAOkmC,QAAQ,OAAO,WACtC,OAAOvxC,EAAKo8G,UAER5gH,KAAO,sBAIf,MADA0I,EAAMm4G,YAAc,EACdn4G,GAIV,IA4CIo4G,EAAa,SA04BjBhpH,EAAOC,QAv3BP,SAAiBgpH,EAAgB9lH,EAAgBH,GAK/C,IAAIkmH,EAAiB,GAwBjBC,EAAsB,CAOxBC,OAAQ,cASRC,QAAS,cAQTC,UAAW,cAQXra,aAAc,cAQdI,kBAAmB,cAcnBka,gBAAiB,qBAgBjBC,gBAAiB,qBAMjB/Z,gBAAiB,qBAiBjBhe,OAAQ,cAWR4jB,mBAAoB,cAYpBC,kBAAmB,cAqBnBP,0BAA2B,cAsB3BJ,sBAAuB,cAiBvBwH,oBAAqB,cAcrBC,mBAAoB,cAapByD,qBAAsB,cAOtBzK,0BAA2B,cAO3BJ,iCAAkC,cAOlCkH,2BAA4B,cAc5BuN,gBAAiB,iBAMfC,EAA4B,CAW9BxU,yBAA0B,sBAYxByU,EAAqB,CACvB10B,YAAa,SAASpzF,EAAaozF,GACjCpzF,EAAYozF,YAAcA,GAE5Bm0B,OAAQ,SAASvnH,EAAaunH,GAC5B,GAAIA,EACF,IAAK,IAAIloH,EAAI,EAAGA,EAAIkoH,EAAOhoH,OAAQF,IACjC0oH,EAAqB/nH,EAAaunH,EAAOloH,KAI/CmuG,kBAAmB,SAASxtG,EAAawtG,GAIvCxtG,EAAYwtG,kBAAoBqZ,EAC9B,GACA7mH,EAAYwtG,kBACZA,IAGJJ,aAAc,SAASptG,EAAaotG,GAIlCptG,EAAYotG,aAAeyZ,EACzB,GACA7mH,EAAYotG,aACZA,IAOJsa,gBAAiB,SAAS1nH,EAAa0nH,GACjC1nH,EAAY0nH,gBACd1nH,EAAY0nH,gBAAkBM,EAC5BhoH,EAAY0nH,gBACZA,GAGF1nH,EAAY0nH,gBAAkBA,GAGlCD,UAAW,SAASznH,EAAaynH,GAI/BznH,EAAYynH,UAAYZ,EAAQ,GAAI7mH,EAAYynH,UAAWA,IAE7DD,QAAS,SAASxnH,EAAawnH,IA0KjC,SAAoCxnH,EAAawnH,GAC/C,IAAKA,EACH,OAGF,IAAK,IAAInhH,KAAQmhH,EAAS,CACxB,IAAIj9G,EAAWi9G,EAAQnhH,GACvB,GAAKmhH,EAAQpkH,eAAeiD,GAA5B,CAeA,GAVA0gH,IADiB1gH,KAAQyhH,GAGvB,0MAIAzhH,GAGqBA,KAAQrG,EAgB7B,OAVA+mH,EACiB,wBALAc,EAA0BzkH,eAAeiD,GACtDwhH,EAA0BxhH,GAC1B,MAIF,uHAGAA,QAGFrG,EAAYqG,GAAQ2hH,EAA2BhoH,EAAYqG,GAAOkE,IAKpEvK,EAAYqG,GAAQkE,IAjNpB09G,CAA2BjoH,EAAawnH,IAE1CU,SAAU,cAsBZ,SAASC,EAAuBC,EAAkB/hH,GAChD,IAAIgiH,EAAaf,EAAoBlkH,eAAeiD,GAChDihH,EAAoBjhH,GACpB,KAGAiiH,EAAgBllH,eAAeiD,IACjC0gH,EACiB,kBAAfsB,EACA,2JAGAhiH,GAKA+hH,GACFrB,EACiB,gBAAfsB,GAA+C,uBAAfA,EAChC,gIAGAhiH,GASN,SAAS0hH,EAAqB/nH,EAAauoH,GACzC,GAAKA,EAAL,CAqBAxB,EACkB,oBAATwB,EACP,sHAIFxB,GACGzlH,EAAeinH,GAChB,oGAIF,IAAIC,EAAQxoH,EAAYU,UACpB+nH,EAAgBD,EAAME,qBAS1B,IAAK,IAAIriH,KAJLkiH,EAAKnlH,eAAe+jH,IACtBW,EAAmBP,OAAOvnH,EAAauoH,EAAKhB,QAG7BgB,EACf,GAAKA,EAAKnlH,eAAeiD,IAIrBA,IAAS8gH,EAAb,CAKA,IAAI58G,EAAWg+G,EAAKliH,GAChB+hH,EAAmBI,EAAMplH,eAAeiD,GAG5C,GAFA8hH,EAAuBC,EAAkB/hH,GAErCyhH,EAAmB1kH,eAAeiD,GACpCyhH,EAAmBzhH,GAAMrG,EAAauK,OACjC,CAKL,IAAIo+G,EAAqBrB,EAAoBlkH,eAAeiD,GAQ5D,GAPqC,oBAAbkE,IAGrBo+G,IACAP,IACiB,IAAlBG,EAAKL,SAGLO,EAAcxpH,KAAKoH,EAAMkE,GACzBi+G,EAAMniH,GAAQkE,OAEd,GAAI69G,EAAkB,CACpB,IAAIC,EAAaf,EAAoBjhH,GAGrC0gH,EACE4B,IACkB,uBAAfN,GACgB,gBAAfA,GACJ,mFAEAA,EACAhiH,GAKiB,uBAAfgiH,EACFG,EAAMniH,GAAQ2hH,EAA2BQ,EAAMniH,GAAOkE,GAC9B,gBAAf89G,IACTG,EAAMniH,GAAQuiH,EAAsBJ,EAAMniH,GAAOkE,SAGnDi+G,EAAMniH,GAAQkE,UAiExB,SAASs+G,EAA6Bx1F,EAAK4/B,GAMzC,IAAK,IAAIvzD,KALTqnH,EACE1zF,GAAO4/B,GAAsB,kBAAR5/B,GAAmC,kBAAR4/B,EAChD,6DAGcA,EACVA,EAAI7vD,eAAe1D,KACrBqnH,OACetjH,IAAb4vB,EAAI3zB,GACJ,yPAKAA,GAEF2zB,EAAI3zB,GAAOuzD,EAAIvzD,IAGnB,OAAO2zB,EAWT,SAAS20F,EAA2B30F,EAAK4/B,GACvC,OAAO,WACL,IAAIruD,EAAIyuB,EAAIn0B,MAAM+D,KAAM3D,WACpBuF,EAAIouD,EAAI/zD,MAAM+D,KAAM3D,WACxB,GAAS,MAALsF,EACF,OAAOC,EACF,GAAS,MAALA,EACT,OAAOD,EAET,IAAIyI,EAAI,GAGR,OAFAw7G,EAA6Bx7G,EAAGzI,GAChCikH,EAA6Bx7G,EAAGxI,GACzBwI,GAYX,SAASu7G,EAAsBv1F,EAAK4/B,GAClC,OAAO,WACL5/B,EAAIn0B,MAAM+D,KAAM3D,WAChB2zD,EAAI/zD,MAAM+D,KAAM3D,YAWpB,SAASwpH,EAAmBC,EAAWC,GAkDrC,OAjDkBA,EAAOh+G,KAAK+9G,GAkEhC,IAAIE,EAAoB,CACtBxV,kBAAmB,WACjBxwG,KAAKimH,aAAc,IAInBC,EAAqB,CACvBnL,qBAAsB,WACpB/6G,KAAKimH,aAAc,IAQnBZ,EAAkB,CAKpBc,aAAc,SAASC,EAAU5wG,GAC/BxV,KAAK5B,QAAQ+rF,oBAAoBnqF,KAAMomH,EAAU5wG,IASnDy0E,UAAW,WAaT,QAASjqF,KAAKimH,cAIdI,EAAsB,aAoI1B,OAnIAzC,EACEyC,EAAoB5oH,UACpB0mH,EAAe1mH,UACf4nH,GAWF,SAAqBC,GAInB,IAAIvoH,EAAuB,SAASG,EAAO8V,EAAS5U,GAa9C4B,KAAKylH,qBAAqBnpH,QAzFlC,SAA6BwpH,GAE3B,IADA,IAAI32G,EAAQ22G,EAAUL,qBACbrpH,EAAI,EAAGA,EAAI+S,EAAM7S,OAAQF,GAAK,EAAG,CACxC,IAAIkqH,EAAcn3G,EAAM/S,GACpB2pH,EAAS52G,EAAM/S,EAAI,GACvB0pH,EAAUQ,GAAeT,EAAmBC,EAAWC,IAqFrDQ,CAAoBvmH,MAGtBA,KAAK9C,MAAQA,EACb8C,KAAKgT,QAAUA,EACfhT,KAAKqqF,KAAOw5B,EACZ7jH,KAAK5B,QAAUA,GAAWF,EAE1B8B,KAAK8zB,MAAQ,KAKb,IAAI0yF,EAAexmH,KAAK0kH,gBAAkB1kH,KAAK0kH,kBAAoB,KAYnEZ,EAC0B,kBAAjB0C,IAA8BzjH,MAAMU,QAAQ+iH,GACnD,sDACAzpH,EAAYozF,aAAe,2BAG7BnwF,KAAK8zB,MAAQ0yF,GA2Df,IAAK,IAAIC,KAzDT1pH,EAAYU,UAAY,IAAI4oH,EAC5BtpH,EAAYU,UAAUyB,YAAcnC,EACpCA,EAAYU,UAAUgoH,qBAAuB,GAE7CrB,EAAe5nH,QAAQsoH,EAAqB/8G,KAAK,KAAMhL,IAEvD+nH,EAAqB/nH,EAAaipH,GAClClB,EAAqB/nH,EAAauoH,GAClCR,EAAqB/nH,EAAampH,GAG9BnpH,EAAY0nH,kBACd1nH,EAAY+tF,aAAe/tF,EAAY0nH,mBAgBzCX,EACE/mH,EAAYU,UAAUkvF,OACtB,2EA2BqB03B,EAChBtnH,EAAYU,UAAUgpH,KACzB1pH,EAAYU,UAAUgpH,GAAc,MAIxC,OAAO1pH,K,gBC59BX,IAAI2pH,EAAW,SAAUvrH,GACvB,aAEA,IAEIqF,EAFAmmH,EAAKlrH,OAAOgC,UACZmpH,EAASD,EAAGxmH,eAEZ0mH,EAA4B,oBAAXznH,OAAwBA,OAAS,GAClD0nH,EAAiBD,EAAQxnH,UAAY,aACrC0nH,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASp5F,EAAOvvB,EAAK9B,EAAK+B,GAOxB,OANA/C,OAAOmB,eAAe2B,EAAK9B,EAAK,CAC9B+B,MAAOA,EACPzC,YAAY,EACZqB,cAAc,EACdC,UAAU,IAELkB,EAAI9B,GAEb,IAEEqxB,EAAO,GAAI,IACX,MAAOzsB,GACPysB,EAAS,SAASvvB,EAAK9B,EAAK+B,GAC1B,OAAOD,EAAI9B,GAAO+B,GAItB,SAAS2oH,EAAKC,EAASC,EAAS3oH,EAAM4oH,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQ5pH,qBAAqB+pH,EAAYH,EAAUG,EAC/EC,EAAYhsH,OAAOwD,OAAOsoH,EAAe9pH,WACzCuV,EAAU,IAAI00G,EAAQJ,GAAe,IAMzC,OAFAG,EAAUE,QAuMZ,SAA0BP,EAAS1oH,EAAMsU,GACvC,IAAI8gB,EAAQ8zF,EAEZ,OAAO,SAAgB7B,EAAQ8B,GAC7B,GAAI/zF,IAAUg0F,EACZ,MAAM,IAAI7pH,MAAM,gCAGlB,GAAI61B,IAAUi0F,EAAmB,CAC/B,GAAe,UAAXhC,EACF,MAAM8B,EAKR,OAAOG,IAMT,IAHAh1G,EAAQ+yG,OAASA,EACjB/yG,EAAQ60G,IAAMA,IAED,CACX,IAAII,EAAWj1G,EAAQi1G,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUj1G,GACnD,GAAIk1G,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnBl1G,EAAQ+yG,OAGV/yG,EAAQq1G,KAAOr1G,EAAQs1G,MAAQt1G,EAAQ60G,SAElC,GAAuB,UAAnB70G,EAAQ+yG,OAAoB,CACrC,GAAIjyF,IAAU8zF,EAEZ,MADA9zF,EAAQi0F,EACF/0G,EAAQ60G,IAGhB70G,EAAQu1G,kBAAkBv1G,EAAQ60G,SAEN,WAAnB70G,EAAQ+yG,QACjB/yG,EAAQw1G,OAAO,SAAUx1G,EAAQ60G,KAGnC/zF,EAAQg0F,EAER,IAAIW,EAASC,EAAStB,EAAS1oH,EAAMsU,GACrC,GAAoB,WAAhBy1G,EAAOlzG,KAAmB,CAO5B,GAJAue,EAAQ9gB,EAAQrP,KACZokH,EACAY,EAEAF,EAAOZ,MAAQO,EACjB,SAGF,MAAO,CACL5pH,MAAOiqH,EAAOZ,IACdlkH,KAAMqP,EAAQrP,MAGS,UAAhB8kH,EAAOlzG,OAChBue,EAAQi0F,EAGR/0G,EAAQ+yG,OAAS,QACjB/yG,EAAQ60G,IAAMY,EAAOZ,OA/QPe,CAAiBxB,EAAS1oH,EAAMsU,GAE7Cy0G,EAcT,SAASiB,EAASxgH,EAAI3J,EAAKspH,GACzB,IACE,MAAO,CAAEtyG,KAAM,SAAUsyG,IAAK3/G,EAAG3I,KAAKhB,EAAKspH,IAC3C,MAAOxmH,GACP,MAAO,CAAEkU,KAAM,QAASsyG,IAAKxmH,IAhBjClG,EAAQgsH,KAAOA,EAoBf,IAAIS,EAAyB,iBACzBe,EAAyB,iBACzBb,EAAoB,YACpBC,EAAoB,YAIpBK,EAAmB,GAMvB,SAASZ,KACT,SAASqB,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBj7F,EAAOi7F,EAAmBjC,GAAgB,WACxC,OAAO9mH,QAGT,IAAIgpH,EAAWvtH,OAAOoC,eAClBorH,EAA0BD,GAAYA,EAASA,EAAS3kH,EAAO,MAC/D4kH,GACAA,IAA4BtC,GAC5BC,EAAOrnH,KAAK0pH,EAAyBnC,KAGvCiC,EAAoBE,GAGtB,IAAIC,EAAKJ,EAA2BrrH,UAClC+pH,EAAU/pH,UAAYhC,OAAOwD,OAAO8pH,GAYtC,SAASI,EAAsB1rH,GAC7B,CAAC,OAAQ,QAAS,UAAUjB,SAAQ,SAASupH,GAC3Cj4F,EAAOrwB,EAAWsoH,GAAQ,SAAS8B,GACjC,OAAO7nH,KAAK2nH,QAAQ5B,EAAQ8B,SAkClC,SAASuB,EAAc3B,EAAW4B,GAChC,SAASC,EAAOvD,EAAQ8B,EAAK/uF,EAASC,GACpC,IAAI0vF,EAASC,EAASjB,EAAU1B,GAAS0B,EAAWI,GACpD,GAAoB,UAAhBY,EAAOlzG,KAEJ,CACL,IAAI1V,EAAS4oH,EAAOZ,IAChBrpH,EAAQqB,EAAOrB,MACnB,OAAIA,GACiB,kBAAVA,GACPooH,EAAOrnH,KAAKf,EAAO,WACd6qH,EAAYvwF,QAAQt6B,EAAM+qH,SAASjsE,MAAK,SAAS9+C,GACtD8qH,EAAO,OAAQ9qH,EAAOs6B,EAASC,MAC9B,SAAS13B,GACVioH,EAAO,QAASjoH,EAAKy3B,EAASC,MAI3BswF,EAAYvwF,QAAQt6B,GAAO8+C,MAAK,SAASksE,GAI9C3pH,EAAOrB,MAAQgrH,EACf1wF,EAAQj5B,MACP,SAASiM,GAGV,OAAOw9G,EAAO,QAASx9G,EAAOgtB,EAASC,MAvBzCA,EAAO0vF,EAAOZ,KA4BlB,IAAI4B,EAgCJzpH,KAAK2nH,QA9BL,SAAiB5B,EAAQ8B,GACvB,SAAS6B,IACP,OAAO,IAAIL,GAAY,SAASvwF,EAASC,GACvCuwF,EAAOvD,EAAQ8B,EAAK/uF,EAASC,MAIjC,OAAO0wF,EAaLA,EAAkBA,EAAgBnsE,KAChCosE,EAGAA,GACEA,KAkHV,SAASvB,EAAoBF,EAAUj1G,GACrC,IAAI+yG,EAASkC,EAAS5oH,SAAS2T,EAAQ+yG,QACvC,GAAIA,IAAWvlH,EAAW,CAKxB,GAFAwS,EAAQi1G,SAAW,KAEI,UAAnBj1G,EAAQ+yG,OAAoB,CAE9B,GAAIkC,EAAS5oH,SAAT,SAGF2T,EAAQ+yG,OAAS,SACjB/yG,EAAQ60G,IAAMrnH,EACd2nH,EAAoBF,EAAUj1G,GAEP,UAAnBA,EAAQ+yG,QAGV,OAAOqC,EAIXp1G,EAAQ+yG,OAAS,QACjB/yG,EAAQ60G,IAAM,IAAI7qH,UAChB,kDAGJ,OAAOorH,EAGT,IAAIK,EAASC,EAAS3C,EAAQkC,EAAS5oH,SAAU2T,EAAQ60G,KAEzD,GAAoB,UAAhBY,EAAOlzG,KAIT,OAHAvC,EAAQ+yG,OAAS,QACjB/yG,EAAQ60G,IAAMY,EAAOZ,IACrB70G,EAAQi1G,SAAW,KACZG,EAGT,IAAIuB,EAAOlB,EAAOZ,IAElB,OAAM8B,EAOFA,EAAKhmH,MAGPqP,EAAQi1G,EAAS2B,YAAcD,EAAKnrH,MAGpCwU,EAAQ/O,KAAOgkH,EAAS4B,QAQD,WAAnB72G,EAAQ+yG,SACV/yG,EAAQ+yG,OAAS,OACjB/yG,EAAQ60G,IAAMrnH,GAUlBwS,EAAQi1G,SAAW,KACZG,GANEuB,GA3BP32G,EAAQ+yG,OAAS,QACjB/yG,EAAQ60G,IAAM,IAAI7qH,UAAU,oCAC5BgW,EAAQi1G,SAAW,KACZG,GAoDX,SAAS0B,EAAaC,GACpB,IAAIv8D,EAAQ,CAAEw8D,OAAQD,EAAK,IAEvB,KAAKA,IACPv8D,EAAMy8D,SAAWF,EAAK,IAGpB,KAAKA,IACPv8D,EAAM08D,WAAaH,EAAK,GACxBv8D,EAAM28D,SAAWJ,EAAK,IAGxB/pH,KAAKoqH,WAAWpuH,KAAKwxD,GAGvB,SAAS68D,EAAc78D,GACrB,IAAIi7D,EAASj7D,EAAM88D,YAAc,GACjC7B,EAAOlzG,KAAO,gBACPkzG,EAAOZ,IACdr6D,EAAM88D,WAAa7B,EAGrB,SAASf,EAAQJ,GAIftnH,KAAKoqH,WAAa,CAAC,CAAEJ,OAAQ,SAC7B1C,EAAY9qH,QAAQstH,EAAc9pH,MAClCA,KAAKq4D,OAAM,GA8Bb,SAASh0D,EAAOkmH,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASzD,GAC9B,GAAI0D,EACF,OAAOA,EAAejrH,KAAKgrH,GAG7B,GAA6B,oBAAlBA,EAAStmH,KAClB,OAAOsmH,EAGT,IAAKx9F,MAAMw9F,EAASjuH,QAAS,CAC3B,IAAIF,GAAK,EAAG6H,EAAO,SAASA,IAC1B,OAAS7H,EAAImuH,EAASjuH,QACpB,GAAIsqH,EAAOrnH,KAAKgrH,EAAUnuH,GAGxB,OAFA6H,EAAKzF,MAAQ+rH,EAASnuH,GACtB6H,EAAKN,MAAO,EACLM,EAOX,OAHAA,EAAKzF,MAAQgC,EACbyD,EAAKN,MAAO,EAELM,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAM+jH,GAIjB,SAASA,IACP,MAAO,CAAExpH,MAAOgC,EAAWmD,MAAM,GA+MnC,OA7mBAklH,EAAkBprH,UAAYqrH,EAC9Bh7F,EAAOo7F,EAAI,cAAeJ,GAC1Bh7F,EAAOg7F,EAA4B,cAAeD,GAClDA,EAAkB14B,YAAcriE,EAC9Bg7F,EACA7B,EACA,qBAaF9rH,EAAQsvH,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOxrH,YAClD,QAAOyrH,IACHA,IAAS9B,GAG2B,uBAAnC8B,EAAKx6B,aAAew6B,EAAKvnH,QAIhCjI,EAAQyvH,KAAO,SAASF,GAQtB,OAPIjvH,OAAOmC,eACTnC,OAAOmC,eAAe8sH,EAAQ5B,IAE9B4B,EAAO5sH,UAAYgrH,EACnBh7F,EAAO48F,EAAQzD,EAAmB,sBAEpCyD,EAAOjtH,UAAYhC,OAAOwD,OAAOiqH,GAC1BwB,GAOTvvH,EAAQ0vH,MAAQ,SAAShD,GACvB,MAAO,CAAE0B,QAAS1B,IAsEpBsB,EAAsBC,EAAc3rH,WACpCqwB,EAAOs7F,EAAc3rH,UAAWspH,GAAqB,WACnD,OAAO/mH,QAET7E,EAAQiuH,cAAgBA,EAKxBjuH,EAAQ2vH,MAAQ,SAAS1D,EAASC,EAAS3oH,EAAM4oH,EAAa+B,QACxC,IAAhBA,IAAwBA,EAAcxwF,SAE1C,IAAI/zB,EAAO,IAAIskH,EACbjC,EAAKC,EAASC,EAAS3oH,EAAM4oH,GAC7B+B,GAGF,OAAOluH,EAAQsvH,oBAAoBpD,GAC/BviH,EACAA,EAAKb,OAAOq5C,MAAK,SAASz9C,GACxB,OAAOA,EAAO8D,KAAO9D,EAAOrB,MAAQsG,EAAKb,WAuKjDklH,EAAsBD,GAEtBp7F,EAAOo7F,EAAIjC,EAAmB,aAO9Bn5F,EAAOo7F,EAAIpC,GAAgB,WACzB,OAAO9mH,QAGT8tB,EAAOo7F,EAAI,YAAY,WACrB,MAAO,wBAkCT/tH,EAAQK,KAAO,SAASF,GACtB,IAAIE,EAAO,GACX,IAAK,IAAIiB,KAAOnB,EACdE,EAAKQ,KAAKS,GAMZ,OAJAjB,EAAK4P,UAIE,SAASnH,IACd,KAAOzI,EAAKc,QAAQ,CAClB,IAAIG,EAAMjB,EAAK6J,MACf,GAAI5I,KAAOnB,EAGT,OAFA2I,EAAKzF,MAAQ/B,EACbwH,EAAKN,MAAO,EACLM,EAQX,OADAA,EAAKN,MAAO,EACLM,IAsCX9I,EAAQkJ,OAASA,EAMjBqjH,EAAQjqH,UAAY,CAClByB,YAAawoH,EAEbrvD,MAAO,SAAS0yD,GAcd,GAbA/qH,KAAKgrH,KAAO,EACZhrH,KAAKiE,KAAO,EAGZjE,KAAKqoH,KAAOroH,KAAKsoH,MAAQ9nH,EACzBR,KAAK2D,MAAO,EACZ3D,KAAKioH,SAAW,KAEhBjoH,KAAK+lH,OAAS,OACd/lH,KAAK6nH,IAAMrnH,EAEXR,KAAKoqH,WAAW5tH,QAAQ6tH,IAEnBU,EACH,IAAK,IAAI3nH,KAAQpD,KAEQ,MAAnBoD,EAAK40E,OAAO,IACZ4uC,EAAOrnH,KAAKS,KAAMoD,KACjB2pB,OAAO3pB,EAAKD,MAAM,MACrBnD,KAAKoD,GAAQ5C,IAMrB2K,KAAM,WACJnL,KAAK2D,MAAO,EAEZ,IACIsnH,EADYjrH,KAAKoqH,WAAW,GACLE,WAC3B,GAAwB,UAApBW,EAAW11G,KACb,MAAM01G,EAAWpD,IAGnB,OAAO7nH,KAAKkrH,MAGd3C,kBAAmB,SAAS4C,GAC1B,GAAInrH,KAAK2D,KACP,MAAMwnH,EAGR,IAAIn4G,EAAUhT,KACd,SAASm8B,EAAOivF,EAAKC,GAYnB,OAXA5C,EAAOlzG,KAAO,QACdkzG,EAAOZ,IAAMsD,EACbn4G,EAAQ/O,KAAOmnH,EAEXC,IAGFr4G,EAAQ+yG,OAAS,OACjB/yG,EAAQ60G,IAAMrnH,KAGN6qH,EAGZ,IAAK,IAAIjvH,EAAI4D,KAAKoqH,WAAW9tH,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIoxD,EAAQxtD,KAAKoqH,WAAWhuH,GACxBqsH,EAASj7D,EAAM88D,WAEnB,GAAqB,SAAjB98D,EAAMw8D,OAIR,OAAO7tF,EAAO,OAGhB,GAAIqxB,EAAMw8D,QAAUhqH,KAAKgrH,KAAM,CAC7B,IAAIM,EAAW1E,EAAOrnH,KAAKiuD,EAAO,YAC9B+9D,EAAa3E,EAAOrnH,KAAKiuD,EAAO,cAEpC,GAAI89D,GAAYC,EAAY,CAC1B,GAAIvrH,KAAKgrH,KAAOx9D,EAAMy8D,SACpB,OAAO9tF,EAAOqxB,EAAMy8D,UAAU,GACzB,GAAIjqH,KAAKgrH,KAAOx9D,EAAM08D,WAC3B,OAAO/tF,EAAOqxB,EAAM08D,iBAGjB,GAAIoB,GACT,GAAItrH,KAAKgrH,KAAOx9D,EAAMy8D,SACpB,OAAO9tF,EAAOqxB,EAAMy8D,UAAU,OAG3B,KAAIsB,EAMT,MAAM,IAAIttH,MAAM,0CALhB,GAAI+B,KAAKgrH,KAAOx9D,EAAM08D,WACpB,OAAO/tF,EAAOqxB,EAAM08D,gBAU9B1B,OAAQ,SAASjzG,EAAMsyG,GACrB,IAAK,IAAIzrH,EAAI4D,KAAKoqH,WAAW9tH,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIoxD,EAAQxtD,KAAKoqH,WAAWhuH,GAC5B,GAAIoxD,EAAMw8D,QAAUhqH,KAAKgrH,MACrBpE,EAAOrnH,KAAKiuD,EAAO,eACnBxtD,KAAKgrH,KAAOx9D,EAAM08D,WAAY,CAChC,IAAIsB,EAAeh+D,EACnB,OAIAg+D,IACU,UAATj2G,GACS,aAATA,IACDi2G,EAAaxB,QAAUnC,GACvBA,GAAO2D,EAAatB,aAGtBsB,EAAe,MAGjB,IAAI/C,EAAS+C,EAAeA,EAAalB,WAAa,GAItD,OAHA7B,EAAOlzG,KAAOA,EACdkzG,EAAOZ,IAAMA,EAET2D,GACFxrH,KAAK+lH,OAAS,OACd/lH,KAAKiE,KAAOunH,EAAatB,WAClB9B,GAGFpoH,KAAKyrH,SAAShD,IAGvBgD,SAAU,SAAShD,EAAQ0B,GACzB,GAAoB,UAAhB1B,EAAOlzG,KACT,MAAMkzG,EAAOZ,IAcf,MAXoB,UAAhBY,EAAOlzG,MACS,aAAhBkzG,EAAOlzG,KACTvV,KAAKiE,KAAOwkH,EAAOZ,IACM,WAAhBY,EAAOlzG,MAChBvV,KAAKkrH,KAAOlrH,KAAK6nH,IAAMY,EAAOZ,IAC9B7nH,KAAK+lH,OAAS,SACd/lH,KAAKiE,KAAO,OACa,WAAhBwkH,EAAOlzG,MAAqB40G,IACrCnqH,KAAKiE,KAAOkmH,GAGP/B,GAGTsD,OAAQ,SAASxB,GACf,IAAK,IAAI9tH,EAAI4D,KAAKoqH,WAAW9tH,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIoxD,EAAQxtD,KAAKoqH,WAAWhuH,GAC5B,GAAIoxD,EAAM08D,aAAeA,EAGvB,OAFAlqH,KAAKyrH,SAASj+D,EAAM88D,WAAY98D,EAAM28D,UACtCE,EAAc78D,GACP46D,IAKb,MAAS,SAAS4B,GAChB,IAAK,IAAI5tH,EAAI4D,KAAKoqH,WAAW9tH,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAIoxD,EAAQxtD,KAAKoqH,WAAWhuH,GAC5B,GAAIoxD,EAAMw8D,SAAWA,EAAQ,CAC3B,IAAIvB,EAASj7D,EAAM88D,WACnB,GAAoB,UAAhB7B,EAAOlzG,KAAkB,CAC3B,IAAIo2G,EAASlD,EAAOZ,IACpBwC,EAAc78D,GAEhB,OAAOm+D,GAMX,MAAM,IAAI1tH,MAAM,0BAGlB2tH,cAAe,SAASrB,EAAUX,EAAYC,GAa5C,OAZA7pH,KAAKioH,SAAW,CACd5oH,SAAUgF,EAAOkmH,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB7pH,KAAK+lH,SAGP/lH,KAAK6nH,IAAMrnH,GAGN4nH,IAQJjtH,EA9sBM,CAqtBgBD,EAAOC,SAGtC,IACE0wH,mBAAqBnF,EACrB,MAAOoF,GAWmB,kBAAf3iC,WACTA,WAAW0iC,mBAAqBnF,EAEhC5+G,SAAS,IAAK,yBAAdA,CAAwC4+G,K,8BC/uB5C,YAEA,SAASqF,EAAcxtH,GAGnB,MAAsB,kBAARA,GAAsB,aAAcA,EAE9CA,EADA9C,OAAOgC,UAAUyF,SAAS3D,KAAKhB,GAAK4E,MAAM,GAAI,GALtD1H,OAAOmB,eAAezB,EAAS,aAAc,CAAEqD,OAAO,IAQtD,IAAIwtH,EAAkC,kBAAZC,IAAwBA,EAClD,SAASC,EAAUnI,EAAWxK,GAC1B,IAAKwK,EAAW,CAEZ,GAAIiI,EACA,MAAM,IAAI/tH,MAAM,oBAEpB,MAAM,IAAIA,MAAMs7G,MAGxBp+G,EAAQ+wH,UAAYA,EACpB,IAAI/rH,EAAiB1E,OAAOgC,UAAU0C,eAClC0a,EAAS9X,MAAMtF,UAAUod,OACzB3X,EAAWzH,OAAOgC,UAAUyF,SAChC,SAASqS,EAAKhX,GACV,OAAO2E,EAAS3D,KAAKhB,GAAK4E,MAAM,GAAI,GAExC,IAAI1C,EAAShF,OAAOgF,QAAsC,SAAUtE,EAAQI,GAMxE,OALA4vH,EAAW5vH,GAAQC,SAAQ,SAAUC,GAC7B0D,EAAeZ,KAAKhD,EAAQE,KAC5BN,EAAOM,GAAOF,EAAOE,OAGtBN,GAEPgwH,EAAqD,oBAAjC1wH,OAAOC,sBACzB,SAAU6C,GAAO,OAAO9C,OAAOD,KAAK+C,GAAKkX,OAAOha,OAAOC,sBAAsB6C,KAE7E,SAAUA,GAAO,OAAO9C,OAAOD,KAAK+C,IAC1C,SAAS+U,EAAKhY,GACV,OAAOyH,MAAMU,QAAQnI,GACfmF,EAAOnF,EAAO4D,YAAY5D,EAAOgB,QAAShB,GACxB,QAAjBia,EAAKja,GACF,IAAI2M,IAAI3M,GACU,QAAjBia,EAAKja,GACF,IAAI0N,IAAI1N,GACPA,GAA4B,kBAAXA,EACdmF,EAAOhF,OAAOwD,OAAOxD,OAAOoC,eAAevC,IAAUA,GAErDA,EAEtB,IAAIosH,EAAyB,WACzB,SAASA,IACL1nH,KAAKosH,SAAW3rH,EAAO,GAAI4rH,GAC3BrsH,KAAKyW,OAASzW,KAAKyW,OAAO1O,KAAK/H,MAE/BA,KAAKyW,OAAO8K,OAASvhB,KAAKuhB,OAASvhB,KAAKuhB,OAAOxZ,KAAK/H,MACpDA,KAAKyW,OAAO61G,SAAW,SAAUlqH,EAAGuE,GAAK,OAAOvE,IAAMuE,GACtD3G,KAAKyW,OAAO81G,WAAa,WAAc,OAAO,IAAI7E,GAAUjxG,QA2DhE,OAzDAhb,OAAOmB,eAAe8qH,EAAQjqH,UAAW,WAAY,CACjD+J,IAAK,WACD,OAAOxH,KAAKyW,OAAO61G,UAEvBjkH,IAAK,SAAU7J,GACXwB,KAAKyW,OAAO61G,SAAW9tH,GAE3BzC,YAAY,EACZqB,cAAc,IAElBsqH,EAAQjqH,UAAU8jB,OAAS,SAAUirG,EAAWtkH,GAC5ClI,KAAKosH,SAASI,GAAatkH,GAE/Bw/G,EAAQjqH,UAAUgZ,OAAS,SAAUnb,EAAQmxH,GACzC,IAAIC,EAAQ1sH,KACRslH,EAAyB,oBAAVmH,EAAwB,CAAEE,OAAQF,GAAUA,EACzD1pH,MAAMU,QAAQnI,IAAWyH,MAAMU,QAAQ6hH,IACzC4G,GAAWnpH,MAAMU,QAAQ6hH,IAAO,WAAc,MAAO,gMAIzD4G,EAA0B,kBAAT5G,GAA8B,OAATA,GAAe,WAAc,MAAO,4JAE5C7pH,OAAOD,KAAKkxH,EAAMN,UAAUnrH,KAAK,MAAQ,OACvE,IAAI2rH,EAAatxH,EA+BjB,OA9BA6wH,EAAW7G,GAAM9oH,SAAQ,SAAUC,GAC/B,GAAI0D,EAAeZ,KAAKmtH,EAAMN,SAAU3vH,GAAM,CAC1C,IAAIowH,EAAsBvxH,IAAWsxH,EACrCA,EAAaF,EAAMN,SAAS3vH,GAAK6oH,EAAK7oH,GAAMmwH,EAAYtH,EAAMhqH,GAC1DuxH,GAAuBH,EAAMJ,SAASM,EAAYtxH,KAClDsxH,EAAatxH,OAGhB,CACD,IAAIwxH,EAAmC,QAAjBv3G,EAAKja,GACrBoxH,EAAMj2G,OAAOnb,EAAOkM,IAAI/K,GAAM6oH,EAAK7oH,IACnCiwH,EAAMj2G,OAAOnb,EAAOmB,GAAM6oH,EAAK7oH,IACjCswH,EAAuC,QAArBx3G,EAAKq3G,GACrBA,EAAWplH,IAAI/K,GACfmwH,EAAWnwH,GACZiwH,EAAMJ,SAASQ,EAAiBC,KACH,qBAApBD,GACF3sH,EAAeZ,KAAKjE,EAAQmB,MAChCmwH,IAAetxH,IACfsxH,EAAat5G,EAAKhY,IAEG,QAArBia,EAAKq3G,GACLA,EAAWvkH,IAAI5L,EAAKqwH,GAGpBF,EAAWnwH,GAAOqwH,OAK3BF,GAEJlF,EAlEkB,GAoE7BvsH,EAAQusH,QAAUA,EAClB,IAAI2E,EAAkB,CAClBW,MAAO,SAAUxuH,EAAOouH,EAAYtH,GAEhC,OADA2H,EAAwBL,EAAYtH,EAAM,SACnC9mH,EAAMlC,OAASswH,EAAWn3G,OAAOjX,GAASouH,GAErDM,SAAU,SAAU1uH,EAAOouH,EAAYtH,GAEnC,OADA2H,EAAwBL,EAAYtH,EAAM,YACnC9mH,EAAMlC,OAASkC,EAAMiX,OAAOm3G,GAAcA,GAErDO,QAAS,SAAU3uH,EAAOouH,EAAYtH,EAAM8H,GASxC,OA2FR,SAA0B5uH,EAAO8mH,GAC7B4G,EAAUnpH,MAAMU,QAAQjF,IAAQ,WAAc,MAAO,+CAAiDutH,EAAcvtH,MACpH6uH,EAAgB/H,EAAK6H,SArGjBG,CAAiBV,EAAYtH,GAC7B9mH,EAAMhC,SAAQ,SAAUoL,GACpBylH,EAAgBzlH,GACZglH,IAAeQ,GAAkBxlH,EAAKtL,SACtCswH,EAAat5G,EAAK85G,IAEtBvyG,EAAO5e,MAAM2wH,EAAYhlH,MAEtBglH,GAEXW,KAAM,SAAU/uH,EAAOgvH,EAAalI,GAEhC,OAkGR,SAAsBA,GAClB4G,EAAuC,IAA7BzwH,OAAOD,KAAK8pH,GAAMhpH,QAAc,WAAc,MAAO,0DApG3DmxH,CAAanI,GACN9mH,GAEXkvH,QAAS,SAAUC,EAASf,GACxBgB,EAAmBD,EAAS,WAC5B,IAAIE,EAAiBF,EAAQrxH,OAASgX,EAAKs5G,GAAcA,EAIzD,OAHAe,EAAQnxH,SAAQ,SAAUL,GACtB0xH,EAAe1xH,IAAWywH,EAAWzwH,MAElC0xH,GAEXC,OAAQ,SAAUtvH,EAAOouH,EAAYmB,EAAOX,GAUxC,OATAQ,EAAmBpvH,EAAO,UAC1BA,EAAMhC,SAAQ,SAAUC,GAChBhB,OAAO0E,eAAeZ,KAAKqtH,EAAYnwH,KACnCmwH,IAAeQ,IACfR,EAAat5G,EAAK85G,WAEfR,EAAWnwH,OAGnBmwH,GAEXoB,KAAM,SAAU3pH,EAAQuoH,EAAYmB,EAAOX,GAoBvC,OAnBAa,EAAkBrB,EAAY,QAC9BgB,EAAmBvpH,EAAQ,QACF,QAArBkR,EAAKq3G,GACLvoH,EAAO7H,SAAQ,SAAU0xH,GACrB,IAAIzxH,EAAMyxH,EAAG,GAAI1vH,EAAQ0vH,EAAG,GACxBtB,IAAeQ,GAAkBR,EAAWplH,IAAI/K,KAAS+B,IACzDouH,EAAat5G,EAAK85G,IAEtBR,EAAWvkH,IAAI5L,EAAK+B,MAIxB6F,EAAO7H,SAAQ,SAAUgC,GACjBouH,IAAeQ,GAAmBR,EAAWxkH,IAAI5J,KACjDouH,EAAat5G,EAAK85G,IAEtBR,EAAW7lH,IAAIvI,MAGhBouH,GAEXuB,QAAS,SAAU3vH,EAAOouH,EAAYmB,EAAOX,GASzC,OARAa,EAAkBrB,EAAY,WAC9BgB,EAAmBpvH,EAAO,WAC1BA,EAAMhC,SAAQ,SAAUC,GAChBmwH,IAAeQ,GAAkBR,EAAWxkH,IAAI3L,KAChDmwH,EAAat5G,EAAK85G,IAEtBR,EAAW3jH,OAAOxM,MAEfmwH,GAEXwB,OAAQ,SAAU5vH,EAAOouH,EAAYmB,EAAOX,GA8ChD,IAAwBjxH,EAAQkyH,EApCxB,OAoCgBlyH,EA7CDywH,EA8CnBV,GAD4BmC,EA7CG7vH,IA8Ca,kBAAd6vH,GAAwB,WAAc,MAAO,yDAA2DtC,EAAcsC,MACpJnC,EAAU/vH,GAA4B,kBAAXA,GAAqB,WAAc,MAAO,2DAA6D4vH,EAAc5vH,MA9C5IgwH,EAAW3tH,GAAOhC,SAAQ,SAAUC,GAC5B+B,EAAM/B,KAASmwH,EAAWnwH,KACtBmwH,IAAeQ,IACfR,EAAat5G,EAAK85G,IAEtBR,EAAWnwH,GAAO+B,EAAM/B,OAGzBmwH,GAEXD,OAAQ,SAAUnuH,EAAO8vH,GA4B7B,IAAwBpmH,EA1BhB,OA2BJgkH,EAAwB,oBADJhkH,EA3BD1J,IA4BiB,WAAc,MAAO,2DAA6DutH,EAAc7jH,GAAM,OA3B/H1J,EAAM8vH,KAGjBC,EAAiB,IAAI7G,EAOzB,SAASuF,EAAwBzuH,EAAO8mH,EAAMkJ,GAC1CtC,EAAUnpH,MAAMU,QAAQjF,IAAQ,WAAc,MAAO,gCAAkCutH,EAAcyC,GAAW,wBAA0BzC,EAAcvtH,GAAS,OACjKovH,EAAmBtI,EAAKkJ,GAAUA,GAEtC,SAASZ,EAAmBtI,EAAMkJ,GAC9BtC,EAAUnpH,MAAMU,QAAQ6hH,IAAO,WAAc,MAAO,8BAAgCyG,EAAcyC,GAAW,wBAA0BzC,EAAczG,GAAjG,0DAOxD,SAAS+H,EAAgB7uH,GACrB0tH,EAAUnpH,MAAMU,QAAQjF,IAAQ,WAAc,MAAO,oEAAsEutH,EAAcvtH,GAApF,2DAazD,SAASyvH,EAAkB9xH,EAAQqyH,GAC/B,IAAIC,EAAel5G,EAAKpZ,GACxB+vH,EAA2B,QAAjBuC,GAA2C,QAAjBA,GAAwB,WAAc,MAAO,aAAe1C,EAAcyC,GAAW,6CAA+CzC,EAAc0C,MAlC1LtzH,EAAQmxH,SAAWiC,EAAe93G,OAAO61G,SACzCnxH,EAAQomB,OAASgtG,EAAehtG,OAChCpmB,EAAQmwF,QAAUijC,EAAe93G,OAEjCtb,EAAQmwF,QAAQA,QAAUpwF,EAAOC,QAAUsF,EAAOtF,EAAQmwF,QAASnwF,K,gCCzNnE,IAOIuzH,EACAC,EARA1C,EAAU/wH,EAAOC,QAAU,GAU/B,SAASyzH,IACL,MAAM,IAAI3wH,MAAM,mCAEpB,SAAS4wH,IACL,MAAM,IAAI5wH,MAAM,qCAsBpB,SAAS6wH,EAAWC,GAChB,GAAIL,IAAqBptG,WAErB,OAAOA,WAAWytG,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBptG,WAEhE,OADAotG,EAAmBptG,WACZA,WAAWytG,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAMnrH,GACJ,IAEI,OAAO8qH,EAAiBnvH,KAAK,KAAMwvH,EAAK,GAC1C,MAAMnrH,GAEJ,OAAO8qH,EAAiBnvH,KAAKS,KAAM+uH,EAAK,MAvCnD,WACG,IAEQL,EADsB,oBAAfptG,WACYA,WAEAstG,EAEzB,MAAOhrH,GACL8qH,EAAmBE,EAEvB,IAEQD,EADwB,oBAAjBz7F,aACcA,aAEA27F,EAE3B,MAAOjrH,GACL+qH,EAAqBE,GAjB5B,GAwED,IAEIG,EAFA9a,EAAQ,GACR+a,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAW,EACPD,EAAa1yH,OACb43G,EAAQ8a,EAAav5G,OAAOy+F,GAE5Bgb,GAAc,EAEdhb,EAAM53G,QACN8yH,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAIx9F,EAAUq9F,EAAWK,GACzBF,GAAW,EAGX,IADA,IAAIpsH,EAAMqxG,EAAM53G,OACVuG,GAAK,CAGP,IAFAmsH,EAAe9a,EACfA,EAAQ,KACCgb,EAAarsH,GACdmsH,GACAA,EAAaE,GAAYG,MAGjCH,GAAc,EACdrsH,EAAMqxG,EAAM53G,OAEhB0yH,EAAe,KACfC,GAAW,EAnEf,SAAyBK,GACrB,GAAIX,IAAuBz7F,aAEvB,OAAOA,aAAao8F,GAGxB,IAAKX,IAAuBE,IAAwBF,IAAuBz7F,aAEvE,OADAy7F,EAAqBz7F,aACdA,aAAao8F,GAExB,IAEWX,EAAmBW,GAC5B,MAAO1rH,GACL,IAEI,OAAO+qH,EAAmBpvH,KAAK,KAAM+vH,GACvC,MAAO1rH,GAGL,OAAO+qH,EAAmBpvH,KAAKS,KAAMsvH,KAgD7CC,CAAgB99F,IAiBpB,SAAS+9F,EAAKT,EAAKhqH,GACf/E,KAAK+uH,IAAMA,EACX/uH,KAAK+E,MAAQA,EAYjB,SAASiQ,KA5BTi3G,EAAQwD,SAAW,SAAUV,GACzB,IAAInnH,EAAO,IAAI7E,MAAM1G,UAAUC,OAAS,GACxC,GAAID,UAAUC,OAAS,EACnB,IAAK,IAAIF,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAClCwL,EAAKxL,EAAI,GAAKC,UAAUD,GAGhC83G,EAAMl4G,KAAK,IAAIwzH,EAAKT,EAAKnnH,IACJ,IAAjBssG,EAAM53G,QAAiB2yH,GACvBH,EAAWM,IASnBI,EAAK/xH,UAAU4xH,IAAM,WACjBrvH,KAAK+uH,IAAI9yH,MAAM,KAAM+D,KAAK+E,QAE9BknH,EAAQyD,MAAQ,UAChBzD,EAAQ0D,SAAU,EAClB1D,EAAQ2D,IAAM,GACd3D,EAAQloF,KAAO,GACfkoF,EAAQx+B,QAAU,GAClBw+B,EAAQ4D,SAAW,GAInB5D,EAAQv2G,GAAKV,EACbi3G,EAAQ6D,YAAc96G,EACtBi3G,EAAQ8D,KAAO/6G,EACfi3G,EAAQ+D,IAAMh7G,EACdi3G,EAAQgE,eAAiBj7G,EACzBi3G,EAAQiE,mBAAqBl7G,EAC7Bi3G,EAAQvvF,KAAO1nB,EACfi3G,EAAQkE,gBAAkBn7G,EAC1Bi3G,EAAQmE,oBAAsBp7G,EAE9Bi3G,EAAQjwF,UAAY,SAAU54B,GAAQ,MAAO,IAE7C6oH,EAAQoE,QAAU,SAAUjtH,GACxB,MAAM,IAAInF,MAAM,qCAGpBguH,EAAQqE,IAAM,WAAc,MAAO,KACnCrE,EAAQsE,MAAQ,SAAUC,GACtB,MAAM,IAAIvyH,MAAM,mCAEpBguH,EAAQwE,MAAQ,WAAa,OAAO,I,8BCpLpC,IAAIC,E,wVACJ,IAAIC,EAAQ,IAAIC,WAAW,IACZ,SAASC,IAEtB,IAAKH,KAGHA,EAAoC,qBAAXI,QAA0BA,OAAOJ,iBAAmBI,OAAOJ,gBAAgB3oH,KAAK+oH,SAA+B,qBAAbC,UAAgE,oBAA7BA,SAASL,iBAAkCK,SAASL,gBAAgB3oH,KAAKgpH,WAGrO,MAAM,IAAI9yH,MAAM,4GAIpB,OAAOyyH,EAAgBC,GCjBV,4HCQf,ICFeK,MAJf,SAAkBC,GAChB,MAAuB,kBAATA,GAAqBC,EAAM7tH,KAAK4tH,IDG5CE,EAAY,GAEP/0H,EAAI,EAAGA,EAAI,MAAOA,EACzB+0H,EAAUn1H,MAAMI,EAAI,KAAO8G,SAAS,IAAIkuH,OAAO,IAoBlC75E,IEvBX85E,EAEAC,EFqBW/5E,EAjBf,SAAmB30C,GACjB,IAAIqP,EAAS5V,UAAUC,OAAS,QAAsBkE,IAAjBnE,UAAU,GAAmBA,UAAU,GAAK,EAG7E40H,GAAQE,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAM,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAM,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAM,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAMk/G,EAAUvuH,EAAIqP,EAAS,IAAM,IAAMk/G,EAAUvuH,EAAIqP,EAAS,KAAOk/G,EAAUvuH,EAAIqP,EAAS,KAAOk/G,EAAUvuH,EAAIqP,EAAS,KAAOk/G,EAAUvuH,EAAIqP,EAAS,KAAOk/G,EAAUvuH,EAAIqP,EAAS,KAAOk/G,EAAUvuH,EAAIqP,EAAS,MAAMka,cAMzf,IAAK6kG,EAASC,GACZ,MAAMj0H,UAAU,+BAGlB,OAAOi0H,GEfLM,EAAa,EACbC,EAAa,EAkFF/jG,MAhFf,SAAY5Q,EAAS40G,EAAKx/G,GACxB,IAAI7V,EAAIq1H,GAAOx/G,GAAU,EACrBrQ,EAAI6vH,GAAO,IAAI1uH,MAAM,IAErBqT,GADJyG,EAAUA,GAAW,IACFzG,MAAQi7G,EACvBK,OAAgClxH,IAArBqc,EAAQ60G,SAAyB70G,EAAQ60G,SAAWJ,EAInE,GAAY,MAARl7G,GAA4B,MAAZs7G,EAAkB,CACpC,IAAIC,EAAY90G,EAAQrM,SAAWqM,EAAQg0G,KAAOA,KAEtC,MAARz6G,IAEFA,EAAOi7G,EAAU,CAAgB,EAAfM,EAAU,GAAWA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAG3F,MAAZD,IAEFA,EAAWJ,EAAiD,OAApCK,EAAU,IAAM,EAAIA,EAAU,KAQ1D,IAAIC,OAA0BpxH,IAAlBqc,EAAQ+0G,MAAsB/0G,EAAQ+0G,MAAQpiG,KAAKwC,MAG3D6/F,OAA0BrxH,IAAlBqc,EAAQg1G,MAAsBh1G,EAAQg1G,MAAQL,EAAa,EAEnE/7E,EAAKm8E,EAAQL,GAAcM,EAAQL,GAAc,IAarD,GAXI/7E,EAAK,QAA0Bj1C,IAArBqc,EAAQ60G,WACpBA,EAAWA,EAAW,EAAI,QAKvBj8E,EAAK,GAAKm8E,EAAQL,SAAiC/wH,IAAlBqc,EAAQg1G,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI5zH,MAAM,mDAGlBszH,EAAaK,EACbJ,EAAaK,EACbP,EAAYI,EAIZ,IAAII,GAA4B,KAAb,WAFnBF,GAAS,cAE+BC,GAAS,WACjDjwH,EAAExF,KAAO01H,IAAO,GAAK,IACrBlwH,EAAExF,KAAO01H,IAAO,GAAK,IACrBlwH,EAAExF,KAAO01H,IAAO,EAAI,IACpBlwH,EAAExF,KAAY,IAAL01H,EAET,IAAIC,EAAMH,EAAQ,WAAc,IAAQ,UACxChwH,EAAExF,KAAO21H,IAAQ,EAAI,IACrBnwH,EAAExF,KAAa,IAAN21H,EAETnwH,EAAExF,KAAO21H,IAAQ,GAAK,GAAM,GAE5BnwH,EAAExF,KAAO21H,IAAQ,GAAK,IAEtBnwH,EAAExF,KAAOs1H,IAAa,EAAI,IAE1B9vH,EAAExF,KAAkB,IAAXs1H,EAET,IAAK,IAAI1wH,EAAI,EAAGA,EAAI,IAAKA,EACvBY,EAAExF,EAAI4E,GAAKoV,EAAKpV,GAGlB,OAAOywH,GAAOl6E,EAAU31C,ICzDXizB,MAhCf,SAAeo8F,GACb,IAAKD,EAASC,GACZ,MAAMj0H,UAAU,gBAGlB,IAAI8I,EACAlD,EAAM,IAAIguH,WAAW,IAuBzB,OArBAhuH,EAAI,IAAMkD,EAAIumB,SAAS4kG,EAAK9tH,MAAM,EAAG,GAAI,OAAS,GAClDP,EAAI,GAAKkD,IAAM,GAAK,IACpBlD,EAAI,GAAKkD,IAAM,EAAI,IACnBlD,EAAI,GAAS,IAAJkD,EAETlD,EAAI,IAAMkD,EAAIumB,SAAS4kG,EAAK9tH,MAAM,EAAG,IAAK,OAAS,EACnDP,EAAI,GAAS,IAAJkD,EAETlD,EAAI,IAAMkD,EAAIumB,SAAS4kG,EAAK9tH,MAAM,GAAI,IAAK,OAAS,EACpDP,EAAI,GAAS,IAAJkD,EAETlD,EAAI,IAAMkD,EAAIumB,SAAS4kG,EAAK9tH,MAAM,GAAI,IAAK,OAAS,EACpDP,EAAI,GAAS,IAAJkD,EAGTlD,EAAI,KAAOkD,EAAIumB,SAAS4kG,EAAK9tH,MAAM,GAAI,IAAK,KAAO,cAAgB,IACnEP,EAAI,IAAMkD,EAAI,WAAc,IAC5BlD,EAAI,IAAMkD,IAAM,GAAK,IACrBlD,EAAI,IAAMkD,IAAM,GAAK,IACrBlD,EAAI,IAAMkD,IAAM,EAAI,IACpBlD,EAAI,IAAU,IAAJkD,EACHlD,GChBF,IAEQ,WAAUQ,EAAMqqF,EAASukC,GACtC,SAASC,EAAazzH,EAAO0d,EAAWu1G,EAAKx/G,GAS3C,GARqB,kBAAVzT,IACTA,EAjBN,SAAuB0zH,GACrBA,EAAMC,SAASnoC,mBAAmBkoC,IAIlC,IAFA,IAAIE,EAAQ,GAEHh2H,EAAI,EAAGA,EAAI81H,EAAI51H,SAAUF,EAChCg2H,EAAMp2H,KAAKk2H,EAAIr5E,WAAWz8C,IAG5B,OAAOg2H,EAQKC,CAAc7zH,IAGC,kBAAd0d,IACTA,EAAY2Y,EAAM3Y,IAGK,KAArBA,EAAU5f,OACZ,MAAMU,UAAU,oEAMlB,IAAIo1H,EAAQ,IAAIxB,WAAW,GAAKpyH,EAAMlC,QAOtC,GANA81H,EAAM/pH,IAAI6T,GACVk2G,EAAM/pH,IAAI7J,EAAO0d,EAAU5f,SAC3B81H,EAAQJ,EAASI,IACX,GAAgB,GAAXA,EAAM,GAAY3kC,EAC7B2kC,EAAM,GAAgB,GAAXA,EAAM,GAAY,IAEzBX,EAAK,CACPx/G,EAASA,GAAU,EAEnB,IAAK,IAAI7V,EAAI,EAAGA,EAAI,KAAMA,EACxBq1H,EAAIx/G,EAAS7V,GAAKg2H,EAAMh2H,GAG1B,OAAOq1H,EAGT,OAAOl6E,EAAU66E,GAInB,IACEH,EAAa7uH,KAAOA,EACpB,MAAO/B,IAKT,OAFA4wH,EAAaK,IA7CE,uCA8CfL,EAAaM,IA7CE,uCA8CRN,GCNT,SAASO,EAAgBC,GACvB,OAAwC,IAAhCA,EAAe,KAAO,GAAK,GAAU,EAuH/C,SAASC,EAAQtwH,EAAGuE,GAClB,IAAIgsH,GAAW,MAAJvwH,IAAmB,MAAJuE,GAE1B,OADWvE,GAAK,KAAOuE,GAAK,KAAOgsH,GAAO,KAC5B,GAAW,MAANA,EAerB,SAASC,EAAOziG,EAAGxuB,EAAGC,EAAGQ,EAAGX,EAAGuM,GAC7B,OAAO0kH,GATcG,EASQH,EAAQA,EAAQ/wH,EAAGwuB,GAAIuiG,EAAQtwH,EAAG4L,OATrC8kH,EAS0CrxH,GARhDoxH,IAAQ,GAAKC,EAQuClxH,GAT1E,IAAuBixH,EAAKC,EAY5B,SAASC,EAAMpxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAGX,EAAGuM,GAC/B,OAAO4kH,EAAOhxH,EAAIwI,GAAKxI,EAAIY,EAAGb,EAAGC,EAAGQ,EAAGX,EAAGuM,GAG5C,SAASglH,EAAMrxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAGX,EAAGuM,GAC/B,OAAO4kH,EAAOhxH,EAAIY,EAAI4H,GAAK5H,EAAGb,EAAGC,EAAGQ,EAAGX,EAAGuM,GAG5C,SAASilH,EAAMtxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAGX,EAAGuM,GAC/B,OAAO4kH,EAAOhxH,EAAIwI,EAAI5H,EAAGb,EAAGC,EAAGQ,EAAGX,EAAGuM,GAGvC,SAASklH,EAAMvxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAGX,EAAGuM,GAC/B,OAAO4kH,EAAOxoH,GAAKxI,GAAKY,GAAIb,EAAGC,EAAGQ,EAAGX,EAAGuM,GAG3BmlH,ICnNAxlG,EADNylG,EAAI,KAAM,IDkBnB,SAAahB,GACX,GAAqB,kBAAVA,EAAoB,CAC7B,IAAIiB,EAAMlB,SAASnoC,mBAAmBooC,IAEtCA,EAAQ,IAAIxB,WAAWyC,EAAI/2H,QAE3B,IAAK,IAAIF,EAAI,EAAGA,EAAIi3H,EAAI/2H,SAAUF,EAChCg2H,EAAMh2H,GAAKi3H,EAAIx6E,WAAWz8C,GAI9B,OAOF,SAA8By9B,GAK5B,IAJA,IAAIC,EAAS,GACTw5F,EAA0B,GAAfz5F,EAAMv9B,OACjBi3H,EAAS,mBAEJn3H,EAAI,EAAGA,EAAIk3H,EAAUl3H,GAAK,EAAG,CACpC,IAAIgG,EAAIy3B,EAAMz9B,GAAK,KAAOA,EAAI,GAAK,IAC/BywB,EAAMR,SAASknG,EAAOv7C,OAAO51E,IAAM,EAAI,IAAQmxH,EAAOv7C,OAAW,GAAJ51E,GAAW,IAC5E03B,EAAO99B,KAAK6wB,GAGd,OAAOiN,EAlBA05F,CAiCT,SAAoBpxH,EAAGS,GAErBT,EAAES,GAAO,IAAM,KAAQA,EAAM,GAC7BT,EAAEowH,EAAgB3vH,GAAO,GAAKA,EAM9B,IALA,IAAIlB,EAAI,WACJC,GAAK,UACLwI,GAAK,WACL5H,EAAI,UAECpG,EAAI,EAAGA,EAAIgG,EAAE9F,OAAQF,GAAK,GAAI,CACrC,IAAIq3H,EAAO9xH,EACP+xH,EAAO9xH,EACP+xH,EAAOvpH,EACPwpH,EAAOpxH,EACXb,EAAIoxH,EAAMpxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,GAAI,GAAI,WAChCoG,EAAIuwH,EAAMvwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,IAAK,WACrCgO,EAAI2oH,EAAM3oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,GAAI,WACpCwF,EAAImxH,EAAMnxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,YACrCuF,EAAIoxH,EAAMpxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,WACpCoG,EAAIuwH,EAAMvwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,GAAI,YACpCgO,EAAI2oH,EAAM3oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,IAAK,YACrCwF,EAAImxH,EAAMnxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,UACrCuF,EAAIoxH,EAAMpxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,EAAG,YACnCoG,EAAIuwH,EAAMvwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,IAAK,YACrCgO,EAAI2oH,EAAM3oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,IAAK,OACtCwF,EAAImxH,EAAMnxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,IAAK,YACtCuF,EAAIoxH,EAAMpxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,IAAK,EAAG,YACpCoG,EAAIuwH,EAAMvwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,IAAK,UACtCgO,EAAI2oH,EAAM3oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,IAAK,YAEtCuF,EAAIqxH,EAAMrxH,EADVC,EAAImxH,EAAMnxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,GAAI,YACrBgO,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,WACpCoG,EAAIwwH,EAAMxwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,GAAI,YACpCgO,EAAI4oH,EAAM5oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,GAAI,WACrCwF,EAAIoxH,EAAMpxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,GAAI,IAAK,WACjCuF,EAAIqxH,EAAMrxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,WACpCoG,EAAIwwH,EAAMxwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,EAAG,UACpCgO,EAAI4oH,EAAM5oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,IAAK,WACtCwF,EAAIoxH,EAAMpxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,WACrCuF,EAAIqxH,EAAMrxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,EAAG,WACnCoG,EAAIwwH,EAAMxwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,GAAI,YACrCgO,EAAI4oH,EAAM5oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,IAAK,WACrCwF,EAAIoxH,EAAMpxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,GAAI,YACpCuF,EAAIqxH,EAAMrxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,IAAK,GAAI,YACrCoG,EAAIwwH,EAAMxwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,GAAI,UACpCgO,EAAI4oH,EAAM5oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,GAAI,YAEpCuF,EAAIsxH,EAAMtxH,EADVC,EAAIoxH,EAAMpxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,IAAK,YACtBgO,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,QACpCoG,EAAIywH,EAAMzwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,IAAK,YACrCgO,EAAI6oH,EAAM7oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,GAAI,YACrCwF,EAAIqxH,EAAMrxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,IAAK,UACtCuF,EAAIsxH,EAAMtxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,YACpCoG,EAAIywH,EAAMzwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,GAAI,YACpCgO,EAAI6oH,EAAM7oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,IAAK,WACrCwF,EAAIqxH,EAAMrxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,IAAK,YACtCuF,EAAIsxH,EAAMtxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,IAAK,EAAG,WACpCoG,EAAIywH,EAAMzwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,GAAI,IAAK,WACjCgO,EAAI6oH,EAAM7oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,IAAK,WACrCwF,EAAIqxH,EAAMrxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,GAAI,UACpCuF,EAAIsxH,EAAMtxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,WACpCoG,EAAIywH,EAAMzwH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,IAAK,WACtCgO,EAAI6oH,EAAM7oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,GAAI,WAErCuF,EAAIuxH,EAAMvxH,EADVC,EAAIqxH,EAAMrxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,WACrBgO,EAAG5H,EAAGJ,EAAEhG,GAAI,GAAI,WAChCoG,EAAI0wH,EAAM1wH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,GAAI,YACpCgO,EAAI8oH,EAAM9oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,IAAK,YACtCwF,EAAIsxH,EAAMtxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,UACrCuF,EAAIuxH,EAAMvxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,IAAK,EAAG,YACpCoG,EAAI0wH,EAAM1wH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,GAAI,IAAK,YACrCgO,EAAI8oH,EAAM9oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,IAAK,IAAK,SACtCwF,EAAIsxH,EAAMtxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,YACrCuF,EAAIuxH,EAAMvxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,EAAG,YACnCoG,EAAI0wH,EAAM1wH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,IAAK,UACtCgO,EAAI8oH,EAAM9oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,IAAK,YACrCwF,EAAIsxH,EAAMtxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,IAAK,GAAI,YACrCuF,EAAIuxH,EAAMvxH,EAAGC,EAAGwI,EAAG5H,EAAGJ,EAAEhG,EAAI,GAAI,GAAI,WACpCoG,EAAI0wH,EAAM1wH,EAAGb,EAAGC,EAAGwI,EAAGhI,EAAEhG,EAAI,IAAK,IAAK,YACtCgO,EAAI8oH,EAAM9oH,EAAG5H,EAAGb,EAAGC,EAAGQ,EAAEhG,EAAI,GAAI,GAAI,WACpCwF,EAAIsxH,EAAMtxH,EAAGwI,EAAG5H,EAAGb,EAAGS,EAAEhG,EAAI,GAAI,IAAK,WACrCuF,EAAI+wH,EAAQ/wH,EAAG8xH,GACf7xH,EAAI8wH,EAAQ9wH,EAAG8xH,GACftpH,EAAIsoH,EAAQtoH,EAAGupH,GACfnxH,EAAIkwH,EAAQlwH,EAAGoxH,GAGjB,MAAO,CAACjyH,EAAGC,EAAGwI,EAAG5H,GArHWqxH,CA6H9B,SAAsBh6F,GACpB,GAAqB,IAAjBA,EAAMv9B,OACR,MAAO,GAMT,IAHA,IAAIw3H,EAAyB,EAAfj6F,EAAMv9B,OAChBw9B,EAAS,IAAI3vB,YAAYqoH,EAAgBsB,IAEpC13H,EAAI,EAAGA,EAAI03H,EAAS13H,GAAK,EAChC09B,EAAO19B,GAAK,KAAsB,IAAfy9B,EAAMz9B,EAAI,KAAcA,EAAI,GAGjD,OAAO09B,EAzIgCi6F,CAAa3B,GAAuB,EAAfA,EAAM91H,YERrD03H,MApBf,SAAYn3G,EAAS40G,EAAKx/G,GAExB,IAAIgiH,GADJp3G,EAAUA,GAAW,IACFrM,SAAWqM,EAAQg0G,KAAOA,KAK7C,GAHAoD,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBxC,EAAK,CACPx/G,EAASA,GAAU,EAEnB,IAAK,IAAI7V,EAAI,EAAGA,EAAI,KAAMA,EACxBq1H,EAAIx/G,EAAS7V,GAAK63H,EAAK73H,GAGzB,OAAOq1H,EAGT,OAAOl6E,EAAU08E,IClBnB,SAASlyH,EAAEN,EAAGW,EAAGuE,EAAGgH,GAClB,OAAQlM,GACN,KAAK,EACH,OAAOW,EAAIuE,GAAKvE,EAAIuL,EAEtB,KAAK,EAML,KAAK,EACH,OAAOvL,EAAIuE,EAAIgH,EAJjB,KAAK,EACH,OAAOvL,EAAIuE,EAAIvE,EAAIuL,EAAIhH,EAAIgH,GAOjC,SAASumH,EAAK9xH,EAAGpB,GACf,OAAOoB,GAAKpB,EAAIoB,IAAM,GAAKpB,EA4EdmzH,IC5FAC,EADNhB,EAAI,KAAM,IDoBnB,SAAchB,GACZ,IAAIjnC,EAAI,CAAC,WAAY,WAAY,WAAY,YACzClZ,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,YAEzD,GAAqB,kBAAVmgD,EAAoB,CAC7B,IAAIiB,EAAMlB,SAASnoC,mBAAmBooC,IAEtCA,EAAQ,GAER,IAAK,IAAIh2H,EAAI,EAAGA,EAAIi3H,EAAI/2H,SAAUF,EAChCg2H,EAAMp2H,KAAKq3H,EAAIx6E,WAAWz8C,SAElB2G,MAAMU,QAAQ2uH,KAExBA,EAAQrvH,MAAMtF,UAAU0F,MAAM5D,KAAK6yH,IAGrCA,EAAMp2H,KAAK,KAKX,IAJA,IAAIkwB,EAAIkmG,EAAM91H,OAAS,EAAI,EACvBuhC,EAAI13B,KAAKkG,KAAK6f,EAAI,IAClB8uC,EAAI,IAAIj4D,MAAM86B,GAETx2B,EAAK,EAAGA,EAAKw2B,IAAKx2B,EAAI,CAG7B,IAFA,IAAIzE,EAAM,IAAIuH,YAAY,IAEjB5E,EAAI,EAAGA,EAAI,KAAMA,EACxB3C,EAAI2C,GAAK6sH,EAAW,GAAL/qH,EAAc,EAAJ9B,IAAU,GAAK6sH,EAAW,GAAL/qH,EAAc,EAAJ9B,EAAQ,IAAM,GAAK6sH,EAAW,GAAL/qH,EAAc,EAAJ9B,EAAQ,IAAM,EAAI6sH,EAAW,GAAL/qH,EAAc,EAAJ9B,EAAQ,GAGvIy1D,EAAE3zD,GAAMzE,EAGVo4D,EAAEn9B,EAAI,GAAG,IAA2B,GAApBu0F,EAAM91H,OAAS,GAAS6J,KAAK4F,IAAI,EAAG,IACpDivD,EAAEn9B,EAAI,GAAG,IAAM13B,KAAKwF,MAAMqvD,EAAEn9B,EAAI,GAAG,KACnCm9B,EAAEn9B,EAAI,GAAG,IAA2B,GAApBu0F,EAAM91H,OAAS,GAAS,WAExC,IAAK,IAAI+3H,EAAM,EAAGA,EAAMx2F,IAAKw2F,EAAK,CAGhC,IAFA,IAAIz2F,EAAI,IAAIzzB,YAAY,IAEf6D,EAAI,EAAGA,EAAI,KAAMA,EACxB4vB,EAAE5vB,GAAKgtD,EAAEq5D,GAAKrmH,GAGhB,IAAK,IAAIg2E,EAAK,GAAIA,EAAK,KAAMA,EAC3BpmD,EAAEomD,GAAMkwC,EAAKt2F,EAAEomD,EAAK,GAAKpmD,EAAEomD,EAAK,GAAKpmD,EAAEomD,EAAK,IAAMpmD,EAAEomD,EAAK,IAAK,GAShE,IANA,IAAIriF,EAAIswE,EAAE,GACNrwE,EAAIqwE,EAAE,GACN7nE,EAAI6nE,EAAE,GACNzvE,EAAIyvE,EAAE,GACNruE,EAAIquE,EAAE,GAEDqiD,EAAM,EAAGA,EAAM,KAAMA,EAAK,CACjC,IAAI7yH,EAAI0E,KAAKwF,MAAM2oH,EAAM,IACrB1+G,EAAIs+G,EAAKvyH,EAAG,GAAKI,EAAEN,EAAGG,EAAGwI,EAAG5H,GAAKoB,EAAIunF,EAAE1pF,GAAKm8B,EAAE02F,KAAS,EAC3D1wH,EAAIpB,EACJA,EAAI4H,EACJA,EAAI8pH,EAAKtyH,EAAG,MAAQ,EACpBA,EAAID,EACJA,EAAIiU,EAGNq8D,EAAE,GAAKA,EAAE,GAAKtwE,IAAM,EACpBswE,EAAE,GAAKA,EAAE,GAAKrwE,IAAM,EACpBqwE,EAAE,GAAKA,EAAE,GAAK7nE,IAAM,EACpB6nE,EAAE,GAAKA,EAAE,GAAKzvE,IAAM,EACpByvE,EAAE,GAAKA,EAAE,GAAKruE,IAAM,EAGtB,MAAO,CAACquE,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,OE5FzU,yCCUAwb,MARf,SAAiBwjC,GACf,IAAKD,EAASC,GACZ,MAAMj0H,UAAU,gBAGlB,OAAOqvB,SAAS4kG,EAAKG,OAAO,GAAI,GAAI","file":"static/js/2.e71b1c34.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = require(\"regenerator-runtime\");\n","import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"@babel/runtime/helpers/esm/possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function bisector(f) {\n let delta = f;\n let compare1 = f;\n let compare2 = f;\n\n if (f.length !== 2) {\n delta = (d, x) => f(d) - x;\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, hi = a.length) {\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function count(values, valueof) {\n let count = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count;\n }\n }\n }\n return count;\n}\n","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function length(array) {\n return array.length | 0;\n}\n\nfunction empty(length) {\n return !(length > 0);\n}\n\nfunction arrayify(values) {\n return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n values = values.map(arrayify);\n const lengths = values.map(length);\n const j = values.length - 1;\n const index = new Array(j + 1).fill(0);\n const product = [];\n if (j < 0 || lengths.some(empty)) return product;\n while (true) {\n product.push(index.map((j, i) => values[i][j]));\n let i = j;\n while (++index[i] === lengths[i]) {\n if (i === 0) return reduce ? product.map(reduce) : product;\n index[i--] = 0;\n }\n }\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","import arrayWithHoles from \"@babel/runtime/helpers/esm/arrayWithHoles\";\nimport iterableToArrayLimit from \"@babel/runtime/helpers/esm/iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableRest from \"@babel/runtime/helpers/esm/nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import superPropBase from \"@babel/runtime/helpers/esm/superPropBase\";\nexport default function _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeReflectConstruct from \"@babel/runtime/helpers/esm/isNativeReflectConstruct\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"@babel/runtime/helpers/esm/getPrototypeOf\";\nimport setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nimport isNativeFunction from \"@babel/runtime/helpers/esm/isNativeFunction\";\nimport construct from \"@babel/runtime/helpers/esm/construct\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n return () => x;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function ticks(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n }\n prestep = step;\n }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n return Math.ceil(Math.log(count(values)) / Math.LN2) + 1;\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare) {\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(count(values), -1 / 3)));\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(count(values), -1 / 3)));\n}\n","export default function maxIndex(values, valueof) {\n let max;\n let maxIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value, maxIndex = index;\n }\n }\n }\n return maxIndex;\n}\n","export default function mean(values, valueof) {\n let count = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n }\n }\n if (count) return sum / count;\n}\n","import quantile from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n for (const array of arrays) {\n yield* array;\n }\n}\n\nexport default function merge(arrays) {\n return Array.from(flatten(arrays));\n}\n","export default function minIndex(values, valueof) {\n let min;\n let minIndex = -1;\n let index = -1;\n if (valueof === undefined) {\n for (const value of values) {\n ++index;\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n } else {\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value, minIndex = index;\n }\n }\n }\n return minIndex;\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n const counts = new InternMap();\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && value >= value) {\n counts.set(value, (counts.get(value) || 0) + 1);\n }\n }\n }\n let modeValue;\n let modeCount = 0;\n for (const [value, count] of counts) {\n if (count > modeCount) {\n modeCount = count;\n modeValue = value;\n }\n }\n return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n const pairs = [];\n let previous;\n let first = false;\n for (const value of values) {\n if (first) pairs.push(pairof(previous, value));\n previous = value;\n first = true;\n }\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n let V = Array.from(values);\n const R = new Float64Array(V.length);\n if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n const compareIndex = (i, j) => valueof(V[i], V[j]);\n let k, r;\n Uint32Array\n .from(V, (_, i) => i)\n .sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex))\n .forEach((j, i) => {\n const c = compareIndex(j, k === undefined ? j : k);\n if (c >= 0) {\n if (k === undefined || c > 0) k = j, r = i;\n R[j] = r;\n } else {\n R[j] = NaN;\n }\n });\n return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n let min;\n let defined = false;\n if (compare.length === 1) {\n let minValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, minValue) < 0\n : ascending(value, value) === 0) {\n min = element;\n minValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, min) < 0\n : compare(value, value) === 0) {\n min = value;\n defined = true;\n }\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n if (compare.length === 1) return minIndex(values, compare);\n let minValue;\n let min = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (min < 0\n ? compare(value, value) === 0\n : compare(value, minValue) < 0) {\n minValue = value;\n min = index;\n }\n }\n return min;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n let max;\n let defined = false;\n if (compare.length === 1) {\n let maxValue;\n for (const element of values) {\n const value = compare(element);\n if (defined\n ? ascending(value, maxValue) > 0\n : ascending(value, value) === 0) {\n max = element;\n maxValue = value;\n defined = true;\n }\n }\n } else {\n for (const value of values) {\n if (defined\n ? compare(value, max) > 0\n : compare(value, value) === 0) {\n max = value;\n defined = true;\n }\n }\n }\n return max;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n if (compare.length === 1) return maxIndex(values, compare);\n let maxValue;\n let max = -1;\n let index = -1;\n for (const value of values) {\n ++index;\n if (max < 0\n ? compare(value, value) === 0\n : compare(value, maxValue) > 0) {\n maxValue = value;\n max = index;\n }\n }\n return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n const index = leastIndex(values, compare);\n return index < 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n return function shuffle(array, i0 = 0, i1 = array.length) {\n let m = i1 - (i0 = +i0);\n while (m) {\n const i = random() * m-- | 0, t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n return array;\n };\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function every(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (!test(value, ++index, values)) {\n return false;\n }\n }\n return true;\n}\n","export default function some(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n return true;\n }\n }\n return false;\n}\n","export default function filter(values, test) {\n if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n const array = [];\n let index = -1;\n for (const value of values) {\n if (test(value, ++index, values)) {\n array.push(value);\n }\n }\n return array;\n}\n","export default function map(values, mapper) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n return Array.from(values, (value, index) => mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n const iterator = values[Symbol.iterator]();\n let done, next, index = -1;\n if (arguments.length < 3) {\n ({done, value} = iterator.next());\n if (done) return;\n ++index;\n }\n while (({done, value: next} = iterator.next()), !done) {\n value = reducer(value, next, ++index, values);\n }\n return value;\n}\n","export default function reverse(values) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n values = new InternSet(values);\n for (const other of others) {\n for (const value of other) {\n values.delete(value);\n }\n }\n return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n const iterator = other[Symbol.iterator](), set = new InternSet();\n for (const v of values) {\n if (set.has(v)) return false;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) break;\n if (Object.is(v, value)) return false;\n set.add(value);\n }\n }\n return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n values = new InternSet(values);\n others = others.map(set);\n out: for (const value of values) {\n for (const other of others) {\n if (!other.has(value)) {\n values.delete(value);\n continue out;\n }\n }\n }\n return values;\n}\n\nfunction set(values) {\n return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n const iterator = values[Symbol.iterator](), set = new Set();\n for (const o of other) {\n const io = intern(o);\n if (set.has(io)) continue;\n let value, done;\n while (({value, done} = iterator.next())) {\n if (done) return false;\n const ivalue = intern(value);\n set.add(ivalue);\n if (Object.is(io, ivalue)) break;\n }\n }\n return true;\n}\n\nfunction intern(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n const set = new InternSet();\n for (const other of others) {\n for (const o of other) {\n set.add(o);\n }\n }\n return set;\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n sourceEvent,\n target,\n selection,\n mode,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n selection: {value: selection, enumerable: true, configurable: true},\n mode: {value: mode, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n return Array.from({length: j - i}, (_, k) => i + k);\n}\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n return chord(false, false);\n}\n\nexport function chordTranspose() {\n return chord(false, true);\n}\n\nexport function chordDirected() {\n return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = new Array(n),\n groupIndex = range(0, n),\n chords = new Array(n * n),\n groups = new Array(n),\n k = 0, dx;\n\n matrix = Float64Array.from({length: n * n}, transpose\n ? (_, i) => matrix[i % n][i / n | 0]\n : (_, i) => matrix[i / n | 0][i % n]);\n\n // Compute the scaling factor from value to angle in [0, 2pi].\n for (let i = 0; i < n; ++i) {\n let x = 0;\n for (let j = 0; j < n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n k += groupSums[i] = x;\n }\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the angles for each group and constituent chord.\n {\n let x = 0;\n if (sortGroups) groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n for (const i of groupIndex) {\n const x0 = x;\n if (directed) {\n const subgroupIndex = range(~n + 1, n).filter(j => j < 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(a < 0 ? -matrix[~a * n + i] : matrix[i * n + a], b < 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n for (const j of subgroupIndex) {\n if (j < 0) {\n const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n } else {\n const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n } else {\n const subgroupIndex = range(0, n).filter(j => matrix[i * n + j] || matrix[j * n + i]);\n if (sortSubgroups) subgroupIndex.sort((a, b) => sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n for (const j of subgroupIndex) {\n let chord;\n if (i < j) {\n chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n } else {\n chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n if (i === j) chord.source = chord.target;\n }\n if (chord.source && chord.target && chord.source.value < chord.target.value) {\n const source = chord.source;\n chord.source = chord.target;\n chord.target = source;\n }\n }\n groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n }\n x += dx;\n }\n }\n\n // Remove empty chords.\n chords = Object.values(chords);\n chords.groups = groups;\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n return 0;\n}\n\nfunction defaultArrowheadRadius() {\n return 10;\n}\n\nfunction ribbon(headRadius) {\n var source = defaultSource,\n target = defaultTarget,\n sourceRadius = defaultRadius,\n targetRadius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n padAngle = defaultPadAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n s = source.apply(this, arguments),\n t = target.apply(this, arguments),\n ap = padAngle.apply(this, arguments) / 2,\n argv = slice.call(arguments),\n sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n if (ap > epsilon) {\n if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n else sa0 = sa1 = (sa0 + sa1) / 2;\n if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n else ta0 = ta1 = (ta0 + ta1) / 2;\n }\n\n context.moveTo(sr * cos(sa0), sr * sin(sa0));\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) {\n if (headRadius) {\n var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n context.lineTo(tr * cos(ta2), tr * sin(ta2));\n context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n } else {\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n }\n context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n if (headRadius) ribbon.headRadius = function(_) {\n return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n };\n\n ribbon.radius = function(_) {\n return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.sourceRadius = function(_) {\n return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.targetRadius = function(_) {\n return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n\nexport default function() {\n return ribbon();\n}\n\nexport function ribbonArrow() {\n return ribbon(defaultArrowheadRadius);\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, ticks, tickStep} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n const e = extent(values), ts = tickStep(e[0], e[1], tz);\n tz = ticks(Math.floor(e[0] / ts) * ts, Math.floor(e[1] / ts - 1) * ts, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport {blurX, blurY} from \"./blur.js\";\nimport constant from \"./constant.js\";\nimport contours from \"./contours.js\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m),\n pow2k = Math.pow(2, -k);\n\n data.forEach(function(d, i, data) {\n var xi = (x(d, i, data) + o) * pow2k,\n yi = (y(d, i, data) + o) * pow2k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n var x0 = Math.floor(xi),\n y0 = Math.floor(yi),\n xt = xi - x0 - 0.5,\n yt = yi - y0 - 0.5;\n values0[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n values0[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n values0[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n values0[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0], _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n let Q, Qnew, hh, bvirt;\n let enow = e[0];\n let fnow = f[0];\n let eindex = 0;\n let findex = 0;\n if ((fnow > enow) === (fnow > -enow)) {\n Q = enow;\n enow = e[++eindex];\n } else {\n Q = fnow;\n fnow = f[++findex];\n }\n let hindex = 0;\n if (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = enow + Q;\n hh = Q - (Qnew - enow);\n enow = e[++eindex];\n } else {\n Qnew = fnow + Q;\n hh = Q - (Qnew - fnow);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n while (eindex < elen && findex < flen) {\n if ((fnow > enow) === (fnow > -enow)) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n } else {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n }\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n }\n while (eindex < elen) {\n Qnew = Q + enow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (enow - bvirt);\n enow = e[++eindex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n while (findex < flen) {\n Qnew = Q + fnow;\n bvirt = Qnew - Q;\n hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n fnow = f[++findex];\n Q = Qnew;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n let Q, sum, hh, product1, product0;\n let bvirt, c, ahi, alo, bhi, blo;\n\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n let enow = e[0];\n Q = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n let hindex = 0;\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n for (let i = 1; i < elen; i++) {\n enow = e[i];\n product1 = enow * b;\n c = splitter * enow;\n ahi = c - (c - enow);\n alo = enow - ahi;\n product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n sum = Q + product0;\n bvirt = sum - Q;\n hh = Q - (sum - bvirt) + (product0 - bvirt);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n Q = product1 + sum;\n hh = sum - (Q - product1);\n if (hh !== 0) {\n h[hindex++] = hh;\n }\n }\n if (Q !== 0 || hindex === 0) {\n h[hindex++] = Q;\n }\n return hindex;\n}\n\nexport function negate(elen, e) {\n for (let i = 0; i < elen; i++) e[i] = -e[i];\n return elen;\n}\n\nexport function estimate(elen, e) {\n let Q = e[0];\n for (let i = 1; i < elen; i++) Q += e[i];\n return Q;\n}\n\nexport function vec(n) {\n return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n let acxtail, acytail, bcxtail, bcytail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const acx = ax - cx;\n const bcx = bx - cx;\n const acy = ay - cy;\n const bcy = by - cy;\n\n s1 = acx * bcy;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcx;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n B[3] = u3;\n\n let det = estimate(4, B);\n let errbound = ccwerrboundB * detsum;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - acx;\n acxtail = ax - (acx + bvirt) + (bvirt - cx);\n bvirt = bx - bcx;\n bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n bvirt = ay - acy;\n acytail = ay - (acy + bvirt) + (bvirt - cy);\n bvirt = by - bcy;\n bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n return det;\n }\n\n errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n if (det >= errbound || -det >= errbound) return det;\n\n s1 = acxtail * bcy;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcy;\n bhi = c - (c - bcy);\n blo = bcy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcx;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcx;\n bhi = c - (c - bcx);\n blo = bcx - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C1len = sum(4, B, 4, u, C1);\n\n s1 = acx * bcytail;\n c = splitter * acx;\n ahi = c - (c - acx);\n alo = acx - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acy * bcxtail;\n c = splitter * acy;\n ahi = c - (c - acy);\n alo = acy - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const C2len = sum(C1len, C1, 4, u, C2);\n\n s1 = acxtail * bcytail;\n c = splitter * acxtail;\n ahi = c - (c - acxtail);\n alo = acxtail - ahi;\n c = splitter * bcytail;\n bhi = c - (c - bcytail);\n blo = bcytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = acytail * bcxtail;\n c = splitter * acytail;\n ahi = c - (c - acytail);\n alo = acytail - ahi;\n c = splitter * bcxtail;\n bhi = c - (c - bcxtail);\n blo = bcxtail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n const Dlen = sum(C2len, C2, 4, u, D);\n\n return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n const detleft = (ay - cy) * (bx - cx);\n const detright = (ax - cx) * (by - cy);\n const det = detleft - detright;\n\n if (detleft === 0 || detright === 0 || (detleft > 0) !== (detright > 0)) return det;\n\n const detsum = Math.abs(detleft + detright);\n if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n finlen = sum(finlen, fin, alen, a, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n if (xtail === 0) {\n if (ytail === 0) {\n a[0] = 0;\n b[0] = 0;\n return 1;\n } else {\n negate = -ytail;\n s1 = negate * ax;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n }\n } else {\n if (ytail === 0) {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n a[1] = s1;\n negate = -xtail;\n s1 = negate * by;\n c = splitter * negate;\n ahi = c - (c - negate);\n alo = negate - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n b[1] = s1;\n return 2;\n } else {\n s1 = xtail * ay;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ytail * ax;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * ax;\n bhi = c - (c - ax);\n blo = ax - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n a[3] = u3;\n s1 = ytail * bx;\n c = splitter * ytail;\n ahi = c - (c - ytail);\n alo = ytail - ahi;\n c = splitter * bx;\n bhi = c - (c - bx);\n blo = bx - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = xtail * by;\n c = splitter * xtail;\n ahi = c - (c - xtail);\n alo = xtail - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n b[3] = u3;\n return 4;\n }\n }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n s1 = a * b;\n c = splitter * a;\n ahi = c - (c - a);\n alo = a - ahi;\n c = splitter * b;\n bhi = c - (c - b);\n blo = b - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n c = splitter * k;\n bhi = c - (c - k);\n blo = k - bhi;\n _i = s0 * k;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * k;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n if (z !== 0) {\n c = splitter * z;\n bhi = c - (c - z);\n blo = z - bhi;\n _i = s0 * z;\n c = splitter * s0;\n ahi = c - (c - s0);\n alo = s0 - ahi;\n u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n _j = s1 * z;\n c = splitter * s1;\n ahi = c - (c - s1);\n alo = s1 - ahi;\n _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n _k = _i + _0;\n bvirt = _k - _i;\n u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n u3 = _j + _k;\n u[2] = _k - (u3 - _j);\n u[3] = u3;\n finlen = finadd(finlen, 4, u);\n }\n return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail;\n let adytail, bdytail, cdytail;\n let adztail, bdztail, cdztail;\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n scale(4, bc, adz, _8), _8,\n scale(4, ca, bdz, _8b), _8b, _16), _16,\n scale(4, ab, cdz, _8), _8, fin);\n\n let det = estimate(finlen, fin);\n let errbound = o3derrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n bvirt = az - adz;\n adztail = az - (adz + bvirt) + (bvirt - dz);\n bvirt = bz - bdz;\n bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n bvirt = cz - cdz;\n cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n adytail === 0 && bdytail === 0 && cdytail === 0 &&\n adztail === 0 && bdztail === 0 && cdztail === 0) {\n return det;\n }\n\n errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n det +=\n adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n if (adztail !== 0) {\n finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n }\n if (bdztail !== 0) {\n finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n }\n if (cdztail !== 0) {\n finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n }\n\n if (adxtail !== 0) {\n if (bdytail !== 0) {\n finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n }\n if (cdytail !== 0) {\n finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n }\n }\n if (bdxtail !== 0) {\n if (cdytail !== 0) {\n finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n }\n if (adytail !== 0) {\n finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n }\n }\n if (cdxtail !== 0) {\n if (adytail !== 0) {\n finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n }\n if (bdytail !== 0) {\n finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n\n const det =\n adz * (bdxcdy - cdxbdy) +\n bdz * (cdxady - adxcdy) +\n cdz * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n const errbound = o3derrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n\n return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n const adz = az - dz;\n const bdz = bz - dz;\n const cdz = cz - dz;\n\n return adx * (bdy * cdz - bdz * cdy) +\n bdx * (cdy * adz - cdz * ady) +\n cdx * (ady * bdz - adz * bdy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n finlen = sum(finlen, fin, a, alen, fin2);\n const tmp = fin; fin = fin2; fin2 = tmp;\n return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n let finlen;\n let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n let abtlen, bctlen, catlen;\n let abttlen, bcttlen, cattlen;\n let n1, n0;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n s1 = bdx * cdy;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * bdy;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cdx * ady;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * cdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ca[3] = u3;\n s1 = adx * bdy;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * ady;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n\n finlen = sum(\n sum(\n sum(\n scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n sum(\n scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n sum(\n scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n let det = estimate(finlen, fin);\n let errbound = iccerrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - adx;\n adxtail = ax - (adx + bvirt) + (bvirt - dx);\n bvirt = ay - ady;\n adytail = ay - (ady + bvirt) + (bvirt - dy);\n bvirt = bx - bdx;\n bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n bvirt = by - bdy;\n bdytail = by - (bdy + bvirt) + (bvirt - dy);\n bvirt = cx - cdx;\n cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n bvirt = cy - cdy;\n cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n return det;\n }\n\n errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n 2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n 2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n 2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = adx * adx;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = ady * ady;\n c = splitter * ady;\n ahi = c - (c - ady);\n alo = ady - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n aa[3] = u3;\n }\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = bdx * bdx;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = bdy * bdy;\n c = splitter * bdy;\n ahi = c - (c - bdy);\n alo = bdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bb[3] = u3;\n }\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = cdx * cdx;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n t1 = cdy * cdy;\n c = splitter * cdy;\n ahi = c - (c - cdy);\n alo = cdy - ahi;\n t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n _i = s0 + t0;\n bvirt = _i - s0;\n cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cc[3] = u3;\n }\n\n if (adxtail !== 0) {\n axtbclen = scale(4, bc, adxtail, axtbc);\n finlen = finadd(finlen, sum_three(\n scale(axtbclen, axtbc, 2 * adx, _16), _16,\n scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n }\n if (adytail !== 0) {\n aytbclen = scale(4, bc, adytail, aytbc);\n finlen = finadd(finlen, sum_three(\n scale(aytbclen, aytbc, 2 * ady, _16), _16,\n scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n }\n if (bdxtail !== 0) {\n bxtcalen = scale(4, ca, bdxtail, bxtca);\n finlen = finadd(finlen, sum_three(\n scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n }\n if (bdytail !== 0) {\n bytcalen = scale(4, ca, bdytail, bytca);\n finlen = finadd(finlen, sum_three(\n scale(bytcalen, bytca, 2 * bdy, _16), _16,\n scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n }\n if (cdxtail !== 0) {\n cxtablen = scale(4, ab, cdxtail, cxtab);\n finlen = finadd(finlen, sum_three(\n scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n }\n if (cdytail !== 0) {\n cytablen = scale(4, ab, cdytail, cytab);\n finlen = finadd(finlen, sum_three(\n scale(cytablen, cytab, 2 * cdy, _16), _16,\n scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n }\n\n if (adxtail !== 0 || adytail !== 0) {\n if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n s1 = bdxtail * cdy;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdy;\n bhi = c - (c - cdy);\n blo = cdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * cdytail;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n s1 = cdxtail * -bdy;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * -bdy;\n bhi = c - (c - -bdy);\n blo = -bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * -bdytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * -bdytail;\n bhi = c - (c - -bdytail);\n blo = -bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n bctlen = sum(4, u, 4, v, bct);\n s1 = bdxtail * cdytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdxtail * bdytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bctt[3] = u3;\n bcttlen = 4;\n } else {\n bct[0] = 0;\n bctlen = 1;\n bctt[0] = 0;\n bcttlen = 1;\n }\n if (adxtail !== 0) {\n const len = scale(bctlen, bct, adxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(axtbclen, axtbc, adxtail, _16), _16,\n scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * adx, _16), _16,\n scale(len2, _8, adxtail, _16b), _16b,\n scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n }\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n }\n }\n if (adytail !== 0) {\n const len = scale(bctlen, bct, adytail, _16c);\n finlen = finadd(finlen, sum(\n scale(aytbclen, aytbc, adytail, _16), _16,\n scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n const len2 = scale(bcttlen, bctt, adytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * ady, _16), _16,\n scale(len2, _8, adytail, _16b), _16b,\n scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n }\n }\n if (bdxtail !== 0 || bdytail !== 0) {\n if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n s1 = cdxtail * ady;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * ady;\n bhi = c - (c - ady);\n blo = ady - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cdx * adytail;\n c = splitter * cdx;\n ahi = c - (c - cdx);\n alo = cdx - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -cdy;\n n0 = -cdytail;\n s1 = adxtail * n1;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * n0;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n catlen = sum(4, u, 4, v, cat);\n s1 = cdxtail * adytail;\n c = splitter * cdxtail;\n ahi = c - (c - cdxtail);\n alo = cdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adxtail * cdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * cdytail;\n bhi = c - (c - cdytail);\n blo = cdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n catt[3] = u3;\n cattlen = 4;\n } else {\n cat[0] = 0;\n catlen = 1;\n catt[0] = 0;\n cattlen = 1;\n }\n if (bdxtail !== 0) {\n const len = scale(catlen, cat, bdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(bxtcalen, bxtca, bdxtail, _16), _16,\n scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdx, _16), _16,\n scale(len2, _8, bdxtail, _16b), _16b,\n scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n if (cdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n }\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n }\n }\n if (bdytail !== 0) {\n const len = scale(catlen, cat, bdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(bytcalen, bytca, bdytail, _16), _16,\n scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n const len2 = scale(cattlen, catt, bdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * bdy, _16), _16,\n scale(len2, _8, bdytail, _16b), _16b,\n scale(len, _16c, bdytail, _32), _32, _32b, _64), _64);\n }\n }\n if (cdxtail !== 0 || cdytail !== 0) {\n if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n s1 = adxtail * bdy;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdy;\n bhi = c - (c - bdy);\n blo = bdy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = adx * bdytail;\n c = splitter * adx;\n ahi = c - (c - adx);\n alo = adx - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n u[3] = u3;\n n1 = -ady;\n n0 = -adytail;\n s1 = bdxtail * n1;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * n1;\n bhi = c - (c - n1);\n blo = n1 - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdx * n0;\n c = splitter * bdx;\n ahi = c - (c - bdx);\n alo = bdx - ahi;\n c = splitter * n0;\n bhi = c - (c - n0);\n blo = n0 - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 + t0;\n bvirt = _i - s0;\n v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 + t1;\n bvirt = _i - _0;\n v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n u3 = _j + _i;\n bvirt = u3 - _j;\n v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n v[3] = u3;\n abtlen = sum(4, u, 4, v, abt);\n s1 = adxtail * bdytail;\n c = splitter * adxtail;\n ahi = c - (c - adxtail);\n alo = adxtail - ahi;\n c = splitter * bdytail;\n bhi = c - (c - bdytail);\n blo = bdytail - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bdxtail * adytail;\n c = splitter * bdxtail;\n ahi = c - (c - bdxtail);\n alo = bdxtail - ahi;\n c = splitter * adytail;\n bhi = c - (c - adytail);\n blo = adytail - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n abtt[3] = u3;\n abttlen = 4;\n } else {\n abt[0] = 0;\n abtlen = 1;\n abtt[0] = 0;\n abttlen = 1;\n }\n if (cdxtail !== 0) {\n const len = scale(abtlen, abt, cdxtail, _16c);\n finlen = finadd(finlen, sum(\n scale(cxtablen, cxtab, cdxtail, _16), _16,\n scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdxtail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdx, _16), _16,\n scale(len2, _8, cdxtail, _16b), _16b,\n scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n if (adytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n }\n if (bdytail !== 0) {\n finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n }\n }\n if (cdytail !== 0) {\n const len = scale(abtlen, abt, cdytail, _16c);\n finlen = finadd(finlen, sum(\n scale(cytablen, cytab, cdytail, _16), _16,\n scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n const len2 = scale(abttlen, abtt, cdytail, _8);\n finlen = finadd(finlen, sum_three(\n scale(len2, _8, 2 * cdy, _16), _16,\n scale(len2, _8, cdytail, _16b), _16b,\n scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n }\n }\n\n return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const bdx = bx - dx;\n const cdx = cx - dx;\n const ady = ay - dy;\n const bdy = by - dy;\n const cdy = cy - dy;\n\n const bdxcdy = bdx * cdy;\n const cdxbdy = cdx * bdy;\n const alift = adx * adx + ady * ady;\n\n const cdxady = cdx * ady;\n const adxcdy = adx * cdy;\n const blift = bdx * bdx + bdy * bdy;\n\n const adxbdy = adx * bdy;\n const bdxady = bdx * ady;\n const clift = cdx * cdx + cdy * cdy;\n\n const det =\n alift * (bdxcdy - cdxbdy) +\n blift * (cdxady - adxcdy) +\n clift * (adxbdy - bdxady);\n\n const permanent =\n (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n const errbound = iccerrboundA * permanent;\n\n if (det > errbound || -det > errbound) {\n return det;\n }\n return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n const adx = ax - dx;\n const ady = ay - dy;\n const bdx = bx - dx;\n const bdy = by - dy;\n const cdx = cx - dx;\n const cdy = cy - dy;\n\n const abdet = adx * bdy - bdx * ady;\n const bcdet = bdx * cdy - cdx * bdy;\n const cadet = cdx * ady - adx * cdy;\n const alift = adx * adx + ady * ady;\n const blift = bdx * bdx + bdy * bdy;\n const clift = cdx * cdx + cdy * cdy;\n\n return alift * bcdet + blift * cadet + clift * abdet;\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n return sum_three(\n scale(4, a, az, _8), _8,\n scale(4, b, bz, _8b), _8b,\n scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n const len = sum(\n sum(alen, a, blen, b, _48), _48,\n negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n return sum_three(\n scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n s1 = ax * by;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ay;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ab[3] = u3;\n s1 = bx * cy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * by;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bc[3] = u3;\n s1 = cx * dy;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * cy;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n cd[3] = u3;\n s1 = dx * ey;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * dy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n de[3] = u3;\n s1 = ex * ay;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * ey;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ea[3] = u3;\n s1 = ax * cy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cx * ay;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ac[3] = u3;\n s1 = bx * dy;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dx * by;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n bd[3] = u3;\n s1 = cx * ey;\n c = splitter * cx;\n ahi = c - (c - cx);\n alo = cx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ex * cy;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * cy;\n bhi = c - (c - cy);\n blo = cy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n ce[3] = u3;\n s1 = dx * ay;\n c = splitter * dx;\n ahi = c - (c - dx);\n alo = dx - ahi;\n c = splitter * ay;\n bhi = c - (c - ay);\n blo = ay - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = ax * dy;\n c = splitter * ax;\n ahi = c - (c - ax);\n alo = ax - ahi;\n c = splitter * dy;\n bhi = c - (c - dy);\n blo = dy - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n da[3] = u3;\n s1 = ex * by;\n c = splitter * ex;\n ahi = c - (c - ex);\n alo = ex - ahi;\n c = splitter * by;\n bhi = c - (c - by);\n blo = by - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bx * ey;\n c = splitter * bx;\n ahi = c - (c - bx);\n alo = bx - ahi;\n c = splitter * ey;\n bhi = c - (c - ey);\n blo = ey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n u3 = _j + _i;\n bvirt = u3 - _j;\n eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n eb[3] = u3;\n\n const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n const deterlen = sum_three(\n liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n sum_three(\n liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n return sum_three(\n scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n let ab3, bc3, cd3, da3, ac3, bd3;\n\n let aextail, bextail, cextail, dextail;\n let aeytail, beytail, ceytail, deytail;\n let aeztail, beztail, ceztail, deztail;\n\n let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n s1 = aex * bey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = bex * aey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ab3 = _j + _i;\n bvirt = ab3 - _j;\n ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n ab[3] = ab3;\n s1 = bex * cey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * bey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bc3 = _j + _i;\n bvirt = bc3 - _j;\n bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n bc[3] = bc3;\n s1 = cex * dey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * cey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n cd3 = _j + _i;\n bvirt = cd3 - _j;\n cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n cd[3] = cd3;\n s1 = dex * aey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = aex * dey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n da3 = _j + _i;\n bvirt = da3 - _j;\n da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n da[3] = da3;\n s1 = aex * cey;\n c = splitter * aex;\n ahi = c - (c - aex);\n alo = aex - ahi;\n c = splitter * cey;\n bhi = c - (c - cey);\n blo = cey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = cex * aey;\n c = splitter * cex;\n ahi = c - (c - cex);\n alo = cex - ahi;\n c = splitter * aey;\n bhi = c - (c - aey);\n blo = aey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n ac3 = _j + _i;\n bvirt = ac3 - _j;\n ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n ac[3] = ac3;\n s1 = bex * dey;\n c = splitter * bex;\n ahi = c - (c - bex);\n alo = bex - ahi;\n c = splitter * dey;\n bhi = c - (c - dey);\n blo = dey - bhi;\n s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n t1 = dex * bey;\n c = splitter * dex;\n ahi = c - (c - dex);\n alo = dex - ahi;\n c = splitter * bey;\n bhi = c - (c - bey);\n blo = bey - bhi;\n t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n _i = s0 - t0;\n bvirt = s0 - _i;\n bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n _j = s1 + _i;\n bvirt = _j - s1;\n _0 = s1 - (_j - bvirt) + (_i - bvirt);\n _i = _0 - t1;\n bvirt = _0 - _i;\n bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n bd3 = _j + _i;\n bvirt = bd3 - _j;\n bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n bd[3] = bd3;\n\n const finlen = sum(\n sum(\n negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n sum(\n negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n let det = estimate(finlen, fin);\n let errbound = isperrboundB * permanent;\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n bvirt = ax - aex;\n aextail = ax - (aex + bvirt) + (bvirt - ex);\n bvirt = ay - aey;\n aeytail = ay - (aey + bvirt) + (bvirt - ey);\n bvirt = az - aez;\n aeztail = az - (aez + bvirt) + (bvirt - ez);\n bvirt = bx - bex;\n bextail = bx - (bex + bvirt) + (bvirt - ex);\n bvirt = by - bey;\n beytail = by - (bey + bvirt) + (bvirt - ey);\n bvirt = bz - bez;\n beztail = bz - (bez + bvirt) + (bvirt - ez);\n bvirt = cx - cex;\n cextail = cx - (cex + bvirt) + (bvirt - ex);\n bvirt = cy - cey;\n ceytail = cy - (cey + bvirt) + (bvirt - ey);\n bvirt = cz - cez;\n ceztail = cz - (cez + bvirt) + (bvirt - ez);\n bvirt = dx - dex;\n dextail = dx - (dex + bvirt) + (bvirt - ex);\n bvirt = dy - dey;\n deytail = dy - (dey + bvirt) + (bvirt - ey);\n bvirt = dz - dez;\n deztail = dz - (dez + bvirt) + (bvirt - ez);\n if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n bextail === 0 && beytail === 0 && beztail === 0 &&\n cextail === 0 && ceytail === 0 && ceztail === 0 &&\n dextail === 0 && deytail === 0 && deztail === 0) {\n return det;\n }\n\n errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n det +=\n (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n 2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n if (det >= errbound || -det >= errbound) {\n return det;\n }\n\n return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n const aex = ax - ex;\n const bex = bx - ex;\n const cex = cx - ex;\n const dex = dx - ex;\n const aey = ay - ey;\n const bey = by - ey;\n const cey = cy - ey;\n const dey = dy - ey;\n const aez = az - ez;\n const bez = bz - ez;\n const cez = cz - ez;\n const dez = dz - ez;\n\n const aexbey = aex * bey;\n const bexaey = bex * aey;\n const ab = aexbey - bexaey;\n const bexcey = bex * cey;\n const cexbey = cex * bey;\n const bc = bexcey - cexbey;\n const cexdey = cex * dey;\n const dexcey = dex * cey;\n const cd = cexdey - dexcey;\n const dexaey = dex * aey;\n const aexdey = aex * dey;\n const da = dexaey - aexdey;\n const aexcey = aex * cey;\n const cexaey = cex * aey;\n const ac = aexcey - cexaey;\n const bexdey = bex * dey;\n const dexbey = dex * bey;\n const bd = bexdey - dexbey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n const det = (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n\n const aezplus = Math.abs(aez);\n const bezplus = Math.abs(bez);\n const cezplus = Math.abs(cez);\n const dezplus = Math.abs(dez);\n const aexbeyplus = Math.abs(aexbey);\n const bexaeyplus = Math.abs(bexaey);\n const bexceyplus = Math.abs(bexcey);\n const cexbeyplus = Math.abs(cexbey);\n const cexdeyplus = Math.abs(cexdey);\n const dexceyplus = Math.abs(dexcey);\n const dexaeyplus = Math.abs(dexaey);\n const aexdeyplus = Math.abs(aexdey);\n const aexceyplus = Math.abs(aexcey);\n const cexaeyplus = Math.abs(cexaey);\n const bexdeyplus = Math.abs(bexdey);\n const dexbeyplus = Math.abs(dexbey);\n const permanent =\n ((cexdeyplus + dexceyplus) * bezplus + (dexbeyplus + bexdeyplus) * cezplus + (bexceyplus + cexbeyplus) * dezplus) * alift +\n ((dexaeyplus + aexdeyplus) * cezplus + (aexceyplus + cexaeyplus) * dezplus + (cexdeyplus + dexceyplus) * aezplus) * blift +\n ((aexbeyplus + bexaeyplus) * dezplus + (bexdeyplus + dexbeyplus) * aezplus + (dexaeyplus + aexdeyplus) * bezplus) * clift +\n ((bexceyplus + cexbeyplus) * aezplus + (cexaeyplus + aexceyplus) * bezplus + (aexbeyplus + bexaeyplus) * cezplus) * dlift;\n\n const errbound = isperrboundA * permanent;\n if (det > errbound || -det > errbound) {\n return det;\n }\n return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n const aex = pax - pex;\n const bex = pbx - pex;\n const cex = pcx - pex;\n const dex = pdx - pex;\n const aey = pay - pey;\n const bey = pby - pey;\n const cey = pcy - pey;\n const dey = pdy - pey;\n const aez = paz - pez;\n const bez = pbz - pez;\n const cez = pcz - pez;\n const dez = pdz - pez;\n\n const ab = aex * bey - bex * aey;\n const bc = bex * cey - cex * bey;\n const cd = cex * dey - dex * cey;\n const da = dex * aey - aex * dey;\n const ac = aex * cey - cex * aey;\n const bd = bex * dey - dex * bey;\n\n const abc = aez * bc - bez * ac + cez * ab;\n const bcd = bez * cd - cez * bd + dez * bc;\n const cda = cez * da + dez * ac + aez * cd;\n const dab = dez * ab + aez * bd + bez * da;\n\n const alift = aex * aex + aey * aey + aez * aez;\n const blift = bex * bex + bey * bey + bez * bez;\n const clift = cex * cex + cey * cey + cez * cez;\n const dlift = dex * dex + dey * dey + dez * dez;\n\n return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) < 0) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) >= 0) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) < 0) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) < 0) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (Math.abs(ab) < 1e-9) {\n // degenerate case (collinear diagram)\n // almost equal points (degenerate triangle)\n // the circumcenter is at the infinity, in a\n // direction that is:\n // 1. orthogonal to the halfedge.\n let a = 1e9;\n // 2. points away from the center; since the list of triangles starts\n // in the center, the first point of the first triangle\n // will be our reference\n const r = triangles[0] * 2;\n a *= Math.sign((points[r] - x1) * ey - (points[r + 1] - y1) * ex);\n x = (x1 + x3) / 2 - a * ey;\n y = (y1 + y3) / 2 + a * ex;\n } else {\n const d = 1 / ab;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] == cj[aj]\n && ci[ai + 1] == cj[aj + 1]\n && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n ) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points);\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1 = 0;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n while (true) {\n if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n // undefined, the conditional statement will be executed.\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n if (P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k]\n || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n P.splice(j, 2), i -= 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n inedges[hull[0]] = 1;\n if (hull.length === 2) {\n inedges[hull[1]] = 0;\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n }\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r) {\n if (r === undefined && (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n r = r == undefined ? 2 : +r;\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","export const linear = t => +t;\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n return (input, init) => text(input, init)\n .then(text => (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","export default x => x;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y,\n l = atan2(x, abs(r0y)) * sign(r0y);\n if (r0y * n < 0)\n l -= pi * sign(x) * sign(r0y);\n return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n if (k === Infinity) return [2, 0];\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n l = atan2(x, abs(fy)) * sign(fy);\n if (fy * n < 0)\n l -= pi * sign(x) * sign(fy);\n return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y,\n l = atan2(x, abs(gy)) * sign(gy);\n if (gy * n < 0)\n l -= pi * sign(x) * sign(gy);\n return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n alpha = 0, ca, sa, // angle\n x0 = null, y0, x1, y1, // clip extent\n kx = 1, ky = 1,\n transform = transformer({\n point: function(x, y) {\n var p = projection([x, y])\n this.stream.point(p[0], p[1]);\n }\n }),\n postclip = identity,\n cache,\n cacheStream;\n\n function reset() {\n kx = k * sx;\n ky = k * sy;\n cache = cacheStream = null;\n return projection;\n }\n\n function projection (p) {\n var x = p[0] * kx, y = p[1] * ky;\n if (alpha) {\n var t = y * ca - x * sa;\n x = x * ca + y * sa;\n y = t;\n } \n return [x + tx, y + ty];\n }\n projection.invert = function(p) {\n var x = p[0] - tx, y = p[1] - ty;\n if (alpha) {\n var t = y * ca + x * sa;\n x = x * ca - y * sa;\n y = t;\n }\n return [x / kx, y / ky];\n };\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n };\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n projection.scale = function(_) {\n return arguments.length ? (k = +_, reset()) : k;\n };\n projection.translate = function(_) {\n return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n }\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n };\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n };\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n };\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import {shuffle} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(Array.from(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","import array from \"../array.js\";\nimport enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = (circles = array(circles)).length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var nodes = Array.from(data),\n n = nodes.length,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n for (i = 0; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = parentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n const n = points.length,\n indexes = [0, 1];\n let size = 2, i;\n\n for (i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.hypot(xa, ya);\n }\n\n return perimeter;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n function randomInt(min, max) {\n if (arguments.length < 2) max = min, min = 0;\n min = Math.floor(min);\n max = Math.floor(max) - min;\n return function() {\n return Math.floor(source() * max + min);\n };\n }\n\n randomInt.source = sourceRandomInt;\n\n return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n var N = normal.source(source);\n\n function randomLogNormal() {\n var randomNormal = N.apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n if ((n = +n) <= 0) return () => 0;\n return function() {\n for (var sum = 0, i = n; i > 1; --i) sum += source();\n return sum + i * source();\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n var I = irwinHall.source(source);\n\n function randomBates(n) {\n // use limiting distribution at n === 0\n if ((n = +n) === 0) return source;\n var randomIrwinHall = I(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log1p(-source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n function randomPareto(alpha) {\n if ((alpha = +alpha) < 0) throw new RangeError(\"invalid alpha\");\n alpha = 1 / -alpha;\n return function() {\n return Math.pow(1 - source(), alpha);\n };\n }\n\n randomPareto.source = sourceRandomPareto;\n\n return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n function randomBernoulli(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n return function() {\n return Math.floor(source() + p);\n };\n }\n\n randomBernoulli.source = sourceRandomBernoulli;\n\n return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n function randomGeometric(p) {\n if ((p = +p) < 0 || p > 1) throw new RangeError(\"invalid p\");\n if (p === 0) return () => Infinity;\n if (p === 1) return () => 1;\n p = Math.log1p(-p);\n return function() {\n return 1 + Math.floor(Math.log1p(-source()) / p);\n };\n }\n\n randomGeometric.source = sourceRandomGeometric;\n\n return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n var randomNormal = normal.source(source)();\n\n function randomGamma(k, theta) {\n if ((k = +k) < 0) throw new RangeError(\"invalid k\");\n // degenerate distribution if k === 0\n if (k === 0) return () => 0;\n theta = theta == null ? 1 : +theta;\n // exponential distribution if k === 1\n if (k === 1) return () => -Math.log1p(-source()) * theta;\n\n var d = (k < 1 ? k + 1 : k) - 1 / 3,\n c = 1 / (3 * Math.sqrt(d)),\n multiplier = k < 1 ? () => Math.pow(source(), 1 / k) : () => 1;\n return function() {\n do {\n do {\n var x = randomNormal(),\n v = 1 + c * x;\n } while (v <= 0);\n v *= v * v;\n var u = 1 - source();\n } while (u >= 1 - 0.0331 * x * x * x * x && Math.log(u) >= 0.5 * x * x + d * (1 - v + Math.log(v)));\n return d * v * multiplier() * theta;\n };\n }\n\n randomGamma.source = sourceRandomGamma;\n\n return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n var G = gamma.source(source);\n\n function randomBeta(alpha, beta) {\n var X = G(alpha),\n Y = G(beta);\n return function() {\n var x = X();\n return x === 0 ? 0 : x / (x + Y());\n };\n }\n\n randomBeta.source = sourceRandomBeta;\n\n return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n var G = geometric.source(source),\n B = beta.source(source);\n\n function randomBinomial(n, p) {\n n = +n;\n if ((p = +p) >= 1) return () => n;\n if (p <= 0) return () => 0;\n return function() {\n var acc = 0, nn = n, pp = p;\n while (nn * pp > 16 && nn * (1 - pp) > 16) {\n var i = Math.floor((nn + 1) * pp),\n y = B(i, nn - i + 1)();\n if (y <= pp) {\n acc += i;\n nn -= i;\n pp = (pp - y) / (1 - y);\n } else {\n nn = i - 1;\n pp /= y;\n }\n }\n var sign = pp < 0.5,\n pFinal = sign ? pp : 1 - pp,\n g = G(pFinal);\n for (var s = g(), k = 0; s <= nn; ++k) s += g();\n return acc + (sign ? k : nn - k);\n };\n }\n\n randomBinomial.source = sourceRandomBinomial;\n\n return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n function randomWeibull(k, a, b) {\n var outerFunc;\n if ((k = +k) === 0) {\n outerFunc = x => -Math.log(x);\n } else {\n k = 1 / k;\n outerFunc = x => Math.pow(x, k);\n }\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * outerFunc(-Math.log1p(-source()));\n };\n }\n\n randomWeibull.source = sourceRandomWeibull;\n\n return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n function randomCauchy(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n return a + b * Math.tan(Math.PI * source());\n };\n }\n\n randomCauchy.source = sourceRandomCauchy;\n\n return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n function randomLogistic(a, b) {\n a = a == null ? 0 : +a;\n b = b == null ? 1 : +b;\n return function() {\n var u = source();\n return a + b * Math.log(u / (1 - u));\n };\n }\n\n randomLogistic.source = sourceRandomLogistic;\n\n return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n var G = gamma.source(source),\n B = binomial.source(source);\n\n function randomPoisson(lambda) {\n return function() {\n var acc = 0, l = lambda;\n while (l > 16) {\n var n = Math.floor(0.875 * l),\n t = G(n)();\n if (t > l) return acc + B(n - 1, l / t)();\n acc += n;\n l -= t;\n }\n for (var s = -Math.log1p(-source()), k = 0; s <= l; ++k) s -= Math.log1p(-source());\n return acc + k;\n };\n }\n\n randomPoisson.source = sourceRandomPoisson;\n\n return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : x => Math.pow(base, x);\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n var squared = continuous(),\n range = [0, 1],\n round = false,\n unknown;\n\n function scale(x) {\n var y = unsquare(squared(x));\n return isNaN(y) ? unknown : round ? Math.round(y) : y;\n }\n\n scale.invert = function(y) {\n return squared.invert(square(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (squared.domain(_), scale) : squared.domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return scale.range(_).round(true);\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, scale) : round;\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return radial(squared.domain(), range)\n .round(round)\n .clamp(squared.clamp())\n .unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1;\n return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.range = function() {\n return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n };\n\n scale.quantiles = function(n) {\n return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n s = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n function range(interpolate) {\n return function(_) {\n var r0, r1, r2;\n return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(interpolateRound);\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n events = sourceEvent(events);\n if (node === undefined) node = events.currentTarget;\n events = events.touches || [events];\n }\n return Array.from(events, event => pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([array(selector)], root);\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function(type, size) {\n var context = null;\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","class Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // falls through\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nfunction stackSeries(key) {\n const series = [];\n series.key = key;\n return series;\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var sz = Array.from(keys.apply(this, arguments), stackSeries),\n i, n = sz.length, j = -1,\n oz;\n\n for (const d of data) {\n for (i = 0, ++j; i < n; ++i) {\n (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n }\n }\n\n for (i = 0, oz = array(order(sz)); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n t._restart = t.restart;\n t.restart = function(callback, delay, time) {\n delay = +delay, time = time == null ? now() : +time;\n t._restart(function tick(elapsed) {\n elapsed += total;\n t._restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n }\n t.restart(callback, delay, time);\n return t;\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","module.exports = require('../package.json').version;\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction stringifiable(obj) {\n // Safely stringify Object.create(null)\n /* istanbul ignore next */\n return typeof obj === 'object' && !('toString' in obj) ?\n Object.prototype.toString.call(obj).slice(8, -1) :\n obj;\n}\nvar isProduction = typeof process === 'object' && process.env.NODE_ENV === 'production';\nfunction invariant(condition, message) {\n if (!condition) {\n /* istanbul ignore next */\n if (isProduction) {\n throw new Error('Invariant failed');\n }\n throw new Error(message());\n }\n}\nexports.invariant = invariant;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar splice = Array.prototype.splice;\nvar toString = Object.prototype.toString;\nfunction type(obj) {\n return toString.call(obj).slice(8, -1);\n}\nvar assign = Object.assign || /* istanbul ignore next */ (function (target, source) {\n getAllKeys(source).forEach(function (key) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n });\n return target;\n});\nvar getAllKeys = typeof Object.getOwnPropertySymbols === 'function'\n ? function (obj) { return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj)); }\n /* istanbul ignore next */\n : function (obj) { return Object.keys(obj); };\nfunction copy(object) {\n return Array.isArray(object)\n ? assign(object.constructor(object.length), object)\n : (type(object) === 'Map')\n ? new Map(object)\n : (type(object) === 'Set')\n ? new Set(object)\n : (object && typeof object === 'object')\n ? assign(Object.create(Object.getPrototypeOf(object)), object)\n /* istanbul ignore next */\n : object;\n}\nvar Context = /** @class */ (function () {\n function Context() {\n this.commands = assign({}, defaultCommands);\n this.update = this.update.bind(this);\n // Deprecated: update.extend, update.isEquals and update.newContext\n this.update.extend = this.extend = this.extend.bind(this);\n this.update.isEquals = function (x, y) { return x === y; };\n this.update.newContext = function () { return new Context().update; };\n }\n Object.defineProperty(Context.prototype, \"isEquals\", {\n get: function () {\n return this.update.isEquals;\n },\n set: function (value) {\n this.update.isEquals = value;\n },\n enumerable: true,\n configurable: true\n });\n Context.prototype.extend = function (directive, fn) {\n this.commands[directive] = fn;\n };\n Context.prototype.update = function (object, $spec) {\n var _this = this;\n var spec = (typeof $spec === 'function') ? { $apply: $spec } : $spec;\n if (!(Array.isArray(object) && Array.isArray(spec))) {\n invariant(!Array.isArray(spec), function () { return \"update(): You provided an invalid spec to update(). The spec may \" +\n \"not contain an array except as the value of $set, $push, $unshift, \" +\n \"$splice or any custom command allowing an array value.\"; });\n }\n invariant(typeof spec === 'object' && spec !== null, function () { return \"update(): You provided an invalid spec to update(). The spec and \" +\n \"every included key path must be plain objects containing one of the \" +\n (\"following commands: \" + Object.keys(_this.commands).join(', ') + \".\"); });\n var nextObject = object;\n getAllKeys(spec).forEach(function (key) {\n if (hasOwnProperty.call(_this.commands, key)) {\n var objectWasNextObject = object === nextObject;\n nextObject = _this.commands[key](spec[key], nextObject, spec, object);\n if (objectWasNextObject && _this.isEquals(nextObject, object)) {\n nextObject = object;\n }\n }\n else {\n var nextValueForKey = type(object) === 'Map'\n ? _this.update(object.get(key), spec[key])\n : _this.update(object[key], spec[key]);\n var nextObjectValue = type(nextObject) === 'Map'\n ? nextObject.get(key)\n : nextObject[key];\n if (!_this.isEquals(nextValueForKey, nextObjectValue)\n || typeof nextValueForKey === 'undefined'\n && !hasOwnProperty.call(object, key)) {\n if (nextObject === object) {\n nextObject = copy(object);\n }\n if (type(nextObject) === 'Map') {\n nextObject.set(key, nextValueForKey);\n }\n else {\n nextObject[key] = nextValueForKey;\n }\n }\n }\n });\n return nextObject;\n };\n return Context;\n}());\nexports.Context = Context;\nvar defaultCommands = {\n $push: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$push');\n return value.length ? nextObject.concat(value) : nextObject;\n },\n $unshift: function (value, nextObject, spec) {\n invariantPushAndUnshift(nextObject, spec, '$unshift');\n return value.length ? value.concat(nextObject) : nextObject;\n },\n $splice: function (value, nextObject, spec, originalObject) {\n invariantSplices(nextObject, spec);\n value.forEach(function (args) {\n invariantSplice(args);\n if (nextObject === originalObject && args.length) {\n nextObject = copy(originalObject);\n }\n splice.apply(nextObject, args);\n });\n return nextObject;\n },\n $set: function (value, _nextObject, spec) {\n invariantSet(spec);\n return value;\n },\n $toggle: function (targets, nextObject) {\n invariantSpecArray(targets, '$toggle');\n var nextObjectCopy = targets.length ? copy(nextObject) : nextObject;\n targets.forEach(function (target) {\n nextObjectCopy[target] = !nextObject[target];\n });\n return nextObjectCopy;\n },\n $unset: function (value, nextObject, _spec, originalObject) {\n invariantSpecArray(value, '$unset');\n value.forEach(function (key) {\n if (Object.hasOwnProperty.call(nextObject, key)) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n delete nextObject[key];\n }\n });\n return nextObject;\n },\n $add: function (values, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$add');\n invariantSpecArray(values, '$add');\n if (type(nextObject) === 'Map') {\n values.forEach(function (_a) {\n var key = _a[0], value = _a[1];\n if (nextObject === originalObject && nextObject.get(key) !== value) {\n nextObject = copy(originalObject);\n }\n nextObject.set(key, value);\n });\n }\n else {\n values.forEach(function (value) {\n if (nextObject === originalObject && !nextObject.has(value)) {\n nextObject = copy(originalObject);\n }\n nextObject.add(value);\n });\n }\n return nextObject;\n },\n $remove: function (value, nextObject, _spec, originalObject) {\n invariantMapOrSet(nextObject, '$remove');\n invariantSpecArray(value, '$remove');\n value.forEach(function (key) {\n if (nextObject === originalObject && nextObject.has(key)) {\n nextObject = copy(originalObject);\n }\n nextObject.delete(key);\n });\n return nextObject;\n },\n $merge: function (value, nextObject, _spec, originalObject) {\n invariantMerge(nextObject, value);\n getAllKeys(value).forEach(function (key) {\n if (value[key] !== nextObject[key]) {\n if (nextObject === originalObject) {\n nextObject = copy(originalObject);\n }\n nextObject[key] = value[key];\n }\n });\n return nextObject;\n },\n $apply: function (value, original) {\n invariantApply(value);\n return value(original);\n },\n};\nvar defaultContext = new Context();\nexports.isEquals = defaultContext.update.isEquals;\nexports.extend = defaultContext.extend;\nexports.default = defaultContext.update;\n// @ts-ignore\nexports.default.default = module.exports = assign(exports.default, exports);\n// invariants\nfunction invariantPushAndUnshift(value, spec, command) {\n invariant(Array.isArray(value), function () { return \"update(): expected target of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(value) + \".\"; });\n invariantSpecArray(spec[command], command);\n}\nfunction invariantSpecArray(spec, command) {\n invariant(Array.isArray(spec), function () { return \"update(): expected spec of \" + stringifiable(command) + \" to be an array; got \" + stringifiable(spec) + \". \" +\n \"Did you forget to wrap your parameter in an array?\"; });\n}\nfunction invariantSplices(value, spec) {\n invariant(Array.isArray(value), function () { return \"Expected $splice target to be an array; got \" + stringifiable(value); });\n invariantSplice(spec.$splice);\n}\nfunction invariantSplice(value) {\n invariant(Array.isArray(value), function () { return \"update(): expected spec of $splice to be an array of arrays; got \" + stringifiable(value) + \". \" +\n \"Did you forget to wrap your parameters in an array?\"; });\n}\nfunction invariantApply(fn) {\n invariant(typeof fn === 'function', function () { return \"update(): expected spec of $apply to be a function; got \" + stringifiable(fn) + \".\"; });\n}\nfunction invariantSet(spec) {\n invariant(Object.keys(spec).length === 1, function () { return \"Cannot have more than one key in an object with $set\"; });\n}\nfunction invariantMerge(target, specValue) {\n invariant(specValue && typeof specValue === 'object', function () { return \"update(): $merge expects a spec of type 'object'; got \" + stringifiable(specValue); });\n invariant(target && typeof target === 'object', function () { return \"update(): $merge expects a target of type 'object'; got \" + stringifiable(target); });\n}\nfunction invariantMapOrSet(target, command) {\n var typeOfTarget = type(target);\n invariant(typeOfTarget === 'Map' || typeOfTarget === 'Set', function () { return \"update(): \" + stringifiable(command) + \" expects a target of type Set or Map; got \" + stringifiable(typeOfTarget); });\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;"],"sourceRoot":""}